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.
Files changed (283) hide show
  1. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/.gitignore +10 -0
  2. sqlseed_web-0.2.6/AGENTS.md +38 -0
  3. sqlseed_web-0.2.6/PKG-INFO +156 -0
  4. sqlseed_web-0.2.6/README.md +132 -0
  5. sqlseed_web-0.2.6/README.zh-CN.md +92 -0
  6. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/pyproject.toml +1 -1
  7. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/AGENTS.md +64 -48
  8. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/__init__.py +6 -1
  9. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/_application.py +51 -20
  10. sqlseed_web-0.2.6/src/sqlseed_web/_diagnostic_text.py +36 -0
  11. sqlseed_web-0.2.6/src/sqlseed_web/_windows_process.py +342 -0
  12. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/ai_settings.py +2 -1
  13. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/api.py +97 -56
  14. sqlseed_web-0.2.6/src/sqlseed_web/diagnostics.py +37 -0
  15. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/managed_worker.py +106 -23
  16. sqlseed_web-0.2.6/src/sqlseed_web/messages.py +213 -0
  17. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/plugin_environment.py +92 -28
  18. sqlseed_web-0.2.6/src/sqlseed_web/plugin_management.py +484 -0
  19. sqlseed_web-0.2.6/src/sqlseed_web/plugin_process.py +193 -0
  20. sqlseed_web-0.2.6/src/sqlseed_web/plugin_updates.py +297 -0
  21. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/runtime_lifecycle.py +5 -3
  22. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/runtime_session.py +13 -7
  23. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/settings_environment.py +91 -32
  24. sqlseed_web-0.2.6/src/sqlseed_web/settings_updates.py +229 -0
  25. sqlseed_web-0.2.6/src/sqlseed_web/sqlite_target.py +154 -0
  26. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/state.py +28 -18
  27. sqlseed_web-0.2.6/src/sqlseed_web/static/AGENTS.md +222 -0
  28. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/ai.css +19 -11
  29. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/configs.css +19 -8
  30. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/date-picker.css +7 -7
  31. sqlseed_web-0.2.6/src/sqlseed_web/static/design-system.css +47 -0
  32. sqlseed_web-0.2.6/src/sqlseed_web/static/design-system.html +24 -0
  33. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/disclosure.css +9 -6
  34. sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/ChillRoundGothic-Medium.woff2 +0 -0
  35. sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/ChillRoundGothic-Regular.woff2 +0 -0
  36. sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/License.txt +93 -0
  37. sqlseed_web-0.2.6/src/sqlseed_web/static/fonts/chill-round-gothic/README.md +70 -0
  38. sqlseed_web-0.2.6/src/sqlseed_web/static/graph-clarity.css +278 -0
  39. sqlseed_web-0.2.6/src/sqlseed_web/static/i18n/backend-messages.json +1753 -0
  40. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/index.html +6 -4
  41. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/api.js +31 -18
  42. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/app.js +49 -10
  43. sqlseed_web-0.2.6/src/sqlseed_web/static/js/design-system.js +374 -0
  44. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/dropdown.js +108 -23
  45. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/filepicker.js +36 -25
  46. sqlseed_web-0.2.6/src/sqlseed_web/static/js/generation-defaults-control.js +84 -0
  47. sqlseed_web-0.2.6/src/sqlseed_web/static/js/generation-defaults.js +35 -0
  48. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/genform.js +22 -11
  49. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/assistant.js +3 -0
  50. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/assistant.json +574 -0
  51. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/components.js +3 -0
  52. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/components.json +626 -0
  53. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/configurations.js +3 -0
  54. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/configurations.json +370 -0
  55. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/datePicker.js +3 -0
  56. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/datePicker.json +144 -0
  57. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/editor.js +3 -0
  58. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/editor.json +464 -0
  59. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/flow.js +3 -0
  60. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/flow.json +448 -0
  61. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/graph.js +3 -0
  62. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/graph.json +344 -0
  63. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/labels.js +3 -0
  64. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/labels.json +548 -0
  65. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/preview.js +3 -0
  66. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/preview.json +309 -0
  67. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/providerGuide.js +3 -0
  68. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/providerGuide.json +112 -0
  69. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/runs.js +3 -0
  70. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/runs.json +262 -0
  71. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/settings.js +3 -0
  72. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/settings.json +536 -0
  73. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/shell.js +3 -0
  74. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/shell.json +96 -0
  75. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/workbench.js +3 -0
  76. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n/messages/workbench.json +1726 -0
  77. sqlseed_web-0.2.6/src/sqlseed_web/static/js/i18n.js +324 -0
  78. sqlseed_web-0.2.6/src/sqlseed_web/static/js/labels.js +197 -0
  79. sqlseed_web-0.2.6/src/sqlseed_web/static/js/pages/configs.js +580 -0
  80. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/connect.js +35 -28
  81. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/heal.js +11 -9
  82. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/meta.js +1 -1
  83. sqlseed_web-0.2.6/src/sqlseed_web/static/js/pages/runs.js +364 -0
  84. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/settings.js +252 -176
  85. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/wizard.js +39 -8
  86. sqlseed_web-0.2.6/src/sqlseed_web/static/js/pages/workbench.js +3798 -0
  87. sqlseed_web-0.2.6/src/sqlseed_web/static/js/segment-motion.js +69 -0
  88. sqlseed_web-0.2.6/src/sqlseed_web/static/js/tab-motion.js +79 -0
  89. sqlseed_web-0.2.6/src/sqlseed_web/static/js/theme-control.js +42 -0
  90. sqlseed_web-0.2.6/src/sqlseed_web/static/js/theme.js +71 -0
  91. sqlseed_web-0.2.6/src/sqlseed_web/static/js/update-check-control.js +41 -0
  92. sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/ai-adjustment.js +51 -0
  93. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai-eligibility.js +16 -13
  94. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai-stream.js +35 -16
  95. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai.js +228 -146
  96. sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/clear-recovery.js +63 -0
  97. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/connection.js +140 -99
  98. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/date-picker.js +40 -37
  99. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/dependency-view.js +31 -12
  100. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/editor.js +172 -124
  101. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/focus.js +4 -1
  102. sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/graph-layout.js +760 -0
  103. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/graph.js +505 -160
  104. sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/guidance.js +33 -0
  105. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/model.js +61 -8
  106. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/plugin-management.js +108 -70
  107. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/preview-scroll-layout.js +6 -5
  108. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/preview.js +200 -102
  109. sqlseed_web-0.2.6/src/sqlseed_web/static/js/workbench/provider-guide.js +35 -0
  110. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/recovery.js +11 -9
  111. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/session.js +11 -9
  112. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/table-data.js +60 -34
  113. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ui.js +38 -26
  114. sqlseed_web-0.2.6/src/sqlseed_web/static/motion.css +73 -0
  115. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/navigation.css +15 -4
  116. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/preview.css +23 -5
  117. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/runs.css +12 -17
  118. sqlseed_web-0.2.6/src/sqlseed_web/static/scrollbars.css +110 -0
  119. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/settings.css +36 -14
  120. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/style.css +1075 -337
  121. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/table-data.css +5 -2
  122. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/workbench.css +207 -52
  123. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/supervised_plugins.py +86 -24
  124. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/supervisor.py +125 -31
  125. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench.py +6 -2
  126. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_ai.py +181 -73
  127. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_ai_relations.py +37 -17
  128. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_ai_stream.py +50 -9
  129. sqlseed_web-0.2.6/src/sqlseed_web/workbench_cycles.py +222 -0
  130. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_data.py +31 -7
  131. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_execution.py +46 -13
  132. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_runtime.py +332 -162
  133. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_store.py +60 -31
  134. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/worker_control.py +45 -13
  135. sqlseed_web-0.2.6/tests/AGENTS.md +46 -0
  136. sqlseed_web-0.2.6/tests/complex_business_graph.json +1830 -0
  137. sqlseed_web-0.2.6/tests/complex_graph_fixture.py +251 -0
  138. sqlseed_web-0.2.6/tests/component_test_support.py +88 -0
  139. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/frontend_helpers.cjs +56 -2
  140. sqlseed_web-0.2.6/tests/test_ai_adjustment.cjs +78 -0
  141. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_ai_eligibility.cjs +2 -2
  142. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_api.py +2 -1
  143. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_api_regressions.py +66 -0
  144. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_app_shell.cjs +110 -14
  145. sqlseed_web-0.2.6/tests/test_backend_messages.py +294 -0
  146. sqlseed_web-0.2.6/tests/test_complex_business_graph.cjs +162 -0
  147. sqlseed_web-0.2.6/tests/test_complex_graph_fixture.py +196 -0
  148. sqlseed_web-0.2.6/tests/test_component_test_support.py +48 -0
  149. sqlseed_web-0.2.6/tests/test_configs.cjs +488 -0
  150. sqlseed_web-0.2.6/tests/test_connection.cjs +459 -0
  151. sqlseed_web-0.2.6/tests/test_connection_existing_file.py +138 -0
  152. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_date_picker.cjs +50 -2
  153. sqlseed_web-0.2.6/tests/test_dependency_groups.cjs +35 -0
  154. sqlseed_web-0.2.6/tests/test_dropdown.cjs +496 -0
  155. sqlseed_web-0.2.6/tests/test_filepicker.cjs +76 -0
  156. sqlseed_web-0.2.6/tests/test_generation_defaults.cjs +50 -0
  157. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_genform.cjs +66 -3
  158. sqlseed_web-0.2.6/tests/test_graph_layout_order.cjs +120 -0
  159. sqlseed_web-0.2.6/tests/test_graph_routing.cjs +155 -0
  160. sqlseed_web-0.2.6/tests/test_hardening_boundaries.py +196 -0
  161. sqlseed_web-0.2.6/tests/test_i18n.cjs +272 -0
  162. sqlseed_web-0.2.6/tests/test_i18n_catalog.cjs +180 -0
  163. sqlseed_web-0.2.6/tests/test_i18n_component_paths.py +465 -0
  164. sqlseed_web-0.2.6/tests/test_i18n_validation_paths.py +416 -0
  165. sqlseed_web-0.2.6/tests/test_legacy_connect.cjs +92 -0
  166. sqlseed_web-0.2.6/tests/test_legacy_page_async.cjs +69 -0
  167. sqlseed_web-0.2.6/tests/test_managed_worker.py +255 -0
  168. sqlseed_web-0.2.6/tests/test_modal_scroll.cjs +196 -0
  169. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_navigation_motion.cjs +11 -4
  170. sqlseed_web-0.2.6/tests/test_plugin_cleanup.py +123 -0
  171. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_plugin_management.cjs +110 -1
  172. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_plugin_management.py +135 -4
  173. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_plugin_process.py +54 -2
  174. sqlseed_web-0.2.6/tests/test_plugin_updates.py +492 -0
  175. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_preview_editing.cjs +7 -1
  176. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_provider_guide.cjs +18 -1
  177. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_rule_usability.cjs +1 -1
  178. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_run_recovery.cjs +13 -0
  179. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_runs.cjs +163 -2
  180. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_runtime_session.py +27 -0
  181. sqlseed_web-0.2.6/tests/test_segment_motion.cjs +122 -0
  182. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_settings.cjs +368 -6
  183. sqlseed_web-0.2.6/tests/test_settings_update_lifecycle.py +281 -0
  184. sqlseed_web-0.2.6/tests/test_settings_updates.py +124 -0
  185. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_supervised_plugins.py +122 -24
  186. sqlseed_web-0.2.6/tests/test_supervisor.py +428 -0
  187. sqlseed_web-0.2.6/tests/test_tab_motion.cjs +277 -0
  188. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_table_data.cjs +84 -0
  189. sqlseed_web-0.2.6/tests/test_theme.cjs +200 -0
  190. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_web_request_security.py +22 -0
  191. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_web_settings.py +86 -1
  192. sqlseed_web-0.2.6/tests/test_windows_environment.py +153 -0
  193. sqlseed_web-0.2.6/tests/test_windows_guard.py +131 -0
  194. sqlseed_web-0.2.6/tests/test_windows_plugin_lifecycle.py +259 -0
  195. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_wizard.cjs +192 -0
  196. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai.cjs +4 -0
  197. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai.py +95 -13
  198. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_integration.cjs +101 -1
  199. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_progress.cjs +59 -1
  200. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_stream.cjs +51 -0
  201. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_async_boundaries.cjs +24 -0
  202. sqlseed_web-0.2.6/tests/test_workbench_capability_limits.cjs +243 -0
  203. sqlseed_web-0.2.6/tests/test_workbench_clear_recovery.cjs +202 -0
  204. sqlseed_web-0.2.6/tests/test_workbench_compact.cjs +146 -0
  205. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_concurrency.py +52 -27
  206. sqlseed_web-0.2.6/tests/test_workbench_connection_routing.cjs +120 -0
  207. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_context.cjs +4 -4
  208. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_data.cjs +1 -1
  209. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_documents.cjs +145 -1
  210. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_editor.cjs +148 -8
  211. sqlseed_web-0.2.6/tests/test_workbench_empty_schema.cjs +69 -0
  212. sqlseed_web-0.2.6/tests/test_workbench_execution.cjs +405 -0
  213. sqlseed_web-0.2.6/tests/test_workbench_existing_cycles.py +439 -0
  214. sqlseed_web-0.2.6/tests/test_workbench_graph.cjs +1359 -0
  215. sqlseed_web-0.2.6/tests/test_workbench_graph_checks.cjs +173 -0
  216. sqlseed_web-0.2.6/tests/test_workbench_guidance.cjs +263 -0
  217. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_model.cjs +63 -2
  218. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_page.cjs +61 -2
  219. sqlseed_web-0.2.6/tests/test_workbench_postgresql_cycles.py +197 -0
  220. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_preview.cjs +155 -1
  221. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_review.cjs +1 -1
  222. sqlseed_web-0.2.6/tests/test_workbench_run_plan.py +191 -0
  223. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_runtime.py +167 -34
  224. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_session.cjs +20 -2
  225. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_store.py +32 -1
  226. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_target_identity.py +220 -7
  227. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_usability.cjs +1 -1
  228. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_v8.cjs +2 -2
  229. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/workbench_harness.cjs +16 -9
  230. sqlseed_web-0.2.4/AGENTS.md +0 -56
  231. sqlseed_web-0.2.4/PKG-INFO +0 -105
  232. sqlseed_web-0.2.4/README.md +0 -81
  233. sqlseed_web-0.2.4/src/sqlseed_web/plugin_management.py +0 -322
  234. sqlseed_web-0.2.4/src/sqlseed_web/plugin_process.py +0 -131
  235. sqlseed_web-0.2.4/src/sqlseed_web/sqlite_target.py +0 -86
  236. sqlseed_web-0.2.4/src/sqlseed_web/static/AGENTS.md +0 -180
  237. sqlseed_web-0.2.4/src/sqlseed_web/static/graph-clarity.css +0 -103
  238. sqlseed_web-0.2.4/src/sqlseed_web/static/js/labels.js +0 -195
  239. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/configs.js +0 -424
  240. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/runs.js +0 -293
  241. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/workbench.js +0 -3123
  242. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/graph-layout.js +0 -332
  243. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/guidance.js +0 -29
  244. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/provider-guide.js +0 -33
  245. sqlseed_web-0.2.4/src/sqlseed_web/static/scrollbars.css +0 -42
  246. sqlseed_web-0.2.4/tests/AGENTS.md +0 -25
  247. sqlseed_web-0.2.4/tests/test_configs.cjs +0 -226
  248. sqlseed_web-0.2.4/tests/test_connection.cjs +0 -207
  249. sqlseed_web-0.2.4/tests/test_dropdown.cjs +0 -234
  250. sqlseed_web-0.2.4/tests/test_modal_scroll.cjs +0 -74
  251. sqlseed_web-0.2.4/tests/test_supervisor.py +0 -126
  252. sqlseed_web-0.2.4/tests/test_workbench_execution.cjs +0 -61
  253. sqlseed_web-0.2.4/tests/test_workbench_graph.cjs +0 -541
  254. sqlseed_web-0.2.4/tests/test_workbench_guidance.cjs +0 -100
  255. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/LICENSE +0 -0
  256. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/__main__.py +0 -0
  257. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/app.py +0 -0
  258. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/operation_errors.py +0 -0
  259. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/pages/browse.js +0 -0
  260. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/tree.js +0 -0
  261. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/ai-handoff.js +0 -0
  262. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/static/js/workbench/scroll-lock.js +0 -0
  263. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/src/sqlseed_web/workbench_schema.py +0 -0
  264. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/conftest.py +0 -0
  265. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_api_ai_secrets.py +0 -0
  266. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_browse.cjs +0 -0
  267. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_component_availability.py +0 -0
  268. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_disclosure_focus.cjs +0 -0
  269. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_job_completion.py +0 -0
  270. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_preview_scroll_layout.cjs +0 -0
  271. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_runtime_lifecycle.py +0 -0
  272. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_acceptance.py +0 -0
  273. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_handoff.cjs +0 -0
  274. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_ai_relations.py +0 -0
  275. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_busy.cjs +0 -0
  276. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_configs.py +0 -0
  277. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_data.py +0 -0
  278. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_execution.py +0 -0
  279. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_providers.cjs +0 -0
  280. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_sample_budget.py +0 -0
  281. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_workbench_schema.py +0 -0
  282. {sqlseed_web-0.2.4 → sqlseed_web-0.2.6}/tests/test_worker_control.py +0 -0
  283. {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
+ ![sqlseed Web in English: selected tables and a four-table relationship graph in the light theme](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-en-light.png)
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
+ ![sqlseed Web in English: selected tables and a four-table relationship graph in the light theme](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-en-light.png)
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
+ ![sqlseed Web 简体中文浅色界面:左侧选表和四表关系图](https://raw.githubusercontent.com/sunbos/sqlseed/992ba0e733d5b41f73e37b0a9d02d573d6e2bb23/docs/assets/screenshots/web-workbench-zh-CN-light.png)
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.4.dev0,<0.3",
16
+ "sqlseed>=0.2.5.dev0,<0.3",
17
17
  "fastapi>=0.110",
18
18
  "uvicorn>=0.29",
19
19
  "pyyaml>=6.0",