sqlseed-web 0.2.4__tar.gz → 0.2.6__tar.gz
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.
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/.gitignore +10 -0
- sqlseed_web-0.2.6/AGENTS.md +38 -0
- sqlseed_web-0.2.6/PKG-INFO +156 -0
- sqlseed_web-0.2.6/README.md +132 -0
- sqlseed_web-0.2.6/README.zh-CN.md +92 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/pyproject.toml +1 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/AGENTS.md +64 -48
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/__init__.py +6 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/_application.py +51 -20
- sqlseed_web-0.2.6/src/sqlseed_web/_diagnostic_text.py +36 -0
- sqlseed_web-0.2.6/src/sqlseed_web/_windows_process.py +342 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/ai_settings.py +2 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/api.py +97 -56
- sqlseed_web-0.2.6/src/sqlseed_web/diagnostics.py +37 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/managed_worker.py +106 -23
- sqlseed_web-0.2.6/src/sqlseed_web/messages.py +213 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/plugin_environment.py +92 -28
- sqlseed_web-0.2.6/src/sqlseed_web/plugin_management.py +484 -0
- sqlseed_web-0.2.6/src/sqlseed_web/plugin_process.py +193 -0
- sqlseed_web-0.2.6/src/sqlseed_web/plugin_updates.py +297 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/runtime_lifecycle.py +5 -3
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/runtime_session.py +13 -7
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/settings_environment.py +91 -32
- sqlseed_web-0.2.6/src/sqlseed_web/settings_updates.py +229 -0
- sqlseed_web-0.2.6/src/sqlseed_web/sqlite_target.py +154 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/state.py +28 -18
- sqlseed_web-0.2.6/src/sqlseed_web/static/AGENTS.md +222 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/ai.css +19 -11
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/configs.css +19 -8
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/date-picker.css +7 -7
- sqlseed_web-0.2.6/src/sqlseed_web/static/design-system.css +47 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/design-system.html +24 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/disclosure.css +9 -6
- sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/ChillRoundGothic-Medium.woff2 +0 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/ChillRoundGothic-Regular.woff2 +0 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/License.txt +93 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/README.md +70 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/graph-clarity.css +278 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/i18n/backend-messages.json +1753 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/index.html +6 -4
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/api.js +31 -18
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/app.js +49 -10
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/design-system.js +374 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/dropdown.js +108 -23
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/filepicker.js +36 -25
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/generation-defaults-control.js +84 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/generation-defaults.js +35 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/genform.js +22 -11
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/assistant.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/assistant.json +574 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/components.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/components.json +626 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/configurations.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/configurations.json +370 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/datePicker.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/datePicker.json +144 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/editor.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/editor.json +464 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/flow.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/flow.json +448 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/graph.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/graph.json +344 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/labels.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/labels.json +548 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/preview.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/preview.json +309 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/providerGuide.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/providerGuide.json +112 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/runs.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/runs.json +262 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/settings.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/settings.json +536 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/shell.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/shell.json +96 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/workbench.js +3 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/workbench.json +1726 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n.js +324 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/labels.js +197 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/pages/configs.js +580 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/connect.js +35 -28
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/heal.js +11 -9
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/meta.js +1 -1
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/pages/runs.js +364 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/settings.js +252 -176
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/wizard.js +39 -8
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/pages/workbench.js +3798 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/segment-motion.js +69 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/tab-motion.js +79 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/theme-control.js +42 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/theme.js +71 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/update-check-control.js +41 -0
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/ai-adjustment.js +51 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai-eligibility.js +16 -13
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai-stream.js +35 -16
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai.js +228 -146
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/clear-recovery.js +63 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/connection.js +140 -99
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/date-picker.js +40 -37
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/dependency-view.js +31 -12
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/editor.js +172 -124
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/focus.js +4 -1
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/graph-layout.js +760 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/graph.js +505 -160
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/guidance.js +33 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/model.js +61 -8
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/plugin-management.js +108 -70
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/preview-scroll-layout.js +6 -5
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/preview.js +200 -102
- sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/provider-guide.js +35 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/recovery.js +11 -9
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/session.js +11 -9
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/table-data.js +60 -34
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ui.js +38 -26
- sqlseed_web-0.2.6/src/sqlseed_web/static/motion.css +73 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/navigation.css +15 -4
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/preview.css +23 -5
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/runs.css +12 -17
- sqlseed_web-0.2.6/src/sqlseed_web/static/scrollbars.css +110 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/settings.css +36 -14
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/style.css +1075 -337
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/table-data.css +5 -2
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/workbench.css +207 -52
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/supervised_plugins.py +86 -24
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/supervisor.py +125 -31
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench.py +6 -2
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_ai.py +181 -73
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_ai_relations.py +37 -17
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_ai_stream.py +50 -9
- sqlseed_web-0.2.6/src/sqlseed_web/workbench_cycles.py +222 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_data.py +31 -7
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_execution.py +46 -13
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_runtime.py +332 -162
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_store.py +60 -31
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/worker_control.py +45 -13
- sqlseed_web-0.2.6/tests/AGENTS.md +46 -0
- sqlseed_web-0.2.6/tests/complex_business_graph.json +1830 -0
- sqlseed_web-0.2.6/tests/complex_graph_fixture.py +251 -0
- sqlseed_web-0.2.6/tests/component_test_support.py +88 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/frontend_helpers.cjs +56 -2
- sqlseed_web-0.2.6/tests/test_ai_adjustment.cjs +78 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_ai_eligibility.cjs +2 -2
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_api.py +2 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_api_regressions.py +66 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_app_shell.cjs +110 -14
- sqlseed_web-0.2.6/tests/test_backend_messages.py +294 -0
- sqlseed_web-0.2.6/tests/test_complex_business_graph.cjs +162 -0
- sqlseed_web-0.2.6/tests/test_complex_graph_fixture.py +196 -0
- sqlseed_web-0.2.6/tests/test_component_test_support.py +48 -0
- sqlseed_web-0.2.6/tests/test_configs.cjs +488 -0
- sqlseed_web-0.2.6/tests/test_connection.cjs +459 -0
- sqlseed_web-0.2.6/tests/test_connection_existing_file.py +138 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_date_picker.cjs +50 -2
- sqlseed_web-0.2.6/tests/test_dependency_groups.cjs +35 -0
- sqlseed_web-0.2.6/tests/test_dropdown.cjs +496 -0
- sqlseed_web-0.2.6/tests/test_filepicker.cjs +76 -0
- sqlseed_web-0.2.6/tests/test_generation_defaults.cjs +50 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_genform.cjs +66 -3
- sqlseed_web-0.2.6/tests/test_graph_layout_order.cjs +120 -0
- sqlseed_web-0.2.6/tests/test_graph_routing.cjs +155 -0
- sqlseed_web-0.2.6/tests/test_hardening_boundaries.py +196 -0
- sqlseed_web-0.2.6/tests/test_i18n.cjs +272 -0
- sqlseed_web-0.2.6/tests/test_i18n_catalog.cjs +180 -0
- sqlseed_web-0.2.6/tests/test_i18n_component_paths.py +465 -0
- sqlseed_web-0.2.6/tests/test_i18n_validation_paths.py +416 -0
- sqlseed_web-0.2.6/tests/test_legacy_connect.cjs +92 -0
- sqlseed_web-0.2.6/tests/test_legacy_page_async.cjs +69 -0
- sqlseed_web-0.2.6/tests/test_managed_worker.py +255 -0
- sqlseed_web-0.2.6/tests/test_modal_scroll.cjs +196 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_navigation_motion.cjs +11 -4
- sqlseed_web-0.2.6/tests/test_plugin_cleanup.py +123 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_plugin_management.cjs +110 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_plugin_management.py +135 -4
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_plugin_process.py +54 -2
- sqlseed_web-0.2.6/tests/test_plugin_updates.py +492 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_preview_editing.cjs +7 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_provider_guide.cjs +18 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_rule_usability.cjs +1 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_run_recovery.cjs +13 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_runs.cjs +163 -2
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_runtime_session.py +27 -0
- sqlseed_web-0.2.6/tests/test_segment_motion.cjs +122 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_settings.cjs +368 -6
- sqlseed_web-0.2.6/tests/test_settings_update_lifecycle.py +281 -0
- sqlseed_web-0.2.6/tests/test_settings_updates.py +124 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_supervised_plugins.py +122 -24
- sqlseed_web-0.2.6/tests/test_supervisor.py +428 -0
- sqlseed_web-0.2.6/tests/test_tab_motion.cjs +277 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_table_data.cjs +84 -0
- sqlseed_web-0.2.6/tests/test_theme.cjs +200 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_web_request_security.py +22 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_web_settings.py +86 -1
- sqlseed_web-0.2.6/tests/test_windows_environment.py +153 -0
- sqlseed_web-0.2.6/tests/test_windows_guard.py +131 -0
- sqlseed_web-0.2.6/tests/test_windows_plugin_lifecycle.py +259 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_wizard.cjs +192 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai.cjs +4 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai.py +95 -13
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_integration.cjs +101 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_progress.cjs +59 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_stream.cjs +51 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_async_boundaries.cjs +24 -0
- sqlseed_web-0.2.6/tests/test_workbench_capability_limits.cjs +243 -0
- sqlseed_web-0.2.6/tests/test_workbench_clear_recovery.cjs +202 -0
- sqlseed_web-0.2.6/tests/test_workbench_compact.cjs +146 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_concurrency.py +52 -27
- sqlseed_web-0.2.6/tests/test_workbench_connection_routing.cjs +120 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_context.cjs +4 -4
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_data.cjs +1 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_documents.cjs +145 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_editor.cjs +148 -8
- sqlseed_web-0.2.6/tests/test_workbench_empty_schema.cjs +69 -0
- sqlseed_web-0.2.6/tests/test_workbench_execution.cjs +405 -0
- sqlseed_web-0.2.6/tests/test_workbench_existing_cycles.py +439 -0
- sqlseed_web-0.2.6/tests/test_workbench_graph.cjs +1359 -0
- sqlseed_web-0.2.6/tests/test_workbench_graph_checks.cjs +173 -0
- sqlseed_web-0.2.6/tests/test_workbench_guidance.cjs +263 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_model.cjs +63 -2
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_page.cjs +61 -2
- sqlseed_web-0.2.6/tests/test_workbench_postgresql_cycles.py +197 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_preview.cjs +155 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_review.cjs +1 -1
- sqlseed_web-0.2.6/tests/test_workbench_run_plan.py +191 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_runtime.py +167 -34
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_session.cjs +20 -2
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_store.py +32 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_target_identity.py +220 -7
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_usability.cjs +1 -1
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_v8.cjs +2 -2
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/workbench_harness.cjs +16 -9
- sqlseed_web-0.2.4/AGENTS.md +0 -56
- sqlseed_web-0.2.4/PKG-INFO +0 -105
- sqlseed_web-0.2.4/README.md +0 -81
- sqlseed_web-0.2.4/src/sqlseed_web/plugin_management.py +0 -322
- sqlseed_web-0.2.4/src/sqlseed_web/plugin_process.py +0 -131
- sqlseed_web-0.2.4/src/sqlseed_web/sqlite_target.py +0 -86
- sqlseed_web-0.2.4/src/sqlseed_web/static/AGENTS.md +0 -180
- sqlseed_web-0.2.4/src/sqlseed_web/static/graph-clarity.css +0 -103
- sqlseed_web-0.2.4/src/sqlseed_web/static/js/labels.js +0 -195
- sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/configs.js +0 -424
- sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/runs.js +0 -293
- sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/workbench.js +0 -3123
- sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/graph-layout.js +0 -332
- sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/guidance.js +0 -29
- sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/provider-guide.js +0 -33
- sqlseed_web-0.2.4/src/sqlseed_web/static/scrollbars.css +0 -42
- sqlseed_web-0.2.4/tests/AGENTS.md +0 -25
- sqlseed_web-0.2.4/tests/test_configs.cjs +0 -226
- sqlseed_web-0.2.4/tests/test_connection.cjs +0 -207
- sqlseed_web-0.2.4/tests/test_dropdown.cjs +0 -234
- sqlseed_web-0.2.4/tests/test_modal_scroll.cjs +0 -74
- sqlseed_web-0.2.4/tests/test_supervisor.py +0 -126
- sqlseed_web-0.2.4/tests/test_workbench_execution.cjs +0 -61
- sqlseed_web-0.2.4/tests/test_workbench_graph.cjs +0 -541
- sqlseed_web-0.2.4/tests/test_workbench_guidance.cjs +0 -100
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/LICENSE +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/__main__.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/app.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/operation_errors.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/browse.js +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/tree.js +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai-handoff.js +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/scroll-lock.js +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_schema.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/conftest.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_api_ai_secrets.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_browse.cjs +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_component_availability.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_disclosure_focus.cjs +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_job_completion.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_preview_scroll_layout.cjs +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_runtime_lifecycle.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_acceptance.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_handoff.cjs +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_relations.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_busy.cjs +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_configs.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_data.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_execution.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_providers.cjs +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_sample_budget.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_schema.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_worker_control.py +0 -0
- {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/workbench_test_helpers.py +0 -0
|
@@ -59,6 +59,16 @@ dmypy.json
|
|
|
59
59
|
*.db
|
|
60
60
|
*.sqlite
|
|
61
61
|
*.sqlite3
|
|
62
|
+
# SQLite runtime sidecars
|
|
63
|
+
*.db-wal
|
|
64
|
+
*.db-shm
|
|
65
|
+
*.db-journal
|
|
66
|
+
*.sqlite-wal
|
|
67
|
+
*.sqlite-shm
|
|
68
|
+
*.sqlite-journal
|
|
69
|
+
*.sqlite3-wal
|
|
70
|
+
*.sqlite3-shm
|
|
71
|
+
*.sqlite3-journal
|
|
62
72
|
.sqlseed_cache/
|
|
63
73
|
snapshots/
|
|
64
74
|
.env
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# sqlseed-web 包边界
|
|
2
|
+
|
|
3
|
+
本包是本机 Web 工作台:FastAPI 包装离线 core 与可选 AI 能力,直接提供静态 ES modules。正式导航为工作台、配置管理、运行记录、设置;连接使用同主题弹窗。当前产品能力见 [Web 工作台指南](../../docs/web-workbench.md)。
|
|
4
|
+
|
|
5
|
+
## 入口与局部指南
|
|
6
|
+
|
|
7
|
+
| 范围 | 入口与规则 |
|
|
8
|
+
|---|---|
|
|
9
|
+
| HTTP API、连接、持久化与后台任务 | [后端指南](src/sqlseed_web/AGENTS.md) |
|
|
10
|
+
| 页面、规则面板、状态与样式 | [前端指南](src/sqlseed_web/static/AGENTS.md) |
|
|
11
|
+
| 包依赖、extra 与 console script | [pyproject.toml](pyproject.toml) |
|
|
12
|
+
| API、Node 与安装验收 | [测试指南](tests/AGENTS.md) |
|
|
13
|
+
|
|
14
|
+
## 包与产品约定
|
|
15
|
+
|
|
16
|
+
- 本包是 standalone app,不注册到 `project.entry-points."sqlseed"`。必需依赖为 Core、FastAPI、Uvicorn、PyYAML、packaging;准确版本范围以 manifest 为准。
|
|
17
|
+
- 当前源码要求 Core `>=0.2.5.dev0,<0.3`,共享连接解析和诊断脱敏不能与旧 Core 混装;AI extra 仍为 `>=0.2.4.dev0,<0.3`。不能为安装方便放宽已使用接口的版本下界。`[ai]` 安装可选 AI,`[dev]` 提供 pytest/httpx。
|
|
18
|
+
- 没有 npm/Vite/bundler 或前端构建步骤,静态资源随 Python wheel 分发。保持一套清透玻璃设计及其浅色/深色模式与现有工作台交互;历史 connect/wizard/browse/heal/meta 页面不在正式 router 中加载,兼容旧 API 不要求恢复旧导航。
|
|
19
|
+
- 正式界面提供简体中文与 English,UI 偏好独立于生成配置的 locale。切语言只更新显式绑定的展示内容,不重挂页面、不发业务请求、不改用户数据;前后端 JSON 字典及 JS 注册入口同随 wheel 分发。维护入口见 [Web 双语维护](../../docs/development/web-i18n.md),不得把开发实现说明写成已完成发行/浏览器验收。
|
|
20
|
+
- 外观入口位于正式设置及组件样板页头;支持浅色、深色、跟随系统,默认浅色。偏好仅存当前浏览器并同步同源标签页,跟随系统自动响应明暗变化;不修改 AI 设置或生成配置,不发起 AI 或业务请求。主题及字体约束见前端指南。
|
|
21
|
+
- 未安装 AI 时基础连接、schema、配置、预览和填充仍可用。AI 仅按用户请求提供待审阅建议,应用后进入同一配置,不在写入时隐式调用 AI。provider/locale 属于生成配置,不属于连接表单。
|
|
22
|
+
- `sqlseed-web` 与 `python -m sqlseed_web` 默认启动 supervisor 和可替换 worker,监听 `127.0.0.1:8630`;安装发行包后即可启动,不需要仓库脚本。直接托管 `app:create_app` 可使用业务,但不具备自动组件管理。
|
|
23
|
+
- 草稿和运行保存在用户应用数据目录的 `sqlseed/workspace.sqlite3`,可用 `SQLSEED_WEB_WORKSPACE_PATH` 覆盖。连接凭据不随配置持久化;AI 普通设置、进程内密钥及 endpoint 隔离规则见后端指南。
|
|
24
|
+
- 默认受管模式在支持的独立环境中提供网页内组件管理;部署能力由后端返回,不能因为环境不可管理而阻止普通 Web。旧 `--manage-plugins` 只作兼容入口,不是普通启动步骤。
|
|
25
|
+
- 历史设计计划与原型用于解释已有决策;修改时以当前实现、正式指南和局部回归约束核验,不将旧导航、历史测试数量或阶段性验收状态当作新增需求。
|
|
26
|
+
|
|
27
|
+
## 验证
|
|
28
|
+
|
|
29
|
+
完整开发依赖使用 [根指南](../../AGENTS.md) 的五包安装命令。从仓库根运行:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pytest plugins/sqlseed-web/tests/ -q
|
|
33
|
+
node --test plugins/sqlseed-web/tests/test_*.cjs
|
|
34
|
+
ruff check plugins/sqlseed-web/
|
|
35
|
+
mypy plugins/sqlseed-web/src/
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
根 pytest 包含 Web,CI 单独运行 Node 内置测试,无 npm 依赖。页面行为修改需补实际浏览器验证;真实 LLM、PostgreSQL、安装后入口验收分别记录,不能互相替代。generator/hook 元数据从 core 动态读取,不将历史数量硬编码为新事实。
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: sqlseed-web
|
|
3
|
+
Version: 0.2.6
|
|
4
|
+
Summary: Local sqlseed workbench for SQLite and PostgreSQL rules, previews, generation and optional AI suggestions
|
|
5
|
+
Project-URL: Homepage, https://github.com/sunbos/sqlseed
|
|
6
|
+
Project-URL: Repository, https://github.com/sunbos/sqlseed/tree/main/plugins/sqlseed-web
|
|
7
|
+
Project-URL: Documentation, https://sunbos.github.io/sqlseed/web-workbench/
|
|
8
|
+
Author: sqlseed contributors
|
|
9
|
+
License-Expression: AGPL-3.0-or-later
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: fastapi,sqlseed,test-data,web-ui
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Requires-Dist: fastapi>=0.110
|
|
14
|
+
Requires-Dist: packaging>=23.2
|
|
15
|
+
Requires-Dist: pyyaml>=6.0
|
|
16
|
+
Requires-Dist: sqlseed<0.3,>=0.2.5.dev0
|
|
17
|
+
Requires-Dist: uvicorn>=0.29
|
|
18
|
+
Provides-Extra: ai
|
|
19
|
+
Requires-Dist: sqlseed-ai<0.3,>=0.2.4.dev0; extra == 'ai'
|
|
20
|
+
Provides-Extra: dev
|
|
21
|
+
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
22
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# sqlseed Web
|
|
26
|
+
|
|
27
|
+
[简体中文](https://github.com/sunbos/sqlseed/blob/main/plugins/sqlseed-web/README.zh-CN.md)
|
|
28
|
+
|
|
29
|
+
A local browser workbench for declarative SQLite and PostgreSQL test data generation.
|
|
30
|
+
Connect a database, edit field rules, preview samples, inspect dependencies and review
|
|
31
|
+
generation results. The Python core runs offline; AI suggestions are optional.
|
|
32
|
+
|
|
33
|
+
## A look at the workbench
|
|
34
|
+
|
|
35
|
+

|
|
36
|
+
|
|
37
|
+
The actual 0.2.5 interface with the repository's fictional SQLite order example.
|
|
38
|
+
[Open the full-size PNG](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-en-light.png)
|
|
39
|
+
or [see the read-only sample preview in the dark theme](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-en-dark.png).
|
|
40
|
+
|
|
41
|
+
Connect an existing database, select tables and row counts, review field rules and
|
|
42
|
+
dependencies, preview samples, then confirm the generation plan.
|
|
43
|
+
|
|
44
|
+
| Page | What you can do |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| Workbench | Edit rules, inspect the relationship graph, preview samples without writing, and confirm generation. |
|
|
47
|
+
| Configs | Save reusable rules, import or export YAML, and reopen configurations for the matching database. |
|
|
48
|
+
| Runs | Review per-table outcomes, committed row counts, and the configuration snapshot used for a run. |
|
|
49
|
+
| Settings | Choose generation defaults, light/dark appearance, optional AI settings, and available components. |
|
|
50
|
+
|
|
51
|
+
The [order workflow example](https://github.com/sunbos/sqlseed/tree/main/examples/order_workflow)
|
|
52
|
+
includes the schema, rules, and instructions for creating your own disposable demo.
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
These instructions target version 0.2.6. Check [Releases](https://github.com/sunbos/sqlseed/releases)
|
|
57
|
+
for publication status; use the source installation below to test an unpublished candidate.
|
|
58
|
+
Use a Python 3.10+ virtual environment:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
python -m pip install "sqlseed==0.2.6" "sqlseed-web==0.2.6"
|
|
62
|
+
sqlseed-web
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Open `http://127.0.0.1:8630`. The wheel includes the frontend; no Node or npm build
|
|
66
|
+
is needed to use the app. For PostgreSQL, also install `"sqlseed[postgres]==0.2.6"`.
|
|
67
|
+
Core 0.2.4 and older lack the shared connection and diagnostic interfaces required by this version.
|
|
68
|
+
|
|
69
|
+
For development, install local Core and Web together from the repository root:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
python -m pip install -e . -e ./plugins/sqlseed-web
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Version 0.2.6 and its source candidates require Core `>=0.2.5.dev0,<0.3` for
|
|
76
|
+
connection-target parsing and diagnostic redaction. Install matching Core and Web
|
|
77
|
+
versions; do not disable dependency checks to keep an older Core.
|
|
78
|
+
|
|
79
|
+
## Interface language
|
|
80
|
+
|
|
81
|
+
Version 0.2.6 offers **简体中文 / English** in the top bar.
|
|
82
|
+
The browser remembers your choice and synchronizes it with other tabs on the same
|
|
83
|
+
origin. Without a saved choice, the first supported browser language is used,
|
|
84
|
+
falling back to English. If storage is unavailable, switching still works for the
|
|
85
|
+
current page.
|
|
86
|
+
|
|
87
|
+
Switching updates labels, help and supported diagnostics in place. It does not
|
|
88
|
+
reload the page, submit a form or make a database/AI request. Unsaved edits, focus
|
|
89
|
+
and selections are retained. **Data language and region** is a separate generation
|
|
90
|
+
setting: changing the interface language does not change generated data,
|
|
91
|
+
configuration names, schema identifiers, YAML or database values. Older or
|
|
92
|
+
third-party diagnostics may retain their original text with a translated explanation.
|
|
93
|
+
|
|
94
|
+
Message resources ship with the wheel and require no translation service. See the
|
|
95
|
+
[maintenance guide](https://sunbos.github.io/sqlseed/development/web-i18n/) for
|
|
96
|
+
coverage and the checks required for new UI messages.
|
|
97
|
+
|
|
98
|
+
## Optional components
|
|
99
|
+
|
|
100
|
+
Open **Settings → Plugins and versions** to see which components are available and which
|
|
101
|
+
features depend on them. Base is built in, Faker is installed with core, and Mimesis is
|
|
102
|
+
optional. AI is needed only for model-assisted rule suggestions; accepted rules can be
|
|
103
|
+
executed offline.
|
|
104
|
+
|
|
105
|
+
This workbench requires the AI interfaces from the 0.2.4 release line. It rejects
|
|
106
|
+
older importable AI packages instead of reporting them as ready. For a source checkout,
|
|
107
|
+
install local Core, CLI, AI, and Web together in the same resolution:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
python -m pip install -e . -e ./plugins/sqlseed-cli -e ./plugins/sqlseed-ai -e ./plugins/sqlseed-web
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
For version 0.2.6, `python -m pip install "sqlseed-web[ai]==0.2.6"` installs
|
|
114
|
+
the optional AI component. The page does not fall back to an incompatible older release.
|
|
115
|
+
|
|
116
|
+
The version 0.2.6 default launcher manages optional packages
|
|
117
|
+
in supported writable Windows, macOS and Linux virtual environments and restores
|
|
118
|
+
the service automatically. Externally hosted apps and read-only/system environments
|
|
119
|
+
can use the workbench but do not offer in-page package changes. Missing components
|
|
120
|
+
produce an explanation and recovery entry point; the app preserves the configuration
|
|
121
|
+
instead of silently changing its engine. Updates require a reviewed compatible wheel
|
|
122
|
+
and keep other installed components fixed; Core and Web are updated through the
|
|
123
|
+
environment's package manager.
|
|
124
|
+
|
|
125
|
+
## Data and deployment boundaries
|
|
126
|
+
|
|
127
|
+
Preview does not write generated rows. Generation requires an explicit confirmation;
|
|
128
|
+
batch failures can leave earlier committed data, so read the run result before retrying.
|
|
129
|
+
Use a test database or a disposable copy for demonstrations.
|
|
130
|
+
|
|
131
|
+
The service is designed for one trusted local user and has no multi-user authentication.
|
|
132
|
+
It binds to loopback by default. Do not expose it directly to an untrusted network.
|
|
133
|
+
Same-origin request checks do not replace authentication or database permissions.
|
|
134
|
+
|
|
135
|
+
See the [workbench guide](https://sunbos.github.io/sqlseed/web-workbench/)
|
|
136
|
+
and [support boundaries](https://sunbos.github.io/sqlseed/maintainable-release/).
|
|
137
|
+
|
|
138
|
+
## Requirements
|
|
139
|
+
|
|
140
|
+
- Python `>=3.10`
|
|
141
|
+
- `sqlseed>=0.2.5.dev0,<0.3`
|
|
142
|
+
- `fastapi>=0.110`
|
|
143
|
+
- `uvicorn>=0.29`
|
|
144
|
+
- `pyyaml>=6.0`
|
|
145
|
+
- `packaging>=23.2`
|
|
146
|
+
- Optional `ai` extra: `sqlseed-ai>=0.2.4.dev0,<0.3`
|
|
147
|
+
|
|
148
|
+
## Development checks
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
pytest plugins/sqlseed-web/tests/
|
|
152
|
+
node --test plugins/sqlseed-web/tests/test_*.cjs
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
License: [AGPL-3.0-or-later](https://github.com/sunbos/sqlseed/blob/main/LICENSE).
|
|
156
|
+
The distribution includes the full LICENSE text.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# sqlseed Web
|
|
2
|
+
|
|
3
|
+
[简体中文](https://github.com/sunbos/sqlseed/blob/main/plugins/sqlseed-web/README.zh-CN.md)
|
|
4
|
+
|
|
5
|
+
A local browser workbench for declarative SQLite and PostgreSQL test data generation.
|
|
6
|
+
Connect a database, edit field rules, preview samples, inspect dependencies and review
|
|
7
|
+
generation results. The Python core runs offline; AI suggestions are optional.
|
|
8
|
+
|
|
9
|
+
## A look at the workbench
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
The actual 0.2.5 interface with the repository's fictional SQLite order example.
|
|
14
|
+
[Open the full-size PNG](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-en-light.png)
|
|
15
|
+
or [see the read-only sample preview in the dark theme](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-en-dark.png).
|
|
16
|
+
|
|
17
|
+
Connect an existing database, select tables and row counts, review field rules and
|
|
18
|
+
dependencies, preview samples, then confirm the generation plan.
|
|
19
|
+
|
|
20
|
+
| Page | What you can do |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| Workbench | Edit rules, inspect the relationship graph, preview samples without writing, and confirm generation. |
|
|
23
|
+
| Configs | Save reusable rules, import or export YAML, and reopen configurations for the matching database. |
|
|
24
|
+
| Runs | Review per-table outcomes, committed row counts, and the configuration snapshot used for a run. |
|
|
25
|
+
| Settings | Choose generation defaults, light/dark appearance, optional AI settings, and available components. |
|
|
26
|
+
|
|
27
|
+
The [order workflow example](https://github.com/sunbos/sqlseed/tree/main/examples/order_workflow)
|
|
28
|
+
includes the schema, rules, and instructions for creating your own disposable demo.
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
These instructions target version 0.2.6. Check [Releases](https://github.com/sunbos/sqlseed/releases)
|
|
33
|
+
for publication status; use the source installation below to test an unpublished candidate.
|
|
34
|
+
Use a Python 3.10+ virtual environment:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
python -m pip install "sqlseed==0.2.6" "sqlseed-web==0.2.6"
|
|
38
|
+
sqlseed-web
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Open `http://127.0.0.1:8630`. The wheel includes the frontend; no Node or npm build
|
|
42
|
+
is needed to use the app. For PostgreSQL, also install `"sqlseed[postgres]==0.2.6"`.
|
|
43
|
+
Core 0.2.4 and older lack the shared connection and diagnostic interfaces required by this version.
|
|
44
|
+
|
|
45
|
+
For development, install local Core and Web together from the repository root:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
python -m pip install -e . -e ./plugins/sqlseed-web
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Version 0.2.6 and its source candidates require Core `>=0.2.5.dev0,<0.3` for
|
|
52
|
+
connection-target parsing and diagnostic redaction. Install matching Core and Web
|
|
53
|
+
versions; do not disable dependency checks to keep an older Core.
|
|
54
|
+
|
|
55
|
+
## Interface language
|
|
56
|
+
|
|
57
|
+
Version 0.2.6 offers **简体中文 / English** in the top bar.
|
|
58
|
+
The browser remembers your choice and synchronizes it with other tabs on the same
|
|
59
|
+
origin. Without a saved choice, the first supported browser language is used,
|
|
60
|
+
falling back to English. If storage is unavailable, switching still works for the
|
|
61
|
+
current page.
|
|
62
|
+
|
|
63
|
+
Switching updates labels, help and supported diagnostics in place. It does not
|
|
64
|
+
reload the page, submit a form or make a database/AI request. Unsaved edits, focus
|
|
65
|
+
and selections are retained. **Data language and region** is a separate generation
|
|
66
|
+
setting: changing the interface language does not change generated data,
|
|
67
|
+
configuration names, schema identifiers, YAML or database values. Older or
|
|
68
|
+
third-party diagnostics may retain their original text with a translated explanation.
|
|
69
|
+
|
|
70
|
+
Message resources ship with the wheel and require no translation service. See the
|
|
71
|
+
[maintenance guide](https://sunbos.github.io/sqlseed/development/web-i18n/) for
|
|
72
|
+
coverage and the checks required for new UI messages.
|
|
73
|
+
|
|
74
|
+
## Optional components
|
|
75
|
+
|
|
76
|
+
Open **Settings → Plugins and versions** to see which components are available and which
|
|
77
|
+
features depend on them. Base is built in, Faker is installed with core, and Mimesis is
|
|
78
|
+
optional. AI is needed only for model-assisted rule suggestions; accepted rules can be
|
|
79
|
+
executed offline.
|
|
80
|
+
|
|
81
|
+
This workbench requires the AI interfaces from the 0.2.4 release line. It rejects
|
|
82
|
+
older importable AI packages instead of reporting them as ready. For a source checkout,
|
|
83
|
+
install local Core, CLI, AI, and Web together in the same resolution:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
python -m pip install -e . -e ./plugins/sqlseed-cli -e ./plugins/sqlseed-ai -e ./plugins/sqlseed-web
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
For version 0.2.6, `python -m pip install "sqlseed-web[ai]==0.2.6"` installs
|
|
90
|
+
the optional AI component. The page does not fall back to an incompatible older release.
|
|
91
|
+
|
|
92
|
+
The version 0.2.6 default launcher manages optional packages
|
|
93
|
+
in supported writable Windows, macOS and Linux virtual environments and restores
|
|
94
|
+
the service automatically. Externally hosted apps and read-only/system environments
|
|
95
|
+
can use the workbench but do not offer in-page package changes. Missing components
|
|
96
|
+
produce an explanation and recovery entry point; the app preserves the configuration
|
|
97
|
+
instead of silently changing its engine. Updates require a reviewed compatible wheel
|
|
98
|
+
and keep other installed components fixed; Core and Web are updated through the
|
|
99
|
+
environment's package manager.
|
|
100
|
+
|
|
101
|
+
## Data and deployment boundaries
|
|
102
|
+
|
|
103
|
+
Preview does not write generated rows. Generation requires an explicit confirmation;
|
|
104
|
+
batch failures can leave earlier committed data, so read the run result before retrying.
|
|
105
|
+
Use a test database or a disposable copy for demonstrations.
|
|
106
|
+
|
|
107
|
+
The service is designed for one trusted local user and has no multi-user authentication.
|
|
108
|
+
It binds to loopback by default. Do not expose it directly to an untrusted network.
|
|
109
|
+
Same-origin request checks do not replace authentication or database permissions.
|
|
110
|
+
|
|
111
|
+
See the [workbench guide](https://sunbos.github.io/sqlseed/web-workbench/)
|
|
112
|
+
and [support boundaries](https://sunbos.github.io/sqlseed/maintainable-release/).
|
|
113
|
+
|
|
114
|
+
## Requirements
|
|
115
|
+
|
|
116
|
+
- Python `>=3.10`
|
|
117
|
+
- `sqlseed>=0.2.5.dev0,<0.3`
|
|
118
|
+
- `fastapi>=0.110`
|
|
119
|
+
- `uvicorn>=0.29`
|
|
120
|
+
- `pyyaml>=6.0`
|
|
121
|
+
- `packaging>=23.2`
|
|
122
|
+
- Optional `ai` extra: `sqlseed-ai>=0.2.4.dev0,<0.3`
|
|
123
|
+
|
|
124
|
+
## Development checks
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
pytest plugins/sqlseed-web/tests/
|
|
128
|
+
node --test plugins/sqlseed-web/tests/test_*.cjs
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
License: [AGPL-3.0-or-later](https://github.com/sunbos/sqlseed/blob/main/LICENSE).
|
|
132
|
+
The distribution includes the full LICENSE text.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# sqlseed Web
|
|
2
|
+
|
|
3
|
+
[English](https://github.com/sunbos/sqlseed/blob/main/plugins/sqlseed-web/README.md)
|
|
4
|
+
|
|
5
|
+
面向 SQLite 与 PostgreSQL 声明式测试数据生成的本机浏览器工作台。连接数据库、编辑字段规则、预览样例、检查依赖并查看生成结果。Python core 离线运行;AI 建议是可选功能。
|
|
6
|
+
|
|
7
|
+
## 工作台概览
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
0.2.5 正式界面的实际截图,使用仓库中的虚构 SQLite 订单示例。
|
|
12
|
+
[查看原尺寸高清 PNG](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-zh-CN-light.png),
|
|
13
|
+
或[查看深色主题下的只读样例预览](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-zh-CN-dark.png)。
|
|
14
|
+
|
|
15
|
+
连接已有数据库 → 选择表和生成数量 → 核对字段规则与依赖 → 预览样例 → 确认生成计划。
|
|
16
|
+
|
|
17
|
+
| 页面 | 可以做什么 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| 工作台 | 编辑规则、浏览关系图、只读预览样例,并确认生成。 |
|
|
20
|
+
| 配置管理 | 保存可复用规则、导入导出 YAML、重新打开对应数据库的配置。 |
|
|
21
|
+
| 运行记录 | 查看逐表结果、实际已提交行数和本次使用的配置快照。 |
|
|
22
|
+
| 设置 | 调整生成默认值、浅色/深色外观、可选 AI 设置与组件。 |
|
|
23
|
+
|
|
24
|
+
[订单工作流示例](https://github.com/sunbos/sqlseed/tree/main/examples/order_workflow)提供建表结构、生成规则和操作说明,可用于创建自己的独立演示库。
|
|
25
|
+
|
|
26
|
+
## 安装
|
|
27
|
+
|
|
28
|
+
本文安装说明对应 0.2.6 版本;发布状态以 [Releases](https://github.com/sunbos/sqlseed/releases) 为准。测试尚未发布的候选版本时,使用下方的源码安装方式。请先创建并激活 Python 3.10+ 虚拟环境:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
python -m pip install "sqlseed==0.2.6" "sqlseed-web==0.2.6"
|
|
32
|
+
sqlseed-web
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
打开 `http://127.0.0.1:8630`。wheel 包含前端,使用时无需 Node 或 npm 构建。PostgreSQL 还需安装 `"sqlseed[postgres]==0.2.6"`。Core 0.2.4 及更早版本缺少本版本所需的共享连接和诊断接口。
|
|
36
|
+
|
|
37
|
+
开发源码从仓库根同时安装 Core 与 Web:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
python -m pip install -e . -e ./plugins/sqlseed-web
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
0.2.6 版本及其源码候选要求 Core `>=0.2.5.dev0,<0.3`,用于连接目标解析与诊断脱敏。请使用匹配的 Core 与 Web 版本,不要关闭依赖检查来保留旧 Core。
|
|
44
|
+
|
|
45
|
+
## 界面语言
|
|
46
|
+
|
|
47
|
+
0.2.6 版本在顶栏提供 **简体中文 / English**。浏览器记住选择,并与同源标签页同步。没有已存偏好时,采用浏览器偏好中第一个支持的语言,无匹配则使用 English;存储不可用时仍能在当前页切换。
|
|
48
|
+
|
|
49
|
+
切换就地更新标签、帮助和受支持的诊断,不刷新页面、不提交表单,也不发数据库或 AI 请求;未保存的修改、焦点和选择保持不变。**数据语言与地区**是独立的生成配置:切换界面语言不改变生成内容、配置名称、表列标识、YAML 或数据库原值。旧记录或第三方诊断可能保留原文,并附当前语言说明。
|
|
50
|
+
|
|
51
|
+
语言资源随 wheel 分发,不需要翻译服务。覆盖与新增文案所需验证见 [Web 双语维护](https://sunbos.github.io/sqlseed/zh-CN/development/web-i18n/)。
|
|
52
|
+
|
|
53
|
+
## 可选组件
|
|
54
|
+
|
|
55
|
+
在“设置 → 插件与版本”查看组件可用性及受影响功能。Base 内置,Faker 随 Core 安装,Mimesis 可选。只有模型辅助规则建议需要 AI;接受后的规则可以离线执行。
|
|
56
|
+
|
|
57
|
+
工作台要求 0.2.4 发布线的 AI 接口;旧包即使可导入,也不会被报告为可用。源码开发时在同一次解析中安装本地 Core、CLI、AI 与 Web:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
python -m pip install -e . -e ./plugins/sqlseed-cli -e ./plugins/sqlseed-ai -e ./plugins/sqlseed-web
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
0.2.6 使用 `python -m pip install "sqlseed-web[ai]==0.2.6"` 安装可选 AI 组件。页面不会回退到不兼容的旧版本。
|
|
64
|
+
|
|
65
|
+
0.2.6 的默认启动器可在受支持、可写的 Windows、macOS 与 Linux 虚拟环境中管理可选包,并自动恢复服务。外部托管、只读或系统环境仍可使用工作台,但不开放网页包变更。组件缺失会显示原因和恢复入口,不会静默替换配置中的引擎。更新必须审阅兼容 wheel,保持其他已安装组件的版本;Core 与 Web 由环境的包管理工具更新。
|
|
66
|
+
|
|
67
|
+
## 数据与部署边界
|
|
68
|
+
|
|
69
|
+
预览不写入生成记录。正式生成必须明确确认;分批失败可能保留此前已提交的数据,重试前应核对运行结果。演示使用测试数据库或可丢弃副本。
|
|
70
|
+
|
|
71
|
+
服务面向一个可信的本机用户,没有多用户认证,默认只监听 loopback。不要直接暴露到不可信网络;同源请求检查不能替代认证或数据库权限。
|
|
72
|
+
|
|
73
|
+
详见[工作台指南](https://sunbos.github.io/sqlseed/zh-CN/web-workbench/)与[支持边界](https://sunbos.github.io/sqlseed/zh-CN/maintainable-release/)。
|
|
74
|
+
|
|
75
|
+
## 依赖
|
|
76
|
+
|
|
77
|
+
- Python `>=3.10`
|
|
78
|
+
- `sqlseed>=0.2.5.dev0,<0.3`
|
|
79
|
+
- `fastapi>=0.110`
|
|
80
|
+
- `uvicorn>=0.29`
|
|
81
|
+
- `pyyaml>=6.0`
|
|
82
|
+
- `packaging>=23.2`
|
|
83
|
+
- 可选 `ai` extra:`sqlseed-ai>=0.2.4.dev0,<0.3`
|
|
84
|
+
|
|
85
|
+
## 开发验证
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
pytest plugins/sqlseed-web/tests/
|
|
89
|
+
node --test plugins/sqlseed-web/tests/test_*.cjs
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
许可证:[AGPL-3.0-or-later](https://github.com/sunbos/sqlseed/blob/main/LICENSE)。发行包包含完整 LICENSE 文本。
|
|
@@ -13,7 +13,7 @@ license-files = ["LICENSE"]
|
|
|
13
13
|
authors = [{ name = "sqlseed contributors" }]
|
|
14
14
|
keywords = ["sqlseed", "test-data", "web-ui", "fastapi"]
|
|
15
15
|
dependencies = [
|
|
16
|
-
"sqlseed>=0.2.
|
|
16
|
+
"sqlseed>=0.2.5.dev0,<0.3",
|
|
17
17
|
"fastapi>=0.110",
|
|
18
18
|
"uvicorn>=0.29",
|
|
19
19
|
"pyyaml>=6.0",
|