llms-py 3.0.12__tar.gz → 3.0.13__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.
Files changed (197) hide show
  1. {llms_py-3.0.12 → llms_py-3.0.13}/PKG-INFO +1 -1
  2. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/tools/ui/index.mjs +17 -5
  3. {llms_py-3.0.12 → llms_py-3.0.13}/llms/main.py +3 -2
  4. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/ai.mjs +1 -1
  5. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/modules/chat/ChatBody.mjs +2 -2
  6. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/modules/chat/index.mjs +1 -1
  7. {llms_py-3.0.12 → llms_py-3.0.13}/llms_py.egg-info/PKG-INFO +1 -1
  8. {llms_py-3.0.12 → llms_py-3.0.13}/pyproject.toml +1 -1
  9. {llms_py-3.0.12 → llms_py-3.0.13}/setup.py +1 -1
  10. {llms_py-3.0.12 → llms_py-3.0.13}/LICENSE +0 -0
  11. {llms_py-3.0.12 → llms_py-3.0.13}/MANIFEST.in +0 -0
  12. {llms_py-3.0.12 → llms_py-3.0.13}/README.md +0 -0
  13. {llms_py-3.0.12 → llms_py-3.0.13}/llms/__init__.py +0 -0
  14. {llms_py-3.0.12 → llms_py-3.0.13}/llms/__main__.py +0 -0
  15. {llms_py-3.0.12 → llms_py-3.0.13}/llms/db.py +0 -0
  16. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/analytics/ui/index.mjs +0 -0
  17. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/app/README.md +0 -0
  18. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/app/__init__.py +0 -0
  19. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/app/db.py +0 -0
  20. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/app/ui/Recents.mjs +0 -0
  21. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/app/ui/index.mjs +0 -0
  22. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/app/ui/threadStore.mjs +0 -0
  23. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/CALCULATOR.md +0 -0
  24. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/__init__.py +0 -0
  25. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -0
  26. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -0
  27. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -0
  28. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -0
  29. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -0
  30. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -0
  31. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -0
  32. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -0
  33. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -0
  34. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/codemirror.css +0 -0
  35. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/codemirror.js +0 -0
  36. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -0
  37. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
  38. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -0
  39. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -0
  40. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -0
  41. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -0
  42. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -0
  43. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -0
  44. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -0
  45. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/core_tools/ui/index.mjs +0 -0
  46. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/gallery/README.md +0 -0
  47. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/gallery/__init__.py +0 -0
  48. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/gallery/db.py +0 -0
  49. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/gallery/ui/index.mjs +0 -0
  50. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/README.md +0 -0
  51. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/__init__.py +0 -0
  52. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/README.md +0 -0
  53. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/auto-render.js +0 -0
  54. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/auto-render.min.js +0 -0
  55. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/auto-render.mjs +0 -0
  56. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/copy-tex.js +0 -0
  57. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -0
  58. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -0
  59. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -0
  60. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -0
  61. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -0
  62. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/mhchem.js +0 -0
  63. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/mhchem.min.js +0 -0
  64. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/mhchem.mjs +0 -0
  65. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -0
  66. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -0
  67. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -0
  68. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
  69. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
  70. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  71. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  72. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  73. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  74. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  75. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  76. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  77. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  78. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  79. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  80. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  81. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  82. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  83. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
  84. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
  85. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
  86. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  87. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  88. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  89. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
  90. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
  91. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
  92. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
  93. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
  94. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
  95. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  96. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  97. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  98. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
  99. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
  100. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
  101. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  102. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  103. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  104. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  105. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  106. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  107. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  108. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  109. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  110. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
  111. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
  112. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
  113. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
  114. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
  115. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  116. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
  117. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
  118. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  119. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
  120. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
  121. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  122. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
  123. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
  124. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  125. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  126. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  127. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  128. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/index.mjs +0 -0
  129. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex-swap.css +0 -0
  130. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex-swap.min.css +0 -0
  131. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex.css +0 -0
  132. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex.js +0 -0
  133. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex.min.css +0 -0
  134. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex.min.js +0 -0
  135. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex.min.mjs +0 -0
  136. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/katex/ui/katex.mjs +0 -0
  137. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/__init__.py +0 -0
  138. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/anthropic.py +0 -0
  139. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/cerebras.py +0 -0
  140. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/chutes.py +0 -0
  141. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/google.py +0 -0
  142. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/nvidia.py +0 -0
  143. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/openai.py +0 -0
  144. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/openrouter.py +0 -0
  145. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/providers/zai.py +0 -0
  146. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/system_prompts/README.md +0 -0
  147. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/system_prompts/__init__.py +0 -0
  148. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/system_prompts/ui/index.mjs +0 -0
  149. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/system_prompts/ui/prompts.json +0 -0
  150. {llms_py-3.0.12 → llms_py-3.0.13}/llms/extensions/tools/__init__.py +0 -0
  151. {llms_py-3.0.12 → llms_py-3.0.13}/llms/index.html +0 -0
  152. {llms_py-3.0.12 → llms_py-3.0.13}/llms/llms.json +0 -0
  153. {llms_py-3.0.12 → llms_py-3.0.13}/llms/providers-extra.json +0 -0
  154. {llms_py-3.0.12 → llms_py-3.0.13}/llms/providers.json +0 -0
  155. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/App.mjs +0 -0
  156. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/app.css +0 -0
  157. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/ctx.mjs +0 -0
  158. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/fav.svg +0 -0
  159. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/index.mjs +0 -0
  160. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/chart.js +0 -0
  161. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/charts.mjs +0 -0
  162. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/color.js +0 -0
  163. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/highlight.min.mjs +0 -0
  164. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/idb.min.mjs +0 -0
  165. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/marked.min.mjs +0 -0
  166. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/servicestack-client.mjs +0 -0
  167. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/servicestack-vue.mjs +0 -0
  168. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/vue-router.min.mjs +0 -0
  169. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/vue.min.mjs +0 -0
  170. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/lib/vue.mjs +0 -0
  171. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/markdown.mjs +0 -0
  172. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/modules/chat/SettingsDialog.mjs +0 -0
  173. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/modules/icons.mjs +0 -0
  174. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/modules/layout.mjs +0 -0
  175. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/modules/model-selector.mjs +0 -0
  176. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/tailwind.input.css +0 -0
  177. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/typography.css +0 -0
  178. {llms_py-3.0.12 → llms_py-3.0.13}/llms/ui/utils.mjs +0 -0
  179. {llms_py-3.0.12 → llms_py-3.0.13}/llms_py.egg-info/SOURCES.txt +0 -0
  180. {llms_py-3.0.12 → llms_py-3.0.13}/llms_py.egg-info/dependency_links.txt +0 -0
  181. {llms_py-3.0.12 → llms_py-3.0.13}/llms_py.egg-info/entry_points.txt +0 -0
  182. {llms_py-3.0.12 → llms_py-3.0.13}/llms_py.egg-info/not-zip-safe +0 -0
  183. {llms_py-3.0.12 → llms_py-3.0.13}/llms_py.egg-info/requires.txt +0 -0
  184. {llms_py-3.0.12 → llms_py-3.0.13}/llms_py.egg-info/top_level.txt +0 -0
  185. {llms_py-3.0.12 → llms_py-3.0.13}/requirements.txt +0 -0
  186. {llms_py-3.0.12 → llms_py-3.0.13}/setup.cfg +0 -0
  187. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_async.py +0 -0
  188. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_config.py +0 -0
  189. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_core_tools_direct.py +0 -0
  190. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_extensions.py +0 -0
  191. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_gemini_tool_calling.py +0 -0
  192. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_gemini_upload.py +0 -0
  193. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_integration.py +0 -0
  194. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_interleaved_thinking.py +0 -0
  195. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_provider_checks.py +0 -0
  196. {llms_py-3.0.12 → llms_py-3.0.13}/tests/test_provider_config.py +0 -0
  197. {llms_py-3.0.12 → llms_py-3.0.13}/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.12
3
+ Version: 3.0.13
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,7 +18,7 @@ const ToolResult = {
18
18
  preview
19
19
  </span>
20
20
  </div>
21
- <div class="not-prose px-3 py-2">
21
+ <div class="not-prose py-2">
22
22
  <pre v-if="ext.prefs.toolFormat !== 'preview'" class="tool-output">{{ origResult }}</pre>
23
23
  <div v-else>
24
24
  <ViewTypes v-if="Array.isArray(result)" :results="result" />
@@ -191,7 +191,7 @@ const Tools = {
191
191
  </div>
192
192
 
193
193
  <div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
194
- <div v-for="tool in filteredTools" :key="tool.function.name"
194
+ <div v-for="tool in filteredTools" :key="tool.function.name" :id="'tool-' + tool.function.name"
195
195
  class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden flex flex-col">
196
196
 
197
197
  <div class="p-4 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 flex justify-between items-center">
@@ -262,7 +262,6 @@ const Tools = {
262
262
  const ctx = inject('ctx')
263
263
 
264
264
  // Execution State
265
- const executingTool = ref(null)
266
265
  const execForm = ref({})
267
266
  const execResult = ref(null)
268
267
  const execError = ref(null)
@@ -270,6 +269,12 @@ const Tools = {
270
269
  const refForm = ref()
271
270
  const refTop = ref()
272
271
 
272
+ const executingTool = computed(() => {
273
+ const tool = ext.prefs.selectedTool
274
+ if (!tool) return null
275
+ return ctx.state.tool.definitions.find(x => x.function.name === tool)
276
+ })
277
+
273
278
  // UI State
274
279
  const expandedDescriptions = ref({})
275
280
 
@@ -284,7 +289,7 @@ const Tools = {
284
289
  })
285
290
 
286
291
  function startExec(tool) {
287
- executingTool.value = tool
292
+ ext.setPrefs({ selectedTool: tool.function.name })
288
293
  execForm.value = {}
289
294
  execResult.value = null
290
295
  execError.value = null
@@ -309,7 +314,7 @@ const Tools = {
309
314
  }
310
315
 
311
316
  function closeExec() {
312
- executingTool.value = null
317
+ ext.setPrefs({ selectedTool: null })
313
318
  execForm.value = {}
314
319
  execResult.value = null
315
320
  execError.value = null
@@ -588,9 +593,16 @@ function useTools(ctx) {
588
593
  Object.assign(toolPageHeaders, components)
589
594
  }
590
595
 
596
+ function selectTool({ group, tool }) {
597
+ ext.setPrefs({ selectedGroup: group, selectedTool: tool })
598
+ }
599
+
591
600
  return {
592
601
  toolPageHeaders,
593
602
  setToolPageHeaders,
603
+ selectTool,
604
+ get selectedGroup() { return ext.prefs.selectedGroup },
605
+ get selectedTool() { return ext.prefs.selectedTool },
594
606
  }
595
607
  }
596
608
 
@@ -43,7 +43,7 @@ try:
43
43
  except ImportError:
44
44
  HAS_PIL = False
45
45
 
46
- VERSION = "3.0.12"
46
+ VERSION = "3.0.13"
47
47
  _ROOT = None
48
48
  DEBUG = os.getenv("DEBUG") == "1"
49
49
  MOCK = os.getenv("MOCK") == "1"
@@ -1513,6 +1513,7 @@ def g_tool_result(result, function_name: Optional[str] = None, function_args: Op
1513
1513
  content = []
1514
1514
  resources = []
1515
1515
  args = function_args or {}
1516
+ _dbg(f"{function_name} tool result type: {type(result)}")
1516
1517
  if isinstance(result, dict):
1517
1518
  text, res = tool_result_part(result, function_name, args)
1518
1519
  if text:
@@ -1555,7 +1556,7 @@ def group_resources(resources: list):
1555
1556
  {"images": [{"type": "image_url", "image_url": {"url": "/image.jpg"}}] }
1556
1557
  """
1557
1558
  grouped = {}
1558
- for res in resources:
1559
+ for res in resources or []:
1559
1560
  type = res.get("type")
1560
1561
  if not type:
1561
1562
  continue
@@ -6,7 +6,7 @@ const headers = { 'Accept': 'application/json' }
6
6
  const prefsKey = 'llms.prefs'
7
7
 
8
8
  export const o = {
9
- version: '3.0.12',
9
+ version: '3.0.13',
10
10
  base,
11
11
  prefsKey,
12
12
  welcome: 'Welcome to llms.py',
@@ -56,7 +56,7 @@ function embedHtml(html) {
56
56
  export const TypeText = {
57
57
  template: `
58
58
  <div v-if="text.type === 'text'">
59
- <div v-html="html"></div>
59
+ <div v-html="html?.trim()" class="whitespace-pre-wrap"></div>
60
60
  </div>
61
61
  `,
62
62
  props: {
@@ -72,7 +72,7 @@ export const TypeText = {
72
72
  return ctx.fmt.markdown(props.text.text)
73
73
  } catch (e) {
74
74
  console.error('TypeText: markdown', e)
75
- return `<div class="whitespace-pre-wrap">${props.text.text}</div>`
75
+ return `<div>${props.text.text}</div>`
76
76
  }
77
77
  })
78
78
  return { html }
@@ -950,7 +950,7 @@ export default {
950
950
  ctx.setLeftIcons({
951
951
  chat: {
952
952
  component: {
953
- template: `<svg @click="$ctx.togglePath('/')" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="currentColor" d="M8 2.19c3.13 0 5.68 2.25 5.68 5s-2.55 5-5.68 5a5.7 5.7 0 0 1-1.89-.29l-.75-.26l-.56.56a14 14 0 0 1-2 1.55a.13.13 0 0 1-.07 0v-.06a6.58 6.58 0 0 0 .15-4.29a5.25 5.25 0 0 1-.55-2.16c0-2.77 2.55-5 5.68-5M8 .94c-3.83 0-6.93 2.81-6.93 6.27a6.4 6.4 0 0 0 .64 2.64a5.53 5.53 0 0 1-.18 3.48a1.32 1.32 0 0 0 2 1.5a15 15 0 0 0 2.16-1.71a6.8 6.8 0 0 0 2.31.36c3.83 0 6.93-2.81 6.93-6.27S11.83.94 8 .94"/><ellipse cx="5.2" cy="7.7" fill="currentColor" rx=".8" ry=".75"/><ellipse cx="8" cy="7.7" fill="currentColor" rx=".8" ry=".75"/><ellipse cx="10.8" cy="7.7" fill="currentColor" rx=".8" ry=".75"/></svg>`,
953
+ template: `<svg @click="$ctx.togglePath($ctx.layout.path?.startsWith('/c/') ? $ctx.layout.path : '/')" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="currentColor" d="M8 2.19c3.13 0 5.68 2.25 5.68 5s-2.55 5-5.68 5a5.7 5.7 0 0 1-1.89-.29l-.75-.26l-.56.56a14 14 0 0 1-2 1.55a.13.13 0 0 1-.07 0v-.06a6.58 6.58 0 0 0 .15-4.29a5.25 5.25 0 0 1-.55-2.16c0-2.77 2.55-5 5.68-5M8 .94c-3.83 0-6.93 2.81-6.93 6.27a6.4 6.4 0 0 0 .64 2.64a5.53 5.53 0 0 1-.18 3.48a1.32 1.32 0 0 0 2 1.5a15 15 0 0 0 2.16-1.71a6.8 6.8 0 0 0 2.31.36c3.83 0 6.93-2.81 6.93-6.27S11.83.94 8 .94"/><ellipse cx="5.2" cy="7.7" fill="currentColor" rx=".8" ry=".75"/><ellipse cx="8" cy="7.7" fill="currentColor" rx=".8" ry=".75"/><ellipse cx="10.8" cy="7.7" fill="currentColor" rx=".8" ry=".75"/></svg>`,
954
954
  },
955
955
  isActive({ path }) {
956
956
  return path === '/' || path.startsWith('/c/')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 3.0.12
3
+ Version: 3.0.13
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.12"
7
+ version = "3.0.13"
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.12",
18
+ version="3.0.13",
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