From a906249f7b838f9529409b5477d3c57d7828a362 Mon Sep 17 00:00:00 2001 From: raidendotai Date: Thu, 19 Sep 2024 01:30:28 +0100 Subject: [PATCH] hello world --- .gitignore | 1 + LICENSE | 21 + README.md | 149 ++ TODO.md | 49 + apps/README.md | 8 + cofounder/api/.env | 34 + cofounder/api/.gitignore | 3 + cofounder/api/.prettierignore | 3 + cofounder/api/.prettierrc | 4 + cofounder/api/README.md | 0 cofounder/api/build.js | 348 ++++ cofounder/api/package.json | 42 + cofounder/api/server.js | 338 ++++ .../api/system/functions/backend/asyncapi.js | 171 ++ .../api/system/functions/backend/openapi.js | 176 ++ .../api/system/functions/backend/server.js | 387 +++++ .../api/system/functions/designer/layoutv1.js | 1009 +++++++++++ cofounder/api/system/functions/op/convert.js | 16 + cofounder/api/system/functions/op/indexdb.js | 81 + cofounder/api/system/functions/op/llm.js | 122 ++ cofounder/api/system/functions/op/project.js | 739 +++++++++ cofounder/api/system/functions/op/render.js | 18 + cofounder/api/system/functions/pm/brd.js | 345 ++++ cofounder/api/system/functions/pm/drd.js | 139 ++ cofounder/api/system/functions/pm/fjmd.js | 149 ++ cofounder/api/system/functions/pm/frd.js | 117 ++ cofounder/api/system/functions/pm/prd.js | 127 ++ cofounder/api/system/functions/pm/uxdmd.js | 221 +++ cofounder/api/system/functions/pm/uxsmd.js | 159 ++ .../api/system/functions/swarm/augment.js | 365 ++++ cofounder/api/system/functions/swarm/fix.js | 10 + .../api/system/functions/swarm/review.js | 20 + cofounder/api/system/functions/ux/datamap.js | 493 ++++++ cofounder/api/system/functions/ux/sitemap.js | 238 +++ cofounder/api/system/functions/webapp/root.js | 264 +++ .../api/system/functions/webapp/store.js | 291 ++++ cofounder/api/system/functions/webapp/view.js | 1477 +++++++++++++++++ .../ui/design/systems/protoboy-v1/README.md | 10 + .../systems/protoboy-v1/primitives/.gitignore | 0 .../systems/protoboy-v1/primitives/grid.png | Bin 0 -> 232708 bytes .../protoboy-v1/primitives/ontology.yaml | 73 + .../protoboy-v1/primitives/renders/avatar.png | Bin 0 -> 3225 bytes .../primitives/renders/avatar_block.png | Bin 0 -> 11698 bytes .../primitives/renders/avatars_group.png | Bin 0 -> 16871 bytes .../protoboy-v1/primitives/renders/badge.png | Bin 0 -> 1479 bytes .../primitives/renders/breadcrumbs.png | Bin 0 -> 4106 bytes .../protoboy-v1/primitives/renders/button.png | Bin 0 -> 2471 bytes .../primitives/renders/button_fab.png | Bin 0 -> 11649 bytes .../primitives/renders/calendar.png | Bin 0 -> 22597 bytes .../primitives/renders/checkbox.png | Bin 0 -> 2771 bytes .../primitives/renders/code_block.png | Bin 0 -> 68924 bytes .../primitives/renders/heading.png | Bin 0 -> 8169 bytes .../protoboy-v1/primitives/renders/icon.png | Bin 0 -> 1241 bytes .../protoboy-v1/primitives/renders/image.png | Bin 0 -> 9630 bytes .../primitives/renders/input_datepicker.png | Bin 0 -> 12113 bytes .../primitives/renders/input_description.png | Bin 0 -> 2108 bytes .../primitives/renders/input_field.png | Bin 0 -> 3709 bytes .../primitives/renders/input_label.png | Bin 0 -> 2143 bytes .../primitives/renders/input_searchfield.png | Bin 0 -> 3386 bytes .../primitives/renders/input_select.png | Bin 0 -> 5142 bytes .../primitives/renders/input_textarea.png | Bin 0 -> 5070 bytes .../protoboy-v1/primitives/renders/link.png | Bin 0 -> 801 bytes .../protoboy-v1/primitives/renders/logo.png | Bin 0 -> 3625 bytes .../protoboy-v1/primitives/renders/map.png | Bin 0 -> 270866 bytes .../protoboy-v1/primitives/renders/media.png | Bin 0 -> 7322 bytes .../primitives/renders/menu_vertical.png | Bin 0 -> 21382 bytes .../primitives/renders/nonprimitive.png | Bin 0 -> 91380 bytes .../primitives/renders/pagination.png | Bin 0 -> 2607 bytes .../primitives/renders/progress_bar.png | Bin 0 -> 889 bytes .../primitives/renders/radio_button.png | Bin 0 -> 2125 bytes .../primitives/renders/rating_stars.png | Bin 0 -> 1047 bytes .../primitives/renders/search_bar.png | Bin 0 -> 4318 bytes .../protoboy-v1/primitives/renders/slider.png | Bin 0 -> 1978 bytes .../primitives/renders/subheading.png | Bin 0 -> 6028 bytes .../protoboy-v1/primitives/renders/switch.png | Bin 0 -> 2296 bytes .../protoboy-v1/primitives/renders/table.png | Bin 0 -> 44133 bytes .../primitives/renders/tabs_group.png | Bin 0 -> 4805 bytes .../protoboy-v1/primitives/renders/tag.png | Bin 0 -> 2862 bytes .../primitives/renders/tags_toggle_group.png | Bin 0 -> 3854 bytes .../primitives/renders/text_line.png | Bin 0 -> 2636 bytes .../primitives/renders/text_paragraph.png | Bin 0 -> 22132 bytes .../primitives/renders/tooltip.png | Bin 0 -> 45852 bytes .../systems/shadcn/primitives/.gitignore | 0 .../shadcn/primitives/docs/accordion.mdx | 70 + .../systems/shadcn/primitives/docs/avatar.mdx | 42 + .../systems/shadcn/primitives/docs/badge.mdx | 59 + .../shadcn/primitives/docs/bar_progress.mdx | 41 + .../shadcn/primitives/docs/bar_slider.mdx | 41 + .../shadcn/primitives/docs/breadcrumbs.mdx | 62 + .../systems/shadcn/primitives/docs/button.mdx | 124 ++ .../primitives/docs/button_icon_only.mdx | 124 ++ .../primitives/docs/button_secondary.mdx | 124 ++ .../primitives/docs/button_with_icon.mdx | 124 ++ .../primitives/docs/calendar_datepicker.mdx | 48 + .../primitives/docs/carousel_horizontal.mdx | 220 +++ .../primitives/docs/carousel_vertical.mdx | 220 +++ .../docs/dialog_overlay_trigger_button.mdx | 90 + .../shadcn/primitives/docs/input_checkbox.mdx | 85 + .../shadcn/primitives/docs/input_combobox.mdx | 347 ++++ .../primitives/docs/input_datepicker.mdx | 239 +++ .../shadcn/primitives/docs/input_field.mdx | 95 ++ .../shadcn/primitives/docs/input_label.mdx | 38 + .../shadcn/primitives/docs/input_radio.mdx | 56 + .../primitives/docs/input_searchfield.mdx | 95 ++ .../shadcn/primitives/docs/input_select.mdx | 71 + .../shadcn/primitives/docs/input_switch.mdx | 36 + .../shadcn/primitives/docs/input_textarea.mdx | 83 + .../shadcn/primitives/docs/menu_bar.mdx | 154 ++ .../primitives/docs/menu_navigation.mdx | 44 + .../shadcn/primitives/docs/pagination.mdx | 37 + .../systems/shadcn/primitives/docs/table.mdx | 131 ++ .../systems/shadcn/primitives/docs/tabs.mdx | 106 ++ .../systems/shadcn/primitives/docs/toggle.mdx | 107 ++ .../shadcn/primitives/docs/tooltip.mdx | 59 + .../design/systems/shadcn/primitives/grid.png | Bin 0 -> 565811 bytes .../systems/shadcn/primitives/ontology.yaml | 111 ++ .../shadcn/primitives/renders/accordion.png | Bin 0 -> 6712 bytes .../shadcn/primitives/renders/avatar.png | Bin 0 -> 101218 bytes .../shadcn/primitives/renders/badge.png | Bin 0 -> 2461 bytes .../primitives/renders/bar_progress.png | Bin 0 -> 1128 bytes .../shadcn/primitives/renders/bar_slider.png | Bin 0 -> 1855 bytes .../shadcn/primitives/renders/breadcrumbs.png | Bin 0 -> 9822 bytes .../shadcn/primitives/renders/button.png | Bin 0 -> 2219 bytes .../primitives/renders/button_icon_only.png | Bin 0 -> 915 bytes .../primitives/renders/button_secondary.png | Bin 0 -> 3471 bytes .../primitives/renders/button_with_icon.png | Bin 0 -> 4029 bytes .../renders/calendar_datepicker.png | Bin 0 -> 28694 bytes .../shadcn/primitives/renders/card.png | Bin 0 -> 18513 bytes .../renders/carousel_horizontal.png | Bin 0 -> 20254 bytes .../primitives/renders/carousel_vertical.png | Bin 0 -> 24791 bytes .../shadcn/primitives/renders/chart.png | Bin 0 -> 56868 bytes .../shadcn/primitives/renders/container.png | Bin 0 -> 10787 bytes .../renders/dialog_overlay_trigger_button.png | Bin 0 -> 3988 bytes .../primitives/renders/heading_subtitle.png | Bin 0 -> 6642 bytes .../primitives/renders/heading_title.png | Bin 0 -> 6072 bytes .../shadcn/primitives/renders/icon.png | Bin 0 -> 1449 bytes .../shadcn/primitives/renders/image.png | Bin 0 -> 9630 bytes .../primitives/renders/input_checkbox.png | Bin 0 -> 3225 bytes .../primitives/renders/input_combobox.png | Bin 0 -> 4577 bytes .../primitives/renders/input_datepicker.png | Bin 0 -> 3869 bytes .../primitives/renders/input_description.png | Bin 0 -> 4544 bytes .../shadcn/primitives/renders/input_field.png | Bin 0 -> 3738 bytes .../shadcn/primitives/renders/input_label.png | Bin 0 -> 2198 bytes .../shadcn/primitives/renders/input_radio.png | Bin 0 -> 2486 bytes .../primitives/renders/input_searchfield.png | Bin 0 -> 3605 bytes .../primitives/renders/input_select.png | Bin 0 -> 3079 bytes .../primitives/renders/input_switch.png | Bin 0 -> 4223 bytes .../primitives/renders/input_textarea.png | Bin 0 -> 5238 bytes .../shadcn/primitives/renders/link.png | Bin 0 -> 899 bytes .../shadcn/primitives/renders/media.png | Bin 0 -> 7322 bytes .../shadcn/primitives/renders/menu_bar.png | Bin 0 -> 7336 bytes .../primitives/renders/menu_navigation.png | Bin 0 -> 3216 bytes .../primitives/renders/nonprimitive.png | Bin 0 -> 91380 bytes .../shadcn/primitives/renders/pagination.png | Bin 0 -> 5917 bytes .../primitives/renders/rating_stars.png | Bin 0 -> 1047 bytes .../shadcn/primitives/renders/table.png | Bin 0 -> 26166 bytes .../shadcn/primitives/renders/tabs.png | Bin 0 -> 5641 bytes .../shadcn/primitives/renders/text_line.png | Bin 0 -> 3244 bytes .../primitives/renders/text_paragraph.png | Bin 0 -> 30814 bytes .../shadcn/primitives/renders/toggle.png | Bin 0 -> 3255 bytes .../shadcn/primitives/renders/tooltip.png | Bin 0 -> 5598 bytes .../structure/nodes/backend/asyncapi.yaml | 3 + .../structure/nodes/backend/openapi.yaml | 3 + .../structure/nodes/backend/server.yaml | 3 + .../structure/nodes/designer/layoutv1.yaml | 8 + .../system/structure/nodes/op/convert.yaml | 3 + .../system/structure/nodes/op/indexdb.yaml | 9 + .../api/system/structure/nodes/op/llm.yaml | 33 + .../system/structure/nodes/op/project.yaml | 11 + .../api/system/structure/nodes/op/render.yaml | 9 + .../api/system/structure/nodes/pm/brd.yaml | 8 + .../api/system/structure/nodes/pm/drb.yaml | 5 + .../api/system/structure/nodes/pm/fjmd.yaml | 7 + .../api/system/structure/nodes/pm/frd.yaml | 7 + .../api/system/structure/nodes/pm/prd.yaml | 8 + .../api/system/structure/nodes/pm/uxdmd.yaml | 6 + .../api/system/structure/nodes/pm/uxsmd.yaml | 5 + .../system/structure/nodes/swarm/augment.yaml | 6 + .../api/system/structure/nodes/swarm/fix.yaml | 8 + .../system/structure/nodes/swarm/review.yaml | 9 + .../system/structure/nodes/ux/datamap.yaml | 14 + .../system/structure/nodes/ux/sitemap.yaml | 24 + .../system/structure/nodes/webapp/root.yaml | 3 + .../system/structure/nodes/webapp/store.yaml | 3 + .../system/structure/nodes/webapp/view.yaml | 13 + .../structure/sequences/projectInit.yaml | 71 + .../structure/sequences/projectResume.yaml | 71 + cofounder/api/utils/Karla.ttf | Bin 0 -> 94016 bytes cofounder/api/utils/anthropic.js | 104 ++ cofounder/api/utils/firebase.js | 93 ++ cofounder/api/utils/index.js | 19 + cofounder/api/utils/load.js | 230 +++ cofounder/api/utils/openai.js | 61 + cofounder/api/utils/parsers.js | 145 ++ cofounder/api/utils/render.js | 486 ++++++ cofounder/api/utils/storage.js | 75 + cofounder/api/utils/vectra.js | 46 + cofounder/boilerplate/README.md | 3 + .../boilerplate/backend-boilerplate/.env | 2 + .../backend-boilerplate/.gitignore | 2 + .../boilerplate/backend-boilerplate/db.sql | 2 + .../boilerplate/backend-boilerplate/initdb.js | 18 + .../backend-boilerplate/package.json | 36 + .../boilerplate/backend-boilerplate/server.js | 19 + cofounder/boilerplate/package.json | 14 + .../vitereact-boilerplate/.gitignore | 26 + .../vitereact-boilerplate/.prettierignore | 2 + .../vitereact-boilerplate/.prettierrc | 4 + .../vitereact-boilerplate/README.md | 50 + .../vitereact-boilerplate/components.json | 20 + .../vitereact-boilerplate/eslint.config.js | 26 + .../vitereact-boilerplate/index.html | 25 + .../vitereact-boilerplate/package.json | 92 + .../vitereact-boilerplate/postcss.config.js | 6 + .../vitereact-boilerplate/src/App.css | 5 + .../vitereact-boilerplate/src/App.tsx | 29 + .../vitereact-boilerplate/src/AppWrapper.tsx | 16 + .../src/_cofounder/dev/cmdk.tsx.bak | 70 + .../src/_cofounder/dev/cmdl.tsx | 77 + .../src/_cofounder/dev/firstlaunch.tsx | 75 + .../src/_cofounder/genui/error-boundary.tsx | 42 + .../src/_cofounder/genui/genui-loading.tsx | 45 + .../_cofounder/genui/genui-placeholder.tsx | 37 + .../src/_cofounder/genui/genui-root.tsx | 5 + .../src/_cofounder/genui/genui-section.tsx | 624 +++++++ .../src/_cofounder/genui/genui-view.tsx | 644 +++++++ .../src/_cofounder/genui/genui-view.tsx.bak | 286 ++++ .../src/_cofounder/genui/tooltip.tsx | 73 + .../src/_cofounder/meta.json | 1 + .../src/_cofounder/utils.js | 0 .../src/_cofounder/vite-plugin/index.js | 137 ++ .../src/assets/cofounder.webp | Bin 0 -> 138694 bytes .../src/components/ui/accordion.tsx | 56 + .../src/components/ui/alert-dialog.tsx | 136 ++ .../src/components/ui/alert.tsx | 60 + .../src/components/ui/aspect-ratio.tsx | 5 + .../src/components/ui/avatar.tsx | 48 + .../src/components/ui/badge.tsx | 36 + .../src/components/ui/breadcrumb.tsx | 118 ++ .../src/components/ui/button.tsx | 59 + .../src/components/ui/calendar.tsx | 66 + .../src/components/ui/card.tsx | 86 + .../src/components/ui/carousel.tsx | 260 +++ .../src/components/ui/chart.tsx | 361 ++++ .../src/components/ui/checkbox.tsx | 28 + .../src/components/ui/collapsible.tsx | 9 + .../src/components/ui/command.tsx | 153 ++ .../src/components/ui/context-menu.tsx | 201 +++ .../src/components/ui/dialog.tsx | 117 ++ .../src/components/ui/drawer.tsx | 110 ++ .../src/components/ui/dropdown-menu.tsx | 201 +++ .../src/components/ui/form.tsx | 177 ++ .../src/components/ui/hover-card.tsx | 27 + .../src/components/ui/input-otp.tsx | 70 + .../src/components/ui/input.tsx | 25 + .../src/components/ui/label.tsx | 24 + .../src/components/ui/menubar.tsx | 237 +++ .../src/components/ui/navigation-menu.tsx | 129 ++ .../src/components/ui/pagination.tsx | 117 ++ .../src/components/ui/popover.tsx | 29 + .../src/components/ui/progress.tsx | 26 + .../src/components/ui/radio-group.tsx | 42 + .../src/components/ui/resizable.tsx | 43 + .../src/components/ui/scroll-area.tsx | 46 + .../src/components/ui/select.tsx | 161 ++ .../src/components/ui/separator.tsx | 29 + .../src/components/ui/sheet.tsx | 139 ++ .../src/components/ui/skeleton.tsx | 18 + .../src/components/ui/slider.tsx | 26 + .../src/components/ui/sonner.tsx | 30 + .../src/components/ui/switch.tsx | 27 + .../src/components/ui/table.tsx | 120 ++ .../src/components/ui/tabs.tsx | 53 + .../src/components/ui/textarea.tsx | 24 + .../src/components/ui/toast.tsx | 128 ++ .../src/components/ui/toaster.tsx | 31 + .../src/components/ui/toggle-group.tsx | 59 + .../src/components/ui/toggle.tsx | 43 + .../src/components/ui/tooltip.tsx | 28 + .../src/hooks/use-toast.ts | 188 +++ .../vitereact-boilerplate/src/index.css | 56 + .../vitereact-boilerplate/src/index.css.bak | 50 + .../vitereact-boilerplate/src/lib/utils.ts | 6 + .../vitereact-boilerplate/src/main.tsx | 14 + .../src/store/commander.tsx | 13 + .../vitereact-boilerplate/src/store/main.tsx | 197 +++ .../vitereact-boilerplate/src/vite-env.d.ts | 1 + .../vitereact-boilerplate/tailwind.config.js | 38 + .../tailwind.config.js.bak | 8 + .../vitereact-boilerplate/tsconfig.app.json | 29 + .../vitereact-boilerplate/tsconfig.json | 13 + .../vitereact-boilerplate/tsconfig.node.json | 27 + .../vitereact-boilerplate/vite.config.ts | 39 + 293 files changed, 20319 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 TODO.md create mode 100644 apps/README.md create mode 100644 cofounder/api/.env create mode 100644 cofounder/api/.gitignore create mode 100644 cofounder/api/.prettierignore create mode 100644 cofounder/api/.prettierrc create mode 100644 cofounder/api/README.md create mode 100644 cofounder/api/build.js create mode 100644 cofounder/api/package.json create mode 100644 cofounder/api/server.js create mode 100644 cofounder/api/system/functions/backend/asyncapi.js create mode 100644 cofounder/api/system/functions/backend/openapi.js create mode 100644 cofounder/api/system/functions/backend/server.js create mode 100644 cofounder/api/system/functions/designer/layoutv1.js create mode 100644 cofounder/api/system/functions/op/convert.js create mode 100644 cofounder/api/system/functions/op/indexdb.js create mode 100644 cofounder/api/system/functions/op/llm.js create mode 100644 cofounder/api/system/functions/op/project.js create mode 100644 cofounder/api/system/functions/op/render.js create mode 100644 cofounder/api/system/functions/pm/brd.js create mode 100644 cofounder/api/system/functions/pm/drd.js create mode 100644 cofounder/api/system/functions/pm/fjmd.js create mode 100644 cofounder/api/system/functions/pm/frd.js create mode 100644 cofounder/api/system/functions/pm/prd.js create mode 100644 cofounder/api/system/functions/pm/uxdmd.js create mode 100644 cofounder/api/system/functions/pm/uxsmd.js create mode 100644 cofounder/api/system/functions/swarm/augment.js create mode 100644 cofounder/api/system/functions/swarm/fix.js create mode 100644 cofounder/api/system/functions/swarm/review.js create mode 100644 cofounder/api/system/functions/ux/datamap.js create mode 100644 cofounder/api/system/functions/ux/sitemap.js create mode 100644 cofounder/api/system/functions/webapp/root.js create mode 100644 cofounder/api/system/functions/webapp/store.js create mode 100644 cofounder/api/system/functions/webapp/view.js create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/README.md create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/.gitignore create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/grid.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/ontology.yaml create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/avatar.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/avatar_block.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/avatars_group.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/badge.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/breadcrumbs.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/button.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/button_fab.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/calendar.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/checkbox.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/code_block.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/heading.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/icon.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/image.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_datepicker.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_description.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_field.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_label.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_searchfield.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_select.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_textarea.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/link.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/logo.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/map.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/media.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/menu_vertical.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/nonprimitive.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/pagination.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/progress_bar.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/radio_button.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/rating_stars.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/search_bar.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/slider.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/subheading.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/switch.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/table.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tabs_group.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tag.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tags_toggle_group.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/text_line.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/text_paragraph.png create mode 100644 cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tooltip.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/.gitignore create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/accordion.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/avatar.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/badge.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_progress.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_slider.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/breadcrumbs.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_icon_only.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_secondary.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_with_icon.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/calendar_datepicker.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_horizontal.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_vertical.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/dialog_overlay_trigger_button.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_checkbox.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_combobox.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_datepicker.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_field.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_label.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_radio.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_searchfield.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_select.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_switch.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_textarea.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/menu_bar.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/menu_navigation.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/pagination.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/table.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/tabs.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/toggle.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/tooltip.mdx create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/grid.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/ontology.yaml create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/accordion.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/avatar.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/badge.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/bar_progress.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/bar_slider.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/breadcrumbs.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/button.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/button_icon_only.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/button_secondary.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/button_with_icon.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/calendar_datepicker.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/card.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/carousel_horizontal.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/carousel_vertical.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/chart.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/container.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/dialog_overlay_trigger_button.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/heading_subtitle.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/heading_title.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/icon.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/image.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_checkbox.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_combobox.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_datepicker.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_description.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_field.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_label.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_radio.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_searchfield.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_select.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_switch.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/input_textarea.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/link.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/media.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/menu_bar.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/menu_navigation.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/nonprimitive.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/pagination.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/rating_stars.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/table.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/tabs.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/text_line.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/text_paragraph.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/toggle.png create mode 100644 cofounder/api/system/presets/ui/design/systems/shadcn/primitives/renders/tooltip.png create mode 100644 cofounder/api/system/structure/nodes/backend/asyncapi.yaml create mode 100644 cofounder/api/system/structure/nodes/backend/openapi.yaml create mode 100644 cofounder/api/system/structure/nodes/backend/server.yaml create mode 100644 cofounder/api/system/structure/nodes/designer/layoutv1.yaml create mode 100644 cofounder/api/system/structure/nodes/op/convert.yaml create mode 100644 cofounder/api/system/structure/nodes/op/indexdb.yaml create mode 100644 cofounder/api/system/structure/nodes/op/llm.yaml create mode 100644 cofounder/api/system/structure/nodes/op/project.yaml create mode 100644 cofounder/api/system/structure/nodes/op/render.yaml create mode 100644 cofounder/api/system/structure/nodes/pm/brd.yaml create mode 100644 cofounder/api/system/structure/nodes/pm/drb.yaml create mode 100644 cofounder/api/system/structure/nodes/pm/fjmd.yaml create mode 100644 cofounder/api/system/structure/nodes/pm/frd.yaml create mode 100644 cofounder/api/system/structure/nodes/pm/prd.yaml create mode 100644 cofounder/api/system/structure/nodes/pm/uxdmd.yaml create mode 100644 cofounder/api/system/structure/nodes/pm/uxsmd.yaml create mode 100644 cofounder/api/system/structure/nodes/swarm/augment.yaml create mode 100644 cofounder/api/system/structure/nodes/swarm/fix.yaml create mode 100644 cofounder/api/system/structure/nodes/swarm/review.yaml create mode 100644 cofounder/api/system/structure/nodes/ux/datamap.yaml create mode 100644 cofounder/api/system/structure/nodes/ux/sitemap.yaml create mode 100644 cofounder/api/system/structure/nodes/webapp/root.yaml create mode 100644 cofounder/api/system/structure/nodes/webapp/store.yaml create mode 100644 cofounder/api/system/structure/nodes/webapp/view.yaml create mode 100644 cofounder/api/system/structure/sequences/projectInit.yaml create mode 100644 cofounder/api/system/structure/sequences/projectResume.yaml create mode 100644 cofounder/api/utils/Karla.ttf create mode 100644 cofounder/api/utils/anthropic.js create mode 100644 cofounder/api/utils/firebase.js create mode 100644 cofounder/api/utils/index.js create mode 100644 cofounder/api/utils/load.js create mode 100644 cofounder/api/utils/openai.js create mode 100644 cofounder/api/utils/parsers.js create mode 100644 cofounder/api/utils/render.js create mode 100644 cofounder/api/utils/storage.js create mode 100644 cofounder/api/utils/vectra.js create mode 100644 cofounder/boilerplate/README.md create mode 100644 cofounder/boilerplate/backend-boilerplate/.env create mode 100644 cofounder/boilerplate/backend-boilerplate/.gitignore create mode 100644 cofounder/boilerplate/backend-boilerplate/db.sql create mode 100644 cofounder/boilerplate/backend-boilerplate/initdb.js create mode 100644 cofounder/boilerplate/backend-boilerplate/package.json create mode 100644 cofounder/boilerplate/backend-boilerplate/server.js create mode 100644 cofounder/boilerplate/package.json create mode 100644 cofounder/boilerplate/vitereact-boilerplate/.gitignore create mode 100644 cofounder/boilerplate/vitereact-boilerplate/.prettierignore create mode 100644 cofounder/boilerplate/vitereact-boilerplate/.prettierrc create mode 100644 cofounder/boilerplate/vitereact-boilerplate/README.md create mode 100644 cofounder/boilerplate/vitereact-boilerplate/components.json create mode 100644 cofounder/boilerplate/vitereact-boilerplate/eslint.config.js create mode 100644 cofounder/boilerplate/vitereact-boilerplate/index.html create mode 100644 cofounder/boilerplate/vitereact-boilerplate/package.json create mode 100644 cofounder/boilerplate/vitereact-boilerplate/postcss.config.js create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/App.css create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/App.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/AppWrapper.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/dev/cmdk.tsx.bak create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/dev/cmdl.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/dev/firstlaunch.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/error-boundary.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-loading.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-placeholder.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-root.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-section.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx.bak create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/tooltip.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/meta.json create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/utils.js create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/vite-plugin/index.js create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/assets/cofounder.webp create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/accordion.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert-dialog.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/aspect-ratio.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/avatar.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/badge.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/breadcrumb.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/button.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/calendar.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/card.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/carousel.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/chart.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/checkbox.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/collapsible.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/command.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/context-menu.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/dialog.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/drawer.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/dropdown-menu.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/form.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/hover-card.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/input-otp.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/input.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/label.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/menubar.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/navigation-menu.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/pagination.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/popover.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/progress.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/radio-group.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/resizable.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/scroll-area.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/select.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/separator.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/sheet.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/skeleton.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/slider.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/sonner.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/switch.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/table.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/tabs.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/textarea.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/toast.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/toaster.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/toggle-group.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/toggle.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/components/ui/tooltip.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/hooks/use-toast.ts create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/index.css create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/index.css.bak create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/lib/utils.ts create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/main.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/store/commander.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/store/main.tsx create mode 100644 cofounder/boilerplate/vitereact-boilerplate/src/vite-env.d.ts create mode 100644 cofounder/boilerplate/vitereact-boilerplate/tailwind.config.js create mode 100644 cofounder/boilerplate/vitereact-boilerplate/tailwind.config.js.bak create mode 100644 cofounder/boilerplate/vitereact-boilerplate/tsconfig.app.json create mode 100644 cofounder/boilerplate/vitereact-boilerplate/tsconfig.json create mode 100644 cofounder/boilerplate/vitereact-boilerplate/tsconfig.node.json create mode 100644 cofounder/boilerplate/vitereact-boilerplate/vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..63b4b68 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) [year] [fullname] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0e8359c --- /dev/null +++ b/README.md @@ -0,0 +1,149 @@ +[img] + +# cofounder : early alpha release + +* project - [cofounder.openinterface.ai](https://cofounder.openinterface.ai) +* 👋 [@n_raidenai](https://x.com/n_raidenai) + +**cofounder** +- full stack generative web apps ; backend + db + stateful web apps +- gen ui rooted in app architecture, with ai-guided mockup designer & modular design systems + +[demo] + +--- + +## Important + +**Early alpha release ; earlier than expected by 5/6 weeks** + +Still not merged with key target features of the project, notably : +- project iteration modules for all dimensions of generated projects +- admin interface for event streams and (deeper) project iterations +- integrate the full genUI plugin : + * generative design systems + * deploy finetuned models & serve from api.cofounder +- local, browser-based dev env for the entire project scope +- add { react-native , flutter , other web frameworks } +- validations & swarm code review and autofix +- code optimization +- [...] + +Be patient :) + +--- + +# Usage + +## Install & Init + +* Open your terminal and run + +```sh +npx @openinterface/cofounder -p "YourAppProjectName" -d "describe your app here" -a "(optional) design instructions" +``` + +Follow the instructions. The installer +- will ask you for your keys +- setup dirs & start installs +- will start the local `cofounder/api` builder and server +- will start generating your app 🎉 + +``` +note : +you will be asked for a cofounder.openinterface.ai key +it is recommended to use one as it enables the designer/layoutv1 and swarm/external-apis features +and can be used without limits during the current early alpha period + +the full index will be available for local download on v1 release +``` + +## Run + +Your backend & vite+react web app will incrementally generate inside `./apps/{YourApp}` +Open your terminal in `./apps/{YourApp}` and run + +```sh +npm i && npm run dev +``` + +It will start both the backend and vite+react, concurrently, after installing their dependencies +Go to `http://localhost:5173/` to open the web app 🎉 + +## Notes + +### Local API + +If you resume later and would like to iterate on your generated apps, +the local `./cofounder/api` server needs to be running to receive queries + +You can (re)start the `local cofounder API` running the following command from `./cofounder/api` + +```sh +npm run start +``` + +You can also generate new apps from the same env by running, from `./cofounder/api`, one of these command + +```sh +npm run start -- -p "ProjectName" -f "some app description" -a "minimalist and spacious , light theme" +npm run start -- -p "ProjectName" -f "./example_description.txt" -a "minimalist and spacious , light theme" +``` + +### Concurrency + +**[the architecture will be further detailed and documented later]** + +Every "node" in the `cofounder` architecture has a defined configuration under `./cofounder/api/system/structure/nodes/{category}/{name}.yaml` to handle things like concurrency, retries and limits per time interval + +For example, if you want multiple LLM generations to run in parallel (when possible - sequences and parallels are defined in DAGS under `./cofounder/api/system/structure/sequences/{definition}.yaml` ), +go to + +```yaml +#./cofounder/api/system/structure/nodes/op/llm.yaml +nodes: + op:LLM::GEN: + desc: "..." + in: [model, messages, preparser, parser, query, stream] + out: [generated, usage] + queue: + concurrency: 1 # <------------------------------- here + op:LLM::VECTORIZE: + desc: "{texts} -> {vectors}" + in: [texts] + out: [vectors, usage] + mapreduce: true + op:LLM::VECTORIZE:CHUNK: + desc: "{texts} -> {vectors}" + in: [texts] + out: [vectors, usage] + queue: + concurrency: 50 +``` + +and change the `op:LLM::GEN` parameter `concurrency` to a higher value + +The default LLM concurrency is set to `1` so you can see what's happening in your console streams step by step - but you can increment it to `5`-`8` + +--- + +# Docs, Design Systems, ... + +**[WIP]** + +--- + +# Architecture + +[img] + +--- + +# Some Credits + +- Cover art edited from image found in [patriciaklein.de](https://patriciaklein.de) +- Demo design systems built using Figma renders / UI kits from: + * blocks.pm by Hexa Plugin (see `cofounder/api/system/presets`) + * google material + * figma core + * shadcn \ No newline at end of file diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..0876c63 --- /dev/null +++ b/TODO.md @@ -0,0 +1,49 @@ +A non-ordered roadmap & todo dump +will update with proper map later, ignore for now + +--- + +## nearest +merge with browser-based local dev env using webcontainers ; console.cofounder.openinterface.ai + +## validation, errorfix +post-generation validation swarm modules +swarm autofix modules, merge +babel parse + +## build, deploy +vite plugin to generate web app without the cofounder modules +generate packed projects ready for deployment +automate deployments, integrate different services + +## design, layouts +plug in advanced designer + models +document how to custom design systems +add & index docs for shiny design systems +fonts / css modules +release extensive cofounder index on api access for layout designer to use +separate {desktop,mobile} in designer +RAG on icons via {text/clip} (like in openv0), maybe as a vite plugin + +## functional +deploy latest index checkpoint in api.cofounder + +## mgmt +more iteration modules, sequences to handle full lifecycle of generated projects +document everything + +## platforms +react-native / flutter +more frontend frameworks + +## project +technical articles +model train & serve from api +admin panel à la coolify + +## also +SEO stuff +analytics into the dev feedback +animation (ie. framer-motion) +functional, api, python support api-side +benchmarks \ No newline at end of file diff --git a/apps/README.md b/apps/README.md new file mode 100644 index 0000000..e19fff2 --- /dev/null +++ b/apps/README.md @@ -0,0 +1,8 @@ +## How to start apps + +Your backend & vite+react web app will incrementally generate inside `./apps/{YourApp}` +Open your terminal in `./apps/{YourApp}` and run + +```sh +npm i && npm run dev +``` diff --git a/cofounder/api/.env b/cofounder/api/.env new file mode 100644 index 0000000..c066c9f --- /dev/null +++ b/cofounder/api/.env @@ -0,0 +1,34 @@ +PORT = 667 + +OPENAI_API_KEY = "REPLACE_WITH_OPENAI_KEY" +ANTHROPIC_API_KEY = "REPLACE_WITH_ANTHROPIC_KEY" +COFOUNDER_API_KEY = "REPLACE_WITH_COFOUNDER.OPENINTERFACE.AI_KEY" + +# llm, can be 'ANTHROPIC' (for claude sonnet 3.5) or 'OPENAI' (uses diff. models for diff. passes) +# make sure there are matching api keys +LLM_PROVIDER = "ANTHROPIC" #"OPENAI" + +# should be kept to "text-embedding-3-small" to work with RAG using api.cofounder.openinterface.ai +EMBEDDING_MODEL = "text-embedding-3-small" + +# RAG from index (from api.cofounder.openinterface.ai ) +# enables features from { designer, swarm{externalapis} , ... } +# recommended to keep ; after alpha , in v1 release , big index will be release & downloadable to local +RAG_REMOTE_ENABLE = TRUE + +STATE_LOCAL = TRUE # persist locally +AUTOEXPORT_ENABLE = TRUE # writes generated app files on each increment ; keep , necessary now +AUTOINSTALL_ENABLE = TRUE # runs "npm i" on exported projects whenever dependencies from generated code change +EXPORT_APPS_ROOT = "../../apps" + +# these triggers the design system guided designer, generates a mockup layout image before implementing code +DESIGNER_ENABLE = TRUE +DESIGNER_DESIGN_SYSTEM = "presets/shadcn" #"presets/shadcn" + +# enables : code review after code generated , augment features like searching for external apis to implement in server , ... +SWARM_ENABLE = TRUE + +#STATE_CLOUD = TRUE # persist on cloud (firebase + cloudstorage) +#FIREBASE_SERVICE_KEY_PATH = "./firebase-service-key-p0dev.json" +#GOOGLECLOUDSTORAGE_SERVICE_KEY_PATH = "openv0-aa83086a03e1.json" +#GOOGLECLOUDSTORAGE_BUCKET = "uiray" \ No newline at end of file diff --git a/cofounder/api/.gitignore b/cofounder/api/.gitignore new file mode 100644 index 0000000..18a2a5b --- /dev/null +++ b/cofounder/api/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +db/ +dump/ \ No newline at end of file diff --git a/cofounder/api/.prettierignore b/cofounder/api/.prettierignore new file mode 100644 index 0000000..da4957d --- /dev/null +++ b/cofounder/api/.prettierignore @@ -0,0 +1,3 @@ +db/ +dump/ +node_modules/ \ No newline at end of file diff --git a/cofounder/api/.prettierrc b/cofounder/api/.prettierrc new file mode 100644 index 0000000..79a1682 --- /dev/null +++ b/cofounder/api/.prettierrc @@ -0,0 +1,4 @@ +{ + "tabWidth": 1, + "useTabs": true +} diff --git a/cofounder/api/README.md b/cofounder/api/README.md new file mode 100644 index 0000000..e69de29 diff --git a/cofounder/api/build.js b/cofounder/api/build.js new file mode 100644 index 0000000..c84f6e4 --- /dev/null +++ b/cofounder/api/build.js @@ -0,0 +1,348 @@ +import fs from "fs"; +import path from "path"; +import yaml from "yaml-js"; +import yml from "yaml"; +import { merge, fromPairs } from "lodash-es"; +import retry from "async-retry"; +import pqueue from "p-queue"; +import { EventEmitter } from "node:events"; +import { promisify } from "util"; +import { readdir } from "fs"; +import delay from "delay"; + +const functionsDir = `./system/functions`; +const unitsDir = `./system/structure`; +const LOGS_ENABLED = true; + +async function build({ system }) { + console.dir({ build: system.functions }); + + if (!system.nodes) system.nodes = {}; + if (!system.functions) system.functions = {}; + if (!system.sequences) system.sequences = {}; + + const queues = {}; + const events = { + main: new EventEmitter(), + log: { + node: new EventEmitter(), + sequence: new EventEmitter(), + }, + }; + + if (LOGS_ENABLED) { + events.log.node.on(`enqueue`, ({ id, context, data }) => { + console.log( + `\x1b[36mlog:enqueue: node:${id}\t${JSON.stringify({ context, data }).slice(0, 150)}\x1b[0m`, + ); + }); + events.log.node.on(`start`, ({ id, context, data }) => { + console.log( + `\x1b[33mlog:start: node:${id}\t${JSON.stringify({ context, data }).slice(0, 150)}\x1b[0m`, + ); + }); + events.log.node.on(`end`, ({ id, context, data, response }) => { + console.log( + `\x1b[32mlog:complete: node:${id}\t${JSON.stringify({ context, response, data }).slice(0, 150)}\x1b[0m`, + ); + }); + } + + system.run = async ({ id, context, data }) => { + // console.dir({ __debug__system__run : { input : { id, context, data }, system_nodes: system.nodes, } }) + try { + return await system.nodes[id].run({ context, data }); + } catch (err) { + console.dir({ SYSTEM_RUN_ERR: { err, id } }); + } + }; + + events.main.on(`run`, async ({ id, context, data }) => { + if (LOGS_ENABLED) { + console.log(`\x1b[31mevent:\`run\` →id:${id}\x1b[0m`); + } + await system.run({ id, context, data }); + }); + + system.nodes = fromPairs( + await Promise.all( + Object.keys(system.functions) + .filter((id) => Object.keys(system.nodes).includes(id)) + .map(async (id) => { + queues[id] = new pqueue({ + concurrency: parseInt(system.nodes[id].queue?.concurrency) || Infinity, + intervalCap: + parseInt(system.nodes[id].queue?.interval?.limit) || Infinity, + interval: parseInt(system.nodes[id].queue?.interval?.time) || 0, + timeout: parseInt(system.nodes[id].queue?.timeout) || undefined, + }); + // this is the function to be ran + const fn = async ({ context = {}, data = {} }) => { + events.log.node.emit(`enqueue`, { id, context, data }); + return await queues[id].add(async () => { + events.log.node.emit(`start`, { id, context, data }); + const response = await retry( + async (bail) => { + try { + const fnresponse = await system.functions[id]({ + context: { ...context, run: system.run }, + data: system.nodes[id].in?.length + ? system.nodes[id].in.reduce( + (acc, inp) => ({ ...acc, [inp]: data[inp] || null }), + {}, + ) // higher perf than fromPairs ? + : data, + }); + + return !fnresponse + ? { success: false } + : system.nodes[id].out?.length + ? system.nodes[id].out.reduce( + (acc, inp) => ({ ...acc, [inp]: fnresponse[inp] || null }), + {}, + ) + : fnresponse; + } catch (error) { + console.dir({ asyncretry_error: { id, error } }, { depth: null }); + throw new Error(error); + } + }, + { + retries: parseInt(system.nodes[id].queue?.retry) || 5, + }, + ); + events.log.node.emit(`end`, { id, context, data, response }); + return response; + }); + }; + + return [ + id, + { + type: `node`, + meta: system.nodes[id], + run: fn, + }, // to have same format as sequence : system.sequences[id].run and system.functions[id].run + ]; + }), + ), + ); + /* + make the DAG graph decomposition parallelizor from the system and relations + handle : seq , parallel , recursion too ! + */ + /* + event registration for system triggers (nodes are all registered for events node:{id} ) + */ + + if (LOGS_ENABLED) { + events.log.sequence.on(`sequence:start`, ({ id, context, data }) => { + console.log( + `\x1b[34mlog:start: sequence:${id}\t${JSON.stringify({ context, data }).slice(0, 150)}\x1b[0m`, + ); + }); + events.log.sequence.on( + `sequence:step:start`, + ({ id, index, over, context, data }) => { + console.log( + `\x1b[34mlog:start: sequence:${id}:step:${index}/${over - 1}\t${JSON.stringify({ context, data }).slice(0, 150)}\x1b[0m`, + ); + }, + ); + events.log.sequence.on( + `sequence:step:end`, + ({ id, index, over, context, data }) => { + console.log( + `\x1b[35mlog:done: sequence:${id}:step:${index}/${over - 1}\t${JSON.stringify({ context, data }).slice(0, 150)}\x1b[0m`, + ); + }, + ); + events.log.sequence.on(`sequence:end`, ({ id, context, data }) => { + console.log( + `\x1b[35mlog:done: sequence:${id}\t${JSON.stringify({ context, data }).slice(0, 150)}\x1b[0m`, + ); + }); + } + + async function makeDags() { + // need to implement recursion cases next ! + return fromPairs( + Object.keys(system.sequences).map((sequenceId) => { + const inDegree = {}, + adjList = {}; + const seq = system.sequences[sequenceId]; + const dag = fromPairs( + system.sequences[sequenceId].nodes.map((nodeId) => { + return [ + nodeId, + { + parents: !seq.relations?.parents + ? [] + : !seq.relations?.parents[nodeId]?.length + ? [] + : seq.relations.parents[nodeId], + }, + ]; + }), + ); + Object.keys(dag).forEach((node) => { + inDegree[node] = 0; + adjList[node] = []; + }); + Object.entries(dag).forEach(([node, { parents }]) => { + if (parents) { + parents.forEach((parent) => { + if (!adjList[parent]) { + console.error( + `build:DAG : parent node ${parent} of node ${node} not found in DAG - skipping dependency`, + ); + } else { + adjList[parent].push(node); + inDegree[node]++; + } + }); + } + }); + const queue = Object.keys(inDegree).filter((node) => inDegree[node] === 0); + const sequence = [], + visitedNodes = new Set(); + while (queue.length) { + const currentLevel = queue.splice(0, queue.length); + currentLevel.forEach((node) => { + visitedNodes.add(node); + adjList[node].forEach((neighbor) => { + if (--inDegree[neighbor] === 0) queue.push(neighbor); + }); + }); + sequence.push(currentLevel); + } + if (visitedNodes.size !== Object.keys(dag).length) { + console.dir({ dag, visitedNodes }, { depth: null }); + throw new Error("The provided DAG has cycles or unresolved dependencies"); + } + + // later ; update for logging etc + const run = async ({ context, data }) => { + events.log.sequence.emit(`sequence:start`, { + id: sequenceId, + context, + data, + }); + const sequenceLength = sequence.length; + for (const s of sequence.entries()) { + const [index, step] = s; + events.log.sequence.emit(`sequence:step:start`, { + id: sequenceId, + index, + over: sequenceLength, + context, + data, + }); + await Promise.all( + step.map(async (parallelfnId) => { + const response = await system.run({ + id: parallelfnId, + context: { ...context, run: system.run }, + data, + }); + data = merge(data, response); + }), + ); + events.log.sequence.emit(`sequence:step:end`, { + id: sequenceId, + index, + over: sequenceLength, + context, + data, + }); + } + events.log.sequence.emit(`sequence:end`, { + id: sequenceId, + context, + data, + }); + return data; + }; + if (system.sequences[sequenceId].triggers?.length) { + system.sequences[sequenceId].triggers.map((triggerevent) => { + events.main.on(triggerevent, async ({ context, data }) => { + if (LOGS_ENABLED) { + console.log( + `\x1b[31mevent:\`${triggerevent}\` →sequence:${sequenceId}\x1b[0m`, + ); + } + await run({ context, data }); + }); + }); + } + return [ + sequenceId, + { + type: `sequence`, + meta: { + ...system.sequences[sequenceId], + dag: sequence, + }, + run, + }, + ]; + }), + ); + } + system.nodes = { + ...system.nodes, + ...(await makeDags()), + }; + + system.queues = queues; + system.events = { + events, + new: async ({ event, context = {}, data = {} }) => { + events.main.emit(event, { context, data }); + }, // trigger events + run: async ({ id = false, context = {}, data = {} }) => { + events.main.emit(`run`, { id, context, data }); + }, // run node/seq events + }; + + return system; +} + +const readdirAsync = promisify(readdir); +async function getFilesRecursively(dir, ext) { + let results = []; + const list = await readdirAsync(dir, { withFileTypes: true }); + for (const file of list) { + const filePath = path.join(dir, file.name); + if (file.isDirectory()) { + results = results.concat(await getFilesRecursively(filePath, ext)); + } else if (file.name.endsWith(ext)) { + results.push(filePath); + } + } + return results; +} +const system = await build({ + system: { + functions: merge( + {}, + ...(await Promise.all( + (await getFilesRecursively(functionsDir, ".js")).map((file) => + import(`./${file}`).then((m) => m.default), + ), + )), + ), + ...merge( + {}, + ...(await Promise.all( + (await getFilesRecursively(unitsDir, ".yaml")).map((file) => + yaml.load(fs.readFileSync(`./${file}`, `utf-8`).toString()), + ), + )), + ), + }, +}); + +export default { + system, +}; diff --git a/cofounder/api/package.json b/cofounder/api/package.json new file mode 100644 index 0000000..e61f5a6 --- /dev/null +++ b/cofounder/api/package.json @@ -0,0 +1,42 @@ +{ + "type": "module", + "aliases": { + "@": "." + }, + "scripts": { + "start": "node --loader esm-module-alias/loader --no-warnings server", + "start:npx": "npm i && node --loader esm-module-alias/loader --no-warnings server", + "dev:build": "node --loader esm-module-alias/loader --no-warnings build" + }, + "dependencies": { + "@anthropic-ai/sdk": "^0.27.3", + "@google-cloud/storage": "^7.12.1", + "@resvg/resvg-js": "^2.6.2", + "async-retry": "^1.3.3", + "cloudconvert": "^2.3.7", + "colormap": "^2.3.2", + "cors": "^2.8.5", + "deepmerge": "^4.3.1", + "delay": "^6.0.0", + "dotenv": "^16.4.5", + "esm-module-alias": "^2.2.0", + "express": "^4.19.2", + "firebase-admin": "^12.4.0", + "firestore": "^1.1.6", + "fs-extra": "^11.2.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "module-alias": "^2.2.3", + "openai": "^4.55.4", + "p-all": "^5.0.0", + "p-queue": "^8.0.1", + "sharp": "^0.33.4", + "slugify": "^1.6.6", + "vectra": "^0.9.0", + "xml2js": "^0.6.2", + "yaml": "^2.5.0", + "yaml-js": "^0.3.1", + "yargs": "^17.7.2" + } +} diff --git a/cofounder/api/server.js b/cofounder/api/server.js new file mode 100644 index 0000000..eb4b18a --- /dev/null +++ b/cofounder/api/server.js @@ -0,0 +1,338 @@ +import express from "express"; +import cors from "cors"; +import dotenv from "dotenv"; +import yargs from "yargs"; +import fs from "fs"; +import { hideBin } from "yargs/helpers"; +import { merge } from "lodash-es"; +import cofounder from "./build.js"; +dotenv.config(); + +function _slugify(text) { + return text + .toString() + .toLowerCase() + .replace(/\s+/g, "-") // Replace spaces with - + .replace(/[^\w\-]+/g, "") // Remove all non-word chars + .replace(/\-\-+/g, "-") // Replace multiple - with single - + .replace(/^-+/, "") // Trim - from start + .replace(/-+$/, ""); // Trim - from end +} + +// init project from argv +// to be called like : npm run start -- --p "some-project-name" --d "app description right" +const timestamp = Date.now(); +const argv = yargs(hideBin(process.argv)).argv; +const newProject = { + project: + (!argv.p && !argv.project) || + _slugify(argv.p || argv.project).length === 0 || + !_slugify(argv.p || argv.project).match(/[a-z0-9]/) + ? `project-${timestamp}` + : _slugify(argv.p || argv.project), + description: argv.description || argv.d || argv.desc || false, + aesthetics: argv.aesthetics || argv.a || argv.aesthetic || false, +}; +if (argv.file || argv.f) { + newProject.description = fs.readFileSync(argv.file || argv.f, "utf-8"); +} +async function createNewProject() { + if (!newProject.description.length) { + console.error( + 'Error: -d "project description" is required and cannot be empty.', + ); + process.exit(1); + } + console.log( + `\x1b[31minitialized generating app : ${newProject.project}\x1b[0m`, + ); + console.log( + `\x1b[34m(see ${process.env.EXPORT_APPS_ROOT}/${newProject.project}/README.md for more details)\x1b[0m` + + `\n\x1b[38;5;37mto start app (api+frontend in parallel)` + + `\n\t> cd ${process.env.EXPORT_APPS_ROOT}/${newProject.project}` + + `\n\t> npm i && npm run dev\x1b[0m`, + ); + + const query = { + pm: { + details: { + text: `${newProject.project != `project-${timestamp}` ? "Project '" + newProject.project + "' :" : ""} ${newProject.description}`, + attachments: [], + design: { + aesthetics: { + text: newProject.aesthetics, + }, + }, + }, + }, + }; + console.dir({ query }, { depth: null }); + + /* + // debug : to resume ---------------------------------------------------------- + const data = await cofounder.system.run({ + id: "op:PROJECT::STATE:LOAD", + context: { + project: newProject.project, + }, + data: {}, + }); + await cofounder.system.run({ + id: `seq:project:init:v1:resume`, + context: { + project: newProject.project, + }, + data: merge(data, { + ...query, + debug: {}, + }), + }); + ---------------------------------------------------------- + */ + + await cofounder.system.run({ + id: `seq:project:init:v1`, + context: { + project: newProject.project, + }, + data: query, + }); +} + +// Call createNewProject if command args for init project are provided +if (newProject.project && newProject.description) { + createNewProject(); +} + + +const app = express(); +const PORT = process.env.PORT || 667; + +app.use(cors()); +app.use(express.json({ limit: "5mb" })); + +/* +app.post("/project/init", async (req, res) => { + try { + // see docs for steps + res.status(200).json({ end: true }); + } catch (error) { + console.error(error); + res.status(500).json({ error: "failed to init project" }); + } +}); +*/ + +const actions = { + // map action to function ; load means load project state before passing + "update:settings:preferences:versions": { + fn: _updateProjectPreferences, + load: false, + }, + "regenerate:ui": { fn: _regenerateUiComponent, load: true }, + "iterate:ui": { fn: _iterateUiComponent, load: true }, + /* + later, single universal interface approach, + > should go through an analysis sequence ; + ie. is is a new feature that needs db schemas & apis to be altered, or just at the layout level, etc + */ +}; +const actionsKeys = Object.keys(actions); + +app.post("/project/actions", async (req, res) => { + /* + in : { + project : `exampleproject`, + query : { + action : "example:action:whatever", + data : { + }, + }, + } + */ + console.dir( + { "cofounder:api:server:actions:debug": req.body }, + { depth: null }, + ); + try { + const { project, query } = req.body; + const { action } = query; + if (!actionsKeys.includes(action)) { + throw new Error(`action ${action} not recognized`); + } + const { fn, load } = actions[action]; + const data = await fn({ + request: { project, query }, + data: !load + ? {} + : await cofounder.system.run({ + id: "op:PROJECT::STATE:LOAD", + context: { + project, + }, + data: {}, + }), + }); + res.status(200).json({ end: true }); + } catch (error) { + console.error(error); + res.status(500).json({ error: "failed to process" }); + } +}); + +app.listen(PORT, () => { + console.log( + "\x1b[32m\ncofounder/api : server is running on port " + PORT + "\x1b[0m", + ); +}); + +// ------------ helpers -------------------------------------------------------- +async function _updateProjectPreferences({ request }) { + /* + in : { + project : `exampleproject`, + query : { + action : "example:action:whatever", + data : { + [views || sections] : { + [id] : {version} + } + }, + }, + } + */ + const { project, query } = request; + await cofounder.system.run({ + id: "op:PROJECT::STATE:UPDATE", + context: { project }, + data: { + operation: { + id: `settings:preferences:versions`, + }, + type: `end`, + content: { + key: `settings.preferences.versions`, + data: query.data, + }, + }, + }); +} +async function _regenerateUiComponent({ request, data }) { + const { project, query } = request; + /* + in : request: { + project : `exampleproject`, + query : { + action : "regenerate:ui" + data : { + [views || sections] : `{id}`, // <--- update : sections stuff removed, is views only (for now) + }, + }, + } + */ + + const type = Object.keys(query.data)[0]; + const id = query.data[type]; + + /* + need to make : + task { + type: "view", + view: { + type: unique || shared, + id, + }, + passes: { + functional: true, + redesign: process.env.DESIGNER_ENABLE + ? JSON.parse(process.env.DESIGNER_ENABLE.toLowerCase()) + : true, + } + } + */ + const task = { + type: "view", + view: { + type: id.startsWith(`UV_`) ? `unique` : `shared`, + id, + }, + passes: { + functional: true, + redesign: process.env.DESIGNER_ENABLE + ? JSON.parse(process.env.DESIGNER_ENABLE.toLowerCase()) + : false, + }, + }; + console.dir({ "debug:server:task:regen:ui": { request, task } }); + await cofounder.system.run({ + id: "WEBAPP:VIEW::GENERATE", + context: { project }, + data: { + ...data, + task, + }, + }); +} + +async function _iterateUiComponent({ request, data }) { + console.dir({ "cofounder:api:server:iterate:ui": "starts" }); + /* + designer/layoutv1 might be overkill, but its best way to have primitives to retrieve design system docs (if applies) + + */ + + /* + in : { + project: meta.project, + query: { + action: "iterate:ui", + data: { + views : { + [id] : { + [version] : { + user : { + text: editUserText, + attachments: [], // later, can attach image + }, + screenshot: { base64: image ? image : false}, + designer: bool + } + }, + } + }, + }, + }), + } + */ + const { project, query } = request; + const id = Object.keys(query.data.views)[0]; + const version = Object.keys(query.data.views[id])[0]; + const { notes, screenshot, designer } = query.data.views[id][version]; + + const task = { + type: "view", + view: { + type: id.startsWith(`UV_`) ? `unique` : `shared`, + id, + version, + }, + iteration: { + notes, // {text,attachements} + screenshot, // {base64 : "base64str" || false } + designer: process.env.DESIGNER_ENABLE + ? JSON.parse(process.env.DESIGNER_ENABLE.toLowerCase()) && designer + ? true + : false + : false, + }, + }; + console.dir({ "debug:server:task:regen:ui": { request, task } }); + await cofounder.system.run({ + id: "WEBAPP:VIEW::ITERATE", + context: { project }, + data: { + ...data, + task, + }, + }); +} \ No newline at end of file diff --git a/cofounder/api/system/functions/backend/asyncapi.js b/cofounder/api/system/functions/backend/asyncapi.js new file mode 100644 index 0000000..ea31a68 --- /dev/null +++ b/cofounder/api/system/functions/backend/asyncapi.js @@ -0,0 +1,171 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function backendAsyncapiDefine({ context, data }) { + if (!data.backend.requirements?.realtimeWebsockets?.required) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "backend:specifications:asyncapi", + }, + type: `end`, + content: { + key: "backend.specifications.asyncapi", + data: {}, + }, + }, + }); + return { + backend: { + specifications: { + asyncapi: {}, + }, + }, + }; + } + + const { pm, db, backend } = data; + const { prd, frd, drd, brd } = pm; + const messages = [ + { + role: "system", + content: `- you are a genius Product Manager & Software Architect & Backend designer +- your role is to make the backend asyncAPI specs for the realtime features of the provided task + +- your asyncAPI specs should be comprehensive, and include schema object for each case, +which will be used as references to build the frontend app connected to the backend + +- cover all cases ; data-related tasks only (ie. you are making a mock backend for user-facing data operations) + +- do a thorough analysis of the provided task + +- think from perspectives of multiple personas, put yourself in situation, to make sure your asyncAPI definition is fully comprehensive and ready to be used in production exactly as is + +- ask yourself: + * what are all the events & schemas required by features expected to be seen by users in the frontend ? + +- ask yourself: + * what are all the events & schemas required by features expected to be seen by users in the app ? +- your aim is to cover all realtime use cases, as the expert product manager & architect you are + +--- + +the root dev url for the server is "http://localhost:1337" ; you can specify that in specs + +--- + +give a final, super comprehensive answer in strict, parseable asyncAPI YAML format +which will be perfectly ready to plug into the backend in development, +and pushed to staging directly and work flawlessly + +it should be comprehensive for the needs required by all the realtime events described in the provided docs +answer in strict parseable asyncAPI in YAML format, +with all schemas, for all scenarios ; - and specifying cases when a given schema field is required + +super important : +> methods, routes, operationIds, and components (parameters and components) only +> no input/output examples objects ! +> you are only to detail realtime events and their schemas for realtime features described in the provided documents ! + +--- + +important : +use snake_case for any naming you do + +--- + +your reply will be directly transferred as the final asyncAPI structure for the realtime events part of the backend, +so do not put anything else in your reply besides the asyncAPI structure that details the realtime events parts of the backend only ! +your reply should start with : "\`\`\`yaml" and end with "\`\`\`" + + +you will be tipped $99999 + major company shares for nailing it perfectly off the bat`, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`DRD:database-requirements-document +${drd} +\`\`\` + +--- + +\`\`\`DB:schemas +${yaml.stringify({ schemas: db.schemas })} +\`\`\` + +`, + }, + { + role: "user", + content: `\`\`\`BRD:Backend-requirements-document +${brd} +\`\`\``, + }, + { + role: "user", + content: `implement the asyncAPI structure , for the realtime features specified in the provided documents +super important : +- your only focus is to make the asyncAPI for realtime events and their details , not anything else (such as a REST API ...) +- asyncAPI for realtime events and their details only ! + +it is expected to be very comprehensive and detailed ; in a VALID PARSEABLE YAML format + +you're a genius`, + }, + ]; + + const asyncapiStructure = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: `yaml`, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "backend:specifications:asyncapi", + }, + type: `end`, + content: { + key: "backend.specifications.asyncapi", + data: asyncapiStructure, + }, + }, + }); + + return { + backend: { + ...data.backend, + specifications: { + asyncapi: asyncapiStructure, + }, + }, + }; +} + +export default { + "BACKEND:ASYNCAPI::DEFINE": backendAsyncapiDefine, +}; diff --git a/cofounder/api/system/functions/backend/openapi.js b/cofounder/api/system/functions/backend/openapi.js new file mode 100644 index 0000000..d72e489 --- /dev/null +++ b/cofounder/api/system/functions/backend/openapi.js @@ -0,0 +1,176 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function backendOpenapiDefine({ context, data }) { + if (!data.backend.requirements?.restApi?.required) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "backend:specifications:openapi", + }, + type: `end`, + content: { + key: "backend.specifications.openapi", + data: {}, + }, + }, + }); + return { + backend: { + specifications: { + openapi: {}, + }, + }, + }; + } + + const { pm, db, backend } = data; + const { prd, frd, drd, brd } = pm; + const messages = [ + { + role: "system", + content: `- you are a genius Product Manager & Software Archtect & API designer +- your role is to make the openAPI specs for the user-facing API for the provided task + +- your API should be comprehensive, and include schema object for each case, +which will be used as references to build the frontend app connected to the API + +- cover all cases ; data-related tasks only (ie. you are making a mock api for user-facing data operations) + +- do a thorough analysis of the provided task + +- think from perspectives of multiple personas, put yourself in situation, to make sure your openAPI definition is fully comprehensive and ready to be used in production exactly as is + +- ask yourself: + * what are the key personas using the user-facing, frontend API ? + * what are all the routes & schemas required by features expected to be seen by users in the frontend ? + * am i assigning an "operationId" for every path&route ? + +- ask yourself: + * what are all the routes & schemas required by features expected to be seen by users in the app ? +- your answer will be pushed to production and will be responsible for an app used by thousands of users, instantly +- your aim is to cover all use cases, as the expert product manager & architect you are + +--- + +give a final, super comprehensive answer in strict, parseable openAPI 3.0.0 YAML format +which will be perfectly ready to plug into the backend in development, +and pushed to staging directly and work flawlessly + +it should be comprehensive for the needs required by all the features +answer in strict parseable openAPI 3.0.0 in YAML format, +with all schemas, for all scenarios ; - and specifying cases when a given schema field is required + +the root dev url for the API is "http://localhost:1337" ; you can specify that in openapi + +super important : +> methods, routes, operationIds, and components (parameters and components) only +> no input/output examples objects ! + +> include a "summary" key for each route + +--- + +> note : if auth functionalities are present, use an architecture that will be compatible with a simple JWT auth system ! + ie. + > \`Authorization: Bearer \` in headers on authenticated requests + > jwt type methods that return the authorization token on login, and that is used in header by subsequent authenticated requests + important : if auth methods in api, token should be returned on both signup and login ! + +--- + +important : +use snake_case for any naming you do + +--- + +your reply will be directly transferred as the final OPENAPI structure, so do not put anything else in your reply besides the openAPI structure +your reply should start with : "\`\`\`yaml" and end with "\`\`\`" + + +you will be tipped $99999 + major company shares for nailing it perfectly off the bat`, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`DRD:database-requirements-document +${drd} +\`\`\` + +--- + +\`\`\`DB:schemas +${yaml.stringify({ schemas: db.schemas })} +\`\`\` + +`, + }, + { + role: "user", + content: `\`\`\`BRD:Backend-requirements-document +${brd} +\`\`\``, + }, + { + role: "user", + content: `implement the openAPI structure +it is expected to be very comprehensive and detailed ; in a VALID PARSEABLE YAML format + +you're a genius`, + }, + ]; + + const openapiStructure = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: `yaml`, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "backend:specifications:openapi", + }, + type: `end`, + content: { + key: "backend.specifications.openapi", + data: openapiStructure, + }, + }, + }); + + return { + backend: { + ...data.backend, + specifications: { + openapi: openapiStructure, + }, + }, + }; +} + +export default { + "BACKEND:OPENAPI::DEFINE": backendOpenapiDefine, +}; diff --git a/cofounder/api/system/functions/backend/server.js b/cofounder/api/system/functions/backend/server.js new file mode 100644 index 0000000..9ee63a5 --- /dev/null +++ b/cofounder/api/system/functions/backend/server.js @@ -0,0 +1,387 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function backendServerGenerate({ context, data }) { + /* + base on dev:test oneshot function + mix with the bak api generate for the make sure blabla + */ + const { pm, db, backend } = data; + const { prd, frd, drd, brd } = pm; + const { openapi, asyncapi } = backend.specifications; + const messages = [ + { + role: `system`, + content: `Your task, as the genius backend dev expert you are, is to generate the full nodejs script for a module, based on the provided specifications and details of the backend in development + +your role is to implement the full express server for the provided task for the \`server.mjs\` (type: module script) +you will answer in 3 parts : + +- analysis , in between \`\`\`markdown\`\`\`\` section +- code , in between \`\`\`mjs\`\`\`\` section +- dependencies and env variables , in between \`\`\`yaml\`\`\`\` section ; where any needed packages to install and needed env variables to setup will be mentionned ; the yaml should have objects : { dependencies : {"package":"version"} , env : {"key" , "temp_value"} } ("dependencies" (for packages) and "env" for env variables (and their temporary values) ) +use doublequotes for every string inside the yaml to make sure formatting is good + +--- + +in your analysis, ask yourself : +- what features are expected ? + does it need DB operations ? + does it need storage ? + > if so , how to handle the file storage / uploads / serving locally ? + + does it need realtime features and websocket events ? + what operations are expected from the server to perfectly meet what the user expects from the feature ? + think slowly, do not rush to answer ; + think : am i achieving great UX ? am i doing great, perfect work ? + do not overlook details ! + +in your code, include comment blocks before each implemented function or operation where you analyze what is done and why - it wil help you reason through more thoroughly and do a much greater work + +> super important : + - in case a function requires the use of an external API (ie. for checking a stock price , or generating some image , ... ), + you should include the following decorator inside your pre-function comment : + \`@@need:external-api : description of the external api necessitated and what it should do\` + you should also return a mock response that fits the right schema requirements ! so that the server returns mock responses in worst case ! + important : external APIs should only handle external functionalities like the ones mentionned ; the server already has storage and DB access, so those do not need external APIs ! + important : no placeholders ! no replace later ! no hallucinated unfinished code ! return a mock response that fits schema requirements in case you need to ! + if feature needs external api, include the specified decorator \`@@need:external-api : description...\` in comment and return a mock response instead ! + +--- + +for any db requirements, use postgres from \`@electric-sql/pglite\` +- to use postgres, include this snippet in your script : +\`\`\` +import { PGlite } from "@electric-sql/pglite"; +const postgres = new PGlite("./db"); +/* then, can be used like this : +await postgres.query("SELECT * FROM exampletable;") +*/ +// note : the postgres tables + seed were already created before , you can use the postgres directly without configuring it +\`\`\` +postgres is use exactly how is provided in the snippet, do not change anything about loading it / configuring it, else it breaks ; +postgres is imported, initialized and queries EXACTLY AS SHOWN IN THE SNIPPET ! NO OTHER WAY ! + +--- + +notes : +- make sure cors is enabled +- if you need realtime, you can use socket.io + if you need file storage capabilities (ie. file upload/download features), you can write/read locally from the \`./storage\` folder (create it if needed) + for any db requirements, use postgres ; you can only use postgres (from @electric-sql/pglite ) with raw queries (no ORMs or anything) +- to use postgres, include this snippet in your script : +\`\`\` +import { PGlite } from "@electric-sql/pglite"; +const postgres = new PGlite("./db"); +/* then, can be used like this : +await postgres.query("SELECT * FROM exampletable;") +*/ +\`\`\` +note : the postgres tables + seed were already created before , you can use the postgres directly without configuring it ; do not create tables in script ! +extremely important : +- the DB R/W need to be 100% compatible with the tables and schemas of the provided DB specifications !! + +- if auth needed, use jwt middleware + important : if auth , make sure you return token both on signup and login (even if openapi might have skipped that detail ! else stuff might break ! ) + important : if auth , and also realtime websockets features , make sure auth / jwt also applies to sockets not just the api + + +- if some function is too complex too implement (ie. needs more than known packages or DB R/W operations or too complex etc ...), you should return a mock response ; most important is : do not leave some "placeholder" function of value , do the mockup work if needed ! +everything needs to be implemented and working, no placeholders, no hallucinated imports, no "do this later" ; everything working perfect in one single script ! + +- if you need realtime, you can use socket.io + if you need file storage capabilities (ie. file upload/download features), you can write/read locally from the \`./storage\` folder (create it if needed) + for any db requirements, use postgres ; you can only use postgres (from @electric-sql/pglite ) with raw queries (no ORMs or anything) + +- if auth needed, use jwt middleware + important : if auth , make sure you return token both on signup and login (even if openapi might have skipped that detail ! else stuff might break ! ) + +- use morgan middleware to log any incoming request and details (ie. method, path, headers, params, query, body) - just for better dev exp + +- if it makes use of .env , make your you import \`dotenv\` and \`dotenv.config()\` to read .env before ! + +--- + +extremely important : +- get the server port from env ; make default PORT always 1337 !! + +--- + + +extremely important : + +- you are to implement the entire server as specified in the provided docs , with a focus on DB R/W operations +- you are to implement every single thing needed by the backend server and output one single big working perfect \`server.mjs\` script + > if backend has REST API , everything required and mentionned in the openAPI specs + > if backend has realtime websockets , everything required and mentionned in the asyncAPI specs + > if backend has both REST API and realtime Websockets , everything required by both and everything mentionned in both openAPI specs and asyncAPI specs ; and both working perfectly within the same \`server.mjs\` + +- do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script +- no placeholders, no hallucinated imports +- again, do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script + +- again , you are to implement every single thing needed by the backend server: + > if backend has REST API , everything required and mentionned in the openAPI specs + > if backend has realtime websockets , everything required and mentionned in the asyncAPI specs + > if backend has both REST API and realtime Websockets , everything required by both and everything mentionned in both openAPI specs and asyncAPI specs ; and both working perfectly within the same \`server.mjs\` + +> one single big working perfect \`server.mjs\` script +- if it makes use of .env , make your you import \`dotenv\` and \`dotenv.config()\` to read .env before ! + +--- + +important: +> if some mock data is meant to to store an image url, use a https://picsum.photos/ url with a random seed + +--- + +important : +> use snake_case for any naming you do +> ensure full perfect coherence with DB fields names and provided specs names + +--- + +extremely important : + +- the DB R/W need to be 100% compatible with the tables and schemas of the provided DB specifications !! + +--- + +extremely important : +- if you have to mock a function (ie. because it needs external APIs functionalities), make sure that: + > the endpoint / event still returns something that is fitting with the response schemas + > the endpoint / event triggers a function that you mock somewhere in the script and uses its response in the flow + > the mock function that needs to be augmented later is actually triggered by the endpoint / event that needs it ! + and has the right response formats + > the mock function has instructions in surrounding comments on what the function needs to be updated ! + so that once the function is updated, there are no subsequent updates to make, as it would already be plugged into the server flows and be consistent 100% + > example : + +\`\`\`example-code-snippet + ... + + /* + @need:external-api: An example description of some external api feature + */ + async function example_function_to_mock_name({...}){ + // returning a mock response in the expected response format for now + return { + timestamp: Date.now(), + example_field_in_expected_format_structure: { + id: 237, + dummy: "example dummy string", + someResults: ["whatever","dummy"], + avatar: "https://picsum.photos/id/237/200/300" + }, + } + } + + ... + + app.post('/api/example-complex-feature', async (req, res) => { + ... + const fetched_data = await example_function_to_mock_name({ ... }) + ... + }) + + ... + +\`\`\` + +- the app flow must still be 100% working perfect everywhere + + +you are a genius + you get tipped $9999999 +`, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: ` +\`\`\`DB:postgres:sql +${db.postgres} +\`\`\` + +--- + +extremely turbo important : +> pay extreme attention to DB details : + > the things that you are expected to provide with inserts : + > should you make a uuid before inserting with postgres query ? + > are there key constraints ? + > is the db querying code using the exact names as in db fields ? + > are you providing everything needed to db every single time ? +`, + }, + { + role: "user", + content: `\`\`\`BRD:backend-requirements-document +${brd} +\`\`\``, + }, + data.backend?.requirements?.restApi?.required && { + role: "user", + content: `\`\`\`BACKEND:specifications:openAPI +${yaml.stringify(openapi)} +\`\`\``, + }, + data.backend?.requirements?.realtimeWebsockets?.required && { + role: "user", + content: `\`\`\`BACKEND:specifications:asyncAPI +${yaml.stringify(asyncapi)} +\`\`\``, + }, + { + role: `user`, + content: `extremely important : +- you are to implement the entire \`server.mjs\` as specified in the backend specifications , with a focus on DB R/W operations +- you are to implement every single thing needed by the server and output one single big working perfect \`server.mjs\` script +- do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script +- no placeholders, no hallucinated imports + +--- + +extremely turbo important : +> pay extreme attention to DB details : + > the things that you are expected to provide with inserts : + > should you make a uuid before inserting with a postgres query ? + > are there key constraints ? should you create something before inserting something else because of contraints ? + > is the db querying code using the exact names as in db fields ? + > are you providing everything needed to db every single time ? + +--- + +extremely important : +- get the server port from env ; make default PORT always 1337 !! + +- if a function needs a external api to satisfy the expected feature, include the specified decorator \`@@need:external-api : description...\` in comment (in the code right before the concerned function) and return a mock response instead ! + +- note : the postgres tables + seed were already created before , you can use the postgres directly without configuring it ; do not create tables in script ! + +- if auth needed, use jwt middleware + > important : if auth , make sure you return token both on signup and login (even if openAPI might have skipped that detail ! else stuff might break ! ) + > important : if auth , and also realtime websockets features , make sure auth / jwt also applies to sockets not just the api ! + +- again, do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script +- again , you are to implement every single thing needed by the server and output one single big working perfect \`server.mjs\` script +- no placeholders, no hallucinated imports ; one 100% perfect complete working server script + +extremely important : +- the DB R/W need to be 100% compatible with the tables and schemas of the provided DB specifications !! + +now do the analysis , write the full working script and specify the dependencies+env`, + }, + ].filter((e) => e); + + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: messages, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `mjs`, `yaml`], + }); + + const { mjs } = extraction; + if (!mjs.length || !extraction.yaml) { + throw new Error("backend:server:generate error - generated is empty"); + } + + const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {}; + let generatedServer = { + mjs, + dependencies: parsedYaml.dependencies + ? Object.fromEntries( + Object.keys(parsedYaml.dependencies).map((key) => [key, "*"]), + ) + : [], + env: parsedYaml.env ? parsedYaml.env : {}, + timestamp: Date.now(), + }; + + // call swarm/agument:external-apis without waiting ; it will iterate it finds any external api decorators and replace + generatedServer = { + ...generatedServer, + ...(await context.run({ + id: `SWARM:AUGMENT::BACKEND:EXTERNALAPIS`, + context, + data: { + ...data, + task: { + code: generatedServer.mjs, + }, + }, + })), //-> {mjs,dependencies?,env,timestamp} ; will replace if new else returns empty object + }; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "backend:server:main", + }, + type: `end`, + content: { + key: "backend.server.main", + data: generatedServer, + }, + }, + }); + + if ( + Object.keys(generatedServer.dependencies).length || + Object.keys(generatedServer.env).length + ) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "settings:config:package", + }, + type: `end`, + content: { + key: "settings.config.package", + data: { + backend: { + dependencies: generatedServer.dependencies, + env: generatedServer.env, + }, + }, + }, + }, + }); + } + + return { + backend: { + ...data.backend, + server: { + main: generatedServer, + }, + }, + }; +} + +export default { + "BACKEND:SERVER::GENERATE": backendServerGenerate, +}; diff --git a/cofounder/api/system/functions/designer/layoutv1.js b/cofounder/api/system/functions/designer/layoutv1.js new file mode 100644 index 0000000..bface88 --- /dev/null +++ b/cofounder/api/system/functions/designer/layoutv1.js @@ -0,0 +1,1009 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; +import { merge } from "lodash-es"; +import xml2js from "xml2js"; +import sharp from "sharp"; + +async function promptGenerateAnalysis({ context, data }) { + /* + task : { ... , rag[] } + */ + const { view, rag, guidance } = data.task; + const _view = { ...view }; + delete _view.type; + return [ + { + role: "system", + content: `your job is to make an extremely detailed analysis for a layout design for a desktop app UI based on provided specifications + +great super detailed UI and UX design task analysis +the UI design analysis will be the main reference for the app designers + +- start by reasoning and analyzing how the ui element should be layed out and distributed on the page + ask yourself : + +* what are all the sections required by this view, to make for a comprehensive design that covers all features ? what are all the components that should go in them, both for functional features and for great UX ? + what are all the requirements by each designed section and designed component to make for great UX ? +* what are the best ways to distribute blocks in this UI view ? +* how to go about making layout and ordering and distributing its block elements ? and which block elements ? +* does it make the best choice for the app user in terms of UI/UX ? +* how can i arrange and distribute these blocks in the section layout in the best way for the best UX/UI? +* analysis criticism : how to make the design perfect ? + +be extremely verbose in terms of spatial alignments and ui elements descriptions + +--- + +> extremely important : +> since you are working with primitives , you should be extremely detailed in your design elements ! +> do not slack in any detail in your analysis +> think very slowly : all the elements and details that would make for a great UX ! + +--- + +> conduct the analysis first, reply with the analysis inside of \`\`\`markdown\`\`\` + +you are a genius + you get $9999`, + }, + rag.length && { + role: `user`, + content: [ + { + type: `text`, + text: `for inspiration that may or may not help you with your analysis (use your best judgement), +here are some various screenshots of web apps that may have loosely similar sections to the view to design ; + +you can use them as inspiration sources if you feel like it, and if you do, use that wisely after accurate analysis +but use your best judgement, you are not bound by them - only use them as inspiration if it makes sense in regards to designing the view UI`, + }, + ...rag, + ], + }, + guidance && + guidance.ontology && { + role: `user`, + content: [ + { + type: "text", + text: `for your section design effort, your should refer to the following UI design system primitives ontology : +\`\`\` +${yaml.stringify(guidance.ontology)} +\`\`\` +`, + }, + guidance.image && + (guidance.image?.url?.length || + guidance.image?.base64?.length || + guidance.image?.local?.length) && { + type: `image_url`, + image_url: { + url: guidance.image.url + ? guidance.image.url + : guidance.image.base64 + ? guidance.image.base64 + : guidance.image.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(guidance.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + { + role: "user", + content: `designing the layout for the view id "${view.id}", specified in the following : + +\`\`\`view:specifications +${yaml.stringify(_view)} +\`\`\` + +the layout design analysis should be very detailed , and cover UI details + +although , extremely important : + +> your analysis should be perfectly congruent with the features/data capabilities of the provided view details ; +do not hallucinate features that the view does not have ! +ie. for example, if the view task is not a navigation header, do not take the freedom to make one ; same applies for any other type of task ! things would break ! respect the task and strictly the task ! +`, + }, + { + role: "user", + content: `conduct the detailed analysis as the genius you are + +extremely important : design the provided view only ; +do not design non provided views (ie. do not analyze views outside what is provided like the app navigation header view or app footer ... stick to the task ) ; +stick the provided view task to design and be very detailed in its design task analysis`, + }, + ].filter((item) => item); +} + +async function promptGenerateSvg({ context, data }) { + /* + task : { ... , rag[] , analysis, guidance{} } + */ + const { view, rag, analysis, guidance } = data.task; + const _view = { ...view }; + delete _view.type; + return [ + { + role: "system", + content: `your job is to make a layout design for a desktop app UI based on provided description +great UI and UX + +the layout design mockup will be the main reference for the app designers + +the layout format will be colored rectangles to identify how different components should be placed in a layout for the app view design + +it would be in this format: + +\`\`\`svg + + + + ... + +\`\`\` + +--- + +> pick different rectangle color fills as you wish, which will be temporarily used to differentiate between different blocks + +> you are not constrained by the order in which the blocks design system elements are provided (which is randomly ordered) ; you should use them in a way that makes the best sense in terms of UX for designers to implement later + +> you are ONLY TO MAKE: + +- THE RECTANGLES FOR PRIMITIVE BLOCKS and the {primitiveId} text alongside the {description} +- no additional anything else whatsoever + +> the primitiveId should be coherent with the provided UI block primitives ontology +> if a required block is not in the provided UI block primitives, set its primitiveId to "nonprimitive" ! + +--- + +- start by reasoning and analyzing how the element should be layed out and distributed on the page + ask yourself : + +* what are all the sections required by this view, to make for a comprehensive design that covers all features ? + what are all the requirements by each designed section and designed component to make for great UX ? +* what are the best ways to distribute blocks in this UI view ? +* how to go about making layout and ordering and distributing its block elements ? and which block elements ? +* does it make the best choice for the app user in terms of UI/UX ? +* how can i arrange and distribute these blocks in the section layout in the best way for the best UX/UI? +* analysis criticism : how to make the design perfect ? + +--- + +extremely important : +> your mockup design should show the elements that are initially visible on the page !! +> do not model transition states or triggered overlays, as such things would overshadow the elements underneath and fuck up the mockup layout render !! + +--- + +> root node should have width , height values + all elements should have x , y , width , height values + all width , height values for all elements (root and nodes) should have positive nonzero integer values + +> extremely important : should only have nodes inside it, NO OTHER TYPE OF NODES ALLOWED, NO NESTING !!! +> every node should have primitiveId property , which would be one of the provided primitiveId s +> again, extremely important : should only have nodes inside it, NO OTHER TYPE OF NODES ALLOWED, NO NESTING !!! + +> extremely important : only use the provided primitiveIds !!! no hallucinated primitiveIds ! + +--- + +> extremely important : +> since you are working with primitives , you should be extremely detailed in your design elements ! +> do not slack in any detail in your analysis or design svg implementation +> think very slowly : all the elements that would make for a great UX ! + +--- + +> conduct the analysis first, reply with the analysis inside of \`\`\`markdown\`\`\` +> then, answer in a strict SVG reply in \`\`\`svg\`\`\` based on your analysis + +you are a genius + you get $9999`, + }, + rag.length && { + role: `user`, + content: [ + { + type: `text`, + text: `for inspiration that may or may not help you with your analysis (use your best judgement), +here are some various screenshots of web apps that may have loosely similar sections to the view to design ; + +you can use them as inspiration sources if you feel like it, and if you do, use that wisely after accurate analysis +but use your best judgement, you are not bound by them - only use them as inspiration if it makes sense in regards to designing the view UI`, + }, + ...rag, + ], + }, + guidance && + guidance.ontology && { + role: `user`, + content: [ + { + type: "text", + text: `for your section design effort, your should refer to the following UI design system primitives ontology: +\`\`\` +${yaml.stringify(guidance.ontology)} +\`\`\` +`, + }, + guidance.image && + (guidance.image?.url?.length || + guidance.image?.base64?.length || + guidance.image?.local?.length) && { + type: `image_url`, + image_url: { + url: guidance.image.url + ? guidance.image.url + : guidance.image.base64 + ? guidance.image.base64 + : guidance.image.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(guidance.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + { + role: "user", + content: `designing the layout for the view id "${view.id}", specified in the following : + +\`\`\`view:specifications +${yaml.stringify(_view)} +\`\`\` +`, + }, + { + role: "user", + content: `\`\`\`view:design-task:detailed-analysis +${analysis} +\`\`\` + +important : + +> your analysis should be perfectly congruent with the features/data capabilities of the provided view details ; +> do not hallucinate features that the view does not have ! +ie. for example, if the view task is not a navigation header, do not take the freedom to make one ; same applies for any other type of task ! things would break ! respect the task and strictly the task ! + +`, + }, + { + role: "user", + content: `make the analysis and spatial UI layout in SVG format as the genius UI designer you are + +> remember, you are designing for a desktop app ! +> you are designing the layout for the viewId : "${view.id}" ! + +> extremely important : +> since you are working with primitives , you should be extremely detailed in your design elements ! +> do not slack in any detail in your analysis +> think very slowly : all the elements that would make for a great UX ! + +--- + +> you are only allowed to use the primitiveId s provided in the ontology ! you cannot make a primitiveId up outside of what is provided ! +> do not use a primitiveId that is not provided - and exactly as is, not a single character added or changed from the provided primitiveId s +> the "description" fields are important to provide guidance for designers, write extended descriptions in them ! + +--- + +extremely important : +> your mockup design should show the elements that are initially visible on the page !! +> do not model transition states or overlays, as such things would overshadow the elements underneath and fuck up the mockup layout render !! + +again, extremely important : +> your mockup design should show the elements that are initially visible on the page !! +> do not model transition states or overlays, as such things would overshadow the elements underneath and fuck up the mockup layout render !! + +--- + +important : + +> your work is perfectly congruent with the features/data capabilities of the provided view details ; +> do not hallucinate features that the view does not have ! + +--- + +> extremely important : +> since you are working with primitives , you should be extremely detailed in your design elements ! +> do not slack in any detail in your analysis or design svg implementation +> think very slowly : all the elements that would make for a great UX ! + +--- + +> conduct the analysis first, reply with the analysis inside of \`\`\`markdown\`\`\` +> then, answer in a strict SVG reply in \`\`\`svg\`\`\` based on your analysis + +you are a genius + you get $9999 +`, + }, + ].filter((item) => item); +} + +async function designerLayoutv1ViewGenerate({ context, data }) { + /* + data : { + ...data, + task : { + type: "view", + view: { + type : "unique || shared", + id + details{}, // uxsitemap desc stuff + datamap:{}, // data stuff + }, + }, + webapp: { + + }, + } + */ + const { task, timestamp } = data; + const { view } = task; + + // rag , if available + const ragText = `Title : ${view.details.title}\nDescription: ${view.details.extendedDescription}\nRole: ${view.details.role}`; + + let rag = ( + await context.run({ + id: `op:INDEXDB::QUERY`, + context, + data: { + index: "layouts", + text: ragText, + amount: 4, + }, + }) + ).results + .filter((result) => result?.url?.length || result?.base64?.length) + .map((result) => { + return { + type: `image_url`, + image_url: { + url: result?.url?.length + ? result.url + : result?.base64?.length + ? result.base64 + : "", + }, + }; + }); + + // verify,validate rag images sizes + rag = ( + await Promise.all( + rag.map(async (item) => { + const { url } = item.image_url; + try { + let metadata; + if (url.startsWith("data:image/")) { + // Handle base64 image + const base64Data = url.split("base64,")[1]; + const buffer = Buffer.from(base64Data, "base64"); + metadata = await sharp(buffer).metadata(); + } else if (url.startsWith("https://")) { + // Handle URL image + const response = await fetch(url); + if (!response.ok) { + console.err(`designer:layoutv1:rag : failed to fetch image`); + return null; + } + const arrayBuffer = await response.arrayBuffer(); + const buffer = Buffer.from(arrayBuffer); + metadata = await sharp(buffer).metadata(); + } else { + // Invalid URL format, return null to filter out later + return null; + } + // Check image dimensions + if ( + metadata.width >= 8000 || + metadata.height >= 8000 || + metadata.width <= 0 || + metadata.height <= 0 + ) { + return null; // Return null if dimensions are invalid + } + return item; + } catch (error) { + console.error(`> skipping : error processing RAG image at ${url}:`, error); + return null; // Return null if there's an error + } + }), + ) + ) + .filter((item) => item !== null) + .slice(0, 3); // fetched more than needed in case size filtered ; typically indexed landing pages dims can be too big + + data.task.rag = rag; + + // design system guidance , if available + let guidance; + try { + guidance = await utils.render.guidance.grid.primitives({ + // determined from process.env in utils/render ... designSystem: designSystem ? designSystem : `presets/protoboy-v1`, + cache: true, + }); // -> { ontology , image{base64,url?} } + } catch (e) { + console.error(e); + } + data.task.guidance = guidance; + + const analysisPassMessages = await promptGenerateAnalysis({ + context, + data, + }); + + // console.dir({ "debug:designer:layoutv1": { analysisPassMessages }},{depth:null}) + + const analysisPass = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: analysisPassMessages, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + data.task.analysis = analysisPass; + + const svgPassMessages = await promptGenerateSvg({ context, data }); + const svgPass = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: svgPassMessages, + preparser: false, + parser: false, + }, + }) + ).generated; + + // raw svg string in response + let response = await utils.parsers.extract.backticksMultiple({ + text: svgPass, + delimiters: [`markdown`, `svg`], + }); + + if (!response.svg.length) + throw new Error("designer:layoutv1:generate error - generated svg is empty"); + response.svg = response.svg.replaceAll("&", " "); // <---- & char crashes svg + + // validate svg? + let svg = {}; + try { + svg = await xml2js.parseStringPromise(response.svg, { + explicitArray: true, + }); + console.dir({ "debug:designer:layoutv1:svg": svg }, { depth: null }); + if (!svg.svg.rect.filter((item) => item.$?.primitiveId).length) { + console.error(`layout error : generated != task ; skipping`); + } + } catch (e) { + console.error(e); + } + + let render = {}; + try { + render = await context.run({ + id: "op:RENDER::LAYOUT", + context, + data: { + svg: { string: response.svg }, + mode: task.type, + }, + }); // -> { svg , image{base64,url?,local?,buffer?} } + } catch (e) { + console.error(e); + } + + // rely on local storage as loading strategy further down, else might dump base64strings to yaml ... + if (render.image?.base64) delete render.image.base64; + if (render.image?.buffer) delete render.image.buffer; + + const generatedLayout = { + analysis: analysisPass, + render, + }; + + await Promise.all( + [`${timestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:layout:views`, + refs: { + id: view.id, + version, + }, + }, + type: `end`, + content: { + key: `webapp.layout.views.${view.id}.${version}`, + data: generatedLayout, + }, + }, + }); + }), + ); + + /* + should return the RAG object and guidance too, will be used in code ? (not sure) + */ + return { + designer: { + rag, + guidance, + }, + webapp: { + layout: { + views: { + [view.id]: { + [timestamp]: generatedLayout, + latest: generatedLayout, + }, + }, + }, + }, + }; +} + +async function promptIterateSvg({ context, data }) { + /* + one pass with both analysis + svg + */ + /* + task : { ... , rag[] , analysis, guidance{} } + */ + const { view, iteration, rag, analysis, guidance } = data.task; + const { notes, screenshot } = iteration; + const _view = { ...view }; + delete _view.type; + delete _view.tsx; + + return [ + { + role: "system", + content: `your job is to make a new layout design for a desktop app UI view based on provided instructions +great UI and UX + +the layout design mockup will be the main reference for the app designers to redesign the provided component + +the layout format will be colored rectangles to identify how different components should be placed in a layout for the app view design + +it would be in this format: + +\`\`\`svg + + + + ... + +\`\`\` + +--- + +> pick different rectangle color fills as you wish, which will be temporarily used to differentiate between different blocks + +> you are not constrained by the order in which the blocks design system elements are provided (which is randomly ordered) ; you should use them in a way that makes the best sense in terms of UX for designers to implement later + +> you are ONLY TO MAKE: + +- THE RECTANGLES FOR PRIMITIVE BLOCKS and the {primitiveId} text alongside the {description} +- no additional anything else whatsoever + +> the primitiveId should be coherent with the provided UI block primitives ontology +> if a required block is not in the provided UI block primitives, set its primitiveId to "nonprimitive" ! + +--- + +- start by reasoning and analyzing how the element should be layed out and distributed on the page + ask yourself : + +* what are all the sections required by this view, to make for a comprehensive design that covers all features ? + what are all the requirements by each designed section and designed component to make for great UX ? +* what are the best ways to distribute blocks in this UI view ? +* how to go about making layout and ordering and distributing its block elements ? and which block elements ? +* does it make the best choice for the app user in terms of UI/UX ? +* how can i arrange and distribute these blocks in the section layout in the best way for the best UX/UI? +* analysis criticism : how to make the design perfect ? + +--- + +extremely important : +> your mockup design should show the elements that are initially visible on the page !! +> do not model transition states or triggered overlays, as such things would overshadow the elements underneath and fuck up the mockup layout render !! + +--- + +> root node should have width , height values + all elements should have x , y , width , height values + all width , height values for all elements (root and nodes) should have positive nonzero integer values + +> extremely important : should only have nodes inside it, NO OTHER TYPE OF NODES ALLOWED, NO NESTING !!! +> every node should have primitiveId property , which would be one of the provided primitiveId s +> again, extremely important : should only have nodes inside it, NO OTHER TYPE OF NODES ALLOWED, NO NESTING !!! + +> extremely important : only use the provided primitiveIds !!! no hallucinated primitiveIds ! + +--- + +> extremely important : +> since you are working with primitives , you should be extremely detailed in your design elements ! +> do not slack in any detail in your analysis or design svg implementation +> think very slowly : all the elements that would make for a great UX ! + +--- + +> conduct the analysis first, reply with the analysis inside of \`\`\`markdown\`\`\` +> then, answer in a strict SVG reply in \`\`\`svg\`\`\` based on your analysis + +you are a genius + you get $9999`, + }, + screenshot && + (screenshot?.url?.length || + screenshot?.base64?.length || + screenshot?.local?.length) && { + role: `user`, + content: [ + { + type: "text", + text: `a screenshot of the current view render that you are tasked to redesign based on provided instructions : `, + }, + screenshot && + (screenshot?.url?.length || + screenshot?.base64?.length || + screenshot?.local?.length) && { + type: `image_url`, + image_url: { + url: screenshot.url + ? screenshot.url + : screenshot.base64 + ? screenshot.base64 + : screenshot.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(render.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + rag.length && { + role: `user`, + content: [ + { + type: `text`, + text: `for inspiration that may or may not help you with your analysis to redesign the view UI (use your best judgement), +here are some various screenshots of web apps that may have loosely similar sections to the view you are tasked to redesign ; + +you can use them as inspiration sources in various ways if you feel like it, and if you do, use that wisely after accurate analysis +but use your best judgement, you are not bound by them - only use them as inspiration if it makes sense in regards to making a new design for the view UI`, + }, + ...rag, + ], + }, + guidance && + guidance.ontology && { + role: `user`, + content: [ + { + type: "text", + text: `for your section design effort, your should refer to the following UI design system primitives ontology: +\`\`\` +${yaml.stringify(guidance.ontology)} +\`\`\` +`, + }, + guidance.image && + (guidance.image?.url?.length || + guidance.image?.base64?.length || + guidance.image?.local?.length) && { + type: `image_url`, + image_url: { + url: guidance.image.url + ? guidance.image.url + : guidance.image.base64 + ? guidance.image.base64 + : guidance.image.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(guidance.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + { + role: "user", + content: `you are redesigning the layout for the view id "${view.id}", specified in the following : + +\`\`\`view:specifications +${yaml.stringify(_view)} +\`\`\` +`, + }, + { + role: "user", + content: `the main redesign task instructions - the most important part of your task - are specified in the following : + +\`\`\`view:redesign-task:instructions +${notes.text} +\`\`\` + +important : + +> your analysis should be perfectly congruent with the features/data capabilities of the provided view details ; +> do not hallucinate features that the view does not have ! +ie. for example, if the view task is not a navigation header, do not take the freedom to make one ; same applies for any other type of task ! things would break ! respect the task and strictly the task ! + +`, + }, + { + role: "user", + content: `make the analysis and spatial UI layout in SVG format as the genius UI designer you are + +> remember, you are designing for a desktop app ! +> you are making a new design layout for the viewId : "${view.id}" ! + +> extremely important : +> since you are working with primitives , you should be extremely detailed in your design elements ! +> do not slack in any detail in your analysis +> think very slowly : all the elements that would make for a great UX ! + +--- + +> you are only allowed to use the primitiveId s provided in the ontology ! you cannot make a primitiveId up outside of what is provided ! +> do not use a primitiveId that is not provided - and exactly as is, not a single character added or changed from the provided primitiveId s +> the "description" fields are important to provide guidance for designers, write extended descriptions in them ! + +--- + +extremely important : +> your mockup design should show the elements that are initially visible on the page !! +> do not model transition states or overlays, as such things would overshadow the elements underneath and fuck up the mockup layout render !! + +again, extremely important : +> your mockup design should show the elements that are initially visible on the page !! +> do not model transition states or overlays, as such things would overshadow the elements underneath and fuck up the mockup layout render !! + +--- + +important : + +> your work is perfectly congruent with the features/data capabilities of the provided view details ; +> do not hallucinate features that the view does not have ! + +--- + +> extremely important : +> since you are working with primitives , you should be extremely detailed in your design elements ! +> do not slack in any detail in your analysis or design svg implementation +> think very slowly : all the elements that would make for a great UX ! + +--- + +> conduct the analysis first, reply with the analysis inside of \`\`\`markdown\`\`\` +> then, answer in a strict SVG reply in \`\`\`svg\`\`\` based on your analysis + +you are a genius + you get $9999 +`, + }, + ].filter((item) => item); +} +async function designerLayoutv1ViewIterate({ context, data }) { + const { task, timestamp } = data; + const { view, iteration } = task; + const { notes } = iteration; + + // rag , if available + const ragText = + `Title : ${view.details.title}\nDescription: ${view.details.extendedDescription}\nRole: ${view.details.role}` + + `\nDesign: ${notes.text}`; + + let rag = ( + await context.run({ + id: `op:INDEXDB::QUERY`, + context, + data: { + index: "layouts", + text: ragText, + amount: 4, + }, + }) + ).results + .filter((result) => result?.url?.length || result?.base64?.length) + .map((result) => { + return { + type: `image_url`, + image_url: { + url: result?.url?.length + ? result.url + : result?.base64?.length + ? result.base64 + : "", + }, + }; + }); + + // verify,validate rag images sizes + rag = ( + await Promise.all( + rag.map(async (item) => { + const { url } = item.image_url; + try { + let metadata; + if (url.startsWith("data:image/")) { + // Handle base64 image + const base64Data = url.split("base64,")[1]; + const buffer = Buffer.from(base64Data, "base64"); + metadata = await sharp(buffer).metadata(); + } else if (url.startsWith("https://")) { + // Handle URL image + const response = await fetch(url); + if (!response.ok) { + console.err(`designer:layoutv1:rag : failed to fetch image`); + return null; + } + const arrayBuffer = await response.arrayBuffer(); + const buffer = Buffer.from(arrayBuffer); + metadata = await sharp(buffer).metadata(); + } else { + // Invalid URL format, return null to filter out later + return null; + } + // Check image dimensions + if ( + metadata.width >= 8000 || + metadata.height >= 8000 || + metadata.width <= 0 || + metadata.height <= 0 + ) { + return null; // Return null if dimensions are invalid + } + return item; + } catch (error) { + console.error( + `> skipping : error processing analysis RAG image at ${url}:`, + error, + ); + return null; // Return null if there's an error + } + }), + ) + ) + .filter((item) => item !== null) + .slice(0, 3); // fetched more than needed in case size filtered ; typically indexed landing pages dims can be too big + + data.task.rag = rag; + + // design system guidance , if available + let guidance; + try { + guidance = await utils.render.guidance.grid.primitives({ + // determined from process.env in utils/render ... designSystem: designSystem ? designSystem : `presets/protoboy-v1`, + cache: true, + }); // -> { ontology , image{base64,url?} } + } catch (e) { + console.error(e); + } + data.task.guidance = guidance; + + const svgIterateMessages = await promptIterateSvg({ context, data }); + const svgPass = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: svgIterateMessages, + preparser: false, + parser: false, + }, + }) + ).generated; + + // raw svg string in response + let response = await utils.parsers.extract.backticksMultiple({ + text: svgPass, + delimiters: [`markdown`, `svg`], + }); + + if (!response.svg.length) + throw new Error("designer:layoutv1:iterate error - generated svg is empty"); + response.svg = response.svg.replaceAll("&", " "); // <---- & char crashes svg + + // validate svg? + let svg = {}; + try { + svg = await xml2js.parseStringPromise(response.svg, { + explicitArray: true, + }); + console.dir({ "debug:designer:layoutv1:svg": svg }, { depth: null }); + if (!svg.svg.rect.filter((item) => item.$?.primitiveId).length) { + console.error(`layout error : generated != task ; skipping`); + } + } catch (e) { + console.error(e); + } + + let render = {}; + try { + render = await context.run({ + id: "op:RENDER::LAYOUT", + context, + data: { + svg: { string: response.svg }, + mode: task.type, + }, + }); // -> { svg , image{base64,url?,local?,buffer?} } + } catch (e) { + console.error(e); + } + + // rely on local storage as loading strategy further down, else might dump base64strings to yaml ... + if (render.image?.base64) delete render.image.base64; + if (render.image?.buffer) delete render.image.buffer; + + const generatedLayout = { + analysis: response.markdown, + render, + }; + + await Promise.all( + [`${timestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:layout:views`, + refs: { + id: view.id, + version, + }, + }, + type: `end`, + content: { + key: `webapp.layout.views.${view.id}.${version}`, + data: generatedLayout, + }, + }, + }); + }), + ); + + /* + should return the RAG object and guidance too, will be used in code ? (not sure) + */ + return { + designer: { + rag, + guidance, + }, + webapp: { + layout: { + views: { + [view.id]: { + [timestamp]: generatedLayout, + latest: generatedLayout, + }, + }, + }, + }, + }; +} + +export default { + "DESIGNER:LAYOUTV1::VIEW:GENERATE": designerLayoutv1ViewGenerate, + "DESIGNER:LAYOUTV1::VIEW:ITERATE": designerLayoutv1ViewIterate, +}; diff --git a/cofounder/api/system/functions/op/convert.js b/cofounder/api/system/functions/op/convert.js new file mode 100644 index 0000000..08f85a5 --- /dev/null +++ b/cofounder/api/system/functions/op/convert.js @@ -0,0 +1,16 @@ +import utils from "@/utils/index.js"; + +async function opConvertMarkdownPdf({ context, data }) { + /* ;; op:CONVERT::MARKDOWN:PDF + {markdown} -> {pdf {base64 , url(cloudstorage) } } + + + + */ + + return {}; +} + +export default { + "op:CONVERT::MARKDOWN:PDF": opConvertMarkdownPdf, +}; diff --git a/cofounder/api/system/functions/op/indexdb.js b/cofounder/api/system/functions/op/indexdb.js new file mode 100644 index 0000000..e6598fd --- /dev/null +++ b/cofounder/api/system/functions/op/indexdb.js @@ -0,0 +1,81 @@ +import utils from "@/utils/index.js"; +import axios from "axios"; +import dotenv from "dotenv"; +dotenv.config(); + +async function opIndexdbQuery({ context, data }) { + /* ;; op:INDEXDB::QUERY + query from vector db ; currently one local index, later more indices, from url + + in: {text,vector,amount} // either text or vector + out: {results} + */ + /* + add .env RAG_REMOTE_ENABLE = TRUE + later retest for local, esp when empty + */ + const { index, text, vector, amount } = data; + let results = []; + if ( + process.env.RAG_REMOTE_ENABLE && + JSON.parse(process.env.RAG_REMOTE_ENABLE.toLowerCase()) && + process.env.COFOUNDER_API_KEY?.length && + process.env.COFOUNDER_API_KEY != "REPLACE_WITH_COFOUNDER.OPENINTERFACE.AI_KEY" + ) { + try { + const response = await axios.post( + `https://api.openinterface.ai/cofounder/alpha/dev/rag/${index}`, + { + vector: vector + ? vector + : ( + await context.run({ + id: `op:LLM::VECTORIZE`, + context, + data: { + texts: [text], + }, + }) + ).vectors[0], + amount, + }, + { + headers: { + Authorization: `Bearer ${process.env.COFOUNDER_API_KEY}`, + }, + timeout: 30000, // 30 seconds timeout + }, + ); + return response.data; + } catch (error) { + console.error(error); + return { results: [] }; + } + } + try { + // to avoid vectorizing for nothing + if (!utils.vectra.indexed) return { results: [] }; + return { + results: await utils.vectra.query({ + vector: vector + ? vector + : ( + await context.run({ + id: `op:LLM::VECTORIZE`, + context, + data: { + texts: [text], + }, + }) + ).vectors[0], + amount, + }), + }; + } catch (e) { + false; + } + return { results: [] }; +} +export default { + "op:INDEXDB::QUERY": opIndexdbQuery, +}; diff --git a/cofounder/api/system/functions/op/llm.js b/cofounder/api/system/functions/op/llm.js new file mode 100644 index 0000000..fdf384a --- /dev/null +++ b/cofounder/api/system/functions/op/llm.js @@ -0,0 +1,122 @@ +import utils from "@/utils/index.js"; +import dotenv from "dotenv"; +dotenv.config(); + +async function opLlmGen({ context, data }) { + /* ;; op:LLM::GEN + {model,messages,preparser,parser,...} -> { response , tokens (consumption) } + + in : ["model","messages","preparser","parser","query","stream"] + out : ["generated","usage"] + */ + /* + formats ;; + preparser : async ({text}) -> generated + parser : async ({generated,query}) + */ + + let { model, messages, preparser, parser, validate, query, stream } = data; + + if (!stream) stream = process.stdout; + if (!preparser) { + preparser = async ({ text }) => { + return { text }; + }; + } else if (preparser === `backticks`) { + preparser = utils.parsers.extract.backticks; // most likely to be used + } + + if (!parser) { + parser = async ({ generated, query }) => { + return generated.text; + }; + } else if (parser === `yaml`) { + parser = utils.parsers.parse.yaml; + } + + const llm_fn = !process.env.LLM_PROVIDER + ? utils.openai.inference + : process.env.LLM_PROVIDER.toLowerCase() === "openai" + ? utils.openai.inference + : utils.anthropic.inference; + + const { text, usage } = await llm_fn({ + model: model, + messages, + stream, + }); + + const generated_pre = await preparser({ text }); // -> typically { text : "... extracted text ..." } + const generated_post = await parser({ + generated: generated_pre, + query, + }); + + if (validate) { + try { + await validate({ generated: generated_post }); + } catch (e) { + console.dir({ "op:LLM::GEN error": e }); + throw new Error(e); + } + } + + return { + generated: generated_post, + usage, + }; +} + +function chunkify(array, chunkSize) { + const chunks = []; + for (let i = 0; i < array.length; i += chunkSize) { + chunks.push(array.slice(i, i + chunkSize)); + } + return chunks; +} + +async function opLlmVectorizeChunk({ context, data }) { + /* ;; op:LLM::VECTORIZE:CHUNK + {texts} -> {vectors,usage} + chunk processor (batches of 20) + queue concurrency/lims defined for this one + */ + const { texts } = data; + return await utils.openai.vectorize({ + texts, + }); +} +async function opLlmVectorize({ context, data }) { + /* ;; op:LLM::VECTORIZE + {texts} -> {vectors,usage} + + chunkify, process, flatten, return + */ + const { texts } = data; + const chunks = chunkify(texts, 20); + let usageAll = { prompt_tokens: 0, total_tokens: 0 }; + const vectorsAll = ( + await Promise.all( + chunks.map(async (chunk) => { + const { vectors, usage } = await context.run({ + id: `op:LLM::VECTORIZE:CHUNK`, + context, + data: { texts: chunk }, + }); + usageAll.prompt_tokens += usage.prompt_tokens; + usageAll.total_tokens += usage.total_tokens; + return vectors; + }), + ) + ).flat(); + return { + vectors: vectorsAll, + usage: usageAll, + }; +} + +export default { + "op:LLM::GEN": opLlmGen, + "op:LLM::VECTORIZE": opLlmVectorize, + "op:LLM::VECTORIZE:CHUNK": opLlmVectorizeChunk, +}; diff --git a/cofounder/api/system/functions/op/project.js b/cofounder/api/system/functions/op/project.js new file mode 100644 index 0000000..1a793b9 --- /dev/null +++ b/cofounder/api/system/functions/op/project.js @@ -0,0 +1,739 @@ +import utils from "@/utils/index.js"; +import { sample, merge } from "lodash-es"; +import path from "path"; +import fs from "fs"; +import yaml from "yaml"; +import dotenv from "dotenv"; +import fsextra from "fs-extra"; +import { execSync } from "child_process"; +dotenv.config(); + +/* + maps to local / hosted db paths +*/ +const pm = { + "pm:details": "pm/user/details", + "pm:brd": "pm/docs/brd", + "pm:drd": "pm/docs/drd", + "pm:fjmd": "pm/docs/fjmd", + "pm:frd": "pm/docs/frd", + "pm:prd": "pm/docs/prd", + "pm:uxdmd": "pm/docs/uxdmd", + "pm:uxsmd": "pm/docs/uxsmd", +}; +const architecture = { + "architecture:uxsitemap:structure": "architecture/uxsitemap/structure", + "architecture:uxdatamap:structure": "architecture/uxdatamap/structure", + "architecture:uxdatamap:views": "architecture/uxdatamap/views", +}; +const backend = { + "backend:requirements": "backend/structure/requirements", + "backend:specifications:asyncapi": "backend/specifications/asyncapi", + "backend:specifications:openapi": "backend/specifications/openapi", + "backend:server:main": "backend/server/main", +}; + +const db = { + "db:schemas": "db/mock/schemas", + "db:seed": "db/mock/seed", + "db:postgres": "db/mock/postgres", +}; +/* +const ui = { + "ui:layout:views": "ui/layout/mockup/views/{id}/versions/{version}", + "ui:layout:sections": "ui/layout/mockup/sections/{id}/versions/{version}", + //"ui:render:views" : "", + //"ui:render:sections": "", + "ui:code:react:stores": "ui/code/react/stores/{id}/versions/{version}", + "ui:code:react:root": "ui/code/react/root/{id}/versions/{version}", + "ui:code:react:views": "ui/code/react/views/{id}/versions/{version}", + "ui:code:react:sections": "ui/code/react/sections/{id}/versions/{version}", +}; +*/ +const webapp = { + "webapp:react:store": "webapp/code/react/store/{id}/versions/{version}", + "webapp:react:root": "webapp/code/react/root/{id}/versions/{version}", + "webapp:react:views": "webapp/code/react/views/{id}/versions/{version}", + + "webapp:layout:views": "webapp/design/layout/views/{id}/versions/{version}", +}; +const settings = { + // for version control ie. which view / section / version + // data is ie. {views{[id]:[version]}} + "settings:preferences:versions": "settings/preferences/versions", + "settings:config:package": "settings/config/package", +}; + +const modules = { + ...pm, + ...architecture, + ...db, + ...backend, + ...webapp, + //...ui, + ...settings, +}; + +const config = { + merge: [ + // operation ids where merge data is enabled + "settings:preferences:versions", + "settings:config:package", + ], + exports: [ + // events that trigger app write exports (if enabled) + + "db:postgres", + + "backend:specifications:asyncapi", + "backend:specifications:openapi", + "backend:server:main", + + "webapp:react:store", + "webapp:react:root", + "webapp:react:views", + "webapp:layout:views", + + /* + "ui:layout:views", + "ui:layout:sections", + "ui:code:react:stores", + "ui:code:react:root", + "ui:code:react:views", + "ui:code:react:sections", + */ + "settings:preferences:versions", + "settings:config:package", + ], +}; + +async function _exportOnSave({ context, data }) { + if ( + !( + process.env.AUTOEXPORT_ENABLE && + JSON.parse(process.env.AUTOEXPORT_ENABLE.toLowerCase()) + ) + ) + return; + const { project } = context; + const { id, refs } = data.operation; + const root = `${process.env.EXPORT_APPS_ROOT}/${project}`; + const backendRoot = `${root}/backend`; + const appRoot = `${root}/vitereact`; + const appSrcRoot = `${appRoot}/src`; + // const { data } = data.content.data + let tasks = []; + if (id === `backend:server:main`) { + const { mjs, dependencies, env } = data.content.data; + + tasks.push({ + path: `${backendRoot}/server.js`, + data: mjs, + }); + } + if (id === `backend:specifications:asyncapi`) { + if (data.content.data) { + const exportPath = `${backendRoot}/asyncapi.yaml`; + const exportData = yaml.stringify(data.content.data); + tasks.push({ + path: exportPath, + data: exportData, + }); + } + } + if (id === `backend:specifications:openapi`) { + if (data.content.data) { + const exportPath = `${backendRoot}/openapi.yaml`; + const exportData = yaml.stringify(data.content.data); + tasks.push({ + path: exportPath, + data: exportData, + }); + } + } + if (id === `db:postgres`) { + const exportPath = `${backendRoot}/db.sql`; + const exportData = data.content.data; + tasks.push({ + path: exportPath, + data: exportData, + }); + } + if (id === `webapp:react:store`) { + const exportPath = `${appSrcRoot}/store/main.tsx`; + const exportData = data.content.data.tsx; + tasks.push({ + path: exportPath, + data: exportData, + }); + } + if (id === `webapp:react:root`) { + const exportPath = `${appSrcRoot}/App.tsx`; + const exportData = data.content.data.tsx; + tasks.push({ + path: exportPath, + data: exportData, + }); + // just in case it wasnt setup properly, lets write meta.json here too + tasks.push({ + path: `${appSrcRoot}/_cofounder/meta.json`, + data: JSON.stringify({ project }), + }); + } + if (id === `webapp:react:views`) { + // exportPath = `${appSrcRoot}/components/views/${refs.id}/versions/${refs.version}.tsx` + tasks.push({ + path: `${appSrcRoot}/components/views/${refs.id}.tsx`, + data: `/* + [PLACEHOLDER COMPONENT] + > calls to this component are pre-replaced by @/_cofounder/vite-plugin + > to edit code for this component, you should go to : + @/_cofounder/generated/views/${refs.id}/{version_you_want_to_edit}.tsx +*/`, + }); + tasks.push({ + path: `${appSrcRoot}/_cofounder/generated/views/${refs.id}/empty.tsx`, + data: `import React from "react"; +const {{ID}}: React.FC = (props) => { + return ( +
+ {{ID}} placeholder +
+ To browse other versions
+ Use ⌘+K / CMD+K and hover here +
+
+ ); +}; +export default {{ID}}; +`.replaceAll("{{ID}}", refs.id), + }); + + tasks.push({ + path: `${appSrcRoot}/_cofounder/generated/views/${refs.id}/${refs.version}.tsx`, + data: data.content.data.tsx, + }); + // write meta.json + let versions = []; + try { + versions = fs + .readdirSync(`${appSrcRoot}/_cofounder/generated/views/${refs.id}/`) + .filter((filename) => filename.endsWith(".tsx")) + .map((filename) => path.basename(filename, ".tsx")); + } catch (e) { + false; + // no dir there yet + } + tasks.push({ + path: `${appSrcRoot}/_cofounder/generated/views/${refs.id}/meta.json`, + data: JSON.stringify( + { + versions: [...new Set([...versions, "latest"])], + choice: "latest", + }, + null, + "\t", + ), + }); + + /* + <-------- should also merge {dependencies} with current packages.json (either directly in app , or op:state:settings:... preferably latter ; to webapp:react:packages ) + */ + } + + if (id === `webapp:layout:views`) { + // exportPath = `${appSrcRoot}/components/views/${refs.id}/versions/${refs.version}.tsx` + const exportPath = `${appRoot}/public/_cofounder/generated/layouts/views/${refs.id}.${refs.version}.png`; + const exportData = data.content.data.render.image; + tasks.push({ + path: exportPath, + data: exportData, + image: true, + }); + } + + if (id === `settings:preferences:versions`) { + /* + for now, only handle preference exports for views || sections + */ + const _category = Object.keys(data.content.data)[0]; + const _id = Object.keys(data.content.data[_category])[0]; + const _version = data.content.data[_category][_id]; + if (_category === `views` || _category === `sections`) { + // update meta json on @/_cofounder/generated/{_category}/{id} + let versions = []; + try { + versions = fs + .readdirSync(`${appSrcRoot}/_cofounder/generated/${_category}/${_id}/`) + .filter((filename) => filename.endsWith(".tsx")) + .map((filename) => path.basename(filename, ".tsx")); + } catch (e) { + false; + } + tasks.push({ + path: `${appSrcRoot}/_cofounder/generated/${_category}/${_id}/meta.json`, + data: JSON.stringify( + { + versions: [...new Set([...versions, _version])], + choice: _version, + }, + null, + "\t", + ), + }); + } + } + if (id === `settings:config:package`) { + /* + data.content.data : { + [backend || webapp] : { + dependencies? : {}, //<--- this instead of list for merging while saving :) + env?: {}, + } + } + load boilerplate package.json, + try load export/.../package.json else {} + merge dependencies of both data.content.data[target].dependencies + + if (export/.../) merge with that package + else merge with boilerplate package and export + + only save if diff ; else might restart active dev nodemon every single time ... + */ + + Object.keys(data.content.data).map((target) => { + // target : "backend" || "webapp" + Object.keys(data.content.data[target]).map((category) => { + // category : "dependencies" || "env" + const boilerplateDir = `../boilerplate/${target === "backend" ? "backend" : target === "webapp" ? "vitereact" : false}-boilerplate`; + const exportDir = + target === "backend" ? backendRoot : target === "webapp" ? appRoot : false; + if (category === "dependencies") { + const newDependencies = Object.keys( + data.content.data[target].dependencies, + ); + + const boilerplatePackage = JSON.parse( + fs.readFileSync(`${boilerplateDir}/package.json`, "utf8").toString(), + ); + let exportedProjectPackage = { dependencies: {}, devDependencies: {} }; + try { + exportedProjectPackage = JSON.parse( + fs.readFileSync(`${exportDir}/package.json`, "utf8").toString(), + ); + } catch (e) { + console.error(`op:project:_exportOnsave:error : ${e}`); + } + + console.dir( + { + "debug:op:project:_exportOnSave : settings:config:package": { + [target]: { + [category]: { + boilerplateDir, + exportDir, + boilerplatePackage, + exportedProjectPackage, + }, + }, + }, + }, + { depth: null }, + ); + + const previousDevDependencies = [ + ...new Set([ + ...Object.keys(boilerplatePackage.devDependencies), + ...Object.keys(exportedProjectPackage.devDependencies), + ]), + ]; + + const previousDependencies = [ + ...new Set([ + ...Object.keys(boilerplatePackage.dependencies), + ...Object.keys(exportedProjectPackage.dependencies), + ...previousDevDependencies, + ]), + ]; + + const updateDependencies = newDependencies.some( + (dep) => !previousDependencies.includes(dep), + ); + + if (updateDependencies) { + const dependenciesToAdd = Object.fromEntries( + [ + ...new Set( + newDependencies.filter((dep) => !previousDependencies.includes(dep)), + ), + ].map((dep) => [dep, "*"]), + ); + + // filter out devDependencies keys so it doesnt move everything to dependencies on export to package.json + const mergedDependencies = Object.fromEntries( + Object.entries( + merge( + merge( + boilerplatePackage.dependencies, + exportedProjectPackage.dependencies, + ), + dependenciesToAdd, + ), + ).filter(([key]) => !previousDevDependencies.includes(key)), + ); + + let newPackageJson; + if (exportedProjectPackage.dependencies) { + // if exported package.json exists ; merge with rest and export + newPackageJson = JSON.stringify( + merge(exportedProjectPackage, { dependencies: mergedDependencies }), + null, + 2, + ); + } else { + // else merge with boilerplate package.json and export + newPackageJson = JSON.stringify( + merge(boilerplatePackage, { dependencies: mergedDependencies }), + null, + 2, + ); + } + + console.dir( + { + "debug:op:project:_exportOnSave : settings:config:package": { + [target]: { + [category]: { + mergedDependencies, + newPackageJson, + }, + }, + }, + }, + { depth: null }, + ); + + tasks.push({ + path: `${exportDir}/package.json`, + data: newPackageJson, + dependencies: true, + }); + } + } + if (category === "env") { + // applies to backend only + const envData = data.content.data[target].env; + if (Object.keys(envData).length) { + const envString = Object.entries(envData) + .map(([key, value]) => `${key}=${value}`) + .join("\n"); + console.dir( + { + "debug:op:project:_exportOnSave : settings:config:package": { + [target]: { + [category]: { + env: envData, + envString, + }, + }, + }, + }, + { depth: null }, + ); + tasks.push({ + path: `${exportDir}/.env`, + data: envString, + }); + } + } + }); + }); + + const _category = Object.keys(data.content.data)[0]; + const _id = Object.keys(data.content.data[_category])[0]; + const _version = data.content.data[_category][_id]; + if (_category === `views` || _category === `sections`) { + // update meta json on @/_cofounder/generated/{_category}/{id} + let versions = []; + try { + versions = fs + .readdirSync(`${appSrcRoot}/_cofounder/generated/${_category}/${_id}/`) + .filter((filename) => filename.endsWith(".tsx")) + .map((filename) => path.basename(filename, ".tsx")); + } catch (e) { + false; + } + tasks.push({ + path: `${appSrcRoot}/_cofounder/generated/${_category}/${_id}/meta.json`, + data: JSON.stringify( + { + versions: [...new Set([...versions, _version])], + choice: _version, + }, + null, + "\t", + ), + }); + } + } + + await Promise.all( + tasks.map(async (task) => { + const dir = path.dirname(task.path); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + if (!task.image) { + fs.writeFileSync(task.path, task.data, "utf8"); + } else { + // case by case : + // local ? copy paste from local path + // url ? fetch and write + if (task.data?.local?.length) { + const sourcePath = task.data.local; + await fsextra.copyFile(sourcePath, task.path); + } else if (task.data?.url?.length) { + const response = await fetch(task.data.url); + if (!response.ok) { + throw new Error(`Failed to fetch image from ${task.data.url}`); + } + const buffer = await response.buffer(); + fs.writeFileSync(task.path, buffer); + } + } + + if ( + task.dependencies && + process.env.AUTOINSTALL_ENABLE && + JSON.parse(process.env.AUTOINSTALL_ENABLE.toLowerCase()) + ) { + const dependenciesRootPath = task.path.split("/").slice(0, -1).join("/"); + console.log( + `\x1b[33m> dependencies updated for : ${dependenciesRootPath}\n> now running 'npm i' inside that folder\x1b[0m`, + ); + execSync(`npm i`, { + stdio: "inherit", + cwd: dependenciesRootPath, // folder where package.json is + }); + } + }), + ); +} + +async function opProjectStateUpdate({ context, data }) { + // save, modular + /* + aim for stream structure + */ + /* + context : { project``, } + data: { + local: bool, + cloud: bool, + operation: { + id: "ui:code:lalala", + refs: { + [id] : "id value to replace etc", + [otherId] : "some value etc", + } + }, + type: enum start,stream,end + stream: "" || false, + content: { + // should have key here as would be in state :: edge case, how to deal with '.' paths in object ? + key : "" // state key ? ie. pm.prd ; uxsitemap.views.whatever + data : {} + } + } + */ + /* + add : + _created? + _updated + */ + /* + update stream only if cloud + */ + + const { project } = context; + const { operation, type, stream, content } = data; + // const [ local , cloud ] = [ process.env.STATE_LOCAL , process.env.STATE_CLOUD]; + const { id, refs } = operation; + /* + cases of start/stream/end + */ + const query = { + path: modules[id], + data: {}, + }; + const ogPath = `${query.path}`; + + if (refs) { + Object.keys(refs).map((ref) => { + query.path = query.path.replace(`{${ref}}`, refs[ref]); + }); + } + + if (type === `start`) { + query.data._created = Date.now(); + query.data._processing = true; + } + if (type === `end`) { + query.data._updated = Date.now(); + query.data._processing = false; + // query.data = { ...query.data, ...content } + } + if (content) query.data = { ...query.data, ...content }; + console.dir({ "debug:op:project:state:update": { query } }, { depth: null }); + if ( + process.env.STATE_LOCAL && + JSON.parse(process.env.STATE_LOCAL.toLowerCase()) + ) { + const localPath = `db/projects/${project}/state/${query.path}.yaml`; + const dir = path.dirname(localPath); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + if (config.merge.includes(id)) { + try { + const previous = yaml.parse(fs.readFileSync(localPath, "utf8").toString()); + query.data = merge(previous, query.data); + } catch (e) { + console.dir({ + "op:project:update:error": `no previous state found for ${id}, will write new instead of merge`, + }); + } + } + fs.writeFileSync(localPath, yaml.stringify(query.data), "utf8"); + } + if ( + process.env.STATE_CLOUD && + JSON.parse(process.env.STATE_CLOUD.toLowerCase()) + ) { + if (refs) { + // need to write dummy timestamp in docs in case of firestore ; to be able to query subcollections + // query.path find index of "}" and split there+1, replace, log dummy timestamp + let subs = []; + for (let i = 0; i < ogPath.length; i++) { + if (ogPath[i] === "}") { + let sub = ogPath.slice(0, i + 1); + Object.keys(refs).map((ref) => { + sub = sub.replace(`{${ref}}`, refs[ref]); + }); + subs.push(sub); + } + } + await Promise.all( + subs.map(async (p) => { + await utils.firebase.doc.update({ + path: `/db/userdata/projects/${project}/state/${p}`, + data: { _created: Date.now() }, + }); + }), + ); + } + + query.path = `/db/userdata/projects/${project}/state/${query.path}`; + if (config.merge.includes(id)) { + query.merge = true; + } + await utils.firebase.doc.update(query); + } + + if ( + process.env.AUTOEXPORT_ENABLE && + JSON.parse(process.env.AUTOEXPORT_ENABLE.toLowerCase()) && + config.exports.includes(id) + ) + await _exportOnSave({ context, data }); +} + +async function opProjectStateLoad({ context, data }) { + // should have local || cloud strategies + const { project } = context; + // const [local, cloud] = [process.env.STATE_LOCAL, process.env.STATE_CLOUD]; + try { + if ( + process.env.STATE_LOCAL && + JSON.parse(process.env.STATE_LOCAL.toLowerCase()) + ) + return await utils.load.local({ project }); + if ( + process.env.STATE_CLOUD && + JSON.parse(process.env.STATE_CLOUD.toLowerCase()) + ) + return await utils.load.cloud({ project }); + } catch (e) { + console.error(`op:project:state:load:error : ${e}`); + } + console.log(`found no previous local / cloud state for project : ${project}`); + return {}; +} + +async function opProjectStateExport({ context, data }) { + // tons to update , just disregard this for now + + return; + // force export full project ; from {data} +} + +async function opProjectStateSetup({ context, data }) { + // if local export enabled, duplicate boilerplate + const { project } = context; + const dirs = [ + { + source: `../boilerplate/backend-boilerplate`, + target: `${process.env.EXPORT_APPS_ROOT}/${project}/backend`, + }, + { + source: `../boilerplate/vitereact-boilerplate`, + target: `${process.env.EXPORT_APPS_ROOT}/${project}/vitereact`, + }, + ]; + + for (const { source, target } of dirs) { + // Copy the directory from source to target while respecting .gitignore + await fsextra.copy(source, target, { + filter: (src) => { + // Respect .gitignore by checking if the file is not listed in .gitignore + const ignoreFile = `${source}/.gitignore`; + if (fs.existsSync(ignoreFile)) { + const ignoreList = fs + .readFileSync(ignoreFile, "utf-8") + .split("\n") + .map((line) => line.trim()) + .filter(Boolean); + return !ignoreList.some((ignorePattern) => src.includes(ignorePattern)); + } + return true; // If no .gitignore, copy everything + }, + recursive: true, // Ensure folders are created recursively + }); + } + + await fsextra.copyFile( + `../boilerplate/package.json`, + `${process.env.EXPORT_APPS_ROOT}/${project}/package.json`, + ); + await fsextra.copyFile( + `../boilerplate/README.md`, + `${process.env.EXPORT_APPS_ROOT}/${project}/README.md`, + ); + // write meta.json + fs.writeFileSync( + `${process.env.EXPORT_APPS_ROOT}/${project}/vitereact/src/_cofounder/meta.json`, + JSON.stringify({ project }), + ); +} + +async function opProjectStateSave({ context, data }) { + // save, full current state of project +} + +export default { + "op:PROJECT::STATE:UPDATE": opProjectStateUpdate, + "op:PROJECT::STATE:LOAD": opProjectStateLoad, + "op:PROJECT::STATE:SETUP": opProjectStateSetup, + "op:PROJECT::STATE:EXPORT": opProjectStateExport, + // "op:PROJECT::STATE:SAVE": opProjectStateSave, +}; diff --git a/cofounder/api/system/functions/op/render.js b/cofounder/api/system/functions/op/render.js new file mode 100644 index 0000000..beb76b7 --- /dev/null +++ b/cofounder/api/system/functions/op/render.js @@ -0,0 +1,18 @@ +import utils from "@/utils/index.js"; + +async function opRenderLayout({ context, data }) { + /* ;; op:RENDER::LAYOUT + render either { view , section , block } using utils.render and svg stuff + in : -> { svg{string``} , mode`view||...` , ...(designSystem,saveFilepath...) } + out : ["svg","image"] + */ + // const { svg , mode } = data // { svg{string``} , mode`view||...` } + return await utils.render.svg({ + ...data, + // saveFilepath: `./dump/renders/_opRenderLayoutDebug_${data.mode}_${Date.now()}.png`, + }); +} + +export default { + "op:RENDER::LAYOUT": opRenderLayout, +}; diff --git a/cofounder/api/system/functions/pm/brd.js b/cofounder/api/system/functions/pm/brd.js new file mode 100644 index 0000000..7777d95 --- /dev/null +++ b/cofounder/api/system/functions/pm/brd.js @@ -0,0 +1,345 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function pmBrdAnalysis({ context, data }) { + const { pm, db } = data; + const { details, prd, frd, drd } = pm; + + /* + should be 2 (3?) steps : + determine if needs { rest api , realtime socket io api } + make structure + */ + const backendPrompt = [ + { + role: "system", + content: `you are an expert product manager and software architect and API designer ; +your role is to determine, based on the provided analysis documents for the app project in development, the specfications of the app backend + +your task is very straightforward : +- based strictly on provided docs and outlined features, determine whether, yes or no, for the core features of the app MVP to be implemented, the backend : + > requires a RESTful API ? + > requires realtime (ie. websockets) ? + +you will answer exactly in this format, delimited by \`\`\`yaml : + +\`\`\`yaml +backend: + requirements: + restApi: + justifyYourAnswer: "write your reasoning for your answer in case it is true" + required: boolean # whether the backend requires or no a REST API + realtimeWebsockets: + justifyYourAnswer: "write your reasoning for your answer in case it is true" + required: boolean # whether the backend requires or no a REST API +\`\`\` + +answer in strict parseable Yaml format, exactly in the provided format structure +your answer should start with : \`\`\`yaml + +you will be tipped $9999 +`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${details.text} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `determine the backend specifications in terms of whether the backend needs a REST API , and whether it needs realtime Websockets. +your answer should start with : \`\`\`yaml + +you are a genius +`, + }, + ]; + const backendStructureRequirements = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `gpt-4o-mini`, //`gpt-4o`, + messages: backendPrompt, + preparser: `backticks`, + parser: `yaml`, + }, + }) + ).generated; + + const messages = [ + { + role: "system", + content: `you are an expert product manager and software architect and backend and server and API designer + +your job is to consult the provided web app details & analysis documents +in order to create a comprehensive and full Backend Requirements Document (BRD) for it + +the emphasis are user-facing features, +based on the expected features and different journeys of different users in the web app + +- your role is to conduct the analysis required to design the user-facing server of the provided task +- do a thorough analysis of the provided task + +--- + +- think from all possibles perspectives, put yourself in situation, to make sure your server analysis is fully comprehensive and ready to be developed +- ask yourself: + * what are the features involved in the user-facing server and that is called by the frontend ? + * if a server API is required, what are all the routes required by features expected to be seen by users in the frontend ? what should go in their schemas ? (not technical, rather analytical description from a feature perspective) + * if realtime features are required, what are all the events required by features expected to be seen by users in the frontend ? what should go in their schemas ? (not technical, rather analytical description from a feature perspective) + +- your analysis will be used to make a prod-ready backend and will be responsible for an app used by thousands of users, instantly +- your aim is to cover all use cases, as the expert product manager & architect you are + +> analyze the task thoroughly, then reply with your analysis in markdown format, in a well-formatted document to give to backend devs + +--- + +> your role here is not the implementation itself, you are the product architect consultant +> your role is to analyze the requirements for all scenarios required by all features + ask yourself : + * am i covering all needed server features? + * am i covering all features that the user expects ? + * if a feature necessitates the use of an external API (ie. checking a stock price , generating an ai image, advanced features that need the use of an external API, etc ...) + important : the backend already has DB and storage capabilities , so DO NOT MENTION DB OR STORAGE AS EXTERNAL APIS ! THOSE ARE ALREADY IMPLEMENTED INTERNALLY IN THE BACKEND ! + am i describing the details of what is needed ? + * am i properly aligning my server design details with other design detail aspects of the project such as DB structure ? + in order to ensure your analysis as a product architect consultant has covered every feature requirement + +> your job is to make thorough, critical analysis work which will be provided as documentation for devteams to implement + not a technical implementation, rather a thorough analysis, in plain language, of all expected features and their details + +> try to outdo yourself by thinking of what might be omitted in advance +- the goal server should be comprehensive will be used as reference to build the app's MVP backend +- cover all cases ; but : data-related tasks only (ie. you are making a mock server with api and/or realtime for user-facing data operations) + +--- + +> very important : for the current purpose of the BRD, the environment will be a mock prototype environment +do not bother with security details etc, have the requirements for the mock prototype +do not hang on very technical details (unless specifically emphasized), as the target is a mock dev prototype env : features functionality is the aim, not advanced technical coverage ! + +> SHOULD COVER DATA RELATED TASKS ONLY ! +> THE MOCK SERVER YOU ARE MAKING IS FOR USER-FACING DATA OPERATIONS, NOT FRONTEND / SERVING STATIC STUFF ! +> DATA RELATED TASKS ONLY ! + +--- + +your analysis is concerned with these two aspects aspects : +> if the app backend needs a server API , conduct the analysis regarding all the API needs +> if the app backend needs realtime Websockets , conduct the analysis regarding all the realtime events needed + +you can only write about these aspects (either one of them or both , depending on whats provided in task documents ) +important : DO NOT ANALYZE ANYTHING IN THE BACKEND BESIDES THESE 2 ASPECTS AND THEIR RELATIONS TO USER-FACING FEATURES !! + +--- + +again, +> SHOULD COVER DATA RELATED TASKS ONLY ! +> THE MOCK SERVER YOU ARE MAKING IS FOR USER-FACING DATA OPERATIONS, NOT FRONTEND / SERVING STATIC STUFF ! +> DATA RELATED TASKS ONLY ! + +--- + +important : +use snake_case for any naming you do + +--- + +your reply will be directly transferred as the final BRD document, so do not put anything else in your reply besides the BRD document +no extra comments or surrounding anything, only the markdown-formatted COMPREHENSIVE 100% COVERAGE AMAZING BEAUTIFUL GENIUS SUPER DETAILED 10/10 ARD DOCUMENT +your reply should start with : "\`\`\`markdown" and end with "\`\`\`" + +you will be tipped $99999 + major company shares for nailing it perfectly off the bat`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${details.text} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`DRD:database-requirements-document +${drd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`DB:specs +${yaml.stringify(db)} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`BACKEND:specs-requirements +${yaml.stringify(backendStructureRequirements)} +\`\`\``, + }, + { + role: "user", + content: `Conduct a comprehensive analysis for the Backend Requirements Document that considers all personas and features required, in markdown format (justify your reasoning whenever possible) + +--- + +Refer to this general document structure to guide you + +\`\`\`BRD:general-structure +I. General, Personas, Features + [...] +II. REST API + II.A. Justification & Reasoning + If app needs REST API, provide your reasoning + II.B. API Endpoints (if applies) + 3.B.1. [Endpoint] + Method & Path + Extended Description + Analyze and describe what the function does + Analysis + Interaction with <> DB + Analyze how does function interact with database based on provided DB details and schemas + ask yourself questions such as : + What fields does it need to insert / get / update / delete / ... for each operation ? + Based on provided DB details, does it need to create data on the fly such as ids / dates / ... ? + Does it need to insert data in multiple tables to not make DB conflicts ? + Be very specific & detailed into exactly how the relationships to <> DB tables work in this function + justify any answer by including snippets from the provided DB postgres code and elaborating + remember : the backend is tasked with creating any primitive required by db (ie. ids , ...), + as you can tell from the postgres code + make things 100% perfectly congruent in your analysis + Include any additional important analysis notes + Interaction with <> External APIs + Analyze if function needs to interact with external APIs for needed capabilities, and if so describe + Remember : App already has DB and storage , so external APIs would be external capabilities outside of these 2 + Add any important general analysis notes + Data Details + Auth + Does function requires the user to provided an auth token ? + Request + Body content type (json , form , ... ?) + Schema + Response + Content type + Schema + Additionals details / notes (if applies) + [...] +II. Realtime Websockets (if applies) + III.A. Justification & Reasoning + If app needs realtime events, provide your reasoning + III.B. Events (if applies) + 3.B.1. [Event] + Event name + Extended Description + Analyze and describe what the function does + Analysis + Interaction with <> DB + Analyze how does function interact with database based on provided DB details and schemas + ask yourself questions such as : + What fields does it need to insert / get / update / delete / ... for each operation ? + Based on provided DB details, does it need to create data on the fly such as ids / dates / ... ? + Does it need to insert data in multiple tables to not make DB conflicts ? + Be very specific & detailed into exactly how the relationships to <> DB tables work in this function + justify any answer by including snippets from the provided DB postgres code and elaborating + remember : the backend is tasked with creating any primitive required by db (ie. ids , ...), + as you can tell from the postgres code + make things 100% perfectly congruent in your analysis + Include any additional important analysis notes + Interaction with <> External APIs + Analyze if function needs to interact with external APIs for needed capabilities, and if so describe + Remember : App already has DB and storage , so external APIs would be external capabilities outside of these 2 + Add any important general analysis notes + Data Details + Auth + Does function requires the user to provided an auth token ? + Request payload + Schema + Response payload + Schema + Additional details / notes (if applies) + [...] +IV. Additional Notes + Any additional notes worth mentionning regarding the backend requirements +\`\`\` + +--- +you're a genius`, + }, + ]; + + const brd = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:brd", + }, + type: `end`, + content: { + key: "pm.brd", + data: brd, + }, + }, + }); + + const backendRequirements = backendStructureRequirements.backend.requirements; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "backend:requirements", + }, + type: `end`, + content: { + key: "backend.requirements", + data: backendRequirements, + }, + }, + }); + + return { pm: { brd }, backend: { requirements: backendRequirements } }; +} + +export default { + "PM:BRD::ANALYSIS": pmBrdAnalysis, +}; diff --git a/cofounder/api/system/functions/pm/drd.js b/cofounder/api/system/functions/pm/drd.js new file mode 100644 index 0000000..0a4aebf --- /dev/null +++ b/cofounder/api/system/functions/pm/drd.js @@ -0,0 +1,139 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function pmDrdAnalysis({ context, data }) { + /* ;; PM:DRD::ANALYSIS + make {userdetails,prd,frd,FJMD} -> DRD analysis + + + out : ["pm"] + */ + + const { pm } = data; + const { details, prd, frd, fjmd } = pm; + // const {text , attachments} = details + const messages = [ + { + role: "system", + content: `you are an expert product manager and database designer + +your job is to consult the provided web app details, Product Requirements Document, Features Requirements Documents & Features Journeys Map Document +in order to create a comprehensive and full Feature Database Requirements Document (DRD) for it + +--- + +the emphasis are user-facing features, +based on the expected features and different journeys of different users in the web app + +- your role is to conduct the analysis part for the provided app in development's DB part + DB schemas analysis should be comprehensive and cover EVERYTHING required by the app MVP, and nothing more - no shiny secondary features, but nothing less than 100% comprehensive for every single expected functionality in production + +- your current role is to do a thorough analysis of the provided task and answer with your analysis in markdown format + +- think from perspectives of multiple personas, put yourself in situation, to make sure your DB schemas reply is fully comprehensive and ready to be used in production exactly as is +- your answer will be pushed to dev teams directly, and will be responsible for an app used by thousands of users +- your aim is to cover all use cases, as the expert product manager you are + +- ask yourself: + * what are the key personas that use the app ? + * what are all the schemas required by features expected to be seen by users ? + * and what are all the schemas required internally to cover all features workflows ? + +very important : +- in the schemas parts of your analysis , only make use of basic primitives like numbers, strings, json, etc ... no uuid types or any special types etc +- very important : in the schemas parts of your analysis , only use basic primitives like numbers, strings, json, etc ... no uuid types or any special types etc ! very basic primitives only ! + +--- + +> analyze the task thoroughly, then reply with your analysis in markdown format +> try to outdo yourself by thinking of what might be omitted, and reviewing your own work super critically in order to do comprehensive analytical work for this app's MVP +> your job is to make thorough analysis work which will be provided as documentation for devteams to implement +> your job is not the implementation, rather it's looking at the problem from all perspective to make sure a thorough job is done, + and asking yourself, for every scenario, what are all the data entries that would be needed to make this function + +--- + +> note : if auth functionalities are present, use an architecture that will be compatible with a simple jwt auth system, which is very simply user and/or email strings(s) and password hash string ! + +--- + +important : +use snake_case for any naming you do + +--- + +> very important : for the current purpose of the DRD, the environment will be a mock prototype environment, +do not bother with security details etc, have the DB requirements for the mock prototype + +your reply will be directly transferred as the final DRD document, so do not put anything else in your reply besides the DRD document +no extra comments or surrounding anything, only the markdown-formatted COMPREHENSIVE 100% COVERAGE AMAZING BEAUTIFUL GENIUS SUPER DETAILED 10/10 DRD DOCUMENT +your reply should start with : "\`\`\`markdown" and end with "\`\`\`" + +you will be tipped $99999 + major company shares for nailing it perfectly off the bat`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${details.text} +\`\`\``, + }, + // <------ later on, attachments , pdf/img cases etc map + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + /*{ + role: "user", + content: `\`\`\`FJMD:features-journeys-map-document +${yaml.stringify(fjmd)} +\`\`\``, + },*/ + { + role: "user", + content: `Conduct a comprehensive analysis for the DB Requirements Document that considers all personas and features required, in markdown format (justify your reasoning whenever possible) + +you're a genius`, + }, + ]; + + const drd = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:drd", + }, + type: `end`, + content: { + key: "pm.drd", + data: drd, + }, + }, + }); + return { pm: { drd } }; +} + +export default { + "PM:DRD::ANALYSIS": pmDrdAnalysis, +}; diff --git a/cofounder/api/system/functions/pm/fjmd.js b/cofounder/api/system/functions/pm/fjmd.js new file mode 100644 index 0000000..86e51f4 --- /dev/null +++ b/cofounder/api/system/functions/pm/fjmd.js @@ -0,0 +1,149 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function pmFjmdAnalysis({ context, data }) { + /* ;; PM:FJMD::ANALYSIS + make {userdetails,prd,frd} -> FJMD analysis + */ + + const { pm } = data; + const { details, prd, frd } = pm; + // const {text , attachments} = details + const messages = [ + { + role: "system", + content: `you are an expert product manager and product designer +your job is to consult the provided web app details, analysis, PRD & FRD +in order to create a comprehensive and full Feature Journeys Maps Document (FJMD) for it + +the emphasis are user-facing features, +based on the expected features and different journeys of different users in the web app + +your generated FJMD is very detailed, comprehensive and covers absolutely 100% of everything required for the web app + +you are not limited by provided example journeys +your analysis here should cover ALL journey cases (of the app MVP) + +while conducting your FJMD, ask yourself: +- am i covering all 100% the purpose and functions required for the app ? +- am i covering all 100% the expected features from all the users' perspectives? even the small details ? +- am i covering all 100% the user journeys ? +- am i covering all details that other product managers might have omitted from my analysis ? +- am i making sure what i am detailing in my FJMD is absolutely 100% comprehensive and ready to be put into development without any alteration ? + +conduct and reply with a generated comprehensive perfect FJMD document, yaml-formatted +the reply format should directly be a list of journeys items in valid yaml format, with this structure : + + +journeys: + - name : "..." + category : "..." + journeyId: "/*like JOUR-01 format*/" + description: "..." + participants: "..." + preconditions: "describe pre-existing conditions or assumptions..." + postconditions: "describe state expected outcomes after completing the journey" + steps : #list of journey steps, correlated with provided FRD (& PRD) + - intent : "..." + userInteraction : "describe how users will interact with the interface" + featuresIds : ["","",...] # list of featureIds involved in this step (featureIds should be exactly as they are mentionned in the FRD features-requirements-documents as 'featureId' ; important else it would break !) + expectedResponse : "detail the expected response from the app" + - [...] + edgeCases: "describe variations of the journey ; ie. what could go wrong, etc ..." + - [...] + +--- + +your FJMD document will be directly put into development + +the emphasis are user-facing features; +functional features +interface features to cover 100% of expected features of the web app, 100% of all possible user journeys +no need to bother with non-user-facing features such as security compliance, nor similar non-user-facing technical details +no need to bother with cases too advanced for the web app MVP features (ie. advanced analytics or multilingual or live support; ... unless specified in provided task ! ) + +> Stay User-Centric: keep the user's perspective front and center throughout the document +emphasize user-facing features and core app MVP features + +you are not limited by provided example journeys in other docs +your analysis here should be comprehensive and cover ALL journey cases +think of many different core journeys from different perspectives in different scenarios +be comprehensive and cover it all + +your reply will be directly transferred as the final FJMD document +so make sure the content and YAML formatting are both exquisitely perfect as the genius you are +if an app name is not provided, make a fitting one for your analysis and JMD + +emphasize user-facing features and core app MVP features + +so do not put anything else in your reply besides the Feature Journeys Maps Document as parseable, valid well-formatted YAML format +no extra comments or surrounding anything, only the YAML-formatted PARSEABLE VALID COMPREHENSIVE 100% COVERAGE AMAZING BEAUTIFUL FEATURES JOURNEY MAPS DOCUMENT +your reply should start with : "\`\`\`yaml" and end with "\`\`\`" + +you will be tipped $999 you are a genius`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${details.text} +\`\`\``, + }, + // <------ later on, attachments , pdf/img cases etc map + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `implement the Features Journey Maps Documents (FRJD) for all the core journeys for different scenarios +it is expected to be very comprehensive and detailed ; in a VALID PARSEABLE YAML format + +you're a genius`, + }, + ]; + + /* + const fjmd = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: `yaml`, + }, + }) + ).generated; + */ + + console.error(`skipping features journey map doc`); + const fjmd = ``; + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:fjmd", + }, + type: `end`, + content: { + key: "pm.fjmd", + data: fjmd, + }, + }, + }); + + return { pm: { fjmd } }; +} + +export default { + "PM:FJMD::ANALYSIS": pmFjmdAnalysis, +}; diff --git a/cofounder/api/system/functions/pm/frd.js b/cofounder/api/system/functions/pm/frd.js new file mode 100644 index 0000000..ee23b2a --- /dev/null +++ b/cofounder/api/system/functions/pm/frd.js @@ -0,0 +1,117 @@ +import utils from "@/utils/index.js"; + +async function pmFrdAnalysis({ context, data }) { + /* ;; PM:FRD::ANALYSIS + make {userdetails,prd} -> FRD analysis + + */ + const { pm } = data; + const { details, prd } = pm; + // const {text , attachments} = details + const messages = [ + { + role: "system", + content: `you are an expert product manager and product designer +your job is to consult the provided web app details & analysis PRD, +and create a full Features Requirements Document (FRD) for it + +the emphasis are user-facing features, +based on the expected features and different journeys of different users in the web app + +your generated FRD is very detailed, comprehensive and covers absolutely 100% of everything required for the web app + +while conducting your FRD, ask yourself: +- am i covering all 100% the purpose and functions required for the app ? +- am i covering all 100% the expected features from all the users' perspectives? even the small details ? +- am i covering all 100% the user journeys ? +- am i covering all details that other product managers might have omitted from my analysis ? +- am i making sure what i am detailing in my FRDis absolutely 100% comprehensive and ready to be put into development without any alteration ? + +conduct and reply with a generated comprehensive perfect FRD document, markdown-formatted +the reply format should directly be a bulletpoints list of features items, each has 6 keys : + +features: + name , category , featureId (/*like 'XXXX-01' format*/) , description , detailedDiscussion , extensiveDetailedBulletpoints + +--- + +your FRD document will be directly put into development + +the emphasis are user-facing features; +functional features + interface features to cover 100% of expected features of the web app, 100% of all possible user journeys +no need to bother with non-user-facing features such as security compliance, nor similar non-user-facing technical details +no need to bother with cases too advanced for the web app MVP features (ie. advanced analytics or multilingual or live support; ... unless specified in provided task ! ) + +emphasize user-facing features and core app MVP features + +your reply will be directly transferred as the final FRD document +so make sure the content is comprehensive and ensuing app UX is perfect as the genius you are +if an app name is not provided, make a fitting one for your analysis and FRD + +emphasize user-facing features and core app MVP features + +so do not put anything else in your reply besides the FRD DOC as parseable, valid well-formatted dpc +no extra comments or surrounding anything, only the VALID COMPREHENSIVE 100% COVERAGE AMAZING BEAUTIFUL FRD DOCUMENT + +your reply should start with : "\`\`\`markdown" and end with "\`\`\`" + +you will be tipped $999 you are a genius`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${details.text} +\`\`\``, + }, + // <------ later on, attachments , pdf/img cases etc map + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `implement the Features Requirements Document (FRD) +it should span and cover all 100% of user-facing features and for all 100% of journeys required and will be directly pushed to development +absolutely no feature would be missing ; every detail and description for 100% of every feature required +it is expected to be 100% comprehensive and super detailed + +you're a genius`, + }, + ]; + + const frd = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:frd", + }, + type: `end`, + content: { + key: "pm.frd", + data: frd, + }, + }, + }); + + return { pm: { frd } }; +} + +export default { + "PM:FRD::ANALYSIS": pmFrdAnalysis, +}; diff --git a/cofounder/api/system/functions/pm/prd.js b/cofounder/api/system/functions/pm/prd.js new file mode 100644 index 0000000..3186690 --- /dev/null +++ b/cofounder/api/system/functions/pm/prd.js @@ -0,0 +1,127 @@ +import utils from "@/utils/index.js"; + +async function pmPrdAnalysis({ context, data }) { + /* ;; PM:PRD::ANALYSIS + make userprovided details -> PRD analysis ; user can have text + {pdf , images} (now just text), later extend + + */ + + const { pm } = data; + const { details } = pm; + const { text, attachments } = details; + // const {text , attachments} = details + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:details", + }, + type: `end`, + content: { + key: "pm.details", + data: details, + }, + }, + }); + + const messages = [ + { + role: "system", + content: `you are an expert product manager and product designer +your job is conduct the analysis for the provided web app project task and create a full PRD document for it +your analysis is very detailed, comprehensive and covers absolutely 100% of everything required for the web app + +while conducting your PRD, ask yourself: +- what is a detailed description of the app, and all it's expected features ? +- what are all the purpose and functions required for the app ? +- am i covering all the expected features from the users' perspectives? even the small details ? + am i sure i am not missing anything important ? +- what are the personas ? what are their user stories ? what are all the expected features ? +- what are all the features ? +- am i covering all the expected features from the users' perspectives? even the small details ? + am i sure i am not missing anything important ? + +- what about the user journeys ? am i covering all possible journeys for all users ? +- what could i or other product managers be potentially omitting and that shouldn't be the case ? + +- am i making sure what i am detailing in my PRD is absolutely 100% comprehensive and ready to be put into development without any alteration nor pre-assumption that might lead to important omissions ? am i detailing all that is needed ? + + +after you finalize your PRD, +add an extra part, called "Additional Analysis", where you criticize (very critically) the work you just did; +ask yourself : +- what might have been omitted from my analysis that should have gone into the web app MVP requirements ? +- do not bother with secondary or tertiary things (ie. accessibility or similar advanced non-MVP stuff), ask yourself instead, critically : what core web app MVP features or journeys did i not previously mention ? what are their details ? + +conduct and reply with a generated comprehensive perfect PRD document, markdown-formatted + +your PRD document will be directly put into development, +so make sure the content and MD formatting are both exquisitely perfect as the genius you are +if an app name is not provided, make a fitting one for your analysis and PRD + + +the aim of the PRD are web app facing requirements +no need to bother with non-web-app features such as security compliance or similar non-web-app-facing technical details +no need to bother with non-MVP features (ie. advanced cases such as analytics or support or i18n etc ... focus on the MVP to cover 100% of expected features ) - unless explicitly specified in the task descriptions ofc +focus on what's important and detail it to the maximum, leave nothing ! + +your reply will be directly transferred as the final PRD document, so do not put anything else in your reply besides the PRD document +no extra comments or surrounding anything, only the markdown-formatted COMPREHENSIVE 100% COVERAGE AMAZING BEAUTIFUL GENIUS SUPER DETAILED 10/10 PRD DOCUMENT +your reply should start with : "\`\`\`markdown" and end with "\`\`\`" + +you will be tipped $999 +you're a genius +`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${text} +\`\`\``, + }, + // <------ later on, attachments , pdf/img cases etc map + { + role: "user", + content: `Conduct your analysis and make sure you do not miss any feature or detail ! +you are a genius`, + }, + ]; + + console.dir({ __debug_pmPrdAnalysis: { messages } }); + + const prd = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:prd", + }, + type: `end`, + content: { + key: "pm.prd", + data: prd, + }, + }, + }); + + return { pm: { prd } }; +} + +export default { + "PM:PRD::ANALYSIS": pmPrdAnalysis, +}; diff --git a/cofounder/api/system/functions/pm/uxdmd.js b/cofounder/api/system/functions/pm/uxdmd.js new file mode 100644 index 0000000..b03d687 --- /dev/null +++ b/cofounder/api/system/functions/pm/uxdmd.js @@ -0,0 +1,221 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function pmUxdmdAnalysis({ context, data }) { + /* ;; PM:UXDMD::ANALYSIS + {pm docs , db , openapi? , uxsitemap {analysis,struct,...}?} -> (<> crossanalysis) to make UX Datamap Doc + + */ + + const { pm, db, backend } = data; + const { details, prd, frd, drd, uxsmd, brd } = pm; + + const messages = [ + { + role: "system", + content: `- you are a genius Product Manager & Software Archtect + +- your role is to conduct the analysis required to design the frontend app architecture for the provided project in its details + +- think from perspectives of multiple personas, put yourself in situation, to make sure your app architecture analysis is fully comprehensive and ready to be developed +- ask yourself: + * what are the journeys involved in the app frontend ? + * what are all the routes , views , slugs , props , URL parameters , auth restrictions, required by features expected to be seen by users in the frontend ? + * what should go in their schemas ? (not technical, rather analytical description from a feature perspective) +- your analysis will be used to make a prod-ready app and will be responsible for an app used by thousands of users +- your aim is to cover all use cases, as the expert product manager & architect you are + +> analyze the task thoroughly, then reply with your analysis in markdown format, in a well-formatted document to give to app designers & devs + +> your role here is not the implementation itself, you are the product architect consultant +> your role is to analyze the requirements for all scenarios required by all features + ask yourself : + * am i covering all needed app features? + * am i covering all features that the user expects ? + in order to ensure your analysis as a product architect consultant has covered every feature requirement +> your job is to make thorough, critical analysis work which will be provided as documentation for designers & devteams to implement + not a technical implementation, rather a thorough analysis, of all expected architecture features and their details + +--- + +your aim is to determine, in extreme detail: + + I. the structure of the app: + * routes + * what views they link to + * slugs (ie. path /something/:example) if applies + * if route is restricted or not + * URL params (ie. /somepath?param_a=example¶m_b=example ) if applies + + > important : only refer to views ids specified in provided ux sitemap ! (UV_* and GV_* views) + + II. the relationships between views of the app (based on the provided UX sitemap ; (unique views UV_* and shared ui views GV_*) ) & app data (based on provided DB & backend docs & schemas ): + + conduct a cross analysis between UX sitemap views <> app data states in order to : + + 1. determine stateful variables , actions/dynamic functions , params : + 1A. if the view has state for dynamic data, describe + 1B. if the view should access slug passed into url (ie. /something/:example ), describe + 1C. if the view should access URL params and use them for a feature (ie. /somepath?param_a=X¶m_b=Y), describe + 1D. if the view has actions/dynamic functions like API calls or realtime events, describe in detail + 1E. revise and provide your reasoning to make sure you covered all the state/data details required to make all required features work properly + + > important : only refer to view ids specified in provided ux sitemap ! (UV_* and GV_* views) , dont hallucinate UI views/components ! + + 2. global app state structure, that is accessed by all views : + * how the app state should be structured to cover the app features, in terms of : + variables & schemas + actions + make sure you only analyze the global app state (which ie. typically holds stuff like auth / notifications / ... ) + and not view-specific props and state (as the latter were already detailed in the previous section and should not be mentionned here) + + make sure you determine the schemas for the global app state variables + provide examples values for them (based on provided app schemas & DB seed examples), in each case + +--- + +> try to outdo yourself by thinking of what might be omitted, and reviewing your own work super critically in order to do comprehensive analytical work for this app's MVP +- the goal app should be comprehensive, will be used as the reference to build the app +- cover all cases in terms of app architecture ; with high emphasis on details regarding data and states + +--- + +important : +> use snake_case for any naming you do + +extremely important : +> ensure full perfect coherence with DB fields names and provided specs names ; + +--- + +your reply will be directly transferred as the final analysis, so do not put anything else in your reply besides the analysis document +no extra comments or surrounding anything, only the markdown-formatted COMPREHENSIVE 100% COVERAGE AMAZING BEAUTIFUL GENIUS SUPER DETAILED 10/10 ANALYSIS DOCUMENT +your reply should start with : "\`\`\`markdown" and end with "\`\`\`" + +you will be tipped $99999 + major company shares for nailing it perfectly off the bat`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${details.text} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`DRD:database-requirements-document +${drd} +\`\`\` + +--- + +\`\`\`DB:schemas +${yaml.stringify(db)} +\`\`\``, + }, + { + role: "user", + content: + `\`\`\`BRD:backend-requirements-document +${brd} +\`\`\` + +` + + (!backend?.requirements?.restApi?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:openAPI +${yaml.stringify(backend.specifications.openapi)} +\`\`\` + +`) + + (!backend?.requirements?.realtimeWebsockets?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:asyncAPI +${yaml.stringify(backend.specifications.asyncapi)} +\`\`\` +` + + ` +--- + +\`\`\`BRD:server:main +${yaml.stringify(backend.server.main)} +\`\`\` + +--- + +note : +> any reference to the backend server should be the local dev URL referred to in docs ; typically : \`http://localhost:1337\` +> if case app needs a global state, global app state should be in the context of one single app redux store \`store.tsx\` that wraps the entire app and includes all that is needed for all global state stuff: + ie. auth for api and/or auth for websockets + ie. if backend has realtime events, realtime events subscriptions + etc ... in one single global state store + +`), + }, + { + role: "user", + content: `\`\`\`UXSMD:ux-sitemap-document +${uxsmd} +\`\`\``, + }, + { + role: "user", + content: `Conduct the analysis for the frontend app architecture and its details in a frotnend app architecture analysis document style - starting with a table of contents, elaborating on everything the task specifies, in extreme detail specifying all that needs specification + +extremely important : +> you are absolutely forbidden from instructing in the document about having to create new components or how to structure the project +> you should 100% stick strictly to the provided task ! + +you're a genius`, + }, + ]; + + const uxdmd = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, // `chatgpt-4o-latest`,//`gpt-4o`, + messages, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:uxdmd", + }, + type: `end`, + content: { + key: "pm.uxdmd", + data: uxdmd, + }, + }, + }); + + return { + pm: { uxdmd }, + }; +} + +export default { + "PM:UXDMD::ANALYSIS": pmUxdmdAnalysis, +}; diff --git a/cofounder/api/system/functions/pm/uxsmd.js b/cofounder/api/system/functions/pm/uxsmd.js new file mode 100644 index 0000000..f1d6d38 --- /dev/null +++ b/cofounder/api/system/functions/pm/uxsmd.js @@ -0,0 +1,159 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function pmUxsmdAnalysis({ context, data }) { + /* ;; PM:UXSMD::ANALYSIS + {pm docs , db , openapi?} -> (<> crossanalysis) to make UX Sitemap doc + + */ + const { pm } = data; + const { details, prd, frd } = pm; + const { text, attachments } = details; + const messages = [ + { + role: "system", + content: `you are an expert product manager and app designer + +your job is to consult the provided web app details and additional documents +in order to create a comprehensive and full UX Sitemap Document (UXSMD) for it + +- your current role is to do a thorough analysis of the provided web app requirements and answer with your analysis in markdown format + +- make sure your UX Sitemap Document is fully comprehensive and ready to be put in development exactly as is + your answer will be pushed to dev teams directly, and will be responsible for an app used by thousands of users + your aim is to cover all use cases, as the expert app designer you are + +--- + +ask yourself: + + I. + * am i covering shared global UI views in my analysis (ie. top navigation, footers, ...) in a separate section, + which also details the components that share them ? + am i assigning unique and expressive title-cased ids to them (in format "GV_{...}" ie. "GV_TopNav" ) ? + am i careful to consider cases of authenticated/unauthenticated + (whether conditionals regarding accessing the view itself or conditionals on its contained elements) to make sure my coverage is not missing things ? + + * am i covering all the needed unique UI views ; for all the required features ? + am i assigning unique and expressive title-cased ids to them (in format "UV_{...}" ie. "UV_Landing" ) ? + am i making sure unique views do not include duplicate shared global UI views which were already previously covered ? + am i careful to consider cases of authenticated/unauthenticated (whether conditionals regarding accessing the view itself or conditionals on its contained elements) to make sure my coverage is not missing things ? + + * am i extensively describing everything in details for the dev team to have 100% coverage of everything needed through my UX Sitemap Document analysis ? + + * am i covering EVERYTHING expected to be present in this web app: + every view (every unique view and every shared global view) expected to be in the app ? + every view's components expected to be in the app to cover all 100% of features and all their details ? + am i covering the views for all workflows, end to end ? + + * am i making sure i am covering the core and essential features / views , and not some optional secondary/tertiary not really required stuff ? + + II. + * am i describing the functional and features analysis of each view before further detailing it in order to have a cohesive and comprehensive analysis and not omit any details ? + * what are all the requirements needed by features expected to be seen by users in terms of UI views ( unique views and shared global views ) and contained views' components ? + * cross analysis between feature <> ui views required to create in ux sitemap ? + * what are ALL THE VIEWS required by ALL THE REQUIREMENTS required by the user ? + * am i covering all views (unique views and shared global views) ? + with all extensive details and descriptions ? + * am i making sure i am covering the core and essential features / views , and not some optional secondary/tertiary not really required stuff ? + + III. + can i make a table for all the cross links analysis between different views in order to establish inter-app navigation relationships ? + can i describe their intent in each case ? + can i also describe how the linking works (in terms of ui elements / user interaction / action taken to trigger the link and where in the view ) ? + + Source view | Target View | Intent | Action Description + + * am i covering 100% of relations links of whats needed for all in-app navigation, both static and dynamic ? + * am i truly covering all inter-app cross links relations and not missing anything ? + +--- + +> analyze the task thoroughly, then reply with your analysis in markdown format +> try to outdo yourself by thinking of what might be omitted, and reviewing your own work super critically in order to do comprehensive analytical work for this app's MVP +> your job is to make thorough analysis work which will be provided as documentation for devteams to implement + +--- + +> stick to the provided formats and specifications: + UI unique views with ids UV_* + UI global shared views with ids GV_* + + do not make up new denominations or types, stick to the task exactly as specified ! + +--- + +important : +> do not many any "Container" views (like some GV_GlobalContainer or something) ; DO NOT make any container views to contain other views inside of them ! + only make unique UV_* or GV_* shared views : views that serve a functional purpose ; not container views ! + +--- + +your reply will be directly transferred as the final UX Sitemap Analysis Document, so do not put anything else in your reply besides the UX Sitemap analysis document +no extra comments or surrounding anything, only the markdown-formatted COMPREHENSIVE 100% COVERAGE AMAZING BEAUTIFUL GENIUS SUPER DETAILED 10/10 UX SITEMAP ANALYSIS DOCUMENT +your reply should start with : "\`\`\`markdown" and end with "\`\`\`" + +you will be tipped $9999`, + }, + { + role: "user", + content: `\`\`\`app-project:description +${details.text} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `Conduct a comprehensive and detailed analysis for the UX Sitemap Document for the app, in markdown format. elaborate and justify and detail to the greatest extent. make extensive descriptions. + +you're a genius`, + }, + ]; + + const uxsmd = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "pm:uxsmd", + }, + type: `end`, + content: { + key: "pm.uxsmd", + data: uxsmd, + }, + }, + }); + + return { + pm: { uxsmd }, + }; +} + +export default { + "PM:UXSMD::ANALYSIS": pmUxsmdAnalysis, +}; diff --git a/cofounder/api/system/functions/swarm/augment.js b/cofounder/api/system/functions/swarm/augment.js new file mode 100644 index 0000000..019b1eb --- /dev/null +++ b/cofounder/api/system/functions/swarm/augment.js @@ -0,0 +1,365 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function promptAnalysis({ context, data }) { + const { task } = data; + const { code, decorators, apis } = task; + return [ + { + role: "system", + content: `you are an expert backend and node js dev +- your role is to generate an analysis for for functions to implement that may require the use of external APIs , either through API calls or npm sdks + +- you are provided with descriptions and contextual code snippets of desired functions, from a node server module + these function are tagged as needing the implementation of external APIs/SDKs for the tasks they are meant to accomplish + +- you are also provided with some search results for external APIs for each function from some external APIs that were indexed + > you are to determine whether external API search result(s) are relevant or no for the desired use cases descriptions + > if so , which ones to use and how ? what do they need to run ? how to use them ? how to format their expected response ? + > if no search result is relevant, do you know, about fitting nodejs/npm SDKs/packages or other APIs you are familiar with that are fit for the task ? + and if so, how to use them ? + > note : if a fitting external API is identified and also has SDKs you know about + its prefereable to call the API using the provided openapi / docs instead of the SDK you already know about + ( because SDKs might have been updated since your last knowledge base ) ; + use SDKs for when no APIs search results make sense for the analyzed implementation case + > note : if you are using references from provided docs, extracts and include snippets from them inside your analysis to further document your analysis properly + +conduct a detailed analysis for each of the ${apis.length} provided functions to implement + +your reply should start with : "\`\`\`markdown" and end with "\`\`\`" + +you will be tipped $999 +you're a genius +`, + }, + // each api entry in its own message + ...apis.map(({ id, description, snippet, rag }) => { + return { + role: "user", + content: `\`\`\`task:${id} +${yaml.stringify({ + functionDescription: description, + contextCodeSnippet: snippet, +})} +\`\`\` + +\`\`\`apis-search-results:${id} +${rag.length ? yaml.stringify(rag) : ""} +\`\`\` +`, + }; + }), + { + role: "user", + content: `Conduct your analysis each of the ${apis.length} provided functions to implement, with each function in its separate and very detailed section, and make sure you do not miss any useful detail ! + +be extremely detailed and include every single used reference and detail in your analysis for it to be fully comprehensive and complete + +you are a genius`, + }, + ]; +} + +async function promptImplementMerge({ context, data }) { + const { pm, db, backend, task } = data; + const { prd, frd, drd, brd } = pm; + const { code, apis, analysis } = task; + const { openapi, asyncapi } = backend.specifications; + /* + should also get BRD here ! important ! ie. so it doesnt do stupid placeholders ? + should provide full code too ? maybe 2 pass implement directly ; implement and revise ? + no need for rag here + */ + return [ + { + role: "system", + content: `Your task, as the genius backend dev expert you are, is to generate the full nodejs script for a module, based on the provided specifications and details of the backend in development + +- the current code of the server script is provided + the desired updates are provided +> your main task is to add the provided functions , and return a fully functional script that has both the original features and the newly added updates, with everything working perfectly and as expected + +--- + +your role is to implement the full express server for the provided task for the \`server.mjs\` (type: module script) +you will answer in 3 parts : + +- analysis , in between \`\`\`markdown\`\`\`\` section +- code , in between \`\`\`mjs\`\`\`\` section +- dependencies and env variables , in between \`\`\`yaml\`\`\`\` section ; where any needed packages to install and needed env variables to setup will be mentionned ; the yaml should have objects : { dependencies : {"package":"version"} , env : {"key" , "temp_value"} } ("dependencies" (for packages) and "env" for env variables (and their temporary values) ) +use doublequotes for every string inside the yaml to make sure formatting is good + +--- + +in your analysis, ask yourself : + > what are the added functions ? + > how do i merge all updates perfectly with the working code ? + > is the full flow covered ? + > are all the expected functions fullfilled ? + > am i covering all the parts for all the required updates ? + including imports, functions, db operations, ... ? + are all the new updates congruent with the original code structure, flow, db operations and all that is expected ? + +--- + +for any db requirements, use postgres from \`@electric-sql/pglite\` +- to use postgres, include this snippet in your script : +\`\`\` +import { PGlite } from "@electric-sql/pglite"; +const postgres = new PGlite("./db"); +/* then, can be used like this : +await postgres.query("SELECT * FROM exampletable;") +*/ +// note : the postgres tables + seed were already created before , you can use the postgres directly without configuring it +\`\`\` +postgres is use exactly how is provided in the snippet, do not change anything about loading it / configuring it, else it breaks ; +postgres is imported, initialized and queries EXACTLY AS SHOWN IN THE SNIPPET ! NO OTHER WAY ! + +--- + +note : the postgres tables + seed were already created before , you can use the postgres directly without configuring it ; do not create tables in script ! +extremely important : +- the DB R/W need to be 100% compatible with the tables and schemas of the provided DB specifications !! +- if it makes use of .env , make your you import \`dotenv\` and \`dotenv.config()\` to read .env before ! + +--- + +extremely important : + +- you are to implement the entire server as specified in the provided docs , with a focus on DB R/W operations +- you are to implement every single thing needed by the backend server and output one single big working perfect \`server.mjs\` script +- do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script +- no placeholders, no hallucinated imports +- again, do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script +--- + +note: +> if ie. some mock data is meant to to store an image url, use a https://picsum.photos/ url with a random seed + +super important : +> use snake_case for any new naming you do +> ensure full perfect coherence with DB fields names and all provided specs names + +--- + +extremely important : +- the DB R/W need to be 100% compatible with the tables and schemas of the provided DB specifications !! +- the app flow must be 100% working perfect everywhere + +you are a genius + you get tipped $9999999 +`, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\` + +\`\`\`FRD:features-requirements-document +${frd} +\`\`\` +`, + }, + { + role: "user", + content: ` +\`\`\`DB:postgres:sql +${db.postgres} +\`\`\` + +--- + +extremely turbo important : +> pay extreme attention to DB details : + > the things that you are expected to provide with inserts : + > should you make a uuid before inserting with postgres query ? + > are there key constraints ? + > is the db querying code using the exact names as in db fields ? + > are you providing everything needed to db every single time ? +`, + }, + { + role: "user", + content: `\`\`\`BRD:backend-requirements-document +${brd} +\`\`\``, + }, + data.backend?.requirements?.restApi?.required && { + role: "user", + content: `\`\`\`BACKEND:specifications:openAPI +${yaml.stringify(openapi)} +\`\`\``, + }, + data.backend?.requirements?.realtimeWebsockets?.required && { + role: "user", + content: `\`\`\`BACKEND:specifications:asyncAPI +${yaml.stringify(asyncapi)} +\`\`\``, + }, + { + role: "user", + content: `The functions updates of the original code are the following : + +\`\`\`functions:update:tasks +${yaml.stringify({ + toUpdate: apis.map(({ description, snippet }) => { + return { + functionDescription: description, + contextCodeSnippet: snippet, + }; + }), +})} +\`\`\``, + }, + { + role: "user", + content: `The original full script code to update is : +\`\`\`mjs +${code} +\`\`\` +`, + }, + { + role: "user", + content: `The analysis of the new updates to make to the server code is in the following : + +\`\`\`functions:update:analysis +${analysis} +\`\`\``, + }, + { + role: "user", + content: `extremely important : +- you are to implement the entire \`server.mjs\` as specified in the backend specifications , with a focus on DB R/W operations +- you are to implement every single thing needed by the server and output one single big working perfect \`server.mjs\` script +- do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script +- no placeholders, no hallucinated imports + + +--- + +extremely turbo important : +> pay extreme attention to DB details : + > the things that you are expected to provide with inserts : + > should you make a uuid before inserting with a postgres query ? + > are there key constraints ? should you create something before inserting something else because of contraints ? + > is the db querying code using the exact names as in db fields ? + > are you providing everything needed to db every single time ? + +--- + +- again, do not assume anything is implemented yet ! you will do 100% of everything needed and output one single big working perfect \`server.mjs\` script +- again , you are to implement every single thing needed by the server and output one single big working perfect \`server.mjs\` script +- no placeholders, no hallucinated imports ; one 100% perfect complete working server script + +extremely important : +- the DB R/W need to be 100% compatible with the tables and schemas of the provided DB specifications !! + +now do the analysis , write the full working script and specify the dependencies+env`, + }, + ].filter((e) => e); +} +async function promptImplementReview({ context, data }) { + const { task } = data; + const { brd } = pm; + const { code, decorators, apis, analysis, implementations } = task; + /* + maybe double check verify instead ? + */ + return []; +} + +async function swarmAugmentBackendExternalapis({ context, data }) { + /* + */ + const { task } = data; + const { code } = task; + const decorators = (await utils.parsers.extract.decorators({ code })).filter( + (item) => item.type === "external-api" || item.type === "external-apis", + ); + if (!decorators.length) return {}; + + // apis RAG + const apis = await Promise.all( + decorators.map(async (item, idx) => { + const { description, snippet } = item; + const ragText = `Description : ${description}\n\nCode Snippet :\n\`\`\`\n${snippet}\n\`\`\``; + return { + id: `fn:${idx + 1}/${decorators.length}`, + description, + snippet, + rag: ( + await context.run({ + id: `op:INDEXDB::QUERY`, + context, + data: { + index: "apis", + text: ragText, + amount: 5, + }, + }) + ).results, + }; + }), + ); + data.task.decorators = decorators; + data.task.apis = apis; + const messagesAnalysis = await promptAnalysis({ context, data }); + + const analysisPass = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: messagesAnalysis, + preparser: `backticks`, + parser: false, + }, + }) + ).generated; + + data.task.analysis = analysisPass; + + const messagesImplementMerge = await promptImplementMerge({ context, data }); + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: messagesImplementMerge, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `mjs`, `yaml`], + }); + + const { mjs } = extraction; + if (!mjs.length || !extraction.yaml) { + throw new Error( + "swarm:augment:backend:externalApis:generate error - generated code is empty", + ); + } + + const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {}; + const generatedServer = { + mjs, + dependencies: parsedYaml.dependencies + ? Object.fromEntries( + Object.keys(parsedYaml.dependencies).map((key) => [key, "*"]), + ) + : [], + env: parsedYaml.env ? parsedYaml.env : {}, + timestamp: Date.now(), + }; + + return generatedServer; +} + +export default { + "SWARM:AUGMENT::BACKEND:EXTERNALAPIS": swarmAugmentBackendExternalapis, +}; diff --git a/cofounder/api/system/functions/swarm/fix.js b/cofounder/api/system/functions/swarm/fix.js new file mode 100644 index 0000000..e1ace80 --- /dev/null +++ b/cofounder/api/system/functions/swarm/fix.js @@ -0,0 +1,10 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function swarmFixBackend({ context, data }) {} +async function swarmFixWebapp({ context, data }) {} + +export default { + "SWARM:FIX::BACKEND": swarmFixBackend, + "SWARM:FIX::WEBAPP": swarmFixWebapp, +}; diff --git a/cofounder/api/system/functions/swarm/review.js b/cofounder/api/system/functions/swarm/review.js new file mode 100644 index 0000000..6f152c4 --- /dev/null +++ b/cofounder/api/system/functions/swarm/review.js @@ -0,0 +1,20 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; +import dotenv from "dotenv"; +dotenv.config(); + +/* + should check process.env.SWARM_ENABLE +*/ + +async function swarmReviewServerMain({ context, data }) {} +async function swarmReviewWebappStore({ context, data }) {} +async function swarmReviewWebappRoot({ context, data }) {} +async function swarmReviewWebappView({ context, data }) {} + +export default { + "SWARM:REVIEW::SERVER:MAIN": swarmReviewServerMain, + "SWARM:REVIEW::WEBAPP:STORE": swarmReviewWebappStore, + "SWARM:REVIEW::WEBAPP:ROOT": swarmReviewWebappRoot, + "SWARM:REVIEW::WEBAPP:VIEW": swarmReviewWebappView, +}; diff --git a/cofounder/api/system/functions/ux/datamap.js b/cofounder/api/system/functions/ux/datamap.js new file mode 100644 index 0000000..6ca95a2 --- /dev/null +++ b/cofounder/api/system/functions/ux/datamap.js @@ -0,0 +1,493 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; +import { merge, fromPairs } from "lodash-es"; + +function _chunkify(input_list, chunk_size) { + const chunks = []; + for (let i = 0; i < input_list.length; i += chunk_size) { + chunks.push(input_list.slice(i, i + chunk_size)); + } + return chunks; +} + +async function uxDatamapStructure({ context, data }) { + /* ;; UX:DATAMAP::ROOT:VIEWS + {...} -> app {routes, slugs, params , views } ; yaml + ;; preconsider layout stuff too, either here or in sitemap + + out : ["uxdatamap"] + */ + + const { pm, backend } = data; + const { prd, frd, brd, uxsmd, uxdmd } = pm; + const messages = [ + { + role: "system", + content: `- you are a genius Product Manager & Software Archtect + +- your role is to make the frontend app architecture for the provided project , based on the provided task and analysis documents +- your answer should be in the strict provided format that will be defined further + +your aim is to determine the: + * the structure of the app: + * global app state structure that is accessed by all views : how the app state should be structured to cover the app features + * routes, what views they link to + * route restrictions + * slugs if applies (ie. path /something/:example), describe + * URL params if applies (ie. /somepath?param_a=example¶m_b=example ), describe + + +- think from perspectives of multiple personas, put yourself in situation, to make sure your app architecture is fully comprehensive and ready to be developed +- ask yourself: + * what are the journeys involved in the app frontend ? + * what are all the routes , views , slugs , props , URL parameters , required by features expected to be seen by users in the frontend ? + * what should go in schemas ? + * am i covering all needed slugs ? + am i covering all URL parameters ? + +- your structure will be used to make a prod-ready app architecture and will be responsible for an app used by thousands of users +- your aim is to cover all use cases, as the expert product manager & architect you are + +> your answer should strictly be in this format : + +\`\`\`yaml +app: + root: + globalState: # global app state variables if applies ; name conventions should try match with dbschemas/openapi schemas for coherence + [name]: # global app state variable name + schema: # variable schema in JS-parseable interace format ; schema should be fully defined including nested fields (you are provided with all the documents and db schemas and openapi etc ... that you need to determine this) + default: # default value to assign to the variable ; should obviously be aligned with the defined schema + example: # example value to assign + ... + + routes: # list of app routes to cover all features and cases + - description: "..." # concise one sentence description of the route's role + path: "..." # path, including if any slugs (using the /:slug format ) + view: "" # view id to render on this route ; should match a provided id for a unique view from the ux sitemap (UV_*), based on the provided analysis + + # specify slugs / URL params if applies here + # note : remember there is a strong difference - slugs are (/examplepath/:slug_id) and urlParams are (/somepath?q=example&someparam=somevalue) do not confuse them ! + + slugs?: # if slugs in path, describe + - name: "..." # slug id as specified in path + intent: "..." # consise one sentence description of its role + ... + urlParams?: # does the view expect url params, if so describe each single URLparam individually in detail + - name: "..." # if the view will expect URL params, specify the URL param name + intent: "..." # consise description + example: "exampleValue" # an example of a value it would take - you are required to provide an example here + required?: boolean # if specifying the urlParam is required or optional for the view to function properly + ... +\`\`\` + +--- + +it should be comprehensive for the needs required by all the views + +> important : if some home or landing view, path should obviously be "/" ! + +your reply will be directly transferred as the final structure, so do not put anything else in your reply besides the final structure +your reply should start with : "\`\`\`yaml" and end with "\`\`\`" + +you will be tipped $99999 + major company shares for nailing it perfectly off the bat`, + }, + { + role: "user", + content: `\`\`\`PRD:app-product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:app-features-requirements-document +${yaml.stringify(frd)} +\`\`\``, + }, + { + role: "user", + content: + `\`\`\`BRD:backend-requirements-document +${brd} +\`\`\` + +` + + (!backend?.requirements?.restApi?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:openAPI +${yaml.stringify(backend.specifications.openapi)} +\`\`\` + +`) + + (!backend?.requirements?.realtimeWebsockets?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:asyncAPI +${yaml.stringify(backend.specifications.asyncapi)} +\`\`\` +` + + ` +--- + +\`\`\`BRD:server:main +${yaml.stringify(backend.server.main)} +\`\`\` + +`), + }, + { + role: "user", + content: `\`\`\`UXSMD:ux-sitemap-document +${uxsmd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`UXDMD:ux-sitemap-data-states-crossanalysis-document +${uxdmd} +\`\`\``, + }, + ]; + const uxdatamapStructure = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`chatgpt-4o-latest`, // `chatgpt-4o-latest`,//`gpt-4o`, + messages, + preparser: `backticks`, + parser: `yaml`, + }, + }) + ).generated; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "architecture:uxdatamap:structure", + }, + type: `end`, + content: { + key: `uxdatamap.structure`, + data: uxdatamapStructure.app, + }, + }, + }); + + return { + uxdatamap: { + structure: uxdatamapStructure.app, // -> {root{},routes{}} + }, + }; +} + +async function uxDatamapViews({ context, data }) { + /* ;; UX:DATAMAP::VIEWS:SECTIONS + { ... } -> sections details with props & schemas ; yaml + ;; preconsider layout stuff too, either here or in sitemap + + out : ["uxdatamap"] + */ + + /* + - not sure if needs uxsitemap structure etc or just the uxdatamap structure (and other analysis docs) + - should also consider shared views and their distribution etc, unless that is done in uxsitemap + that and cross links ... unless that too in uxsitemap + - focus here is data not other stuff + */ + + const { uxdatamap, uxsitemap } = data; + /* + uxdatamap: { structure : { root{} , routes{} } } + uxsitemap: { structure : { views{ unique{}, shared{} } , crosslinks[{source,target,intent,action}] } } + + -> needs parallel chunking because high detail on each + -> parallel chunk uxsitemap views to detail data ops on them and their sections + -> all shared global views GV_* in same chunk (because diff approach?) , unique views uv_* in multi chunks because numerous + */ + + let tasks = []; + + const UVs = Object.keys(uxsitemap.structure.views.unique); + if (UVs.length) { + _chunkify(UVs, 5).map((uniqueViewsIdsChunk) => { + let filteredUxSitemap = { views: { unique: {} } }; + uniqueViewsIdsChunk.map((uv) => { + filteredUxSitemap.views.unique[uv] = uxsitemap.structure.views.unique[uv]; + }); + tasks.push({ + uxsitemap: filteredUxSitemap, // filtered ux sitemap with all chunk of unique views + crosslinks: uxsitemap.structure.crosslinks.filter((crosslink) => { + return uniqueViewsIdsChunk.includes(crosslink.source); + }), + ids: uniqueViewsIdsChunk, + type: `unique`, + }); + }); + } + const GVs = Object.keys(uxsitemap.structure.views.shared); + if (GVs.length) { + tasks.push({ + uxsitemap: { views: { shared: uxsitemap.structure.views.shared } }, // filtered ux sitemap with all shared views + crosslinks: uxsitemap.structure.crosslinks.filter((crosslink) => { + return GVs.includes(crosslink.source); + }), + ids: GVs, + type: `shared`, + }); + } + + let views = {}; + await Promise.all( + tasks.map(async (task) => { + const response = await context.run({ + id: `UX:DATAMAP::VIEWS:CHUNK`, + context, + data: { ...data, task }, + }); + views = merge(views, response.views); + }), + ); + + // console.dir({ __debug_uxDatamapViews: {views} } , {depth:null}) + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "architecture:uxdatamap:views", + }, + type: `end`, + content: { + key: `uxdatamap.views`, + data: views, + }, + }, + }); + + return { + uxdatamap: { + ...uxdatamap, + views, + }, + }; +} + +async function uxDatamapViewsChunk({ context, data }) { + /* ;; UX:DATAMAP::VIEWS:CHUNK + chunk processor for views+sections detailing + + out : ["views"] # make sure later, maybe there's more to it ? + */ + + /* + - not sure if needs uxsitemap structure etc or just the uxdatamap structure (and other analysis docs) + - should also consider shared views and their distribution etc, unless that is done in uxsitemap + that and cross links ... unless that too in uxsitemap + + - focus here is data not other stuff ! can link through filtering with uxsitemap later + */ + + const { pm, uxdatamap, backend, task } = data; + const { prd, frd, brd, uxsmd, uxdmd } = pm; + /* + --> task : { + uxsitemap{ + views{ + unique{ __chunk of views__ }, + shared{ __chunk of views__ }, + }, + } + crosslinks[], + ids[ ids of views__ ], + type: unique || shared + } + // returns {views{ unique{[id]:...} , shared{[id]:...} }} + */ + + const messages = [ + { + role: "system", + content: `- you are a genius Product Manager & App Architect + +- your role is to detail the frontend app architecture structure for the provided project, +for the specific views with ids : ${task.ids.join(",")}, +based on the provided task and analysis documents +- your answer should be in the strict provided format that will be defined further + + +your aim is to determine the: + * the structure of the specified frontend views (views ${task.ids.join(",")} ) , + for each view : + * state variables , schemas , dynamic data + * what it receives from the route (slugs) + * what it receives in URL params + * action / functions in this view and how they come into play to cover all intended features of the view +- for each view , ask yourself: + * what are the features involved in this view ; and how they come into play in app's features / journeys ? + * what data does this view receive as route slugs and url params ? + * what are all the state variables / actions / functions / ... required by features expected to be seen by users in the frontend ? + +- your detailed view structure for each view will be used to make a prod-ready app architecture and will be responsible for an app used by thousands of users +- your aim is to cover all use cases, as the expert product manager & architect you are + +> your answer is required to be in this strict defined format, in this strict order, in a strictly parseable YAML : + +\`\`\`yaml +# use view ids directly under the views object ; will either be UV_* (unique views) or GV_* (shared global views) ; +# for all provided views ids in task, conduct the structure detailing +views: + [view id]: # the view id that is detailed ; should be a value from : ${task.ids.join(" , ")} + slugs?: # if view takes dynamic slug variable (defined in route in app structure), describe + - name: "..." # slug id as defined in route + intent: "..." # consise one sentence description of the slug role + required: boolean # if required, set to true + default: "..." # default init value for the slug + ... + urlParams?: # if view takes URL params (defined in app structure), describe + - name: "..." # URL param key as defined in app structure + intent: "..." # consise one sentence description of the slug role + required: boolean # if required, set to true + ... + stateVariables?: # if view is stateful and needs view-level state variables, describe ; + - name: "..." # variable name + role: "..." # describe + schema: # variable schema in JS-parseable interface schema format ; schema should be fully defined including nested fields + default: # default init value for the view's state variables + mappingIfFromSource?: # if this state variable is set based on : received route slugs , or URL params , or app global state , specify + - source: # is either "slugs" || "urlParams" || "globalAppState" + name: # variable name as defined in slugs / urlParams / globalAppState to link it + ... + ... + actions?: # if view has dynamic actions/functions, describe + - name: "..." # action/function name + intent: "..." # describe + triggers: # list of ways the action/function is triggered; can be multiple ; ie. on page load, when some button is clicked inside view, when some state variable value changes, etc ... + interactionWithBackend?: # if action interacts with backend, describe + description: "if applies , describe the interaction with backend ; also mention if calls backend api or realtime, and describe how ; be detailed" + + ... + globalStateVariablesAccessed?: # if view needs to access global state variables (as defined in provided app structure under root.globalState), specify those in this object ; object should also contain description of relationship (ie. 'to get auth token to use in api calls authorization header' , 'to get current user profile to prefill [...] ' , etc ... ) + + [...] +\`\`\` + +--- +note : +- for any field that requires making example, you can draw from provided data examples in provided task docs + for any field such as image, media ... make sure you use urls rather than local references ; + if some entry requires an image url or media, use a valid "https://picsum.photos/..." url for it ! + +--- + +for yaml to be 100% valid, use quotes around string as much as possible +your reply should start with : "\`\`\`yaml" and end with "\`\`\`" + +you will be tipped $99999 + major company shares`, + }, + { + role: "user", + content: `\`\`\`PRD:app-product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:app-features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`UXSMD:ux-sitemap-document +${uxsmd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`UXDMD:ux-sitemap-data-crossanalysis-document +${uxdmd} +\`\`\``, + }, + { + role: "user", + content: + `\`\`\`BRD:backend-requirements-document +${brd} +\`\`\` + +` + + (!backend?.requirements?.restApi?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:openAPI +${yaml.stringify(backend.specifications.openapi)} +\`\`\` + +`) + + (!backend?.requirements?.realtimeWebsockets?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:asyncAPI +${yaml.stringify(backend.specifications.asyncapi)} +\`\`\` +` + + ` +--- + +\`\`\`BRD:server:main +${yaml.stringify(backend.server.main)} +\`\`\` + +`), + }, + { + role: "user", + content: `\`\`\`UX:ux-datamap +${yaml.stringify(uxdatamap.structure)} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`UX:ux-sitemap-distilled +${yaml.stringify(task.uxsitemap)} +\`\`\``, + }, + { + role: "user", + content: `make the detailed architecture for views ids : ${task.ids.join(",")} and their components. +only make the detailed architecture for views ids : ${task.ids.join(",")} ; not any other views, +using the provided instructions and format + +make a coherent, cohesive, perfect, detailed structure +answer in parseable YAML format, strictly in the provided instructions format ; strictly parseable YAML ; +you're a genius`, + }, + ]; + const views = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`chatgpt-4o-latest`, // `chatgpt-4o-latest`,//`gpt-4o`, + messages, + preparser: `backticks`, + parser: `yaml`, + }, + }) + ).generated.views; + + return { + views: { + [task.type]: views, + }, + }; // -> views : { unique{[ids...]} , shared{ids[...]} } +} + +export default { + "UX:DATAMAP::STRUCTURE": uxDatamapStructure, + "UX:DATAMAP::VIEWS": uxDatamapViews, + "UX:DATAMAP::VIEWS:CHUNK": uxDatamapViewsChunk, +}; diff --git a/cofounder/api/system/functions/ux/sitemap.js b/cofounder/api/system/functions/ux/sitemap.js new file mode 100644 index 0000000..feb4e20 --- /dev/null +++ b/cofounder/api/system/functions/ux/sitemap.js @@ -0,0 +1,238 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function uxSitemapStructure({ context, data }) { + /* generate uxsitemap in strict format */ + + const { pm } = data; + const { prd, frd, uxsmd } = pm; + const messages = [ + { + role: "system", + content: `You are an extremely experienced UX expert and software product manager. +Your role is to create a comprehensive UX sitemap from the provided information. + +- Think very slowly and thoroughly. Take a deep breath. +- Provide a comprehensive, well-thought-out reply that covers all aspects of the analyzed problem. +- You are an expert at what you do. +- You are known to never forget a single angle. +- You will be tipped $999 for each perfect reply. + +Answer in a strict parseable YAML format, in this format: + +\`\`\`yaml + +# ux sitemap structure in great details +uxsitemap: + + views: + uniqueViews: # unique views with ids UV_* , as specified in provided docs + [unique view id UV_*]: + title: "" + extendedDescription: "describe the view in great extended detail that covers every single thing that should go in it without any omittance" # essential to detail specifics ! dont assume someone knows what you mean, detail it in details ! + notes: "important notes regarding this view component or its state(s) that were mentionned in provided docs & analysis and that should be mentionned" + role: "describe in detail role of this view in the app ; namely the features it aims to satisfy within the app features and UX" + globalSharedViews: # global shared views with ids GV_* such as nav etc, as specified in provided docs + [global shared view id GV_*]: + title: "" + extendedDescription: "describe the shared view in great extended detail that covers every single thing that should go in it without any omittance" # essential to detail specifics ! dont assume someone knows what you mean, detail it in details ! + notes: "important notes regarding view component or its state(s) that were mentionned in provided docs & analysis and that should be mentionned" + role: "describe in detail role of this view in the app ; namely the features it aims to satisfy within the app features and UX" + sharedByViews: [] # list of ids of all unique views UV_* that have this shared view displayed alongside with them + relativePosition: "" # describe the relative positioning of this GV_* shared view in relation to the app layout and unique views it is shared with; + [...] + + # cross inter-app links relationships between views + crossLinks: + - sourceViewId: "" # UV_* or GV_* + targetViewId: "" # UV_* + intent: "" + actionDescription: "" + [...] + +\`\`\` + +--- + +- every view id you refer to must exist in provided docs ! + +- As the expert, you should make a complete and comprehensive UX sitemap, + including all parts that might be unemphasized by a less experienced UX worker, if required by the app of course, such as auth flows, terms, etc. + +your reply should start with : "\`\`\`yaml" and end with "\`\`\`" +for yaml to be 100% valid, use quotes around string as much as possible + +A comprehensive UX sitemap in the provided yaml format +You are a genius at this task.`, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`FRD:features-requirements-document +${frd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`UXSMD:ux-sitemap-analysis-document +${uxsmd} +\`\`\``, + }, + { + role: "user", + content: `Make a full, comprehensive UX sitemap for it +You're a genius do a great job`, + }, + ]; + + const uxsitemapStructure = ( + await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, // `chatgpt-4o-latest`,//`gpt-4o`, + messages, + preparser: `backticks`, + parser: `yaml`, + }, + }) + ).generated.uxsitemap; + + // <----- do post processing to format the response + const uxsitemap = { + structure: { + views: { + unique: uxsitemapStructure.views.uniqueViews, + shared: uxsitemapStructure.views.globalSharedViews, + }, + crosslinks: uxsitemapStructure.crossLinks.map((link) => { + return { + source: link.sourceViewId, + target: link.targetViewId, + intent: link.intent, + action: link.actionDescription, + }; + }), + }, + }; + + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "architecture:uxsitemap:structure", + }, + type: `end`, + content: { + key: "uxsitemap.structure", + data: uxsitemap.structure, + }, + }, + }); + + return { + uxsitemap, + }; +} + +// ____________________________________________________________________________________________________ + +async function uxSitemapViews({ context, data }) { + /* ;; UX:SITEMAP::VIEWS + {pm docs , db , openapi?, UXSMD, uxsitemap{structure} } -> uxsitemap{...,views} + + out : ["uxsitemap"] + */ + + // distribute processing of views to submodules , might typically replace ie. in case of specialized and whatnot + // but serves as a refiner , not as a detailer + // so can just pass for now + await Promise.all(); + + // postprocess to return single coherent object + + return {}; +} + +// ____________________________________________________________________________________________________ + +async function uxSitemapViewsNormal({ context, data }) { + /* ;; UX:SITEMAP::VIEWS:NORMAL + chunk processing from UX:SITEMAP::VIEWS ; for normal views + + out : ["views"] + */ + + const messages = [ + { + role: "system", + content: "[system+format]", + }, + ]; + await context.run({ + id: `op:LLM::GEN`, + context, + data: { messages, preparser: false, parser: false }, + }); + + return {}; +} +async function uxSitemapViewsSpecial({ context, data }) { + /* ;; UX:SITEMAP::VIEWS:SPECIAL + chunk processing from UX:SITEMAP::VIEWS; specialized processors for special sections ; ie. landing would be based on some highconversion process etc; + might override provided sections descriptions + + out : ["views"] + */ + + const messages = [ + { + role: "system", + content: "[system+format]", + }, + ]; + await context.run({ + id: `op:LLM::GEN`, + context, + data: { messages, preparser: false, parser: false }, + }); + + return {}; +} +async function uxSitemapViewsShared({ context, data }) { + /* ;; UX:SITEMAP::VIEWS:SHARED + chunk processing from UX:SITEMAP::VIEWS ; for shared views implementations + + + out : ["views"] + */ + + const messages = [ + { + role: "system", + content: "[system+format]", + }, + ]; + await context.run({ + id: `op:LLM::GEN`, + context, + data: { messages, preparser: false, parser: false }, + }); + + return {}; +} + +export default { + "UX:SITEMAP::STRUCTURE": uxSitemapStructure, + "UX:SITEMAP::VIEWS": uxSitemapViews, + + "UX:SITEMAP::VIEWS:NORMAL": uxSitemapViewsNormal, + "UX:SITEMAP::VIEWS:SPECIAL": uxSitemapViewsSpecial, + "UX:SITEMAP::VIEWS:SHARED": uxSitemapViewsShared, +}; diff --git a/cofounder/api/system/functions/webapp/root.js b/cofounder/api/system/functions/webapp/root.js new file mode 100644 index 0000000..3007f7b --- /dev/null +++ b/cofounder/api/system/functions/webapp/root.js @@ -0,0 +1,264 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function promptRoot({ context, data }) { + // have a placeholder redux store module in case it'd wrap with non implemented store + /* + better implement using prompt, provide ux sitemap & datamap + provide react (redux store) too, in prompt also, for auth restricted stuff + */ + const { uxsitemap, uxdatamap, webapp } = data; + + const viewsImportHead = [ + ...Object.keys(uxsitemap.structure.views.shared), + ...Object.keys(uxsitemap.structure.views.unique), + ] + .map((viewId) => { + return `import ${viewId} from '@/components/views/${viewId}.tsx';`; + }) + .join("\n"); + + const boilerplate = `import React, { useState, useEffect } from "react"; +import "./App.css"; +import { + Route, + Routes, +} from "react-router-dom"; + +/* + import views : unique views (UV_*) and shared global views (GV_*) +*/ +import UV_ExampleLanding from '@/components/views/UV_ExampleLanding.tsx'; +import UV_OtherViewExample from '@/components/views/UV_OtherViewExample.tsx'; +import GV_NavTop from '@/components/views/GV_NavTop.tsx'; +import GV_Footer from '@/components/views/GV_Footer.tsx'; + +const App: React.FC = () => { + + return ( + <> + + + + } /> + } /> + + + + + ); +}; + +export default App; +`; + + /* + x emphasize redux / auth stuff + x provide example of reactrouterdom structure ; whole thing + x emphasize relative position of shared components ; thus emphasize tailwind usage and styling in rel to shared components + x emphasize React FC + x do not assume ! prompt + */ + return [ + { + role: `system`, + content: `your role as an expert web app and react senior dev and product manager is to write the code for the root react + tailwind app (App.tsx) component component based on the provided task + +> ask yourself what should be defined in the root App component in terms of: + > paths & unique views + > global shared views, and their relative position and conditionals + + > auth related restriction (if applies) in relation to the store provider that wraps the App component you are writing here ( it's used like this : \` \` ) + > very important : + do not auth restrict an entire view just because some sections of it are auth restricted while other elements are not auth restricted !! think sloowly ! + > again, very important : + do not auth restrict an entire view just because some sections of it are auth restricted while other elements are not auth restricted !! which would mess things up ! think sloowly ! + +> your answer should strictly be the code for the App.tsx component +your answer will be directly pasted into the component + +> it should encompasses everything required by the app's App, in one single script +> the store script you will write will wrap the root component of the app ; no need to write the wrapper part ; it will be included later as \` \` , where the is the actual script your will write and export here + +--- +your code should import the provided and described views, as follows : +\`\`\` +/* ... */ +${viewsImportHead} +/* ... */ +\`\`\` + +--- + +> conduct the analysis first, reply iwith the analysis inside of \`\`\`markdown\`\`\` +> then, answer with component code in \`\`\`tsx\`\`\` based on your analysis + +you are a genius + you get $9999`, + }, + { + role: "user", + content: `\`\`\`app:uxsitemap +${yaml.stringify({ + structure: { + views: uxsitemap.structure.views, + }, +})} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`app:app-structure +${yaml.stringify({ + structure: uxdatamap.structure.routes, +})} +\`\`\``, + }, + { + role: `user`, + content: `an example of the overall root App structure is meant to be is as follows ; use it as a reference : +\`\`\`tsx +${boilerplate} +\`\`\` + +--- + +for additional reference if needed (ie. in case of auth conditionals) +the code for the global state store component that wraps the app (including this view you're working on) is defined in the following ; +you can import the store exports if needed by using : \`import {...} from '@/store/main'\` + +\`\`\`@/store/main.tsx +${webapp.react.store.redux.latest.tsx} +\`\`\` +`, + }, + { + role: "user", + content: `make the analysis and implement the tsx component; +> implement the react+tailwind component, fully and working from the get go; +> you are implementing the tsx code for the root App component + +--- +your code should import the provided and described views, as follows : +\`\`\` +/* ... */ +${viewsImportHead} +/* ... */ +\`\`\` + +--- + +> should be React.FC ! important ! +> you should respect the way to build Routes in the provided code snippet ! do not innovate in this regard ! +for reminder, this is the way : + +\`\`\` +import { + Route, + Routes, +} from "react-router-dom"; +[...] + + } /> + } /> + +[...] +\`\`\` +--- + +> do not hallucinate methods or component imports that do not exist ! + all that exists has been provided to you + any required additional actions should be implemented by you ; you are provided with all needed details to implement anything ! + > the global store and its methods is defined in @/store/main.tsx + > the views are defined in @/components/views/[sectionId].tsx + > that's all !! + DO NOT ASSUME OTHER STUFF IS IMPLEMENTED ! + IF YOU NEED TO CALL THE API OR SOMETHING SIMILAR, WRITE YOUR OWN FUNCTIONS INSIDE THIS VIEW !! + IMPLEMENT, DO NOT ASSUME ANYTHING ELSE IS IMPLEMENTED ! + +> conduct the analysis first, reply with the analysis inside of \`\`\`markdown\`\`\` +it should emphasize the full functionalities required and specified in the provided details + + +> then, answer in a react tsx code for the App root component reply in \`\`\`tsx\`\`\` based on your analysis +the code should be complete and fully functional ! + +you are a genius + you get $9999`, + }, + ]; +} + +async function webappRootGenerate({ context, data }) { + const timestamp = `${Date.now()}`; + + const messages = await promptRoot({ context, data }); + + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: messages, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `tsx`], + }); + + const { markdown, tsx } = extraction; + if (!tsx.length) { + throw new Error("webapp:root:generate error - generated tsx is empty"); + } + + const generatedRoot = { + analysis: markdown, + tsx, + timestamp, + }; + + await Promise.all( + [`${timestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:react:root`, + refs: { + id: "app", + version, + }, + }, + type: `end`, + content: { + key: `webapp.react.root.app.${version}`, + data: generatedRoot, + }, + }, + }); + }), + ); + + return { + timestamp, + webapp: { + react: { + root: { + // ie. "views" , "sections" , "store" , "root" + app: { + // ie. {UV_* , SEC_* , redux} , "app" (in case of root) + [timestamp]: generatedRoot, + latest: generatedRoot, + }, + }, + }, + }, + }; +} + +export default { + "WEBAPP:ROOT::GENERATE": webappRootGenerate, +}; diff --git a/cofounder/api/system/functions/webapp/store.js b/cofounder/api/system/functions/webapp/store.js new file mode 100644 index 0000000..03cb597 --- /dev/null +++ b/cofounder/api/system/functions/webapp/store.js @@ -0,0 +1,291 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; + +async function promptStore({ context, data }) { + const { pm, db, backend, uxdatamap } = data; + const { prd, uxdmd, brd } = pm; + + const store = { id: "redux" }; + /* + [system] + */ + + return [ + { + role: `system`, + content: `your role as an expert web app and react senior dev and product manager is to write the code for the ${store.id} store script component based on the provided task; which encompasses all required data states and methods for the app's global states and actions + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full store component tsx code , in between \`\`\`tsx\`\`\`\` section +- dependencies, in between \`\`\`yaml\`\`\`\` section ; where any needed packages imported into the component code and need to be installed will be mentionned ; the yaml should have object : {dependencies : {"package":"version"} } ; (you can also just put "*" for version) +use doublequotes for every string inside the yaml to make sure formatting is good + +--- + +> ask yourself what should be defined in the store component that will be used by all views later , in terms of global state variables and actions + +> your answer should strictly be the code for the store tsx component +your answer will be directly pasted into the component + +> it should encompasses everything required by the app's global store states and actions, in one single script +> the store script you will write will wrap the root component of the app ; no need to write the wrapper part ; it will be included later as \` \` , where the store is the actual script your will write and export here + +--- + +try to use async/await when you can + +> extremely turbo important : +- you can only use the following packages : + - @reduxjs/toolkit + - react-redux + - redux-persist + - socket.io-client + - axios + +- you need to export default and make sure everything else that will be needed by views is exported too ! + +--- + +note : + > if app has auth capabilities, make sure you global state covers auth token + > if app has realtime capabilities, make sure global state covers realtime auth and subscriptions + feel free to consult the provided backend server code to help you figure out how those details should be implemented + +--- + +> important : + the store should strictly handle getting and setting the provided global state variables ! + it should not handle making the other api calls - those parts will be handled by concerned components ! +> again , very important : + the store should strictly handle getting and setting the provided global state variables ! + it should not handle making the other api calls - those parts will be handled by concerned components ! +> super important : + use localstorage to avoid things being lost on refresh ! + +--- +> conduct the analysis first, reply iwith the analysis inside of \`\`\`markdown\`\`\` +> make full complete store component code in \`\`\`tsx\`\`\` based on your analysis +> dependencies, in between \`\`\`yaml\`\`\`\` with object: {dependencies : {package:version}} + +you are a genius + you get $9999`, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\``, + }, + { + role: "user", + content: `\`\`\`UX-analysis-document +${uxdmd} +\`\`\``, + }, + { + role: "user", + content: + `\`\`\`BRD:backend-requirements-document +${brd} +\`\`\` + +` + + (!backend?.requirements?.restApi?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:openAPI +${yaml.stringify(backend.specifications.openapi)} +\`\`\` + +`) + + (!backend?.requirements?.realtimeWebsockets?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:asyncAPI +${yaml.stringify(backend.specifications.asyncapi)} +\`\`\` +` + + ` +--- + +\`\`\`BRD:server:main +${yaml.stringify(backend.server.main)} +\`\`\` + +`), + }, + { + role: "user", + content: `\`\`\`app:architecture +${yaml.stringify(uxdatamap)} +\`\`\``, + }, + { + role: "user", + content: `make the analysis and implement the tsx component; +> implement the ${store.id} store component, fully and working from the get go; + +--- + +try to use async/await when you can + +> extremely turbo important !!! : +- you can only use the following packages : + - @reduxjs/toolkit + - react-redux + - redux-persist + - socket.io-client + - axios + +- you need to export default and make sure everything else that will be needed by views is exported too ! + +--- + +> make sure it has all the required imports !! no missing imports ! +> should export a default method too ! so that it can be imported later as \`import store from '@/store/main'\` ! + + +> important : + the store should strictly: + > handle getting and setting the provided global state variables ! + > if applies , handle realtime events subscriptions + it should not handle making view-specific api calls - those parts will be handled by concerned view components ! +> again, important : + the store should strictly: + > handle getting and setting the provided global state variables ! + > if applies , handle realtime events subscriptions + it should not handle making view-specific api calls - those parts will be handled by concerned view components ! + +> super important : + use localstorage to avoid things being lost on refresh ! + + +> do not assume that anything else is implemented ! +> do not make any assumptions that something else will be plugged here ! +> implement 100% of everything you need to implement ! do not hallucinate importing something that doesnt exist! + +> the store component should work 100% out the box without any further edits ! very important ! + +--- + +important : +> use snake_case for any naming you do + +extremely important : +> ensure full perfect coherence with: backend server methods / events / names, schemas +> field names and schemas epecially + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full store component tsx code , in between \`\`\`tsx\`\`\`\` section +- dependencies, with object {dependencies:{package:version,...}}, in between \`\`\`yaml\`\`\`\` section + +you are a genius + you get $9999`, + }, + ]; +} + +async function webappStoreGenerate({ context, data }) { + const timestamp = `${Date.now()}`; + + const messages = await promptStore({ context, data }); + + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: messages, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `tsx`, `yaml`], + }); + + const { markdown, tsx } = extraction; + if (!tsx.length) { + throw new Error("webapp:store:generate error - generated tsx is empty"); + } + + const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {}; + const generatedStore = { + analysis: markdown, + tsx, + dependencies: parsedYaml.dependencies + ? Object.fromEntries( + Object.keys(parsedYaml.dependencies).map((key) => [key, "*"]), + ) + : [], + timestamp, + }; + + await Promise.all( + [`${timestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:react:store`, + refs: { + id: "redux", + version, + }, + }, + type: `end`, + content: { + key: `webapp.react.store.redux.${version}`, + data: generatedStore, + }, + }, + }); + }), + ); + + if (Object.keys(generatedStore.dependencies).length) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "settings:config:package", + }, + type: `end`, + content: { + key: "settings.config.package", + data: { + webapp: { + dependencies: generatedStore.dependencies, + }, + }, + }, + }, + }); + } + + return { + timestamp, + webapp: { + react: { + store: { + // ie. "views" , "sections" , "store" , "root" + redux: { + // ie. {UV_* , SEC_* , redux} , "app" (in case of root) + [timestamp]: generatedStore, + latest: generatedStore, + }, + }, + }, + }, + }; +} + +export default { + "WEBAPP:STORE::GENERATE": webappStoreGenerate, +}; diff --git a/cofounder/api/system/functions/webapp/view.js b/cofounder/api/system/functions/webapp/view.js new file mode 100644 index 0000000..91a484a --- /dev/null +++ b/cofounder/api/system/functions/webapp/view.js @@ -0,0 +1,1477 @@ +import utils from "@/utils/index.js"; +import yaml from "yaml"; +import fs from "fs"; +import { merge, sample } from "lodash-es"; + +async function webappViewGenerateMulti({ context, data }) { + /* get all view from uxsitemap , start gen */ + const { views } = data.uxsitemap.structure; + + // console.error("______DEBUG_____ : webapp:view:generate:multi : skipping functional pass, testing redesign only ! ! ! ! !",); + const passes = { + functional: true, + redesign: process.env.DESIGNER_ENABLE + ? JSON.parse(process.env.DESIGNER_ENABLE.toLowerCase()) + : false, + }; + + const tasks = [ + ...Object.keys(views.unique).map((viewId) => { + return { + task: { + type: "view", + view: { + type: "unique", + id: viewId, + }, + passes, + }, + }; + }), + ...Object.keys(views.shared).map((viewId) => { + return { + task: { + type: "view", + view: { + type: "shared", + id: viewId, + }, + passes, + }, + }; + }), + ]; + let response = {}; + + // console.error("__DEBUG________ : webapp:view:generate:multi : TASKS SLICED ! ! ! ! ! ! ! ! ! ! ! ! !"); + await Promise.all( + //[sample(tasks)] + // tasks.filter(e=>e.task.view.id.toLowerCase().includes('land')) + tasks.map(async (task) => { + response = merge( + response, + await context.run({ + id: `WEBAPP:VIEW::GENERATE`, + context, + data: { ...data, ...task }, + }), + ); + }), + ); + return response; +} + +async function promptViewFunctional({ context, data }) { + const { pm, backend, uxsitemap, uxdatamap, webapp, task } = data; + const { prd, frd, uxdmd } = pm; + const { view } = task; + /* + should return tsx , packages (if needed) + */ + return [ + { + role: `system`, + content: `your role as an expert react and tailwind senior dev and product manager is to write the code for the react view component based on the provided task; for view ${view.id} + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full view component tsx code , in between \`\`\`tsx\`\`\`\` section +- dependencies, in between \`\`\`yaml\`\`\`\` section ; where any needed npm packages required code and need to be installed will be mentionned ; the yaml should have object : {dependencies : {"package":"version"} } ; (you can also just put "*" for version) +use doublequotes for every string inside the yaml to make sure formatting is good + +--- + +in your analysis , if functions makes use of global app state or makes calls to backend, include a snippet of how the app state store or backend code handles the functions (check the provided codes) before you get to implementing the function - this will help you reason better through it and provide good justification on how to structure your functions ; + +--- + +- in case you need temporary images or media, use a https://picsum.photos/ url with a random seed +no placeholder no hallucinated import of some local asset or image or component ... - do not make any assumptions about what is in the project other than strictly what it provided ! no hallucinations , no assumptions ! + +- in case you need to Link to other paths in the app (as described in the provided uxsitemaps), use (from : \`import { Link } from "react-router-dom"\` ) +- super important : + > if you link to other paths in the app, use \`import { Link } from "react-router-dom"\` !! + +--- + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +> any backend server calls should be to the dev url specified in the provided docs (typically http://localhost:1337/* unless specified otherwise) + +--- + +super important : +> use snake_case for any new naming you do + +extremely important : +> ensure full perfect coherence with: backend server and global app store : methods / events / names / schemas ... +> field names and schemas epecially +> everything should be perfectly coherent and functional + +--- + +> you are required to write the code for the full view, and for it to be fully functional +> no placeholders, no hallucinated imports, no assumptions that anything else has been implement , no missing imports ! + perfect working functional view component code with 100% of everything needed + +> very important : as long as every single requirements is in your generated code ! no hallucinated or assumed imports ! write and implement every single thing needed for this view ! + +you are a genius + you get $9999`, + }, + { + role: "user", + content: `\`\`\`PRD:product-requirements-document +${prd} +\`\`\` + +--- + +\`\`\`FRD:features-requirements-document +${frd} +\`\`\` +`, + }, + { + role: "user", + content: `\`\`\`UX:analysis-document +${uxdmd} +\`\`\``, + }, + { + role: `user`, + content: `writing code for the app view ${view.id} , defined in the following: +\`\`\` +${yaml.stringify(view)} +\`\`\``, + }, + { + role: "user", + content: + `` + + (!backend?.requirements?.restApi?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:openAPI +${yaml.stringify(backend.specifications.openapi)} +\`\`\` + +`) + + (!backend?.requirements?.realtimeWebsockets?.required + ? "" + : `--- +\`\`\`BACKEND:specifications:asyncAPI +${yaml.stringify(backend.specifications.asyncapi)} +\`\`\` +` + + ` +--- + +\`\`\`BRD:server:main.js +${yaml.stringify(backend.server.main)} +\`\`\` + +`), + }, + { + role: `user`, + content: `the data states architecture for the ${view.id} alongside its relationships with the app architecture : +\`\`\`webapp:architecture +${yaml.stringify({ + architecture: { + ...uxdatamap.structure, + crosslinks: uxsitemap.structure.crosslinks, + }, + viewToImplement: view, +})} +\`\`\``, + }, + { + role: "user", + content: `for additional reference (if needed): +the root app component that wraps this view: + +\`\`\`@/App.tsx +${webapp.react.root.app.latest.tsx} +\`\`\` +--- + +the global state store component that wraps the app (including this view you're working on) is defined in the following ; +you can import the store exports if needed by using : \`import {...} from '@/store/main'\` + +\`\`\`@/store/main.tsx +${webapp.react.store.redux.latest.tsx} +\`\`\` +`, + }, + { + role: `user`, + content: `make the analysis and implement the tsx component; +> implement the react+tailwind component, fully and working from the get go; +> you are implementing the tsx code for view component : ${view.id} +> should be React.FC ! important ! + +- important : in case you need to link to other paths in the app (as described in the provided uxsitemaps), use (from : \`import { Link } from "react-router-dom"\` ) + +--- + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +> do not hallucinate methods or component imports that do not exist ! + all that exists has been provided to you + + any required additional actions should be implemented by you ; you are provided with all needed details to implement anything ! + > the global store and its methods is defined in @/store/main.tsx + > that's all !! + + DO NOT ASSUME OTHER STUFF IS IMPLEMENTED ! + + IF YOU NEED TO CALL THE BACKEND SERVER (whether for API / realtime websockets / ... ) OR SOMETHING SIMILAR, WRITE YOUR OWN COMPLETE FUNCTIONS INSIDE THIS VIEW !! + + do not write placeholders or imports from any "components to make" - all there is is the script you write so make it have 100% of everything needed + IMPLEMENT EVERYTHING NEEDED IN THIS SCRIPT, DO NOT ASSUME ANYTHING ELSE IS IMPLEMENTED OR WILL BE IMPLEMENTED BESIDES YOUR CODE ! + + do not hallucinate any imports - no hallucinated imports of local assets or images or components ... + no hallucinated imports ! no placeholders ! no assumptions that something exists ! + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full view component tsx code , in between \`\`\`tsx\`\`\`\` section +- dependencies, for npm packages, with {dependencies:{package:version,...}}, in between \`\`\`yaml\`\`\`\` section + +you are a genius + you get $9999`, + }, + ].filter((e) => e); +} + +async function promptViewRedesign({ context, data }) { + /* + data : { + task : { + type , + view : { type , id , details, datamap , tsx }, + rag, + guidance { docs : { [usedPrimitiveId(s)] : "...mdx docs content..." } } || false, + layout : {analysis,render{svg,image{base64?,url?,local?}}}, + }, + } + */ + const { view, rag, guidance, layout } = data.task; + const { details } = data.pm; + const { tsx } = view; + const { render } = layout; + /* + DONT FORGET THE AESTHETICS OBJECT ! (see old code.js again) + */ + return [ + { + role: "system", + content: `your role as an expert react design engineer is to redesign and write the code for the react + tailwind view component based on the provided design task ; for view ${view.id} + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full view component tsx code of redesigned view , in between \`\`\`tsx\`\`\`\` section +- dependencies, in between \`\`\`yaml\`\`\`\` section ; where any needed npm packages required code and need to be installed will be mentionned ; the yaml should have object : {dependencies : {"package":"version"} } ; (you can also just put "*" for version) +use doublequotes for every string inside the yaml to make sure formatting is good + +--- + +- in case you need temporary images or media, use a https://picsum.photos/ url with a random seed +no placeholder no hallucinated import of some local asset or image or component ... - do not make any assumptions about what is in the project other than strictly what it provided ! no hallucinations , no assumptions ! + +- in case you need to use icons, you can use icons from \`lucide-react\` ; but make sure they are icons you know 100% exist there ! no hallucinated icon names ! no assumptions ! + +- in case you need to Link to other paths in the app, use (from : \`import { Link } from "react-router-dom"\` ) +- super important : + > if you link to other paths in the app, use \`import { Link } from "react-router-dom"\` !! + +--- + + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +super important : +- your redesigned component should keep 100% of its functionalities from the previous view code version ; +- your role here is to redesign the component based on provided instructions +- keep in mind responsiveness + +--- + + +> you are required to write the code for the full view, and for it to be fully functional +> no placeholders, no hallucinated imports, no assumptions that anything else has been implement , no missing imports ! + perfect working functional view component code with 100% of everything needed + +> very important : + every single functionality is kept is in your redesigned view code ! + no hallucinated or assumed imports ! + write and implement every single thing needed for this view ! + +you are a genius +redesign the provided view component +you get $9999`, + }, + guidance?.docs && { + role: `user`, + content: `to help you in your task, you can refer to components code docs provided below : + +\`\`\` +${yaml.stringify({ docs: guidance.docs })} +\`\`\` + +------- + +super important + +you can use it docs reference when you judge it is good to do so ; +but use it as a reference when it makes sense to do so ! use your best judgement in all cases ! + +`, + }, + render?.image && + (render?.image?.url?.length || + render?.image?.base64?.length || + render?.image?.local?.length) && { + role: `user`, + content: [ + { + type: "text", + text: `the (desktop) design mockup of the view ${view.id} is as follows : + +you can use it as a reference when you judge it is good to do so ; +(you should also ensure mobile responsive while making it) + +important : use it as a reference when it makes sense to do so ! use your best judgement ! + +\`\`\`layout:design:mockup:figma-layers-export +${yaml.stringify({ + layers: render.svg.structure.svg.rect.map((item) => { + return { + primitiveType: item.$.primitiveId, + description: item.$.description, + _mockupCoords: { + x: item.$.x, + y: item.$.y, + w: item.$.width, + h: item.$.height, + }, + }; + }), +})} +\`\`\` +`, + }, + render?.image && + (render?.image?.url?.length || + render?.image?.base64?.length || + render?.image?.local?.length) && { + type: `image_url`, + image_url: { + url: render.image.url + ? render.image.url + : render.image.base64 + ? render.image.base64 + : render.image.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(render.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + { + role: "user", + content: `the code of the view ${view.id} that you are tasked to redesign is as follows : +\`\`\`${view.id}.tsx +${tsx} +\`\`\` + + +super important : +> your redesig should be perfectly congruent with the original view's features ; +> do not hallucinate features that the original view does not have ! do not take the freedom to add shit that isn't there ; things would break ! respect the task and strictly the task ! + +`, + }, + details?.design?.aesthetics?.text?.length && { + role: `user`, + content: `additionally - if it is any help, the design aesthetics instructions for the app are : + +${details.design.aesthetics.text}`, + }, + { + role: "user", + content: `make the analysis and implement the redesigned tsx component; +> redesign the react+tailwind component, fully and working from the get go; +> you are redesigning the tsx code for view component : ${view.id} +> should be React.FC ! important ! + +--- + + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +> do not hallucinate methods or component imports that do not exist ! + all that exists has been provided to you + DO NOT ASSUME OTHER STUFF IS IMPLEMENTED UNLESS IT WAS CLEARLY AND PRECISELY PROVIDED IN EXAMPLES OR DOCUMENTATION ! + NO ASSUMPTIONS ! + + do not write placeholders or imports from any "components to make" + all there is is the script you write so make it have 100% of everything needed + IMPLEMENT EVERYTHING NEEDED IN THIS SCRIPT, DO NOT ASSUME ANYTHING ELSE IS IMPLEMENTED OR WILL BE IMPLEMENTED BESIDES YOUR CODE AND EXACTLY WHAT WAS PROVIDED IN DOCS ! + + do not hallucinate any imports - no hallucinated imports of local assets or images or components ... + no hallucinated imports ! no placeholders ! no assumptions that something exists ! + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full redesigned view component tsx code , in between \`\`\`tsx\`\`\`\` section +- dependencies, for npm packages, with {dependencies:{package:version,...}}, in between \`\`\`yaml\`\`\`\` section + +you are a genius +redesign the provided view and implement its full code +you get $9999`, + }, + ].filter((e) => e); +} + +async function webappViewGenerate({ context, data }) { + /* + data : { + ...data , + task : { + type: "view", + view: { type : "unique || shared" , id }, + passes: { + functional : true, + redesign : true, + } + } + } + */ + const timestamp = `${Date.now()}`; + + const { task } = data; + const { view, passes } = task; + + /* + passes : { functional:bool , redesign:bool } + if functional only, clear + if redesign only, svgPrompt -> recodePrompt + if both , parallel { functional , svg } -> recodePrompt + */ + + data.task.view = { + ...data.task.view, + details: data.uxsitemap.structure.views[task.view.type][task.view.id], + datamap: data.uxdatamap.views[task.view.type][task.view.id], + }; + + /* + should merge with data.webapp at every pass ! + */ + + if (passes.functional) { + const messagesFunctional = await promptViewFunctional({ + context, + data, + }); + + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: messagesFunctional, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `tsx`, `yaml`], + }); + + const { markdown, tsx } = extraction; + if (!tsx.length) { + throw new Error("webapp:view:generate error - generated tsx is empty"); + } + + const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {}; + const generatedView = { + analysis: markdown, + tsx, + dependencies: parsedYaml.dependencies + ? Object.fromEntries( + Object.keys(parsedYaml.dependencies).map((key) => [key, "*"]), + ) + : [], + timestamp, + }; + + await Promise.all( + [`${timestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:react:views`, + refs: { + id: view.id, + version, + }, + }, + type: `end`, + content: { + key: `webapp.react.views.${view.id}.${version}`, + data: generatedView, + }, + }, + }); + }), + ); + + if (Object.keys(generatedView.dependencies).length) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "settings:config:package", + }, + type: `end`, + content: { + key: "settings.config.package", + data: { + webapp: { + dependencies: generatedView.dependencies, + }, + }, + }, + }, + }); + } + + data.webapp = merge(data.webapp, { + react: { + views: { + // ie. "views" , "sections" , "store" , "root" + [view.id]: { + // ie. {UV_* , SEC_* , redux} , "app" (in case of root) + [timestamp]: generatedView, + latest: generatedView, + }, + }, + }, + }); + } + + if (passes.redesign) { + /* + svg pass (handled in DESIGNER:LAYOUTV1::VIEW:GENERATE) + */ + + const redesignTimestamp = `${Date.now()}`; + + const designerResponse = await context.run({ + id: "DESIGNER:LAYOUTV1::VIEW:GENERATE", + context, + data: { + ...data, + timestamp: redesignTimestamp, // to keep versions congruent + }, + }); // -> { designer {rag,guidance} , webapp { layout { views { [id] { [version] : { analysis , render{ svg,image } } } } } } } + + /* + merge (op:state:update already handled in designer:layoutv1) + */ + data.webapp = merge(data.webapp, designerResponse.webapp); + // console.dir({ designerResponse } , {depth:null }) ; process.exit(); + const { rag, guidance } = designerResponse.designer; + let primitivesIds = []; + try { + primitivesIds = [ + ...new Set( + designerResponse.webapp.layout.views[ + task.view.id + ].latest.render.svg.structure.svg.rect + .filter((item) => item.$?.primitiveId) + .map((item) => item.$.primitiveId), + ), + ]; + } catch (e) { + console.error(`webapp:view:generate:pass:redesign : ${e}`); + } + + data.task.view.tsx = data.webapp.react.views[task.view.id].latest.tsx; + const redesignTask = { + ...data.task, // type , view{type,id,details,datamap,tsx} + rag, + guidance: + guidance && guidance.docs?.primitives + ? { + docs: Object.fromEntries( + Object.entries( + Object.entries(guidance.docs.primitives) + .filter(([key]) => primitivesIds.includes(key)) + .reduce((acc, [key, value]) => { + if (!acc[value]) { + acc[value] = key; + } else { + acc[value] += ` , ${key}`; + } + return acc; + }, {}), + ).map(([value, keys]) => [keys, value]), + ), + } // filters out duplicates docs (ie. button , button_icon_only , button_secondary , ... share same docs) + : false, + layout: designerResponse.webapp.layout.views[task.view.id].latest, //{analysis,render{svg,image{base64?,url?,local?}}} + }; + + /* + recode pass (handled here with promptViewRedesign ) + make use of guidance (and rag?) ; since guidance will have design system docs that filter out whats needed ! + guidance { ontology{primitives{[ids]}} , image{base64,url} , docs{ primitives{ [id] : "... mdx content ..." } } } + */ + /* + in dependencies , filter out weird dependencies if exist like "@/components/..." + */ + + /* + use : redesignTimestamp !! + merge with data.webapp , {...react}: + op:state::update react + */ + + const messagesRedesign = await promptViewRedesign({ + context, + data: { + ...data, + task: redesignTask, + }, + }); + + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: messagesRedesign, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `tsx`, `yaml`], + }); + + const { markdown, tsx } = extraction; + if (!tsx.length) { + throw new Error("webapp:view:generate error - generated tsx is empty"); + } + + const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {}; + const generatedView = { + analysis: markdown, + tsx, + dependencies: parsedYaml.dependencies + ? Object.fromEntries( + Object.keys(parsedYaml.dependencies).map((key) => [key, "*"]), + ) + : [], + timestamp: redesignTimestamp, + }; + + await Promise.all( + [`${redesignTimestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:react:views`, + refs: { + id: view.id, + version, + }, + }, + type: `end`, + content: { + key: `webapp.react.views.${view.id}.${version}`, + data: generatedView, + }, + }, + }); + }), + ); + + if (Object.keys(generatedView.dependencies).length) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "settings:config:package", + }, + type: `end`, + content: { + key: "settings.config.package", + data: { + webapp: { + dependencies: generatedView.dependencies, + }, + }, + }, + }, + }); + } + + data.webapp = merge(data.webapp, { + react: { + views: { + // ie. "views" , "sections" , "store" , "root" + [view.id]: { + // ie. {UV_* , SEC_* , redux} , "app" (in case of root) + [redesignTimestamp]: generatedView, + latest: generatedView, + }, + }, + }, + }); + } + + return { webapp: data.webapp }; +} + +async function promptIterateNoDesigner({ context, data }) { + /* + prompt with : + current screenshot?.base64? + tsx + user notes text + */ + const { task } = data; + const { view, iteration } = task; + const { notes, screenshot } = iteration; + const { tsx } = view; + const { details } = data.pm; + + return [ + { + role: "system", + content: `your role as an expert react design engineer is to redesign and write the code for the react + tailwind view component based on the provided design task ; for view ${view.id} + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full view component tsx code of redesigned view , in between \`\`\`tsx\`\`\`\` section +- dependencies, in between \`\`\`yaml\`\`\`\` section ; where any needed npm packages required code and need to be installed will be mentionned ; the yaml should have object : {dependencies : {"package":"version"} } ; (you can also just put "*" for version) +use doublequotes for every string inside the yaml to make sure formatting is good + +--- + +- in case you need temporary images or media, use a https://picsum.photos/ url with a random seed +no placeholder no hallucinated import of some local asset or image or component ... - do not make any assumptions about what is in the project other than strictly what it provided ! no hallucinations , no assumptions ! + +- in case you need to use icons, you can use icons from \`lucide-react\` ; but make sure they are icons you know 100% exist there ! no hallucinated icon names ! no assumptions ! + +- in case you need to Link to other paths in the app, use (from : \`import { Link } from "react-router-dom"\` ) +- super important : + > if you link to other paths in the app, use \`import { Link } from "react-router-dom"\` !! + +--- + + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +super important : +- your redesigned component should keep 100% of its functionalities from the previous view code version ; +- your role here is to redesign the component based on provided instructions +- keep in mind responsiveness + +--- + + +> you are required to write the code for the full view, and for it to be fully functional +> no placeholders, no hallucinated imports, no assumptions that anything else has been implement , no missing imports ! + perfect working functional view component code with 100% of everything needed + +> very important : + every single functionality is kept is in your redesigned view code ! + no hallucinated or assumed imports ! + write and implement every single thing needed for this view ! + +you are a genius +redesign the provided view component +you get $9999`, + }, + screenshot && + (screenshot?.url?.length || + screenshot?.base64?.length || + screenshot?.local?.length) && { + role: `user`, + content: [ + { + type: "text", + text: `a screenshot of the current view render : `, + }, + screenshot && + (screenshot?.url?.length || + screenshot?.base64?.length || + screenshot?.local?.length) && { + type: `image_url`, + image_url: { + url: screenshot.url + ? screenshot.url + : screenshot.base64 + ? screenshot.base64 + : screenshot.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(render.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + { + role: "user", + content: `the code of the view ${view.id} that you are tasked to redesign is as follows : +\`\`\`${view.id}.tsx +${tsx} +\`\`\` + +--- + +super important : +> your redesign should be perfectly congruent with the original view's features ; +> do not hallucinate features that the original view does not have ! do not take the freedom to add stuff that isn't there ; things would break ! respect the task and strictly the task ! + +`, + }, + details?.design?.aesthetics?.text?.length && { + role: `user`, + content: `additionally - if it is any help - the original design aesthetics instructions for the app were : + +\`\`\` +${details.design.aesthetics.text} +\`\`\` +`, + }, + notes?.text?.length && { + role: `user`, + content: `the new redesign instructions - the most important part of your task - are the following : + +\`\`\`view:redesign:instructions +${notes.text} +\`\`\` + +`, + }, + { + role: "user", + content: `make the analysis and implement the redesigned tsx component; +> redesign the react+tailwind component, fully and working from the get go; +> you are redesigning the tsx code for view component : ${view.id} +> should be React.FC ! important ! + +--- + + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +> do not hallucinate methods or component imports that do not exist ! + all that exists has been provided to you + DO NOT ASSUME OTHER STUFF IS IMPLEMENTED UNLESS IT WAS CLEARLY AND PRECISELY PROVIDED IN EXAMPLES OR DOCUMENTATION ! + NO ASSUMPTIONS ! + + do not write placeholders or imports from any "components to make" + all there is is the script you write so make it have 100% of everything needed + IMPLEMENT EVERYTHING NEEDED IN THIS SCRIPT, DO NOT ASSUME ANYTHING ELSE IS IMPLEMENTED OR WILL BE IMPLEMENTED BESIDES YOUR CODE AND EXACTLY WHAT WAS PROVIDED IN DOCS ! + + do not hallucinate any imports - no hallucinated imports of local assets or images or components ... + no hallucinated imports ! no placeholders ! no assumptions that something exists ! + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full redesigned view component tsx code , in between \`\`\`tsx\`\`\`\` section +- dependencies, for npm packages, with {dependencies:{package:version,...}}, in between \`\`\`yaml\`\`\`\` section + +you are a genius +redesign the provided view and implement its full code +you get $9999`, + }, + ].filter((e) => e); +} + +async function promptIterateWithDesigner({ context, data }) { + /* + prompt with : + current screenshot?.base64? + tsx + suggested designer layout render + user notes text + */ + const { task } = data; + const { view, iteration, rag, guidance, layout } = task; + const { render } = layout; + const { notes, screenshot } = iteration; + const { tsx } = view; + const { details } = data.pm; + + return [ + { + role: "system", + content: `your role as an expert react design engineer is to redesign and write the code for the react + tailwind view component based on the provided design task ; for view ${view.id} + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full view component tsx code of redesigned view , in between \`\`\`tsx\`\`\`\` section +- dependencies, in between \`\`\`yaml\`\`\`\` section ; where any needed packages imported into the component code and need to be installed will be mentionned ; the yaml should have object : {dependencies : {"package":"version"} } ; (you can also just put "*" for version) +use doublequotes for every string inside the yaml to make sure formatting is good + +--- + +- in case you need temporary images or media, use a https://picsum.photos/ url with a random seed +no placeholder no hallucinated import of some local asset or image or component ... - do not make any assumptions about what is in the project other than strictly what it provided ! no hallucinations , no assumptions ! + +- in case you need to use icons, you can use icons from \`lucide-react\` ; but make sure they are icons you know 100% exist there ! no hallucinated icon names ! no assumptions ! + +- in case you need to Link to other paths in the app, use (from : \`import { Link } from "react-router-dom"\` ) +- super important : + > if you link to other paths in the app, use \`import { Link } from "react-router-dom"\` !! + +--- + + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +super important : +- your redesigned component should keep 100% of its functionalities from the previous view code version ; +- your role here is to redesign the component based on provided instructions +- keep in mind responsiveness + +--- + + +> you are required to write the code for the full view, and for it to be fully functional +> no placeholders, no hallucinated imports, no assumptions that anything else has been implement , no missing imports ! + perfect working functional view component code with 100% of everything needed + +> very important : + every single functionality is kept is in your redesigned view code ! + no hallucinated or assumed imports ! + write and implement every single thing needed for this view ! + +you are a genius +redesign the provided view component +you get $9999`, + }, + screenshot && + (screenshot?.url?.length || + screenshot?.base64?.length || + screenshot?.local?.length) && { + role: `user`, + content: [ + { + type: "text", + text: `a screenshot of the current view render to redesign : `, + }, + screenshot && + (screenshot?.url?.length || + screenshot?.base64?.length || + screenshot?.local?.length) && { + type: `image_url`, + image_url: { + url: screenshot.url + ? screenshot.url + : screenshot.base64 + ? screenshot.base64 + : screenshot.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(render.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + guidance?.docs && { + role: `user`, + content: `to help you in your redesign task, you can refer to components code docs provided below : + +\`\`\` +${yaml.stringify({ docs: guidance.docs })} +\`\`\` + +------- + +super important + +you can use it docs reference when you judge it is good to do so ; +but use it as a reference when it makes sense to do so ! use your best judgement in all cases ! + +`, + }, + render?.image && + (render?.image?.url?.length || + render?.image?.base64?.length || + render?.image?.local?.length) && { + role: `user`, + content: [ + { + type: "text", + text: `the new suggested redesign mockup of the view ${view.id} is as follows : + +you can use it as a reference when you judge it is good to do so ; +(you should also ensure mobile responsive while making it) + +important : use it as a reference when it makes sense to do so ! use your best judgement ! + +\`\`\`layout:design:mockup:figma-layers-export +${yaml.stringify({ + layers: render.svg.structure.svg.rect.map((item) => { + return { + primitiveType: item.$.primitiveId, + description: item.$.description, + _mockupCoords: { + x: item.$.x, + y: item.$.y, + w: item.$.width, + h: item.$.height, + }, + }; + }), +})} +\`\`\` +`, + }, + render?.image && + (render?.image?.url?.length || + render?.image?.base64?.length || + render?.image?.local?.length) && { + type: `image_url`, + image_url: { + url: render.image.url + ? render.image.url + : render.image.base64 + ? render.image.base64 + : render.image.local + ? `data:image/png;base64,${Buffer.from(fs.readFileSync(render.image.local)).toString("base64")}` + : "", + // detail: `high`, + }, + }, + ].filter((e) => e), + }, + + { + role: "user", + content: `the code of the view ${view.id} that you are tasked to redesign is as follows : +\`\`\`${view.id}.tsx +${tsx} +\`\`\` + +--- + +super important : +> your redesign should be perfectly congruent with the original view's features ; +> do not hallucinate features that the original view does not have ! do not take the freedom to add stuff that isn't there ; things would break ! respect the task and strictly the task ! + +`, + }, + details?.design?.aesthetics?.text?.length && { + role: `user`, + content: `additionally - if it is any help - the original design aesthetics instructions for the app were : + +\`\`\` +${details.design.aesthetics.text} +\`\`\` +`, + }, + notes?.text?.length && { + role: `user`, + content: `the new redesign instructions ( on which the new redesign mockup are based ) are the following : + +\`\`\`view:redesign:instructions +${notes.text} +\`\`\` + +`, + }, + { + role: "user", + content: `make the analysis and implement the redesigned tsx component; +> redesign the react+tailwind component, fully and working from the get go; +> you are redesigning the tsx code for view component : ${view.id} +> should be React.FC ! important ! + +--- + + +- super important : +> render all the html nodes with one single big (<>...) that is returned by the default React.FC() view component +> do not split html nodes renders as functions ; use one very big (<>...) returned by the default component + use conditionals inside it when you need to, but no splitting render sections by functions - one big render block + +--- + +> do not hallucinate methods or component imports that do not exist ! + all that exists has been provided to you + DO NOT ASSUME OTHER STUFF IS IMPLEMENTED UNLESS IT WAS CLEARLY AND PRECISELY PROVIDED IN EXAMPLES OR DOCUMENTATION ! + NO ASSUMPTIONS ! + + do not write placeholders or imports from any "components to make" + all there is is the script you write so make it have 100% of everything needed + IMPLEMENT EVERYTHING NEEDED IN THIS SCRIPT, DO NOT ASSUME ANYTHING ELSE IS IMPLEMENTED OR WILL BE IMPLEMENTED BESIDES YOUR CODE AND EXACTLY WHAT WAS PROVIDED IN DOCS ! + + do not hallucinate any imports - no hallucinated imports of local assets or images or components ... + no hallucinated imports ! no placeholders ! no assumptions that something exists ! + +--- + +- analysis , in between \`\`\`markdown\`\`\`\` section +- full redesigned view component tsx code , in between \`\`\`tsx\`\`\`\` section +- dependencies, with {dependencies:{package:version,...}}, in between \`\`\`yaml\`\`\`\` section + +you are a genius +redesign the provided view and implement its full code +you get $9999`, + }, + ].filter((e) => e); +} + +//async function webappViewRedesign({ context, data }) {} +async function webappViewIterate({ context, data }) { + const timestamp = `${Date.now()}`; + + const { task } = data; + const { view, iteration } = task; + const { id, version } = view; + const { designer } = iteration; + + const tsx = data.webapp.react.views[task.view.id][version].tsx; + + // if designer , call designer/layoutv1/iterate + /* + if no designer, just have a prompt : promptIterateNoDesigner + if designer : + call designer/layoutv1/iterate , where it will do analysis+svg in one single pass + have ragText + user notes -> rag + have screenshot there too for ref + call promptIterateWithDesigner + */ + + // console.dir({"debug:webapp:view:iterate" : {task}},{depth:null}) + + data.task.view = { + ...data.task.view, + tsx, + details: data.uxsitemap.structure.views[task.view.type][task.view.id], + datamap: data.uxdatamap.views[task.view.type][task.view.id], + }; + + if (!designer) { + const promptMessagesNoDesigner = await promptIterateNoDesigner({ + context, + data, + }); + + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: promptMessagesNoDesigner, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `tsx`, `yaml`], + }); + + const { markdown, tsx } = extraction; + if (!tsx.length) { + throw new Error("webapp:view:generate error - generated tsx is empty"); + } + + const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {}; + const generatedView = { + analysis: markdown, + tsx, + dependencies: parsedYaml.dependencies + ? Object.fromEntries( + Object.keys(parsedYaml.dependencies).map((key) => [key, "*"]), + ) + : [], + timestamp, + }; + + await Promise.all( + [`${timestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:react:views`, + refs: { + id: view.id, + version, + }, + }, + type: `end`, + content: { + key: `webapp.react.views.${view.id}.${version}`, + data: generatedView, + }, + }, + }); + }), + ); + + if (Object.keys(generatedView.dependencies).length) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "settings:config:package", + }, + type: `end`, + content: { + key: "settings.config.package", + data: { + webapp: { + dependencies: generatedView.dependencies, + }, + }, + }, + }, + }); + } + + data.webapp = merge(data.webapp, { + react: { + views: { + // ie. "views" , "sections" , "store" , "root" + [view.id]: { + // ie. {UV_* , SEC_* , redux} , "app" (in case of root) + [timestamp]: generatedView, + latest: generatedView, + }, + }, + }, + }); + } else { + const redesignTimestamp = `${timestamp}`; + + const designerResponse = await context.run({ + id: "DESIGNER:LAYOUTV1::VIEW:ITERATE", + context, + data: { + ...data, + timestamp: redesignTimestamp, // to keep versions congruent + }, + }); // -> { designer {rag,guidance} , webapp { layout { views { [id] { [version] : { analysis , render{ svg,image } } } } } } } + + /* + merge (op:state:update already handled in designer:layoutv1) + */ + data.webapp = merge(data.webapp, designerResponse.webapp); + // console.dir({ designerResponse } , {depth:null }) ; process.exit(); + const { rag, guidance } = designerResponse.designer; + let primitivesIds = []; + try { + primitivesIds = [ + ...new Set( + designerResponse.webapp.layout.views[ + task.view.id + ].latest.render.svg.structure.svg.rect + .filter((item) => item.$?.primitiveId) + .map((item) => item.$.primitiveId), + ), + ]; + } catch (e) { + console.error(`webapp:view:generate:pass:redesign : ${e}`); + } + + const redesignTask = { + ...data.task, // type , view{type,id,details,datamap,tsx} , iteration{notes,screenshot} + rag, + guidance: + guidance && guidance.docs?.primitives + ? { + docs: Object.fromEntries( + Object.entries( + Object.entries(guidance.docs.primitives) + .filter(([key]) => primitivesIds.includes(key)) + .reduce((acc, [key, value]) => { + if (!acc[value]) { + acc[value] = key; + } else { + acc[value] += ` , ${key}`; + } + return acc; + }, {}), + ).map(([value, keys]) => [keys, value]), + ), + } // filters out duplicates docs (ie. button , button_icon_only , button_secondary , ... share same docs) + : false, + layout: designerResponse.webapp.layout.views[task.view.id].latest, //{analysis,render{svg,image{base64?,url?,local?}}} + }; + + const mesagesIterateWithDesigner = await promptIterateWithDesigner({ + context, + data: { + ...data, + task: redesignTask, + }, + }); + + const { generated } = await context.run({ + id: "op:LLM::GEN", + context, + data: { + model: `chatgpt-4o-latest`, //`gpt-4o`, + messages: mesagesIterateWithDesigner, + preparser: false, + parser: false, + }, + }); + + const extraction = await utils.parsers.extract.backticksMultiple({ + text: generated, + delimiters: [`markdown`, `tsx`, `yaml`], + }); + + const { markdown, tsx } = extraction; + if (!tsx.length) { + throw new Error("webapp:view:generate error - generated tsx is empty"); + } + + const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {}; + const generatedView = { + analysis: markdown, + tsx, + dependencies: parsedYaml.dependencies + ? Object.fromEntries( + Object.keys(parsedYaml.dependencies).map((key) => [key, "*"]), + ) + : [], + timestamp: redesignTimestamp, + }; + + await Promise.all( + [`${redesignTimestamp}`, `latest`].map(async (version) => { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: `webapp:react:views`, + refs: { + id: view.id, + version, + }, + }, + type: `end`, + content: { + key: `webapp.react.views.${view.id}.${version}`, + data: generatedView, + }, + }, + }); + }), + ); + + if (Object.keys(generatedView.dependencies).length) { + await context.run({ + id: "op:PROJECT::STATE:UPDATE", + context, + data: { + operation: { + id: "settings:config:package", + }, + type: `end`, + content: { + key: "settings.config.package", + data: { + webapp: { + dependencies: generatedView.dependencies, + }, + }, + }, + }, + }); + } + + data.webapp = merge(data.webapp, { + react: { + views: { + // ie. "views" , "sections" , "store" , "root" + [view.id]: { + // ie. {UV_* , SEC_* , redux} , "app" (in case of root) + [redesignTimestamp]: generatedView, + latest: generatedView, + }, + }, + }, + }); + } + + return { webapp: data.webapp }; +} + +export default { + "WEBAPP:VIEW::GENERATE:MULTI": webappViewGenerateMulti, + "WEBAPP:VIEW::GENERATE": webappViewGenerate, + //"WEBAPP:VIEW::REDESIGN": webappViewRedesign, + "WEBAPP:VIEW::ITERATE": webappViewIterate, +}; diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/README.md b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/README.md new file mode 100644 index 0000000..4af35cd --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/README.md @@ -0,0 +1,10 @@ +## Notes + +This is a demo design system and will be replaced on official post-alpha release + +## Credits + +Renders dumped from Figma Presets: + +- Blocks.pm by Hexa Plugin +- Google Material & Figma Core Design systems diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/.gitignore b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/grid.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..6132bbe72b9e26a03b5cdbc86b33ab9a2ce02b30 GIT binary patch literal 232708 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

O#rd3Qp83L*bV$#T0O#DNo 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 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/ontology.yaml b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/ontology.yaml new file mode 100644 index 0000000..2bfe50d --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/ontology.yaml @@ -0,0 +1,73 @@ +primitives: + - id: heading + description: A primary heading for sectional content + - id: subheading + description: A secondary heading for a subsection of content + - id: text_line + description: A single line of text + - id: text_paragraph + description: A block of text longer than a line + - id: button + description: A clickable element used to perform actions + stretch: true + - id: link + description: A hyperlink pointing to another resource + - id: tag + description: An small capsule for categorizing or labeling - can also be used as a small status indicator or be clickable + - id: avatar + description: A graphical representation of either a user or brand, typically a photo or icon + - id: image + description: An element to display pictures or graphics + stretch: true + - id: icon + description: A graphical representation of an idea, action, or object + - id: input_datepicker + stretch: true + description: A control allowing the user to select a specific date + - id: input_description + stretch: true + description: An informational text describing an input field + - id: input_field + stretch: true + description: An input area where the user can enter text + - id: input_label + description: A label associated with an input field to describe its purpose + - id: input_searchfield + stretch: true + description: An input field specifically for search queries + - id: input_select + stretch: true + description: A dropdown menu allowing the user to choose from a list of options + - id: input_textarea + stretch: true + description: An input field for entering multi-line text + - id: radio_button + description: A control allowing the user to select one option from a group + - id: checkbox + description: A control that allows the user to select or deselect an option + - id: switch + description: A control allowing the user to toggle between two states + - id: slider + description: A control for selecting a value from a range + - id: media + description: An element for embedding video or audio + stretch: true + - id: map + description: A graphical representation of geographical information + stretch: true + - id: badge + description: A round indicator with a number inside it, used for example for counting or tracking + - id: calendar + description: A graphical representation of a calendar + stretch: true + - id: code_block + description: A block for displaying formatted code + stretch: true + - id: button_fab + description: A floating action round button that is sticky and fixed to the bottom right corner of the page + - id: progress_bar + description: A horizontal bar indicating progress toward completion + stretch: true + - id: nonprimitive + description: A placeholder for non-primitive components that should be designed based on description + stretch: true diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/avatar.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7c931f25432526c41e1ddd21dfa588b02b8360 GIT binary patch literal 3225 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 LNkvXXu0mjfXtE19 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/avatar_block.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/avatar_block.png new file mode 100644 index 0000000000000000000000000000000000000000..8443ad6924ae1046b9339c8633ab3f666ccccc62 GIT binary patch literal 11698 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 Y!R(Ar6QT0wUw69uhURzbA(^b literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/button.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/button.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c3693e1f52d5e7c8465c5d06193d999a8b92bc GIT binary patch literal 2471 zcmb7Gc{tnI8vaG?wA!krrs1k-MWZBD?MN%J6qObgu`e-9H!9p%GGnRC+zv&{v=Nl1 zL6MS(YN!&Ogfg}o6_Kb|+G~l5rA3q|z3IRAzxm^w_dW0V-se2$oacMKFYA)0+ip!G zO#lFPyPrRY0RWJpf?rlwRm=r0U(6Mt5qCZ?9sn#ad>f!j`+{nP2#UwJIRUJ{4}DN9 zl&?B^I08U@p4OKiRTPG^?&ln_KZ6#>y@CY2MqQuUQ`Cr6EZ!BBcFjNDQnR3Y{YzO6 z;PJ8-N^vUl3y=0aQ(%W42|DM4nv08IHeo29j{E zbwe(0HcSl_c;yU71G9^KdN19E=9wyQNv`!llL9x^M(Js84xqTjZo1AA;$u++$hB>n z>J@tkxCP!=6Ura!h3g~1bvtULqF#Ea0i^$|x+PPt_nQ_8t3?FcJReOTf$4|*0Cf8_ z`?*&g497|c^XgWBoRK=3#PF+1x83=OqU}h5Qj{KcXKDy1ue55jOhpg@*c}gAO^fpC zpvtjpK&iQ2*iKzKwxT%>fE^lcyHWEXc>u(F%F58U;4Sns!+`_NB+w=8e=fXU*!7xybztoM`?9T-nVeut zef;Z*)?cRn9vJv~UQJDHPf>X~=b(>+9TNHHW?F3QKul~bht0M*?V4w7uc_LWsbhi& z&%Oc<#~!{Wo}ASAGnZ3V%59WM41!a??ra~cwY4?D4tvnJX0Iq2 zBf2buW1yZlg8eEvVX<}Wm#BVju(ZB-N4z!cBCTHKG=J@luVuuFG6ku+F*wRw**e8Q z1~*~PgpgzH1D=D8jdPRIC%Nfd?dwZylxbmCS683m@wypd4}Gi^fkNr9Uf~XKk2i6- z+yw?zC+#}U2UWPvg>t2dv$Gsb@6M*Mex|e2B|#ii)nV6+|L?x*P6?k8_VzDZ$emB> z@{)nf;+T6?OBK}u%A{F{hg zMNKe4-Aw2v8+AJ;q~=SUr#ZRAC%Wa8d$R2$=dUXlWzC%_KofnEt>{B4_8l%YXL07; zPfq6RhD0IU{=yO}?-P{-;>KUv8H8o2sBTFzK=ZF#URXHi}#vdv!^prKB$hB>-+L5NSILN%lK zr=;6>zqKIo_Q&_mNte?#$QrO-Y@)?LGkdN*n&IY8=R3;RJ`7RA9`+A>Szi>t(+D=m ztHtCZSC^JpoajZktLFZ)v>nCHu-PM*u9;zm|7or?H&&%+mH=;A4c?>!wXz25pv6dL zLwVx7&1}d*|5RPHvnQ8c{#31bqK7O~wJ*HnpF{&D|+7s2k zFa3n-B(bFSe6`pwYpM0UVIUHe@_D5;;_J} zO!r@nzCT(LyjDiWy+FmlDkq@trzJx(+Y6b~$Ov3W$P2sD$K%S=s>({|9|dp=Lxd?y z(u>*3hGQv_^FgT7%0(L8FM+>Ky^C33y1haEni(!Tqx4!4e`mxUKfI3_-D}{-%$4?# z&8;$hACv@pqYM-l_1(YR9^5GU12d_1*(1PKufC;V?7f~}j$ovOe8H4=(E;yvJUWoE z77-d=E!MW}^UOkWhZ9ZdYE3JBnhlZL&$xVbnC?A9V%NG8lf$reYIZje96I_u zDp!Di=9-cj&<1H*9)7s@Th1hlerIZ#p2GJbdLlcCciW#^Jxvb!bw8!IIq&xZfpLS8 z**8TemF1S`dJChd zP_lRM(9w!F>sy|pH?|rtkPKn%*GTDnG5>M1arCH`$JIefA@WTK*u3^t;RLISaC=aa zlXf#F_9Yr|HQ&5Ij7-0KGMfsy|0Q%L@1iI=avTTc&B^i~EFKSC?S_0%y4xRO@;Ik^ zl*B$ytz z<;Cy93D3p0S(vD}Hz%B#=2d?evVKy0$oC)GvGsm=`w8IWWi8 zG40Q}Mg_<%s6;EzdH39H!oY;Ob%W2*h|)>}1KN^qdf(k)Yb|1EHi%?;qs8|~9Tu5J0G=W{@1s#S zPKIH@ud6v${eXiB#Y>DI=Ca%YCj22v3YdU_}oOP1aj;qr~~2(@xzv(@GtOMw27@XK8S}(lk5p`OYEIYFMd@> U;^-n34G-Y%;(3nc6#m=)0CIJtUjP6A literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/button_fab.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/button_fab.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6e3756c31eb1b58e98e4bcc8e38f2b22362c85 GIT binary patch literal 11649 zcmV-{Eq>C8P)fP?@5`Tzg`fam}Kbua(` z>RI+y?e7jT@qQ9J+u00d`2O+f$vv5yP0~%EKB5A|)~wkGSL5nS`17H8b6RJ$voDzJ0&F&OWDZmEAd2u5+ZNbMJYd zy}z^Gdu@>^xSTt8ZWa@7D;--}myQ|lUW1%dIL>dcz1JYuo#=Cv)=lp_BbT~PZaRLP zZL?^5V(_#;^d5AtaRKJH`{QQ>D9?ur4RT%kt*coe z0$GJK`D5uEAwbn}wd@|H>)?EUKle=j-Lem90M1!z)ARnIr}Z+PI2>T{Vxx3EH!_0& z`zpss4PYD>D6UJ_2{fDU+XO^@w!*VW;rTr{E5Gq^lsIG)w=1>rv|79lR^n`RTt}Sv zqNUjRVx3&-+`3~w|M}0)uDgcqn~gPHukyQe9XhVKcF&X@U$}qeopif<-(p*$&Bg;> zlloEGKIIkCPFf43X#+C9)Uof(3g!yx5nm`|SU`nsY1Ld4K6zrF&m>)m8IK&x7mhIeHAA zU$|BV>;iet&FX=d4BTH8t9~NJMr%u*LD2B z!#W+ad-v}7d@h|g-}c30^mrW0*T;4F-Zj@u$LTTtd597~0ZuVsdM;ZK%d-mlAo_^= ztE6LR{aNV8cXp|<=KMZv%3io+;Su-JHNIvvYT`(?Mh8X^fWrR;N?W&XjqB1jJ8wY~ z@p(8$&$nyLcWb_Ob`9RozYEt-*T#7S(h_++t^)UE99+e|UI!5sp#PZCGPFZ^Ln({Jy|t z7KLr`zI=V$kFJ@Wi~HL1WzSuAPdaA-)@TEO5?mLY&xvt1T)bsm2g2GuZbjs>5;}kj z1OF>rjrB3sSs;R#YY_*DorMnGyLazmU59Op*Q{Byc=hVlOLQInFVTJa9~7>&WYwxw zOZB&|ahz@s>$qM2^EGt6bLY;bxCWo6zi~bv&--v)eHL6B&!ETRnXymbgPv(I-b+c} z6MzI*L%UtVoRC%MR-Iu>ogAjrT~SZ8hn>06o=ZU#<99BUzSk??;p zIxhTPZgiQ^3apncTebr0<;#~}wsh&zl~{vxA0MaN!hKfQbrSJ8dJR4=P`Zwui{E-2 z&c(HD+e+LI+xb788!0UD9XD^@yjA!*5ZMBR62r6X`qY zyXiZgIC0`{e)-E^{>9h6_O$~B)FE)s@O!zo6-2(ZVQf$1eh{^Dy`NDivcXXcXYf^= z_V0)x(SUwDSY`~cXWd(ytfN_@L=j@wwK3bOEfNE`UcC!f4a0d_G0YcfFm{qKMO zgQuQ)>MrAs`XR2;HdD^0I-p7g=zGxdgxoMf4(pOTMfzN?5eM(6KF5}5!QWHS)!5$z z(WxMV@@yOp+-&3%pZLTs{j%SF`|bbJb|+6&Qt%x;di1`peB~<#Aa+MbM^`e(V`BqG z1wh9}h2&v6P6WvMytKX`V5+-`NX4Y~foFb+WE9xTM)Mv_t5&K}lQ|4HA>GblLxe=_1p!?{ z9F!fnBI9s1F^@XLC;Uz%J}*^WBycqqooj#ft6zPg1KQ+CIo`9+KKmInhE&u>9S^P; z_zTrYgHcg1D3aTx5S|>!XE$lU@y!aq`JpnfQLHi<2JG5Uu$h}ex!TAVzVLSJXKM~#>Or)l_lzS*Is)q{CS!0&Wl)SaGMN}oH23GH6Yq^wTiw5 zu<6SIZ06!vZq}84fuqNdAAg|ZY8RfgO<#KHr3XSAuTu#Eixvh2+$hoy`6Xilp!1n1 z2AeXu;g({{&P?DXqj|N1{_ zTWgz}|5BaFOTBJa09`2=H49yO!(!5aYYJhF1Gb74s-Ydy*VK7A64?9LZ-4vSAGX~Y zGljy3{i91Rxnu)Gta3Yb9EZMGOtIf0rvvDi%MHTqCIYe&=;B(ORVvk#A!I^i#)0|O zhRmbBG3aY2+wO#!MrY2P`Hi-{>dXo{?GqRilvuzKilo!kaJo!)o3zDRvQFG~pT5mL zHe@#F7n3*}d~5oZojiH+M{PI$Or^l-{!8eCP5R-(bs{~t)MCnbNwHW5IPU-2VUm;K zbaerF9~Uix%~*5{O{wQw^#*-G1zS*J|5MwIKGW&dS6_Wt`yw!d5!2}|r3{ruBSH!s z?!5Ik4?Y4KTc%lDRQh^bvPP9S2B2-#XatjD^|G$vck>h3IcXJ{yTr z^|x*O%x6CH{?1UC`lNky(@i(+w@5?`e<|~z0Yxba!O5Fah__0v_fKfa%w5TY^2ty@ z_JXU_bOwi~je!AQAW=)2u2nUu?^XyvS7 z4t+^Em8n*wX22^bdu**{PF`;)gx^RvLdI^?-SkU&=%I)HqU}cPXkzrOZ++{Ns&`u- zu13bN^>K6v!&O3ALB+K6Mh=Ia&NY%^rc?e)dPDU#1lsk=E3Z7+b^~@a zF?#8xmmUd{X{Yt!i0N|6F%;4IJVqb@I4+_?lCe^sq;Bz*cPi=P7^IBw6~#+e>3B-D zcEUryJBZV_+HSy(CPu0Pg}%EyaJeng8`rzqMuH_SM{bh&uAT|>xZu7Rx&pr1XR)fzHHrK!}=hB!K6rvB_5uD+x zNsj~Ivbd?_qpqT58fd9`rq$7_G1HCV3)yw#$dP;7Zn%ynM^8NQ#9xK}+$EMbX9=^* z3tWzi=ro18nuGZ`smAvP>oi%W<_^(^S{uHM&0&4{(W6KIuI+~FXmWJy*s(_g(|A|t z$IVu9B8gR@z`l@QjzK4VT`qyGj@>13%8>=h2gGEqkU-0<48xE;+}1#QPn&qC_$B2IG^JqK}mz(PWH=!6R$khUgqp!I32hzr&zlCk<18om<<*8Gr ze&2S(bu>A8{q@&>7y9suAWFAud{qnSV6>N5W-z#%&zBQ&k?`0DFFw7o5Oudg@tLeN zgWdd6dzfJz6r=iE_)*qLifUO0N|Du;;X4Zw&KO9Xk~-J zZSVtR>h!neD5E94x@Ma-oE6sl+itLqE(qY>rADCY=4Pp89F7K2N5jE$xJC!COSa^q zG?mz?aX3_;)U4j2!0loxk~)0D!(P*NgLQP?fIFal2?uasGDB7wG^FICFklkxB)Cf3z$gr;i+%zZcLjVp%aKwsPgTob)GV3^8 z?ZP1~jLbnuD>E1{4A5%3>BFoe4tHJK4c5{5k@jKe%RSbo>d;>!{p#u9aM3k_u@01a z4x<5>DzG`J)(zpZTVllo?IzJBqBl1-8#!E9gTu{uz@0vQ`rP-v_q}tU`qZb+ee#o^ zJomZJeeT?kfBfUtpKBt3)4oKs!NxhPq7au#Ik-j^xB)gi{bwEwySnMhR~ZhLr06{**^-C$D@Y@o*$a zFYz)K8H8J8rs;5#0h`hT4?NKNv)57R)9V8z9nLaFR9}Y<$E8}m^ViSwP`gwdzmlhw zr?8fJoL8V;ugQ7ka5Ktim@L>pZ9jhf)&jSftiks2RJfrj;Yp zH=AEU@;tcJhW-s?G|ULVoiEtbWzzOLGyv{8(&3buj8MkNa>P@mP+iGDmx+jJ7IO*x*n!!EB98M^JPm={lzE)VVt-*z|n8PTTKNM}dLdz-|##Jy*ch)Q_t( z8WOHbspdQg+WX;n7MT>d*E}hiL5|-#uz_1W^2j689&Ad`;Y_4%R1Rl=OLMcDw98VI z3V^F01TAjxbE!&_2b|?ejTqoAY8`Gouz{LDHyyxcfJ=_w(7zjq!>zEsUrO~xeC@bK zw+R0DSZZl3Y6)_2IPLU~Pd7R1&Y#1#C*853jelxOe^;ietn zItWj$dC!KN}|KGk#qW>69(Pj$aDi55p}o9YtyfwklDi zVFw!x0Gu(MaU%_t@eCwVv9VIu7jxGu`>csHjHu~sR_c}db+p}J9oWu~RHSOz4zp6z zybUsrTf{Ikm&@pTQCgXnR^@BW3(X zz+tiw<8Y~Lmya}vcmA@4>XI<$)RcKhj$axkh!k@L+?CTImfC@>nM|Z!Nx}QINKZ29 zmO@)XMgxmfoub-aFu*G$p_I43psve3YY8hAnL$Y zCS@9`9)&)R<5D$2qfqK0i!_My!%_MC9BIy9lIr`CiR(pbDdRWBQe}#dOC1kz9oTw= z1Wf5o*sGBS)E2pnN#CXCo+kuB^`w}936Uz($Y|)mRwha@uOwhf9!pIePVySR6}L!H zqzbu3RDV;@m8PtONR??eh^7PEPZ|+P35|H zZqrnJ910`U_lB?iwKI7M0sde+FChi6l z`dBIt6NC=u+#<+_V;yeFhPFBy9B@JD-!obqey=UVH5iZ8uy;lcPWU;SaCb z1ii{Uwz5c-JRdIA_@zQNwKaaz4~{Yr;Ie_xB3a4RY?z=vj2R7El*1|DUU}t}=h|+# zjwVOiccEXe0pNJ9Ek6^DxKa<|GJaW)tJUFz+#-rxp4?4n5Dlh2lK%9S0NjD+pMU=G zwi~Xa$3rJoO1 z8%r%zPO8pCQ#U~`iPVK`G|+5<`Y@y6|E2)I-Qo9DLFqggtero$-FO{MjI_@}-~CAd z+`a&~-5SE8Q5HK9fHL_K$8`S{<=nlR4=9~Yo?MCcqFj8?E z`t%SP3~B_XdA78#g+^?tI4umIN#hx6m|10+aZc>B6j6xnFh%u>&!}+k5^o<6_RV4vaNcLtqahUg>2hvcqLB;A2ic4EeRsC`M z1L$t-xZKpIU;N@1{}tlY9KNZxubBQO&LtvJt?$cG1|LiH8NZoZq);O+%ZU@36Wvvdw9m;1pFe(FeTxykFBEF_bv0PXBT{9yM>v5%tdZXcB?h*YW5LZ>jQ;ml|3G~4e zCr-TDcH?%G)9bIl{y(*ELO_;Yn%X&+$*=s=q+ zR5@&Y%3~SEOD)d=_l?1OGF_8crJ{t9%ehJ3QcP8Ph66_7kD3!$eR8S~s4k~p&<7rS z?6JRVyP-Sk(f7aq{f9!oe82`hNA9M6RGk8W;-{ZwOVpWGbipn4N9 z`!jL35$#KeQ}wx8Unh46g7!#DGVWFx%TT*G1uuclak*|@V97m_;;P6VQH4`OU23t0?a?nMJp)1=i|3$mqsGbCM@@`bHX`g9A zt@MTjX2ychpc!%DEDt!wQW0S_m2Oh`E;xZvWLlgPnCt$sizE<4t5)EFKDXDhN%X}P zbhkeG=%e30bLPxHx7{%p8=XCS_MeX&Ir437WBtHGd%stW1nmQj2B}qQNtWwboD$fY zxEq+z9KuNEg9El|{c!vnI$WWe61zw^M=oXoo0BjOu92Q!F1ks~YTasKF9qHHuvSiY zlPa;d-FDkOr%s*vUu}2N#X_&X`s#_BZ@&4S(8jj}dOw2=dYg$-9VD|>OXFLgtpeas z?ULuWm%NThrJgS(^LmC>=5mm~E@QJY|CWkYAL^naH}K1?(QIG_o%Bkv?>19hbFXd) zfKx-_aQJ=4Lk~UljShH|C*^97Jo3nQv@NCQ`gotEjVsu$un&G4>1}X>#L@Mp7I9gw zB^aSa+|AFc63xnQwIE{CALg-J%qh)|!;uCV=z&LEm@~h&42SutQKT`XEr#ROR-9BvBtqQ9A8CHzYcU^4e`2D z(_zAYo!Iw)^hE6Y!unJ!ukVNc(2NhYLO)~@Ln8>|u2o!@?-OyAPNh)pR=1UgIxk;bfwo2f=fv=Zpn znf1Dntk>NZ%ez{Ab;j*fw^NaDdsu(u{`Rh@aWfi3E6&Pae&3b3V84m=+!*AIc3 z<>y5u;MH2DjbM{ptgQUka!#bp*}HMSl7bB@z(FgCx&zs zbMK=2C!%}txp#x;Ir*CSeLGuxfloP~=5pO^u|c(RZ#6L9YF>5yeT)9L-?xJFSP;%} z+is!bm6P03xIQ0)d);Ek<2q?g_rbaT9(-S{58FE`$lh=InR5Q?4QOiVUui&tuC~o$ zqc9G%jn@HelIv|Td}T%gd~Ov{suHa*?zC>^=YjP$zj)v=E6ofDd<{;Y%fu@NPMaYy zVqcunI%D_Xc3Z5#;Z8H-)v!?C9l)nzLoM6u&4K)0`_d1YWflqlvCaQ?+irBn9;AKz z8^<2BV{x8-1UK5bX-(Ue4%&G);(m5Mj?eCG$Lj~C@2Ky3ow+v@WLKFa(6-SwQlP2z zuOIDZb3=_;_QxoU1Or;dNI*7-_FZ8JU^Zp}Sl~1yH<*5MOCj|<3wcSO%aulVCCimE zO1w^&tXGRjM9>+x+iXUKey!U>LxJmQ1Mjh^dG?ude6@8%BIzX+g8X)@0p0^f=*$Dg zQFVO{&M90s?&tq@jYJyCqht2l{sV<`uCa6Ce>@AlpIY))63A3+s*a}NsjUE-^ukmC z+j;{UI2&@@GUu-3oQ(&^aJ)1d23RV^RY|xUV3}1?_*k?`Zah>#XX14sIfa*c@oFy& z(5+!^2ZO>$8&4gSTgv_5k9kLT0Yg~1w zzm6Th1LxpBZ|Cdcx$vL1?V#t%u1(j9;39x+G3R*#nzmE;sI{#CHqX_Dgj^pM5xSJc zs8l&y=5v$!0KJb)4GzA-pqi30SQM>pelDNJ1b4|&yevRxemVee*cxfX8g4yEdSMs^ z-Ue!DfH1mO07&bY%~q};l6BM;w;f^|;%JLq2ivyVwYFlv{m#y%4`7RXjxDxLkHs^= z`O4>lgKxF#`fJ0ju~B*=6UM-pYa{lr4O=qo5Q$K>M!6_W49vT63Uz~Hs-x*A02%~SNtq?4Hz@E@;$~Q{hU-MgePW^(A_97zirWp!`NVWSBItk{ zYqoCySe4WlNFBHl9gAae9s7;{8{kBBK-fUn*~r&(_ejqqeE?;E!u{wSH$c^p9w$?P z0c07_tPO{(CdewpN9|+JTpyB8BOW6-pt>-~NFxx}rr`}ybL zYtp-|BLc`O9L?G=ay64AtgiuVS$z;HEI8K(=DkW)!;CJ7by`V7FQlb2=zNerD~2Qe zqJ{vS=XNWoKu*%{7<_1CGBQT_x8$9I&H^xbJ>Ir;b;mhy`(xKRfE3Tc2ZQG$MSnf* z8--hg-j6|+aWp9a4O~t2H7?VD>Xlr<(%0z~=h&5+jpaVtVk+>a}obx3R!l5h%Na~=a9GUzVc;*5rhi1iOa z$M`u{eM(a-jALRJzB&$vWgJiXq83~aoDX6bAWUGi4jHzD0dN6uNOYR-#Iz0P3jv$= z*IcLe9(KJEeja)*z8*h6j)$lOr^kD1wh7GFeVF<}%<}0GOv!Qe_p~F6PuxUR?wpC3UVK&X)j)Vmi|Ai1?dE9%b9{ zAKS?D4h}lxkCmLm4mnywz#l5zzvlYcv-<1uHu}w+Y$Xj+zRbpsE~h-UrHC4ciBMRf z9EdN04Sgv2pqNJPc0mn^8fP%a&`JhHvR(_-m^l9GeRfFZ1n@lg;Ku{^V_MZf=&V&{ zxmAASzdsk-VDzQ(wQ2uqT&M0{RBdvl9kY`DgNw1)yp*B^_+Z($wh$792QTvg zW)C)({apmwc^e9YEHz1*nV*hDt7FkT`fDDES+-;&@F>-3iHcmu^_E|1i}Xb=(~1dD z-8pfa0vq6l!y5ky^yz%RjsEj-+41h23K6h8z}S}tu?fO}7oL;8PFJgd4crZ`unS@o zobTfFyKI}}=5tC@=d5AMr;CK5hmx0*U{?z3dd&S27o?7e98v$Xs3F57?Z@%>&ByrT zY3+Zf|K!Ebu0uYs<^Fg)qq}cLr2NPC*AJ0uwIz_jD3d&ojnj*KcS_-!7#|n-{I$8pn{m-~s$v}`o2Jbk~_?KNu4^ZPe(Z!3_2s)SI zlz|T%50lHmz#x&!AdFlPfD{6vqqGlzW#IBQbSztV)Y*%g?nBq)XUfjwYnAQ+vFOf^ z?}|2XezYVuCFf>y;mCFA;M^Y~HP&ZcY`wLm;4<-{j#5-2%N}+HMv3cXMh3oMYVbtF z5f_kE1`ZHAib2a_h`S8*@GLY{GX}v+o}%vd zFXC&v5X*pHKwUhxVqAy=Udh5`ql15o0g|TQ%z(-v9nu*+Wycrxr8Qr}-^ZUvez5t4 z=g8iL6@GC56UWJ5kddxDn{>5VuDVgyZ$gZq=Ks{-aDHjBZqD^b^cN!)QjJz5(7C}I zbDeGi-EXezjI49m4O7@&dmjFiPQ=!AnRZn{YUa4FYm+ zpc_0_OZ_w@TpyEJ+=ExXkV2%Q6hcYnIdnbG{l?*f$)Q;Qr|-0Jx0UwQ0ilT~?I*h? zz~dEtxRAiTT%0o#my!d_f5iSH7h2bGxv3AnI<{MSfhGf^w%a$$cY>d zyOoj-D(4oinVnNQX1r(f=dq)l_knBS`CX-=EHRSWt*(MmT^~$MU9D-EtkOBo_BthZ zb`!B!aXvu5t->k9I((4(jCb#e9AEce3V>qWOmeX){NEXG35e4YVB;-K+^(>sMsYev zcCP=5MJoDV);TUrlZk5~7ftD0>34n+_?}84t!4~oN$h3TVoA@X{k~1J--R|FxF4oH z_`Iv6$=YFE4h_zt;9NCLChHhFuQCpUbx0>(N&|$%{V#R6e;5CbeE-UG7kzJ|o3xx7)tt~QtsKZ4 zNDE&ynR7c`x)gZ?2Ou;Te z^4@fXq7mNx{0f7$!PYCY+rlDNs1G=;u;@tMV(N0UCSa}8n}>%kf0ayskI=DCC=~G` z&qhU^MXb<^Y>tUxvCGd?iO8=`p9Wckss#d4LP1LO(1~-OKhEw?BJMNjApQk%`-pP2#Vdf;=LeQbQa(QO zr2p&%C9_$`1rB=2Bq;u#BFQq`stEu$VTo&=fr8T+N0oX2U(S=V2=!GoeJFZD}G1OP#cVS+^W`i$w1AwjC6F#%zHk~MKwLSamfDCZn z^qM_w`wwC567W6Q7mD=EoN5~M|24mfXMa5hfb++|=7X^ob5L-}3-23$2tl8=9B5pQ z#MAqKEg-8$-^&55Yp%x7Q^j`3=`&FPpiMzOVyjEOYe~bG=s__z%%^$$u+|NUU81)J z0IJ)5pUNa09o{Kg0RU)m7E+8wiaCC6mUdTG0>A@T2jMuU!wKzer3e73ysW+XV(4>{ zc;^zBxnLat++J|D6)nIpqx)ol)^B&eEEqY0Q?5u+N)-(Hx>xPu_d#=n8~{v;_qB*S z$a>HWtR6vw3v|#xb{-rQ-2i~r9jUgI11Kr33I<(e=(;$LgqDmMcp{-D-l~DV@(g6l zbyZmaz>cEF)eG*CK;W@;uvA8QeRKHCz( zVfuoiNpuSJfh_?KHF87JshLmEu!fP1HBN=F?qUIzO{~CIQe$%o z#eTQaerx&8fOSwqj+t^Y;#%q(3KY>&D5AO-2dZ7!^9{KgFCO9$2`u@>V|+Pc{&GUd z@WnbCuzEOb{@bpUA&b_@a4qz64hOrz8q8RGrHA>3BVh$BbcZF?#tlDd=#+GJFM*n~ zYpm%w7|G5pGv2a5#qdfJp0U-MuVXZ|*YDkT_HbgniL3#tbgWFa z&IR6Lr)sPjK%L6SP^1f-0;qz#=E@dIy7$dhT}1uO`;a%7by$~s)Qhm4MzlAfFS3X? zwz0NeJNhJdH)&U0RxZ4&F@(lj`kTr5_)nxSbK`(-Rn^FLrvuHOnkfnJED5>D#9pkz*&zZ1xn=n)%Ub zI_t4*Nuzclu{!aopYmjEd^RfpcH0w~8B|x^lSTE1?W{tKM@99_x`Xxs@^8JJ;nzd$ zK0degw6S<&M^E12Sp%+Zz%DKrMlm@=A%9`RS zEEa0-GHfTo0$zUXOWaX@fkH_gqJ2n7nbMM>OZ`6fXY5FE4v%b$YH+@hgS~eaaEXyL z%AI<_su1-4$M554W|=htcp-m4cuhQ`P!@D@*r}Y||ET=dJWFqGthGW0J8U_>34IuJ6 z$NfJ@yWSt-U*JGXRh3i{=9krH=ZUO7^65fU&wPf9ZH7M4KP~g6iF_yV>5VRe*78=C zy)9SVo!p{~upP%oCe3v93gj-l1avOia+Ka&i^(j(T`^KC-Zz8%iJO;52FgD)wcIvP zI~kUhFo>Ml=$JAT*Yx7Nb?^Q5`ONU?-XxkB{@Q1n>{O{Ab3I{tVL(ruJkgHoY!stB zrQ(7B;-7PDWnsAs*Jgi!rP*Fm55YmuA*wX7X~Rb)%{-I~uFwhS2BD3kZ? z10zCyYAqu31Y@OOA>DAydyg_Ov|R?mD$C^q0buLOVi};=5w#RR$^PFr|7UlIi-Yv{ z7!FHI60;wl^=V9)ZP(!V#QwMy;FBbrz)^gW5_V~p!{7pZ$t6{6&ht-vjNN8{7y)w zakBS2TbJXr?)V2w>_ZQXY&%vjY%cur@|sVM$|icR6ti!hTHf!#r+6ay_5cL%A^g`xDOHXjJz7Pw?j`l2pO$~oNs4+3y05e zgUV%N7K{bno=Bo+2^6q)ajB$7C%Fi|CFRN-aY~*+9Pins*+c5t?vgQid&}!@yd^X% z`^X-fT8C_n!bxidD?5|ugYcliqP-cc%Zz$!)LJ#~+kB+;Ag5s*-KXQ=NY9Ar*;W#` z--6%ATf&&`7|3)VD9$l(Gztqn&ai!MZ!wsCLs%gEdbCe!;*4s^9PENcrKpk`OA8Wg zs(0nwPl-Tf9w$j~5ql0M`AV?>UR&m(jyKKJ;@d`1Ni~1?RAvo@-dE9(>>mi`=sSiv zORcj2#9q0(q{$xD@=r20PF)v8P8usGgVTjS+pI43FkNHaGl7~+YYlM}b^n58ma!_{ zfkSGLCM7^UkO|;*gmgP70&CKN^|m6lZ=0DqT47Pnk7+dT(e;idt|)gxHKK3FoXo`; z(j3T1K+Lq>%!;BsNPfXC3iTC_7V1(3)BjV5uviTOx2IWJNoE$~kq@pJ2PhS1~d?<0$xtGKrugfiQm z*xAn|zCGJqH`eL-6fL+JI0{m4|E28DIDzTC_eI^N`#7p7{^S0H+4BPU-)%&k|Cns0 zz-&NHiJscA`~s~DTo-Rg)btU?T}D#B_^2FXdS!q4y5*#}M^&66?C{ic{^1M%xcz`OGd3)11^ z`qYlF*NDOj0Iwo*(c3idq4Oggm69>6WKZichB>w`&?m0^nZ5g@*0d72NU=Mkk)uB7 zV!67Qnzk&(ShvoYyxFnRka#1LRjlRBrf#uedD}E0o!8Pt;+YI+y~)m7jH9_a5cpg8 ztEe$!1EEv0H3))F38oiXVqb^FSxhbtKGP{;F15#fZK&S6U1n8xxPM<1S~81sPItBd z?msowndNG8bqww%V>2!+al@=GrfhJm#9#_tySD{nZd-zJI)mVZB8hq**#rL#=nUqk zbb?v;i>;dOE?o^~+$OV|3v8{zSca--vss&FMcwE1I)olvqov_}gP8BpYZ<)rzqOV1X0LrODZ2(%K>9 z{hhw*N$sN0P*hLMwzX9EB@E~WbFO{%y39pW$`=n@LWKW2Ic;2Pnw84e70roG0p@rb%dD63i8DzEc~7w4nvBmwb>FD z^gBri5egIzi029L7W975k|69xc)LdRG!3V1rh*)ZnfSwQ;JfZNU`Ci^SVPJS?jqR` z&~*oip@7?o-a$&Xf+9(nyu3B){_o&v=XTg8rSy)ZlB;bczl~Jo`9>-%zI4^2A(?nU#}-ch=8h;OaFSr=1Up|w+;}772pO5ac#iz(q5~sS zD>BwhoG8}kVuz~nKBd*sIi4CH-5E%)_CIFbz zToa|~`P43+p1vbyAF5~zgdTrgOsVO8%I*(LU)m04Wt#1cviv&kP|PGF508BEQ0Sr{ zdp^z$H8%B6qv=SO9VS`XQiwkqTo8NXthpWB(NCvP(d!9`l1@cv$1g5lMnd=C1~#DI zW%ih*+;J$2HSz?vS>GJEQsoA|xK`ww@2gdM@Y-~f7_StZQ-$>RX$0(D1&)vGMAnfV z&vxxNgz{;T`pH9^I;jr=RNTaR#g2U#t@vE$$jaVjk*<3`6Kv-eu+N#W_FJ|&FOk{@ z8wAFodRxq*yDVHPkQ4mCID{g}H#Mmw!R89}a(R*acE>PJ&~y=jF|I&|blm=ss~?P_ z_lF#0Fb`6-I`ie4j!Me2;XT?-r8f0agsNJ^=-W^Ue5)2N<2)NF&qx_`uoJ9f=_sC) zop1PO&qWUa!w#pfPG8J#o^@r-%w_zzb;o}icKOb>_0I6ak}>iKmLP)E3WNSKCXd&=?>1 zq#+%!|F-Q6`$@w7@_uB`n{)?^Czx2gYre=%HooUkfxT_Lbhag0bd(l2GL+!NO+1!D zz6Ibz{y7vn#*UqV$8-WO^vuZ}s2>VfZe zUH9aZ>yf4?Yv1l%%K&15}6`g z9DGF*tB2Vimkg&zPu@RK>e%%S`2rFUC>Z2O+p%GfEm^HsKxQ5IlHivg8;i1!B3VY= zey-!V&ND^V|KBs51?4uyQS83nxsT_9D-m5+F|T2wt)vG$qSuS)?;;{z^%_;0)e=g+ z3VPhEOGJ%ryNAwCaL!F^wTw1E57AfXthGt?z)1J~J;@jMpfM~?7-&kknptxHMsw*j zyIs?^Vx>OZ+D;oWACe(T(Vq0$8r3MGi}PbbKng+1yTPY*OElJ#gFw^5^;dNyM-ohi zUl2Sg2;-}{VfWXBSX`ylQvz{u?2xs%hpsq>QUslk7AP-u&BlN$7jf2nowowxr9oN7 zI!)^|ml96$lB&{_l=^9!F{O%Wd=})d3HH0FWj!~=G@quen@0A;Y0vp|H^xLev_3iK zqq{?=)c0Ju6!G^h$TQTV&u?&XI!D2b8+)8clkB-{;09=d`Tm@>A8B4)u4kT`=49e{N@i=@B_bZ^y+198cd+@>ye>* z*qAXIy4*ge*Z|xM|S9o7^PWk${_$wFQqA~)xM1rL&+JV&#>y=KR>B~q+H61_sdhH?6 z{;|86QA{Gv63*1y;KwA!o3Y}d9kf^1%H_L=%RXJlQS3&TXQ66%bn3&a`NWGlArhfr zj$6w}k$`HwDUY;TeoiuV`^4?0VsC2szYG(s&-AZ9pGAs$p3vjp_GZIH{bUB6c z>FhEgER0rmJ%X4U-S*@}T?Er<^y09UQbTj-O=NX*2E=~2jC49BWEI=hfvcYq);l7% z=*20UXEykmuc|3%PF5+*P7~3UhdfZc1II((-vsbQ)npYCwzomxt|}5Tzbe;Rp}bt` zW}CxUOxgrG31T98-RE8q2ZHp6td~=(r6=H}syTf+?$P>1vh(pjQLigF6_}PLA>I1v zP)9cg@6bzUf;l;Y3cp4tY1{~u*o|y0*F4~Ga`)l7bg#abqxUF}b%vS-3r`nSY;`m- zL0{-?FfqZ#z=JRkd+AZ*Er{StLWzKe%`k%wUO$yHmhaXmUz(|ptAjegso%_EaOdhT z@{F#khoJ$h;VNSRvhz)I$W|7Fx21RO zzBRUMu3+ByCi@Gxy@fiKo03 z8FSR+DnqA2IEu|)He9H~Wbec9nUofs9-;tog-PHA*gs92q{#HlO=cS5R3_tO=Z`*4 z8+JbvJSyZLaJhylwLkcYpk7RQ?3^rOCq5ACVo!RWak!<^7WYaz2>SC1)%-jf!8>W4 z@WN68KI^&OKe>QU62jC&-<8DyscLr;=lvBLsu?@|Ze);#9MlfQ`e51nY`4qAds}~q z3c)A*JSSeCU*dV}T3$;^T%_P##_N^T13n6~Vc6d06%-wB7nR;&3zF{9yr$WEfc?Hu z_skZu<^2A4?yA?{+muZTpd9&b((@nzLg9{SeKBHyL`KJ%3`(~QBDL;OQ|!O1dO10~ zu)KBI8v-StFFGEfflxCWT&5AUe-avC(7x>?j=1yP)AWETHaVQaWf#K7*t%j;OpgQ3$$ z4GG3BQ&BK%h*x&uz}$A3!S@Bm?;#kV-!p!O{}MtJYur&uE=2)r!Khb1n{w5$1&NLk z+skWAj-Y&eCT0$|1k|Z9cyH;y{Kuu6*z#t)c;dU*gD985IENy|hL+FUdZ&ALjXlN3 zU=Qa%F!4znjDf|V;#%y?uUsv^bSZRLWNwtq}0peomvW3Ih!3Z24Ql3eI0X4Zt70fR1UR_u~iY6PcgT4?rKtT zdt_{amDJRpYm|6eqScFG4>|C)du-l)*LJyJq)#-QvG}Q|rq;h#J|z+5C*@8ogVqk! z@g{@eJ7;k(#z$o?hce=4D;seZWYD?&${N`i1HtZ|*IrIV9liCEK(04U9Sr3xsgfYs zzaZeI^iuoQ4g=yX-LdTJ)Rn~)%NVVdMHDrK9e%DC^KJIE#@Si<+s0{rKP8Ug3zTH* z0EGF)4;vKfqu*zYj@I!kplOv_=;lEE%C~fyAb<0Aw>^anLE7t5@l}D;IGs8%&1!e0 z1Qz)l=;qzIr(K?5V{tCC!y??Cm!%ejD@AO zBuqR$%l^0Kv3R_($Fg7}3tU#avmPQ+@OySleC{kwi@9M${Pl>5J+{aPDdCCz!z7aG zVQZc*+{5{rOLvh2BA(V$4~8(opJ^rzFOWvePY(_F>V_2LL2UCcMsI01Va)tbc2eB| z|Gt-ne0AnGYv&v5(fXPV+$$o*sS*dA_cd$f4 z*|eB9GtBq8Q)k;jqH{>^TCDU7_G#EDSlGwM%2qb*FQe``r}C5L6Q)Eajg_VDuP$G6 z^6y!f-JFqoverv7Hj3y`=v zup zZ7P^v>SZ1Ksr-pH!^jOhvV*zRWf|#0Pu&WIdtDUR^uUwa>YM5QOqv1lP?qGage&54 zR5tnTPhfJwl^2uz1^P=v3U{h8*RzfnK=7v*>@6I;GjU@h_gl_O@HsRag2+Z$*}913 zozIzJ%R8aa=+9y_nJ|G@K$m7=T|4C2*o3!^Pdb!y3MF z38RYwp6s%@TYuF;a1mST*(4o)UpN<$A;q|XUi6_3o){t^(cVwu*StT`v!LtXh|RcI z+1FM2?cKXLNKJV4cj)~_McIQpEJMp1crneF>13EFmwhFOWuH10p!@8Ni$q)&Iv(|u z=8KUEZz~n9jbb<4(7(-iufW(z*Cn#{+1;TQJ|epLB_{7*4) zao5hknVcAwOBJ#uwJKyxB#C0u>^pEuJt2}Y5GxoT5l5=Xi2CSyuIsdXV=A7qpUkqh zDRGsE`i`_S5|espa=y9DYQqEABneK4E{v9EE0%`kRD=Dz!+#okl9%^r-~0&t0U*&3 zT3qqt#y25dhj-^)lbsLw_NRNEUnSoT(5UuqkdoUMXN~Q=u0$Ho!vvPMhf2Jm#bR*n zCbcJ^t9)Wkd%gY&`peMP$JBwTgHUF^IJQUnjiOHpPvB*#i!;Ra`Ru0tiD|SLESWka zlJKT|AB&&cyBeq$Cw#cQ_JYm$>uk=z53{K_$4+!X~Kz`)r(Y5c5zkHpb8~j&s zK%j}rcWyz^5$gcCqCC&oM;U?#JVO7Q%%A;v^*=nsEk`AA^w;5%D+hHE`SGk1RlNbZ za`;dQF68`GFdws;Dwb)1prFO!vu8{=kCbD3Bu(&E(j8+@@Q4w#_+EO5*BdCzT%@G~M2NQyMV5NEMm5fdflLJ*1c$88ry)&AXS8hAIaRmiEnP z`Ta^EM4VnMb@IdVom~=KP1}6SaWIOyGy@89NAq4E+Qs)@j z?+!~gf>+^-80ArX2?>ijgReRU!NCjINy0AQ5feWqM+VSN1G?KIlZDW6kKZ6XRa2?> zttL2G6L8N5x~DHb`(1?{Y0^93v)wFf>fJnBj-VB6$ z$_IYFDB5S&e~I}E_vp8AStJ0!mysUrCpAwhEpc5Bn0!r1Nw8jeBkBp z39)OQ%AgwM1GngGwo~c_TD4`(9`YmGM!jYW$6WM1DZ0R02U)XHet1QbTVuNpKypT1 zK5iFyiMbM2AA9@@8M?E##f%I9v$7azc(!m%YSJCD~sbg7~HzGw?^XaWdQ1`;zmI&S`y3+k2g$$ z#x9cAY9o{xKrQNiJ?qS!YxrbsUjdGtwJ2qB;u|2&|wHYSXHQr)ZE`f-l zP5}oo^*ra_I8)r9*EJ%7^aA)a_#;Jcgd&8Luf#Lr-vS5$MT5910@eJkgG~dq#X<{) zsrz2T_w^>9F!BJ&55#kel3h@BmnZxMprb>hh7k~ik|;xa&9;|a36O&Zp0Rak@OI+M zDXm3oJwotaPx{NDKN=Ks(V(5Mg#d~P1Y0`thyr7!IW-<1(krDQL5V_Jm8+54JFv*0## zQlaLQIP3l`zN2aM#S>}2!yIzc2~p4Pryl8tO&8F#5XTmb>Le#Bv#JOJ^VA!6hPL?G zN16vwgV!ef46LIsh^i%>d;AwHokr(qckf|&0@@%Xa|O+G34%X~Oz_5n^8y*0n5%IU z=-S?i(%0^1zvrVr+Oc$4Vj{(N2=3;E;75#yrQARw$?UoI zcqr@WmwF0}Q!G*$-T2WOCES}XOI)|Qh5o<)M*re{CH}VA{T{r^B2b*?ZyXD>?%s7ZSUHVM%wr6WSKLQ#Jl2 zUr!+w{?4P>nA0CBY@N%4&ild|&uvbD>Z1-hF_V4)>63NehopXm%Jt0V%F?X8CLZAH z`IbaZb|v_g8DRn`YJTmVQ@5fI6gBliDwwA#@yDVH{A$DQz3?vy(h7p8LILJ$=;(WK zz7ej(EzY?L*3{c><6h`JP4~s#RbVT z-Z|wsC-dL<4Ngmm(91+@=31eT*tS{B#^qxON9sZTU;Kd}!_w8xr>hoKJ`9l??&kw- zwY)XsH!@$k4Y-x8CmtZwd*=BBEvhcm#Y58DR;KB7Z&bOHpV?L^GVGvPwp^FGI>YdT=cc5=sJ(m#Ic@){66);?sN$@iN@!qeVO`c!Q%nkeBb{d!){ZwFk zU|?x>6}Wa$ufo(JKJAX&Cw>wd0n%=4%C1_J{M@j(F(qM}nd#15^N{o7kCKM1 z0yVpuR?E&W!``1Bv5czuv}33vFzr`!B&w&B7({ETuIGtxr^G~&?#9RGD zab0*pL3aLaqLcr0`kjA>X;3Fl`46v>5#59YIme$2=9zaNbY&xT5k6val(Pz{canSR zdTdyFddD6=$XAxw!K{{y&XT8T4h>d=@%>i&1DW|}8Uz)iuHPI^hfiNT^6wBIbTygF z&c9RLrT92uGL%J@i%fU$oo?IatV)U-j|bZJn%?ejV@E zM;~~Cdyg6FaQP#*hWh&^C__t2lQ~CLBpEJYB%Xqj6&-brcf%1Vwi6oU!a(juY;{*? z9Nj$xe4L;}4{1k)L-MQP^~lPU7g3gvOU2$;H)bgIlg1n)@p(v*W^p}~Lc*L-BW2Q{ z$}UexaNa4aF?Ul0ZM3b@Y!U=$#-YJQfk}#{@g;uGXyRdKr^)Md5fy_Ky>MDB(^A z5RD=X-Z(4+@E%~yeH#eCw^Mj8T-2J0uVt*|eU0WZKiXg&Kne>c}J+PfnsH@UiMjxD># z>?dUXyFJ8DCk^NG2vze`wc;S8=zLI`?X?2UVr*h?%$h&P^Eau!_6mEF{@#LLuc2%Q z&_Nv2CVluwFN!%?elDmSHs9Y_E%DTV$t`E%rz zXA3HPTki<20oldUbLq9;iyuo@S_H0_xy4}~{lQG$QXm)tUP;Db1y8@*JQ{i6Sp=>C z3Y<}sBYyzeR{ZL+Frc*t${W%=--PHK4ZAg^1%wC7nh|q5Oj%@3iwscUikf^9`(}hJ z!y9A?v+aOZJLunUbHlyT9Xj z3LA-lBXmV;Q(_FWH9q7EVkuw)VMfTkTNf9IU-Ji?DFEU2@`3T~?GeUX7p4))UQngm zC0Vl@Neg3oVY=tBm#3Ekq*cZ1c;lZQcJG@x^Ai{5jRZzTilp?rxQJ%qWPX0i_akYX z<|vj7in+;g_qItuZ;BkPn=1>Xs}(<)*t+3d>{6gik@TfOuyTi;8~|4&J(@A!uS5h| zy=2Y&)yxEu7cL}f{8$I%9zjiBN_gAuotW~r?<2Wh9tefdyT{Kx`qvj6ff9`(5TmcyEL0w*Ldf*~c?Fv+(=nkRb=_Dx^O+(OaX^rlInZf~r=o`iY906J# zmXW-Urpw1%i2rnd%Kgkxrg3&i9rPV254pT?rsLo&1e;?7Y#e8VrlYTW^=pi0v*M=> zKI)hZPtvk4P#NO?@$UWW@8ubPylqkuGsXlz|8-c&r1{quNXSeCxe(re(OkJG+_t^> zqv0C377ZaF><$^&gK95HQtXlzekbYNbk5QZkrrY;o#bUvqRfl*8&awWVsrOeN#`3{ z>{y0)Vt@A-%@g_#+(iOg`1Sr|e%Ov)>~Isb3(feJVmO{>>JU7LbEvW3UkI1pK@#|b zK>`9*g!B2jK{m2-W++g!UoN+{7F}Bz_{`#G)HH0g{)tt?y^H zTx8{!p@UCN5A0hOMv(B~w#5vi9QQK|)PwVHczUa%LLuikMCJ`7PfWCnJ3r6{nwBQK zLK+Ol_=cyRSg)|7iwu(u@5gP#Jgf=|XYz>568q!n{_{HwrQ}{!FUaC%dvG=47`Czj zW^t^d?ka33|e)-h^#9cdUn9YM--(Z}xo$tPXWzJXobeKL4l)yR-vL+HN&Yz(pzZPeT3|HLx4L8Zy>SgVPn5t5hvA z%)~7gI(f_2BB1LuhC$Z2Or^14eW-f`Vn3ll%It3r+1#B9^>;3OyMbPna!6~THS+97 zh(1EhEmT_}HbL7pSY2wrmmV9!BmS6CEVZSa0j(oeT1Uh}yejKSMkM3&o!*xCq?$Y5~%WPlsn6$#8G|EIm+HH2xQ)gYC zM=j)7z}?7s0r#pKBKy9DZq#jVYf;qeL`>C2U8xYAu4 z^!kQ}?DaO=ioBtI=@IfEO`I2IGCn08?tE_tfm29wF0qDuaL!E{%+1rV=bZGlP^Voj zfB-SYiT0OZD?5p^NPPZ*!+Hl>Ok-zqCtFP3ofABJ$@jTi5M+L*er2FwYp9a zR!6ZH(m@y(bcfw6_u*7BBTUFg`jMYc!e3;SodX#+1|=ahFeatgpNTH_KU(O4ZWkm$=1tqx6HqWvVBgAYTQKP0Fqftz$LJHP$jIFSkERZ(x&@v0qvcL+2@!IY9ctfmsL1Bwguin*BZ+OskK@5^6%M@N zVU`A}!p}8G-J*2!H9iY@m?2NAFvGHwkTdU09nW3$1T%EIvjC@WZ#a5f#wP4$Q08&n zDGTGA7hwMZeYb)R2aL3QWpPdwk_V~bR)I_oVn=o;$hJ;|JYv#ISI@ORAVv*5JTeb9 z@|~?>ts&do*_5J)OQ)@{y1 zW{&Yfxwl9W5n7g_=1>W@4)qdXX`-Ml1@hKxiA)8CEsETt8I83CgD6AiF6Y+}V&AC{ zKP;m6ee>)3C`fa7ccuBrHzfN-i`xLRAM)6V@_0nAYHIu-wUmu>Xtn<8wmwFum}*dd0AOsvyI#rq`V*up*Cw1lZ1!j+k{M{JMz|!Q zL&A3z5~utj`BHx~b?HwU3vn*%>wTZ6(vsm5?LjzEXWL;P7^H)GR)C)*>AQ^}{ygD+ zY_qWx(%6QFkYW^X5IJ7-B5K}*g-4f4oo$#cOaRf-9)NJJhO=+vYB9+)WY7@`^6nz! zrH9Hns}h60!J>l^sz!m3wU7tXEqHTGLiK!|aVKP)LGh{lCQT8ce+zp>iHpf)uLJKz z$bM&7NZsYd+#O1NV5|Md5%X%OT`)wA%G;*kOz4UZ8lvS5GeD+E7jv$d)Yzt3}t|8V0imR^XZ zlZz!4ljzyh#fLqNU>>?GfK{+Q-KY>`HDqoZIe?s(Kvfoh7i%njRGi1Wp=+}rl{A)N zsVhJ1pmv)sPg8}!UgOFUY~`Y6FFtc1P|C*=B^(gckCveO|IG7;ZTuP%#93Ny7*x!>=>0pkIzNCSV^iiHSrT*AC88*=S0G-ynU$p1mKf||{TBB- zWbjX+M>t8B1vQ_xO%}fITBTl}RrcdQ3V(7LWDA^&Rs(z7y5t!X6T6KD`4ba--GC1b zQakKLsOfh>0n_zRVOW`8Bq2-K_a#B}no>Qud zTia1o%aF~K)7V9Jz`{|K&sm3iW}V<%6V#?>9Y+XRp6PkJZ~?0PcYAysf>G^(Un+=ycTO+f4S)F(~!2`|2_nGKVi4+ zgvtfS&;R)OpzCw#Q>Q!Rhpztg6G@OkPZ(+dG4u(0V*)yx#H0#|sGd^|yIX4#BEd>4 zDU&3briAsM3)1AciC1MryW|C+9ee*RM51#5jDyV&R7M z{_XV|!s2U-{y`0u)y4V)PAgSdZt`OReyS%Sw#F6JqGG!7K8DmF=XrK0%v{#<<|O~l zy?5MrQCVo@Vp}UI^*r{S8`pOBNqcPEU1+r$Pdlz1R~L^C7|+?HB9f_rNo?r25B0a4 zA8*aY+VOp4L~~GR_ncF_nj2b53|4i-uhb@+niG7XE*;uft90d$b8vl%m4>NFIVj8{RT!$H2 z-s;6Be!-V&5u_C6&TLbGl=!!EkOBdaCRcGRyCh8!@V;{e-Riab}c*m~#5nr#< zbo?-M-@@SBsiR#l>^5x;Q&2fC&qz>vT3)2<-k4Dc;8#G!vBFUKcigC*k1xjwe-6}m z#x5gKHqh8TJ1E)r<>vc?SP%796@wcU##@A>@}+@-WQW3xC@t1Yo8%vm-XCDoy(=O% z_1@62!YdP$_9bD%#1O5Vi7PLMT6&^x&h!*>n9Z;zqeI+=-Wm+!Qv&U42qsV(bgPjGNFc zxoy3zZS@G`WGf+5lJEP0$`WjKZtRx55 z;qVJW4QP$;OF+|2;l{taG!!$RG?5mY7A?yC2kg2&mD>72>s$+ZXEIdo9oOb(@#YkU zgRv1Z5Yn$AOW*I?V^endlrcYz(%@=p7v-@6^72BRn3dc2BrmOe*XD?-YClT4Xf*gzK!L^2GuRcrl4(3-cZlHtuJ}@n@ zK{X8-CW)*5X4x{E5g=wm1brBn2sf<5^vzf}f^#{9X4Q8Xf>czi{7M~`MN`F}MJ+ua z1QjD7Uc;vMA5Ta04ecp`yz4=Wy59(&H<=$cg2mSeoTzE>F-iPdv~mj{dZa}BufgB> z35wIW6(rXpySVB-^LHpbyf4(2p_+^6`Z2WP9ta`@ZEz&2vkdpnoub~2SJ8RaPUHrq z$i`^Y;VA9JlRhd7(Hh0nU)qL-d&6UyRao81k0mR2ILf`gwf0Gnz->4c&QK!5Kq1i* z9HKa)ipWa`3m%GgeLX%}2vu(m&J_(#S3`_jtA)0paLaGV1Hc`PT4Ymo7kr>VlvwLY z&?Dr==stb7i+>ArUGAWdKy6H-TllLzw!0!Tj`p`)c0px27Wr}^i9MXlAw2V5!f2lT zFm}Irr{nZWpt- z-45Uz$A5M1Eo(jRM09M}fQ*r2>=4Z`_ema9^dEQ$sqSP*0p5F9f$@$@endnmy z(~*g^_64{JDqYaQ+|F5D+&R%pfAOuK3CCS=F6oqwq-J(5H4FP5DjSJ=SLUN9gUfd# zN83R_=Us5Z)u*eK%S;qw&X#84v0*>uoia=SKp|rB*?~z^_c8bcNQ=3<1VuGn<1X4C zIK{ufQlu3qwO{mA7e9+`jMH1)#lq#E4%oUMtADS`eUfzE4F`iwz?DeEF5VM(v^^#z zy7<~w$4(;kMiJi2Y+&#hs>k^ZU6*xq2_ri5T(d(G`Sx`5skfY~{jt9PPbYW&mSnaE z0Q?1)Zkd@zY2upp)XfpAB+@Ao<9eV^w&%lC8q1u^VD-0`q8WbKaF z*tpQBOVXYiI@&`%^P*sZnbUGTgCADF%{O5f)_n}Ee5aVft6d#r!DO?2Z6k@MOlioW zuwr5HmLWc^c-AEq8(J+y7Z9bU2RUKajAY3<(DDiM6WS(13=p+TjJ6|}Tang}w_C|BDo zUD(q7u3AM-e@g~Q1mxmO!4gFM0k~7I1cic!$sd|VqY+Ef$K(jUcJyk4X zIE~HS!FdVNZ%FcWP6-OWKJYA_j7R#GHx4HaiG9cHa_0wzOl9UwXHT-WGxax(1VexR z)_2jb!D^p?SVfSR3)xSJ_c6O7L0s6HxV-LbhcS%F+fwCb1K{<}gm^iNa_YZ~ZGEm* zBpDa9dZ6Fg)723}pg^IzE!d>T5-SY*m|~oN$t{X5>emasySF!5G%WjgV-0){I7aY7 zu_&hv$rFGbFa_1g=lH2&Jmn>OpP(@X4)HviK!gCT3rWZ<1(DUv610X^>r1>5S% zF%H)EP0%qYbftlunhhag!qPJC;BG&l!#>`2i){~1-A*QdjIzuI;080V%W)Bl9q z7Eb(!5hKP4=IZOg^mu~|Vip!?O?NsSkVPM!IOp?a)QA?5UujacXfBx!peL7Wnapj! zBz8TxsAq9RND=WTr?|h!@ke6aXvYp(FYhZ2f6jQ7EIWc>*hEKaM9CO}tnn6BElI|a zisvGu8?cf^?hxuOq}!a4tlne!tf@&Rw@)r{VQaCh@=2LK(mLfqjfAvzciIHQ+-x(A z14I>dcarO8%?#cW{>>NF}MLG2wkYmSEG>3G0%L&!pZPX#q!@ zHZ^v6@_TC*B|Vet4t*|fWIDoF??Pk{s`~&&!{nuak&vyW z*c`LXPdGmeqLO_*9A~J$uq+u*!n7somNqk?>4nsW?@>Hsol3%of|Ewn{N5)0A$C>; z!YIG72}kMO--~qZ+E)pq;$qDA{Qg4}dY??D^JrQ%WLq5$1g?!_q3FTp(sZgy{^!c2 zDqHO2{_Px5Thl}1q$iBQGS{`ZTq3fPU`5e&7%1c#*Y3K~IW45Axb#n*@_1Jb^87r> zHxXT`a8PHYCMA?P@76lcJy`uyNs+;K@PpMqe{E^{y<3Fa>Fp&EKi#=y_iZ5hDWxHz z$kdZ&UtY-aL!8Xq7@inTFJ27juvc4U%QJGTIN!#x6a+RN1(dDXB26G@TJHve<{iwJ zW7#C!5wMFk<+ zUls&a29A$j$Y?_gL^B9Le?DnMH5tABci#}GaX$NYlnPJj4nxP#Pkd-}^9Hwdb+y-yUh=IiU55*{tWQD6@8 zRw~>@N&}llN5PICL4)@xwXE8J@>5A`k38PNAWWTn1tpB{OdB?4Z|${|dV&7?OAJ|_ z^|}kS_$4|`8=B=w+P%Z8d){s!I3$j(?UKc&v`YTh`9Y<;`BdV literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/checkbox.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b82c9bc0ec4f6d0cf97345b14374596c930931 GIT binary patch literal 2771 zcma)8`8yMiAGfazYb)2Bkt0!jY?OPhVJufsA#*2!`Jse_&m@1c)j1hyq@R%yr0+ex^vOl4g!(~2?z*4(DpX20s;W| zAx4M*4=dC8JL0g3;_N-61O&7l{-1z)v(m=HB_PVx4kqeuO<2q+PJBOrqgXu%##dds7+(Hz0l%i<%W!yvtn+y4WVO= z-Sd`?Lfcm#;R<@yKqthG-&MU|$uN$JMGMLzgk6y7HJW+wqtb|8XFAR*5jgPwY2#TDd6o?QApCL|fZy7T8eCMSX==R867GnKwE3>GRK51|&-` zV4V$o4lf=b9rkD#6uj!M9?mUlcTeEZ;zW z8E_e}n7LxGPTZjTed!?Q;bZV0yGtCjci)>TS$&WdZc5n8b*SA+-xT*Qi+x5iS&6Un zsNS!Xpz1D13waOkp?_T1&8AqVrMxzKS&<0~3)^krkZXykg?sCdQSxqt$anrXn1aZE*&*YBWV#8qDFndq3UtYf0By8(tN;Puhl z;=A*Vo~~?9YTB`3WlT7LlLVHroV6@2I zj#vZRS%eX1(}OhdJ1*irNJgkNW#Hayiza?vr<;KS^|s0fn!VM;1yx4kb=9v6Zi{2F z4*Fnk5BCd-chK%bwR2O-1xfFk`s|OLyHlbPC%#|W%hJpsaH6kezuOQ!T!!YCW(7sl`P~W zo?6C{D~t48|GTs=2xAof1$2@5#;2bOjSxJL>N}(@Osnq1*L9BA>}JbXSzXIiRcQ5>C8~Ke&g)_1%^98^{I)Nw0fwzEde;QK{ z?ot+g9a3{cnWMgvt6Go^Ekax7EY7L>WCA}6b-bjpaHucL(t7@!Xt*ekMm)o8nz8MM zJ@yq2%okLiDsv~WNA|xSNmH3MF}VDdkXm)k(I)>A>&R8{@C8LSKultnXa+368xjj++>^7ArD@fx1N&T+d-V(DT~ejnVuvuD>;En`Zkr`X^rHc zy3pShF&H6c;73@aIpn!1ID-hOp5PIn_PS|%sfJ3v*l8rpKY11?DkmkOTH-p^A)*)x zmnUrXX0`n2*NCxdwMlLY(RG5&8z2~(AN6CQ6U^o~#ZQT|<>@-q^M^+mhqYGJ=W6tF zU9#4KG-BdUQ++k7mNoyVmn=}dez6W^Z6vc(LUVvj%MsTgZ!DAhVy849>o~2KP1LIe zrbHfmm8(7#fgMB*)JjnY-#xOx7k{ofAEnG;mU<7LE`1pu;+*z^{@XKl%Np1hr<4Ux zw)?1~dJA2e(OgA=OP59R@}sp`5RcYhq;m7#g-!j8MtN^A@Hyb&=fhW}m3cV~-~8xj zqSo>cc<51ejwPe{lIA00b9I)|rsAF#G~`6YjiR~ifJiS+sx6mQV>FkJr5m_?;dJWnHDnRB1W(v{Fsu&R%A>i|x`vbwW5BeF@u6DjoT{ z5A+L`=E#z{B65gOK}hrjJLYo5l!k1&&x6)A6Z3>SRi5Z6MVKt-IQ&R7?KCEkzNQ5-_jqa1w- zmQD;L>}ME>^ay(<7@Qk2*-&xYev(V#{cyjl-ezZE?p8?ME~xv8D$XE*GnH3VM})jR ztF5{)L^`9sR-omiK}U&TqHAMCvq6T!FNC+V8CEXpf!FSlzqDSELXK#toU@-aMv9kv5p$G%)0G@f$m93q6C^ zAs(CT`%!HeVnpIyi5$g=7Eyou_a>Rq+eS@=;d7(s&qx<<}pN(k+OK^6-XU z%4Vv~HIpw0XKegLHgS!jZ-373NW!IRu?7OBDNv@R9+Fk0Tg)d+Oxq4RD6CrNcKLt! zgNyFEQ;{eWnLo^Hb3E%>|3g|zh_A4-a#2f+rb@;;$^osE&PY)0XB$|-|_P6&VNJ}_FA z^WlZv01s|6PvIJ^M3%#(_q6I;ix!lEBTYbf=mUD92}(wngRT(XMdb)w^+DzW8uP? z*0*d}?335XRAaEKA4cd;BUg7oDDYQ1gMTKQRU=9^7??T}~PE4kgz8z^1u zKVe3#vpU^3DzG!1z=%6$4uYYCt26uVF;#!x1Ya9uqLk}u|wsp24BmFY|2W3b{ ATmS$7 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/code_block.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/code_block.png new file mode 100644 index 0000000000000000000000000000000000000000..45a09bdc50d6848950de684e4d050b9d3d6e82cc GIT binary patch literal 68924 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

*zAWUmjeG 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 SzVz+dTi4aE>^uGZ0EO>(e literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/heading.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/heading.png new file mode 100644 index 0000000000000000000000000000000000000000..ae29bd33ee44cefb77f93ff82ea7f9eea3dd93a3 GIT binary patch literal 8169 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 Dhr~uy literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/image.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/image.png new file mode 100644 index 0000000000000000000000000000000000000000..5258bb264d61a19fe8b76e41754f4898b834201f GIT binary patch literal 9630 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 mTxMDox$p1cm$#N>jr2c` literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_field.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_field.png new file mode 100644 index 0000000000000000000000000000000000000000..bb317bea56df0d86b1f969d16a7e6bb34748d635 GIT binary patch literal 3709 zcmb_fdpK0<_us>WBvFZQNKO>xazt(!4#N@YR4!?9DT$POjLDdp%B9>LCn`eZ(2%Jx zGcFB|T#m~ihl#<+{XQDrP?hJw z0o2dxq7?vqOxwr1xd#BG58B&UIY&X3M`3PC|GW|(|Jo%+mC6U&H4JW3ab1TVRgSi= z?!|>1cdVj{VMRh_p5g8r{cW?@l^!TYH8QwO%Lrcz6O>5eURxU*8kmJv}5vP${`%b2Gve2D_xGsX4#BZS3LU5ixw) zmEuI&h-FSeqAVgxdA7ahjg9^Hc!BB)@(BqEcY}ioS7lP=0-uk2Y3sJ;GIlSzZ>J(UMJLvdmadGhh29u|wqjMdb@bcx$s`~oeBl7Zxz%K^6 zzR>A(2QHV3Y&wSw2}w6HGFr*OmDD?UhF3u#km4BW2@IKm@zA~K z?Ck9MMH&IwSu{5(@PGini^p3Ud?;0D&82@G9v*I=q1#^Te6qyjp|!tc&C1ZHzMt#r z?yla`)qB?rj9aZlqtw#W)Y~($w!lv=fME5zH9bt3%VJe+GJiST!K`kEMrZ-vYZ8uHo*SiaDv?I~z7$?!lfBHfB+(QunSeVQf=BnW_ zKokIe-**)THC36t67$xf1XZ|p^0ohfnP@}QTA^V%kx}!8vvzBjcm9?jz&uhD<~d@C zr=iOEDwR2Cr@)ep_OwixmL~R3sx@86hUh=dE)}0{hXK&BU%&g>23}^Fa{S+f% zq5$r0Z#gm4EjE$35yRbDenJnvf4?da`|#mI_Ha{^Ri%VTH&4+Sv4lmThL&7%FGcJ& zH#gVOCSuk%dJy%Vqb2fdFW1>~ZWzyjMduEJFCkC?G$CdhS<)lRu#U)?6Xhqem$y7x zxm$FsY0RKg{&%%LLfvZw#*>4jFEivoKRxE{iqj$`SX8Rh@W{y0HN*16Hs0woXR7h& zG}*M}XY6N*Bi0j}$CIn5X9!{I8*r?7h}$TX{3GTA>aLnhpiL?jO9sUfI2$%%o63N|t+__g`@y9;iy$-lI>hK|*v z`nQ&bxT#064H*8z0w0SwvTNu{F`LOCxwNWJ5#GNqE|GyrIBz~&dcic6V#l@2nT3ul zpx3@>P&&7r%IJ0t+T4*35vC;W&UIe;A)2m02Rov#sQ}<=6?V|wC9H2IjlSBCFK^IE z!R!_J4RxQKf17i^;?dF})pAWGi~30))|)Z#>YXN^)Bx!aodzPG>VZjaQ;tqIY2>UW zS`P6xdSG=bC0A8<)~7q4a5v4w$yf6i2Wb=46LwFcxpVZ?--#z0}GoZ}}T}Hxe ztlwo*ju7M^l=p=PKp$3QLCA>hGc87__M^82e$Y4OZ_TI1#|xHu$9b*kE|^sGN)WWm zGr_futpE#fhN~(L9#G`eY|?49dwjvVt5LnLk#8YtNJ!rw)?6Ur$X9S(omuPP3>9NU z@6=ox8LA8D&4AX_dr1`$AV6ak-UCR@k=rb~dTr$#bk_P+bOz((-4`y_50PPEUy0`a z*SffkdYIm)IqojpTd_mt{_KfUK^RqvEZnm^nL>ytZlc@T%;Pn;-pA(>yc#rYwFz5xau@}e zja1RAe0BoH?woUr&!6i`F~S#o=K-ixw?S9xuLnx7=B6RWd7b7`&D%N~;n9v>;p(Ts z+%L#NK2j;Rioe0|OIHe6GtOicJprTu;J_iA=F@brI_Mc&7vz7_DHo2mwk(A=}T+YXGxIjvUU83HHFi?|Si72g0v$eWqshyC`5k=x>*q)7*OD zogx0pO0}s!sk5{5OIlV|)^JwasgpBlI*NC^gyrC80QOPh#1kpq6w6=c!aceB4MH(0 zAOCg7boWrHU&-w~%la`F!In}W4IP(_+7-ks(8k6*>0z<2x$%}rMM?T48B+@jrw7FP z`VpdXPsdL`-?nH`rq^HkqHlrTPTzUXHUvZLDzYlE#ALGNaK{@lJFItsqhPc9Oh-z# zevV%;9{eEEdv@$MkUJC)Tv$6Q&av|G^V1ae%RF^uwTNqSwB_Yx;xs9kVNv@70S9q* z$3*O5YT@DGm1mB@<4B5shsokLXzCA;``kl4W!uH}`=D0y29IsdbmtJKC0_E;gJg>D zv@w2JNlD4N&XrTsqJR88TZ?GOI|^o>49@Onk-H@CD`H>GmErC4k+a`7H#b$s?nOjw zj;VbNO(r*8?NUl%t4vAvb4=jmoK_j-M~1tP)G7jXpO2GOJ_fpwRL}0nGUXoCYyBOm z8*>KZuh07lz?sV8@~_2auHS*nK9)an^ZzSw5tEJM`Ee~>MASIbjY9?c5 ze=+^s)tXr@_3A*(82*z828A+V zbp)4$Cow7gA&QT+`~wGTl4Aa+P?#hUq7rEjg)QQkC1em8zVK7INF)bbvIPqRnskemfJoU4H4U3cfy`0u(`y$pkQ?V;4v*z0;x z9DDN4gTG#YUeK+>;m#PdSVmbP->pv|w{HMY)}FBFTYPu$anV5@%?n#RG&EF2CchBw ze8cAZ7HFM$c8LT2$-ue0Veq16K}J|wqEUW>9t@U0NTc-+4`0`oYE#b?E^wY$q4rV1 zk|+=eV$Ow7E|4}bJ!RTT?D|=BpVQR@84whJ&yv=tD~7Nxk3o4S#62)`7y3fO>h`zd zf7N*LwhKWN|KOx84Pi{8p6U0hCKB^k_EL(mqU`;uI+7=BglrzLhdbF+{ObMqKVD}A A6aWAK literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_label.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_label.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf07898f9b1fe7b4cf044531bf20a7e55c0b86b GIT binary patch literal 2143 zcma);dpy&N8^^zMJ2TrXmt#g{Mu=j$WO3L`sAY1=<;a~VGb)#x_DnmL33fEwxF0p`@T#CYTcd-~&Ts&rJ{j ze%ZKWOt6UnExwo!8qq;CA9ikkN{0y8Au9NYlE%gOP(j<%2&dR0NV|<|A)lsXL*e*1 zmfUuZoT)tj#jAkY-4Ul3qim7t}0z%;b5IN(WW7%xE4A_?^vlTWDX`@ch z%eL_}<>!|2cteAIDpOK@^ty9lcsD~AlEPp6ocO@@v`x;;_Hx;ho&Z|h9Y~cq2lOAW zjzt1!Of?=6|Bt*79$}k|1PJz6cR;|caWYdtzy83A78GCco*Y*E#nZMb%p&vDvhcol zK~e8a+pa+xNA?^=dFuR1TV&%>b=*DaHrGh#EHwRI%1*cKZAVdyfmyQOi(TD%vPDHD zs!PB>V|y?tPbsRgZoadMuj591HfBkL+joQXYxT^Cb?QdQkCaAXf*$Lbh{er5IJ#>RVSG=TNhA?7qQ|CVfx4scp=#{FF5s9c5LNFClcc{lq1 z!9f9SZqLE%)%ND1Pb2L9KBpnyght;Y56Ea8c55eq&-1j_Hv?G_&xW&lORUjqj~|YA zTFaq^{eMU~{!q=jurI#vq~b z!=@5ZepYwu>;f4sQ2};d^(zr59us*&bLTGTsNVEylw@I0CJrFer=^nu;0k3_#{j0% ziP34^rdYHNl4ZRDBcx*vFm+8cWr6c^NN*h|W18eme-PFzS!(qtxVnv>e?1b4nSgeneWn-`+(+a_BFG_=r%z=z z>C$7;;Ejv6thhiw<%N$^J1K`)!{&c8| zm9vJXx8mfo4R7h9)@3Hs(rIY65cMSmQb`D=v{s}pKbGncgHj0w?$amY^?kHT zzN7MKv4;y)I2UCH)|qVn<#qLVA`zC|*As>x*do=0n|h}3re^LjNi!hjNnZE5ly4#` zX11KXi5K_RGWEF7St__)aTVkS6*1jCZZ&;e*MU_cz^{=v+^KZ40g#2$qj~3j`aY}5 z3JuY+FQnSGFK1bd|MU#>tjbVCQdLT7AMS)WOd}k869aBweb}2qi9|H4znOHFxQ2OB zIcQ%ei~nRSkz`aYPlQp8WW5pmH4|Rhf2(-UA@#zDDK`$#RfUgC$Nbd1#8!k>S5`6C zxZQ{vjcTLkYfglfW5c^vnH(uRrsIB;>p@~{p!QbSWnPQ300|4&ps|vL-DTW6mKsIDn_wn}qw|kkPQUjF82wJjd^21=lQl3Fkp;hc*b;qomhzC}RSUEFZrRLeQ_;Mr@I z(%YO`#`h5Ff{3c!hk4Gs-CG;?o+{R%K3rx>w~N_=3N(Cz>8J0XUTt-rPo0&_DpMMr z9`%9P)mhLF9J8aX1Gs$#iG4*~{wQ|vk{?Q&ThMK|^ibl@ree^SsXVcDqn*@9Vn|Dk z?ZWT=FP5%j_{pRa(SehOsxnJ#@v+dQJfk-1;^%7$yG7={{ko5wEk`9&w~KQ>U1x4d zKXg*sn+x!{qQ?Ewo3JCC!6=DuJ;*C^XE7PLvumQ|DK4 zfm-=&ev!I|$N1&IswPmX+*>3ThLFmf&UevA*Pvcrrg}` S?ZDAL09?9AHZC@Djr%WWU+1>~ literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_searchfield.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_searchfield.png new file mode 100644 index 0000000000000000000000000000000000000000..b18a6016031e8e115a5929a6960a80aff4937e2f GIT binary patch literal 3386 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 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_textarea.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/input_textarea.png new file mode 100644 index 0000000000000000000000000000000000000000..5eee2be9769c193e39516d0892c69bdfd25408d7 GIT binary patch literal 5070 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 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/map.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/map.png new file mode 100644 index 0000000000000000000000000000000000000000..85ee5c347a8b7d5ce054ec625926b990ba6ba015 GIT binary patch literal 270866 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 r@QP| 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 HY{LHs0E#r_ literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/media.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/media.png new file mode 100644 index 0000000000000000000000000000000000000000..3707f1b7f7c568eed3a5ea866ccb2e6504fe3fa3 GIT binary patch literal 7322 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 Js4I?-|1X6bl)(T1 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/nonprimitive.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/nonprimitive.png new file mode 100644 index 0000000000000000000000000000000000000000..a91334b4c4ed772c3c25af806c0ed91492271e53 GIT binary patch literal 91380 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

hqP0b^pw`A)M> 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 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/pagination.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/pagination.png new file mode 100644 index 0000000000000000000000000000000000000000..1495c95cd0e96574ef10996bff3495ee27046d3c GIT binary patch literal 2607 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 W_MfS-X<0h6i3spVAFo1wd;Oo;l^GiV literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/progress_bar.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/progress_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..22015c6e71e1b9dfc5a685c8fd33fa93a722c87e GIT binary patch literal 889 zcmeAS@N?(olHy`uVBq!ia0y~yU`YV76*<^|v)4O<5JscD}jQH z#X;^)4C~IxyaaMs(j9#r85lP9bN@+XWnf_D^K@|xsbGA2_idq6xCq;WW~~WU5v2-R z2`?1ZDFm@PifV)?#5fkPwsG-@&IpKCAP;UVXmxSNh z606>i6?ejpJbBPQ+n}A*=UvTDxl`gm={^U>!Zvs7-zr7<;Mz?sk>AvNBH& z-PHnFT`~3Z=g&L#@9*Eed-tzF}Cx&XybU!VBvZ(Xtandg%N#SC`-etI7$)1Vx5;Dex!ShoaUd;8)$jKwoq&y?ES zXrI{#1*52H0&c zTtY+p-F7k`^R56&%FLBDs8QJ)_r87qc_tvgVeu)ZG+D5=MIU)RZUdcB3gTVpyqa}Y z=4#}DKM=_zyZPqst925@fUaP0P*2+&S-j;8liKoc2SBR-EP7cYRT^u4eDhzSd-@z>z1C2 zuVO#^dD45;P@sgvakJUJ2UgzPUv?#E-xbxrH-HJylyCK<{Dmz*;};}@qAO`*$L!g& zw_WcmGPv{i&a168|5iQ8)<^{EeldZm?Ymz0v@=CJ@7$|6d0RiXe`<|Zq%2>x|DW?( zcR)rkRCHTOna6)SH}B_x)QB_OK#>npHy1uRH+|RJ4dVK%z5eO^v;_(>+&Eo6Vc(P| fZ1;ZcWdG0nFyhFvOY^;#fMh&f{an^LB{Ts5**R@0 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/radio_button.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/radio_button.png new file mode 100644 index 0000000000000000000000000000000000000000..310fa04a6cd2ce0d335f724e230b3759d09be3f9 GIT binary patch literal 2125 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 literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/subheading.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/subheading.png new file mode 100644 index 0000000000000000000000000000000000000000..d74007680a52a3e37b3e4b045285a193141f66b9 GIT binary patch literal 6028 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 B)aC#H literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tabs_group.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tabs_group.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a4edfc30e15228c4cf34f89c1068ee31d03e67 GIT binary patch literal 4805 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 K^E%V(_x=Zn=n literal 0 HcmV?d00001 diff --git a/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tag.png b/cofounder/api/system/presets/ui/design/systems/protoboy-v1/primitives/renders/tag.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb74f881aaf12a276af313c67e43c183cd9bb7b GIT binary patch literal 2862 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 Q61(lJ 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 + + Is it accessible? + + Yes. It adheres to the WAI-ARIA design pattern. + + + +``` + +--- + +### examples + +```accordion-demo.tsx +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion" + +export default function AccordionDemo() { + return ( + + + Is it accessible? + + Yes. It adheres to the WAI-ARIA design pattern. + + + + Is it styled? + + Yes. It comes with default styles that matches the other + components' aesthetic. + + + + Is it animated? + + Yes. It's animated by default, but you can disable it if you + prefer. + + + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/avatar.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/avatar.mdx new file mode 100644 index 0000000..e8733ca --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/avatar.mdx @@ -0,0 +1,42 @@ +Name : Avatar +Description : An image element with a fallback for representing the user. + +--- + +### import + +``` +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" +``` + +--- + +### use + +```avatar.mdx + + + CN + +``` + +--- + +### examples + +```avatar-demo.tsx +import { + Avatar, + AvatarFallback, + AvatarImage, +} from "@/components/ui/avatar" + +export default function AvatarDemo() { + return ( + + + CN + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/badge.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/badge.mdx new file mode 100644 index 0000000..4923852 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/badge.mdx @@ -0,0 +1,59 @@ +Name : Badge +Description : Displays a badge or a component that looks like a badge. + +--- + +### import + +``` +import { Badge } from "@/components/ui/badge" +``` + +--- + +### use + +```badge.mdx +Badge +``` + +```badge.mdx +import { badgeVariants } from "@/components/ui/badge" +Badge +``` + +--- + +### examples + +```badge-demo.tsx +import { Badge } from "@/components/ui/badge" + +export default function BadgeDemo() { + return Badge +} +``` + +```badge-destructive.tsx +import { Badge } from "@/components/ui/badge" + +export default function BadgeDestructive() { + return Destructive +} +``` + +```badge-outline.tsx +import { Badge } from "@/components/ui/badge" + +export default function BadgeOutline() { + return Outline +} +``` + +```badge-secondary.tsx +import { Badge } from "@/components/ui/badge" + +export default function BadgeSecondary() { + return Secondary +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_progress.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_progress.mdx new file mode 100644 index 0000000..ecb00b0 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_progress.mdx @@ -0,0 +1,41 @@ +Name : Progress +Description : Displays an indicator showing the completion progress of a task, typically displayed as a progress bar. + +--- + +### import + +``` +import { Progress } from "@/components/ui/progress" +``` + +--- + +### use + +```progress.mdx + +``` + +--- + +### examples + +```progress-demo.tsx +"use client" + +import * as React from "react" + +import { Progress } from "@/components/ui/progress" + +export default function ProgressDemo() { + const [progress, setProgress] = React.useState(13) + + React.useEffect(() => { + const timer = setTimeout(() => setProgress(66), 500) + return () => clearTimeout(timer) + }, []) + + return +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_slider.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_slider.mdx new file mode 100644 index 0000000..37bbbe4 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/bar_slider.mdx @@ -0,0 +1,41 @@ +Name : Slider +Description : An input where the user selects a value from within a given range. + +--- + +### import + +``` +import { Slider } from "@/components/ui/slider" +``` + +--- + +### use + +```slider.mdx + +``` + +--- + +### examples + +```slider-demo.tsx +import { cn } from "@/lib/utils" +import { Slider } from "@/components/ui/slider" + +type SliderProps = React.ComponentProps + +export default function SliderDemo({ className, ...props }: SliderProps) { + return ( + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/breadcrumbs.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/breadcrumbs.mdx new file mode 100644 index 0000000..c0b1b93 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/breadcrumbs.mdx @@ -0,0 +1,62 @@ +--- +title: Breadcrumb +description: Displays the path to the current resource using a hierarchy of links. +component: true +--- + +## Usage + +```tsx +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "@/components/ui/breadcrumb"; +``` + +```tsx + + + + Home + + + + Components + + + + Breadcrumb + + + +``` + +## Examples + +### Custom separator + +Use a custom component as `children` for `` to create a custom separator. + +```tsx +import { Slash } from "lucide-react" + +... + + + + + Home + + + + + + Components + + + +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button.mdx new file mode 100644 index 0000000..01e6247 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button.mdx @@ -0,0 +1,124 @@ +Name : Button +Description : Displays a button or a component that looks like a button. + +--- + +### import + +``` +import { Button } from "@/components/ui/button" +``` + +--- + +### use + +```button.mdx +import { Button } from "@/components/ui/button" + + +``` + +```button.mdx +import { Link } from 'react-router-dom'; +import { Button } from "@/components/ui/button" +... + + + +``` + +--- + +### examples + +```button-demo.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDemo() { + return +} +``` + +```button-destructive.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDestructive() { + return +} +``` + +```button-ghost.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonGhost() { + return +} +``` + +```button-icon.tsx +import { ChevronRight } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonIcon() { + return ( + + ) +} +``` + +```button-link.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonLink() { + return +} +``` + +```button-loading.tsx +import { Loader2 } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonLoading() { + return ( + + ) +} +``` + +```button-outline.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonOutline() { + return +} +``` + +```button-secondary.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonSecondary() { + return +} +``` + +```button-with-icon.tsx +import { Mail } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonWithIcon() { + return ( + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_icon_only.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_icon_only.mdx new file mode 100644 index 0000000..01e6247 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_icon_only.mdx @@ -0,0 +1,124 @@ +Name : Button +Description : Displays a button or a component that looks like a button. + +--- + +### import + +``` +import { Button } from "@/components/ui/button" +``` + +--- + +### use + +```button.mdx +import { Button } from "@/components/ui/button" + + +``` + +```button.mdx +import { Link } from 'react-router-dom'; +import { Button } from "@/components/ui/button" +... + + + +``` + +--- + +### examples + +```button-demo.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDemo() { + return +} +``` + +```button-destructive.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDestructive() { + return +} +``` + +```button-ghost.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonGhost() { + return +} +``` + +```button-icon.tsx +import { ChevronRight } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonIcon() { + return ( + + ) +} +``` + +```button-link.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonLink() { + return +} +``` + +```button-loading.tsx +import { Loader2 } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonLoading() { + return ( + + ) +} +``` + +```button-outline.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonOutline() { + return +} +``` + +```button-secondary.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonSecondary() { + return +} +``` + +```button-with-icon.tsx +import { Mail } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonWithIcon() { + return ( + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_secondary.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_secondary.mdx new file mode 100644 index 0000000..01e6247 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_secondary.mdx @@ -0,0 +1,124 @@ +Name : Button +Description : Displays a button or a component that looks like a button. + +--- + +### import + +``` +import { Button } from "@/components/ui/button" +``` + +--- + +### use + +```button.mdx +import { Button } from "@/components/ui/button" + + +``` + +```button.mdx +import { Link } from 'react-router-dom'; +import { Button } from "@/components/ui/button" +... + + + +``` + +--- + +### examples + +```button-demo.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDemo() { + return +} +``` + +```button-destructive.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDestructive() { + return +} +``` + +```button-ghost.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonGhost() { + return +} +``` + +```button-icon.tsx +import { ChevronRight } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonIcon() { + return ( + + ) +} +``` + +```button-link.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonLink() { + return +} +``` + +```button-loading.tsx +import { Loader2 } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonLoading() { + return ( + + ) +} +``` + +```button-outline.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonOutline() { + return +} +``` + +```button-secondary.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonSecondary() { + return +} +``` + +```button-with-icon.tsx +import { Mail } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonWithIcon() { + return ( + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_with_icon.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_with_icon.mdx new file mode 100644 index 0000000..01e6247 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/button_with_icon.mdx @@ -0,0 +1,124 @@ +Name : Button +Description : Displays a button or a component that looks like a button. + +--- + +### import + +``` +import { Button } from "@/components/ui/button" +``` + +--- + +### use + +```button.mdx +import { Button } from "@/components/ui/button" + + +``` + +```button.mdx +import { Link } from 'react-router-dom'; +import { Button } from "@/components/ui/button" +... + + + +``` + +--- + +### examples + +```button-demo.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDemo() { + return +} +``` + +```button-destructive.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonDestructive() { + return +} +``` + +```button-ghost.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonGhost() { + return +} +``` + +```button-icon.tsx +import { ChevronRight } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonIcon() { + return ( + + ) +} +``` + +```button-link.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonLink() { + return +} +``` + +```button-loading.tsx +import { Loader2 } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonLoading() { + return ( + + ) +} +``` + +```button-outline.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonOutline() { + return +} +``` + +```button-secondary.tsx +import { Button } from "@/components/ui/button" + +export default function ButtonSecondary() { + return +} +``` + +```button-with-icon.tsx +import { Mail } from "lucide-react" + +import { Button } from "@/components/ui/button" + +export default function ButtonWithIcon() { + return ( + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/calendar_datepicker.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/calendar_datepicker.mdx new file mode 100644 index 0000000..cedf89d --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/calendar_datepicker.mdx @@ -0,0 +1,48 @@ +Name : Calendar +Description : A date field component that allows users to enter and edit date. + +--- + +### import + +``` +import { Calendar } from "@/components/ui/calendar" +``` + +--- + +### use + +```calendar.mdx + +``` + +--- + +### examples + +```calendar-demo.tsx +"use client" + +import * as React from "react" + +import { Calendar } from "@/components/ui/calendar" + +export default function CalendarDemo() { + const [date, setDate] = React.useState(new Date()) + + return ( + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_horizontal.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_horizontal.mdx new file mode 100644 index 0000000..16387c1 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_horizontal.mdx @@ -0,0 +1,220 @@ +--- +title: Carousel +description: A carousel with motion and swipe built using Embla. +--- + +## Usage + +```tsx +import { + Carousel, + CarouselContent, + CarouselItem, + CarouselNext, + CarouselPrevious, +} from "@/components/ui/carousel"; +``` + +```tsx + + + ... + ... + ... + + + + +``` + +## Examples + +### Sizes + +To set the size of the items, you can use the `basis` utility class on the ``. + +```tsx title="Example" showLineNumbers {4-6} +// 33% of the carousel width. + + + ... + ... + ... + + +``` + +```tsx title="Responsive" showLineNumbers {4-6} +// 50% on small screens and 33% on larger screens. + + + ... + ... + ... + + +``` + +### Spacing + +To set the spacing between the items, we use a `pl-[VALUE]` utility on the `` and a negative `-ml-[VALUE]` on the ``. + + + **Why:** I tried to use the `gap` property or a `grid` layout on the ` + ` but it required a lot of math and mental effort to get the + spacing right. I found `pl-[VALUE]` and `-ml-[VALUE]` utilities much easier to + use. + +You can always adjust this in your own project if you need to. + + + + + +```tsx title="Example" showLineNumbers /-ml-4/ /pl-4/ + + + ... + ... + ... + + +``` + +```tsx title="Responsive" showLineNumbers /-ml-2/ /pl-2/ /md:-ml-4/ /md:pl-4/ + + + ... + ... + ... + + +``` + +### Orientation + +Use the `orientation` prop to set the orientation of the carousel. + +```tsx showLineNumbers /vertical | horizontal/ + + + ... + ... + ... + + +``` + +## Options + +You can pass options to the carousel using the `opts` prop. + +```tsx showLineNumbers {2-5} + + + ... + ... + ... + + +``` + +## API + +Use a state and the `setApi` props to get an instance of the carousel API. + +```tsx showLineNumbers {1,4,22} +import { type CarouselApi } from "@/components/ui/carousel"; + +export function Example() { + const [api, setApi] = React.useState(); + const [current, setCurrent] = React.useState(0); + const [count, setCount] = React.useState(0); + + React.useEffect(() => { + if (!api) { + return; + } + + setCount(api.scrollSnapList().length); + setCurrent(api.selectedScrollSnap() + 1); + + api.on("select", () => { + setCurrent(api.selectedScrollSnap() + 1); + }); + }, [api]); + + return ( + + + ... + ... + ... + + + ); +} +``` + +## Events + +You can listen to events using the api instance from `setApi`. + +```tsx showLineNumbers {1,4-14,16} +import { type CarouselApi } from "@/components/ui/carousel"; + +export function Example() { + const [api, setApi] = React.useState(); + + React.useEffect(() => { + if (!api) { + return; + } + + api.on("select", () => { + // Do something on select. + }); + }, [api]); + + return ( + + + ... + ... + ... + + + ); +} +``` + +## Plugins + +You can use the `plugins` prop to add plugins to the carousel. + +```ts showLineNumbers {1,6-10} +import Autoplay from "embla-carousel-autoplay" + +export function Example() { + return ( + + // ... + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_vertical.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_vertical.mdx new file mode 100644 index 0000000..16387c1 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/carousel_vertical.mdx @@ -0,0 +1,220 @@ +--- +title: Carousel +description: A carousel with motion and swipe built using Embla. +--- + +## Usage + +```tsx +import { + Carousel, + CarouselContent, + CarouselItem, + CarouselNext, + CarouselPrevious, +} from "@/components/ui/carousel"; +``` + +```tsx + + + ... + ... + ... + + + + +``` + +## Examples + +### Sizes + +To set the size of the items, you can use the `basis` utility class on the ``. + +```tsx title="Example" showLineNumbers {4-6} +// 33% of the carousel width. + + + ... + ... + ... + + +``` + +```tsx title="Responsive" showLineNumbers {4-6} +// 50% on small screens and 33% on larger screens. + + + ... + ... + ... + + +``` + +### Spacing + +To set the spacing between the items, we use a `pl-[VALUE]` utility on the `` and a negative `-ml-[VALUE]` on the ``. + + + **Why:** I tried to use the `gap` property or a `grid` layout on the ` + ` but it required a lot of math and mental effort to get the + spacing right. I found `pl-[VALUE]` and `-ml-[VALUE]` utilities much easier to + use. + +You can always adjust this in your own project if you need to. + + + + + +```tsx title="Example" showLineNumbers /-ml-4/ /pl-4/ + + + ... + ... + ... + + +``` + +```tsx title="Responsive" showLineNumbers /-ml-2/ /pl-2/ /md:-ml-4/ /md:pl-4/ + + + ... + ... + ... + + +``` + +### Orientation + +Use the `orientation` prop to set the orientation of the carousel. + +```tsx showLineNumbers /vertical | horizontal/ + + + ... + ... + ... + + +``` + +## Options + +You can pass options to the carousel using the `opts` prop. + +```tsx showLineNumbers {2-5} + + + ... + ... + ... + + +``` + +## API + +Use a state and the `setApi` props to get an instance of the carousel API. + +```tsx showLineNumbers {1,4,22} +import { type CarouselApi } from "@/components/ui/carousel"; + +export function Example() { + const [api, setApi] = React.useState(); + const [current, setCurrent] = React.useState(0); + const [count, setCount] = React.useState(0); + + React.useEffect(() => { + if (!api) { + return; + } + + setCount(api.scrollSnapList().length); + setCurrent(api.selectedScrollSnap() + 1); + + api.on("select", () => { + setCurrent(api.selectedScrollSnap() + 1); + }); + }, [api]); + + return ( + + + ... + ... + ... + + + ); +} +``` + +## Events + +You can listen to events using the api instance from `setApi`. + +```tsx showLineNumbers {1,4-14,16} +import { type CarouselApi } from "@/components/ui/carousel"; + +export function Example() { + const [api, setApi] = React.useState(); + + React.useEffect(() => { + if (!api) { + return; + } + + api.on("select", () => { + // Do something on select. + }); + }, [api]); + + return ( + + + ... + ... + ... + + + ); +} +``` + +## Plugins + +You can use the `plugins` prop to add plugins to the carousel. + +```ts showLineNumbers {1,6-10} +import Autoplay from "embla-carousel-autoplay" + +export function Example() { + return ( + + // ... + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/dialog_overlay_trigger_button.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/dialog_overlay_trigger_button.mdx new file mode 100644 index 0000000..429d579 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/dialog_overlay_trigger_button.mdx @@ -0,0 +1,90 @@ +Name : Dialog +Description : A window overlaid on either the primary window or another dialog window, rendering the content underneath inert. + +--- + +### import + +``` +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog" +``` + +--- + +### use + +```dialog.mdx +

+ Open + + + Are you sure absolutely sure? + + This action cannot be undone. This will permanently delete your account + and remove your data from our servers. + + + + +``` + +--- + +### examples + +```dialog-demo.tsx +import { Button } from "@/components/ui/button" +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog" +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" + +export default function DialogDemo() { + return ( + + + + + + + Edit profile + + Make changes to your profile here. Click save when you're done. + + +
+
+ + +
+
+ + +
+
+ + + +
+
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_checkbox.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_checkbox.mdx new file mode 100644 index 0000000..f1237b8 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_checkbox.mdx @@ -0,0 +1,85 @@ +Name : Checkbox +Description : A control that allows the user to toggle between checked and not checked. + +--- + +### import + +``` +import { Checkbox } from "@/components/ui/checkbox" +``` + +--- + +### use + +```checkbox.mdx + +``` + +--- + +### examples + +```checkbox-demo.tsx +"use client" + +import { Checkbox } from "@/components/ui/checkbox" + +export default function CheckboxDemo() { + return ( +
+ + +
+ ) +} +``` + +```checkbox-disabled.tsx +import { Checkbox } from "@/components/ui/checkbox" + +export default function CheckboxDisabled() { + return ( +
+ + +
+ ) +} +``` + +```checkbox-with-text.tsx +"use client" + +import { Checkbox } from "@/components/ui/checkbox" + +export default function CheckboxWithText() { + return ( +
+ +
+ +

+ You agree to our Terms of Service and Privacy Policy. +

+
+
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_combobox.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_combobox.mdx new file mode 100644 index 0000000..13f95b8 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_combobox.mdx @@ -0,0 +1,347 @@ +Name : Combobox +Description : Autocomplete input and command palette with a list of suggestions. + +--- + +### import + +``` +"use client" + +import * as React from "react" +import { Check, ChevronsUpDown } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, +} from "@/components/ui/command" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover" + +const frameworks = [ + { + value: "next.js", + label: "Next.js", + }, + { + value: "sveltekit", + label: "SvelteKit", + }, + { + value: "nuxt.js", + label: "Nuxt.js", + }, + { + value: "remix", + label: "Remix", + }, + { + value: "astro", + label: "Astro", + }, +] + +export function ComboboxDemo() { + const [open, setOpen] = React.useState(false) + const [value, setValue] = React.useState("") + + return ( + + + + + + + + No framework found. + + {frameworks.map((framework) => ( + { + setValue(currentValue === value ? "" : currentValue) + setOpen(false) + }} + > + + {framework.label} + + ))} + + + + + ) +} +``` + +--- + +### use + +--- + +### examples + +```combobox-dropdown-menu.tsx +"use client" + +import * as React from "react" +import { Calendar, MoreHorizontal, Tags, Trash, User } from "lucide-react" + +import { Button } from "@/components/ui/button" +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "@/components/ui/command" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu" + +const labels = [ + "feature", + "bug", + "enhancement", + "documentation", + "design", + "question", + "maintenance", +] + +export default function ComboboxDropdownMenu() { + const [label, setLabel] = React.useState("feature") + const [open, setOpen] = React.useState(false) + + return ( +
+

+ + {label} + + Create a new project +

+ + + + + + Actions + + + + Assign to... + + + + Set due date... + + + + + + Apply label + + + + + + No label found. + + {labels.map((label) => ( + { + setLabel(value) + setOpen(false) + }} + > + {label} + + ))} + + + + + + + + + Delete + ⌘⌫ + + + + +
+ ) +} +``` + +```combobox-popover.tsx +"use client" + +import * as React from "react" +import { + ArrowUpCircle, + CheckCircle2, + Circle, + HelpCircle, + LucideIcon, + XCircle, +} from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "@/components/ui/command" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover" + +type Status = { + value: string + label: string + icon: LucideIcon +} + +const statuses: Status[] = [ + { + value: "backlog", + label: "Backlog", + icon: HelpCircle, + }, + { + value: "todo", + label: "Todo", + icon: Circle, + }, + { + value: "in progress", + label: "In Progress", + icon: ArrowUpCircle, + }, + { + value: "done", + label: "Done", + icon: CheckCircle2, + }, + { + value: "canceled", + label: "Canceled", + icon: XCircle, + }, +] + +export default function ComboboxPopover() { + const [open, setOpen] = React.useState(false) + const [selectedStatus, setSelectedStatus] = React.useState( + null + ) + + return ( +
+

Status

+ + + + + + + + + No results found. + + {statuses.map((status) => ( + { + setSelectedStatus( + statuses.find((priority) => priority.value === value) || + null + ) + setOpen(false) + }} + > + + {status.label} + + ))} + + + + + +
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_datepicker.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_datepicker.mdx new file mode 100644 index 0000000..217e1af --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_datepicker.mdx @@ -0,0 +1,239 @@ +Name : Date Picker +Description : A date picker component with range and presets. + +--- + +### import + +``` +"use client" + +import * as React from "react" +import { format } from "date-fns" +import { Calendar as CalendarIcon } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { Calendar } from "@/components/ui/calendar" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover" + +export function DatePickerDemo() { + const [date, setDate] = React.useState() + + return ( + + + + + + + + + ) +} +``` + +--- + +### use + +--- + +### examples + +```date-picker-demo.tsx +"use client" + +import * as React from "react" +import { format } from "date-fns" +import { Calendar as CalendarIcon } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { Calendar } from "@/components/ui/calendar" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover" + +export default function DatePickerDemo() { + const [date, setDate] = React.useState() + + return ( + + + + + + + + + ) +} +``` + +```date-picker-with-presets.tsx +"use client" + +import * as React from "react" +import { addDays, format } from "date-fns" +import { Calendar as CalendarIcon } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { Calendar } from "@/components/ui/calendar" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select" + +export default function DatePickerWithPresets() { + const [date, setDate] = React.useState() + + return ( + + + + + + +
+ +
+
+
+ ) +} +``` + +```date-picker-with-range.tsx +"use client" + +import * as React from "react" +import { addDays, format } from "date-fns" +import { Calendar as CalendarIcon } from "lucide-react" +import { DateRange } from "react-day-picker" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { Calendar } from "@/components/ui/calendar" +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover" + +export default function DatePickerWithRange({ + className, +}: React.HTMLAttributes) { + const [date, setDate] = React.useState({ + from: new Date(2022, 0, 20), + to: addDays(new Date(2022, 0, 20), 20), + }) + + return ( +
+ + + + + + + + +
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_field.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_field.mdx new file mode 100644 index 0000000..de99201 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_field.mdx @@ -0,0 +1,95 @@ +Name : Input +Description : Displays a form input field or a component that looks like an input field. + +--- + +### import + +``` +import { Input } from "@/components/ui/input" +``` + +--- + +### use + +```input.mdx + +``` + +--- + +### examples + +```input-demo.tsx +import { Input } from "@/components/ui/input" + +export default function InputDemo() { + return +} +``` + +```input-disabled.tsx +import { Input } from "@/components/ui/input" + +export default function InputDisabled() { + return +} +``` + +```input-file.tsx +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" + +export default function InputFile() { + return ( +
+ + +
+ ) +} +``` + +```input-with-button.tsx +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" + +export default function InputWithButton() { + return ( +
+ + +
+ ) +} +``` + +```input-with-label.tsx +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" + +export default function InputWithLabel() { + return ( +
+ + +
+ ) +} +``` + +```input-with-text.tsx +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" + +export default function InputWithText() { + return ( +
+ + +

Enter your email address.

+
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_label.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_label.mdx new file mode 100644 index 0000000..f73e44a --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_label.mdx @@ -0,0 +1,38 @@ +Name : Label +Description : Renders an accessible label associated with controls. + +--- + +### import + +``` +import { Label } from "@/components/ui/label" +``` + +--- + +### use + +```label.mdx + +``` + +--- + +### examples + +```label-demo.tsx +import { Checkbox } from "@/components/ui/checkbox" +import { Label } from "@/components/ui/label" + +export default function LabelDemo() { + return ( +
+
+ + +
+
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_radio.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_radio.mdx new file mode 100644 index 0000000..6e63d24 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_radio.mdx @@ -0,0 +1,56 @@ +Name : Radio Group +Description : A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time. + +--- + +### import + +``` +import { Label } from "@/components/ui/label" +import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" +``` + +--- + +### use + +```radio-group.mdx + +
+ + +
+
+ + +
+
+``` + +--- + +### examples + +```radio-group-demo.tsx +import { Label } from "@/components/ui/label" +import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" + +export default function RadioGroupDemo() { + return ( + +
+ + +
+
+ + +
+
+ + +
+
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_searchfield.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_searchfield.mdx new file mode 100644 index 0000000..de99201 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_searchfield.mdx @@ -0,0 +1,95 @@ +Name : Input +Description : Displays a form input field or a component that looks like an input field. + +--- + +### import + +``` +import { Input } from "@/components/ui/input" +``` + +--- + +### use + +```input.mdx + +``` + +--- + +### examples + +```input-demo.tsx +import { Input } from "@/components/ui/input" + +export default function InputDemo() { + return +} +``` + +```input-disabled.tsx +import { Input } from "@/components/ui/input" + +export default function InputDisabled() { + return +} +``` + +```input-file.tsx +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" + +export default function InputFile() { + return ( +
+ + +
+ ) +} +``` + +```input-with-button.tsx +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" + +export default function InputWithButton() { + return ( +
+ + +
+ ) +} +``` + +```input-with-label.tsx +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" + +export default function InputWithLabel() { + return ( +
+ + +
+ ) +} +``` + +```input-with-text.tsx +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" + +export default function InputWithText() { + return ( +
+ + +

Enter your email address.

+
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_select.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_select.mdx new file mode 100644 index 0000000..96b8e7a --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_select.mdx @@ -0,0 +1,71 @@ +Name : Select +Description : Displays a list of options for the user to pick from—triggered by a button. + +--- + +### import + +``` +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select" +``` + +--- + +### use + +```select.mdx + +``` + +--- + +### examples + +```select-demo.tsx +import * as React from "react" + +import { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectTrigger, + SelectValue, +} from "@/components/ui/select" + +export default function SelectDemo() { + return ( + + ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_switch.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_switch.mdx new file mode 100644 index 0000000..39b9838 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_switch.mdx @@ -0,0 +1,36 @@ +Name : Switch +Description : A control that allows the user to toggle between checked and not checked. + +--- + +### import + +``` +import { Switch } from "@/components/ui/switch" +``` + +--- + +### use + +```switch.mdx + +``` + +--- + +### examples + +```switch-demo.tsx +import { Label } from "@/components/ui/label" +import { Switch } from "@/components/ui/switch" + +export default function SwitchDemo() { + return ( +
+ + +
+ ) +} +``` diff --git a/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_textarea.mdx b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_textarea.mdx new file mode 100644 index 0000000..7e77073 --- /dev/null +++ b/cofounder/api/system/presets/ui/design/systems/shadcn/primitives/docs/input_textarea.mdx @@ -0,0 +1,83 @@ +Name : Textarea +Description : Displays a form textarea or a component that looks like a textarea. + +--- + +### import + +``` +import { Textarea } from "@/components/ui/textarea" +``` + +--- + +### use + +```textarea.mdx + + + {editUserText.length ? ( + <> +
+ +
+ + + ) : ( + <> + )} + + )} + + + ) : ( +
{`[...] processing [...]`}
+ )} + +

+ {sectionId} versions +

+ + {versions.map((version) => ( +
handleVersionChange(version)} + onMouseEnter={() => { + setComponent(() => components[version]); + setLayoutPreviewUrl( + `/_cofounder/generated/layouts/sections/${sectionId}.${version}.png`, + ); + }} + onMouseLeave={() => { + setComponent(() => components[choice]); + setLayoutPreviewUrl( + `/_cofounder/generated/layouts/sections/${sectionId}.${choice}.png`, + ); + }} + className="cursor-pointer duration-100 hover:bg-gray-300 p-1 hover:p-2 rounded text-xs" + > +
+ {version === choice ? ( + {version} + ) : ( + {version} + )} +
+
+ ))} + + )} + + )) || <>} + + ); +}; + +export default GenUiSection; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx new file mode 100644 index 0000000..0f26615 --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx @@ -0,0 +1,644 @@ +// @ts-ignore + +import React, { useEffect, useRef, useState } from "react"; +import { ErrorBoundary } from "@/_cofounder/genui/error-boundary"; +import GenUiPlaceholder from "@/_cofounder/genui/genui-placeholder"; +import { useScreenshot } from "use-screenshot-hook"; +import { createFileName } from "use-react-screenshot"; +import { RefreshCcw, PencilRuler } from "lucide-react"; +import meta from "@/_cofounder/meta.json"; + +interface GenUiViewProps { + //component: { [key: string]: any }; + [key: string]: any; +} + +const GenUiView: React.FC = (query) => { + const COFOUNDER_LOCAL_API = `{COFOUNDER_LOCAL_API_BASE_URL}`; + + const viewId = query.viewId; + let _query = { ...query }; + delete _query.viewId; + + const [Component, setComponent] = useState(null); + const [components, setComponents] = useState<{ [key: string]: React.FC }>({}); + const [choice, setChoice] = useState(""); + const [versions, setVersions] = useState([]); + const [versionsWithImportProblems, setVersionsWithImportProblems] = useState< + string[] + >([]); + const [loaded, setLoaded] = useState(false); + const [ready, setReady] = useState(false); + const [newMenu, setNewMenu] = useState(false); + const [editUserText, setEditUserText] = useState(""); + const [editEnableDesigner, setEditEnableDesigner] = useState(true); + + const [inferenceStream, setInferenceStream] = useState(""); + const [processing, setProcessing] = useState(false); + + const [isOpenTooltip, setIsOpenTooltip] = useState(false); + const [isOpenTooltipTab, setIsOpenTooltipTab] = useState(false); + const [layoutPreviewUrl, setLayoutPreviewUrl] = useState(``); + const [layoutPreviewBlob, setLayoutPreviewBlob] = useState(``); + + // _____________________________________________________________________ + const [cmdk, setCmdk] = useState(() => { + // Retrieve the initial state from local storage or default to false + // const savedCmdk = localStorage.getItem("cmdkState"); + // return savedCmdk === "true"; // Convert string to boolean + const savedCmdk = false; + return savedCmdk; + }); + + useEffect(() => { + const down = (e: KeyboardEvent) => { + if (e.key === "k" && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + setCmdk((prev) => { + const newState = !prev; + // localStorage.setItem("cmdkState", newState.toString()); // Save the new state to local storage + return newState; + }); + } else if (e.key === "Escape") { + setCmdk(false); + // localStorage.setItem("cmdkState", "false"); // Reset state in local storage + } + }; + document.addEventListener("keydown", down); + return () => document.removeEventListener("keydown", down); + }, []); + + const ref = useRef(null); + const tooltipRef = useRef(null); + const tooltipTabRef = useRef(null); + + useEffect(() => { + if (Component) { + _delayed_screenshot(); + } + }, [Component]); + + // _____________________________________________________________________ + + const { image, takeScreenshot } = useScreenshot({ ref }); + const testScreenshot = () => { + takeScreenshot(); + }; + async function _delayed_screenshot() { + await new Promise((resolve) => setTimeout(resolve, 1e3)); + takeScreenshot(); + } + + const download = (image, { name = "img", extension = "png" } = {}) => { + const a = document.createElement("a"); + a.href = image; + a.download = createFileName(extension, name); + a.click(); + }; + useEffect(() => { + if (image) { + // download(image, { name: "lorem-ipsum", extension: "png" }); + } + }, [image]); + + useEffect(() => { + const loadLayoutPreview = async () => { + if (layoutPreviewUrl.length > 0) { + setLayoutPreviewBlob(""); + try { + const layoutPreviewModule = new URL(layoutPreviewUrl, import.meta.url) + .href; + setLayoutPreviewBlob(layoutPreviewModule); + // check after + const response = await fetch(`http://localhost:5173${layoutPreviewUrl}`, { + method: "HEAD", + }); + if ( + !response.ok || + !response.headers.get("content-type")?.includes("image") + ) { + setLayoutPreviewBlob(""); + // console.log("> fetched resource is not an image ; probably empty, skipping preview layout assignment"); + } + } catch (error) { + console.error("no layout preview", error); + } + } + }; + + loadLayoutPreview(); + }, [layoutPreviewUrl]); + + const api_updateVersionPreference = async ({ version }) => { + try { + await fetch(`${COFOUNDER_LOCAL_API}/project/actions`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + project: meta.project, + query: { + action: "update:settings:preferences:versions", + data: { + views: { + [viewId]: `${version}`, + }, + }, + }, + }), + }); + } catch (error) { + console.error({ "genui:callApi:error": error }); + } + }; + + const api_regenerateComponent = async () => { + if (processing) return; + setProcessing(true); + try { + await fetch(`${COFOUNDER_LOCAL_API}/project/actions`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + project: meta.project, + query: { + action: "regenerate:ui", + data: { + views: viewId, + }, + }, + }), + }); + } catch (error) { + console.error({ "genui:callApi:error": error }); + } + setProcessing(false); + }; + + const api_iterateComponent = async () => { + if (processing) return; + setProcessing(true); + try { + await fetch(`${COFOUNDER_LOCAL_API}/project/actions`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + project: meta.project, + query: { + action: "iterate:ui", + data: { + views: { + [viewId]: { + [choice]: { + notes: { + text: editUserText, + attachments: [], // later, can attach extra image dragged into dropzone + }, + screenshot: { + base64: image ? image : false, + }, + designer: editEnableDesigner, + }, + }, + }, + }, + }, + }), + }); + } catch (error) { + console.error({ "genui:callApi:error": error }); + } + setProcessing(false); + }; + + const api_updateComponent = async ({ operation }) => { + return; // <------- debug ; is old method ; update later + if (processing) return; + setProcessing(true); + let _query = { ...query }; + if (operation === `edit`) { + _query.edit = { + version: choice, + iteration: `${editUserText}`, + }; + } + setEditUserText(``); + try { + const response = await fetch(`http://localhost:1337/${operation}`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(_query), + }); + + const reader = response.body.getReader(); + const decoder = new TextDecoder(); + let completion = ``; + while (true) { + const { done, value } = await reader.read(); + if (done) { + break; + } + const chunk = decoder.decode(value); + completion += chunk; + setInferenceStream(completion); + } + } catch (error) { + console.error({ "genui:callApi:error": error }); + } + setProcessing(false); + }; + + const loadComponent = async () => { + if (loaded) return; + setLoaded(true); + + // reset everything + setComponent(null); + setComponents({}); + setChoice(""); + setVersions([]); + setLoaded(false); + setNewMenu(false); + setInferenceStream(""); + setProcessing(false); + + try { + const _meta = await import( + `@/_cofounder/generated/views/${viewId}/meta.json` + ); + const meta = _meta.default; // Access the default export + // console.log({ id, choice: meta.choice, versions: meta.versions }); + + let loadedComponents: { [key: string]: React.FC } = {}; + let problematicVersions: string[] = []; + await Promise.all( + meta.versions + .sort((a, b) => { + if (a === "empty") return -1; + if (b === "empty") return 1; + return a.localeCompare(b); + }) + .reverse() + .map(async (version: string) => { + try { + const { default: LoadedVersionComponent } = await import( + `@/_cofounder/generated/views/${viewId}/${version}.tsx` + ); + loadedComponents[version] = LoadedVersionComponent; + // console.log({ "genui:load:version:success": version }); + } catch (err) { + // console.log({ "genui:load:version:error": { version, err } }); + problematicVersions.push(version); + } + }), + ); + + const workingVersions = meta.versions.filter( + (v) => !problematicVersions.includes(v), + ); + setVersions(workingVersions); + if (!workingVersions.length) { + throw new Error("no working version found"); + } + problematicVersions.map((_v) => { + delete loadedComponents[_v]; + }); + + const _choice = problematicVersions.includes(meta.choice) + ? `${workingVersions[0]}` + : `${meta.choice}`; + + setChoice(_choice); + + setLayoutPreviewUrl( + `/_cofounder/generated/layouts/views/${viewId}.${_choice}.png`, + ); + + /* + console.log({ + viewId: query.viewId, + workingVersions, + problematicVersions, + choice: workingVersions[0], + loadedComponents, + }); + */ + + setComponents(loadedComponents); + setComponent(() => loadedComponents[_choice]); + } catch (e) { + // console.log({ "genui:error": e }); + // await callApi({ operation: `new` }); + /* + reload this current react component right here at this point in some way + */ + setLoaded(false); + } + setReady(true); + }; + + useEffect(() => { + if (loaded) return; + loadComponent(); + }, [viewId, loaded]); + + const _delayed_api_updateVersionPreference = async ({ version }) => { + await new Promise((resolve) => setTimeout(resolve, 500)); + await api_updateVersionPreference({ version }); + }; + useEffect(() => { + // should cascade alongside error-boundary to filter out bad components + if (versionsWithImportProblems.length) { + setVersions((prev) => { + const filteredVersions = prev.filter( + (version) => !versionsWithImportProblems.includes(version), + ); + if ( + filteredVersions.length && + versionsWithImportProblems.includes(choice) + ) { + setComponent(null); + setChoice(""); + const newChoice = filteredVersions[0]; + setChoice(newChoice); + setComponent(() => components[newChoice]); + + _delayed_api_updateVersionPreference({ version: newChoice }); + } else { + setComponent(null); + setChoice(""); + } + return filteredVersions; + }); + } + }, [versionsWithImportProblems]); + + const handleVersionChange = (version: string) => { + console.log(`handleVersionChange : ${viewId} : ${version}`); + if (version != choice) { + setChoice(version); + api_updateVersionPreference({ version }); + setLayoutPreviewUrl( + `/_cofounder/generated/layouts/views/${viewId}.${version}.png`, + ); + } + setComponent(() => components[version]); + }; + + return ( + <> + {processing && ( +
+
+ building {viewId} + ... +
+ { || ``} +
+ )} + {(loaded && ready && !processing && !versions.length && ( +
+
+ no working version for {viewId} ; Try to regenerate ? +
+ +
+ )) || + ""} + {(versions.length && Component && ( +
+ + {(Component && ( +
+
setIsOpenTooltip(true)} + onMouseOut={() => setIsOpenTooltip(false)} + > + +
+
+ )) || <>} +
+ {cmdk && ( +
+

+ {viewId} versions +

+ + {!processing ? ( + <> + + +
setNewMenu(true)} + onMouseLeave={() => setNewMenu(false)} + onMouseOver={() => setIsOpenTooltipTab(true)} + onMouseOut={() => setIsOpenTooltipTab(false)} + onClick={() => setNewMenu(true)} + > + + {newMenu && ( +
+ {image && ( + <> +
+ Attached current view screenshot +
+ Current screenshot of the view + + )} + + + {editUserText.length ? ( + <> +
+ +
+ + + ) : ( + <> + )} +
+ )} +
+ + ) : ( +
{`[...] processing [...]`}
+ )} + + {!processing && + versions.map((version) => ( +
handleVersionChange(version)} + onMouseEnter={() => { + setComponent(() => components[version]); + setLayoutPreviewUrl( + `/_cofounder/generated/layouts/views/${viewId}.${version}.png`, + ); + }} + onMouseLeave={() => { + setComponent(() => components[choice]); + setLayoutPreviewUrl( + `/_cofounder/generated/layouts/views/${viewId}.${choice}.png`, + ); + }} + className="cursor-pointer duration-100 hover:bg-gray-300 p-1 hover:p-2 rounded text-xs" + > +
+ {choice === version ? ( + {version} + ) : ( + {version} + )} +
+
+ ))} + + {(layoutPreviewUrl?.length && layoutPreviewBlob?.length && ( + Reference layout design generated by Cofounder for this ui component version + )) || ( +
+ No reference layout design made for this version +
+ )} +
+ )} +
+ )) || <>} + + ); +}; + +export default GenUiView; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx.bak b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx.bak new file mode 100644 index 0000000..36e185b --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/genui-view.tsx.bak @@ -0,0 +1,286 @@ +// @ts-ignore + +import React, { useEffect, useRef, useState } from "react"; +import { ErrorBoundary } from "@/_cofounder/genui/error-boundary"; +import GenUiPlaceholder from "@/_cofounder/genui/genui-placeholder"; +import { useScreenshot } from "use-screenshot-hook"; +import { createFileName } from "use-react-screenshot"; +import { RefreshCcw, PencilRuler } from "lucide-react"; +import meta from "@/_cofounder/meta.json"; + +interface GenUiViewProps { + //component: { [key: string]: any }; + [key: string]: any; +} + +const GenUiView: React.FC = (query) => { + const COFOUNDER_LOCAL_API = `{COFOUNDER_LOCAL_API_BASE_URL}`; + + const viewId = query.viewId; + let _query = { ...query }; + delete _query.viewId; + // console.log({ "genui:section": query }); + + const [Component, setComponent] = useState(null); + const [components, setComponents] = useState<{ [key: string]: React.FC }>({}); + const [choice, setChoice] = useState(""); + const [versions, setVersions] = useState([]); + const [versionsWithImportProblems, setVersionsWithImportProblems] = useState< + string[] + >([]); + const [loaded, setLoaded] = useState(false); + const [ready, setReady] = useState(false); + const [newMenu, setNewMenu] = useState(false); + const [editUserText, setEditUserText] = useState(""); + + const [inferenceStream, setInferenceStream] = useState(""); + const [processing, setProcessing] = useState(false); + + const [isOpenTooltip, setIsOpenTooltip] = useState(false); + const [isOpenTooltipTab, setIsOpenTooltipTab] = useState(false); + + // _____________________________________________________________________ + const [cmdk, setCmdk] = useState(() => { + // Retrieve the initial state from local storage or default to false + const savedCmdk = localStorage.getItem("cmdkState"); + return savedCmdk === "true"; // Convert string to boolean + }); + + useEffect(() => { + const down = (e: KeyboardEvent) => { + if (e.key === "k" && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + setCmdk((prev) => { + const newState = !prev; + localStorage.setItem("cmdkState", newState.toString()); // Save the new state to local storage + return newState; + }); + } else if (e.key === "Escape") { + setCmdk(false); + localStorage.setItem("cmdkState", "false"); // Reset state in local storage + } + }; + document.addEventListener("keydown", down); + return () => document.removeEventListener("keydown", down); + }, []); + + const ref = useRef(null); + const { image, takeScreenshot } = useScreenshot({ ref }); + const testScreenshot = () => { + takeScreenshot(); + }; + + const download = (image, { name = "img", extension = "png" } = {}) => { + const a = document.createElement("a"); + a.href = image; + a.download = createFileName(extension, name); + a.click(); + }; + useEffect(() => { + if (image) { + // console.log({ image }) + download(image, { name: "lorem-ipsum", extension: "png" }); + } + }, [image]); + + const callApi = async ({ operation }) => { + return; // <------- debug ; is old method ; update later + if (processing) return; + setProcessing(true); + let _query = { ...query }; + if (operation === `edit`) { + _query.edit = { + version: choice, + iteration: `${editUserText}`, + }; + } + setEditUserText(``); + try { + const response = await fetch(`http://localhost:1337/${operation}`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(_query), + }); + + const reader = response.body.getReader(); + const decoder = new TextDecoder(); + let completion = ``; + while (true) { + const { done, value } = await reader.read(); + if (done) { + break; + } + const chunk = decoder.decode(value); + completion += chunk; + setInferenceStream(completion); + } + } catch (error) { + console.error({ "genui:callApi:error": error }); + } + setProcessing(false); + }; + + const loadComponent = async () => { + if (loaded) return; + setLoaded(true); + + // reset everything + setComponent(null); + setComponents({}); + setChoice(""); + setVersions([]); + setLoaded(false); + setNewMenu(false); + setInferenceStream(""); + setProcessing(false); + + try { + const _meta = await import( + `@/_cofounder/generated/views/${viewId}/meta.json` + ); + const meta = _meta.default; // Access the default export + // console.log({ id, choice: meta.choice, versions: meta.versions }); + + let loadedComponents: { [key: string]: React.FC } = {}; + let problematicVersions: string[] = []; + + await Promise.all( + meta.versions + .sort() + .reverse() + .map(async (version: string) => { + try { + // try fetch first + const response = await fetch( + `@/_cofounder/generated/views/${viewId}/${version}.tsx`, + ); + console.log({ "debug:genui:view:fetch:response": response }); + if (!response.ok) { + throw new Error(`genui:view:fetchversion:error: ${version}`); + } + const { default: LoadedVersionComponent } = await import( + `@/_cofounder/generated/views/${viewId}/${version}.tsx` + ); + loadedComponents[version] = LoadedVersionComponent; + // console.log({ "genui:load:version:success": version }); + } catch (err) { + console.log({ "genui:view:load:version:error": { version, err } }); + problematicVersions.push(version); + } + }), + ); + + const workingVersions = meta.versions.filter( + (v) => !problematicVersions.includes(v), + ); + setVersions(workingVersions); + + if (!workingVersions.length) { + throw new Error("no working version found"); + } + problematicVersions.map((_v) => { + delete loadedComponents[_v]; + }); + + const _choice = problematicVersions.includes(meta.choice) + ? `${workingVersions[0]}` + : `${meta.choice}`; + + setChoice(_choice); + setComponents(loadedComponents); + setComponent(() => loadedComponents[_choice]); + } catch (e) { + // console.log({ "genui:error": e }); + // await callApi({ operation: `new` }); + /* + reload this current react component right here at this point in some way + */ + setLoaded(false); + } + }; + + useEffect(() => { + if (loaded) return; + loadComponent(); + }, [viewId, loaded]); + + const _delayed_api_updateVersionPreference = async ({ version }) => { + await new Promise((resolve) => setTimeout(resolve, 500)); + await api_updateVersionPreference({ version }); + }; + useEffect(() => { + // should cascade alongside error-boundary to filter out bad components + if (versionsWithImportProblems.length) { + setVersions((prev) => { + const filteredVersions = prev.filter( + (version) => !versionsWithImportProblems.includes(version), + ); + if ( + filteredVersions.length && + versionsWithImportProblems.includes(choice) + ) { + setComponent(null); + setChoice(""); + const newChoice = filteredVersions[0]; + setChoice(newChoice); + setComponent(() => components[newChoice]); + _delayed_api_updateVersionPreference({ version: newChoice }); + } else { + setComponent(null); + setChoice(""); + } + return filteredVersions; + }); + } + }, [versionsWithImportProblems]); + + const api_updateVersionPreference = async ({ version }) => { + true; // do this next + }; + + const handleVersionChange = (version: string) => { + console.log(`handleVersionChange : ${viewId} : ${version}`); + setChoice(version); + setComponent(() => components[version]); + }; + + return ( + <> + {cmdk && ( +
+ {viewId} : {JSON.stringify({ versions })} :{" "} + {JSON.stringify({ versionsWithImportProblems })} :{" "} + {JSON.stringify({ choice })} +
+
+ )} + + {(versions.length && Component && !processing && ( + <> + + {Component && ( +
+ +
+ )} +
+ + )) || <>} + + {cmdk && !versions.length && !processing && ( +
+ no working version for {viewId} ; Try to regenerate ? +
+ )} + + ); +}; + +export default GenUiView; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/tooltip.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/tooltip.tsx new file mode 100644 index 0000000..16523d0 --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/genui/tooltip.tsx @@ -0,0 +1,73 @@ +import React, { useState, useRef, useEffect } from "react"; + +const Tooltip = () => { + const [isOpen, setIsOpen] = useState(false); + const tooltipRef = useRef(null); + const dropdownRef = useRef(null); + + const handleDropdownPosition = () => { + const screenPadding = 16; + const placeholderRect = tooltipRef.current?.getBoundingClientRect(); + const dropdownRect = dropdownRef.current?.getBoundingClientRect(); + + if (!placeholderRect || !dropdownRect) return; + + const dropdownRightX = dropdownRect.x + dropdownRect.width; + const placeholderRightX = placeholderRect.x + placeholderRect.width; + + if (dropdownRect.x < 0) { + dropdownRef.current.style.left = "0"; + dropdownRef.current.style.right = "auto"; + dropdownRef.current.style.transform = `translateX(${-placeholderRect.x + screenPadding}px)`; + } else if (dropdownRightX > window.outerWidth) { + dropdownRef.current.style.left = "auto"; + dropdownRef.current.style.right = "0"; + dropdownRef.current.style.transform = `translateX(${window.outerWidth - placeholderRightX - screenPadding}px)`; + } + }; + + const toggleTooltip = () => { + setIsOpen(!isOpen); + }; + + useEffect(() => { + if (isOpen) { + handleDropdownPosition(); + } + }, [isOpen]); + + return ( +
+
setIsOpen(true)} + onMouseOut={() => setIsOpen(false)} + onTouchStart={toggleTooltip} + > + Here is a tooltip label +
+ {isOpen && ( +
+ +
+ )} +
+ ); +}; + +export default Tooltip; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/meta.json b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/meta.json new file mode 100644 index 0000000..6d076bf --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/meta.json @@ -0,0 +1 @@ +{ "project": "foundermatch" } diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/utils.js b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/utils.js new file mode 100644 index 0000000..e69de29 diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/vite-plugin/index.js b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/vite-plugin/index.js new file mode 100644 index 0000000..d9dcedd --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/_cofounder/vite-plugin/index.js @@ -0,0 +1,137 @@ +async function editSectionsAndViews({ path, code }) { + // console.dir({ "_confounder:vite-plugin:editSectionsAndViews": true }); + const genUi = { + sections: false, + views: false, + }; + let newTsx = code + .split(`\n`) + .filter((line) => { + if (line.includes(`@/components/sections/`)) { + if (!genUi.sections) genUi.sections = []; + const sectionId = line.split(` `)[1]; + genUi.sections = [...new Set([...genUi.sections, sectionId])]; + return false; + } + + if (line.includes(`@/components/views/`)) { + if (!genUi.views) genUi.views = []; + const viewId = line.split(` `)[1]; + genUi.views = [...new Set([...genUi.views, viewId])]; + return false; + } + + return true; + }) + .join(`\n`); + if (genUi.sections) { + newTsx = `import GenUiSection from '@/_cofounder/genui/genui-section';\n${newTsx}`; + for (let sectionId of genUi.sections) { + newTsx = newTsx.replaceAll( + `<${sectionId}`, + ` { + if (line.includes(`@/components/views/`)) { + if (!genUi.views) genUi.views = []; + const viewId = line.split(` `)[1]; + genUi.views = [...new Set([...genUi.views, viewId])]; + return false; + } + return true; + }) + .join(`\n`); + if (genUi.views) { + newTsx = `import GenUiView from '@/_cofounder/genui/genui-view';\n${newTsx}`; + for (let viewId of genUi.views) { + newTsx = newTsx.replaceAll(`<${viewId}`, ` { + if (line.includes(`@/components/sections/`)) { + if (!genUi.sections) genUi.sections = []; + const sectionId = line.split(` `)[1]; + genUi.sections = [...new Set([...genUi.sections, sectionId])]; + return false; + } + return true; + }) + .join(`\n`); + if (genUi.sections) { + newTsx = `import GenUiSection from '@/_cofounder/genui/genui-section';\n${newTsx}`; + for (let sectionId of genUi.sections) { + newTsx = newTsx.replaceAll( + `<${sectionId}`, + ` GenUiView will call : @/_cofounder/generated/views/ + > @/_cofounder/generated/views/* will call GenUiSection + > GenUiSection will call @/_cofounder/generated/sections/ + */ + code = code.replaceAll( + `{COFOUNDER_LOCAL_API_BASE_URL}`, + `http://localhost:667`, + ); + if (path.includes(`src/App.tsx`)) { + return await editSectionsAndViews({ path, code }); + } + if ( + path.includes(`_cofounder/generated/views`) || + path.includes(`_cofounder/generated/sections`) + ) { + return await editSectionsAndViews({ path, code }); + } + /* + if ( + path.includes(`src/App.tsx`) + || path.includes(`src/components/views/`) + || path.includes(`src/components/sections/`) + || path.includes(`@/_cofounder/generated/views/`) + || path.includes(`@/_cofounder/generated/sections/`) + ) { + return await editSectionsAndViews({ path , code }); + } + */ + return code; + }, +}; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/assets/cofounder.webp b/cofounder/boilerplate/vitereact-boilerplate/src/assets/cofounder.webp new file mode 100644 index 0000000000000000000000000000000000000000..dbb11d49b65bd7f8379984cf148dbf13ecf9be02 GIT binary patch literal 138694 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
t+SwpBlMdNn&BjS1D|nANv00J{(F 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 CdFOWk literal 0 HcmV?d00001 diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/accordion.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/accordion.tsx new file mode 100644 index 0000000..e6cae02 --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/accordion.tsx @@ -0,0 +1,56 @@ +import * as React from "react"; +import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { ChevronDown } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Accordion = AccordionPrimitive.Root; + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AccordionItem.displayName = "AccordionItem"; + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180", + className, + )} + {...props} + > + {children} + + + +)); +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
{children}
+
+)); + +AccordionContent.displayName = AccordionPrimitive.Content.displayName; + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert-dialog.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..8715b9c --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert-dialog.tsx @@ -0,0 +1,136 @@ +import * as React from "react"; +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; + +import { cn } from "@/lib/utils"; +import { buttonVariants } from "@/components/ui/button"; + +const AlertDialog = AlertDialogPrimitive.Root; + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger; + +const AlertDialogPortal = AlertDialogPrimitive.Portal; + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName; + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)); +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; + +const AlertDialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +AlertDialogHeader.displayName = "AlertDialogHeader"; + +const AlertDialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +AlertDialogFooter.displayName = "AlertDialogFooter"; + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogDescription.displayName = + AlertDialogPrimitive.Description.displayName; + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +}; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert.tsx new file mode 100644 index 0000000..a0bd5c0 --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/alert.tsx @@ -0,0 +1,60 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const alertVariants = cva( + "relative w-full rounded-lg border border-neutral-200 p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-neutral-950 dark:border-neutral-800 dark:[&>svg]:text-neutral-50", + { + variants: { + variant: { + default: + "bg-white text-neutral-950 dark:bg-neutral-950 dark:text-neutral-50", + destructive: + "border-red-500/50 text-red-500 dark:border-red-500 [&>svg]:text-red-500 dark:border-red-900/50 dark:text-red-900 dark:dark:border-red-900 dark:[&>svg]:text-red-900", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
+)); +Alert.displayName = "Alert"; + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +AlertTitle.displayName = "AlertTitle"; + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +AlertDescription.displayName = "AlertDescription"; + +export { Alert, AlertTitle, AlertDescription }; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/aspect-ratio.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..c9e6f4b --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,5 @@ +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"; + +const AspectRatio = AspectRatioPrimitive.Root; + +export { AspectRatio }; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/avatar.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/avatar.tsx new file mode 100644 index 0000000..802d5bc --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/avatar.tsx @@ -0,0 +1,48 @@ +import * as React from "react"; +import * as AvatarPrimitive from "@radix-ui/react-avatar"; + +import { cn } from "@/lib/utils"; + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +Avatar.displayName = AvatarPrimitive.Root.displayName; + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AvatarImage.displayName = AvatarPrimitive.Image.displayName; + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName; + +export { Avatar, AvatarImage, AvatarFallback }; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/badge.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/badge.tsx new file mode 100644 index 0000000..86576be --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const badgeVariants = cva( + "inline-flex items-center rounded-full border border-neutral-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 dark:border-neutral-800 dark:focus:ring-neutral-300", + { + variants: { + variant: { + default: + "border-transparent bg-neutral-900 text-neutral-50 hover:bg-neutral-900/80 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/80", + secondary: + "border-transparent bg-neutral-100 text-neutral-900 hover:bg-neutral-100/80 dark:bg-neutral-800 dark:text-neutral-50 dark:hover:bg-neutral-800/80", + destructive: + "border-transparent bg-red-500 text-neutral-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-neutral-50 dark:hover:bg-red-900/80", + outline: "text-neutral-950 dark:text-neutral-50", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ); +} + +export { Badge, badgeVariants }; diff --git a/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/breadcrumb.tsx b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..763ec37 --- /dev/null +++ b/cofounder/boilerplate/vitereact-boilerplate/src/components/ui/breadcrumb.tsx @@ -0,0 +1,118 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { ChevronRight, MoreHorizontal } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Breadcrumb = React.forwardRef< + HTMLElement, + React.ComponentPropsWithoutRef<"nav"> & { + separator?: React.ReactNode; + } +>(({ ...props }, ref) =>