zyflow 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-flow/metrics/agent-metrics.json +1 -0
- package/.claude-flow/metrics/performance.json +87 -0
- package/.claude-flow/metrics/system-metrics.json +4370 -0
- package/.claude-flow/metrics/task-metrics.json +10 -0
- package/.claude-plugin/marketplace.json +18 -0
- package/.claude-plugin/plugin.json +17 -0
- package/.gitleaks.toml +69 -0
- package/.hive-mind/config/queens.json +59 -0
- package/.hive-mind/config/workers.json +72 -0
- package/.hive-mind/config.json +111 -0
- package/.hive-mind/hive.db +0 -0
- package/.hive-mind/hive.db-shm +0 -0
- package/.hive-mind/hive.db-wal +0 -0
- package/.leann/indexes/zyflow/documents.ids.txt +2078 -0
- package/.leann/indexes/zyflow/documents.index +0 -0
- package/.leann/indexes/zyflow/documents.leann.meta.json +25 -0
- package/.leann/indexes/zyflow/documents.leann.passages.idx +0 -0
- package/.leann/indexes/zyflow/documents.leann.passages.jsonl +2078 -0
- package/.mcp.json +41 -0
- package/.moai-backups/20260126_231508/.mcp.json +11 -0
- package/.moai-backups/20260126_231508/backup_metadata.json +34 -0
- package/.moai-backups/20260129_145438/.mcp.json +41 -0
- package/.moai-backups/20260129_145438/backup_metadata.json +53 -0
- package/.moai-backups/20260129_145504/.mcp.json +41 -0
- package/.moai-backups/20260129_145504/backup_metadata.json +20 -0
- package/.moai-backups/20260201_140004/.mcp.json +41 -0
- package/.moai-backups/20260201_140004/backup_metadata.json +51 -0
- package/.moai-backups/backup/.mcp.json +12 -0
- package/.moai-backups/settings-backup/settings.local.json +61 -0
- package/.pre-commit-config.yaml +74 -0
- package/.prettierignore +3 -0
- package/.prettierrc +7 -0
- package/.scannerwork/.sonar_lock +0 -0
- package/.scannerwork/report-task.txt +6 -0
- package/.serena/project.yml +105 -0
- package/.shadcn-admin-ref/.env.example +1 -0
- package/.shadcn-admin-ref/.prettierignore +18 -0
- package/.shadcn-admin-ref/.prettierrc +50 -0
- package/.shadcn-admin-ref/LICENSE +21 -0
- package/.shadcn-admin-ref/components.json +21 -0
- package/.shadcn-admin-ref/cz.yaml +7 -0
- package/.shadcn-admin-ref/eslint.config.js +59 -0
- package/.shadcn-admin-ref/index.html +80 -0
- package/.shadcn-admin-ref/knip.config.ts +8 -0
- package/.shadcn-admin-ref/netlify.toml +4 -0
- package/.shadcn-admin-ref/package.json +83 -0
- package/.shadcn-admin-ref/public/images/favicon.png +0 -0
- package/.shadcn-admin-ref/public/images/favicon.svg +4 -0
- package/.shadcn-admin-ref/public/images/favicon_light.png +0 -0
- package/.shadcn-admin-ref/public/images/favicon_light.svg +1 -0
- package/.shadcn-admin-ref/public/images/shadcn-admin.png +0 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-discord.tsx +28 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-docker.tsx +33 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-facebook.tsx +25 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-figma.tsx +27 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-github.tsx +25 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-gitlab.tsx +25 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-gmail.tsx +28 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-medium.tsx +30 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-notion.tsx +28 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-skype.tsx +26 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-slack.tsx +28 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-stripe.tsx +25 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-telegram.tsx +25 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-trello.tsx +27 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-whatsapp.tsx +26 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/icon-zoom.tsx +26 -0
- package/.shadcn-admin-ref/src/assets/brand-icons/index.ts +16 -0
- package/.shadcn-admin-ref/src/assets/clerk-full-logo.tsx +41 -0
- package/.shadcn-admin-ref/src/assets/clerk-logo.tsx +23 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-dir.tsx +110 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-layout-compact.tsx +131 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-layout-default.tsx +124 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-layout-full.tsx +100 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-sidebar-floating.tsx +82 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-sidebar-inset.tsx +58 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-sidebar-sidebar.tsx +53 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-theme-dark.tsx +79 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-theme-light.tsx +78 -0
- package/.shadcn-admin-ref/src/assets/custom/icon-theme-system.tsx +116 -0
- package/.shadcn-admin-ref/src/assets/logo.tsx +24 -0
- package/.shadcn-admin-ref/src/components/coming-soon.tsx +16 -0
- package/.shadcn-admin-ref/src/components/command-menu.tsx +91 -0
- package/.shadcn-admin-ref/src/components/config-drawer.tsx +354 -0
- package/.shadcn-admin-ref/src/components/confirm-dialog.tsx +67 -0
- package/.shadcn-admin-ref/src/components/data-table/bulk-actions.tsx +213 -0
- package/.shadcn-admin-ref/src/components/data-table/column-header.tsx +74 -0
- package/.shadcn-admin-ref/src/components/data-table/faceted-filter.tsx +146 -0
- package/.shadcn-admin-ref/src/components/data-table/index.ts +6 -0
- package/.shadcn-admin-ref/src/components/data-table/pagination.tsx +130 -0
- package/.shadcn-admin-ref/src/components/data-table/toolbar.tsx +85 -0
- package/.shadcn-admin-ref/src/components/data-table/view-options.tsx +56 -0
- package/.shadcn-admin-ref/src/components/date-picker.tsx +51 -0
- package/.shadcn-admin-ref/src/components/layout/app-sidebar.tsx +37 -0
- package/.shadcn-admin-ref/src/components/layout/app-title.tsx +64 -0
- package/.shadcn-admin-ref/src/components/layout/authenticated-layout.tsx +42 -0
- package/.shadcn-admin-ref/src/components/layout/data/sidebar-data.ts +205 -0
- package/.shadcn-admin-ref/src/components/layout/header.tsx +50 -0
- package/.shadcn-admin-ref/src/components/layout/main.tsx +27 -0
- package/.shadcn-admin-ref/src/components/layout/nav-group.tsx +185 -0
- package/.shadcn-admin-ref/src/components/layout/nav-user.tsx +124 -0
- package/.shadcn-admin-ref/src/components/layout/team-switcher.tsx +86 -0
- package/.shadcn-admin-ref/src/components/layout/top-nav.tsx +67 -0
- package/.shadcn-admin-ref/src/components/layout/types.ts +44 -0
- package/.shadcn-admin-ref/src/components/learn-more.tsx +44 -0
- package/.shadcn-admin-ref/src/components/long-text.tsx +84 -0
- package/.shadcn-admin-ref/src/components/navigation-progress.tsx +25 -0
- package/.shadcn-admin-ref/src/components/password-input.tsx +42 -0
- package/.shadcn-admin-ref/src/components/profile-dropdown.tsx +75 -0
- package/.shadcn-admin-ref/src/components/search.tsx +37 -0
- package/.shadcn-admin-ref/src/components/select-dropdown.tsx +62 -0
- package/.shadcn-admin-ref/src/components/sign-out-dialog.tsx +38 -0
- package/.shadcn-admin-ref/src/components/skip-to-main.tsx +10 -0
- package/.shadcn-admin-ref/src/components/theme-switch.tsx +58 -0
- package/.shadcn-admin-ref/src/components/ui/alert-dialog.tsx +154 -0
- package/.shadcn-admin-ref/src/components/ui/alert.tsx +65 -0
- package/.shadcn-admin-ref/src/components/ui/avatar.tsx +50 -0
- package/.shadcn-admin-ref/src/components/ui/badge.tsx +45 -0
- package/.shadcn-admin-ref/src/components/ui/button.tsx +58 -0
- package/.shadcn-admin-ref/src/components/ui/calendar.tsx +210 -0
- package/.shadcn-admin-ref/src/components/ui/card.tsx +91 -0
- package/.shadcn-admin-ref/src/components/ui/checkbox.tsx +29 -0
- package/.shadcn-admin-ref/src/components/ui/collapsible.tsx +31 -0
- package/.shadcn-admin-ref/src/components/ui/command.tsx +181 -0
- package/.shadcn-admin-ref/src/components/ui/dialog.tsx +142 -0
- package/.shadcn-admin-ref/src/components/ui/dropdown-menu.tsx +254 -0
- package/.shadcn-admin-ref/src/components/ui/form.tsx +164 -0
- package/.shadcn-admin-ref/src/components/ui/input-otp.tsx +74 -0
- package/.shadcn-admin-ref/src/components/ui/input.tsx +20 -0
- package/.shadcn-admin-ref/src/components/ui/label.tsx +23 -0
- package/.shadcn-admin-ref/src/components/ui/popover.tsx +45 -0
- package/.shadcn-admin-ref/src/components/ui/radio-group.tsx +42 -0
- package/.shadcn-admin-ref/src/components/ui/scroll-area.tsx +65 -0
- package/.shadcn-admin-ref/src/components/ui/select.tsx +182 -0
- package/.shadcn-admin-ref/src/components/ui/separator.tsx +25 -0
- package/.shadcn-admin-ref/src/components/ui/sheet.tsx +136 -0
- package/.shadcn-admin-ref/src/components/ui/sidebar.tsx +728 -0
- package/.shadcn-admin-ref/src/components/ui/skeleton.tsx +13 -0
- package/.shadcn-admin-ref/src/components/ui/sonner.tsx +21 -0
- package/.shadcn-admin-ref/src/components/ui/switch.tsx +28 -0
- package/.shadcn-admin-ref/src/components/ui/table.tsx +113 -0
- package/.shadcn-admin-ref/src/components/ui/tabs.tsx +63 -0
- package/.shadcn-admin-ref/src/components/ui/textarea.tsx +17 -0
- package/.shadcn-admin-ref/src/components/ui/tooltip.tsx +60 -0
- package/.shadcn-admin-ref/src/config/fonts.ts +19 -0
- package/.shadcn-admin-ref/src/context/direction-provider.tsx +61 -0
- package/.shadcn-admin-ref/src/context/font-provider.tsx +58 -0
- package/.shadcn-admin-ref/src/context/layout-provider.tsx +85 -0
- package/.shadcn-admin-ref/src/context/search-provider.tsx +46 -0
- package/.shadcn-admin-ref/src/context/theme-provider.tsx +110 -0
- package/.shadcn-admin-ref/src/features/apps/data/apps.tsx +110 -0
- package/.shadcn-admin-ref/src/features/apps/index.tsx +179 -0
- package/.shadcn-admin-ref/src/features/auth/auth-layout.tsx +19 -0
- package/.shadcn-admin-ref/src/features/auth/forgot-password/components/forgot-password-form.tsx +82 -0
- package/.shadcn-admin-ref/src/features/auth/forgot-password/index.tsx +44 -0
- package/.shadcn-admin-ref/src/features/auth/otp/components/otp-form.tsx +100 -0
- package/.shadcn-admin-ref/src/features/auth/otp/index.tsx +44 -0
- package/.shadcn-admin-ref/src/features/auth/sign-in/assets/dashboard-dark.png +0 -0
- package/.shadcn-admin-ref/src/features/auth/sign-in/assets/dashboard-light.png +0 -0
- package/.shadcn-admin-ref/src/features/auth/sign-in/components/user-auth-form.tsx +150 -0
- package/.shadcn-admin-ref/src/features/auth/sign-in/index.tsx +51 -0
- package/.shadcn-admin-ref/src/features/auth/sign-in/sign-in-2.tsx +69 -0
- package/.shadcn-admin-ref/src/features/auth/sign-up/components/sign-up-form.tsx +143 -0
- package/.shadcn-admin-ref/src/features/auth/sign-up/index.tsx +57 -0
- package/.shadcn-admin-ref/src/features/chats/components/new-chat.tsx +127 -0
- package/.shadcn-admin-ref/src/features/chats/data/chat-types.ts +4 -0
- package/.shadcn-admin-ref/src/features/chats/data/convo.json +309 -0
- package/.shadcn-admin-ref/src/features/chats/index.tsx +349 -0
- package/.shadcn-admin-ref/src/features/dashboard/components/analytics-chart.tsx +77 -0
- package/.shadcn-admin-ref/src/features/dashboard/components/analytics.tsx +189 -0
- package/.shadcn-admin-ref/src/features/dashboard/components/overview.tsx +82 -0
- package/.shadcn-admin-ref/src/features/dashboard/components/recent-sales.tsx +83 -0
- package/.shadcn-admin-ref/src/features/dashboard/index.tsx +220 -0
- package/.shadcn-admin-ref/src/features/errors/forbidden.tsx +25 -0
- package/.shadcn-admin-ref/src/features/errors/general-error.tsx +36 -0
- package/.shadcn-admin-ref/src/features/errors/maintenance-error.tsx +19 -0
- package/.shadcn-admin-ref/src/features/errors/not-found-error.tsx +25 -0
- package/.shadcn-admin-ref/src/features/errors/unauthorized-error.tsx +25 -0
- package/.shadcn-admin-ref/src/features/settings/account/account-form.tsx +173 -0
- package/.shadcn-admin-ref/src/features/settings/account/index.tsx +14 -0
- package/.shadcn-admin-ref/src/features/settings/appearance/appearance-form.tsx +162 -0
- package/.shadcn-admin-ref/src/features/settings/appearance/index.tsx +14 -0
- package/.shadcn-admin-ref/src/features/settings/components/content-section.tsx +22 -0
- package/.shadcn-admin-ref/src/features/settings/components/sidebar-nav.tsx +84 -0
- package/.shadcn-admin-ref/src/features/settings/display/display-form.tsx +121 -0
- package/.shadcn-admin-ref/src/features/settings/display/index.tsx +13 -0
- package/.shadcn-admin-ref/src/features/settings/index.tsx +74 -0
- package/.shadcn-admin-ref/src/features/settings/notifications/index.tsx +13 -0
- package/.shadcn-admin-ref/src/features/settings/notifications/notifications-form.tsx +220 -0
- package/.shadcn-admin-ref/src/features/settings/profile/index.tsx +13 -0
- package/.shadcn-admin-ref/src/features/settings/profile/profile-form.tsx +177 -0
- package/.shadcn-admin-ref/src/features/tasks/components/data-table-bulk-actions.tsx +193 -0
- package/.shadcn-admin-ref/src/features/tasks/components/data-table-row-actions.tsx +83 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-columns.tsx +123 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-dialogs.tsx +72 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-import-dialog.tsx +110 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-multi-delete-dialog.tsx +95 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-mutate-drawer.tsx +212 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-primary-buttons.tsx +21 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-provider.tsx +36 -0
- package/.shadcn-admin-ref/src/features/tasks/components/tasks-table.tsx +197 -0
- package/.shadcn-admin-ref/src/features/tasks/data/data.tsx +77 -0
- package/.shadcn-admin-ref/src/features/tasks/data/schema.ts +13 -0
- package/.shadcn-admin-ref/src/features/tasks/data/tasks.ts +29 -0
- package/.shadcn-admin-ref/src/features/tasks/index.tsx +41 -0
- package/.shadcn-admin-ref/src/features/users/components/data-table-bulk-actions.tsx +139 -0
- package/.shadcn-admin-ref/src/features/users/components/data-table-row-actions.tsx +63 -0
- package/.shadcn-admin-ref/src/features/users/components/users-action-dialog.tsx +326 -0
- package/.shadcn-admin-ref/src/features/users/components/users-columns.tsx +138 -0
- package/.shadcn-admin-ref/src/features/users/components/users-delete-dialog.tsx +81 -0
- package/.shadcn-admin-ref/src/features/users/components/users-dialogs.tsx +51 -0
- package/.shadcn-admin-ref/src/features/users/components/users-invite-dialog.tsx +150 -0
- package/.shadcn-admin-ref/src/features/users/components/users-multi-delete-dialog.tsx +95 -0
- package/.shadcn-admin-ref/src/features/users/components/users-primary-buttons.tsx +21 -0
- package/.shadcn-admin-ref/src/features/users/components/users-provider.tsx +36 -0
- package/.shadcn-admin-ref/src/features/users/components/users-table.tsx +194 -0
- package/.shadcn-admin-ref/src/features/users/data/data.ts +35 -0
- package/.shadcn-admin-ref/src/features/users/data/schema.ts +32 -0
- package/.shadcn-admin-ref/src/features/users/data/users.ts +33 -0
- package/.shadcn-admin-ref/src/features/users/index.tsx +47 -0
- package/.shadcn-admin-ref/src/hooks/use-dialog-state.tsx +18 -0
- package/.shadcn-admin-ref/src/hooks/use-mobile.tsx +19 -0
- package/.shadcn-admin-ref/src/hooks/use-table-url-state.ts +219 -0
- package/.shadcn-admin-ref/src/lib/cookies.ts +43 -0
- package/.shadcn-admin-ref/src/lib/handle-server-error.ts +24 -0
- package/.shadcn-admin-ref/src/lib/show-submitted-data.tsx +15 -0
- package/.shadcn-admin-ref/src/lib/utils.ts +60 -0
- package/.shadcn-admin-ref/src/main.tsx +107 -0
- package/.shadcn-admin-ref/src/routeTree.gen.ts +719 -0
- package/.shadcn-admin-ref/src/routes/(auth)/forgot-password.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(auth)/otp.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(auth)/sign-in-2.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(auth)/sign-in.tsx +12 -0
- package/.shadcn-admin-ref/src/routes/(auth)/sign-up.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(errors)/401.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(errors)/403.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(errors)/404.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(errors)/500.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/(errors)/503.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/__root.tsx +30 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/apps/index.tsx +17 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/chats/index.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/errors/$error.tsx +45 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/help-center/index.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/index.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/route.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/settings/account.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/settings/appearance.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/settings/display.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/settings/index.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/settings/notifications.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/settings/route.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/tasks/index.tsx +23 -0
- package/.shadcn-admin-ref/src/routes/_authenticated/users/index.tsx +32 -0
- package/.shadcn-admin-ref/src/routes/clerk/(auth)/route.tsx +60 -0
- package/.shadcn-admin-ref/src/routes/clerk/(auth)/sign-in.tsx +14 -0
- package/.shadcn-admin-ref/src/routes/clerk/(auth)/sign-up.tsx +9 -0
- package/.shadcn-admin-ref/src/routes/clerk/_authenticated/route.tsx +6 -0
- package/.shadcn-admin-ref/src/routes/clerk/_authenticated/user-management.tsx +184 -0
- package/.shadcn-admin-ref/src/routes/clerk/route.tsx +135 -0
- package/.shadcn-admin-ref/src/stores/auth-store.ts +53 -0
- package/.shadcn-admin-ref/src/styles/index.css +87 -0
- package/.shadcn-admin-ref/src/styles/theme.css +102 -0
- package/.shadcn-admin-ref/src/tanstack-table.d.ts +10 -0
- package/.shadcn-admin-ref/src/vite-env.d.ts +1 -0
- package/.swarm/memory.db +0 -0
- package/.swarm/memory.db-shm +0 -0
- package/.swarm/memory.db-wal +0 -0
- package/.zyflow/cli-settings.json +30 -0
- package/.zyflow/db.sqlite +0 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765491505852.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765491622627.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765491794652.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765491890392.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765494002879.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765494183887.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765494342052.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765494387244.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765494387245.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765494606176.json +10 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765495967542.json +16 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765495967629.json +16 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765497861143.json +16 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765497861870.json +20 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765498021377.json +18 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765498021660.json +18 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765503255525.json +13 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765503256018.json +13 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765504009102.json +16 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765504492051.json +18 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765504946437.json +16 -0
- package/.zyflow/logs/add-gitdiagram-integration/1633-1765504946640.json +16 -0
- package/.zyflow/logs/add-gitdiagram-integration/1634-1765505950215.json +16 -0
- package/.zyflow/logs/add-gitdiagram-integration/1634-1765505950948.json +18 -0
- package/.zyflow/logs/add-gitdiagram-integration/1635-1765505971712.json +18 -0
- package/.zyflow/logs/add-gitdiagram-integration/1635-1765505971976.json +18 -0
- package/.zyflow/logs/add-gitdiagram-integration/1636-1765505986208.json +18 -0
- package/.zyflow/logs/add-gitdiagram-integration/1636-1765505986620.json +16 -0
- package/.zyflow/logs/integrate-claude-flow/3580-1765996816612.json +10 -0
- package/.zyflow/logs/integrate-claude-flow/3580-1766014825819.json +10 -0
- package/.zyflow/logs/integrate-claude-flow/3580-1766015183794.json +12 -0
- package/.zyflow/logs/integrate-claude-flow/3580-1766015474608.json +12 -0
- package/.zyflow/logs/integrate-claude-flow/3581-1766016502824.json +63 -0
- package/.zyflow/logs/integrate-claude-flow/3581-1766016576008.json +60 -0
- package/.zyflow/logs/integrate-claude-flow/3582-1766022737754.json +110 -0
- package/.zyflow/logs/integrate-claude-flow/3582-1766022809327.json +135 -0
- package/.zyflow/sessions.json +242 -0
- package/.zyflow/settings.json +6 -0
- package/.zyflow/tasks.db +0 -0
- package/.zyflow/tasks.db-shm +0 -0
- package/.zyflow/tasks.db-wal +0 -0
- package/.zyflow/zyflow.sqlite +0 -0
- package/Dockerfile +82 -0
- package/LICENSE +21 -0
- package/README.md +506 -0
- package/claude-flow +34 -0
- package/components.json +21 -0
- package/config/ports.ts +28 -0
- package/docker-compose.yml +52 -0
- package/eslint.config.js +34 -0
- package/index.html +19 -0
- package/logs/mcp-error.log +55 -0
- package/logs/mcp-out.log +0 -0
- package/logs/pm2-error.log +0 -0
- package/logs/pm2-out.log +265 -0
- package/logs/py-error.log +22 -0
- package/logs/py-out.log +0 -0
- package/logs/server-error.log +11000 -0
- package/logs/server-out.log +8117 -0
- package/logs/vite-error.log +404 -0
- package/logs/vite-out.log +311 -0
- package/mcp-server/agent-tools.ts +375 -0
- package/mcp-server/cli-models.ts +193 -0
- package/mcp-server/context.ts +110 -0
- package/mcp-server/diagram-tools.ts +341 -0
- package/mcp-server/index.ts +2014 -0
- package/mcp-server/integration-tools.ts +909 -0
- package/mcp-server/moai-spec-tools.ts +416 -0
- package/mcp-server/parser.ts +422 -0
- package/mcp-server/post-task-runner.ts +253 -0
- package/mcp-server/post-task-types.ts +426 -0
- package/mcp-server/quarantine-manager.ts +479 -0
- package/mcp-server/report-generator.ts +386 -0
- package/mcp-server/task-tools.ts +619 -0
- package/mcp-server/trigger-config.ts +288 -0
- package/mcp-server/trigger-router.ts +305 -0
- package/mcp-server/triggers/event-listener.ts +331 -0
- package/mcp-server/triggers/git-hooks.ts +283 -0
- package/mcp-server/triggers/scheduler.ts +289 -0
- package/mcp-server/types.ts +55 -0
- package/memory/claude-flow@alpha-data.json +5 -0
- package/nginx/zyflow.conf +144 -0
- package/openspec/config.yaml +78 -0
- package/openspec-backup.tar.gz +0 -0
- package/package.json +154 -0
- package/packages/gitdiagram-core/.claude-flow/metrics/agent-metrics.json +1 -0
- package/packages/gitdiagram-core/.claude-flow/metrics/performance.json +87 -0
- package/packages/gitdiagram-core/.claude-flow/metrics/task-metrics.json +10 -0
- package/packages/gitdiagram-core/package.json +41 -0
- package/packages/gitdiagram-core/src/file-tree.ts +272 -0
- package/packages/gitdiagram-core/src/generator.ts +283 -0
- package/packages/gitdiagram-core/src/index.ts +78 -0
- package/packages/gitdiagram-core/src/llm-adapter.ts +235 -0
- package/packages/gitdiagram-core/src/mermaid-utils.ts +304 -0
- package/packages/gitdiagram-core/src/prompts.ts +281 -0
- package/packages/zyflow-parser/package.json +34 -0
- package/packages/zyflow-parser/src/index.ts +26 -0
- package/packages/zyflow-parser/src/moai-parser.ts +603 -0
- package/packages/zyflow-parser/src/moai-types.ts +110 -0
- package/packages/zyflow-remote-plugin/.claude-flow/metrics/agent-metrics.json +1 -0
- package/packages/zyflow-remote-plugin/.claude-flow/metrics/performance.json +87 -0
- package/packages/zyflow-remote-plugin/.claude-flow/metrics/task-metrics.json +10 -0
- package/packages/zyflow-remote-plugin/package.json +31 -0
- package/packages/zyflow-remote-plugin/src/index.ts +71 -0
- package/packages/zyflow-remote-plugin/src/remote-config.ts +232 -0
- package/packages/zyflow-remote-plugin/src/router.ts +535 -0
- package/packages/zyflow-remote-plugin/src/ssh-config-parser.ts +123 -0
- package/packages/zyflow-remote-plugin/src/ssh-manager.ts +598 -0
- package/packages/zyflow-remote-plugin/src/types.ts +149 -0
- package/plugin/manifest.json +26 -0
- package/plugin/package.json +13 -0
- package/public/favicon.svg +4 -0
- package/server/adk/agents/error-analyzer.ts +223 -0
- package/server/adk/agents/fix-generator.ts +187 -0
- package/server/adk/agents/pr-agent.ts +264 -0
- package/server/adk/agents/validator.ts +187 -0
- package/server/adk/config.ts +43 -0
- package/server/adk/index.ts +69 -0
- package/server/adk/integration.ts +297 -0
- package/server/adk/orchestrator.ts +405 -0
- package/server/adk/tools/build-tools.ts +290 -0
- package/server/adk/tools/file-tools.ts +351 -0
- package/server/adk/tools/git-tools.ts +280 -0
- package/server/adk/tools/github-tools.ts +249 -0
- package/server/agents/agent-monitor.ts +416 -0
- package/server/agents/alert-integration.ts +312 -0
- package/server/agents/error-analyzer.ts +472 -0
- package/server/agents/error-detector.ts +442 -0
- package/server/agents/fix-generator.ts +421 -0
- package/server/agents/fix-validator.ts +428 -0
- package/server/agents/merge-policy.ts +362 -0
- package/server/agents/pr-workflow.ts +476 -0
- package/server/agents/prompts/error-analysis.ts +393 -0
- package/server/ai/gemini-client.ts +499 -0
- package/server/ai/index.ts +317 -0
- package/server/ai/types.ts +137 -0
- package/server/app.ts +3693 -0
- package/server/archive-manager.ts +604 -0
- package/server/backlog/index.ts +7 -0
- package/server/backlog/migration.ts +331 -0
- package/server/backlog/parser.ts +323 -0
- package/server/backlog/sync.ts +325 -0
- package/server/change-log.ts +868 -0
- package/server/claude-flow/index.ts +12 -0
- package/server/claude-flow/prompt-builder.ts +407 -0
- package/server/claude-flow/types.ts +33 -0
- package/server/cli-adapter/index.ts +11 -0
- package/server/cli-adapter/process-manager.ts +612 -0
- package/server/cli-adapter/profile-manager.ts +286 -0
- package/server/cli-adapter/routes.ts +561 -0
- package/server/cli-adapter/types.ts +226 -0
- package/server/config.d.ts +18 -0
- package/server/config.js +79 -0
- package/server/config.ts +262 -0
- package/server/flow-sync.ts +543 -0
- package/server/git/change-workflow.ts +446 -0
- package/server/git/commands.ts +370 -0
- package/server/git/github.ts +247 -0
- package/server/git/index.ts +1202 -0
- package/server/git/status.ts +322 -0
- package/server/index.ts +136 -0
- package/server/integrations/crypto.ts +142 -0
- package/server/integrations/db/client.ts +169 -0
- package/server/integrations/db/schema.ts +167 -0
- package/server/integrations/env-parser.ts +365 -0
- package/server/integrations/index.ts +101 -0
- package/server/integrations/keychain.ts +239 -0
- package/server/integrations/local/file-utils.ts +383 -0
- package/server/integrations/local/index.ts +64 -0
- package/server/integrations/local/resolver.ts +439 -0
- package/server/integrations/local/types.ts +122 -0
- package/server/integrations/routes.ts +1100 -0
- package/server/integrations/service-patterns.ts +771 -0
- package/server/integrations/services/accounts.ts +356 -0
- package/server/integrations/services/env-import.ts +279 -0
- package/server/integrations/services/projects.ts +552 -0
- package/server/integrations/services/system-import.ts +1110 -0
- package/server/migrations/ears-generator.ts +491 -0
- package/server/migrations/gherkin-generator.ts +605 -0
- package/server/migrations/index.ts +73 -0
- package/server/migrations/migrate-spec-format.ts +492 -0
- package/server/migrations/openspec-parser.ts +542 -0
- package/server/migrations/tag-generator.ts +474 -0
- package/server/moai-specs.ts +487 -0
- package/server/moai-watcher.ts +145 -0
- package/server/parser-debug.ts +37 -0
- package/server/parser-utils.ts +316 -0
- package/server/parser.d.ts +17 -0
- package/server/parser.js +221 -0
- package/server/parser.ts +342 -0
- package/server/remote-watcher.ts +367 -0
- package/server/replay-engine.ts +915 -0
- package/server/routes/alerts.ts +1028 -0
- package/server/routes/changes.ts +812 -0
- package/server/routes/docs.ts +898 -0
- package/server/routes/flow.ts +2814 -0
- package/server/routes/global-chat.ts +162 -0
- package/server/routes/leann.ts +327 -0
- package/server/routes/projects.ts +1282 -0
- package/server/routes/search.ts +266 -0
- package/server/routes/specs.ts +482 -0
- package/server/routes/webhooks.ts +579 -0
- package/server/server/parser.js +265 -0
- package/server/services/githubActionsPoller.ts +797 -0
- package/server/services/slackNotifier.ts +476 -0
- package/server/src/types/index.js +1 -0
- package/server/sync-tasks.ts +741 -0
- package/server/tasks/cli/commands.ts +269 -0
- package/server/tasks/cli/index.ts +152 -0
- package/server/tasks/core/search.ts +81 -0
- package/server/tasks/core/task.ts +307 -0
- package/server/tasks/db/client.ts +1008 -0
- package/server/tasks/db/schema.ts +572 -0
- package/server/tasks/index.ts +24 -0
- package/server/tasks.db +0 -0
- package/server/types/archive.ts +136 -0
- package/server/types/change-log.ts +643 -0
- package/server/types/spec.ts +188 -0
- package/server/unified-spec-scanner.ts +753 -0
- package/server/utils/crypto.ts +179 -0
- package/server/utils/webhook-verify.ts +216 -0
- package/server/watcher.ts +132 -0
- package/server/websocket.ts +99 -0
- package/server-output.log +6 -0
- package/sonar-project.properties +18 -0
- package/src/App.tsx +386 -0
- package/src/api/client.ts +346 -0
- package/src/api/error-interceptor.ts +366 -0
- package/src/api/errors.ts +123 -0
- package/src/api/flow.ts +233 -0
- package/src/api/offline-queue.ts +351 -0
- package/src/api/retry-logic.ts +233 -0
- package/src/components/OfflineModeBanner.tsx +159 -0
- package/src/components/SSEStatusIndicator.tsx +194 -0
- package/src/components/agent/AgentChat.tsx +243 -0
- package/src/components/agent/AgentPage.tsx +182 -0
- package/src/components/agent/AgentSidebar.tsx +231 -0
- package/src/components/agent/index.ts +7 -0
- package/src/components/alerts/AlertCenter.tsx +239 -0
- package/src/components/alerts/AlertDashboard.tsx +211 -0
- package/src/components/alerts/AlertDetail.tsx +474 -0
- package/src/components/alerts/AlertList.tsx +113 -0
- package/src/components/alerts/AlertSettings.tsx +336 -0
- package/src/components/alerts/index.ts +5 -0
- package/src/components/chat/ChatPanel.tsx +642 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/cli/AddCustomCLIDialog.tsx +210 -0
- package/src/components/cli/CLISelector.tsx +187 -0
- package/src/components/cli/index.ts +8 -0
- package/src/components/dashboard/ArchivedChangeList.tsx +102 -0
- package/src/components/dashboard/ArchivedChangeViewer.tsx +184 -0
- package/src/components/dashboard/ArchivedChangesPage.tsx +31 -0
- package/src/components/dashboard/ChangeList.tsx +86 -0
- package/src/components/dashboard/ThemeToggle.tsx +33 -0
- package/src/components/diagram/DiagramViewer.tsx +256 -0
- package/src/components/diagram/MermaidRenderer.tsx +163 -0
- package/src/components/diagram/ProjectDiagramTab.tsx +161 -0
- package/src/components/diagram/index.ts +13 -0
- package/src/components/errors/ErrorBoundary.tsx +276 -0
- package/src/components/errors/ErrorFallback.tsx +198 -0
- package/src/components/errors/ErrorToast.tsx +221 -0
- package/src/components/flow/BacklogView.tsx +1142 -0
- package/src/components/flow/ChangeDetail.tsx +475 -0
- package/src/components/flow/ChangeItem.tsx +230 -0
- package/src/components/flow/ChangeList.tsx +92 -0
- package/src/components/flow/ExecutionHistoryDialog.tsx +224 -0
- package/src/components/flow/FlowContent.tsx +212 -0
- package/src/components/flow/FlowPage.tsx +9 -0
- package/src/components/flow/PipelineBar.tsx +214 -0
- package/src/components/flow/ProjectDashboard.tsx +222 -0
- package/src/components/flow/SpecDetail.tsx +138 -0
- package/src/components/flow/SpecDetailTabs.tsx +176 -0
- package/src/components/flow/SpecItem.tsx +93 -0
- package/src/components/flow/SpecProgressBar.tsx +47 -0
- package/src/components/flow/StageContent.tsx +620 -0
- package/src/components/flow/StandaloneTasks.tsx +960 -0
- package/src/components/flow/TaskExecutionDialog.tsx +1204 -0
- package/src/components/flow/index.ts +9 -0
- package/src/components/flow/task-execution/AgentSlider.tsx +37 -0
- package/src/components/flow/task-execution/ConsensusSettings.tsx +129 -0
- package/src/components/flow/task-execution/ExecutionOutput.tsx +398 -0
- package/src/components/flow/task-execution/ModelSelector.tsx +134 -0
- package/src/components/flow/task-execution/ProviderSelector.tsx +137 -0
- package/src/components/flow/task-execution/RecommendationBanner.tsx +71 -0
- package/src/components/flow/task-execution/StatusBadge.tsx +43 -0
- package/src/components/flow/task-execution/StrategySelector.tsx +48 -0
- package/src/components/flow/task-execution/SwarmSummary.tsx +55 -0
- package/src/components/flow/task-execution/index.ts +14 -0
- package/src/components/flow/task-execution/types.ts +56 -0
- package/src/components/git/ChangeWorkflowDialog.tsx +582 -0
- package/src/components/git/ConflictResolutionDialog.tsx +398 -0
- package/src/components/git/GitBranchSelector.tsx +212 -0
- package/src/components/git/GitCommitDialog.tsx +254 -0
- package/src/components/git/GitStatusBadge.tsx +148 -0
- package/src/components/git/GitSyncButton.tsx +128 -0
- package/src/components/git/RemoteStatusBanner.tsx +143 -0
- package/src/components/git/index.ts +9 -0
- package/src/components/integrations/EnvImportDialog.tsx +524 -0
- package/src/components/integrations/EnvironmentDialog.tsx +227 -0
- package/src/components/integrations/IntegrationBadges.tsx +91 -0
- package/src/components/integrations/IntegrationsSettings.tsx +55 -0
- package/src/components/integrations/ProjectIntegrations.tsx +481 -0
- package/src/components/integrations/ServiceAccountDialog.tsx +422 -0
- package/src/components/integrations/ServiceAccountList.tsx +305 -0
- package/src/components/integrations/SystemImportDialog.tsx +436 -0
- package/src/components/integrations/TestAccountDialog.tsx +162 -0
- package/src/components/integrations/index.ts +6 -0
- package/src/components/layout/AppSidebar.tsx +284 -0
- package/src/components/layout/FlowSidebar.tsx +435 -0
- package/src/components/layout/GlobalCommandPalette.tsx +410 -0
- package/src/components/layout/MenuBar.tsx +227 -0
- package/src/components/layout/StatusBar.tsx +226 -0
- package/src/components/monitoring/ErrorDashboard.tsx +274 -0
- package/src/components/monitoring/ErrorDetailPanel.tsx +200 -0
- package/src/components/monitoring/ErrorFilters.tsx +219 -0
- package/src/components/monitoring/ErrorHistoryList.tsx +141 -0
- package/src/components/monitoring/ErrorStats.tsx +249 -0
- package/src/components/remote/RemoteFileBrowser.tsx +249 -0
- package/src/components/remote/RemoteServerDialog.tsx +234 -0
- package/src/components/remote/RemoteServerList.tsx +366 -0
- package/src/components/remote/index.ts +7 -0
- package/src/components/settings/CLISettings.tsx +522 -0
- package/src/components/settings/CustomCLIDialog.tsx +548 -0
- package/src/components/settings/IntegrationsSettings.tsx +51 -0
- package/src/components/settings/ProjectSettings.tsx +441 -0
- package/src/components/settings/ProjectsSettings.tsx +541 -0
- package/src/components/settings/SearchSettings.tsx +272 -0
- package/src/components/settings/SettingsPage.tsx +68 -0
- package/src/components/settings/index.ts +5 -0
- package/src/components/swarm/ExecutionPanel.tsx +284 -0
- package/src/components/swarm/LogViewer.tsx +196 -0
- package/src/components/swarm/ProgressIndicator.tsx +111 -0
- package/src/components/swarm/index.ts +3 -0
- package/src/components/tasks/ArchiveTable.tsx +203 -0
- package/src/components/tasks/KanbanBoard.tsx +264 -0
- package/src/components/tasks/TaskCard.tsx +138 -0
- package/src/components/tasks/TaskColumn.tsx +81 -0
- package/src/components/tasks/TaskDialog.tsx +274 -0
- package/src/components/tasks/index.ts +5 -0
- package/src/components/tasks/types.ts +43 -0
- package/src/components/ui/alert-dialog.tsx +154 -0
- package/src/components/ui/alert.tsx +65 -0
- package/src/components/ui/badge.tsx +45 -0
- package/src/components/ui/button.tsx +58 -0
- package/src/components/ui/card.tsx +91 -0
- package/src/components/ui/checkbox.tsx +29 -0
- package/src/components/ui/collapsible.tsx +31 -0
- package/src/components/ui/command.tsx +184 -0
- package/src/components/ui/confirm-dialog.tsx +55 -0
- package/src/components/ui/dialog.tsx +142 -0
- package/src/components/ui/dropdown-menu.tsx +254 -0
- package/src/components/ui/input.tsx +20 -0
- package/src/components/ui/label.tsx +22 -0
- package/src/components/ui/markdown.tsx +100 -0
- package/src/components/ui/progress.tsx +27 -0
- package/src/components/ui/resizable-sidebar.tsx +156 -0
- package/src/components/ui/resizable.tsx +54 -0
- package/src/components/ui/right-resizable-sidebar.tsx +158 -0
- package/src/components/ui/scroll-area.tsx +64 -0
- package/src/components/ui/select.tsx +185 -0
- package/src/components/ui/separator.tsx +25 -0
- package/src/components/ui/sheet.tsx +136 -0
- package/src/components/ui/sidebar.tsx +726 -0
- package/src/components/ui/skeleton.tsx +13 -0
- package/src/components/ui/slider.tsx +56 -0
- package/src/components/ui/switch.tsx +29 -0
- package/src/components/ui/table.tsx +113 -0
- package/src/components/ui/tabs.tsx +63 -0
- package/src/components/ui/textarea.tsx +17 -0
- package/src/components/ui/tooltip.tsx +60 -0
- package/src/config/api.ts +83 -0
- package/src/constants/error-codes.ts +255 -0
- package/src/constants/stages.ts +27 -0
- package/src/context/ErrorContext.tsx +185 -0
- package/src/context/theme-provider.tsx +63 -0
- package/src/hooks/use-mobile.tsx +19 -0
- package/src/hooks/useAI.ts +206 -0
- package/src/hooks/useAgentSession.ts +431 -0
- package/src/hooks/useAlerts.ts +935 -0
- package/src/hooks/useArchivedChanges.ts +39 -0
- package/src/hooks/useAsyncError.ts +45 -0
- package/src/hooks/useChangeGit.ts +727 -0
- package/src/hooks/useChanges.ts +20 -0
- package/src/hooks/useClaude.ts +130 -0
- package/src/hooks/useDocs.ts +182 -0
- package/src/hooks/useErrorDashboard.ts +243 -0
- package/src/hooks/useErrorHandler.ts +150 -0
- package/src/hooks/useExecutionHistory.ts +55 -0
- package/src/hooks/useFlowChanges.ts +850 -0
- package/src/hooks/useFlowItems.ts +205 -0
- package/src/hooks/useGit.ts +427 -0
- package/src/hooks/useHideCompletedSpecs.ts +15 -0
- package/src/hooks/useInstance.ts +40 -0
- package/src/hooks/useIntegrations.ts +737 -0
- package/src/hooks/useLeannStatus.ts +93 -0
- package/src/hooks/useNetworkStatus.ts +167 -0
- package/src/hooks/useProjects.ts +353 -0
- package/src/hooks/useRemoteServers.ts +383 -0
- package/src/hooks/useSSEConnection.ts +346 -0
- package/src/hooks/useSpecs.ts +39 -0
- package/src/hooks/useSwarm.ts +462 -0
- package/src/hooks/useTasks.ts +137 -0
- package/src/hooks/useURLSync.ts +122 -0
- package/src/hooks/useWebSocket.ts +262 -0
- package/src/lib/utils.ts +121 -0
- package/src/main.tsx +22 -0
- package/src/stores/errorStore.ts +301 -0
- package/src/stores/offlineStore.ts +266 -0
- package/src/stores/sseStore.ts +247 -0
- package/src/stores/useHideCompletedStore.ts +21 -0
- package/src/styles/index.css +87 -0
- package/src/styles/theme.css +102 -0
- package/src/types/ai.ts +191 -0
- package/src/types/errors.ts +253 -0
- package/src/types/flow.ts +382 -0
- package/src/types/index.ts +614 -0
- package/src/utils/error-logger.ts +399 -0
- package/src/utils/error-statistics.ts +305 -0
- package/src/utils/logger.ts +280 -0
- package/src/utils/task-routing.ts +795 -0
- package/src/vite-env.d.ts +1 -0
- package/test-results/.last-run.json +4 -0
- package/tmp/check-docker-final.ts +48 -0
- package/tmp/check-docker-tasks.ts +58 -0
- package/tmp/check-docker-tasks2.ts +48 -0
- package/tmp/check-docker-tasks3.ts +42 -0
- package/tmp/check-mobile-tasks.ts +57 -0
- package/tmp/check-zywiki-tasks.ts +49 -0
- package/tmp/sync-mobile.ts +11 -0
- package/tmp/sync-zywiki.ts +68 -0
- package/tmp/test-docker-parser.ts +15 -0
- package/tmp/test-mobile-parser.ts +28 -0
- package/tmp/test-parser.ts +27 -0
- package/tmp/test-unnumbered.ts +35 -0
- package/zyflow.db +0 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mermaid.js Utilities
|
|
3
|
+
*
|
|
4
|
+
* Validation, parsing, and click event processing for Mermaid diagrams
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export interface ClickEvent {
|
|
8
|
+
/** Node ID in the diagram */
|
|
9
|
+
nodeId: string;
|
|
10
|
+
/** File or directory path */
|
|
11
|
+
path: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface ValidationResult {
|
|
15
|
+
/** Whether the diagram is valid */
|
|
16
|
+
valid: boolean;
|
|
17
|
+
/** Validation errors */
|
|
18
|
+
errors: string[];
|
|
19
|
+
/** Validation warnings */
|
|
20
|
+
warnings: string[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Common Mermaid syntax errors to check for
|
|
25
|
+
*/
|
|
26
|
+
const SYNTAX_CHECKS = [
|
|
27
|
+
{
|
|
28
|
+
// Special characters without quotes in node labels
|
|
29
|
+
pattern: /\[([^\]"]*[()\\<>][^\]"]*)\]/g,
|
|
30
|
+
message: 'Node label contains special characters without quotes',
|
|
31
|
+
severity: 'error' as const,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
// Spaces in relationship labels
|
|
35
|
+
pattern: /-->\|\s+[^|]+\s+\|/g,
|
|
36
|
+
message: 'Relationship label has spaces around content',
|
|
37
|
+
severity: 'warning' as const,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
// Class style on subgraph
|
|
41
|
+
pattern: /subgraph\s+"[^"]*":::/g,
|
|
42
|
+
message: 'Cannot apply class style directly to subgraph declaration',
|
|
43
|
+
severity: 'error' as const,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
// Subgraph with alias
|
|
47
|
+
pattern: /subgraph\s+\w+\s+"[^"]*"/g,
|
|
48
|
+
message: 'Subgraphs cannot have aliases like nodes',
|
|
49
|
+
severity: 'error' as const,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
// Init declaration (should be handled externally)
|
|
53
|
+
pattern: /%%\{init:/g,
|
|
54
|
+
message: 'Init declaration should be handled externally',
|
|
55
|
+
severity: 'warning' as const,
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Validate Mermaid diagram syntax
|
|
61
|
+
*/
|
|
62
|
+
export function validateMermaidSyntax(code: string): ValidationResult {
|
|
63
|
+
const errors: string[] = [];
|
|
64
|
+
const warnings: string[] = [];
|
|
65
|
+
|
|
66
|
+
// Check for empty code
|
|
67
|
+
if (!code.trim()) {
|
|
68
|
+
return {
|
|
69
|
+
valid: false,
|
|
70
|
+
errors: ['Empty diagram code'],
|
|
71
|
+
warnings: [],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Check for diagram type declaration
|
|
76
|
+
const firstLine = code.trim().split('\n')[0];
|
|
77
|
+
const validTypes = [
|
|
78
|
+
'flowchart',
|
|
79
|
+
'graph',
|
|
80
|
+
'sequenceDiagram',
|
|
81
|
+
'classDiagram',
|
|
82
|
+
'stateDiagram',
|
|
83
|
+
'erDiagram',
|
|
84
|
+
'journey',
|
|
85
|
+
'gantt',
|
|
86
|
+
'pie',
|
|
87
|
+
'gitGraph',
|
|
88
|
+
'mindmap',
|
|
89
|
+
'timeline',
|
|
90
|
+
'quadrantChart',
|
|
91
|
+
'requirementDiagram',
|
|
92
|
+
'C4Context',
|
|
93
|
+
'architecture',
|
|
94
|
+
];
|
|
95
|
+
|
|
96
|
+
const hasValidType = validTypes.some(
|
|
97
|
+
(type) =>
|
|
98
|
+
firstLine.startsWith(type) ||
|
|
99
|
+
firstLine.startsWith(`%%`) ||
|
|
100
|
+
firstLine.startsWith('---')
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
if (!hasValidType) {
|
|
104
|
+
warnings.push(
|
|
105
|
+
`First line should be a diagram type declaration (found: "${firstLine.slice(0, 30)}...")`
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Run syntax checks
|
|
110
|
+
for (const check of SYNTAX_CHECKS) {
|
|
111
|
+
const matches = code.match(check.pattern);
|
|
112
|
+
if (matches) {
|
|
113
|
+
const message = `${check.message} (${matches.length} occurrence(s))`;
|
|
114
|
+
if (check.severity === 'error') {
|
|
115
|
+
errors.push(message);
|
|
116
|
+
} else {
|
|
117
|
+
warnings.push(message);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Check for balanced brackets and parentheses
|
|
123
|
+
const brackets = { '[': ']', '(': ')', '{': '}', '"': '"' };
|
|
124
|
+
const stack: string[] = [];
|
|
125
|
+
|
|
126
|
+
for (const char of code) {
|
|
127
|
+
if ('[({'.includes(char)) {
|
|
128
|
+
stack.push(char);
|
|
129
|
+
} else if ('])}'.includes(char)) {
|
|
130
|
+
const expected = brackets[stack.pop() as keyof typeof brackets];
|
|
131
|
+
if (expected !== char) {
|
|
132
|
+
errors.push('Unbalanced brackets/parentheses');
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (stack.length > 0) {
|
|
139
|
+
errors.push('Unclosed brackets/parentheses');
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
valid: errors.length === 0,
|
|
144
|
+
errors,
|
|
145
|
+
warnings,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Extract click events from Mermaid code
|
|
151
|
+
*/
|
|
152
|
+
export function extractClickEvents(code: string): ClickEvent[] {
|
|
153
|
+
const events: ClickEvent[] = [];
|
|
154
|
+
|
|
155
|
+
// Match click events: click NodeId "path"
|
|
156
|
+
const clickPattern = /click\s+(\w+)\s+"([^"]+)"/g;
|
|
157
|
+
|
|
158
|
+
let match;
|
|
159
|
+
while ((match = clickPattern.exec(code)) !== null) {
|
|
160
|
+
events.push({
|
|
161
|
+
nodeId: match[1],
|
|
162
|
+
path: match[2],
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return events;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Add or update click events in Mermaid code
|
|
171
|
+
*/
|
|
172
|
+
export function updateClickEvents(
|
|
173
|
+
code: string,
|
|
174
|
+
events: ClickEvent[]
|
|
175
|
+
): string {
|
|
176
|
+
let result = code;
|
|
177
|
+
|
|
178
|
+
// Remove existing click events section if present
|
|
179
|
+
result = result.replace(/\n\s*%% Click Events[\s\S]*?(?=\n\s*%%|$)/g, '');
|
|
180
|
+
|
|
181
|
+
// Remove individual click events
|
|
182
|
+
result = result.replace(/\n\s*click\s+\w+\s+"[^"]+"/g, '');
|
|
183
|
+
|
|
184
|
+
// Add new click events before styles section or at the end
|
|
185
|
+
if (events.length > 0) {
|
|
186
|
+
const clickSection =
|
|
187
|
+
'\n %% Click Events\n' +
|
|
188
|
+
events.map((e) => ` click ${e.nodeId} "${e.path}"`).join('\n');
|
|
189
|
+
|
|
190
|
+
// Try to insert before styles section
|
|
191
|
+
const stylesMatch = result.match(/\n\s*%% Styles/);
|
|
192
|
+
if (stylesMatch && stylesMatch.index !== undefined) {
|
|
193
|
+
result =
|
|
194
|
+
result.slice(0, stylesMatch.index) +
|
|
195
|
+
clickSection +
|
|
196
|
+
'\n' +
|
|
197
|
+
result.slice(stylesMatch.index);
|
|
198
|
+
} else {
|
|
199
|
+
result = result.trimEnd() + '\n' + clickSection;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Convert file paths to GitHub URLs
|
|
208
|
+
*/
|
|
209
|
+
export function pathsToGitHubUrls(
|
|
210
|
+
code: string,
|
|
211
|
+
repoUrl: string,
|
|
212
|
+
branch: string = 'main'
|
|
213
|
+
): string {
|
|
214
|
+
// Normalize repo URL
|
|
215
|
+
const baseUrl = repoUrl.replace(/\.git$/, '').replace(/\/$/, '');
|
|
216
|
+
|
|
217
|
+
// Extract click events and update paths
|
|
218
|
+
const clickPattern = /click\s+(\w+)\s+"([^"]+)"/g;
|
|
219
|
+
|
|
220
|
+
return code.replace(clickPattern, (match, nodeId, path) => {
|
|
221
|
+
// Skip if already a URL
|
|
222
|
+
if (path.startsWith('http')) {
|
|
223
|
+
return match;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const fullUrl = `${baseUrl}/blob/${branch}/${path}`;
|
|
227
|
+
return `click ${nodeId} "${fullUrl}"`;
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Extract node IDs from Mermaid code
|
|
233
|
+
*/
|
|
234
|
+
export function extractNodeIds(code: string): string[] {
|
|
235
|
+
const nodeIds = new Set<string>();
|
|
236
|
+
|
|
237
|
+
// Match node definitions: NodeId[...] or NodeId(...) or NodeId{...}
|
|
238
|
+
const nodePattern = /^\s*(\w+)\s*[[({]/gm;
|
|
239
|
+
|
|
240
|
+
let match;
|
|
241
|
+
while ((match = nodePattern.exec(code)) !== null) {
|
|
242
|
+
nodeIds.add(match[1]);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return Array.from(nodeIds);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Add color styling if missing
|
|
250
|
+
*/
|
|
251
|
+
export function ensureColorStyles(code: string): string {
|
|
252
|
+
// Check if any classDef is present
|
|
253
|
+
if (code.includes('classDef')) {
|
|
254
|
+
return code;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Add default color styles
|
|
258
|
+
const defaultStyles = `
|
|
259
|
+
%% Styles
|
|
260
|
+
classDef frontend fill:#42b883,stroke:#35495e,color:#fff
|
|
261
|
+
classDef backend fill:#68a063,stroke:#3e6b38,color:#fff
|
|
262
|
+
classDef database fill:#336791,stroke:#1a3a52,color:#fff
|
|
263
|
+
classDef external fill:#f5a623,stroke:#c4841d,color:#fff
|
|
264
|
+
classDef api fill:#61dafb,stroke:#20a4d8,color:#333
|
|
265
|
+
`;
|
|
266
|
+
|
|
267
|
+
return code.trimEnd() + '\n' + defaultStyles;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Format Mermaid code for better readability
|
|
272
|
+
*/
|
|
273
|
+
export function formatMermaidCode(code: string): string {
|
|
274
|
+
const lines = code.split('\n');
|
|
275
|
+
const formatted: string[] = [];
|
|
276
|
+
|
|
277
|
+
let indentLevel = 0;
|
|
278
|
+
const baseIndent = ' ';
|
|
279
|
+
|
|
280
|
+
for (const line of lines) {
|
|
281
|
+
const trimmed = line.trim();
|
|
282
|
+
|
|
283
|
+
// Skip empty lines
|
|
284
|
+
if (!trimmed) {
|
|
285
|
+
formatted.push('');
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// Decrease indent for 'end' keyword
|
|
290
|
+
if (trimmed === 'end') {
|
|
291
|
+
indentLevel = Math.max(0, indentLevel - 1);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Add line with proper indentation
|
|
295
|
+
formatted.push(baseIndent.repeat(indentLevel) + trimmed);
|
|
296
|
+
|
|
297
|
+
// Increase indent after 'subgraph'
|
|
298
|
+
if (trimmed.startsWith('subgraph')) {
|
|
299
|
+
indentLevel++;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return formatted.join('\n');
|
|
304
|
+
}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitDiagram Prompt Templates
|
|
3
|
+
*
|
|
4
|
+
* Ported from: https://github.com/ahmedkhaleel2004/gitdiagram/blob/main/backend/app/prompts.py
|
|
5
|
+
* Original author: Ahmed Khaleel
|
|
6
|
+
*
|
|
7
|
+
* The generation process:
|
|
8
|
+
* 1. prompt1(file_tree, readme) -> explanation of diagram
|
|
9
|
+
* 2. prompt2(explanation, file_tree) -> maps relevant directories and files for interactivity
|
|
10
|
+
* 3. prompt3(explanation, map) -> Mermaid.js code
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* First prompt: Analyzes project structure and README to explain how to create
|
|
15
|
+
* an accurate system design diagram.
|
|
16
|
+
*/
|
|
17
|
+
export const SYSTEM_FIRST_PROMPT = `
|
|
18
|
+
You are tasked with explaining to a principal software engineer how to draw the best and most accurate system design diagram / architecture of a given project. This explanation should be tailored to the specific project's purpose and structure. To accomplish this, you will be provided with two key pieces of information:
|
|
19
|
+
|
|
20
|
+
1. The complete and entire file tree of the project including all directory and file names, which will be enclosed in <file_tree> tags in the users message.
|
|
21
|
+
|
|
22
|
+
2. The README file of the project, which will be enclosed in <readme> tags in the users message.
|
|
23
|
+
|
|
24
|
+
Analyze these components carefully, as they will provide crucial information about the project's structure and purpose. Follow these steps to create an explanation for the principal software engineer:
|
|
25
|
+
|
|
26
|
+
1. Identify the project type and purpose:
|
|
27
|
+
- Examine the file structure and README to determine if the project is a full-stack application, an open-source tool, a compiler, or another type of software imaginable.
|
|
28
|
+
- Look for key indicators in the README, such as project description, features, or use cases.
|
|
29
|
+
|
|
30
|
+
2. Analyze the file structure:
|
|
31
|
+
- Pay attention to top-level directories and their names (e.g., "frontend", "backend", "src", "lib", "tests").
|
|
32
|
+
- Identify patterns in the directory structure that might indicate architectural choices (e.g., MVC pattern, microservices).
|
|
33
|
+
- Note any configuration files, build scripts, or deployment-related files.
|
|
34
|
+
|
|
35
|
+
3. Examine the README for additional insights:
|
|
36
|
+
- Look for sections describing the architecture, dependencies, or technical stack.
|
|
37
|
+
- Check for any diagrams or explanations of the system's components.
|
|
38
|
+
|
|
39
|
+
4. Based on your analysis, explain how to create a system design diagram that accurately represents the project's architecture. Include the following points:
|
|
40
|
+
|
|
41
|
+
a. Identify the main components of the system (e.g., frontend, backend, database, building, external services).
|
|
42
|
+
b. Determine the relationships and interactions between these components.
|
|
43
|
+
c. Highlight any important architectural patterns or design principles used in the project.
|
|
44
|
+
d. Include relevant technologies, frameworks, or libraries that play a significant role in the system's architecture.
|
|
45
|
+
|
|
46
|
+
5. Provide guidelines for tailoring the diagram to the specific project type:
|
|
47
|
+
- For a full-stack application, emphasize the separation between frontend and backend, database interactions, and any API layers.
|
|
48
|
+
- For an open-source tool, focus on the core functionality, extensibility points, and how it integrates with other systems.
|
|
49
|
+
- For a compiler or language-related project, highlight the different stages of compilation or interpretation, and any intermediate representations.
|
|
50
|
+
|
|
51
|
+
6. Instruct the principal software engineer to include the following elements in the diagram:
|
|
52
|
+
- Clear labels for each component
|
|
53
|
+
- Directional arrows to show data flow or dependencies
|
|
54
|
+
- Color coding or shapes to distinguish between different types of components
|
|
55
|
+
|
|
56
|
+
7. NOTE: Emphasize the importance of being very detailed and capturing the essential architectural elements. Don't overthink it too much, simply separating the project into as many components as possible is best.
|
|
57
|
+
|
|
58
|
+
Present your explanation and instructions within <explanation> tags, ensuring that you tailor your advice to the specific project based on the provided file tree and README content.
|
|
59
|
+
`;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Second prompt: Maps key components to their corresponding files and directories
|
|
63
|
+
* for click event interactivity in the diagram.
|
|
64
|
+
*/
|
|
65
|
+
export const SYSTEM_SECOND_PROMPT = `
|
|
66
|
+
You are tasked with mapping key components of a system design to their corresponding files and directories in a project's file structure. You will be provided with a detailed explanation of the system design/architecture and a file tree of the project.
|
|
67
|
+
|
|
68
|
+
First, carefully read the system design explanation which will be enclosed in <explanation> tags in the users message.
|
|
69
|
+
|
|
70
|
+
Then, examine the file tree of the project which will be enclosed in <file_tree> tags in the users message.
|
|
71
|
+
|
|
72
|
+
Your task is to analyze the system design explanation and identify key components, modules, or services mentioned. Then, try your best to map these components to what you believe could be their corresponding directories and files in the provided file tree.
|
|
73
|
+
|
|
74
|
+
Guidelines:
|
|
75
|
+
1. Focus on major components described in the system design.
|
|
76
|
+
2. Look for directories and files that clearly correspond to these components.
|
|
77
|
+
3. Include both directories and specific files when relevant.
|
|
78
|
+
4. If a component doesn't have a clear corresponding file or directory, simply dont include it in the map.
|
|
79
|
+
|
|
80
|
+
Now, provide your final answer in the following format:
|
|
81
|
+
|
|
82
|
+
<component_mapping>
|
|
83
|
+
1. [Component Name]: [File/Directory Path]
|
|
84
|
+
2. [Component Name]: [File/Directory Path]
|
|
85
|
+
[Continue for all identified components]
|
|
86
|
+
</component_mapping>
|
|
87
|
+
|
|
88
|
+
Remember to be as specific as possible in your mappings, only use what is given to you from the file tree, and to strictly follow the components mentioned in the explanation.
|
|
89
|
+
`;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Third prompt: Generates Mermaid.js diagram code based on the explanation
|
|
93
|
+
* and component mappings.
|
|
94
|
+
*/
|
|
95
|
+
export const SYSTEM_THIRD_PROMPT = `
|
|
96
|
+
You are a principal software engineer tasked with creating a system design diagram using Mermaid.js based on a detailed explanation. Your goal is to accurately represent the architecture and design of the project as described in the explanation.
|
|
97
|
+
|
|
98
|
+
The detailed explanation of the design will be enclosed in <explanation> tags in the users message.
|
|
99
|
+
|
|
100
|
+
Also, sourced from the explanation, as a bonus, a few of the identified components have been mapped to their paths in the project file tree, whether it is a directory or file which will be enclosed in <component_mapping> tags in the users message.
|
|
101
|
+
|
|
102
|
+
To create the Mermaid.js diagram:
|
|
103
|
+
|
|
104
|
+
1. Carefully read and analyze the provided design explanation.
|
|
105
|
+
2. Identify the main components, services, and their relationships within the system.
|
|
106
|
+
3. Determine the appropriate Mermaid.js diagram type to use (e.g., flowchart, sequence diagram, class diagram, architecture, etc.) based on the nature of the system described.
|
|
107
|
+
4. Create the Mermaid.js code to represent the design, ensuring that:
|
|
108
|
+
a. All major components are included
|
|
109
|
+
b. Relationships between components are clearly shown
|
|
110
|
+
c. The diagram accurately reflects the architecture described in the explanation
|
|
111
|
+
d. The layout is logical and easy to understand
|
|
112
|
+
|
|
113
|
+
Guidelines for diagram components and relationships:
|
|
114
|
+
- Use appropriate shapes for different types of components (e.g., rectangles for services, cylinders for databases, etc.)
|
|
115
|
+
- Use clear and concise labels for each component
|
|
116
|
+
- Show the direction of data flow or dependencies using arrows
|
|
117
|
+
- Group related components together if applicable
|
|
118
|
+
- Include any important notes or annotations mentioned in the explanation
|
|
119
|
+
- Just follow the explanation. It will have everything you need.
|
|
120
|
+
|
|
121
|
+
IMPORTANT!!: Please orient and draw the diagram as vertically as possible. You must avoid long horizontal lists of nodes and sections!
|
|
122
|
+
|
|
123
|
+
You must include click events for components of the diagram that have been specified in the provided <component_mapping>:
|
|
124
|
+
- Do not try to include the full url. This will be processed by another program afterwards. All you need to do is include the path.
|
|
125
|
+
- For example:
|
|
126
|
+
- This is a correct click event: \`click Example "app/example.js"\`
|
|
127
|
+
- This is an incorrect click event: \`click Example "https://github.com/username/repo/blob/main/app/example.js"\`
|
|
128
|
+
- Do this for as many components as specified in the component mapping, include directories and files.
|
|
129
|
+
- If you believe the component contains files and is a directory, include the directory path.
|
|
130
|
+
- If you believe the component references a specific file, include the file path.
|
|
131
|
+
- Make sure to include the full path to the directory or file exactly as specified in the component mapping.
|
|
132
|
+
- It is very important that you do this for as many files as possible. The more the better.
|
|
133
|
+
|
|
134
|
+
- IMPORTANT: THESE PATHS ARE FOR CLICK EVENTS ONLY, these paths should not be included in the diagram's node's names. Only for the click events. Paths should not be seen by the user.
|
|
135
|
+
|
|
136
|
+
Your output should be valid Mermaid.js code that can be rendered into a diagram.
|
|
137
|
+
|
|
138
|
+
Do not include an init declaration such as \`%%{init: {'key':'etc'}}%%\`. This is handled externally. Just return the diagram code.
|
|
139
|
+
|
|
140
|
+
Your response must strictly be just the Mermaid.js code, without any additional text or explanations.
|
|
141
|
+
No code fence or markdown ticks needed, simply return the Mermaid.js code.
|
|
142
|
+
|
|
143
|
+
Ensure that your diagram adheres strictly to the given explanation, without adding or omitting any significant components or relationships.
|
|
144
|
+
|
|
145
|
+
For general direction, the provided example below is how you should structure your code:
|
|
146
|
+
|
|
147
|
+
\`\`\`mermaid
|
|
148
|
+
flowchart TD
|
|
149
|
+
%% or graph TD, your choice
|
|
150
|
+
|
|
151
|
+
%% Global entities
|
|
152
|
+
A("Entity A"):::external
|
|
153
|
+
%% more...
|
|
154
|
+
|
|
155
|
+
%% Subgraphs and modules
|
|
156
|
+
subgraph "Layer A"
|
|
157
|
+
A1("Module A"):::example
|
|
158
|
+
%% more modules...
|
|
159
|
+
%% inner subgraphs if needed...
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
%% more subgraphs, modules, etc...
|
|
163
|
+
|
|
164
|
+
%% Connections
|
|
165
|
+
A -->|"relationship"| B
|
|
166
|
+
%% and a lot more...
|
|
167
|
+
|
|
168
|
+
%% Click Events
|
|
169
|
+
click A1 "example/example.js"
|
|
170
|
+
%% and a lot more...
|
|
171
|
+
|
|
172
|
+
%% Styles
|
|
173
|
+
classDef frontend %%...
|
|
174
|
+
%% and a lot more...
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
EXTREMELY Important notes on syntax!!! (PAY ATTENTION TO THIS):
|
|
178
|
+
- Make sure to add colour to the diagram!!! This is extremely critical.
|
|
179
|
+
- In Mermaid.js syntax, we cannot include special characters for nodes without being inside quotes! For example: \`EX[/api/process (Backend)]:::api\` and \`API -->|calls Process()| Backend\` are two examples of syntax errors. They should be \`EX["/api/process (Backend)"]:::api\` and \`API -->|"calls Process()"| Backend\` respectively. Notice the quotes. This is extremely important. Make sure to include quotes for any string that contains special characters.
|
|
180
|
+
- In Mermaid.js syntax, you cannot apply a class style directly within a subgraph declaration. For example: \`subgraph "Frontend Layer":::frontend\` is a syntax error. However, you can apply them to nodes within the subgraph. For example: \`Example["Example Node"]:::frontend\` is valid, and \`class Example1,Example2 frontend\` is valid.
|
|
181
|
+
- In Mermaid.js syntax, there cannot be spaces in the relationship label names. For example: \`A -->| "example relationship" | B\` is a syntax error. It should be \`A -->|"example relationship"| B\`
|
|
182
|
+
- In Mermaid.js syntax, you cannot give subgraphs an alias like nodes. For example: \`subgraph A "Layer A"\` is a syntax error. It should be \`subgraph "Layer A"\`
|
|
183
|
+
`;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Additional instructions prompt: Handles custom user instructions.
|
|
187
|
+
* Returns "BAD_INSTRUCTIONS" if instructions are unclear or unrelated.
|
|
188
|
+
*/
|
|
189
|
+
export const ADDITIONAL_SYSTEM_INSTRUCTIONS_PROMPT = `
|
|
190
|
+
IMPORTANT: the user will provide custom additional instructions enclosed in <instructions> tags. Please take these into account and give priority to them. However, if these instructions are unrelated to the task, unclear, or not possible to follow, ignore them by simply responding with: "BAD_INSTRUCTIONS"
|
|
191
|
+
`;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Modify prompt: Modifies existing Mermaid.js diagrams based on user instructions.
|
|
195
|
+
*/
|
|
196
|
+
export const SYSTEM_MODIFY_PROMPT = `
|
|
197
|
+
You are tasked with modifying the code of a Mermaid.js diagram based on the provided instructions. The diagram will be enclosed in <diagram> tags in the users message.
|
|
198
|
+
|
|
199
|
+
Also, to help you modify it and simply for additional context, you will also be provided with the original explanation of the diagram enclosed in <explanation> tags in the users message. However of course, you must give priority to the instructions provided by the user.
|
|
200
|
+
|
|
201
|
+
The instructions will be enclosed in <instructions> tags in the users message. If these instructions are unrelated to the task, unclear, or not possible to follow, ignore them by simply responding with: "BAD_INSTRUCTIONS"
|
|
202
|
+
|
|
203
|
+
Your response must strictly be just the Mermaid.js code, without any additional text or explanations. Keep as many of the existing click events as possible.
|
|
204
|
+
No code fence or markdown ticks needed, simply return the Mermaid.js code.
|
|
205
|
+
`;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Helper function to create a user message for the first prompt
|
|
209
|
+
*/
|
|
210
|
+
export function createFirstPromptUserMessage(
|
|
211
|
+
fileTree: string,
|
|
212
|
+
readme: string
|
|
213
|
+
): string {
|
|
214
|
+
return `<file_tree>
|
|
215
|
+
${fileTree}
|
|
216
|
+
</file_tree>
|
|
217
|
+
|
|
218
|
+
<readme>
|
|
219
|
+
${readme}
|
|
220
|
+
</readme>`;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Helper function to create a user message for the second prompt
|
|
225
|
+
*/
|
|
226
|
+
export function createSecondPromptUserMessage(
|
|
227
|
+
explanation: string,
|
|
228
|
+
fileTree: string
|
|
229
|
+
): string {
|
|
230
|
+
return `<explanation>
|
|
231
|
+
${explanation}
|
|
232
|
+
</explanation>
|
|
233
|
+
|
|
234
|
+
<file_tree>
|
|
235
|
+
${fileTree}
|
|
236
|
+
</file_tree>`;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Helper function to create a user message for the third prompt
|
|
241
|
+
*/
|
|
242
|
+
export function createThirdPromptUserMessage(
|
|
243
|
+
explanation: string,
|
|
244
|
+
componentMapping: string
|
|
245
|
+
): string {
|
|
246
|
+
return `<explanation>
|
|
247
|
+
${explanation}
|
|
248
|
+
</explanation>
|
|
249
|
+
|
|
250
|
+
<component_mapping>
|
|
251
|
+
${componentMapping}
|
|
252
|
+
</component_mapping>`;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Helper function to create a user message for the modify prompt
|
|
257
|
+
*/
|
|
258
|
+
export function createModifyPromptUserMessage(
|
|
259
|
+
diagram: string,
|
|
260
|
+
explanation: string,
|
|
261
|
+
instructions: string
|
|
262
|
+
): string {
|
|
263
|
+
return `<diagram>
|
|
264
|
+
${diagram}
|
|
265
|
+
</diagram>
|
|
266
|
+
|
|
267
|
+
<explanation>
|
|
268
|
+
${explanation}
|
|
269
|
+
</explanation>
|
|
270
|
+
|
|
271
|
+
<instructions>
|
|
272
|
+
${instructions}
|
|
273
|
+
</instructions>`;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Helper function to add additional instructions to a system prompt
|
|
278
|
+
*/
|
|
279
|
+
export function withAdditionalInstructions(systemPrompt: string): string {
|
|
280
|
+
return `${systemPrompt}\n\n${ADDITIONAL_SYSTEM_INSTRUCTIONS_PROMPT}`;
|
|
281
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zyflow/parser",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "MoAI SPEC parser for ZyFlow",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"dev": "tsc --watch",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"typescript": "^5.4.0",
|
|
25
|
+
"vitest": "^4.0.18"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"moai",
|
|
29
|
+
"spec",
|
|
30
|
+
"parser",
|
|
31
|
+
"zyflow"
|
|
32
|
+
],
|
|
33
|
+
"license": "MIT"
|
|
34
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZyFlow Parser
|
|
3
|
+
* MoAI SPEC parser for plan.md, acceptance.md, spec.md
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// MoAI SPEC types
|
|
9
|
+
export type {
|
|
10
|
+
SpecFrontmatter,
|
|
11
|
+
ParsedTag,
|
|
12
|
+
ParsedCondition,
|
|
13
|
+
ParsedAcceptanceCriteria,
|
|
14
|
+
ParsedRequirement,
|
|
15
|
+
ParsedMoaiPlan,
|
|
16
|
+
ParsedMoaiAcceptance,
|
|
17
|
+
ParsedMoaiSpec,
|
|
18
|
+
} from './moai-types.js'
|
|
19
|
+
|
|
20
|
+
// MoAI SPEC parser
|
|
21
|
+
export {
|
|
22
|
+
parseFrontmatter,
|
|
23
|
+
parsePlanFile,
|
|
24
|
+
parseAcceptanceFile,
|
|
25
|
+
parseSpecFile,
|
|
26
|
+
} from './moai-parser.js'
|