mito-ai 0.1.50__py3-none-any.whl

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 (205) hide show
  1. mito_ai/__init__.py +114 -0
  2. mito_ai/_version.py +4 -0
  3. mito_ai/anthropic_client.py +334 -0
  4. mito_ai/app_deploy/__init__.py +6 -0
  5. mito_ai/app_deploy/app_deploy_utils.py +44 -0
  6. mito_ai/app_deploy/handlers.py +345 -0
  7. mito_ai/app_deploy/models.py +98 -0
  8. mito_ai/app_manager/__init__.py +4 -0
  9. mito_ai/app_manager/handlers.py +167 -0
  10. mito_ai/app_manager/models.py +71 -0
  11. mito_ai/app_manager/utils.py +24 -0
  12. mito_ai/auth/README.md +18 -0
  13. mito_ai/auth/__init__.py +6 -0
  14. mito_ai/auth/handlers.py +96 -0
  15. mito_ai/auth/urls.py +13 -0
  16. mito_ai/chat_history/handlers.py +63 -0
  17. mito_ai/chat_history/urls.py +32 -0
  18. mito_ai/completions/completion_handlers/__init__.py +3 -0
  19. mito_ai/completions/completion_handlers/agent_auto_error_fixup_handler.py +59 -0
  20. mito_ai/completions/completion_handlers/agent_execution_handler.py +66 -0
  21. mito_ai/completions/completion_handlers/chat_completion_handler.py +141 -0
  22. mito_ai/completions/completion_handlers/code_explain_handler.py +113 -0
  23. mito_ai/completions/completion_handlers/completion_handler.py +42 -0
  24. mito_ai/completions/completion_handlers/inline_completer_handler.py +48 -0
  25. mito_ai/completions/completion_handlers/smart_debug_handler.py +160 -0
  26. mito_ai/completions/completion_handlers/utils.py +147 -0
  27. mito_ai/completions/handlers.py +415 -0
  28. mito_ai/completions/message_history.py +401 -0
  29. mito_ai/completions/models.py +404 -0
  30. mito_ai/completions/prompt_builders/__init__.py +3 -0
  31. mito_ai/completions/prompt_builders/agent_execution_prompt.py +57 -0
  32. mito_ai/completions/prompt_builders/agent_smart_debug_prompt.py +160 -0
  33. mito_ai/completions/prompt_builders/agent_system_message.py +472 -0
  34. mito_ai/completions/prompt_builders/chat_name_prompt.py +15 -0
  35. mito_ai/completions/prompt_builders/chat_prompt.py +116 -0
  36. mito_ai/completions/prompt_builders/chat_system_message.py +92 -0
  37. mito_ai/completions/prompt_builders/explain_code_prompt.py +32 -0
  38. mito_ai/completions/prompt_builders/inline_completer_prompt.py +197 -0
  39. mito_ai/completions/prompt_builders/prompt_constants.py +170 -0
  40. mito_ai/completions/prompt_builders/smart_debug_prompt.py +199 -0
  41. mito_ai/completions/prompt_builders/utils.py +84 -0
  42. mito_ai/completions/providers.py +284 -0
  43. mito_ai/constants.py +63 -0
  44. mito_ai/db/__init__.py +3 -0
  45. mito_ai/db/crawlers/__init__.py +6 -0
  46. mito_ai/db/crawlers/base_crawler.py +61 -0
  47. mito_ai/db/crawlers/constants.py +43 -0
  48. mito_ai/db/crawlers/snowflake.py +71 -0
  49. mito_ai/db/handlers.py +168 -0
  50. mito_ai/db/models.py +31 -0
  51. mito_ai/db/urls.py +34 -0
  52. mito_ai/db/utils.py +185 -0
  53. mito_ai/docker/mssql/compose.yml +37 -0
  54. mito_ai/docker/mssql/init/setup.sql +21 -0
  55. mito_ai/docker/mysql/compose.yml +18 -0
  56. mito_ai/docker/mysql/init/setup.sql +13 -0
  57. mito_ai/docker/oracle/compose.yml +17 -0
  58. mito_ai/docker/oracle/init/setup.sql +20 -0
  59. mito_ai/docker/postgres/compose.yml +17 -0
  60. mito_ai/docker/postgres/init/setup.sql +13 -0
  61. mito_ai/enterprise/__init__.py +3 -0
  62. mito_ai/enterprise/utils.py +15 -0
  63. mito_ai/file_uploads/__init__.py +3 -0
  64. mito_ai/file_uploads/handlers.py +248 -0
  65. mito_ai/file_uploads/urls.py +21 -0
  66. mito_ai/gemini_client.py +232 -0
  67. mito_ai/log/handlers.py +38 -0
  68. mito_ai/log/urls.py +21 -0
  69. mito_ai/logger.py +37 -0
  70. mito_ai/openai_client.py +382 -0
  71. mito_ai/path_utils.py +70 -0
  72. mito_ai/rules/handlers.py +44 -0
  73. mito_ai/rules/urls.py +22 -0
  74. mito_ai/rules/utils.py +56 -0
  75. mito_ai/settings/handlers.py +41 -0
  76. mito_ai/settings/urls.py +20 -0
  77. mito_ai/settings/utils.py +42 -0
  78. mito_ai/streamlit_conversion/agent_utils.py +37 -0
  79. mito_ai/streamlit_conversion/prompts/prompt_constants.py +172 -0
  80. mito_ai/streamlit_conversion/prompts/prompt_utils.py +10 -0
  81. mito_ai/streamlit_conversion/prompts/streamlit_app_creation_prompt.py +46 -0
  82. mito_ai/streamlit_conversion/prompts/streamlit_error_correction_prompt.py +28 -0
  83. mito_ai/streamlit_conversion/prompts/streamlit_finish_todo_prompt.py +45 -0
  84. mito_ai/streamlit_conversion/prompts/streamlit_system_prompt.py +56 -0
  85. mito_ai/streamlit_conversion/prompts/update_existing_app_prompt.py +50 -0
  86. mito_ai/streamlit_conversion/search_replace_utils.py +94 -0
  87. mito_ai/streamlit_conversion/streamlit_agent_handler.py +144 -0
  88. mito_ai/streamlit_conversion/streamlit_utils.py +85 -0
  89. mito_ai/streamlit_conversion/validate_streamlit_app.py +105 -0
  90. mito_ai/streamlit_preview/__init__.py +6 -0
  91. mito_ai/streamlit_preview/handlers.py +111 -0
  92. mito_ai/streamlit_preview/manager.py +152 -0
  93. mito_ai/streamlit_preview/urls.py +22 -0
  94. mito_ai/streamlit_preview/utils.py +29 -0
  95. mito_ai/tests/__init__.py +3 -0
  96. mito_ai/tests/chat_history/test_chat_history.py +211 -0
  97. mito_ai/tests/completions/completion_handlers_utils_test.py +190 -0
  98. mito_ai/tests/conftest.py +53 -0
  99. mito_ai/tests/create_agent_system_message_prompt_test.py +22 -0
  100. mito_ai/tests/data/prompt_lg.py +69 -0
  101. mito_ai/tests/data/prompt_sm.py +6 -0
  102. mito_ai/tests/data/prompt_xl.py +13 -0
  103. mito_ai/tests/data/stock_data.sqlite3 +0 -0
  104. mito_ai/tests/db/conftest.py +39 -0
  105. mito_ai/tests/db/connections_test.py +102 -0
  106. mito_ai/tests/db/mssql_test.py +29 -0
  107. mito_ai/tests/db/mysql_test.py +29 -0
  108. mito_ai/tests/db/oracle_test.py +29 -0
  109. mito_ai/tests/db/postgres_test.py +29 -0
  110. mito_ai/tests/db/schema_test.py +93 -0
  111. mito_ai/tests/db/sqlite_test.py +31 -0
  112. mito_ai/tests/db/test_db_constants.py +61 -0
  113. mito_ai/tests/deploy_app/test_app_deploy_utils.py +89 -0
  114. mito_ai/tests/file_uploads/__init__.py +2 -0
  115. mito_ai/tests/file_uploads/test_handlers.py +282 -0
  116. mito_ai/tests/message_history/test_generate_short_chat_name.py +120 -0
  117. mito_ai/tests/message_history/test_message_history_utils.py +469 -0
  118. mito_ai/tests/open_ai_utils_test.py +152 -0
  119. mito_ai/tests/performance_test.py +329 -0
  120. mito_ai/tests/providers/test_anthropic_client.py +447 -0
  121. mito_ai/tests/providers/test_azure.py +631 -0
  122. mito_ai/tests/providers/test_capabilities.py +120 -0
  123. mito_ai/tests/providers/test_gemini_client.py +195 -0
  124. mito_ai/tests/providers/test_mito_server_utils.py +448 -0
  125. mito_ai/tests/providers/test_model_resolution.py +130 -0
  126. mito_ai/tests/providers/test_openai_client.py +57 -0
  127. mito_ai/tests/providers/test_provider_completion_exception.py +66 -0
  128. mito_ai/tests/providers/test_provider_limits.py +42 -0
  129. mito_ai/tests/providers/test_providers.py +382 -0
  130. mito_ai/tests/providers/test_retry_logic.py +389 -0
  131. mito_ai/tests/providers/test_stream_mito_server_utils.py +140 -0
  132. mito_ai/tests/providers/utils.py +85 -0
  133. mito_ai/tests/rules/conftest.py +26 -0
  134. mito_ai/tests/rules/rules_test.py +117 -0
  135. mito_ai/tests/server_limits_test.py +406 -0
  136. mito_ai/tests/settings/conftest.py +26 -0
  137. mito_ai/tests/settings/settings_test.py +70 -0
  138. mito_ai/tests/settings/test_settings_constants.py +9 -0
  139. mito_ai/tests/streamlit_conversion/__init__.py +3 -0
  140. mito_ai/tests/streamlit_conversion/test_apply_search_replace.py +240 -0
  141. mito_ai/tests/streamlit_conversion/test_streamlit_agent_handler.py +246 -0
  142. mito_ai/tests/streamlit_conversion/test_streamlit_utils.py +193 -0
  143. mito_ai/tests/streamlit_conversion/test_validate_streamlit_app.py +112 -0
  144. mito_ai/tests/streamlit_preview/test_streamlit_preview_handler.py +118 -0
  145. mito_ai/tests/streamlit_preview/test_streamlit_preview_manager.py +292 -0
  146. mito_ai/tests/test_constants.py +47 -0
  147. mito_ai/tests/test_telemetry.py +12 -0
  148. mito_ai/tests/user/__init__.py +2 -0
  149. mito_ai/tests/user/test_user.py +120 -0
  150. mito_ai/tests/utils/__init__.py +3 -0
  151. mito_ai/tests/utils/test_anthropic_utils.py +162 -0
  152. mito_ai/tests/utils/test_gemini_utils.py +98 -0
  153. mito_ai/tests/version_check_test.py +169 -0
  154. mito_ai/user/handlers.py +45 -0
  155. mito_ai/user/urls.py +21 -0
  156. mito_ai/utils/__init__.py +3 -0
  157. mito_ai/utils/anthropic_utils.py +168 -0
  158. mito_ai/utils/create.py +94 -0
  159. mito_ai/utils/db.py +74 -0
  160. mito_ai/utils/error_classes.py +42 -0
  161. mito_ai/utils/gemini_utils.py +133 -0
  162. mito_ai/utils/message_history_utils.py +87 -0
  163. mito_ai/utils/mito_server_utils.py +242 -0
  164. mito_ai/utils/open_ai_utils.py +200 -0
  165. mito_ai/utils/provider_utils.py +49 -0
  166. mito_ai/utils/schema.py +86 -0
  167. mito_ai/utils/server_limits.py +152 -0
  168. mito_ai/utils/telemetry_utils.py +480 -0
  169. mito_ai/utils/utils.py +89 -0
  170. mito_ai/utils/version_utils.py +94 -0
  171. mito_ai/utils/websocket_base.py +88 -0
  172. mito_ai/version_check.py +60 -0
  173. mito_ai-0.1.50.data/data/etc/jupyter/jupyter_server_config.d/mito_ai.json +7 -0
  174. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/build_log.json +728 -0
  175. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/package.json +243 -0
  176. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig +238 -0
  177. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json +37 -0
  178. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.8f1845da6bf2b128c049.js +21602 -0
  179. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.8f1845da6bf2b128c049.js.map +1 -0
  180. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js +198 -0
  181. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js.map +1 -0
  182. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.78d3ccb73e7ca1da3aae.js +619 -0
  183. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.78d3ccb73e7ca1da3aae.js.map +1 -0
  184. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/style.js +4 -0
  185. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js +712 -0
  186. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js.map +1 -0
  187. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js +533 -0
  188. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js.map +1 -0
  189. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js +6941 -0
  190. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js.map +1 -0
  191. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js +1021 -0
  192. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js.map +1 -0
  193. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js +59698 -0
  194. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js.map +1 -0
  195. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js +7440 -0
  196. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js.map +1 -0
  197. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js +2792 -0
  198. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js.map +1 -0
  199. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js +4859 -0
  200. mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js.map +1 -0
  201. mito_ai-0.1.50.dist-info/METADATA +221 -0
  202. mito_ai-0.1.50.dist-info/RECORD +205 -0
  203. mito_ai-0.1.50.dist-info/WHEEL +4 -0
  204. mito_ai-0.1.50.dist-info/entry_points.txt +2 -0
  205. mito_ai-0.1.50.dist-info/licenses/LICENSE +3 -0
@@ -0,0 +1,221 @@
1
+ Metadata-Version: 2.4
2
+ Name: mito_ai
3
+ Version: 0.1.50
4
+ Summary: AI chat for JupyterLab
5
+ Project-URL: Homepage, https://trymito.io
6
+ Project-URL: Bug Tracker, https://github.com/mito-ds/monorepo/issues
7
+ Project-URL: Repository, https://github.com/mito-ds/monorepo
8
+ Author-email: Aaron Diamond-Reivich <aaron@sagacollab.com>
9
+ License: Copyright (c) 2020-2024 Saga Inc.
10
+
11
+ See the LICENSE.txt file at the root of this monorepo for licensing information.
12
+ License-File: LICENSE
13
+ Keywords: jupyter,jupyterlab,jupyterlab-extension
14
+ Classifier: Framework :: Jupyter
15
+ Classifier: Framework :: Jupyter :: JupyterLab
16
+ Classifier: Framework :: Jupyter :: JupyterLab :: 4
17
+ Classifier: Framework :: Jupyter :: JupyterLab :: Extensions
18
+ Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
19
+ Classifier: License :: OSI Approved :: BSD License
20
+ Classifier: Programming Language :: Python
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.10
24
+ Classifier: Programming Language :: Python :: 3.11
25
+ Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Programming Language :: Python :: 3.13
27
+ Requires-Python: >=3.9
28
+ Requires-Dist: analytics-python
29
+ Requires-Dist: anthropic>=0.6.81
30
+ Requires-Dist: google-genai
31
+ Requires-Dist: jinja2>=3.0.3
32
+ Requires-Dist: jupyterlab<5,>=4.1.0
33
+ Requires-Dist: openai>=1.0.0
34
+ Requires-Dist: pipreqs
35
+ Requires-Dist: pydantic
36
+ Requires-Dist: requests>=2.25.0
37
+ Requires-Dist: sqlalchemy
38
+ Requires-Dist: streamlit
39
+ Requires-Dist: tornado>=6.2.0
40
+ Requires-Dist: traitlets
41
+ Requires-Dist: unidiff
42
+ Provides-Extra: deploy
43
+ Requires-Dist: hatch-jupyter-builder>=0.5; extra == 'deploy'
44
+ Requires-Dist: hatch-nodejs-version>=0.3.2; extra == 'deploy'
45
+ Requires-Dist: hatchling>=1.27.0; extra == 'deploy'
46
+ Requires-Dist: twine>=4.0.0; extra == 'deploy'
47
+ Provides-Extra: test
48
+ Requires-Dist: mypy>=1.8.0; extra == 'test'
49
+ Requires-Dist: pytest-asyncio==0.25.3; extra == 'test'
50
+ Requires-Dist: pytest==8.3.4; extra == 'test'
51
+ Requires-Dist: types-requests>=2.25.0; extra == 'test'
52
+ Requires-Dist: types-setuptools; extra == 'test'
53
+ Requires-Dist: types-tornado>=5.1.1; extra == 'test'
54
+ Description-Content-Type: text/markdown
55
+
56
+ # mito_ai
57
+
58
+ [![Github Actions Status](/workflows/Build/badge.svg)](/actions/workflows/build.yml)
59
+
60
+ AI chat for JupyterLab. This codebase contains two main components:
61
+ 1. A Jupyter server extension that handles the backend logic for the chat.
62
+ 2. Several JupyterLab extensions that handle the frontend logic for interacting with the AI, including the chat sidebar and the error message rendermime.
63
+
64
+ ## Requirements
65
+
66
+ - JupyterLab >= 4.0.0
67
+
68
+ ## Install
69
+
70
+ To install the extension, execute:
71
+
72
+ ```bash
73
+ pip install mito-ai
74
+ ```
75
+
76
+ ## Configuration
77
+
78
+ This extension has two AI providers; OpenAI and Mito (calling OpenAI).
79
+ Mito is the fallback but the number of request is limited for free tier.
80
+ To use OpenAI directly, you will to create an API key on https://platform.openai.com/docs/overview.
81
+ Then set the environment variable `OPENAI_API_KEY` with that key.
82
+
83
+ The OpenAI model can be configured with 1 parameters:
84
+ - `OpenAIProvider.model`: Name of the AI model; default _gpt-4o-mini_.
85
+
86
+ You can set those parameters through command line when starting JupyterLab; e.g.
87
+
88
+ ```sh
89
+ jupyter lab --OpenAIProvider.max_completion_tokens 20 --OpenAIProvider.temperature 1.5
90
+ ```
91
+
92
+ > If a value is incorrect, an error message will be displayed in the terminal logs.
93
+
94
+ ## Uninstall
95
+
96
+ To remove the extension, execute:
97
+
98
+ ```bash
99
+ pip uninstall mito-ai
100
+ ```
101
+
102
+ ## Contributing
103
+
104
+ ### Development install
105
+
106
+ To ensure consistent package management, please use `jlpm` instead of `npm` for this project.
107
+
108
+ Note: You will need NodeJS to build the extension package.
109
+
110
+ The `jlpm` command is JupyterLab's pinned version of
111
+ [yarn](https://yarnpkg.com/) that is installed with JupyterLab.
112
+
113
+ ```bash
114
+ # Clone the repo to your local environment
115
+ # Change directory to the mito-ai directory
116
+
117
+ # Required to deal with Yarn 3 workspace rules
118
+ touch yarn.lock
119
+
120
+ # Install package in development mode
121
+ pip install -e ".[test]"
122
+
123
+ # Install the node modules
124
+ jlpm install
125
+
126
+ # Build the extension
127
+ jlpm build
128
+
129
+ # Link your development version of the extension with JupyterLab
130
+ jupyter labextension develop . --overwrite
131
+
132
+ # Start the jupyter server extension for development
133
+ jupyter server extension enable --py mito_ai
134
+
135
+ # Watch the source directory in one terminal, automatically rebuilding when needed
136
+ # In case of Error: If this command fails because the lib directory was not created (the error will say something like
137
+ # unable to find main entry point) then run `jlpm run clean:lib` first to get rid of the old buildcache
138
+ # that might be preventing a new lib directory from getting created.
139
+ jlpm watch
140
+ ```
141
+
142
+ Then, in a new terminal, run:
143
+
144
+ ```bash
145
+ # Run JupyterLab in another terminal
146
+ jupyter lab --autoreload
147
+ ```
148
+
149
+ With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. With the `--autoreload` flag, you don't need to refresh JupyterLab to load the change in your browser. It will launch a new window each time you save a change to the backend.
150
+
151
+ By default, the `jlpm build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:
152
+
153
+ ```bash
154
+ jupyter lab build --minimize=False
155
+ ```
156
+
157
+ ### Development uninstall
158
+
159
+ ```bash
160
+ pip uninstall mito-ai
161
+ ```
162
+
163
+ In development mode, you will also need to remove the symlink created by `jupyter labextension develop`
164
+ command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions`
165
+ folder is located. Then you can remove the symlink named `mito-ai` within that folder.
166
+
167
+ ### Testing the extension
168
+
169
+ #### Integration tests
170
+
171
+ Integration tests for mito-ai are written using Playwright and Gelata in the mito/tests directory.
172
+
173
+ To run these tests, follow the directions in the tests/README.md file.
174
+
175
+ #### Backend Unit tests
176
+
177
+ Backend tests for mito-ai are written using pytest in the mito/mito-ai/mito_ai/tests directory.
178
+
179
+ To run the pytests, just run `pytest` in the mito-ai directory.
180
+
181
+ #### Backend Mypy tests
182
+
183
+ To run the mypy tests, just run `mypy mito_ai/ --ignore-missing-imports` in the mito-ai directory.
184
+
185
+ #### Frontend Unit tests
186
+
187
+ Frontend unit tests for mito-ai are written using Jest in the mito/mito-ai/src/tests directory.
188
+
189
+ To run the Jest tests, just run `npm test` in the mito-ai directory.
190
+
191
+ #### Frontend Tests
192
+
193
+ Frontend tests for mito-ai are written using Playwright and Gelata in the mito/tests directory. See the [tests/README.md](tests/README.md) file for more information.
194
+
195
+ #### Frontend Linting
196
+
197
+ Frontend linting for mito-ai is done using ESLint in the mito-ai directory.
198
+
199
+ To run the ESLint tests, just run `jlpm eslint` in the mito-ai directory.
200
+
201
+ #### Performance Tests
202
+
203
+ Performance tests for mito-ai are written using pytest in the mito-ai/tests directory.
204
+
205
+ To run the performance tests, just run `python -m pytest mito_ai/tests/performance_test.py -v -s` in the mito-ai directory.
206
+
207
+ Note that you'll have to edit `open_ai_utils.py`, specifically the `is_running_test` condition.
208
+
209
+ #### Running Databases
210
+
211
+ To ensure reproducibility, databases, like Postgres, are created using Docker. To run:
212
+
213
+ ```bash
214
+ docker-compose -f mito_ai/tests/docker/postgres.yml up
215
+ ```
216
+
217
+ When you're done, stop and remove the container and its volumes with:
218
+
219
+ ```bash
220
+ docker-compose -f mito_ai/tests/docker/postgres.yml down -v
221
+ ```
@@ -0,0 +1,205 @@
1
+ mito_ai/__init__.py,sha256=oPEfw-SkL6QAmF_XBGTBWMYMS2LFizdvCwkHDJZ8WQs,4880
2
+ mito_ai/_version.py,sha256=17oKe9YJVlN2ZKSGQciTIYC1ylDCxKdG2JbeF3itAM0,172
3
+ mito_ai/anthropic_client.py,sha256=LlD25XVHUdPFQ4eVEkjCIxt-wXoIBNPo8kz4OBglRuc,14045
4
+ mito_ai/constants.py,sha256=JUsxpryxRrKGlti9QMQxXdwA6FMJcJyp7jxd1ebV_ug,2301
5
+ mito_ai/gemini_client.py,sha256=4L-h2yYc_p8cEOCMDYM0R-vD4aktfqN47siZH5ZjGJc,9771
6
+ mito_ai/logger.py,sha256=ZJEC415ZHTodDYKgp8ezVg3c4O513oQZV5lSs708gp8,1285
7
+ mito_ai/openai_client.py,sha256=ljLs-HmHX5IElVn-5GuLTLijVPzWKCzg0uA263K57Dw,14210
8
+ mito_ai/path_utils.py,sha256=1tFZBRChMAxFQjLrpbwc40o7wPhsXG3H1ad5n1gFOzM,2573
9
+ mito_ai/version_check.py,sha256=871m9_Qj_UzYmxuByBcs8DIoonUb0uVqGTRmJYpw6Fk,2268
10
+ mito_ai/app_deploy/__init__.py,sha256=Kn_8xI0wv_JVV6FRhLDKOuld2P01Lit8nR2zB0aIHN0,190
11
+ mito_ai/app_deploy/app_deploy_utils.py,sha256=cnCayqP3WPfA4Lrz8Eo2h0lJbgBDgyfePriB-8wMeKA,1964
12
+ mito_ai/app_deploy/handlers.py,sha256=N7H_lJunMMN4_N4ZkTQbcRLjq9idkHnOgsM_S_JpN20,13777
13
+ mito_ai/app_deploy/models.py,sha256=3TM2z8udleh-FauBSjzmPMKL4z_LqtDwFCmUwxmexEU,2309
14
+ mito_ai/app_manager/__init__.py,sha256=QZ5_UHaA8Gb2fMyKx-b5sv0h0clI1B10zpPK9jfkAUg,150
15
+ mito_ai/app_manager/handlers.py,sha256=gySZSSZtE44g8YqDD7aC6v1LNKWFFAGhXf13VSr_uro,6219
16
+ mito_ai/app_manager/models.py,sha256=doHN84kEC0uB378X4jqngap9mvRy-jWp_jdOpWtNuo8,1841
17
+ mito_ai/app_manager/utils.py,sha256=FooiA7-9cUA8uURyj7YBmS0qw_4kTGlcDpqcWt7hss8,819
18
+ mito_ai/auth/README.md,sha256=j83uIEb2avWI-zjKl_P0eZo_2vMyWNE2MAF7fMnJJMw,891
19
+ mito_ai/auth/__init__.py,sha256=CrNlpbSKMPcw40H7keblZ61aa_x8qqSXPAqrEq-yCqk,172
20
+ mito_ai/auth/handlers.py,sha256=vpbLBsS_CIGVK3kZ_Pht4fjvRlde-z5kWQRc-jLjHe4,3888
21
+ mito_ai/auth/urls.py,sha256=iO4ueOlmqt6Bc66mVX2OrSdFGWPcwqhvGU9Ur5__sUM,417
22
+ mito_ai/chat_history/handlers.py,sha256=zRH9oNiwf_x7bYaa0JPoodoMuWwcFzEvg9svAAzZtZc,2537
23
+ mito_ai/chat_history/urls.py,sha256=WoXVkS3tn_wohT_6tQ5iLVF26llL697vmgkMb7xsvT0,1100
24
+ mito_ai/completions/handlers.py,sha256=BpfBke-IddQfaje0UYMFiCNcehXzVgC86zwqS4P2HBw,17724
25
+ mito_ai/completions/message_history.py,sha256=e-PZZd7fU2iQSH18tDsTb7J_QC56K29ZIIwivMQaVqk,17213
26
+ mito_ai/completions/models.py,sha256=TpXFWtFDoNk9xXC4ANwpANeV2oW65yK_P9mgsl4gfww,10345
27
+ mito_ai/completions/providers.py,sha256=JcZZGxFDd5B2nwnwOuJICMhjLRpLFL8_QhomaepXb5c,11950
28
+ mito_ai/completions/completion_handlers/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
29
+ mito_ai/completions/completion_handlers/agent_auto_error_fixup_handler.py,sha256=Vu-SoOziFnWQjxomTpbnbZgxtLkvqPS4Etw2me6L94M,2810
30
+ mito_ai/completions/completion_handlers/agent_execution_handler.py,sha256=QwZBnsLe__Tl1el5XMZgpz1AXKhA6n8dsXLZWd66shM,3027
31
+ mito_ai/completions/completion_handlers/chat_completion_handler.py,sha256=4DMjn18KV7_YgwQVH5VmEPtBNver9M1qIh4vNzsqP_0,6210
32
+ mito_ai/completions/completion_handlers/code_explain_handler.py,sha256=mkR-HJ0fEmzetJNgH20DKYSCL9Ax2o0WGu8limx9X_w,5074
33
+ mito_ai/completions/completion_handlers/completion_handler.py,sha256=TdMye-5505YKLKhdf6BXSTMDvEFvVexbt-b62b4xCQA,1584
34
+ mito_ai/completions/completion_handlers/inline_completer_handler.py,sha256=IR9xPA6YggdHQkdXVEcWqXZy8GXphqYRHkTfOcdEphw,1808
35
+ mito_ai/completions/completion_handlers/smart_debug_handler.py,sha256=5DH4NR9YB28YoQOUbFFcF7bip11cFzmzrcap_bZGLwA,6388
36
+ mito_ai/completions/completion_handlers/utils.py,sha256=Bk-EX9gj_riRQrBC5Bjp5ceFbgymgBDmNXa1SZ9Vt1M,4389
37
+ mito_ai/completions/prompt_builders/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
38
+ mito_ai/completions/prompt_builders/agent_execution_prompt.py,sha256=ffnkgZ-1_hvs1wDWDwY4_PzyqPN_hmRHR2CNbqfQxYI,1697
39
+ mito_ai/completions/prompt_builders/agent_smart_debug_prompt.py,sha256=hMeGBBXs6TItkZHpI78uN2scKvV72uha3Pw-ygN4XbI,6903
40
+ mito_ai/completions/prompt_builders/agent_system_message.py,sha256=l1dKz6DO5HBA-LaAvEDNVgZF2heIDLIj0svwk4NSXzw,27977
41
+ mito_ai/completions/prompt_builders/chat_name_prompt.py,sha256=ERwgDUAnd7VH3drjbUh70zbP3iEUct1PdJ9EZvMi3qE,532
42
+ mito_ai/completions/prompt_builders/chat_prompt.py,sha256=v2Ril9xUxhgPHixtckMBNiOyOn7y110npQgY285pPSc,2941
43
+ mito_ai/completions/prompt_builders/chat_system_message.py,sha256=LTMRSHKaO_AqvIiIiV1wz4As9gzcFH57VJoTR2EI0uc,4588
44
+ mito_ai/completions/prompt_builders/explain_code_prompt.py,sha256=aswSXdZP-catLmLqJKv2E5VeO9CL7vexguZhtGl724c,769
45
+ mito_ai/completions/prompt_builders/inline_completer_prompt.py,sha256=rmOt3eZTgNfF5tN-_syrhIUW6Ga_TcHCRI0YwndYPPY,5105
46
+ mito_ai/completions/prompt_builders/prompt_constants.py,sha256=_iwWD6xJ641Tzi-6xlSCTLdLr2_a9RQu_pZGmq95r3U,7935
47
+ mito_ai/completions/prompt_builders/smart_debug_prompt.py,sha256=6s_VIgNCD5Dqmn3bpsnQCmUDaqJqLOxlJHu48aE1SME,6347
48
+ mito_ai/completions/prompt_builders/utils.py,sha256=AqIij4Ceg9I7DeUZ7oV49jPXvNIESh7fpyO_XAdeYN0,3182
49
+ mito_ai/db/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
50
+ mito_ai/db/handlers.py,sha256=zbLqgzexi3C2ztvT1z9X3RLCUUjl4r5rJtUzJX0Pkto,5275
51
+ mito_ai/db/models.py,sha256=KUMaAdK72Z_yOovKrrQJWHP-5Zwkv9WD4Pz8LDWjgk8,544
52
+ mito_ai/db/urls.py,sha256=Clqps6oUyEjVIzevXGwkP7Pso1RlXIcFnq5UyjZFrjE,1082
53
+ mito_ai/db/utils.py,sha256=2JjQP_ppHYhyp6BLX4jVhg0IEtUObMoKfX6S6TU9XWA,6576
54
+ mito_ai/db/crawlers/__init__.py,sha256=Wr7kLlM88oU8O1OVck5JWbNCevJcrt9fS62cucU2crs,201
55
+ mito_ai/db/crawlers/base_crawler.py,sha256=qiev8lSuMXslObvJwVU5RDR_y6DZE9sCXgGxq-wdz4A,2417
56
+ mito_ai/db/crawlers/constants.py,sha256=FpRhlDR7KXkVKBWhEiIKlm-XgpE87knUCoFec0GgaJs,1576
57
+ mito_ai/db/crawlers/snowflake.py,sha256=mXWHcoV7BGivYnv1DQvhujs-yS4YNWogjK-dksSsAtU,2499
58
+ mito_ai/docker/mssql/compose.yml,sha256=DqMN_n5soz6dG2zVHyMPVZ0yzHqJxqa1_xA8hMiwdLM,978
59
+ mito_ai/docker/mssql/init/setup.sql,sha256=Z84UjeIAQ3NBcHiF5BIp3dytpmQ558dT3y4A6_c2kRA,437
60
+ mito_ai/docker/mysql/compose.yml,sha256=ioqIHgqYuxULA84K59KSanub9r6LWUtZ0Wv2mmkhyko,513
61
+ mito_ai/docker/mysql/init/setup.sql,sha256=H79aJtlvQN7syHBEJDCsyRksNRM-lmE4JTUEMNlr8vo,384
62
+ mito_ai/docker/oracle/compose.yml,sha256=6mgV7SmP3IenFwzY4f3JKCI1f1PDVlYqInDxjIqyvIE,385
63
+ mito_ai/docker/oracle/init/setup.sql,sha256=d8xZ236OdMneN_ziZbOzxl5-rUI7eET1kmd2pDppbdg,1135
64
+ mito_ai/docker/postgres/compose.yml,sha256=pp1fG2YfYbDpHuedkpcnAkRu0HJs_uibBn2CnQwrZYA,467
65
+ mito_ai/docker/postgres/init/setup.sql,sha256=l--Ra5FNfR-24I-HdZWpqzqrERxF1jNOIzdrpVlMRFM,356
66
+ mito_ai/enterprise/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
67
+ mito_ai/enterprise/utils.py,sha256=Skdg9YahsnixKfBMXLneJmzn7yTi1QbvTjBxESV2dmw,652
68
+ mito_ai/file_uploads/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
69
+ mito_ai/file_uploads/handlers.py,sha256=_mmEmCoQTAWHzPXKScEdRIrp5imoZMYgmaD-O6OAhfo,9171
70
+ mito_ai/file_uploads/urls.py,sha256=5U-Jx2GF7CsFIIsBNkvWBy_MU9pnk20G_BJGiAGENng,659
71
+ mito_ai/log/handlers.py,sha256=RWkJFJ5OJ28Fm2AYgRbywxhgDZoTqjNwW-Z6tZJvUc4,1199
72
+ mito_ai/log/urls.py,sha256=OLqAQObEDAwMVmzXZVftR2YBw5D9eCn0bDWlW_52DvI,657
73
+ mito_ai/rules/handlers.py,sha256=dWnusYlQkKGyEEahNm9wtTYdIJq-lxVchyEvTd_Jkeg,1600
74
+ mito_ai/rules/urls.py,sha256=HkhjOcfuKPN35crvY_CBABclOG8d18OfexcmQR-trFE,697
75
+ mito_ai/rules/utils.py,sha256=7Hj5ZOUZERLHMR7a5_7ipbJXaiTkvXjfiRjTHpCKdxU,1664
76
+ mito_ai/settings/handlers.py,sha256=Ym1QieLf9VooP44w4mU2z4WtGSkThVhEgmtO7ENBg4c,1348
77
+ mito_ai/settings/urls.py,sha256=4Oyd6Qtap2vMApyUevoUp_RjoL09IBIwPL6ZayGT3wM,648
78
+ mito_ai/settings/utils.py,sha256=ZiG-axUDFsIKK7iipZTMwunYtP7_dkThHL37mR8GGyA,1355
79
+ mito_ai/streamlit_conversion/agent_utils.py,sha256=3i2Fdfj9NVCvIv19BbJc0akCYHA8thkOFtN414tLFlM,1563
80
+ mito_ai/streamlit_conversion/search_replace_utils.py,sha256=80tAohWalHemmDFbEtGcjFy-j-7u2-27c-pRooOxXWg,2955
81
+ mito_ai/streamlit_conversion/streamlit_agent_handler.py,sha256=vVyd4WwuAcbSQ4Fi0J-ulLo2BnQwLTK6BLoWJAogFgk,6826
82
+ mito_ai/streamlit_conversion/streamlit_utils.py,sha256=4VpHmSoSWpOlwQn4All7mXywFuAn9OzeLfu_IK6vqX0,3002
83
+ mito_ai/streamlit_conversion/validate_streamlit_app.py,sha256=l-mowqwylASGsM-vCtEzErGfp5ZnvhNaEh8VG0jtNec,3997
84
+ mito_ai/streamlit_conversion/prompts/prompt_constants.py,sha256=N8ShlrqKViI92s3a20KmlOxNo12pSu0DgztmwHZu2Ys,4521
85
+ mito_ai/streamlit_conversion/prompts/prompt_utils.py,sha256=lEOsWiyI4WHKqmMozV_j8DST_Rry3vlj0Ftfza2lOcM,378
86
+ mito_ai/streamlit_conversion/prompts/streamlit_app_creation_prompt.py,sha256=KzNXSAO0O496_vNb--IEUm6RgE0IWiKh16eDYKDVhAE,1828
87
+ mito_ai/streamlit_conversion/prompts/streamlit_error_correction_prompt.py,sha256=3Dg3NbppzwuheRgkCfUwesG8Bs7cQ7TLbHnyDcbel4A,1088
88
+ mito_ai/streamlit_conversion/prompts/streamlit_finish_todo_prompt.py,sha256=JU9qxrlctJ4CjCsWcBRYd7W-25EhIQV8d7TBxJxmmLQ,2206
89
+ mito_ai/streamlit_conversion/prompts/streamlit_system_prompt.py,sha256=ksf3Erx5H-vkUmgbCdoWUHIc_3TI5yzsLb0sRKREwcA,3517
90
+ mito_ai/streamlit_conversion/prompts/update_existing_app_prompt.py,sha256=e3t7qp2nNqlcHpEjBRPdVku1w2_X88m_IBkf_Yz--SA,2302
91
+ mito_ai/streamlit_preview/__init__.py,sha256=RLNxLYp76fZ-nezx75oQB7BDnX4F81GH4ITMS4s5Rpo,196
92
+ mito_ai/streamlit_preview/handlers.py,sha256=ZyD0b7c-MuZDbcPFVz3FPJbm44zooOD93mO44f51-UY,5091
93
+ mito_ai/streamlit_preview/manager.py,sha256=oiN1F1ld9-5Cki7i8QNxM6ZSkMtpm8YmM3UPiEK7sVA,5273
94
+ mito_ai/streamlit_preview/urls.py,sha256=IbcugX1H8u30Q6U8-9Ofdjmq_rdyAiesxw36qSB5giA,790
95
+ mito_ai/streamlit_preview/utils.py,sha256=bkHaxPKB4_cvma2x9sW6lH8UVEVkkPtKMrNtEYsunI8,1167
96
+ mito_ai/tests/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
97
+ mito_ai/tests/conftest.py,sha256=C4iW3L50rWLeI91gim3gyyJnKKb1zGJ1GLxlXZWfLNs,1494
98
+ mito_ai/tests/create_agent_system_message_prompt_test.py,sha256=PmNBCEz3vuy43CPRfE2JWgSVt1dfGFtn8pzBkDxBlyc,1061
99
+ mito_ai/tests/open_ai_utils_test.py,sha256=LSJ6sIQq5xQ7RR3cYqBUegUagVQSoLemAbennCJMhiE,6646
100
+ mito_ai/tests/performance_test.py,sha256=DwsvTTk51GZ1JOEMqvFHPGV6-8dfsL12GkEg9-7VlG8,12303
101
+ mito_ai/tests/server_limits_test.py,sha256=BKIR75pUOntnQfmtif3XADHzcxzF9jMKEC4tqXefN-E,19521
102
+ mito_ai/tests/test_constants.py,sha256=KbHktAAL_EeJmaVAXCGzf2ZZSxkIhEzfSvTguqXKGaI,1969
103
+ mito_ai/tests/test_telemetry.py,sha256=p5p0-7EQKIT0Lf_lNgE9wdU0bs0wv-tO9eQVI_hYACI,349
104
+ mito_ai/tests/version_check_test.py,sha256=ffEme3mS0sn2u6UjN7uf6R7MfwMda8gVMWFuks2lEXE,6753
105
+ mito_ai/tests/chat_history/test_chat_history.py,sha256=G6vluuusKXA8WXqIrIzEQdeRjDYN979r_Ox0KctwZK0,7586
106
+ mito_ai/tests/completions/completion_handlers_utils_test.py,sha256=8IDFrbf0b9BJ6wLr-F0hyhxeruKI9Vyr1KaTMwOhS1Q,7433
107
+ mito_ai/tests/data/prompt_lg.py,sha256=8Bu_S73P6Ot7LoTC8Xet6pVq7FwoDH9WeJpc5zuPwos,2456
108
+ mito_ai/tests/data/prompt_sm.py,sha256=JJJoMnqkIVmeQGP8auOzJ06br-KDNIHN-ES86G9K2sc,239
109
+ mito_ai/tests/data/prompt_xl.py,sha256=zlVV-K9ZUkg5QG3bRDCdLJkpkjInO2Q2hEwAMIo5tpY,16399
110
+ mito_ai/tests/data/stock_data.sqlite3,sha256=Qk2Ypg6VPBuCJwgiO_3pgcm_pvd2YOGtaL4J3RXFOrk,12288
111
+ mito_ai/tests/db/conftest.py,sha256=uiHdeXbCVC7_NhunWiACNu4NAIZhO63mLwz2vuke2Rg,1172
112
+ mito_ai/tests/db/connections_test.py,sha256=QJxwkFztLjpVgKhZzxrLbO7VQ1VGWdlYb2d8-sP8wn4,3235
113
+ mito_ai/tests/db/mssql_test.py,sha256=40iFi2CvWD9uDZEBO6vCZzchckFaBUXhX0eKEvCSoxw,1048
114
+ mito_ai/tests/db/mysql_test.py,sha256=3OgtdMW6xoKQOdQ5eEzD-4oS0lPvnopc_KSsktvlOoc,1045
115
+ mito_ai/tests/db/oracle_test.py,sha256=LpIxRRPqTWuvq501XXwgbt6N25IVZQwfQiy1NwrZcLw,1057
116
+ mito_ai/tests/db/postgres_test.py,sha256=bKdW0RVi3IbgTSqFTJWP0QtClhtO1vBi9lMqYY-3KMQ,1063
117
+ mito_ai/tests/db/schema_test.py,sha256=ge51gx7UgZrD7VjPdUyeGpns8CvqUwF38YZu169aG3M,2978
118
+ mito_ai/tests/db/sqlite_test.py,sha256=50MCbw9mXNnGGLEJFLMRc55gyPEWfGdwvLTJtFleT78,938
119
+ mito_ai/tests/db/test_db_constants.py,sha256=ilzEo8BHeI3lBQjXLfrVb3hdH7_Gkg9_YWdjkZuDjag,1981
120
+ mito_ai/tests/deploy_app/test_app_deploy_utils.py,sha256=s8cqxno0jShLwdTAjf0L-YsN6nxVjd-UUlZLDkMlaLI,3724
121
+ mito_ai/tests/file_uploads/__init__.py,sha256=Oq613SdOIx0n9iCsVSp-4p4zzbdgjewk1_ggS09rt4Q,111
122
+ mito_ai/tests/file_uploads/test_handlers.py,sha256=WqicGVFr5-cvSm0MSY7_p03E4lap0RJf6W0OpXjYne0,8832
123
+ mito_ai/tests/message_history/test_generate_short_chat_name.py,sha256=0nwoJ9BNZLwwqUMCUe7EFfgpogbZ5djhpOr0kwkqfJM,4814
124
+ mito_ai/tests/message_history/test_message_history_utils.py,sha256=HdHZh1yRWYMm8TIFDw06HT-wMPrYa45COn_DFZWR-eg,17925
125
+ mito_ai/tests/providers/test_anthropic_client.py,sha256=0Tkmqx-rXunXvkFmB0eqTRW6mFtODGObjWM5hf0Kh2w,17253
126
+ mito_ai/tests/providers/test_azure.py,sha256=6XJP7ZXmE6f41rEdimsAFgUF0I7bDB6jOKcu02sraak,27567
127
+ mito_ai/tests/providers/test_capabilities.py,sha256=5pumT-CJeSzodxi9Wqt53SdudTmij5fapa6Zr3YMMbc,4621
128
+ mito_ai/tests/providers/test_gemini_client.py,sha256=fhE06siTyluUlNyC3lJ2ffdkmG_1orCB5EU3mFsDOpg,7821
129
+ mito_ai/tests/providers/test_mito_server_utils.py,sha256=34jjy-hUDwgav3g0CNe9ogCZwXXN7HdxgjRJKAad-_g,18885
130
+ mito_ai/tests/providers/test_model_resolution.py,sha256=TXrdXD5qnJ1GnBqHZJR_6xCaTXTF1x-k0DE5QMQ09mk,6623
131
+ mito_ai/tests/providers/test_openai_client.py,sha256=4f-B68JMZMIrvf_K7tEa8KDy-HyZ2Ov_ehqX7lzIWMc,2356
132
+ mito_ai/tests/providers/test_provider_completion_exception.py,sha256=BM09h8ZC7n1JGp9kqY4mE0xIJFBn7C6YcxAz6psyG5M,2645
133
+ mito_ai/tests/providers/test_provider_limits.py,sha256=9GzNMV54pTTV1fzOtQci3cVQ0GwR6OI12hQYntyg-tI,1597
134
+ mito_ai/tests/providers/test_providers.py,sha256=WEQRyNkGfyWE1sXJHxAsXyHaXKHRZIemVKE-DMNjjdk,14691
135
+ mito_ai/tests/providers/test_retry_logic.py,sha256=8jizGx8A1R6ZYYAfH63LBdkry2xyT8NThfIH-xLx8-U,16081
136
+ mito_ai/tests/providers/test_stream_mito_server_utils.py,sha256=SOOb1vU9U7xtiuIKYQaBIG-QYQqnsWXYVb9gTbTInz8,3930
137
+ mito_ai/tests/providers/utils.py,sha256=z8lVfmXDHVzRpz4L6ZWEaHcY7uTUn_5FsmSr7UoxXtQ,3456
138
+ mito_ai/tests/rules/conftest.py,sha256=DPW5JMtV5tZIKfDWq6R_DXTPJHZGMGfYsfA77cQi_ao,831
139
+ mito_ai/tests/rules/rules_test.py,sha256=gaPGp3qMI-ZWW4J9nHEk9iXrAesB1mCyci7LDFN0K-g,3399
140
+ mito_ai/tests/settings/conftest.py,sha256=dypIqQCssJ9sHArib7FTWQCrY2OLmkI3ZMK8Y3wtXDI,787
141
+ mito_ai/tests/settings/settings_test.py,sha256=dRmugyFeAfUZcvSLd9Bz2kQ96hnq0mrCvzqCErZySX4,2133
142
+ mito_ai/tests/settings/test_settings_constants.py,sha256=BBG7TCfl2pJzLcg825pRvEVgjP3D9sWyYAwqekQ10wo,349
143
+ mito_ai/tests/streamlit_conversion/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
144
+ mito_ai/tests/streamlit_conversion/test_apply_search_replace.py,sha256=PDyqApl79a8zjFHMDqrZn_2pKw1vyn1MTfbXt2bo_hA,5682
145
+ mito_ai/tests/streamlit_conversion/test_streamlit_agent_handler.py,sha256=30-McyimQYk-IIoYK12v7REZ2JDqBFJQhc0uq404CU0,11773
146
+ mito_ai/tests/streamlit_conversion/test_streamlit_utils.py,sha256=bZZQw3MwBsy1m5wPmjT0mpLb3hSewbMvj3W-hy_s1j0,7387
147
+ mito_ai/tests/streamlit_conversion/test_validate_streamlit_app.py,sha256=a8vEAXZ6UDG_IZ9NR4qQURKabgs3XKcbc-f3PrOFbe0,3860
148
+ mito_ai/tests/streamlit_preview/test_streamlit_preview_handler.py,sha256=DyClmI5SzfY06xWiS7mszGu2rAjzTQuIPDmnF4NbAMI,5205
149
+ mito_ai/tests/streamlit_preview/test_streamlit_preview_manager.py,sha256=0LueiqJj0lWkB8HRszXaT2UhZk-ZnardNkwMfZHDYQU,11655
150
+ mito_ai/tests/user/__init__.py,sha256=Oq613SdOIx0n9iCsVSp-4p4zzbdgjewk1_ggS09rt4Q,111
151
+ mito_ai/tests/user/test_user.py,sha256=5XA-lX2IYb9x_06sqAIJKTCnQqO1MytQxX7HDgcm3QU,3802
152
+ mito_ai/tests/utils/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
153
+ mito_ai/tests/utils/test_anthropic_utils.py,sha256=enWWuCo4HCBBZTaU6WMlmIDS2VddoUZ5CtXOHwwucJg,5228
154
+ mito_ai/tests/utils/test_gemini_utils.py,sha256=DeN5392ZiuckeMw1agmHPaoa5y73TUSEgxxhx72crLQ,2866
155
+ mito_ai/user/handlers.py,sha256=wNDKWZZHzcl8SIFCmvR65HbU5NU5FBdfjBwzlBf000Y,1477
156
+ mito_ai/user/urls.py,sha256=vUgE4r2QVbw275DvsRBjhJAOmiQ1pLG-F0JJcEJNZnE,626
157
+ mito_ai/utils/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
158
+ mito_ai/utils/anthropic_utils.py,sha256=0FqSnLC3STs0kgGeAce58kOWo0eTHn7og5GmAUGL4Kg,6158
159
+ mito_ai/utils/create.py,sha256=Awd_WOxUZgUveSPmAJJL1-csoIyqTV_00AIRCGIaCio,3086
160
+ mito_ai/utils/db.py,sha256=oeNjFVg5JET1epjmUUs9uhgGzzvbCn3Na69UbVP0Ib4,2433
161
+ mito_ai/utils/error_classes.py,sha256=n3UBUJepE4ETIH3ENi_pAXeYP0HyY6zQhEHRe91dRNU,1602
162
+ mito_ai/utils/gemini_utils.py,sha256=zZlEeaQvqvndVxgNNmIQfB7OGkUd292bIlH0pvW0k4M,4643
163
+ mito_ai/utils/message_history_utils.py,sha256=a2GjYzK3pRLiNwXxTqdxKfWKELTg40AJTJXY7vUubgY,3278
164
+ mito_ai/utils/mito_server_utils.py,sha256=bjKCq8I7MS8_5nDdNV-UOfeh3kb4tI0YkyJ93T4U7lE,9367
165
+ mito_ai/utils/open_ai_utils.py,sha256=1mCVIzzW-fIuEIEhowtvCPCrvu5nn5Hxlei64fseocI,6549
166
+ mito_ai/utils/provider_utils.py,sha256=vVoo1lQc83Jnm0dgYf5L9AxfiWrb5HVb5Lno_vDQQyk,1671
167
+ mito_ai/utils/schema.py,sha256=XAgw3GlAynGQDVIqWhKX_8trdlKuFVXatbUT-km_dhM,3106
168
+ mito_ai/utils/server_limits.py,sha256=PAt1WpyaYRwV59UfHkt2IrGUJTF-NnE2PC143HxLJyA,6335
169
+ mito_ai/utils/telemetry_utils.py,sha256=fsBoeGBLrCMMQ_l9AQ5G85KK8NhWB65BG3wTT86ZaRI,17121
170
+ mito_ai/utils/utils.py,sha256=Ygl84xLOh06GIoqvAW4D5ZfUO_ilSEPcpkLPL4bm3Bg,3224
171
+ mito_ai/utils/version_utils.py,sha256=yT1OJZpH7Q1eABR2BfYNV09hJ6xXv_aFJI58ltfpnvk,2409
172
+ mito_ai/utils/websocket_base.py,sha256=O4xjMHYUhxKN_lOKtVEGl3mW8EXkzdPWt1tUtsbiHgM,2941
173
+ mito_ai-0.1.50.data/data/etc/jupyter/jupyter_server_config.d/mito_ai.json,sha256=jnrJTWHAtiNWoD0APwyPSP0v4oXBO9aAqGwzTCq7ij8,82
174
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/build_log.json,sha256=LFwXj6p0dWc5Wr688AdAFER1JuE9HL5uG336SXOplvc,22932
175
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/package.json,sha256=whhcioWnKJtgfpBLRAz_bgIetUGKAZiYA2lbre7wcE8,7300
176
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig,sha256=pX24cJLrIJVXNFJb1nYD5tbEcH9sHQ4CPb6Yp-bdyOE,7158
177
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json,sha256=ec8DpF_QTgroq8BgLhmo1G2ByPPF-_tCnG3qRVq4qRE,894
178
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.8f1845da6bf2b128c049.js,sha256=N9sUPPSBZdTepG1ZU6Na8hkW7kd-btpJt2l1dXBI2BA,1332808
179
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.8f1845da6bf2b128c049.js.map,sha256=Gd2xoLVU-JtrhhdEqsj4OrhxcsHixsgCEc17g92vS9c,1340989
180
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js,sha256=5YLXH9YrEcyuTYXT9Ko_VJhj-CEJX9J2K9ILSlypLt8,5831
181
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js.map,sha256=mUU_J-LI5MzCUorOfESVGeaop5hs344g-agqSgEkTak,6760
182
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.78d3ccb73e7ca1da3aae.js,sha256=wPi9lq-JTO5sZI8I7Os8xrKAd0UGBR6_0O3AJpoGnBw,37712
183
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.78d3ccb73e7ca1da3aae.js.map,sha256=d1lhZkHiI7iwT1zOBGBMkGl_wX0uybS4cPLR4qLJx2c,36422
184
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/style.js,sha256=ymGkha4YxU1j3e7KeoKfqYpcsPp1u3RRuHzMaiUnOhw,150
185
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js,sha256=3WQEODsCgCQGEsrSnXaCIb-LlQYJ9k55le76mlBk5xs,33936
186
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js.map,sha256=Nc8hZfBEyXo3MHs-CN2h5l794OtFsz7ok7L-4qh2H6c,28742
187
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js,sha256=yetgbLQTWpV9FiAdJhwM5jTWzAsTbqYhOckJCwDGwVw,33226
188
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js.map,sha256=E2rwLG1ARY-9kexmFn88i3ADA-cellPzEZfjZTWegEE,19070
189
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js,sha256=7qZt4qZgqoFq-T_fNAz0Z8cVPKQOHTCrcdOZFZazA8g,307327
190
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js.map,sha256=TdWZQcuq4PCOo6dtkZNsG3mfSfQP0HsnFh_3ANvGDNs,244867
191
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js,sha256=LTdWh-QP_Jfd7B1AD1ctH99ud2vuVy9a_F_Dj9qbLwc,57349
192
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js.map,sha256=dBmkthEcsYp8b1aZ-SHek5VkKnfR0gegHxpxNWmQshk,39713
193
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js,sha256=HFbycQUh9rIqkJ1lWyKcuk5F8OfiB9-Ah_lnxDUdOk8,2858564
194
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js.map,sha256=5pW1Y1B6SSe6wS4209P-_LQlWDtBS9QsTrhHSVaDm4Y,2274714
195
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js,sha256=TXjBjPWd-496FSCl0JcUYIFhxGHByLSu_Po_gb8CasU,743178
196
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js.map,sha256=h9TcYmXGZpSa8_1yKWK20mIn-mvrb4rIGPCaymnr8Mo,855442
197
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js,sha256=uYUAFa0GVVYcoVvYcw9cvNeF3OdZidQJVIrUE3UtRMQ,84610
198
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js.map,sha256=C0IxSaFYPj6nwxyvYGf9LLdBTFTKk93pPYEikFa1YQc,87246
199
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js,sha256=5gfmIE7bAaJYJZdTp5WuyTW6dKdU545i3X4LTSmiEcM,223110
200
+ mito_ai-0.1.50.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js.map,sha256=azV-DYUA9Yp99BcesR3Q0DzRIiD64xVRhE4lDbvK3Sg,245869
201
+ mito_ai-0.1.50.dist-info/METADATA,sha256=ogCkvddvinRsP5dlY4S8Qoqj0Qarb7wBrJoIjQUbm2Q,7563
202
+ mito_ai-0.1.50.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
203
+ mito_ai-0.1.50.dist-info/entry_points.txt,sha256=OGsjpFBUq1QsuAlA3r2PeZXRwnnIWvzfgVhUqmx4qe4,79
204
+ mito_ai-0.1.50.dist-info/licenses/LICENSE,sha256=O2F2Pp4Q1SmfzgYnl8krdrXZOaEo7Chjhk7OTYuGlDw,115
205
+ mito_ai-0.1.50.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [jupyter_serverproxy_servers]
2
+ mito-ai = mito_ai:_load_jupyter_server_extension
@@ -0,0 +1,3 @@
1
+ Copyright (c) 2020-2024 Saga Inc.
2
+
3
+ See the LICENSE.txt file at the root of this monorepo for licensing information.