@shepai/cli 1.116.3-pr373.2304074 → 1.117.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +0 -1
- package/web/.next/build-manifest.json +6 -6
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/routes-manifest.json +0 -6
- package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +21 -21
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +19 -19
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +21 -21
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +19 -19
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +19 -19
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/settings/page/build-manifest.json +4 -4
- package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
- package/web/.next/server/app/settings/page.js +1 -1
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/build-manifest.json +4 -4
- package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/skills/page.js +1 -1
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/build-manifest.json +4 -4
- package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/tools/page.js +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/build-manifest.json +4 -4
- package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2eacac96.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2eacac96.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_6c70ecca.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_6c70ecca.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c29a2302.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c29a2302.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d1fd387b.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d1fd387b.js.map +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d82f78f0.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d82f78f0.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_d0119342._.js +3 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_d0119342._.js.map +1 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js +3 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0880ff0e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0880ff0e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__172d9576._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__172d9576._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2a5592d5._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2a5592d5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__52485955._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5edfc56b._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5edfc56b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__19187772._.js → [root-of-the-server]__89e8a5cc._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8c88ef55._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8c88ef55._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a93289b0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a93289b0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ac0304e7._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ac0304e7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0e506641._.js +7 -0
- package/web/.next/server/chunks/ssr/_0e506641._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_125679ad._.js +3 -0
- package/web/.next/server/chunks/ssr/_125679ad._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_135edb9c._.js +3 -0
- package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_16235e5e._.js +1 -1
- package/web/.next/server/chunks/ssr/_16235e5e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1bb131c4._.js +3 -0
- package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_273d4632._.js +3 -0
- package/web/.next/server/chunks/ssr/_273d4632._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_6887cba3._.js +1 -1
- package/web/.next/server/chunks/ssr/_6887cba3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6d26a08f._.js +3 -0
- package/web/.next/server/chunks/ssr/_6d26a08f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8eeee4db._.js +1 -1
- package/web/.next/server/chunks/ssr/_8eeee4db._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_a0b23a7c._.js → _a8d14ab2._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_a0b23a7c._.js.map → _a8d14ab2._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_b5fc318a._.js +3 -0
- package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_cc77a143._.js +3 -0
- package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_9f81a163._.js → _d6a1ec27._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_9f81a163._.js.map → _d6a1ec27._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_ed11dcd6._.js +1 -1
- package/web/.next/server/chunks/ssr/_ed11dcd6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f4d222d6._.js +1 -1
- package/web/.next/server/chunks/ssr/_f4d222d6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f5316e67._.js +3 -0
- package/web/.next/server/chunks/ssr/_f5316e67._.js.map +1 -0
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +4 -4
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +32 -99
- package/web/.next/static/chunks/{b890d6030441cf27.js → 2251df6427162751.js} +1 -1
- package/web/.next/static/chunks/{fc0fb1f7061949ef.js → 2c98935265aa3622.js} +2 -2
- package/web/.next/static/chunks/303a1217006489b9.js +1 -0
- package/web/.next/static/chunks/{206f677ee9f6dc5d.js → 34b275db4ad6fb5d.js} +1 -1
- package/web/.next/static/chunks/3a806cf059241bc9.js +1 -0
- package/web/.next/static/chunks/{c6ad05eb3945ee43.js → 425894e5bf370bd2.js} +2 -2
- package/web/.next/static/chunks/498777301470975b.js +1 -0
- package/web/.next/static/chunks/50f06bb71bace452.js +1 -0
- package/web/.next/static/chunks/5fe03deadb83628b.js +1 -0
- package/web/.next/static/chunks/619af41a8d3232e5.js +1 -0
- package/web/.next/static/chunks/62a8173911f8f130.css +1 -0
- package/web/.next/static/chunks/84a181ff3270fd9f.js +1 -0
- package/web/.next/static/chunks/b1f3c0e8e9872ef8.js +1 -0
- package/web/.next/static/chunks/b855de1b1e5458f6.js +11 -0
- package/web/.next/static/chunks/c76f6d06b1b69b57.js +1 -0
- package/web/.next/static/chunks/e2caffa0bb759c6c.js +1 -0
- package/web/.next/static/chunks/ed3a602003bcb31b.js +1 -0
- package/web/.next/static/chunks/fcde0cbb2976b933.js +1 -0
- package/web/.next/static/chunks/{turbopack-b1685b5f87ad1d60.js → turbopack-426d9bc2450816ba.js} +1 -1
- package/dist/src/presentation/web/app/actions/execute-query.d.ts +0 -7
- package/dist/src/presentation/web/app/actions/execute-query.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/execute-query.js +0 -55
- package/dist/src/presentation/web/app/actions/get-table-rows.d.ts +0 -10
- package/dist/src/presentation/web/app/actions/get-table-rows.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/get-table-rows.js +0 -55
- package/dist/src/presentation/web/app/actions/get-table-schema.d.ts +0 -13
- package/dist/src/presentation/web/app/actions/get-table-schema.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/get-table-schema.js +0 -27
- package/dist/src/presentation/web/app/actions/list-tables.d.ts +0 -10
- package/dist/src/presentation/web/app/actions/list-tables.d.ts.map +0 -1
- package/dist/src/presentation/web/app/actions/list-tables.js +0 -19
- package/dist/src/presentation/web/app/database/page.d.ts +0 -4
- package/dist/src/presentation/web/app/database/page.d.ts.map +0 -1
- package/dist/src/presentation/web/app/database/page.js +0 -15
- package/dist/src/presentation/web/components/features/database/cell-value-dialog.d.ts +0 -8
- package/dist/src/presentation/web/components/features/database/cell-value-dialog.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/cell-value-dialog.js +0 -7
- package/dist/src/presentation/web/components/features/database/cell-value-dialog.stories.d.ts +0 -10
- package/dist/src/presentation/web/components/features/database/cell-value-dialog.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/cell-value-dialog.stories.js +0 -48
- package/dist/src/presentation/web/components/features/database/database-page-client.d.ts +0 -13
- package/dist/src/presentation/web/components/features/database/database-page-client.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/database-page-client.js +0 -75
- package/dist/src/presentation/web/components/features/database/database-page-client.stories.d.ts +0 -9
- package/dist/src/presentation/web/components/features/database/database-page-client.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/database-page-client.stories.js +0 -74
- package/dist/src/presentation/web/components/features/database/query-runner.d.ts +0 -9
- package/dist/src/presentation/web/components/features/database/query-runner.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/query-runner.js +0 -53
- package/dist/src/presentation/web/components/features/database/query-runner.stories.d.ts +0 -9
- package/dist/src/presentation/web/components/features/database/query-runner.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/query-runner.stories.js +0 -55
- package/dist/src/presentation/web/components/features/database/row-browser.d.ts +0 -11
- package/dist/src/presentation/web/components/features/database/row-browser.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/row-browser.js +0 -42
- package/dist/src/presentation/web/components/features/database/row-browser.stories.d.ts +0 -14
- package/dist/src/presentation/web/components/features/database/row-browser.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/row-browser.stories.js +0 -120
- package/dist/src/presentation/web/components/features/database/schema-viewer.d.ts +0 -7
- package/dist/src/presentation/web/components/features/database/schema-viewer.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/schema-viewer.js +0 -13
- package/dist/src/presentation/web/components/features/database/schema-viewer.stories.d.ts +0 -11
- package/dist/src/presentation/web/components/features/database/schema-viewer.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/schema-viewer.stories.js +0 -67
- package/dist/src/presentation/web/components/features/database/table-list.d.ts +0 -8
- package/dist/src/presentation/web/components/features/database/table-list.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/table-list.js +0 -17
- package/dist/src/presentation/web/components/features/database/table-list.stories.d.ts +0 -10
- package/dist/src/presentation/web/components/features/database/table-list.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/database/table-list.stories.js +0 -66
- package/dist/src/presentation/web/components/ui/table.d.ts +0 -11
- package/dist/src/presentation/web/components/ui/table.d.ts.map +0 -1
- package/dist/src/presentation/web/components/ui/table.js +0 -28
- package/dist/src/presentation/web/lib/server-db.d.ts +0 -16
- package/dist/src/presentation/web/lib/server-db.d.ts.map +0 -1
- package/dist/src/presentation/web/lib/server-db.js +0 -10
- package/dist/src/presentation/web/lib/sql-validation.d.ts +0 -7
- package/dist/src/presentation/web/lib/sql-validation.d.ts.map +0 -1
- package/dist/src/presentation/web/lib/sql-validation.js +0 -17
- package/web/.next/server/app/database/page/app-paths-manifest.json +0 -3
- package/web/.next/server/app/database/page/build-manifest.json +0 -18
- package/web/.next/server/app/database/page/next-font-manifest.json +0 -6
- package/web/.next/server/app/database/page/react-loadable-manifest.json +0 -1
- package/web/.next/server/app/database/page/server-reference-manifest.json +0 -80
- package/web/.next/server/app/database/page.js +0 -16
- package/web/.next/server/app/database/page.js.map +0 -5
- package/web/.next/server/app/database/page.js.nft.json +0 -1
- package/web/.next/server/app/database/page_client-reference-manifest.js +0 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__19187772._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29958296._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29958296._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2d3ecc16._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2d3ecc16._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__590dfc34._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__590dfc34._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6aae816d._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6aae816d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__930c8634._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__930c8634._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0e6034fc._.js +0 -3
- package/web/.next/server/chunks/ssr/_0e6034fc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_34ba40e0._.js +0 -3
- package/web/.next/server/chunks/ssr/_34ba40e0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_43997634._.js +0 -3
- package/web/.next/server/chunks/ssr/_43997634._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_5b809cd2._.js +0 -4
- package/web/.next/server/chunks/ssr/_5b809cd2._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_6552e0aa._.js +0 -3
- package/web/.next/server/chunks/ssr/_6552e0aa._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_78be8103._.js +0 -3
- package/web/.next/server/chunks/ssr/_78be8103._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_95f78b9e._.js +0 -3
- package/web/.next/server/chunks/ssr/_95f78b9e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ad5819d0._.js +0 -3
- package/web/.next/server/chunks/ssr/_ad5819d0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e35fc15d._.js +0 -3
- package/web/.next/server/chunks/ssr/_e35fc15d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e4923d09._.js +0 -7
- package/web/.next/server/chunks/ssr/_e4923d09._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f38b49fe._.js +0 -3
- package/web/.next/server/chunks/ssr/_f38b49fe._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f9959908._.js +0 -3
- package/web/.next/server/chunks/ssr/_f9959908._.js.map +0 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_database_database-page-client_tsx_b853607a._.js +0 -3
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_database_database-page-client_tsx_b853607a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_8b0ea744._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_8b0ea744._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_scroll-area_tsx_53ae5be7._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_scroll-area_tsx_53ae5be7._.js.map +0 -1
- package/web/.next/static/chunks/1bee2061703e096e.js +0 -1
- package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +0 -1
- package/web/.next/static/chunks/4395a53ed15eef72.js +0 -1
- package/web/.next/static/chunks/57f503ca6caf30d1.js +0 -1
- package/web/.next/static/chunks/5b305e0321c90039.js +0 -1
- package/web/.next/static/chunks/692a746daf1778d6.js +0 -1
- package/web/.next/static/chunks/78334cf5381241fe.css +0 -1
- package/web/.next/static/chunks/7d61f552216da1a2.js +0 -1
- package/web/.next/static/chunks/958828e09daddad9.js +0 -1
- package/web/.next/static/chunks/a659cdb17ae65f2e.js +0 -1
- package/web/.next/static/chunks/ac9e29ce89401022.js +0 -11
- package/web/.next/static/chunks/c20537d1fd9f2494.js +0 -1
- package/web/.next/static/chunks/c2c0d4e71c36199f.js +0 -1
- package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
- package/web/.next/static/chunks/d647189ea3b87ed4.js +0 -1
- package/web/.next/static/chunks/f8bf91061681f06c.js +0 -1
- /package/web/.next/static/{7el9fE5_x45gdlg69l1-h → bAT4Gm6M7U0lGmNAN3mTn}/_buildManifest.js +0 -0
- /package/web/.next/static/{7el9fE5_x45gdlg69l1-h → bAT4Gm6M7U0lGmNAN3mTn}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{7el9fE5_x45gdlg69l1-h → bAT4Gm6M7U0lGmNAN3mTn}/_ssgManifest.js +0 -0
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { fn } from '@storybook/test';
|
|
3
|
-
import { QueryRunner } from './query-runner.js';
|
|
4
|
-
const meta = {
|
|
5
|
-
title: 'Features/Database/QueryRunner',
|
|
6
|
-
component: QueryRunner,
|
|
7
|
-
tags: ['autodocs'],
|
|
8
|
-
parameters: {
|
|
9
|
-
layout: 'padded',
|
|
10
|
-
},
|
|
11
|
-
args: {
|
|
12
|
-
onExecute: fn(),
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
export default meta;
|
|
16
|
-
/* ---------------------------------------------------------------------------
|
|
17
|
-
* Interactive wrapper for stories that need state
|
|
18
|
-
* ------------------------------------------------------------------------- */
|
|
19
|
-
function QueryRunnerWithMockResults() {
|
|
20
|
-
return (_jsx(QueryRunner, { onExecute: async (sql) => {
|
|
21
|
-
// Simulate server delay
|
|
22
|
-
await new Promise((r) => setTimeout(r, 500));
|
|
23
|
-
if (sql.toLowerCase().includes('error')) {
|
|
24
|
-
return { error: 'near "error": syntax error' };
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
columns: ['id', 'name', 'status', 'created_at'],
|
|
28
|
-
rows: [
|
|
29
|
-
{
|
|
30
|
-
id: 1,
|
|
31
|
-
name: 'database-management-ui',
|
|
32
|
-
status: 'in_progress',
|
|
33
|
-
created_at: '2026-03-10',
|
|
34
|
-
},
|
|
35
|
-
{ id: 2, name: 'agent-improvements', status: 'completed', created_at: '2026-03-09' },
|
|
36
|
-
{ id: 3, name: 'cli-refactor', status: 'pending', created_at: '2026-03-08' },
|
|
37
|
-
],
|
|
38
|
-
};
|
|
39
|
-
} }));
|
|
40
|
-
}
|
|
41
|
-
function QueryRunnerWithError() {
|
|
42
|
-
return (_jsx(QueryRunner, { onExecute: async () => {
|
|
43
|
-
return { error: 'no such table: nonexistent_table' };
|
|
44
|
-
} }));
|
|
45
|
-
}
|
|
46
|
-
/* ---------------------------------------------------------------------------
|
|
47
|
-
* Stories
|
|
48
|
-
* ------------------------------------------------------------------------- */
|
|
49
|
-
export const Default = {};
|
|
50
|
-
export const Interactive = {
|
|
51
|
-
render: () => _jsx(QueryRunnerWithMockResults, {}),
|
|
52
|
-
};
|
|
53
|
-
export const WithError = {
|
|
54
|
-
render: () => _jsx(QueryRunnerWithError, {}),
|
|
55
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface RowBrowserProps {
|
|
2
|
-
columns: string[];
|
|
3
|
-
rows: Record<string, unknown>[];
|
|
4
|
-
totalRows: number;
|
|
5
|
-
page: number;
|
|
6
|
-
pageSize: number;
|
|
7
|
-
onPageChange: (page: number) => void;
|
|
8
|
-
loading?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare function RowBrowser({ columns, rows, totalRows, page, pageSize, onPageChange, loading, }: RowBrowserProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
//# sourceMappingURL=row-browser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"row-browser.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/database/row-browser.tsx"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAoBD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,OAAO,GACR,EAAE,eAAe,2CAkHjB"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '../../ui/table.js';
|
|
5
|
-
import { Button } from '../../ui/button.js';
|
|
6
|
-
import { ChevronLeft, ChevronRight } from 'lucide-react';
|
|
7
|
-
import { CellValueDialog } from './cell-value-dialog.js';
|
|
8
|
-
const MAX_CELL_LENGTH = 100;
|
|
9
|
-
function formatCellDisplay(value) {
|
|
10
|
-
if (value === null || value === undefined) {
|
|
11
|
-
return 'NULL';
|
|
12
|
-
}
|
|
13
|
-
return String(value);
|
|
14
|
-
}
|
|
15
|
-
function isTruncated(value) {
|
|
16
|
-
return value.length > MAX_CELL_LENGTH;
|
|
17
|
-
}
|
|
18
|
-
function truncate(value) {
|
|
19
|
-
if (isTruncated(value)) {
|
|
20
|
-
return `${value.slice(0, MAX_CELL_LENGTH)}...`;
|
|
21
|
-
}
|
|
22
|
-
return value;
|
|
23
|
-
}
|
|
24
|
-
export function RowBrowser({ columns, rows, totalRows, page, pageSize, onPageChange, loading, }) {
|
|
25
|
-
const [dialogState, setDialogState] = useState({ open: false, columnName: '', value: '' });
|
|
26
|
-
const totalPages = Math.max(1, Math.ceil(totalRows / pageSize));
|
|
27
|
-
const isFirstPage = page === 0;
|
|
28
|
-
const isLastPage = page >= totalPages - 1;
|
|
29
|
-
if (loading) {
|
|
30
|
-
return (_jsx("div", { className: "text-muted-foreground flex items-center justify-center p-8 text-sm", "data-testid": "row-browser-loading", children: "Loading rows..." }));
|
|
31
|
-
}
|
|
32
|
-
if (rows.length === 0 && totalRows === 0) {
|
|
33
|
-
return (_jsx("div", { className: "text-muted-foreground flex items-center justify-center p-8 text-sm", "data-testid": "row-browser-empty", children: "This table has no rows" }));
|
|
34
|
-
}
|
|
35
|
-
return (_jsxs("div", { className: "flex flex-col gap-3", "data-testid": "row-browser", children: [_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsx(TableRow, { children: columns.map((col) => (_jsx(TableHead, { children: col }, col))) }) }), _jsx(TableBody, { children: rows.map((row, rowIdx) => (
|
|
36
|
-
// eslint-disable-next-line react/no-array-index-key
|
|
37
|
-
_jsx(TableRow, { children: columns.map((col) => {
|
|
38
|
-
const display = formatCellDisplay(row[col]);
|
|
39
|
-
const truncated = isTruncated(display);
|
|
40
|
-
return (_jsx(TableCell, { children: truncated ? (_jsx("button", { className: "text-primary cursor-pointer text-left underline-offset-2 hover:underline", onClick: () => setDialogState({ open: true, columnName: col, value: display }), title: "Click to view full value", children: truncate(display) })) : (_jsx("span", { className: display === 'NULL' ? 'text-muted-foreground italic' : '', children: display })) }, col));
|
|
41
|
-
}) }, rowIdx))) })] }), _jsxs("div", { className: "flex items-center justify-between px-2", "data-testid": "row-browser-pagination", children: [_jsxs("span", { className: "text-muted-foreground text-sm", children: [totalRows.toLocaleString(), " row", totalRows !== 1 ? 's' : '', " total"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: () => onPageChange(page - 1), disabled: isFirstPage, "data-testid": "row-browser-prev", children: [_jsx(ChevronLeft, { className: "size-4" }), "Previous"] }), _jsxs("span", { className: "text-sm", children: ["Page ", page + 1, " of ", totalPages] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => onPageChange(page + 1), disabled: isLastPage, "data-testid": "row-browser-next", children: ["Next", _jsx(ChevronRight, { className: "size-4" })] })] })] }), _jsx(CellValueDialog, { open: dialogState.open, onOpenChange: (open) => setDialogState((s) => ({ ...s, open })), columnName: dialogState.columnName, value: dialogState.value })] }));
|
|
42
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { RowBrowser } from './row-browser.js';
|
|
3
|
-
declare const meta: Meta<typeof RowBrowser>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const PopulatedTable: Story;
|
|
7
|
-
export declare const MiddlePage: Story;
|
|
8
|
-
export declare const LastPage: Story;
|
|
9
|
-
export declare const EmptyTable: Story;
|
|
10
|
-
export declare const Loading: Story;
|
|
11
|
-
export declare const TruncatedValues: Story;
|
|
12
|
-
export declare const WithNullValues: Story;
|
|
13
|
-
export declare const BlobValues: Story;
|
|
14
|
-
//# sourceMappingURL=row-browser.stories.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"row-browser.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/database/row-browser.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAYjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAgCnC,eAAO,MAAM,cAAc,EAAE,KAQ5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAY5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAWxB,CAAC"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { fn } from '@storybook/test';
|
|
2
|
-
import { RowBrowser } from './row-browser.js';
|
|
3
|
-
const meta = {
|
|
4
|
-
title: 'Features/Database/RowBrowser',
|
|
5
|
-
component: RowBrowser,
|
|
6
|
-
tags: ['autodocs'],
|
|
7
|
-
parameters: {
|
|
8
|
-
layout: 'padded',
|
|
9
|
-
},
|
|
10
|
-
args: {
|
|
11
|
-
onPageChange: fn(),
|
|
12
|
-
page: 0,
|
|
13
|
-
pageSize: 50,
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
export default meta;
|
|
17
|
-
/* ---------------------------------------------------------------------------
|
|
18
|
-
* Data fixtures
|
|
19
|
-
* ------------------------------------------------------------------------- */
|
|
20
|
-
const sampleColumns = ['id', 'name', 'status', 'created_at'];
|
|
21
|
-
const sampleRows = [
|
|
22
|
-
{
|
|
23
|
-
id: 1,
|
|
24
|
-
name: 'database-management-ui',
|
|
25
|
-
status: 'in_progress',
|
|
26
|
-
created_at: '2026-03-10T14:30:00Z',
|
|
27
|
-
},
|
|
28
|
-
{ id: 2, name: 'agent-improvements', status: 'completed', created_at: '2026-03-09T10:15:00Z' },
|
|
29
|
-
{ id: 3, name: 'cli-refactor', status: 'pending', created_at: '2026-03-08T08:00:00Z' },
|
|
30
|
-
{ id: 4, name: 'settings-page', status: 'completed', created_at: '2026-03-07T16:45:00Z' },
|
|
31
|
-
{ id: 5, name: 'tui-redesign', status: 'in_progress', created_at: '2026-03-06T12:00:00Z' },
|
|
32
|
-
];
|
|
33
|
-
const longTextRow = {
|
|
34
|
-
id: 1,
|
|
35
|
-
description: 'This is a very long description that exceeds one hundred characters in length and should be truncated in the table cell display with an ellipsis and a clickable link to view the full value in a dialog modal window',
|
|
36
|
-
metadata: JSON.stringify({ key: 'value', nested: { deep: true, items: [1, 2, 3] } }),
|
|
37
|
-
};
|
|
38
|
-
/* ---------------------------------------------------------------------------
|
|
39
|
-
* Stories
|
|
40
|
-
* ------------------------------------------------------------------------- */
|
|
41
|
-
export const PopulatedTable = {
|
|
42
|
-
args: {
|
|
43
|
-
columns: sampleColumns,
|
|
44
|
-
rows: sampleRows,
|
|
45
|
-
totalRows: 230,
|
|
46
|
-
page: 0,
|
|
47
|
-
pageSize: 50,
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
export const MiddlePage = {
|
|
51
|
-
args: {
|
|
52
|
-
columns: sampleColumns,
|
|
53
|
-
rows: sampleRows,
|
|
54
|
-
totalRows: 230,
|
|
55
|
-
page: 2,
|
|
56
|
-
pageSize: 50,
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
export const LastPage = {
|
|
60
|
-
args: {
|
|
61
|
-
columns: sampleColumns,
|
|
62
|
-
rows: sampleRows.slice(0, 2),
|
|
63
|
-
totalRows: 230,
|
|
64
|
-
page: 4,
|
|
65
|
-
pageSize: 50,
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
export const EmptyTable = {
|
|
69
|
-
args: {
|
|
70
|
-
columns: sampleColumns,
|
|
71
|
-
rows: [],
|
|
72
|
-
totalRows: 0,
|
|
73
|
-
page: 0,
|
|
74
|
-
pageSize: 50,
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
export const Loading = {
|
|
78
|
-
args: {
|
|
79
|
-
columns: [],
|
|
80
|
-
rows: [],
|
|
81
|
-
totalRows: 0,
|
|
82
|
-
page: 0,
|
|
83
|
-
pageSize: 50,
|
|
84
|
-
loading: true,
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
export const TruncatedValues = {
|
|
88
|
-
args: {
|
|
89
|
-
columns: ['id', 'description', 'metadata'],
|
|
90
|
-
rows: [longTextRow],
|
|
91
|
-
totalRows: 1,
|
|
92
|
-
page: 0,
|
|
93
|
-
pageSize: 50,
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
export const WithNullValues = {
|
|
97
|
-
args: {
|
|
98
|
-
columns: ['id', 'name', 'email', 'notes'],
|
|
99
|
-
rows: [
|
|
100
|
-
{ id: 1, name: 'Alice', email: 'alice@example.com', notes: null },
|
|
101
|
-
{ id: 2, name: 'Bob', email: null, notes: 'Some notes here' },
|
|
102
|
-
{ id: 3, name: null, email: null, notes: null },
|
|
103
|
-
],
|
|
104
|
-
totalRows: 3,
|
|
105
|
-
page: 0,
|
|
106
|
-
pageSize: 50,
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
export const BlobValues = {
|
|
110
|
-
args: {
|
|
111
|
-
columns: ['id', 'name', 'data'],
|
|
112
|
-
rows: [
|
|
113
|
-
{ id: 1, name: 'image.png', data: '(2048 bytes)' },
|
|
114
|
-
{ id: 2, name: 'document.pdf', data: '(15360 bytes)' },
|
|
115
|
-
],
|
|
116
|
-
totalRows: 2,
|
|
117
|
-
page: 0,
|
|
118
|
-
pageSize: 50,
|
|
119
|
-
},
|
|
120
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { ColumnInfo } from '../../../app/actions/get-table-schema.js';
|
|
2
|
-
export interface SchemaViewerProps {
|
|
3
|
-
columns: ColumnInfo[];
|
|
4
|
-
loading?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare function SchemaViewer({ columns, loading }: SchemaViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
//# sourceMappingURL=schema-viewer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-viewer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/database/schema-viewer.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,2CAuDnE"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '../../ui/table.js';
|
|
4
|
-
import { Badge } from '../../ui/badge.js';
|
|
5
|
-
export function SchemaViewer({ columns, loading }) {
|
|
6
|
-
if (loading) {
|
|
7
|
-
return (_jsx("div", { className: "text-muted-foreground flex items-center justify-center p-8 text-sm", "data-testid": "schema-viewer-loading", children: "Loading schema..." }));
|
|
8
|
-
}
|
|
9
|
-
if (columns.length === 0) {
|
|
10
|
-
return (_jsx("div", { className: "text-muted-foreground flex items-center justify-center p-8 text-sm", "data-testid": "schema-viewer-empty", children: "No column information available" }));
|
|
11
|
-
}
|
|
12
|
-
return (_jsx("div", { "data-testid": "schema-viewer", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Name" }), _jsx(TableHead, { children: "Type" }), _jsx(TableHead, { children: "Nullable" }), _jsx(TableHead, { children: "Default" }), _jsx(TableHead, { children: "Primary Key" })] }) }), _jsx(TableBody, { children: columns.map((col) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-mono text-sm", children: col.name }), _jsx(TableCell, { className: "font-mono text-sm", children: col.type }), _jsx(TableCell, { children: col.notnull ? 'No' : 'Yes' }), _jsx(TableCell, { className: "text-muted-foreground", children: col.defaultValue ?? 'None' }), _jsx(TableCell, { children: col.primaryKey ? (_jsx(Badge, { variant: "default", "data-testid": `pk-badge-${col.name}`, children: "PK" })) : null })] }, col.name))) })] }) }));
|
|
13
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { SchemaViewer } from './schema-viewer.js';
|
|
3
|
-
declare const meta: Meta<typeof SchemaViewer>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const TypicalSchema: Story;
|
|
7
|
-
export declare const AllNullable: Story;
|
|
8
|
-
export declare const CompositePrimaryKey: Story;
|
|
9
|
-
export declare const Loading: Story;
|
|
10
|
-
export declare const Empty: Story;
|
|
11
|
-
//# sourceMappingURL=schema-viewer.stories.d.ts.map
|
package/dist/src/presentation/web/components/features/database/schema-viewer.stories.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-viewer.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/database/schema-viewer.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAOnC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAsCnC,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAIjC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { SchemaViewer } from './schema-viewer.js';
|
|
2
|
-
const meta = {
|
|
3
|
-
title: 'Features/Database/SchemaViewer',
|
|
4
|
-
component: SchemaViewer,
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
parameters: {
|
|
7
|
-
layout: 'padded',
|
|
8
|
-
},
|
|
9
|
-
};
|
|
10
|
-
export default meta;
|
|
11
|
-
/* ---------------------------------------------------------------------------
|
|
12
|
-
* Data fixtures
|
|
13
|
-
* ------------------------------------------------------------------------- */
|
|
14
|
-
const typicalSchema = [
|
|
15
|
-
{ name: 'id', type: 'TEXT', notnull: true, defaultValue: null, primaryKey: true },
|
|
16
|
-
{ name: 'name', type: 'TEXT', notnull: true, defaultValue: null, primaryKey: false },
|
|
17
|
-
{ name: 'description', type: 'TEXT', notnull: false, defaultValue: null, primaryKey: false },
|
|
18
|
-
{ name: 'status', type: 'TEXT', notnull: true, defaultValue: "'pending'", primaryKey: false },
|
|
19
|
-
{
|
|
20
|
-
name: 'created_at',
|
|
21
|
-
type: 'TEXT',
|
|
22
|
-
notnull: true,
|
|
23
|
-
defaultValue: 'CURRENT_TIMESTAMP',
|
|
24
|
-
primaryKey: false,
|
|
25
|
-
},
|
|
26
|
-
{ name: 'updated_at', type: 'TEXT', notnull: false, defaultValue: null, primaryKey: false },
|
|
27
|
-
];
|
|
28
|
-
const allNullable = [
|
|
29
|
-
{ name: 'key', type: 'TEXT', notnull: false, defaultValue: null, primaryKey: false },
|
|
30
|
-
{ name: 'value', type: 'TEXT', notnull: false, defaultValue: null, primaryKey: false },
|
|
31
|
-
{ name: 'metadata', type: 'BLOB', notnull: false, defaultValue: null, primaryKey: false },
|
|
32
|
-
];
|
|
33
|
-
const compositePk = [
|
|
34
|
-
{ name: 'feature_id', type: 'TEXT', notnull: true, defaultValue: null, primaryKey: true },
|
|
35
|
-
{ name: 'repository_id', type: 'TEXT', notnull: true, defaultValue: null, primaryKey: true },
|
|
36
|
-
{ name: 'status', type: 'TEXT', notnull: true, defaultValue: "'active'", primaryKey: false },
|
|
37
|
-
{ name: 'created_at', type: 'TEXT', notnull: true, defaultValue: null, primaryKey: false },
|
|
38
|
-
];
|
|
39
|
-
/* ---------------------------------------------------------------------------
|
|
40
|
-
* Stories
|
|
41
|
-
* ------------------------------------------------------------------------- */
|
|
42
|
-
export const TypicalSchema = {
|
|
43
|
-
args: {
|
|
44
|
-
columns: typicalSchema,
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
export const AllNullable = {
|
|
48
|
-
args: {
|
|
49
|
-
columns: allNullable,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
export const CompositePrimaryKey = {
|
|
53
|
-
args: {
|
|
54
|
-
columns: compositePk,
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
export const Loading = {
|
|
58
|
-
args: {
|
|
59
|
-
columns: [],
|
|
60
|
-
loading: true,
|
|
61
|
-
},
|
|
62
|
-
};
|
|
63
|
-
export const Empty = {
|
|
64
|
-
args: {
|
|
65
|
-
columns: [],
|
|
66
|
-
},
|
|
67
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { TableInfo } from '../../../app/actions/list-tables.js';
|
|
2
|
-
export interface TableListProps {
|
|
3
|
-
tables: TableInfo[];
|
|
4
|
-
selectedTable: string | null;
|
|
5
|
-
onSelectTable: (tableName: string) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare function TableList({ tables, selectedTable, onSelectTable }: TableListProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
//# sourceMappingURL=table-list.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table-list.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/database/table-list.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI3D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,cAAc,2CAsDjF"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { Badge } from '../../ui/badge.js';
|
|
5
|
-
import { Input } from '../../ui/input.js';
|
|
6
|
-
import { ScrollArea } from '../../ui/scroll-area.js';
|
|
7
|
-
const SEARCH_THRESHOLD = 10;
|
|
8
|
-
export function TableList({ tables, selectedTable, onSelectTable }) {
|
|
9
|
-
const [search, setSearch] = useState('');
|
|
10
|
-
const filteredTables = search.length > 0
|
|
11
|
-
? tables.filter((t) => t.name.toLowerCase().includes(search.toLowerCase()))
|
|
12
|
-
: tables;
|
|
13
|
-
if (tables.length === 0) {
|
|
14
|
-
return (_jsx("div", { className: "text-muted-foreground p-4 text-center text-sm", "data-testid": "table-list-empty", children: "No tables found" }));
|
|
15
|
-
}
|
|
16
|
-
return (_jsxs("div", { className: "flex flex-col gap-2", "data-testid": "table-list", children: [tables.length > SEARCH_THRESHOLD && (_jsx("div", { className: "px-2 pt-2", children: _jsx(Input, { placeholder: "Filter tables...", value: search, onChange: (e) => setSearch(e.target.value), "data-testid": "table-list-search" }) })), _jsx(ScrollArea, { className: "h-[calc(100vh-12rem)]", children: _jsxs("div", { className: "flex flex-col gap-0.5 p-2", children: [filteredTables.map((table) => (_jsxs("button", { onClick: () => onSelectTable(table.name), className: `flex w-full items-center justify-between rounded-md px-3 py-2 text-left text-sm transition-colors ${selectedTable === table.name ? 'bg-accent text-accent-foreground' : 'hover:bg-muted'}`, "data-testid": `table-item-${table.name}`, children: [_jsx("span", { className: "truncate font-mono text-xs", children: table.name }), _jsx(Badge, { variant: "secondary", className: "ml-2 shrink-0", children: table.rowCount.toLocaleString() })] }, table.name))), filteredTables.length === 0 && search.length > 0 && (_jsxs("div", { className: "text-muted-foreground p-4 text-center text-sm", children: ["No tables matching \"", search, "\""] }))] }) })] }));
|
|
17
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { TableList } from './table-list.js';
|
|
3
|
-
declare const meta: Meta<typeof TableList>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const FewTables: Story;
|
|
7
|
-
export declare const WithSelectedTable: Story;
|
|
8
|
-
export declare const ManyTablesWithSearch: Story;
|
|
9
|
-
export declare const Empty: Story;
|
|
10
|
-
//# sourceMappingURL=table-list.stories.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table-list.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/database/table-list.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAkBhC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAgCnC,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAIlC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { fn } from '@storybook/test';
|
|
3
|
-
import { TableList } from './table-list.js';
|
|
4
|
-
const meta = {
|
|
5
|
-
title: 'Features/Database/TableList',
|
|
6
|
-
component: TableList,
|
|
7
|
-
tags: ['autodocs'],
|
|
8
|
-
parameters: {
|
|
9
|
-
layout: 'centered',
|
|
10
|
-
},
|
|
11
|
-
args: {
|
|
12
|
-
selectedTable: null,
|
|
13
|
-
onSelectTable: fn(),
|
|
14
|
-
},
|
|
15
|
-
decorators: [
|
|
16
|
-
(Story) => (_jsx("div", { className: "w-64", children: _jsx(Story, {}) })),
|
|
17
|
-
],
|
|
18
|
-
};
|
|
19
|
-
export default meta;
|
|
20
|
-
/* ---------------------------------------------------------------------------
|
|
21
|
-
* Data fixtures
|
|
22
|
-
* ------------------------------------------------------------------------- */
|
|
23
|
-
const fewTables = [
|
|
24
|
-
{ name: 'features', rowCount: 42 },
|
|
25
|
-
{ name: 'repositories', rowCount: 5 },
|
|
26
|
-
{ name: 'settings', rowCount: 12 },
|
|
27
|
-
{ name: 'migrations', rowCount: 8 },
|
|
28
|
-
];
|
|
29
|
-
const manyTables = [
|
|
30
|
-
{ name: 'features', rowCount: 42 },
|
|
31
|
-
{ name: 'repositories', rowCount: 5 },
|
|
32
|
-
{ name: 'settings', rowCount: 12 },
|
|
33
|
-
{ name: 'migrations', rowCount: 8 },
|
|
34
|
-
{ name: 'agents', rowCount: 156 },
|
|
35
|
-
{ name: 'agent_events', rowCount: 1024 },
|
|
36
|
-
{ name: 'agent_logs', rowCount: 5432 },
|
|
37
|
-
{ name: 'skills', rowCount: 23 },
|
|
38
|
-
{ name: 'tools', rowCount: 67 },
|
|
39
|
-
{ name: 'tool_executions', rowCount: 890 },
|
|
40
|
-
{ name: 'workflows', rowCount: 15 },
|
|
41
|
-
{ name: 'workflow_steps', rowCount: 234 },
|
|
42
|
-
];
|
|
43
|
-
/* ---------------------------------------------------------------------------
|
|
44
|
-
* Stories
|
|
45
|
-
* ------------------------------------------------------------------------- */
|
|
46
|
-
export const FewTables = {
|
|
47
|
-
args: {
|
|
48
|
-
tables: fewTables,
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
export const WithSelectedTable = {
|
|
52
|
-
args: {
|
|
53
|
-
tables: fewTables,
|
|
54
|
-
selectedTable: 'repositories',
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
export const ManyTablesWithSearch = {
|
|
58
|
-
args: {
|
|
59
|
-
tables: manyTables,
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
export const Empty = {
|
|
63
|
-
args: {
|
|
64
|
-
tables: [],
|
|
65
|
-
},
|
|
66
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
declare function Table({ className, ...props }: React.ComponentProps<'table'>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
declare function TableHeader({ className, ...props }: React.ComponentProps<'thead'>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
declare function TableBody({ className, ...props }: React.ComponentProps<'tbody'>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
declare function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
declare function TableRow({ className, ...props }: React.ComponentProps<'tr'>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
declare function TableHead({ className, ...props }: React.ComponentProps<'th'>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
declare function TableCell({ className, ...props }: React.ComponentProps<'td'>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
declare function TableCaption({ className, ...props }: React.ComponentProps<'caption'>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
|
|
11
|
-
//# sourceMappingURL=table.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAUpE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAE1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAQ1E;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAWpE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAWrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAWrE;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,2CAQ7E;AAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { cn } from '../../lib/utils.js';
|
|
4
|
-
function Table({ className, ...props }) {
|
|
5
|
-
return (_jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: _jsx("table", { "data-slot": "table", className: cn('w-full caption-bottom text-sm', className), ...props }) }));
|
|
6
|
-
}
|
|
7
|
-
function TableHeader({ className, ...props }) {
|
|
8
|
-
return _jsx("thead", { "data-slot": "table-header", className: cn('[&_tr]:border-b', className), ...props });
|
|
9
|
-
}
|
|
10
|
-
function TableBody({ className, ...props }) {
|
|
11
|
-
return (_jsx("tbody", { "data-slot": "table-body", className: cn('[&_tr:last-child]:border-0', className), ...props }));
|
|
12
|
-
}
|
|
13
|
-
function TableFooter({ className, ...props }) {
|
|
14
|
-
return (_jsx("tfoot", { "data-slot": "table-footer", className: cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className), ...props }));
|
|
15
|
-
}
|
|
16
|
-
function TableRow({ className, ...props }) {
|
|
17
|
-
return (_jsx("tr", { "data-slot": "table-row", className: cn('hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors', className), ...props }));
|
|
18
|
-
}
|
|
19
|
-
function TableHead({ className, ...props }) {
|
|
20
|
-
return (_jsx("th", { "data-slot": "table-head", className: cn('text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]', className), ...props }));
|
|
21
|
-
}
|
|
22
|
-
function TableCell({ className, ...props }) {
|
|
23
|
-
return (_jsx("td", { "data-slot": "table-cell", className: cn('p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]', className), ...props }));
|
|
24
|
-
}
|
|
25
|
-
function TableCaption({ className, ...props }) {
|
|
26
|
-
return (_jsx("caption", { "data-slot": "table-caption", className: cn('text-muted-foreground mt-4 text-sm', className), ...props }));
|
|
27
|
-
}
|
|
28
|
-
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server-side database accessor for the web UI.
|
|
3
|
-
*
|
|
4
|
-
* Resolves the better-sqlite3 Database instance from the DI container,
|
|
5
|
-
* which is initialized by the CLI bootstrap or dev-server.
|
|
6
|
-
*/
|
|
7
|
-
export interface DbLike {
|
|
8
|
-
prepare(sql: string): {
|
|
9
|
-
all(...params: unknown[]): unknown[];
|
|
10
|
-
get(...params: unknown[]): unknown;
|
|
11
|
-
run(...params: unknown[]): unknown;
|
|
12
|
-
};
|
|
13
|
-
pragma(sql: string): unknown;
|
|
14
|
-
}
|
|
15
|
-
export declare function getDb(): DbLike;
|
|
16
|
-
//# sourceMappingURL=server-db.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-db.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/server-db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,MAAM;IACrB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QACpB,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QACrC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACnC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;KACpC,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAED,wBAAgB,KAAK,IAAI,MAAM,CAE9B"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server-side database accessor for the web UI.
|
|
3
|
-
*
|
|
4
|
-
* Resolves the better-sqlite3 Database instance from the DI container,
|
|
5
|
-
* which is initialized by the CLI bootstrap or dev-server.
|
|
6
|
-
*/
|
|
7
|
-
import { resolve } from './server-container.js';
|
|
8
|
-
export function getDb() {
|
|
9
|
-
return resolve('Database');
|
|
10
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-safe SQL validation utilities.
|
|
3
|
-
* These are extracted from the execute-query server action so they can be
|
|
4
|
-
* used for instant client-side feedback without a server round-trip.
|
|
5
|
-
*/
|
|
6
|
-
export declare function isWriteQuery(sql: string): boolean;
|
|
7
|
-
//# sourceMappingURL=sql-validation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sql-validation.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/sql-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-safe SQL validation utilities.
|
|
3
|
-
* These are extracted from the execute-query server action so they can be
|
|
4
|
-
* used for instant client-side feedback without a server round-trip.
|
|
5
|
-
*/
|
|
6
|
-
const WRITE_KEYWORDS_PATTERN = /^\s*(INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|ATTACH|DETACH|REINDEX|VACUUM)\b/i;
|
|
7
|
-
const CTE_WRITE_PATTERN = /^\s*WITH\b[\s\S]*?\b(INSERT|UPDATE|DELETE)\b/i;
|
|
8
|
-
function stripSqlComments(sql) {
|
|
9
|
-
return sql
|
|
10
|
-
.replace(/--[^\n]*/g, '')
|
|
11
|
-
.replace(/\/\*[\s\S]*?\*\//g, '')
|
|
12
|
-
.trim();
|
|
13
|
-
}
|
|
14
|
-
export function isWriteQuery(sql) {
|
|
15
|
-
const normalized = stripSqlComments(sql);
|
|
16
|
-
return WRITE_KEYWORDS_PATTERN.test(normalized) || CTE_WRITE_PATTERN.test(normalized);
|
|
17
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"devFiles": [],
|
|
3
|
-
"ampDevFiles": [],
|
|
4
|
-
"polyfillFiles": [
|
|
5
|
-
"static/chunks/a6dad97d9634a72d.js"
|
|
6
|
-
],
|
|
7
|
-
"lowPriorityFiles": [],
|
|
8
|
-
"rootMainFiles": [
|
|
9
|
-
"static/chunks/40b6bcf1a2de4a0f.js",
|
|
10
|
-
"static/chunks/c7e793951b20a67f.js",
|
|
11
|
-
"static/chunks/4b6cc9f65260f2bd.js",
|
|
12
|
-
"static/chunks/cfe4dc9904fcfddb.js",
|
|
13
|
-
"static/chunks/d4d8f0a137bd2eb4.js",
|
|
14
|
-
"static/chunks/turbopack-b1685b5f87ad1d60.js"
|
|
15
|
-
],
|
|
16
|
-
"pages": {},
|
|
17
|
-
"ampFirstPages": []
|
|
18
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|