llms-py 3.0.8__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.8 → llms_py-3.0.10}/PKG-INFO +1 -1
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/main.py +1 -1
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/ai.mjs +1 -1
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/app.css +12 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/modules/chat/ChatBody.mjs +82 -71
- {llms_py-3.0.8 → llms_py-3.0.10}/llms_py.egg-info/PKG-INFO +1 -1
- {llms_py-3.0.8 → llms_py-3.0.10}/pyproject.toml +1 -1
- {llms_py-3.0.8 → llms_py-3.0.10}/setup.py +1 -1
- {llms_py-3.0.8 → llms_py-3.0.10}/LICENSE +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/MANIFEST.in +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/README.md +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/__main__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/db.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/analytics/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/app/README.md +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/app/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/app/db.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/app/ui/Recents.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/app/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/app/ui/threadStore.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/CALCULATOR.md +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/codemirror.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/codemirror.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/gallery/README.md +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/gallery/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/gallery/db.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/gallery/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/README.md +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/README.md +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/auto-render.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/auto-render.min.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/auto-render.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/copy-tex.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mhchem.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mhchem.min.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/mhchem.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex-swap.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex-swap.min.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.min.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.min.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.min.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/katex.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/anthropic.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/cerebras.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/chutes.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/google.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/nvidia.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/openai.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/openrouter.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/providers/zai.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/system_prompts/README.md +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/system_prompts/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/system_prompts/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/system_prompts/ui/prompts.json +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/tools/__init__.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/tools/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/index.html +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/llms.json +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/providers-extra.json +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/providers.json +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/App.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/ctx.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/fav.svg +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/chart.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/charts.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/color.js +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/highlight.min.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/idb.min.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/marked.min.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/servicestack-client.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/servicestack-vue.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/vue-router.min.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/vue.min.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/lib/vue.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/markdown.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/modules/chat/SettingsDialog.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/modules/chat/index.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/modules/icons.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/modules/layout.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/modules/model-selector.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/tailwind.input.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/typography.css +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms/ui/utils.mjs +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms_py.egg-info/SOURCES.txt +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms_py.egg-info/dependency_links.txt +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms_py.egg-info/entry_points.txt +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms_py.egg-info/not-zip-safe +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms_py.egg-info/requires.txt +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/llms_py.egg-info/top_level.txt +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/requirements.txt +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/setup.cfg +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_async.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_config.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_extensions.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_gemini_upload.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_integration.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_provider_checks.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_provider_config.py +0 -0
- {llms_py-3.0.8 → llms_py-3.0.10}/tests/test_utils.py +0 -0
|
@@ -535,6 +535,9 @@
|
|
|
535
535
|
.mx-2 {
|
|
536
536
|
margin-inline: calc(var(--spacing) * 2);
|
|
537
537
|
}
|
|
538
|
+
.mx-4 {
|
|
539
|
+
margin-inline: calc(var(--spacing) * 4);
|
|
540
|
+
}
|
|
538
541
|
.mx-auto {
|
|
539
542
|
margin-inline: auto;
|
|
540
543
|
}
|
|
@@ -613,6 +616,9 @@
|
|
|
613
616
|
.mr-16 {
|
|
614
617
|
margin-right: calc(var(--spacing) * 16);
|
|
615
618
|
}
|
|
619
|
+
.-mb-4 {
|
|
620
|
+
margin-bottom: calc(var(--spacing) * -4);
|
|
621
|
+
}
|
|
616
622
|
.-mb-px {
|
|
617
623
|
margin-bottom: -1px;
|
|
618
624
|
}
|
|
@@ -965,12 +971,18 @@
|
|
|
965
971
|
.max-w-lg {
|
|
966
972
|
max-width: var(--container-lg);
|
|
967
973
|
}
|
|
974
|
+
.max-w-md {
|
|
975
|
+
max-width: var(--container-md);
|
|
976
|
+
}
|
|
968
977
|
.max-w-none {
|
|
969
978
|
max-width: none;
|
|
970
979
|
}
|
|
971
980
|
.max-w-sm {
|
|
972
981
|
max-width: var(--container-sm);
|
|
973
982
|
}
|
|
983
|
+
.max-w-xl {
|
|
984
|
+
max-width: var(--container-xl);
|
|
985
|
+
}
|
|
974
986
|
.max-w-xs {
|
|
975
987
|
max-width: var(--container-xs);
|
|
976
988
|
}
|
|
@@ -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.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js
RENAMED
|
File without changes
|
{llms_py-3.0.8 → 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.8 → 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.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff
RENAMED
|
File without changes
|
{llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js
RENAMED
|
File without changes
|
{llms_py-3.0.8 → 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.8 → 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.8 → 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.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2
RENAMED
|
File without changes
|
{llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf
RENAMED
|
File without changes
|
{llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff
RENAMED
|
File without changes
|
{llms_py-3.0.8 → 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.8 → 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.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff
RENAMED
|
File without changes
|
{llms_py-3.0.8 → 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.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf
RENAMED
|
File without changes
|
{llms_py-3.0.8 → llms_py-3.0.10}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff
RENAMED
|
File without changes
|
{llms_py-3.0.8 → 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
|