llms-py 3.0.9__tar.gz → 3.0.10__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.9 → llms_py-3.0.10}/PKG-INFO +1 -1
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/main.py +1 -1
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/ai.mjs +1 -1
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/modules/chat/ChatBody.mjs +82 -71
- {llms_py-3.0.9 → llms_py-3.0.10}/llms_py.egg-info/PKG-INFO +1 -1
- {llms_py-3.0.9 → llms_py-3.0.10}/pyproject.toml +1 -1
- {llms_py-3.0.9 → llms_py-3.0.10}/setup.py +1 -1
- {llms_py-3.0.9 → llms_py-3.0.10}/LICENSE +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/MANIFEST.in +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/README.md +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/__main__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/db.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/analytics/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/app/README.md +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/app/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/app/db.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/app/ui/Recents.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/app/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/app/ui/threadStore.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/CALCULATOR.md +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/codemirror.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/codemirror.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/gallery/README.md +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/gallery/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/gallery/db.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/gallery/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/README.md +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/README.md +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/auto-render.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/auto-render.min.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/auto-render.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/copy-tex.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mhchem.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mhchem.min.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mhchem.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex-swap.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex-swap.min.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.min.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.min.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.min.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/anthropic.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/cerebras.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/chutes.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/google.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/nvidia.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/openai.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/openrouter.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/providers/zai.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/system_prompts/README.md +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/system_prompts/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/system_prompts/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/system_prompts/ui/prompts.json +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/tools/__init__.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/tools/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/index.html +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/llms.json +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/providers-extra.json +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/providers.json +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/App.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/app.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/ctx.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/fav.svg +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/chart.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/charts.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/color.js +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/highlight.min.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/idb.min.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/marked.min.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/servicestack-client.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/servicestack-vue.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/vue-router.min.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/vue.min.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/lib/vue.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/markdown.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/modules/chat/SettingsDialog.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/modules/chat/index.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/modules/icons.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/modules/layout.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/modules/model-selector.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/tailwind.input.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/typography.css +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms/ui/utils.mjs +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms_py.egg-info/SOURCES.txt +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms_py.egg-info/dependency_links.txt +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms_py.egg-info/entry_points.txt +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms_py.egg-info/not-zip-safe +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms_py.egg-info/requires.txt +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/llms_py.egg-info/top_level.txt +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/requirements.txt +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/setup.cfg +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_async.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_config.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_extensions.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_gemini_upload.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_integration.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_provider_checks.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_provider_config.py +0 -0
- {llms_py-3.0.9 → llms_py-3.0.10}/tests/test_utils.py +0 -0
|
@@ -12,6 +12,47 @@ function hasJsonStructure(str) {
|
|
|
12
12
|
return tryParseJson(str) != null
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
function isEmpty(v) {
|
|
16
|
+
return !v || v === '{}' || v === '[]' || v === 'null' || v === 'undefined' || v === '""' || v === "''" || v === "``"
|
|
17
|
+
}
|
|
18
|
+
function embedHtml(html) {
|
|
19
|
+
const resizeScript = `<script>
|
|
20
|
+
let lastH = 0;
|
|
21
|
+
const sendHeight = () => {
|
|
22
|
+
const body = document.body;
|
|
23
|
+
if (!body) return;
|
|
24
|
+
// Force re-calc
|
|
25
|
+
const h = document.documentElement.getBoundingClientRect().height;
|
|
26
|
+
if (Math.abs(h - lastH) > 2) {
|
|
27
|
+
lastH = h;
|
|
28
|
+
window.parent.postMessage({ type: 'iframe-resize', height: h }, '*');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const ro = new ResizeObserver(sendHeight);
|
|
32
|
+
window.addEventListener('load', () => {
|
|
33
|
+
// Inject styles to prevent infinite loops
|
|
34
|
+
const style = document.createElement('style');
|
|
35
|
+
style.textContent = 'html, body { height: auto !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; overflow: hidden !important; }';
|
|
36
|
+
document.head.appendChild(style);
|
|
37
|
+
|
|
38
|
+
const body = document.body;
|
|
39
|
+
if (body) {
|
|
40
|
+
ro.observe(body);
|
|
41
|
+
ro.observe(document.documentElement);
|
|
42
|
+
sendHeight();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
<\/script>`
|
|
46
|
+
|
|
47
|
+
const escaped = (html + resizeScript)
|
|
48
|
+
.replace(/&/g, '&')
|
|
49
|
+
.replace(/</g, '<')
|
|
50
|
+
.replace(/>/g, '>')
|
|
51
|
+
.replace(/"/g, '"')
|
|
52
|
+
.replace(/'/g, ''')
|
|
53
|
+
return `<iframe srcdoc="${escaped}" sandbox="allow-scripts" style="width:100%;height:auto;border:none;"></iframe>`
|
|
54
|
+
}
|
|
55
|
+
|
|
15
56
|
export const TypeText = {
|
|
16
57
|
template: `
|
|
17
58
|
<div v-if="text.type === 'text'">
|
|
@@ -332,46 +373,6 @@ export const ToolArguments = {
|
|
|
332
373
|
},
|
|
333
374
|
setup(props) {
|
|
334
375
|
const refArgs = ref()
|
|
335
|
-
function isEmpty(v) {
|
|
336
|
-
return !v || v === '{}' || v === '[]' || v === 'null' || v === 'undefined' || v === '""' || v === "''" || v === "``"
|
|
337
|
-
}
|
|
338
|
-
function embedHtml(html) {
|
|
339
|
-
const resizeScript = `<script>
|
|
340
|
-
let lastH = 0;
|
|
341
|
-
const sendHeight = () => {
|
|
342
|
-
const body = document.body;
|
|
343
|
-
if (!body) return;
|
|
344
|
-
// Force re-calc
|
|
345
|
-
const h = document.documentElement.getBoundingClientRect().height;
|
|
346
|
-
if (Math.abs(h - lastH) > 2) {
|
|
347
|
-
lastH = h;
|
|
348
|
-
window.parent.postMessage({ type: 'iframe-resize', height: h }, '*');
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
const ro = new ResizeObserver(sendHeight);
|
|
352
|
-
window.addEventListener('load', () => {
|
|
353
|
-
// Inject styles to prevent infinite loops
|
|
354
|
-
const style = document.createElement('style');
|
|
355
|
-
style.textContent = 'html, body { height: auto !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; overflow: hidden !important; }';
|
|
356
|
-
document.head.appendChild(style);
|
|
357
|
-
|
|
358
|
-
const body = document.body;
|
|
359
|
-
if (body) {
|
|
360
|
-
ro.observe(body);
|
|
361
|
-
ro.observe(document.documentElement);
|
|
362
|
-
sendHeight();
|
|
363
|
-
}
|
|
364
|
-
});
|
|
365
|
-
<\/script>`
|
|
366
|
-
|
|
367
|
-
const escaped = (html + resizeScript)
|
|
368
|
-
.replace(/&/g, '&')
|
|
369
|
-
.replace(/</g, '<')
|
|
370
|
-
.replace(/>/g, '>')
|
|
371
|
-
.replace(/"/g, '"')
|
|
372
|
-
.replace(/'/g, ''')
|
|
373
|
-
return `<iframe srcdoc="${escaped}" sandbox="allow-scripts" style="width:100%;height:auto;border:none;"></iframe>`
|
|
374
|
-
}
|
|
375
376
|
const dict = computed(() => {
|
|
376
377
|
if (isEmpty(props.value)) return null
|
|
377
378
|
const ret = tryParseJson(props.value)
|
|
@@ -417,9 +418,47 @@ export const ToolArguments = {
|
|
|
417
418
|
}
|
|
418
419
|
|
|
419
420
|
export const ToolOutput = {
|
|
420
|
-
template:
|
|
421
|
+
template: `
|
|
422
|
+
<div v-if="output" class="border-t border-gray-200 dark:border-gray-700">
|
|
423
|
+
<div class="px-3 py-1.5 flex justify-between items-center border-b border-gray-200 dark:border-gray-800 bg-gray-50/30 dark:bg-gray-800">
|
|
424
|
+
<div class="flex items-center gap-2 ">
|
|
425
|
+
<svg class="size-3.5 text-gray-400" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
|
|
426
|
+
<span class="text-[10px] uppercase tracking-wider text-gray-400 font-medium">Output</span>
|
|
427
|
+
</div>
|
|
428
|
+
<div v-if="hasJsonStructure(output.content)" class="flex items-center gap-2 text-[10px] uppercase tracking-wider font-medium select-none">
|
|
429
|
+
<span @click="$ctx.setPrefs({ toolFormat: 'text' })"
|
|
430
|
+
class="cursor-pointer transition-colors"
|
|
431
|
+
:class="$ctx.prefs.toolFormat !== 'preview' ? 'text-gray-600 dark:text-gray-300' : 'text-gray-400 hover:text-gray-600 dark:hover:text-gray-300'">
|
|
432
|
+
text
|
|
433
|
+
</span>
|
|
434
|
+
<span class="text-gray-300 dark:text-gray-700">|</span>
|
|
435
|
+
<span @click="$ctx.setPrefs({ toolFormat: 'preview' })"
|
|
436
|
+
class="cursor-pointer transition-colors"
|
|
437
|
+
:class="$ctx.prefs.toolFormat == 'preview' ? 'text-gray-600 dark:text-gray-300' : 'text-gray-400 hover:text-gray-600 dark:hover:text-gray-300'">
|
|
438
|
+
preview
|
|
439
|
+
</span>
|
|
440
|
+
</div>
|
|
441
|
+
</div>
|
|
442
|
+
<div class="not-prose px-3 py-2">
|
|
443
|
+
<pre v-if="$ctx.prefs.toolFormat !== 'preview' || !hasJsonStructure(output.content)" class="tool-output">{{ output.content }}</pre>
|
|
444
|
+
<div v-else class="text-xs">
|
|
445
|
+
<HtmlFormat v-if="tryParseJson(output.content)" :value="tryParseJson(output.content)" :classes="$utils.htmlFormatClasses" />
|
|
446
|
+
<div v-else class="text-gray-500 italic p-2">Invalid JSON content</div>
|
|
447
|
+
</div>
|
|
448
|
+
</div>
|
|
449
|
+
<ViewToolTypes :output="output" class="p-2" />
|
|
450
|
+
</div>
|
|
451
|
+
`,
|
|
452
|
+
props: {
|
|
453
|
+
tool: Object,
|
|
454
|
+
output: Object,
|
|
455
|
+
},
|
|
421
456
|
setup(props) {
|
|
422
457
|
|
|
458
|
+
return {
|
|
459
|
+
tryParseJson,
|
|
460
|
+
hasJsonStructure,
|
|
461
|
+
}
|
|
423
462
|
}
|
|
424
463
|
}
|
|
425
464
|
|
|
@@ -523,36 +562,8 @@ export const ChatBody = {
|
|
|
523
562
|
|
|
524
563
|
<ToolArguments :value="tool.function.arguments" />
|
|
525
564
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
<div class="px-3 py-1.5 flex justify-between items-center border-b border-gray-200 dark:border-gray-800 bg-gray-50/30 dark:bg-gray-800">
|
|
529
|
-
<div class="flex items-center gap-2 ">
|
|
530
|
-
<svg class="size-3.5 text-gray-400" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
|
|
531
|
-
<span class="text-[10px] uppercase tracking-wider text-gray-400 font-medium">Output</span>
|
|
532
|
-
</div>
|
|
533
|
-
<div v-if="hasJsonStructure(getToolOutput(tool.id).content)" class="flex items-center gap-2 text-[10px] uppercase tracking-wider font-medium select-none">
|
|
534
|
-
<span @click="setPrefs({ toolFormat: 'text' })"
|
|
535
|
-
class="cursor-pointer transition-colors"
|
|
536
|
-
:class="prefs.toolFormat !== 'preview' ? 'text-gray-600 dark:text-gray-300' : 'text-gray-400 hover:text-gray-600 dark:hover:text-gray-300'">
|
|
537
|
-
text
|
|
538
|
-
</span>
|
|
539
|
-
<span class="text-gray-300 dark:text-gray-700">|</span>
|
|
540
|
-
<span @click="setPrefs({ toolFormat: 'preview' })"
|
|
541
|
-
class="cursor-pointer transition-colors"
|
|
542
|
-
:class="prefs.toolFormat == 'preview' ? 'text-gray-600 dark:text-gray-300' : 'text-gray-400 hover:text-gray-600 dark:hover:text-gray-300'">
|
|
543
|
-
preview
|
|
544
|
-
</span>
|
|
545
|
-
</div>
|
|
546
|
-
</div>
|
|
547
|
-
<div class="not-prose px-3 py-2">
|
|
548
|
-
<pre v-if="prefs.toolFormat !== 'preview' || !hasJsonStructure(getToolOutput(tool.id).content)" class="tool-output">{{ getToolOutput(tool.id).content }}</pre>
|
|
549
|
-
<div v-else class="text-xs">
|
|
550
|
-
<HtmlFormat v-if="tryParseJson(getToolOutput(tool.id).content)" :value="tryParseJson(getToolOutput(tool.id).content)" :classes="$utils.htmlFormatClasses" />
|
|
551
|
-
<div v-else class="text-gray-500 italic p-2">Invalid JSON content</div>
|
|
552
|
-
</div>
|
|
553
|
-
</div>
|
|
554
|
-
<ViewToolTypes :output="getToolOutput(tool.id)" />
|
|
555
|
-
</div>
|
|
565
|
+
<ToolOutput :tool="tool" :output="getToolOutput(tool.id)" />
|
|
566
|
+
|
|
556
567
|
</div>
|
|
557
568
|
</div>
|
|
558
569
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "llms-py"
|
|
7
|
-
version = "3.0.
|
|
7
|
+
version = "3.0.10"
|
|
8
8
|
description = "A lightweight CLI tool and OpenAI-compatible server for querying multiple Large Language Model (LLM) providers"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "BSD-3-Clause"
|
|
@@ -15,7 +15,7 @@ with open(os.path.join(this_directory, "requirements.txt"), encoding="utf-8") as
|
|
|
15
15
|
|
|
16
16
|
setup(
|
|
17
17
|
name="llms-py",
|
|
18
|
-
version="3.0.
|
|
18
|
+
version="3.0.10",
|
|
19
19
|
author="ServiceStack",
|
|
20
20
|
author_email="team@servicestack.net",
|
|
21
21
|
description="A lightweight CLI tool and OpenAI-compatible server for querying multiple Large Language Model (LLM) providers",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js
RENAMED
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mathtex-script-type.min.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2
RENAMED
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff
RENAMED
|
File without changes
|
{llms_py-3.0.9 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|