llms-py 3.0.2__tar.gz → 3.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {llms_py-3.0.2/llms_py.egg-info → llms_py-3.0.3}/PKG-INFO +1 -1
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/db.py +18 -9
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/app/__init__.py +1 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/app/ui/threadStore.mjs +3 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/main.py +3 -1
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/ai.mjs +1 -1
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/app.css +33 -23
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/ctx.mjs +13 -0
- llms_py-3.0.3/llms/ui/modules/chat/ChatBody.mjs +688 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/modules/chat/index.mjs +80 -7
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/tailwind.input.css +1 -1
- {llms_py-3.0.2 → llms_py-3.0.3/llms_py.egg-info}/PKG-INFO +1 -1
- {llms_py-3.0.2 → llms_py-3.0.3}/pyproject.toml +1 -1
- {llms_py-3.0.2 → llms_py-3.0.3}/setup.py +1 -1
- llms_py-3.0.2/llms/ui/modules/chat/ChatBody.mjs +0 -692
- {llms_py-3.0.2 → llms_py-3.0.3}/LICENSE +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/MANIFEST.in +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/README.md +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/__init__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/__main__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/analytics/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/app/README.md +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/app/db.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/app/ui/Recents.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/app/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/CALCULATOR.md +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/__init__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/core_tools/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/gallery/README.md +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/gallery/__init__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/gallery/db.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/gallery/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/README.md +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/__init__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/README.md +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/auto-render.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/auto-render.min.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/auto-render.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/copy-tex.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/mhchem.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/mhchem.min.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/mhchem.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex-swap.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex-swap.min.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex.min.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex.min.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex.min.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/katex/ui/katex.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/__init__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/anthropic.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/cerebras.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/chutes.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/google.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/nvidia.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/openai.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/providers/openrouter.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/system_prompts/README.md +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/system_prompts/__init__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/system_prompts/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/system_prompts/ui/prompts.json +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/tools/__init__.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/extensions/tools/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/index.html +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/llms.json +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/providers-extra.json +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/providers.json +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/App.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/fav.svg +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/index.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/chart.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/charts.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/color.js +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/highlight.min.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/idb.min.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/marked.min.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/servicestack-client.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/servicestack-vue.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/vue-router.min.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/vue.min.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/lib/vue.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/markdown.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/modules/chat/SettingsDialog.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/modules/icons.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/modules/layout.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/modules/model-selector.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/typography.css +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms/ui/utils.mjs +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms_py.egg-info/SOURCES.txt +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms_py.egg-info/dependency_links.txt +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms_py.egg-info/entry_points.txt +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms_py.egg-info/not-zip-safe +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms_py.egg-info/requires.txt +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/llms_py.egg-info/top_level.txt +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/requirements.txt +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/setup.cfg +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_async.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_config.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_extensions.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_gemini_upload.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_integration.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_provider_checks.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_provider_config.py +0 -0
- {llms_py-3.0.2 → llms_py-3.0.3}/tests/test_utils.py +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import os
|
|
2
3
|
import sqlite3
|
|
3
4
|
import threading
|
|
4
5
|
from queue import Empty, Queue
|
|
5
6
|
from threading import Event, Thread
|
|
6
7
|
|
|
7
|
-
POOL =
|
|
8
|
+
POOL = os.getenv("LLMS_POOL", "1") == "1"
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
def create_reader_connection(db_path):
|
|
@@ -39,7 +40,7 @@ def writer_thread(ctx, db_path, task_queue, stop_event):
|
|
|
39
40
|
sql, args, callback = task # Optional callback for results
|
|
40
41
|
|
|
41
42
|
try:
|
|
42
|
-
ctx.dbg("SQL>" + ("\n" if "\n" in sql else " ") + sql + ("\n" if args else "") + str(args))
|
|
43
|
+
ctx.dbg("SQL>" + ("\n" if "\n" in sql else " ") + sql + ("\n" if args else " ") + str(args))
|
|
43
44
|
cursor = conn.execute(sql, args)
|
|
44
45
|
conn.commit()
|
|
45
46
|
ctx.dbg(f"lastrowid {cursor.lastrowid}, rowcount {cursor.rowcount}")
|
|
@@ -172,7 +173,9 @@ class DbManager:
|
|
|
172
173
|
|
|
173
174
|
def log_sql(self, sql, parameters=None):
|
|
174
175
|
if self.ctx.debug:
|
|
175
|
-
self.ctx.dbg(
|
|
176
|
+
self.ctx.dbg(
|
|
177
|
+
"SQL>" + ("\n" if "\n" in sql else " ") + sql + ("\n" if parameters else " ") + str(parameters)
|
|
178
|
+
)
|
|
176
179
|
|
|
177
180
|
def exec(self, connection, sql, parameters=None):
|
|
178
181
|
self.log_sql(sql, parameters)
|
|
@@ -289,17 +292,20 @@ class DbManager:
|
|
|
289
292
|
async def insert_async(self, table, columns, info):
|
|
290
293
|
event = threading.Event()
|
|
291
294
|
|
|
292
|
-
ret = [None]
|
|
295
|
+
ret = [None, None]
|
|
293
296
|
|
|
294
297
|
def cb(lastrowid, rowcount, error=None):
|
|
295
298
|
nonlocal ret
|
|
296
299
|
if error:
|
|
297
|
-
|
|
298
|
-
|
|
300
|
+
ret[1] = error
|
|
301
|
+
else:
|
|
302
|
+
ret[0] = lastrowid
|
|
299
303
|
event.set()
|
|
300
304
|
|
|
301
305
|
self.insert(table, columns, info, cb)
|
|
302
306
|
event.wait()
|
|
307
|
+
if ret[1]:
|
|
308
|
+
raise ret[1]
|
|
303
309
|
return ret[0]
|
|
304
310
|
|
|
305
311
|
def update(self, table, columns, info, callback=None):
|
|
@@ -323,17 +329,20 @@ class DbManager:
|
|
|
323
329
|
async def update_async(self, table, columns, info):
|
|
324
330
|
event = threading.Event()
|
|
325
331
|
|
|
326
|
-
ret = [None]
|
|
332
|
+
ret = [None, None]
|
|
327
333
|
|
|
328
334
|
def cb(lastrowid, rowcount, error=None):
|
|
329
335
|
nonlocal ret
|
|
330
336
|
if error:
|
|
331
|
-
|
|
332
|
-
|
|
337
|
+
ret[1] = error
|
|
338
|
+
else:
|
|
339
|
+
ret[0] = rowcount
|
|
333
340
|
event.set()
|
|
334
341
|
|
|
335
342
|
self.update(table, columns, info, cb)
|
|
336
343
|
event.wait()
|
|
344
|
+
if ret[1]:
|
|
345
|
+
raise ret[1]
|
|
337
346
|
return ret[0]
|
|
338
347
|
|
|
339
348
|
def close(self):
|
|
@@ -116,6 +116,9 @@ function replaceThread(thread) {
|
|
|
116
116
|
if (currentThread.value?.id === thread.id) {
|
|
117
117
|
currentThread.value = thread
|
|
118
118
|
}
|
|
119
|
+
if (thread.completedAt || thread.error) {
|
|
120
|
+
threadDetails.value[thread.id] = thread
|
|
121
|
+
}
|
|
119
122
|
startWatchingThread()
|
|
120
123
|
return thread
|
|
121
124
|
}
|
|
@@ -41,7 +41,7 @@ try:
|
|
|
41
41
|
except ImportError:
|
|
42
42
|
HAS_PIL = False
|
|
43
43
|
|
|
44
|
-
VERSION = "3.0.
|
|
44
|
+
VERSION = "3.0.3"
|
|
45
45
|
_ROOT = None
|
|
46
46
|
DEBUG = os.getenv("DEBUG") == "1"
|
|
47
47
|
MOCK = os.getenv("MOCK") == "1"
|
|
@@ -1288,6 +1288,8 @@ def to_error_message(e):
|
|
|
1288
1288
|
# check if has 'message' attribute
|
|
1289
1289
|
if hasattr(e, "message"):
|
|
1290
1290
|
return e.message
|
|
1291
|
+
if hasattr(e, "status"):
|
|
1292
|
+
return str(e.status)
|
|
1291
1293
|
return str(e)
|
|
1292
1294
|
|
|
1293
1295
|
|
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
--color-red-700: oklch(50.5% 0.213 27.518);
|
|
19
19
|
--color-red-800: oklch(44.4% 0.177 26.899);
|
|
20
20
|
--color-red-900: oklch(39.6% 0.141 25.723);
|
|
21
|
+
--color-orange-100: oklch(95.4% 0.038 75.164);
|
|
22
|
+
--color-orange-200: oklch(90.1% 0.076 70.697);
|
|
23
|
+
--color-orange-400: oklch(75% 0.183 55.934);
|
|
24
|
+
--color-orange-600: oklch(64.6% 0.222 41.116);
|
|
25
|
+
--color-orange-800: oklch(47% 0.157 37.304);
|
|
26
|
+
--color-orange-900: oklch(40.8% 0.123 38.172);
|
|
21
27
|
--color-yellow-50: oklch(98.7% 0.026 102.212);
|
|
22
28
|
--color-yellow-100: oklch(97.3% 0.071 103.193);
|
|
23
29
|
--color-yellow-200: oklch(94.5% 0.129 101.54);
|
|
@@ -1103,6 +1109,9 @@
|
|
|
1103
1109
|
.cursor-default {
|
|
1104
1110
|
cursor: default;
|
|
1105
1111
|
}
|
|
1112
|
+
.cursor-help {
|
|
1113
|
+
cursor: help;
|
|
1114
|
+
}
|
|
1106
1115
|
.cursor-not-allowed {
|
|
1107
1116
|
cursor: not-allowed;
|
|
1108
1117
|
}
|
|
@@ -1668,6 +1677,9 @@
|
|
|
1668
1677
|
.bg-indigo-700 {
|
|
1669
1678
|
background-color: var(--color-indigo-700);
|
|
1670
1679
|
}
|
|
1680
|
+
.bg-orange-100 {
|
|
1681
|
+
background-color: var(--color-orange-100);
|
|
1682
|
+
}
|
|
1671
1683
|
.bg-purple-100 {
|
|
1672
1684
|
background-color: var(--color-purple-100);
|
|
1673
1685
|
}
|
|
@@ -1743,9 +1755,6 @@
|
|
|
1743
1755
|
.bg-yellow-50 {
|
|
1744
1756
|
background-color: var(--color-yellow-50);
|
|
1745
1757
|
}
|
|
1746
|
-
.bg-yellow-100 {
|
|
1747
|
-
background-color: var(--color-yellow-100);
|
|
1748
|
-
}
|
|
1749
1758
|
.bg-yellow-400 {
|
|
1750
1759
|
background-color: var(--color-yellow-400);
|
|
1751
1760
|
}
|
|
@@ -2313,6 +2322,12 @@
|
|
|
2313
2322
|
.text-indigo-700 {
|
|
2314
2323
|
color: var(--color-indigo-700);
|
|
2315
2324
|
}
|
|
2325
|
+
.text-orange-600 {
|
|
2326
|
+
color: var(--color-orange-600);
|
|
2327
|
+
}
|
|
2328
|
+
.text-orange-800 {
|
|
2329
|
+
color: var(--color-orange-800);
|
|
2330
|
+
}
|
|
2316
2331
|
.text-purple-600 {
|
|
2317
2332
|
color: var(--color-purple-600);
|
|
2318
2333
|
}
|
|
@@ -2385,9 +2400,6 @@
|
|
|
2385
2400
|
.text-yellow-700 {
|
|
2386
2401
|
color: var(--color-yellow-700);
|
|
2387
2402
|
}
|
|
2388
|
-
.text-yellow-800 {
|
|
2389
|
-
color: var(--color-yellow-800);
|
|
2390
|
-
}
|
|
2391
2403
|
.capitalize {
|
|
2392
2404
|
text-transform: capitalize;
|
|
2393
2405
|
}
|
|
@@ -4830,6 +4842,11 @@
|
|
|
4830
4842
|
background-color: var(--color-indigo-900);
|
|
4831
4843
|
}
|
|
4832
4844
|
}
|
|
4845
|
+
.dark\:bg-orange-900 {
|
|
4846
|
+
&:where(.dark, .dark *) {
|
|
4847
|
+
background-color: var(--color-orange-900);
|
|
4848
|
+
}
|
|
4849
|
+
}
|
|
4833
4850
|
.dark\:bg-purple-600 {
|
|
4834
4851
|
&:where(.dark, .dark *) {
|
|
4835
4852
|
background-color: var(--color-purple-600);
|
|
@@ -4920,23 +4937,11 @@
|
|
|
4920
4937
|
background-color: var(--color-yellow-200);
|
|
4921
4938
|
}
|
|
4922
4939
|
}
|
|
4923
|
-
.dark\:bg-yellow-900 {
|
|
4924
|
-
&:where(.dark, .dark *) {
|
|
4925
|
-
background-color: var(--color-yellow-900);
|
|
4926
|
-
}
|
|
4927
|
-
}
|
|
4928
4940
|
.dark\:fill-gray-300 {
|
|
4929
4941
|
&:where(.dark, .dark *) {
|
|
4930
4942
|
fill: var(--color-gray-300);
|
|
4931
4943
|
}
|
|
4932
4944
|
}
|
|
4933
|
-
.dark\:dark\:text-gray-200 {
|
|
4934
|
-
&:where(.dark, .dark *) {
|
|
4935
|
-
&:where(.dark, .dark *) {
|
|
4936
|
-
color: var(--color-gray-200);
|
|
4937
|
-
}
|
|
4938
|
-
}
|
|
4939
|
-
}
|
|
4940
4945
|
.dark\:text-black {
|
|
4941
4946
|
&:where(.dark, .dark *) {
|
|
4942
4947
|
color: var(--color-black);
|
|
@@ -5073,6 +5078,16 @@
|
|
|
5073
5078
|
color: var(--color-indigo-500);
|
|
5074
5079
|
}
|
|
5075
5080
|
}
|
|
5081
|
+
.dark\:text-orange-200 {
|
|
5082
|
+
&:where(.dark, .dark *) {
|
|
5083
|
+
color: var(--color-orange-200);
|
|
5084
|
+
}
|
|
5085
|
+
}
|
|
5086
|
+
.dark\:text-orange-400 {
|
|
5087
|
+
&:where(.dark, .dark *) {
|
|
5088
|
+
color: var(--color-orange-400);
|
|
5089
|
+
}
|
|
5090
|
+
}
|
|
5076
5091
|
.dark\:text-purple-300 {
|
|
5077
5092
|
&:where(.dark, .dark *) {
|
|
5078
5093
|
color: var(--color-purple-300);
|
|
@@ -5118,11 +5133,6 @@
|
|
|
5118
5133
|
color: var(--color-white);
|
|
5119
5134
|
}
|
|
5120
5135
|
}
|
|
5121
|
-
.dark\:text-yellow-200 {
|
|
5122
|
-
&:where(.dark, .dark *) {
|
|
5123
|
-
color: var(--color-yellow-200);
|
|
5124
|
-
}
|
|
5125
|
-
}
|
|
5126
5136
|
.dark\:placeholder-gray-400 {
|
|
5127
5137
|
&:where(.dark, .dark *) {
|
|
5128
5138
|
&::placeholder {
|
|
@@ -30,6 +30,7 @@ export class ExtensionScope {
|
|
|
30
30
|
return this.ctx.ai.get(combinePaths(this.baseUrl, url), options)
|
|
31
31
|
}
|
|
32
32
|
delete(url, options) {
|
|
33
|
+
this.ctx.clearError()
|
|
33
34
|
return this.ctx.ai.get(combinePaths(this.baseUrl, url), {
|
|
34
35
|
...options,
|
|
35
36
|
method: 'DELETE'
|
|
@@ -39,41 +40,49 @@ export class ExtensionScope {
|
|
|
39
40
|
return this.ctx.ai.getJson(combinePaths(this.baseUrl, url), options)
|
|
40
41
|
}
|
|
41
42
|
async deleteJson(url, options) {
|
|
43
|
+
this.ctx.clearError()
|
|
42
44
|
return this.ctx.ai.getJson(combinePaths(this.baseUrl, url), {
|
|
43
45
|
...options,
|
|
44
46
|
method: 'DELETE'
|
|
45
47
|
})
|
|
46
48
|
}
|
|
47
49
|
post(url, options) {
|
|
50
|
+
this.ctx.clearError()
|
|
48
51
|
return this.ctx.ai.post(combinePaths(this.baseUrl, url), options)
|
|
49
52
|
}
|
|
50
53
|
put(url, options) {
|
|
54
|
+
this.ctx.clearError()
|
|
51
55
|
return this.ctx.ai.post(combinePaths(this.baseUrl, url), {
|
|
52
56
|
...options,
|
|
53
57
|
method: 'PUT'
|
|
54
58
|
})
|
|
55
59
|
}
|
|
56
60
|
patch(url, options) {
|
|
61
|
+
this.ctx.clearError()
|
|
57
62
|
return this.ctx.ai.post(combinePaths(this.baseUrl, url), {
|
|
58
63
|
...options,
|
|
59
64
|
method: 'PATCH'
|
|
60
65
|
})
|
|
61
66
|
}
|
|
62
67
|
async postForm(url, options) {
|
|
68
|
+
this.ctx.clearError()
|
|
63
69
|
return await this.ctx.ai.postForm(combinePaths(this.baseUrl, url), options)
|
|
64
70
|
}
|
|
65
71
|
async postJson(url, body) {
|
|
72
|
+
this.ctx.clearError()
|
|
66
73
|
return this.ctx.ai.postJson(combinePaths(this.baseUrl, url), {
|
|
67
74
|
body: body instanceof FormData ? body : JSON.stringify(body)
|
|
68
75
|
})
|
|
69
76
|
}
|
|
70
77
|
async putJson(url, body) {
|
|
78
|
+
this.ctx.clearError()
|
|
71
79
|
return this.ctx.ai.postJson(combinePaths(this.baseUrl, url), {
|
|
72
80
|
method: 'PUT',
|
|
73
81
|
body: body instanceof FormData ? body : JSON.stringify(body)
|
|
74
82
|
})
|
|
75
83
|
}
|
|
76
84
|
async patchJson(url, body) {
|
|
85
|
+
this.ctx.clearError()
|
|
77
86
|
return this.ctx.ai.postJson(combinePaths(this.baseUrl, url), {
|
|
78
87
|
method: 'PATCH',
|
|
79
88
|
body: body instanceof FormData ? body : JSON.stringify(body)
|
|
@@ -136,6 +145,7 @@ export class AppContext {
|
|
|
136
145
|
this.chatErrorFilters = []
|
|
137
146
|
this.createThreadFilters = []
|
|
138
147
|
this.updateThreadFilters = []
|
|
148
|
+
this.threadHeaderComponents = {}
|
|
139
149
|
this.threadFooterComponents = {}
|
|
140
150
|
this.top = {}
|
|
141
151
|
this.left = {}
|
|
@@ -297,6 +307,9 @@ export class AppContext {
|
|
|
297
307
|
this.toggleLayout('left', toggle)
|
|
298
308
|
return toggle
|
|
299
309
|
}
|
|
310
|
+
setThreadHeaders(components) {
|
|
311
|
+
Object.assign(this.threadHeaderComponents, components)
|
|
312
|
+
}
|
|
300
313
|
setThreadFooters(components) {
|
|
301
314
|
Object.assign(this.threadFooterComponents, components)
|
|
302
315
|
}
|