mito-ai 0.1.38__py3-none-any.whl → 0.1.40__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.

Potentially problematic release.


This version of mito-ai might be problematic. Click here for more details.

Files changed (47) hide show
  1. mito_ai/__init__.py +8 -0
  2. mito_ai/_version.py +1 -1
  3. mito_ai/app_builder/handlers.py +16 -11
  4. mito_ai/completions/handlers.py +1 -1
  5. mito_ai/completions/prompt_builders/agent_system_message.py +18 -45
  6. mito_ai/completions/prompt_builders/chat_name_prompt.py +6 -6
  7. mito_ai/openai_client.py +1 -1
  8. mito_ai/streamlit_conversion/agent_utils.py +116 -0
  9. mito_ai/streamlit_conversion/prompts/prompt_constants.py +59 -0
  10. mito_ai/streamlit_conversion/prompts/prompt_utils.py +10 -0
  11. mito_ai/streamlit_conversion/prompts/streamlit_app_creation_prompt.py +45 -0
  12. mito_ai/streamlit_conversion/prompts/streamlit_error_correction_prompt.py +28 -0
  13. mito_ai/streamlit_conversion/prompts/streamlit_finish_todo_prompt.py +44 -0
  14. mito_ai/streamlit_conversion/streamlit_agent_handler.py +72 -42
  15. mito_ai/streamlit_conversion/streamlit_system_prompt.py +19 -17
  16. mito_ai/streamlit_conversion/streamlit_utils.py +43 -5
  17. mito_ai/streamlit_conversion/validate_streamlit_app.py +116 -0
  18. mito_ai/streamlit_preview/handlers.py +7 -4
  19. mito_ai/tests/streamlit_conversion/test_streamlit_agent_handler.py +153 -66
  20. mito_ai/tests/streamlit_conversion/test_validate_streamlit_app.py +119 -0
  21. mito_ai/tests/utils/test_anthropic_utils.py +2 -2
  22. mito_ai/utils/anthropic_utils.py +4 -4
  23. mito_ai/utils/open_ai_utils.py +0 -4
  24. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/build_log.json +1 -1
  25. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/package.json +2 -2
  26. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig +1 -1
  27. mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.5d1d7c234e2dc7c9d97b.js → mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.55d9f8ca386d87856d2d.js +411 -78
  28. mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.55d9f8ca386d87856d2d.js.map +1 -0
  29. mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.bcce4ea34631acf6dbbe.js → mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.264103d9addd1e166113.js +3 -3
  30. mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.bcce4ea34631acf6dbbe.js.map → mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.264103d9addd1e166113.js.map +1 -1
  31. {mito_ai-0.1.38.dist-info → mito_ai-0.1.40.dist-info}/METADATA +4 -1
  32. {mito_ai-0.1.38.dist-info → mito_ai-0.1.40.dist-info}/RECORD +44 -38
  33. mito_ai/streamlit_conversion/validate_and_run_streamlit_code.py +0 -208
  34. mito_ai/tests/streamlit_conversion/test_validate_and_run_streamlit_code.py +0 -418
  35. mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.5d1d7c234e2dc7c9d97b.js.map +0 -1
  36. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/etc/jupyter/jupyter_server_config.d/mito_ai.json +0 -0
  37. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json +0 -0
  38. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/static/style.js +0 -0
  39. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js +0 -0
  40. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js.map +0 -0
  41. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js +0 -0
  42. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js.map +0 -0
  43. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js +0 -0
  44. {mito_ai-0.1.38.data → mito_ai-0.1.40.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js.map +0 -0
  45. {mito_ai-0.1.38.dist-info → mito_ai-0.1.40.dist-info}/WHEEL +0 -0
  46. {mito_ai-0.1.38.dist-info → mito_ai-0.1.40.dist-info}/entry_points.txt +0 -0
  47. {mito_ai-0.1.38.dist-info → mito_ai-0.1.40.dist-info}/licenses/LICENSE +0 -0
@@ -124,7 +124,7 @@ __webpack_require__.d(exports, {
124
124
  /******/ // This function allow to reference async chunks
125
125
  /******/ __webpack_require__.u = (chunkId) => {
126
126
  /******/ // return url for filenames based on template
127
- /******/ return "" + chunkId + "." + {"lib_index_js":"5d1d7c234e2dc7c9d97b","style_index_js":"5876024bb17dbd6a3ee6","vendors-node_modules_semver_index_js":"9795f79265ddb416864b","vendors-node_modules_vscode-diff_dist_index_js":"ea55f1f9346638aafbcf"}[chunkId] + ".js";
127
+ /******/ return "" + chunkId + "." + {"lib_index_js":"55d9f8ca386d87856d2d","style_index_js":"5876024bb17dbd6a3ee6","vendors-node_modules_semver_index_js":"9795f79265ddb416864b","vendors-node_modules_vscode-diff_dist_index_js":"ea55f1f9346638aafbcf"}[chunkId] + ".js";
128
128
  /******/ };
129
129
  /******/ })();
130
130
  /******/
@@ -243,7 +243,7 @@ __webpack_require__.d(exports, {
243
243
  /******/ var promises = [];
244
244
  /******/ switch(name) {
245
245
  /******/ case "default": {
246
- /******/ register("mito_ai", "0.1.38", () => (__webpack_require__.e("lib_index_js").then(() => (() => (__webpack_require__(/*! ./lib/index.js */ "./lib/index.js"))))));
246
+ /******/ register("mito_ai", "0.1.40", () => (__webpack_require__.e("lib_index_js").then(() => (() => (__webpack_require__(/*! ./lib/index.js */ "./lib/index.js"))))));
247
247
  /******/ register("semver", "7.7.2", () => (__webpack_require__.e("vendors-node_modules_semver_index_js").then(() => (() => (__webpack_require__(/*! ./node_modules/semver/index.js */ "./node_modules/semver/index.js"))))));
248
248
  /******/ register("vscode-diff", "2.1.1", () => (__webpack_require__.e("vendors-node_modules_vscode-diff_dist_index_js").then(() => (() => (__webpack_require__(/*! ./node_modules/vscode-diff/dist/index.js */ "./node_modules/vscode-diff/dist/index.js"))))));
249
249
  /******/ }
@@ -592,4 +592,4 @@ __webpack_require__.d(exports, {
592
592
  /******/
593
593
  /******/ })()
594
594
  ;
595
- //# sourceMappingURL=remoteEntry.bcce4ea34631acf6dbbe.js.map
595
+ //# sourceMappingURL=remoteEntry.264103d9addd1e166113.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remoteEntry.bcce4ea34631acf6dbbe.js","mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;UCpCD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA,8BAA8B,oNAAoN;WAClP;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCzCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,oJAAoJ;WACpJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,IAAI,aAAa;WACjB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC/CA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WClBA;WACA;WACA,WAAW,6BAA6B,iBAAiB,GAAG,qEAAqE;WACjI;WACA;WACA;WACA,qCAAqC,aAAa,EAAE,wDAAwD,2BAA2B,4BAA4B,2BAA2B,+CAA+C,mCAAmC;WAChR;WACA;WACA;WACA,qBAAqB,8BAA8B,SAAS,sDAAsD,gBAAgB,eAAe,KAAK,6DAA6D,SAAS,SAAS,QAAQ,eAAe,KAAK,eAAe,qGAAqG,WAAW,aAAa;WAC7Y;WACA;WACA;WACA,gBAAgB,8BAA8B,qBAAqB,YAAY,sBAAsB,SAAS,iDAAiD,6FAA6F,WAAW,uBAAuB,2BAA2B,wBAAwB,KAAK,oCAAoC,oBAAoB,wBAAwB,oBAAoB,SAAS,KAAK,yBAAyB,KAAK,gCAAgC,yBAAyB,QAAQ,eAAe,KAAK,eAAe,4DAA4D;WACtoB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE,IAAI;WACN;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;;WAED;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN,KAAK,WAAW;WAChB;WACA,GAAG;WACH;WACA;;;;;WC7MA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;WCrFA;;;;;UEAA;UACA;UACA;UACA","sources":["webpack://mito_ai/webpack/container-entry","webpack://mito_ai/webpack/bootstrap","webpack://mito_ai/webpack/runtime/compat get default export","webpack://mito_ai/webpack/runtime/define property getters","webpack://mito_ai/webpack/runtime/ensure chunk","webpack://mito_ai/webpack/runtime/get javascript chunk filename","webpack://mito_ai/webpack/runtime/global","webpack://mito_ai/webpack/runtime/hasOwnProperty shorthand","webpack://mito_ai/webpack/runtime/load script","webpack://mito_ai/webpack/runtime/make namespace object","webpack://mito_ai/webpack/runtime/sharing","webpack://mito_ai/webpack/runtime/publicPath","webpack://mito_ai/webpack/runtime/consumes","webpack://mito_ai/webpack/runtime/jsonp chunk loading","webpack://mito_ai/webpack/runtime/nonce","webpack://mito_ai/webpack/before-startup","webpack://mito_ai/webpack/startup","webpack://mito_ai/webpack/after-startup"],"sourcesContent":["var moduleMap = {\n\t\"./index\": () => {\n\t\treturn __webpack_require__.e(\"lib_index_js\").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./extension\": () => {\n\t\treturn __webpack_require__.e(\"lib_index_js\").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./style\": () => {\n\t\treturn __webpack_require__.e(\"style_index_js\").then(() => (() => ((__webpack_require__(/*! ./style/index.js */ \"./style/index.js\")))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"lib_index_js\":\"5d1d7c234e2dc7c9d97b\",\"style_index_js\":\"5876024bb17dbd6a3ee6\",\"vendors-node_modules_semver_index_js\":\"9795f79265ddb416864b\",\"vendors-node_modules_vscode-diff_dist_index_js\":\"ea55f1f9346638aafbcf\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"mito_ai:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => {\n\t\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n\t};\n\tvar uniqueName = \"mito_ai\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"mito_ai\", \"0.1.38\", () => (__webpack_require__.e(\"lib_index_js\").then(() => (() => (__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\"))))));\n\t\t\tregister(\"semver\", \"7.7.2\", () => (__webpack_require__.e(\"vendors-node_modules_semver_index_js\").then(() => (() => (__webpack_require__(/*! ./node_modules/semver/index.js */ \"./node_modules/semver/index.js\"))))));\n\t\t\tregister(\"vscode-diff\", \"2.1.1\", () => (__webpack_require__.e(\"vendors-node_modules_vscode-diff_dist_index_js\").then(() => (() => (__webpack_require__(/*! ./node_modules/vscode-diff/dist/index.js */ \"./node_modules/vscode-diff/dist/index.js\"))))));\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r<b.length&&\"u\"!=(typeof b[r])[0];var e=a[r],n=(typeof e)[0];if(r>=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e<t;r++}\n}\nvar rangeToString = (range) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a<range.length;a++){e--,n+=\"u\"==(typeof(t=range[a]))[0]?\"-\":(e>0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a<range.length;a++){var t=range[a];g.push(0===t?\"not(\"+o()+\")\":1===t?\"(\"+o()+\" || \"+o()+\")\":2===t?g.pop()+\" \"+g.pop():rangeToString(t))}return o();function o(){return g.pop().replace(/^\\((.+)\\)$/,\"$1\")}\n}\nvar satisfy = (range, version) => {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof range[i])[0]:\"\";if(n>=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else if(\"s\"!=g&&\"n\"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else\"s\"!=g&&\"n\"!=g&&(a=!1,i--)}}var t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();\n}\nvar exists = (scope, key) => {\n\treturn scope && __webpack_require__.o(scope, key);\n}\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar eagerOnly = (versions) => {\n\treturn Object.keys(versions).reduce((filtered, version) => {\n\t\t\tif (versions[version].eager) {\n\t\t\t\tfiltered[version] = versions[version];\n\t\t\t}\n\t\t\treturn filtered;\n\t}, {});\n};\nvar findLatestVersion = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key];\n};\nvar findSatisfyingVersion = (scope, key, requiredVersion, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion, eager) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \")\" + (eager ? \" for eager consumption\" : \"\") + \" of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar fail = (msg) => {\n\tthrow new Error(msg);\n}\nvar failAsNotExist = (scopeName, key) => {\n\treturn fail(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n}\nvar warn = /*#__PURE__*/ (msg) => {\n\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n};\nvar init = (fn) => (function(scopeName, key, eager, c, d) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then && !eager) {\n\t\treturn promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], key, false, c, d));\n\t}\n\treturn fn(scopeName, __webpack_require__.S[scopeName], key, eager, c, d);\n});\n\nvar useFallback = (scopeName, key, fallback) => {\n\treturn fallback ? fallback() : failAsNotExist(scopeName, key);\n}\nvar load = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\twarn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadStrictVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\tif (fallback) return fallback();\n\tfail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\treturn get(scope[key][version]);\n});\nvar loadSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\twarn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar loadStrictSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\tfail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t\"webpack/sharing/consume/default/@jupyterlab/application\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/application\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/apputils\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/apputils\", false, [1,4,5,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/notebook\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/notebook\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/react\": () => (loadSingletonVersion(\"default\", \"react\", false, [1,18,2,0])),\n\t\"webpack/sharing/consume/default/@codemirror/state\": () => (loadSingletonVersion(\"default\", \"@codemirror/state\", false, [1,6,2,0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/ui-components\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@lumino/coreutils\": () => (loadSingletonVersion(\"default\", \"@lumino/coreutils\", false, [1,2,0,0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/rendermime\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/rendermime\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/cells\": () => (loadVersion(\"default\", \"@jupyterlab/cells\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/coreutils\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/coreutils\", false, [1,6,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/services\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/services\", false, [1,7,4,5])),\n\t\"webpack/sharing/consume/default/vscode-diff/vscode-diff\": () => (loadStrictVersion(\"default\", \"vscode-diff\", false, [1,2,1,1], () => (__webpack_require__.e(\"vendors-node_modules_vscode-diff_dist_index_js\").then(() => (() => (__webpack_require__(/*! vscode-diff */ \"./node_modules/vscode-diff/dist/index.js\"))))))),\n\t\"webpack/sharing/consume/default/@codemirror/view\": () => (loadSingletonVersion(\"default\", \"@codemirror/view\", false, [1,6,9,6])),\n\t\"webpack/sharing/consume/default/react-dom\": () => (loadSingletonVersion(\"default\", \"react-dom\", false, [1,18,2,0])),\n\t\"webpack/sharing/consume/default/@lumino/signaling\": () => (loadSingletonVersion(\"default\", \"@lumino/signaling\", false, [1,2,0,0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/settingregistry\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/docmanager\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/docmanager\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@lumino/widgets\": () => (loadSingletonVersion(\"default\", \"@lumino/widgets\", false, [1,2,3,1,,\"alpha\",0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/codeeditor\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/codeeditor\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/codemirror\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/codemirror\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@lumino/commands\": () => (loadSingletonVersion(\"default\", \"@lumino/commands\", false, [1,2,0,1])),\n\t\"webpack/sharing/consume/default/@jupyterlab/statusbar\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/statusbar\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/semver/semver\": () => (loadStrictVersion(\"default\", \"semver\", false, [1,7,7,2], () => (__webpack_require__.e(\"vendors-node_modules_semver_index_js\").then(() => (() => (__webpack_require__(/*! semver */ \"./node_modules/semver/index.js\")))))))\n};\n// no consumes in initial chunks\nvar chunkMapping = {\n\t\"lib_index_js\": [\n\t\t\"webpack/sharing/consume/default/@jupyterlab/application\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/apputils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/notebook\",\n\t\t\"webpack/sharing/consume/default/react\",\n\t\t\"webpack/sharing/consume/default/@codemirror/state\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\",\n\t\t\"webpack/sharing/consume/default/@lumino/coreutils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/rendermime\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/cells\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/coreutils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/services\",\n\t\t\"webpack/sharing/consume/default/vscode-diff/vscode-diff\",\n\t\t\"webpack/sharing/consume/default/@codemirror/view\",\n\t\t\"webpack/sharing/consume/default/react-dom\",\n\t\t\"webpack/sharing/consume/default/@lumino/signaling\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/docmanager\",\n\t\t\"webpack/sharing/consume/default/@lumino/widgets\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/codeeditor\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/codemirror\",\n\t\t\"webpack/sharing/consume/default/@lumino/commands\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/statusbar\",\n\t\t\"webpack/sharing/consume/default/semver/semver\"\n\t]\n};\nvar startedInstallModules = {};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tif(!startedInstallModules[id]) {\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tstartedInstallModules[id] = true;\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t\t}\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"mito_ai\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmito_ai\"] = self[\"webpackChunkmito_ai\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(\"webpack/container/entry/mito_ai\");\n",""],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"remoteEntry.264103d9addd1e166113.js","mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;UCpCD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA,8BAA8B,oNAAoN;WAClP;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCzCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,oJAAoJ;WACpJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,IAAI,aAAa;WACjB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC/CA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WClBA;WACA;WACA,WAAW,6BAA6B,iBAAiB,GAAG,qEAAqE;WACjI;WACA;WACA;WACA,qCAAqC,aAAa,EAAE,wDAAwD,2BAA2B,4BAA4B,2BAA2B,+CAA+C,mCAAmC;WAChR;WACA;WACA;WACA,qBAAqB,8BAA8B,SAAS,sDAAsD,gBAAgB,eAAe,KAAK,6DAA6D,SAAS,SAAS,QAAQ,eAAe,KAAK,eAAe,qGAAqG,WAAW,aAAa;WAC7Y;WACA;WACA;WACA,gBAAgB,8BAA8B,qBAAqB,YAAY,sBAAsB,SAAS,iDAAiD,6FAA6F,WAAW,uBAAuB,2BAA2B,wBAAwB,KAAK,oCAAoC,oBAAoB,wBAAwB,oBAAoB,SAAS,KAAK,yBAAyB,KAAK,gCAAgC,yBAAyB,QAAQ,eAAe,KAAK,eAAe,4DAA4D;WACtoB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE,IAAI;WACN;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;;WAED;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN,KAAK,WAAW;WAChB;WACA,GAAG;WACH;WACA;;;;;WC7MA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;WCrFA;;;;;UEAA;UACA;UACA;UACA","sources":["webpack://mito_ai/webpack/container-entry","webpack://mito_ai/webpack/bootstrap","webpack://mito_ai/webpack/runtime/compat get default export","webpack://mito_ai/webpack/runtime/define property getters","webpack://mito_ai/webpack/runtime/ensure chunk","webpack://mito_ai/webpack/runtime/get javascript chunk filename","webpack://mito_ai/webpack/runtime/global","webpack://mito_ai/webpack/runtime/hasOwnProperty shorthand","webpack://mito_ai/webpack/runtime/load script","webpack://mito_ai/webpack/runtime/make namespace object","webpack://mito_ai/webpack/runtime/sharing","webpack://mito_ai/webpack/runtime/publicPath","webpack://mito_ai/webpack/runtime/consumes","webpack://mito_ai/webpack/runtime/jsonp chunk loading","webpack://mito_ai/webpack/runtime/nonce","webpack://mito_ai/webpack/before-startup","webpack://mito_ai/webpack/startup","webpack://mito_ai/webpack/after-startup"],"sourcesContent":["var moduleMap = {\n\t\"./index\": () => {\n\t\treturn __webpack_require__.e(\"lib_index_js\").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./extension\": () => {\n\t\treturn __webpack_require__.e(\"lib_index_js\").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./style\": () => {\n\t\treturn __webpack_require__.e(\"style_index_js\").then(() => (() => ((__webpack_require__(/*! ./style/index.js */ \"./style/index.js\")))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"lib_index_js\":\"55d9f8ca386d87856d2d\",\"style_index_js\":\"5876024bb17dbd6a3ee6\",\"vendors-node_modules_semver_index_js\":\"9795f79265ddb416864b\",\"vendors-node_modules_vscode-diff_dist_index_js\":\"ea55f1f9346638aafbcf\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"mito_ai:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => {\n\t\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n\t};\n\tvar uniqueName = \"mito_ai\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"mito_ai\", \"0.1.40\", () => (__webpack_require__.e(\"lib_index_js\").then(() => (() => (__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\"))))));\n\t\t\tregister(\"semver\", \"7.7.2\", () => (__webpack_require__.e(\"vendors-node_modules_semver_index_js\").then(() => (() => (__webpack_require__(/*! ./node_modules/semver/index.js */ \"./node_modules/semver/index.js\"))))));\n\t\t\tregister(\"vscode-diff\", \"2.1.1\", () => (__webpack_require__.e(\"vendors-node_modules_vscode-diff_dist_index_js\").then(() => (() => (__webpack_require__(/*! ./node_modules/vscode-diff/dist/index.js */ \"./node_modules/vscode-diff/dist/index.js\"))))));\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r<b.length&&\"u\"!=(typeof b[r])[0];var e=a[r],n=(typeof e)[0];if(r>=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e<t;r++}\n}\nvar rangeToString = (range) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a<range.length;a++){e--,n+=\"u\"==(typeof(t=range[a]))[0]?\"-\":(e>0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a<range.length;a++){var t=range[a];g.push(0===t?\"not(\"+o()+\")\":1===t?\"(\"+o()+\" || \"+o()+\")\":2===t?g.pop()+\" \"+g.pop():rangeToString(t))}return o();function o(){return g.pop().replace(/^\\((.+)\\)$/,\"$1\")}\n}\nvar satisfy = (range, version) => {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof range[i])[0]:\"\";if(n>=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else if(\"s\"!=g&&\"n\"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else\"s\"!=g&&\"n\"!=g&&(a=!1,i--)}}var t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();\n}\nvar exists = (scope, key) => {\n\treturn scope && __webpack_require__.o(scope, key);\n}\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar eagerOnly = (versions) => {\n\treturn Object.keys(versions).reduce((filtered, version) => {\n\t\t\tif (versions[version].eager) {\n\t\t\t\tfiltered[version] = versions[version];\n\t\t\t}\n\t\t\treturn filtered;\n\t}, {});\n};\nvar findLatestVersion = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key];\n};\nvar findSatisfyingVersion = (scope, key, requiredVersion, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion, eager) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \")\" + (eager ? \" for eager consumption\" : \"\") + \" of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar fail = (msg) => {\n\tthrow new Error(msg);\n}\nvar failAsNotExist = (scopeName, key) => {\n\treturn fail(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n}\nvar warn = /*#__PURE__*/ (msg) => {\n\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n};\nvar init = (fn) => (function(scopeName, key, eager, c, d) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then && !eager) {\n\t\treturn promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], key, false, c, d));\n\t}\n\treturn fn(scopeName, __webpack_require__.S[scopeName], key, eager, c, d);\n});\n\nvar useFallback = (scopeName, key, fallback) => {\n\treturn fallback ? fallback() : failAsNotExist(scopeName, key);\n}\nvar load = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\twarn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadStrictVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\tif (fallback) return fallback();\n\tfail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\treturn get(scope[key][version]);\n});\nvar loadSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\twarn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar loadStrictSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\tfail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t\"webpack/sharing/consume/default/@jupyterlab/application\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/application\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/apputils\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/apputils\", false, [1,4,5,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/notebook\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/notebook\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/react\": () => (loadSingletonVersion(\"default\", \"react\", false, [1,18,2,0])),\n\t\"webpack/sharing/consume/default/@codemirror/state\": () => (loadSingletonVersion(\"default\", \"@codemirror/state\", false, [1,6,2,0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/ui-components\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@lumino/coreutils\": () => (loadSingletonVersion(\"default\", \"@lumino/coreutils\", false, [1,2,0,0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/rendermime\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/rendermime\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/cells\": () => (loadVersion(\"default\", \"@jupyterlab/cells\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/coreutils\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/coreutils\", false, [1,6,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/services\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/services\", false, [1,7,4,5])),\n\t\"webpack/sharing/consume/default/vscode-diff/vscode-diff\": () => (loadStrictVersion(\"default\", \"vscode-diff\", false, [1,2,1,1], () => (__webpack_require__.e(\"vendors-node_modules_vscode-diff_dist_index_js\").then(() => (() => (__webpack_require__(/*! vscode-diff */ \"./node_modules/vscode-diff/dist/index.js\"))))))),\n\t\"webpack/sharing/consume/default/@codemirror/view\": () => (loadSingletonVersion(\"default\", \"@codemirror/view\", false, [1,6,9,6])),\n\t\"webpack/sharing/consume/default/react-dom\": () => (loadSingletonVersion(\"default\", \"react-dom\", false, [1,18,2,0])),\n\t\"webpack/sharing/consume/default/@lumino/signaling\": () => (loadSingletonVersion(\"default\", \"@lumino/signaling\", false, [1,2,0,0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/settingregistry\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/docmanager\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/docmanager\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@lumino/widgets\": () => (loadSingletonVersion(\"default\", \"@lumino/widgets\", false, [1,2,3,1,,\"alpha\",0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/codeeditor\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/codeeditor\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/codemirror\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/codemirror\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/@lumino/commands\": () => (loadSingletonVersion(\"default\", \"@lumino/commands\", false, [1,2,0,1])),\n\t\"webpack/sharing/consume/default/@jupyterlab/statusbar\": () => (loadSingletonVersion(\"default\", \"@jupyterlab/statusbar\", false, [1,4,4,5])),\n\t\"webpack/sharing/consume/default/semver/semver\": () => (loadStrictVersion(\"default\", \"semver\", false, [1,7,7,2], () => (__webpack_require__.e(\"vendors-node_modules_semver_index_js\").then(() => (() => (__webpack_require__(/*! semver */ \"./node_modules/semver/index.js\")))))))\n};\n// no consumes in initial chunks\nvar chunkMapping = {\n\t\"lib_index_js\": [\n\t\t\"webpack/sharing/consume/default/@jupyterlab/application\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/apputils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/notebook\",\n\t\t\"webpack/sharing/consume/default/react\",\n\t\t\"webpack/sharing/consume/default/@codemirror/state\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\",\n\t\t\"webpack/sharing/consume/default/@lumino/coreutils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/rendermime\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/cells\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/coreutils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/services\",\n\t\t\"webpack/sharing/consume/default/vscode-diff/vscode-diff\",\n\t\t\"webpack/sharing/consume/default/@codemirror/view\",\n\t\t\"webpack/sharing/consume/default/react-dom\",\n\t\t\"webpack/sharing/consume/default/@lumino/signaling\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/docmanager\",\n\t\t\"webpack/sharing/consume/default/@lumino/widgets\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/codeeditor\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/codemirror\",\n\t\t\"webpack/sharing/consume/default/@lumino/commands\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/statusbar\",\n\t\t\"webpack/sharing/consume/default/semver/semver\"\n\t]\n};\nvar startedInstallModules = {};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tif(!startedInstallModules[id]) {\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tstartedInstallModules[id] = true;\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t\t}\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"mito_ai\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmito_ai\"] = self[\"webpackChunkmito_ai\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(\"webpack/container/entry/mito_ai\");\n",""],"names":[],"sourceRoot":""}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mito_ai
3
- Version: 0.1.38
3
+ Version: 0.1.40
4
4
  Summary: AI chat for JupyterLab
5
5
  Project-URL: Homepage, https://trymito.io
6
6
  Project-URL: Bug Tracker, https://github.com/mito-ds/monorepo/issues
@@ -23,6 +23,7 @@ Classifier: Programming Language :: Python :: 3.9
23
23
  Classifier: Programming Language :: Python :: 3.10
24
24
  Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Programming Language :: Python :: 3.13
26
27
  Requires-Python: >=3.9
27
28
  Requires-Dist: analytics-python
28
29
  Requires-Dist: anthropic
@@ -34,8 +35,10 @@ Requires-Dist: pipreqs
34
35
  Requires-Dist: pydantic
35
36
  Requires-Dist: requests>=2.25.0
36
37
  Requires-Dist: sqlalchemy
38
+ Requires-Dist: streamlit
37
39
  Requires-Dist: tornado>=6.2.0
38
40
  Requires-Dist: traitlets
41
+ Requires-Dist: unidiff
39
42
  Provides-Extra: deploy
40
43
  Requires-Dist: hatch-jupyter-builder>=0.5; extra == 'deploy'
41
44
  Requires-Dist: hatch-nodejs-version>=0.3.2; extra == 'deploy'
@@ -1,19 +1,19 @@
1
- mito_ai/__init__.py,sha256=T2ISU2ic-LTYpdDICfbjFKm_M08J0Dwsa5SDbspJRSg,3340
2
- mito_ai/_version.py,sha256=Rg4xQkBwrUFCojDyjCzi3bMH8W28o_Jv3AvcXjHTW9Y,172
1
+ mito_ai/__init__.py,sha256=rqKDd_7Y6iP7oZk7G_No4uoUblcQ-fwnq6ccsucJPkE,3729
2
+ mito_ai/_version.py,sha256=HLWF4XaS7Kwq3x27akMp47_QsVVrfz4gkZmF8Dyd300,172
3
3
  mito_ai/anthropic_client.py,sha256=p1G6ugZl5igvJ0SjhpSMOUC3KRKrIeUMXsSDU6XIBFw,10630
4
4
  mito_ai/constants.py,sha256=M8_2q3zeEQz-rQu0WzmlX9munFOZeyLkofOw9WfG9GM,2153
5
5
  mito_ai/gemini_client.py,sha256=4L-h2yYc_p8cEOCMDYM0R-vD4aktfqN47siZH5ZjGJc,9771
6
6
  mito_ai/logger.py,sha256=ZJEC415ZHTodDYKgp8ezVg3c4O513oQZV5lSs708gp8,1285
7
- mito_ai/openai_client.py,sha256=ljLs-HmHX5IElVn-5GuLTLijVPzWKCzg0uA263K57Dw,14210
7
+ mito_ai/openai_client.py,sha256=8PGuz2GiZww7qdWfQXLhXZ4gacDF_WNA12nJrd_rrqw,14208
8
8
  mito_ai/version_check.py,sha256=871m9_Qj_UzYmxuByBcs8DIoonUb0uVqGTRmJYpw6Fk,2268
9
9
  mito_ai/app_builder/__init__.py,sha256=h-glMwaRmOUINzoHh5EA4o1cgg_-wGirF8DLqDrx8S0,191
10
- mito_ai/app_builder/handlers.py,sha256=1MbISu3dcrJ7MMWPK_A2II1oITG6h5KuofhKRxB7SPU,11277
10
+ mito_ai/app_builder/handlers.py,sha256=3ruun5xRveWxGjRkx1XJJ39yRcNJYn4w5TkFvrbe3oA,11522
11
11
  mito_ai/app_builder/models.py,sha256=FoXlHMeZQwSV4ViXeHHAWDd5UdScMXCZvzC3xov1xq0,1976
12
12
  mito_ai/auth/README.md,sha256=j83uIEb2avWI-zjKl_P0eZo_2vMyWNE2MAF7fMnJJMw,891
13
13
  mito_ai/auth/__init__.py,sha256=CrNlpbSKMPcw40H7keblZ61aa_x8qqSXPAqrEq-yCqk,172
14
14
  mito_ai/auth/handlers.py,sha256=vpbLBsS_CIGVK3kZ_Pht4fjvRlde-z5kWQRc-jLjHe4,3888
15
15
  mito_ai/auth/urls.py,sha256=iO4ueOlmqt6Bc66mVX2OrSdFGWPcwqhvGU9Ur5__sUM,417
16
- mito_ai/completions/handlers.py,sha256=_w8x5n24nI4IrSadWb0SjDRyXKDKLx6h2FZzEelzQD4,15908
16
+ mito_ai/completions/handlers.py,sha256=ofTpyzayi99GoxY1lYXFb-Q_EpZgzCl63t1VInEAHbY,15906
17
17
  mito_ai/completions/message_history.py,sha256=3FHtlBFe8KZTIHSj40_2i11P5_0-zavPIvkUzlFuZFQ,16837
18
18
  mito_ai/completions/models.py,sha256=lCxkNGATEwOWr_dK3fRTIIB9AE4XPnZQ4o7iHHHayGo,10008
19
19
  mito_ai/completions/providers.py,sha256=Tzx8fV4eeQ1lDeweSLjtuSrFayxfgtR_IN8YcDYJxUI,12011
@@ -29,8 +29,8 @@ mito_ai/completions/completion_handlers/utils.py,sha256=GZZ1CrLcUf0PJ-cL39TUe5nC
29
29
  mito_ai/completions/prompt_builders/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
30
30
  mito_ai/completions/prompt_builders/agent_execution_prompt.py,sha256=YQCbTX0KhcIHa7VVjVTuPxklXz3Z4LKR63IG_WTjVo4,1367
31
31
  mito_ai/completions/prompt_builders/agent_smart_debug_prompt.py,sha256=RTI7QmXVu6qSiMbjadAakgW7qCMJ86kd54gioykewRE,6315
32
- mito_ai/completions/prompt_builders/agent_system_message.py,sha256=z51T1rrzRfLz2nLVG9H3jJV6x1aNhMVpZWMBtBmyOE4,25004
33
- mito_ai/completions/prompt_builders/chat_name_prompt.py,sha256=Ign2s51W0YSjLwLFn1BK1pO1yaXgd0kQcqse3kWOFg8,556
32
+ mito_ai/completions/prompt_builders/agent_system_message.py,sha256=Et_T1aAk5T1nrGFvHO04j7opCUWEHTOCBodqHyG3wHw,24297
33
+ mito_ai/completions/prompt_builders/chat_name_prompt.py,sha256=ERwgDUAnd7VH3drjbUh70zbP3iEUct1PdJ9EZvMi3qE,532
34
34
  mito_ai/completions/prompt_builders/chat_prompt.py,sha256=v2Ril9xUxhgPHixtckMBNiOyOn7y110npQgY285pPSc,2941
35
35
  mito_ai/completions/prompt_builders/chat_system_message.py,sha256=tT4Olfv6NQ9uTQNWWyZAMEvKLXnuxEhkTwisUzfaqHY,3790
36
36
  mito_ai/completions/prompt_builders/explain_code_prompt.py,sha256=aswSXdZP-catLmLqJKv2E5VeO9CL7vexguZhtGl724c,769
@@ -65,12 +65,18 @@ mito_ai/rules/utils.py,sha256=7Hj5ZOUZERLHMR7a5_7ipbJXaiTkvXjfiRjTHpCKdxU,1664
65
65
  mito_ai/settings/handlers.py,sha256=Ym1QieLf9VooP44w4mU2z4WtGSkThVhEgmtO7ENBg4c,1348
66
66
  mito_ai/settings/urls.py,sha256=4Oyd6Qtap2vMApyUevoUp_RjoL09IBIwPL6ZayGT3wM,648
67
67
  mito_ai/settings/utils.py,sha256=ZiG-axUDFsIKK7iipZTMwunYtP7_dkThHL37mR8GGyA,1355
68
- mito_ai/streamlit_conversion/streamlit_agent_handler.py,sha256=NTAq198Ws5DXCsb0k6C6TAHTevKqm5Z5nXNMNPKVx1U,5500
69
- mito_ai/streamlit_conversion/streamlit_system_prompt.py,sha256=ymvh0nE3bm8mdYk4F-e76dV9jX3h4m3xgDOSXSe3drg,2543
70
- mito_ai/streamlit_conversion/streamlit_utils.py,sha256=6e5EIuWeJqeWBVwuQcq3Kt9CdkSmbkhzPr4-gKHMwjo,3408
71
- mito_ai/streamlit_conversion/validate_and_run_streamlit_code.py,sha256=Q_KBNcCmrdTJyYN9h0oReAiZ3Cq0p98jdp8IFXFyV3Y,7021
68
+ mito_ai/streamlit_conversion/agent_utils.py,sha256=2t9OyPN9g-J3tZkPbABoZWFeux5z0d7ZRqUd36kwPCI,3849
69
+ mito_ai/streamlit_conversion/streamlit_agent_handler.py,sha256=2vWQ6FT17juZ9MfrsDvLdfMo59na-wbWbJ5GfA9WEs0,7161
70
+ mito_ai/streamlit_conversion/streamlit_system_prompt.py,sha256=tYomy09aibRIczKq4L7cUGET1alaDjWBzVZuUweqKQU,3379
71
+ mito_ai/streamlit_conversion/streamlit_utils.py,sha256=FaAVb3vqYONENpWgZ1l2vI0b6KWA3DdQNWRIx_YIkow,5031
72
+ mito_ai/streamlit_conversion/validate_streamlit_app.py,sha256=d22z4dqz7oOuuNZHNizyNI9bLr6Zc0w53fDszQMAVR4,4005
73
+ mito_ai/streamlit_conversion/prompts/prompt_constants.py,sha256=wINhZtNwD9mPyw5-djP5xA-BqtQkBZ18kAv1wj5etIo,3202
74
+ mito_ai/streamlit_conversion/prompts/prompt_utils.py,sha256=lEOsWiyI4WHKqmMozV_j8DST_Rry3vlj0Ftfza2lOcM,378
75
+ mito_ai/streamlit_conversion/prompts/streamlit_app_creation_prompt.py,sha256=fH0mru1JbNSTO6W45UTE0aZhL86mebxDhFg4VbHtmDk,1798
76
+ mito_ai/streamlit_conversion/prompts/streamlit_error_correction_prompt.py,sha256=1VDypM4h3V1WEi-eXOX_gCIHOqVx8chJvLoDK0Yl5pU,1076
77
+ mito_ai/streamlit_conversion/prompts/streamlit_finish_todo_prompt.py,sha256=tJwtV9tKFcE9R14ve9Dk3Bpcwric0esR45CnIfXUymg,2172
72
78
  mito_ai/streamlit_preview/__init__.py,sha256=A2bp32Iplk8MGunc_-oLGpJONqfhd94ceS1_EqoY6u0,261
73
- mito_ai/streamlit_preview/handlers.py,sha256=Pp610N25ol0cSFBKBA9O8EJZTa2fx_dYVMrjeu6tsEo,6552
79
+ mito_ai/streamlit_preview/handlers.py,sha256=0AozuXgku0mDFupI2_qlO5q3An0ZVHQnCIotCHaDb0s,6635
74
80
  mito_ai/streamlit_preview/manager.py,sha256=FtHyA7WDFxIxQiUdgGorTlBXxz3rrAm2vut9VMCCw_U,5398
75
81
  mito_ai/streamlit_preview/urls.py,sha256=IbcugX1H8u30Q6U8-9Ofdjmq_rdyAiesxw36qSB5giA,790
76
82
  mito_ai/tests/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
@@ -116,21 +122,21 @@ mito_ai/tests/settings/conftest.py,sha256=dypIqQCssJ9sHArib7FTWQCrY2OLmkI3ZMK8Y3
116
122
  mito_ai/tests/settings/settings_test.py,sha256=dRmugyFeAfUZcvSLd9Bz2kQ96hnq0mrCvzqCErZySX4,2133
117
123
  mito_ai/tests/settings/test_settings_constants.py,sha256=BBG7TCfl2pJzLcg825pRvEVgjP3D9sWyYAwqekQ10wo,349
118
124
  mito_ai/tests/streamlit_conversion/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
119
- mito_ai/tests/streamlit_conversion/test_streamlit_agent_handler.py,sha256=hBePsx68H5p3MwtzQCm8pTi6HsRwu6faoUlpl77Gk6E,12463
125
+ mito_ai/tests/streamlit_conversion/test_streamlit_agent_handler.py,sha256=Ja1UXeOUUA5xSu8mR9W6q2WDWBnt-RPzB870Aa8ZAig,16745
120
126
  mito_ai/tests/streamlit_conversion/test_streamlit_utils.py,sha256=9hJgGnv8wpVvzgjyfJiFvwULv8be-TkjEiPOeYxWlIM,7366
121
- mito_ai/tests/streamlit_conversion/test_validate_and_run_streamlit_code.py,sha256=IeKlc5I7DSZImvTynVagrW9DhkugFh_oGOZqlNkQiLA,15402
127
+ mito_ai/tests/streamlit_conversion/test_validate_streamlit_app.py,sha256=-85bht9rYICVqhaM-450FYJCRlXDMpKFni3M198C3oo,4085
122
128
  mito_ai/tests/streamlit_preview/test_streamlit_preview_manager.py,sha256=BUlannlxqudBkkGrlaw32iFvNSsD-R4S_ZjA96quIK8,12037
123
129
  mito_ai/tests/utils/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
124
- mito_ai/tests/utils/test_anthropic_utils.py,sha256=DXdcIfn5CTPrfI99QTY3msfNY2jpVzSvyVhSN8rwh_M,5210
130
+ mito_ai/tests/utils/test_anthropic_utils.py,sha256=oBxQzXi309zvU4gHD7R7PDVbDR_iq4TXN1W6yzKc8jM,5244
125
131
  mito_ai/tests/utils/test_gemini_utils.py,sha256=DeN5392ZiuckeMw1agmHPaoa5y73TUSEgxxhx72crLQ,2866
126
132
  mito_ai/utils/__init__.py,sha256=10bPaPwGgcrId4d0uHyFr6ExhhbjO9Dog2oAfPHSMPs,112
127
- mito_ai/utils/anthropic_utils.py,sha256=ew9RC0Ofn7nzgkxPChp1VMeQ0iQCMOCKwTdpj83ftmE,6335
133
+ mito_ai/utils/anthropic_utils.py,sha256=0uDBkeVOFKrL77o-DORBmgsvd-mSo61JsI3LyMGnmqA,6375
128
134
  mito_ai/utils/create.py,sha256=w0Z0_-hmuamRGUWO4ceTaI6DR5hHLNpSWaBnjWrX7sQ,2587
129
135
  mito_ai/utils/db.py,sha256=oeNjFVg5JET1epjmUUs9uhgGzzvbCn3Na69UbVP0Ib4,2433
130
136
  mito_ai/utils/gemini_utils.py,sha256=zZlEeaQvqvndVxgNNmIQfB7OGkUd292bIlH0pvW0k4M,4643
131
137
  mito_ai/utils/message_history_utils.py,sha256=I8BaHHQX6qRSDfq1K9M8OSsU1Tux8whG6XN6688heSE,3113
132
138
  mito_ai/utils/mito_server_utils.py,sha256=pqOic5fB1-Tlwquym81YCGPhAz4CoDolYlosWooylSw,8933
133
- mito_ai/utils/open_ai_utils.py,sha256=R-FnTCMmE14msPJBUrwxLqPgja9lGDwNVIKbe2j6Kvw,6704
139
+ mito_ai/utils/open_ai_utils.py,sha256=1mCVIzzW-fIuEIEhowtvCPCrvu5nn5Hxlei64fseocI,6549
134
140
  mito_ai/utils/provider_utils.py,sha256=vVoo1lQc83Jnm0dgYf5L9AxfiWrb5HVb5Lno_vDQQyk,1671
135
141
  mito_ai/utils/schema.py,sha256=XAgw3GlAynGQDVIqWhKX_8trdlKuFVXatbUT-km_dhM,3106
136
142
  mito_ai/utils/server_limits.py,sha256=4uQld4DBSiNKhY9OsBItIAxyF8hgGDC9aBw5OLYv3e8,6334
@@ -138,24 +144,24 @@ mito_ai/utils/telemetry_utils.py,sha256=RZZEa0tDY8vEqI1McB3HAAh8L4tTLW807LsV53-g
138
144
  mito_ai/utils/utils.py,sha256=Ygl84xLOh06GIoqvAW4D5ZfUO_ilSEPcpkLPL4bm3Bg,3224
139
145
  mito_ai/utils/version_utils.py,sha256=yT1OJZpH7Q1eABR2BfYNV09hJ6xXv_aFJI58ltfpnvk,2409
140
146
  mito_ai/utils/websocket_base.py,sha256=O4xjMHYUhxKN_lOKtVEGl3mW8EXkzdPWt1tUtsbiHgM,2941
141
- mito_ai-0.1.38.data/data/etc/jupyter/jupyter_server_config.d/mito_ai.json,sha256=jnrJTWHAtiNWoD0APwyPSP0v4oXBO9aAqGwzTCq7ij8,82
142
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/build_log.json,sha256=kH52IPGnZZMCffUmvkoKfAiKfgouU1oETg1KCZMiwfw,22761
143
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/package.json,sha256=cbOOL9emRkKhZzaKWPGaxD3opz872TbPk4Hiq8mfTY4,7232
144
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig,sha256=19qK0OGiFuYIJdxSoNw2eVx1yH0LHLMEn3wdiGd7x5A,7090
145
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json,sha256=M6DuZ-p6PJmecWTaPd4guG7vH3vzsz0wbyjhhc0cV0c,1040
146
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.5d1d7c234e2dc7c9d97b.js,sha256=_ihQ_DhTxtGUq7nvlUKPfdUR4GHSJHIBD7PGjRxnZPs,950066
147
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.5d1d7c234e2dc7c9d97b.js.map,sha256=ZtKbSs7KS1JdI3E0MWEmbOXEqkH7OAXTBaJvnDvyzwY,955370
148
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.bcce4ea34631acf6dbbe.js,sha256=VnhaacIw9idOH-r6YnhHvPRlNpmVK8fRNYM0j-7U-ao,32253
149
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.bcce4ea34631acf6dbbe.js.map,sha256=vxVDBmwOTU87ftW5Txs1zZE5Mujc1DS8yxhgMgq7o3c,30952
150
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/style.js,sha256=ymGkha4YxU1j3e7KeoKfqYpcsPp1u3RRuHzMaiUnOhw,150
151
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js,sha256=3WQEODsCgCQGEsrSnXaCIb-LlQYJ9k55le76mlBk5xs,33936
152
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js.map,sha256=Nc8hZfBEyXo3MHs-CN2h5l794OtFsz7ok7L-4qh2H6c,28742
153
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js,sha256=9oMNn2KgNWx12lmKHUFC2KKepDZFdEfe7E4oDOzTHGY,90862
154
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js.map,sha256=Jbgs3npRmzczpfHqSSUBiKbqURZbcgIWNdoccRjUSRk,93905
155
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js,sha256=5gfmIE7bAaJYJZdTp5WuyTW6dKdU545i3X4LTSmiEcM,223110
156
- mito_ai-0.1.38.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js.map,sha256=azV-DYUA9Yp99BcesR3Q0DzRIiD64xVRhE4lDbvK3Sg,245869
157
- mito_ai-0.1.38.dist-info/METADATA,sha256=IS2489yzx27mJrE63Lqf3iHE_6xy32m9_hsRKOlZfbI,7456
158
- mito_ai-0.1.38.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
159
- mito_ai-0.1.38.dist-info/entry_points.txt,sha256=OGsjpFBUq1QsuAlA3r2PeZXRwnnIWvzfgVhUqmx4qe4,79
160
- mito_ai-0.1.38.dist-info/licenses/LICENSE,sha256=O2F2Pp4Q1SmfzgYnl8krdrXZOaEo7Chjhk7OTYuGlDw,115
161
- mito_ai-0.1.38.dist-info/RECORD,,
147
+ mito_ai-0.1.40.data/data/etc/jupyter/jupyter_server_config.d/mito_ai.json,sha256=jnrJTWHAtiNWoD0APwyPSP0v4oXBO9aAqGwzTCq7ij8,82
148
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/build_log.json,sha256=shCRatm8HPAI48s-4kD80Gj2WcAFbXGdr9PiurOV4QY,22761
149
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/package.json,sha256=_PzP8Y6vHIPIrWfVxdySApTOwXfpKDq-eB-U9gOnJ2I,7232
150
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig,sha256=DVMsmKdtV1xDeWKNMaA0_NfcjuJ6yiIa7x10W2sT7zU,7090
151
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json,sha256=M6DuZ-p6PJmecWTaPd4guG7vH3vzsz0wbyjhhc0cV0c,1040
152
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.55d9f8ca386d87856d2d.js,sha256=5i1sAYX8ufEg4gHqrUGHe1fam1Ayj6_aorRofZI6T0Y,969222
153
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.55d9f8ca386d87856d2d.js.map,sha256=5IBA57PamJhAEC8GjiyNYxu6gg39_55KaZYUFIBxp-M,976774
154
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.264103d9addd1e166113.js,sha256=gSDoFcA3IrbVcr_aewMJITNShc9TqrV6rS8q2yVw7p0,32253
155
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.264103d9addd1e166113.js.map,sha256=P7_isz96lg88v4x6IczDdzPovssOjvCGTP2D1TJgPqI,30952
156
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/style.js,sha256=ymGkha4YxU1j3e7KeoKfqYpcsPp1u3RRuHzMaiUnOhw,150
157
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js,sha256=3WQEODsCgCQGEsrSnXaCIb-LlQYJ9k55le76mlBk5xs,33936
158
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js.map,sha256=Nc8hZfBEyXo3MHs-CN2h5l794OtFsz7ok7L-4qh2H6c,28742
159
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js,sha256=9oMNn2KgNWx12lmKHUFC2KKepDZFdEfe7E4oDOzTHGY,90862
160
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js.map,sha256=Jbgs3npRmzczpfHqSSUBiKbqURZbcgIWNdoccRjUSRk,93905
161
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js,sha256=5gfmIE7bAaJYJZdTp5WuyTW6dKdU545i3X4LTSmiEcM,223110
162
+ mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js.map,sha256=azV-DYUA9Yp99BcesR3Q0DzRIiD64xVRhE4lDbvK3Sg,245869
163
+ mito_ai-0.1.40.dist-info/METADATA,sha256=YeC9fNZZ3DgI0aoBvChZ04JxJduULrqEMx-al15tl50,7555
164
+ mito_ai-0.1.40.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
165
+ mito_ai-0.1.40.dist-info/entry_points.txt,sha256=OGsjpFBUq1QsuAlA3r2PeZXRwnnIWvzfgVhUqmx4qe4,79
166
+ mito_ai-0.1.40.dist-info/licenses/LICENSE,sha256=O2F2Pp4Q1SmfzgYnl8krdrXZOaEo7Chjhk7OTYuGlDw,115
167
+ mito_ai-0.1.40.dist-info/RECORD,,
@@ -1,208 +0,0 @@
1
- # Copyright (c) Saga Inc.
2
- # Distributed under the terms of the GNU Affero General Public License v3.0 License.
3
-
4
- import subprocess
5
- import sys
6
- import os
7
- import time
8
- import requests
9
- import tempfile
10
- import shutil
11
- import traceback
12
- import ast
13
- import importlib.util
14
- import warnings
15
- from typing import Tuple, Optional, Dict, Any
16
- from subprocess import Popen
17
-
18
- # warnings.filterwarnings("ignore", message=r".*missing ScriptRunContext.*")
19
- # warnings.filterwarnings("ignore", category=UserWarning)
20
-
21
- warnings.filterwarnings("ignore", message=".*bare mode.*")
22
-
23
-
24
- class StreamlitValidator:
25
- def __init__(self, port: int = 8501, timeout: int = 30) -> None:
26
- self.port = port
27
- self.timeout = timeout
28
- self.process: Optional[Popen[str]] = None
29
- self.temp_dir: Optional[str] = None
30
-
31
- def validate_syntax(self, app_code: str) -> Tuple[bool, str]:
32
- """Check if the Python code has valid syntax"""
33
- try:
34
- ast.parse(app_code)
35
- return True, "Syntax is valid"
36
- except SyntaxError as e:
37
- error_msg = ''.join(traceback.format_exception(type(e), e, e.__traceback__))
38
- return False, f"Syntax error: {error_msg}"
39
-
40
- def create_temp_app(self, app_code: str) -> str:
41
- """Create a temporary Streamlit app file"""
42
- self.temp_dir = tempfile.mkdtemp()
43
- if self.temp_dir is None:
44
- raise RuntimeError("Failed to create temporary directory")
45
-
46
- app_path = os.path.join(self.temp_dir, "app.py")
47
-
48
- with open(app_path, 'w') as f:
49
- f.write(app_code)
50
-
51
- return app_path
52
-
53
- def start_streamlit_app(self, app_path: str) -> Tuple[bool, str]:
54
- """Start the Streamlit app in a subprocess"""
55
- try:
56
- cmd = [
57
- sys.executable, "-m", "streamlit", "run", app_path,
58
- "--server.port", str(self.port),
59
- "--server.headless", "true",
60
- "--server.address", "localhost",
61
- "--logger.level", "error"
62
- ]
63
-
64
- self.process = subprocess.Popen(
65
- cmd,
66
- stdout=subprocess.PIPE,
67
- stderr=subprocess.PIPE,
68
- text=True
69
- )
70
-
71
- return True, "Streamlit app started"
72
- except Exception as e:
73
- return False, f"Failed to start Streamlit: {str(e)}"
74
-
75
- def wait_for_app(self) -> Tuple[bool, str]:
76
- """Wait for the Streamlit app to be ready"""
77
- start_time = time.time()
78
-
79
- exception_error = "Error"
80
- while time.time() - start_time < self.timeout:
81
- try:
82
- response = requests.get(f"http://localhost:{self.port}", timeout=5)
83
- if response.status_code == 200:
84
- return True, "App is running successfully"
85
- except requests.exceptions.RequestException as e:
86
- exception_error = str(e)
87
-
88
- time.sleep(1)
89
-
90
- return False, f"App failed to start within timeout - {exception_error}"
91
-
92
- def filter_streamlit_warnings(self, text: str) -> str:
93
- """Filter out known Streamlit warnings that can be safely ignored"""
94
- if not text:
95
- return text
96
-
97
- filtered_lines = []
98
- for line in text.split('\n'):
99
- # Skip lines containing ScriptRunContext warnings
100
- if any(phrase in line for phrase in [
101
- 'missing ScriptRunContext',
102
- 'bare mode',
103
- 'ScriptRunContext!',
104
- 'Thread \'MainThread\':'
105
- ]):
106
- continue
107
- filtered_lines.append(line)
108
-
109
- return '\n'.join(filtered_lines)
110
-
111
- def check_for_errors(self) -> Tuple[bool, str]:
112
- """Check if the Streamlit process has any errors"""
113
- if self.process:
114
- # Check if process is still running
115
- if self.process.poll() is not None:
116
- stdout, stderr = self.process.communicate()
117
- # Filter out known warnings
118
- filtered_stderr = self.filter_streamlit_warnings(stderr)
119
- if filtered_stderr.strip():
120
- return False, f"App crashed: {filtered_stderr}"
121
-
122
- return True, "App is running without errors"
123
-
124
- return False, "No process found"
125
-
126
- def cleanup(self) -> None:
127
- """Clean up the temporary files and stop the process"""
128
- if self.process:
129
- self.process.terminate()
130
- self.process.wait()
131
- self.process = None
132
-
133
- if self.temp_dir and os.path.exists(self.temp_dir):
134
- shutil.rmtree(self.temp_dir)
135
- self.temp_dir = None
136
-
137
- def validate_app(self, app_code: str) -> Dict[str, Any]:
138
- """Complete validation pipeline"""
139
- results: Dict[str, Any] = {
140
- 'syntax_valid': False,
141
- 'app_starts': False,
142
- 'app_responsive': False,
143
- 'errors': []
144
- }
145
-
146
- try:
147
- # Step 1: Check syntax
148
- syntax_valid, syntax_msg = self.validate_syntax(app_code)
149
- results['syntax_valid'] = syntax_valid
150
- if not syntax_valid:
151
- results['errors'].append(syntax_msg)
152
- return results
153
-
154
- # Step 2: Create and start app
155
- app_path = self.create_temp_app(app_code)
156
- app_started, start_msg = self.start_streamlit_app(app_path)
157
- results['app_starts'] = app_started
158
-
159
- if not app_started:
160
- results['errors'].append(start_msg)
161
- return results
162
-
163
- # Step 3: Wait for app to be ready
164
- app_ready, ready_msg = self.wait_for_app()
165
- results['app_responsive'] = app_ready
166
-
167
- if not app_ready:
168
- results['errors'].append(ready_msg)
169
-
170
- # Step 4: Check for runtime errors
171
- no_errors, error_msg = self.check_for_errors()
172
- if not no_errors:
173
- results['errors'].append(error_msg)
174
-
175
- except Exception as e:
176
- results['errors'].append(f"Validation error: {str(e)}")
177
-
178
- finally:
179
- self.cleanup()
180
-
181
- return results
182
-
183
-
184
- def streamlit_code_validator(app_code: str) -> Tuple[bool, str]:
185
- """Convenience function to validate Streamlit code"""
186
- has_validation_error: bool = False
187
- error_message: str = ""
188
-
189
-
190
- validator = StreamlitValidator()
191
- results = validator.validate_app(app_code)
192
-
193
- print("Validation Results:")
194
- print(f"✓ Syntax valid: {results['syntax_valid']}")
195
- print(f"✓ App starts: {results['app_starts']}")
196
- print(f"✓ App responsive: {results['app_responsive']}")
197
-
198
- if results['errors']:
199
- error_message = "Errors found: "
200
- print("Error detected in agent code")
201
- has_validation_error = True
202
- print("\nErrors found:")
203
- for error in results['errors']:
204
- print(f" - {error}")
205
- error_message += error + "\n"
206
- if not has_validation_error:
207
- print("\nAll validations passed!")
208
- return has_validation_error, error_message