llms-py 3.0.17__tar.gz → 3.0.19__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.17/llms_py.egg-info → llms_py-3.0.19}/PKG-INFO +1 -1
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/openai.py +5 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/ui/index.mjs +22 -8
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/tools/ui/index.mjs +91 -60
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/main.py +2 -2
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/ai.mjs +1 -1
- {llms_py-3.0.17 → llms_py-3.0.19/llms_py.egg-info}/PKG-INFO +1 -1
- {llms_py-3.0.17 → llms_py-3.0.19}/pyproject.toml +1 -1
- {llms_py-3.0.17 → llms_py-3.0.19}/setup.py +1 -1
- {llms_py-3.0.17 → llms_py-3.0.19}/LICENSE +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/MANIFEST.in +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/README.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/__main__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/db.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/analytics/ui/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/app/README.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/app/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/app/db.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/app/ui/Recents.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/app/ui/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/app/ui/threadStore.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/README.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/base.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/bash.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/computer.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/edit.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/filesystem.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/platform.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/computer/run.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/CALCULATOR.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/codemirror.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/codemirror.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/gallery/README.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/gallery/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/gallery/db.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/gallery/ui/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/README.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/README.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/auto-render.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/auto-render.min.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/auto-render.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/copy-tex.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/mhchem.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/mhchem.min.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/mhchem.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex-swap.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex-swap.min.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex.min.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex.min.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex.min.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/katex.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/anthropic.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/cerebras.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/chutes.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/google.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/nvidia.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/openrouter.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/providers/zai.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/LICENSE +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/errors.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/models.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/parser.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/ui/skills/create-plan/SKILL.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/skills/validator.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/system_prompts/README.md +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/system_prompts/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/system_prompts/ui/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/system_prompts/ui/prompts.json +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/tools/__init__.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/index.html +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/llms.json +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/providers-extra.json +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/providers.json +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/App.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/app.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/ctx.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/fav.svg +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/chart.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/charts.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/color.js +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/highlight.min.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/idb.min.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/marked.min.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/servicestack-client.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/servicestack-vue.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/vue-router.min.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/vue.min.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/lib/vue.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/markdown.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/modules/chat/ChatBody.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/modules/chat/SettingsDialog.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/modules/chat/index.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/modules/icons.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/modules/layout.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/modules/model-selector.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/tailwind.input.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/typography.css +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms/ui/utils.mjs +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms_py.egg-info/SOURCES.txt +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms_py.egg-info/dependency_links.txt +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms_py.egg-info/entry_points.txt +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms_py.egg-info/not-zip-safe +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms_py.egg-info/requires.txt +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/llms_py.egg-info/top_level.txt +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/requirements.txt +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/setup.cfg +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_async.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_config.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_core_tools_direct.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_extensions.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_gemini_tool_calling.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_gemini_upload.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_integration.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_interleaved_thinking.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_provider_checks.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_provider_config.py +0 -0
- {llms_py-3.0.17 → llms_py-3.0.19}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: llms-py
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.19
|
|
4
4
|
Summary: A lightweight CLI tool and OpenAI-compatible server for querying multiple Large Language Model (LLM) providers
|
|
5
5
|
Home-page: https://github.com/ServiceStack/llms
|
|
6
6
|
Author: ServiceStack
|
|
@@ -18,6 +18,11 @@ def install_openai(ctx):
|
|
|
18
18
|
super().__init__(**kwargs)
|
|
19
19
|
self.modalities["image"] = OpenAiGenerator(**kwargs)
|
|
20
20
|
|
|
21
|
+
async def process_chat(self, chat, provider_id=None):
|
|
22
|
+
ret = await super().process_chat(chat, provider_id)
|
|
23
|
+
chat.pop("modalities", None) # openai chat completion doesn't support modalities
|
|
24
|
+
return ret
|
|
25
|
+
|
|
21
26
|
# https://platform.openai.com/docs/api-reference/images
|
|
22
27
|
class OpenAiGenerator(GeneratorBase):
|
|
23
28
|
sdk = "openai/image"
|
|
@@ -11,14 +11,21 @@ const SkillSelector = {
|
|
|
11
11
|
<div class="flex items-center justify-between mb-4">
|
|
12
12
|
<span class="text-xs font-bold uppercase text-gray-500 tracking-wider">Include Skills</span>
|
|
13
13
|
<div class="flex items-center gap-2">
|
|
14
|
-
<button
|
|
14
|
+
<button type="button" v-if="!$ctx.tools?.isToolEnabled('skill')"
|
|
15
|
+
class="px-3 py-1 rounded-md text-xs font-medium border transition-colors select-none cursor-pointer bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-400 border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600"
|
|
16
|
+
@click="$ctx.tools?.enableTool('skill')"
|
|
17
|
+
title="'skill' tool needs to be enabled to use Skills"
|
|
18
|
+
>
|
|
19
|
+
<span class="text-xs font-semibold text-red-700 dark:text-red-300">⚠️ Enable skill tool</span>
|
|
20
|
+
</button>
|
|
21
|
+
<button type="button" @click="$ctx.setPrefs({ onlySkills: null })"
|
|
15
22
|
class="px-3 py-1 rounded-md text-xs font-medium border transition-colors select-none"
|
|
16
23
|
:class="$prefs.onlySkills == null
|
|
17
24
|
? 'bg-green-100 dark:bg-green-900/40 text-green-800 dark:text-green-300 border-green-300 dark:border-green-800'
|
|
18
25
|
: 'cursor-pointer bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-400 border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600'">
|
|
19
26
|
All Skills
|
|
20
27
|
</button>
|
|
21
|
-
<button @click="$ctx.setPrefs({ onlySkills:[] })"
|
|
28
|
+
<button type="button" @click="$ctx.setPrefs({ onlySkills:[] })"
|
|
22
29
|
class="px-3 py-1 rounded-md text-xs font-medium border transition-colors select-none"
|
|
23
30
|
:class="$prefs.onlySkills?.length === 0
|
|
24
31
|
? 'bg-fuchsia-100 dark:bg-fuchsia-900/40 text-fuchsia-800 dark:text-fuchsia-300 border-fuchsia-200 dark:border-fuchsia-800'
|
|
@@ -264,24 +271,31 @@ export default {
|
|
|
264
271
|
component: {
|
|
265
272
|
template: svg([
|
|
266
273
|
`@click="$ctx.toggleTop('SkillSelector')"`,
|
|
267
|
-
`:class="$prefs.onlySkills == null ? 'text-green-600 dark:text-green-300' : $prefs.onlySkills.length ? 'text-blue-600! dark:text-blue-300!' : ''"`
|
|
274
|
+
`:class="!$tools?.isToolEnabled('skill') ? '' : $prefs.onlySkills == null ? 'text-green-600 dark:text-green-300' : $prefs.onlySkills.length ? 'text-blue-600! dark:text-blue-300!' : ''"`
|
|
268
275
|
].join(' ')),
|
|
269
276
|
},
|
|
270
277
|
isActive({ top }) {
|
|
271
278
|
return top === 'SkillSelector'
|
|
272
279
|
},
|
|
273
280
|
get title() {
|
|
274
|
-
return ctx.
|
|
275
|
-
? `
|
|
276
|
-
: ctx.prefs.onlySkills
|
|
277
|
-
?
|
|
278
|
-
:
|
|
281
|
+
return !ctx.tools?.isToolEnabled('skill')
|
|
282
|
+
? `skill tool not enabled`
|
|
283
|
+
: ctx.prefs.onlySkills == null
|
|
284
|
+
? `All Skills Included`
|
|
285
|
+
: ctx.prefs.onlySkills.length
|
|
286
|
+
? `${ctx.prefs.onlySkills.length} ${ctx.utils.pluralize('Skill', ctx.prefs.onlySkills.length)} Included`
|
|
287
|
+
: 'No Skills Included'
|
|
279
288
|
}
|
|
280
289
|
}
|
|
281
290
|
})
|
|
282
291
|
|
|
283
292
|
ctx.chatRequestFilters.push(({ request, thread, context }) => {
|
|
284
293
|
|
|
294
|
+
if (!ctx.tools?.isToolEnabled('skill')) {
|
|
295
|
+
console.log(`skills.chatRequestFilters: 'skill' tool is not enabled`)
|
|
296
|
+
return
|
|
297
|
+
}
|
|
298
|
+
|
|
285
299
|
const prefs = ctx.prefs
|
|
286
300
|
if (prefs.onlySkills != null) {
|
|
287
301
|
if (Array.isArray(prefs.onlySkills)) {
|
|
@@ -2,6 +2,86 @@ import { inject, computed, ref, onMounted } from "vue"
|
|
|
2
2
|
|
|
3
3
|
let ext
|
|
4
4
|
|
|
5
|
+
function useTools(ctx) {
|
|
6
|
+
|
|
7
|
+
const availableTools = computed(() => ctx.state.tool.definitions.filter(x => x.function))
|
|
8
|
+
const toolPageHeaders = {}
|
|
9
|
+
|
|
10
|
+
function setToolPageHeaders(components) {
|
|
11
|
+
Object.assign(toolPageHeaders, components)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function selectTool({ group, tool }) {
|
|
15
|
+
ext.setPrefs({ selectedGroup: group, selectedTool: tool })
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function getToolDefinition(name) {
|
|
19
|
+
return ctx.state.tool.definitions.find(d => d.function?.name === name)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function isToolEnabled(name) {
|
|
23
|
+
const toolDef = getToolDefinition(name)
|
|
24
|
+
if (!toolDef) return false
|
|
25
|
+
const onlyTools = ctx.prefs.onlyTools
|
|
26
|
+
if (onlyTools == null) return true
|
|
27
|
+
return Array.isArray(onlyTools) && onlyTools.includes(name)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function enableTool(name) {
|
|
31
|
+
let onlyTools = ctx.prefs.onlyTools
|
|
32
|
+
if (onlyTools == null) return // All tools are enabled
|
|
33
|
+
|
|
34
|
+
if (!Array.isArray(onlyTools)) {
|
|
35
|
+
onlyTools = [onlyTools]
|
|
36
|
+
}
|
|
37
|
+
else if (!onlyTools.includes(name)) {
|
|
38
|
+
onlyTools.push(name)
|
|
39
|
+
} else {
|
|
40
|
+
return // Already enabled
|
|
41
|
+
}
|
|
42
|
+
ctx.setPrefs({ onlyTools })
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function disableTool(name) {
|
|
46
|
+
let onlyTools = ctx.prefs.onlyTools
|
|
47
|
+
if (onlyTools == null) {
|
|
48
|
+
// If currently 'All', clicking a tool means we enter custom mode with all OTHER tools selected
|
|
49
|
+
onlyTools = availableTools.value.map(t => t.function.name).filter(t => t !== name)
|
|
50
|
+
} else if (!Array.isArray(onlyTools)) {
|
|
51
|
+
onlyTools = []
|
|
52
|
+
} else {
|
|
53
|
+
onlyTools = onlyTools.filter(t => t !== name)
|
|
54
|
+
}
|
|
55
|
+
ctx.setPrefs({ onlyTools })
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function toggleTool(name, enable = null) {
|
|
59
|
+
if (enable == null) {
|
|
60
|
+
enable = !isToolEnabled(name)
|
|
61
|
+
}
|
|
62
|
+
if (enable) {
|
|
63
|
+
enableTool(name)
|
|
64
|
+
} else {
|
|
65
|
+
disableTool(name)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
availableTools,
|
|
71
|
+
toolPageHeaders,
|
|
72
|
+
setToolPageHeaders,
|
|
73
|
+
selectTool,
|
|
74
|
+
getToolDefinition,
|
|
75
|
+
isToolEnabled,
|
|
76
|
+
enableTool,
|
|
77
|
+
disableTool,
|
|
78
|
+
toggleTool,
|
|
79
|
+
get selectedGroup() { return ext.prefs.selectedGroup },
|
|
80
|
+
get selectedTool() { return ext.prefs.selectedTool },
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
5
85
|
const ToolResult = {
|
|
6
86
|
template: `
|
|
7
87
|
<div>
|
|
@@ -487,14 +567,14 @@ const ToolSelector = {
|
|
|
487
567
|
<div class="flex items-center gap-2">
|
|
488
568
|
<button @click="$ctx.setPrefs({ onlyTools: null })"
|
|
489
569
|
class="px-3 py-1 rounded-md text-xs font-medium border transition-colors select-none"
|
|
490
|
-
:class="
|
|
570
|
+
:class="prefs.onlyTools == null
|
|
491
571
|
? 'bg-green-100 dark:bg-green-900/40 text-green-800 dark:text-green-300 border-green-300 dark:border-green-800'
|
|
492
572
|
: 'cursor-pointer bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-400 border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600'">
|
|
493
573
|
All Tools
|
|
494
574
|
</button>
|
|
495
575
|
<button @click="$ctx.setPrefs({ onlyTools:[] })"
|
|
496
576
|
class="px-3 py-1 rounded-md text-xs font-medium border transition-colors select-none"
|
|
497
|
-
:class="
|
|
577
|
+
:class="prefs.onlyTools?.length === 0
|
|
498
578
|
? 'bg-fuchsia-100 dark:bg-fuchsia-900/40 text-fuchsia-800 dark:text-fuchsia-300 border-fuchsia-200 dark:border-fuchsia-800'
|
|
499
579
|
: 'cursor-pointer bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-400 border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600'">
|
|
500
580
|
No Tools
|
|
@@ -547,10 +627,10 @@ const ToolSelector = {
|
|
|
547
627
|
<div v-show="!isCollapsed(group.name)" class="p-3 bg-white dark:bg-gray-900 border-t border-gray-100 dark:border-gray-800">
|
|
548
628
|
<div class="flex flex-wrap gap-2">
|
|
549
629
|
<button v-for="tool in group.tools" :key="tool.function.name" type="button"
|
|
550
|
-
@click="toggleTool(tool.function.name)"
|
|
630
|
+
@click="$tools.toggleTool(tool.function.name)"
|
|
551
631
|
:title="tool.function.description"
|
|
552
632
|
class="px-2.5 py-1 rounded-full text-xs font-medium border transition-colors select-none text-left truncate max-w-[200px]"
|
|
553
|
-
:class="
|
|
633
|
+
:class="$tools.isToolEnabled(tool.function.name)
|
|
554
634
|
? 'bg-blue-100 dark:bg-blue-900/40 text-blue-800 dark:text-blue-300 border-blue-200 dark:border-blue-800'
|
|
555
635
|
: 'bg-gray-50 dark:bg-gray-800 text-gray-600 dark:text-gray-400 border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600'">
|
|
556
636
|
{{ tool.function.name }}
|
|
@@ -565,10 +645,10 @@ const ToolSelector = {
|
|
|
565
645
|
const ctx = inject('ctx')
|
|
566
646
|
const collapsedState = ref({})
|
|
567
647
|
|
|
568
|
-
const
|
|
648
|
+
const prefs = computed(() => ctx.prefs)
|
|
569
649
|
|
|
570
650
|
const toolGroups = computed(() => {
|
|
571
|
-
const defs = availableTools.value
|
|
651
|
+
const defs = ctx.tools.availableTools.value
|
|
572
652
|
const groups = ctx.state.tool.groups || {}
|
|
573
653
|
|
|
574
654
|
const definedGroups = []
|
|
@@ -591,33 +671,6 @@ const ToolSelector = {
|
|
|
591
671
|
return definedGroups
|
|
592
672
|
})
|
|
593
673
|
|
|
594
|
-
function isToolActive(name) {
|
|
595
|
-
const only = ctx.prefs.onlyTools
|
|
596
|
-
if (only == null) return true
|
|
597
|
-
if (Array.isArray(only)) {
|
|
598
|
-
return only.includes(name)
|
|
599
|
-
}
|
|
600
|
-
return false
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
function toggleTool(name) {
|
|
604
|
-
let onlyTools = ctx.prefs.onlyTools
|
|
605
|
-
|
|
606
|
-
// If currently 'All', clicking a tool means we enter custom mode with all OTHER tools selected (deselecting clicked)
|
|
607
|
-
if (onlyTools == null) {
|
|
608
|
-
onlyTools = availableTools.value.map(t => t.function.name).filter(t => t !== name)
|
|
609
|
-
} else {
|
|
610
|
-
// Currently Custom or None
|
|
611
|
-
if (onlyTools.includes(name)) {
|
|
612
|
-
onlyTools = onlyTools.filter(t => t !== name)
|
|
613
|
-
} else {
|
|
614
|
-
onlyTools = [...onlyTools, name]
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
ctx.setPrefs({ onlyTools })
|
|
619
|
-
}
|
|
620
|
-
|
|
621
674
|
function toggleCollapse(groupName) {
|
|
622
675
|
const key = groupName || '_other_'
|
|
623
676
|
collapsedState.value[key] = !collapsedState.value[key]
|
|
@@ -630,19 +683,19 @@ const ToolSelector = {
|
|
|
630
683
|
|
|
631
684
|
function setGroupTools(group, enable) {
|
|
632
685
|
const groupToolNames = group.tools.map(t => t.function.name)
|
|
633
|
-
let onlyTools =
|
|
686
|
+
let onlyTools = prefs.value.onlyTools
|
|
634
687
|
|
|
635
688
|
if (enable) {
|
|
636
689
|
if (onlyTools == null) return
|
|
637
690
|
const newSet = new Set(onlyTools)
|
|
638
691
|
groupToolNames.forEach(n => newSet.add(n))
|
|
639
692
|
onlyTools = Array.from(newSet)
|
|
640
|
-
if (onlyTools.length === availableTools.value.length) {
|
|
693
|
+
if (onlyTools.length === ctx.tools.availableTools.value.length) {
|
|
641
694
|
onlyTools = null
|
|
642
695
|
}
|
|
643
696
|
} else {
|
|
644
697
|
if (onlyTools == null) {
|
|
645
|
-
onlyTools = availableTools.value
|
|
698
|
+
onlyTools = ctx.tools.availableTools.value
|
|
646
699
|
.map(t => t.function.name)
|
|
647
700
|
.filter(n => !groupToolNames.includes(n))
|
|
648
701
|
} else {
|
|
@@ -654,16 +707,14 @@ const ToolSelector = {
|
|
|
654
707
|
}
|
|
655
708
|
|
|
656
709
|
function getActiveCount(group) {
|
|
657
|
-
const onlyTools =
|
|
710
|
+
const onlyTools = prefs.value.onlyTools
|
|
658
711
|
if (onlyTools == null) return group.tools.length
|
|
659
712
|
return group.tools.filter(t => onlyTools.includes(t.function.name)).length
|
|
660
713
|
}
|
|
661
714
|
|
|
662
715
|
return {
|
|
663
|
-
|
|
716
|
+
prefs,
|
|
664
717
|
toolGroups,
|
|
665
|
-
isToolActive,
|
|
666
|
-
toggleTool,
|
|
667
718
|
toggleCollapse,
|
|
668
719
|
isCollapsed,
|
|
669
720
|
setGroupTools,
|
|
@@ -672,26 +723,6 @@ const ToolSelector = {
|
|
|
672
723
|
}
|
|
673
724
|
}
|
|
674
725
|
|
|
675
|
-
function useTools(ctx) {
|
|
676
|
-
const toolPageHeaders = {}
|
|
677
|
-
|
|
678
|
-
function setToolPageHeaders(components) {
|
|
679
|
-
Object.assign(toolPageHeaders, components)
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
function selectTool({ group, tool }) {
|
|
683
|
-
ext.setPrefs({ selectedGroup: group, selectedTool: tool })
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
return {
|
|
687
|
-
toolPageHeaders,
|
|
688
|
-
setToolPageHeaders,
|
|
689
|
-
selectTool,
|
|
690
|
-
get selectedGroup() { return ext.prefs.selectedGroup },
|
|
691
|
-
get selectedTool() { return ext.prefs.selectedTool },
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
|
|
695
726
|
export default {
|
|
696
727
|
order: 10 - 100,
|
|
697
728
|
|
|
@@ -57,7 +57,7 @@ try:
|
|
|
57
57
|
except ImportError:
|
|
58
58
|
HAS_PIL = False
|
|
59
59
|
|
|
60
|
-
VERSION = "3.0.
|
|
60
|
+
VERSION = "3.0.19"
|
|
61
61
|
_ROOT = None
|
|
62
62
|
DEBUG = os.getenv("DEBUG") == "1"
|
|
63
63
|
MOCK = os.getenv("MOCK") == "1"
|
|
@@ -1305,7 +1305,7 @@ class GroqProvider(OpenAiCompatible):
|
|
|
1305
1305
|
super().__init__(**kwargs)
|
|
1306
1306
|
|
|
1307
1307
|
async def process_chat(self, chat, provider_id=None):
|
|
1308
|
-
ret = await process_chat(chat, provider_id)
|
|
1308
|
+
ret = await super().process_chat(chat, provider_id)
|
|
1309
1309
|
chat.pop("modalities", None) # groq doesn't support modalities
|
|
1310
1310
|
messages = chat.get("messages", []).copy()
|
|
1311
1311
|
for message in messages:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: llms-py
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.19
|
|
4
4
|
Summary: A lightweight CLI tool and OpenAI-compatible server for querying multiple Large Language Model (LLM) providers
|
|
5
5
|
Home-page: https://github.com/ServiceStack/llms
|
|
6
6
|
Author: ServiceStack
|
|
@@ -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.19"
|
|
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.19",
|
|
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
|
|
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.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/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.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff
RENAMED
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js
RENAMED
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/core_tools/ui/codemirror/theme/dracula.css
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
|
{llms_py-3.0.17 → llms_py-3.0.19}/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
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/contrib/render-a11y-string.min.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff
RENAMED
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2
RENAMED
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf
RENAMED
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff
RENAMED
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/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
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.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
|
{llms_py-3.0.17 → llms_py-3.0.19}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2
RENAMED
|
File without changes
|
|
File without changes
|