llms-py 3.0.4__tar.gz → 3.0.5__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 (193) hide show
  1. {llms_py-3.0.4/llms_py.egg-info → llms_py-3.0.5}/PKG-INFO +1 -1
  2. {llms_py-3.0.4 → llms_py-3.0.5}/llms/db.py +1 -1
  3. {llms_py-3.0.4 → llms_py-3.0.5}/llms/main.py +1 -1
  4. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/ai.mjs +1 -1
  5. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/modules/chat/index.mjs +58 -0
  6. {llms_py-3.0.4 → llms_py-3.0.5/llms_py.egg-info}/PKG-INFO +1 -1
  7. {llms_py-3.0.4 → llms_py-3.0.5}/pyproject.toml +1 -1
  8. {llms_py-3.0.4 → llms_py-3.0.5}/setup.py +1 -1
  9. {llms_py-3.0.4 → llms_py-3.0.5}/LICENSE +0 -0
  10. {llms_py-3.0.4 → llms_py-3.0.5}/MANIFEST.in +0 -0
  11. {llms_py-3.0.4 → llms_py-3.0.5}/README.md +0 -0
  12. {llms_py-3.0.4 → llms_py-3.0.5}/llms/__init__.py +0 -0
  13. {llms_py-3.0.4 → llms_py-3.0.5}/llms/__main__.py +0 -0
  14. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/analytics/ui/index.mjs +0 -0
  15. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/app/README.md +0 -0
  16. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/app/__init__.py +0 -0
  17. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/app/db.py +0 -0
  18. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/app/ui/Recents.mjs +0 -0
  19. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/app/ui/index.mjs +0 -0
  20. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/app/ui/threadStore.mjs +0 -0
  21. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/CALCULATOR.md +0 -0
  22. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/__init__.py +0 -0
  23. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -0
  24. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -0
  25. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -0
  26. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -0
  27. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -0
  28. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -0
  29. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -0
  30. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -0
  31. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -0
  32. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/codemirror.css +0 -0
  33. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/codemirror.js +0 -0
  34. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -0
  35. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
  36. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -0
  37. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -0
  38. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -0
  39. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -0
  40. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -0
  41. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -0
  42. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -0
  43. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/core_tools/ui/index.mjs +0 -0
  44. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/gallery/README.md +0 -0
  45. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/gallery/__init__.py +0 -0
  46. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/gallery/db.py +0 -0
  47. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/gallery/ui/index.mjs +0 -0
  48. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/README.md +0 -0
  49. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/__init__.py +0 -0
  50. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/README.md +0 -0
  51. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/auto-render.js +0 -0
  52. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/auto-render.min.js +0 -0
  53. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/auto-render.mjs +0 -0
  54. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/copy-tex.js +0 -0
  55. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -0
  56. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -0
  57. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -0
  58. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -0
  59. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -0
  60. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/mhchem.js +0 -0
  61. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/mhchem.min.js +0 -0
  62. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/mhchem.mjs +0 -0
  63. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -0
  64. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -0
  65. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -0
  66. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
  67. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
  68. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  69. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  70. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  71. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  72. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  73. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  74. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  75. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  76. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  77. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  78. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  79. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  80. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  81. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
  82. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
  83. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
  84. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  85. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  86. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  87. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
  88. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
  89. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
  90. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
  91. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
  92. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
  93. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  94. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  95. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  96. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
  97. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
  98. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
  99. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  100. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  101. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  102. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  103. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  104. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  105. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  106. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  107. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  108. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
  109. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
  110. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
  111. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
  112. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
  113. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  114. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
  115. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
  116. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  117. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
  118. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
  119. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  120. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
  121. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
  122. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  123. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  124. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  125. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  126. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/index.mjs +0 -0
  127. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex-swap.css +0 -0
  128. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex-swap.min.css +0 -0
  129. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex.css +0 -0
  130. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex.js +0 -0
  131. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex.min.css +0 -0
  132. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex.min.js +0 -0
  133. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex.min.mjs +0 -0
  134. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/katex/ui/katex.mjs +0 -0
  135. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/__init__.py +0 -0
  136. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/anthropic.py +0 -0
  137. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/cerebras.py +0 -0
  138. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/chutes.py +0 -0
  139. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/google.py +0 -0
  140. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/nvidia.py +0 -0
  141. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/openai.py +0 -0
  142. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/providers/openrouter.py +0 -0
  143. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/system_prompts/README.md +0 -0
  144. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/system_prompts/__init__.py +0 -0
  145. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/system_prompts/ui/index.mjs +0 -0
  146. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/system_prompts/ui/prompts.json +0 -0
  147. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/tools/__init__.py +0 -0
  148. {llms_py-3.0.4 → llms_py-3.0.5}/llms/extensions/tools/ui/index.mjs +0 -0
  149. {llms_py-3.0.4 → llms_py-3.0.5}/llms/index.html +0 -0
  150. {llms_py-3.0.4 → llms_py-3.0.5}/llms/llms.json +0 -0
  151. {llms_py-3.0.4 → llms_py-3.0.5}/llms/providers-extra.json +0 -0
  152. {llms_py-3.0.4 → llms_py-3.0.5}/llms/providers.json +0 -0
  153. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/App.mjs +0 -0
  154. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/app.css +0 -0
  155. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/ctx.mjs +0 -0
  156. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/fav.svg +0 -0
  157. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/index.mjs +0 -0
  158. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/chart.js +0 -0
  159. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/charts.mjs +0 -0
  160. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/color.js +0 -0
  161. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/highlight.min.mjs +0 -0
  162. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/idb.min.mjs +0 -0
  163. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/marked.min.mjs +0 -0
  164. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/servicestack-client.mjs +0 -0
  165. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/servicestack-vue.mjs +0 -0
  166. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/vue-router.min.mjs +0 -0
  167. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/vue.min.mjs +0 -0
  168. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/lib/vue.mjs +0 -0
  169. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/markdown.mjs +0 -0
  170. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/modules/chat/ChatBody.mjs +0 -0
  171. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/modules/chat/SettingsDialog.mjs +0 -0
  172. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/modules/icons.mjs +0 -0
  173. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/modules/layout.mjs +0 -0
  174. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/modules/model-selector.mjs +0 -0
  175. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/tailwind.input.css +0 -0
  176. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/typography.css +0 -0
  177. {llms_py-3.0.4 → llms_py-3.0.5}/llms/ui/utils.mjs +0 -0
  178. {llms_py-3.0.4 → llms_py-3.0.5}/llms_py.egg-info/SOURCES.txt +0 -0
  179. {llms_py-3.0.4 → llms_py-3.0.5}/llms_py.egg-info/dependency_links.txt +0 -0
  180. {llms_py-3.0.4 → llms_py-3.0.5}/llms_py.egg-info/entry_points.txt +0 -0
  181. {llms_py-3.0.4 → llms_py-3.0.5}/llms_py.egg-info/not-zip-safe +0 -0
  182. {llms_py-3.0.4 → llms_py-3.0.5}/llms_py.egg-info/requires.txt +0 -0
  183. {llms_py-3.0.4 → llms_py-3.0.5}/llms_py.egg-info/top_level.txt +0 -0
  184. {llms_py-3.0.4 → llms_py-3.0.5}/requirements.txt +0 -0
  185. {llms_py-3.0.4 → llms_py-3.0.5}/setup.cfg +0 -0
  186. {llms_py-3.0.4 → llms_py-3.0.5}/tests/test_async.py +0 -0
  187. {llms_py-3.0.4 → llms_py-3.0.5}/tests/test_config.py +0 -0
  188. {llms_py-3.0.4 → llms_py-3.0.5}/tests/test_extensions.py +0 -0
  189. {llms_py-3.0.4 → llms_py-3.0.5}/tests/test_gemini_upload.py +0 -0
  190. {llms_py-3.0.4 → llms_py-3.0.5}/tests/test_integration.py +0 -0
  191. {llms_py-3.0.4 → llms_py-3.0.5}/tests/test_provider_checks.py +0 -0
  192. {llms_py-3.0.4 → llms_py-3.0.5}/tests/test_provider_config.py +0 -0
  193. {llms_py-3.0.4 → llms_py-3.0.5}/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.4
3
+ Version: 3.0.5
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
@@ -5,7 +5,7 @@ import threading
5
5
  from queue import Empty, Queue
6
6
  from threading import Event, Thread
7
7
 
8
- POOL = os.getenv("LLMS_POOL", "1") == "1"
8
+ POOL = os.getenv("LLMS_POOL", "0") == "1"
9
9
 
10
10
 
11
11
  def create_reader_connection(db_path):
@@ -41,7 +41,7 @@ try:
41
41
  except ImportError:
42
42
  HAS_PIL = False
43
43
 
44
- VERSION = "3.0.4"
44
+ VERSION = "3.0.5"
45
45
  _ROOT = None
46
46
  DEBUG = os.getenv("DEBUG") == "1"
47
47
  MOCK = os.getenv("MOCK") == "1"
@@ -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.4',
9
+ version: '3.0.5',
10
10
  base,
11
11
  prefsKey,
12
12
  welcome: 'Welcome to llms.py',
@@ -115,6 +115,7 @@ export function addCopyButtons() {
115
115
 
116
116
  export function useChatPrompt(ctx) {
117
117
  const messageText = ref('')
118
+ const promptHistory = ref([])
118
119
  const attachedFiles = ref([])
119
120
  const hasImage = () => attachedFiles.value.some(f => imageExts.includes(lastRightPart(f.name, '.')))
120
121
  const hasAudio = () => attachedFiles.value.some(f => audioExts.includes(lastRightPart(f.name, '.')))
@@ -363,6 +364,7 @@ export function useChatPrompt(ctx) {
363
364
  createContent,
364
365
  createRequest,
365
366
  applySettings,
367
+ promptHistory,
366
368
  messageText,
367
369
  attachedFiles,
368
370
  editingMessage,
@@ -420,6 +422,7 @@ const ChatPrompt = {
420
422
  <textarea
421
423
  ref="refMessage"
422
424
  v-model="messageText"
425
+ @keydown="onKeyDown"
423
426
  @keydown.enter.exact.prevent="sendMessage"
424
427
  @keydown.enter.shift.exact="addNewLine"
425
428
  @paste="onPaste"
@@ -491,6 +494,7 @@ const ChatPrompt = {
491
494
  const config = ctx.state.config
492
495
  const {
493
496
  messageText,
497
+ promptHistory,
494
498
  hasImage,
495
499
  hasAudio,
496
500
  hasFile,
@@ -500,6 +504,8 @@ const ChatPrompt = {
500
504
  const fileInput = ref(null)
501
505
  const refMessage = ref(null)
502
506
  const showSettings = ref(false)
507
+ const historyIndex = ref(-1)
508
+ const isNavigatingHistory = ref(false)
503
509
 
504
510
  // File attachments (+) handlers
505
511
  const triggerFilePicker = () => {
@@ -639,6 +645,14 @@ const ChatPrompt = {
639
645
  // 1. Construct Structured Content (Text + Attachments)
640
646
  let text = messageText.value.trim()
641
647
 
648
+ if (text) {
649
+ const idx = promptHistory.value.indexOf(text)
650
+ if (idx !== -1) {
651
+ promptHistory.value.splice(idx, 1)
652
+ }
653
+ promptHistory.value.push(text)
654
+ }
655
+
642
656
  messageText.value = ''
643
657
  let content = ctx.chat.createContent({ text, files: ctx.chat.attachedFiles.value })
644
658
 
@@ -742,6 +756,49 @@ const ChatPrompt = {
742
756
  //messageText.value += '\n'
743
757
  }
744
758
 
759
+ const onKeyDown = (e) => {
760
+ if (e.key === 'ArrowUp') {
761
+ if (refMessage.value.selectionStart === 0 && refMessage.value.selectionEnd === 0) {
762
+ if (promptHistory.value.length > 0) {
763
+ e.preventDefault()
764
+ if (historyIndex.value === -1) {
765
+ historyIndex.value = promptHistory.value.length - 1
766
+ } else {
767
+ historyIndex.value = Math.max(0, historyIndex.value - 1)
768
+ }
769
+ isNavigatingHistory.value = true
770
+ messageText.value = promptHistory.value[historyIndex.value]
771
+ nextTick(() => {
772
+ refMessage.value.setSelectionRange(0, 0)
773
+ })
774
+ }
775
+ }
776
+ } else if (e.key === 'ArrowDown') {
777
+ if (historyIndex.value !== -1) {
778
+ e.preventDefault()
779
+ if (historyIndex.value < promptHistory.value.length - 1) {
780
+ historyIndex.value++
781
+ isNavigatingHistory.value = true
782
+ messageText.value = promptHistory.value[historyIndex.value]
783
+ } else {
784
+ historyIndex.value = -1
785
+ isNavigatingHistory.value = true
786
+ messageText.value = ''
787
+ }
788
+ nextTick(() => {
789
+ refMessage.value.setSelectionRange(0, 0)
790
+ })
791
+ }
792
+ }
793
+ }
794
+
795
+ watch(messageText, (newValue) => {
796
+ if (!isNavigatingHistory.value) {
797
+ historyIndex.value = -1
798
+ }
799
+ isNavigatingHistory.value = false
800
+ })
801
+
745
802
  watch(() => ctx.state.selectedAspectRatio, newValue => {
746
803
  ctx.setPrefs({ aspectRatio: newValue })
747
804
  })
@@ -769,6 +826,7 @@ const ChatPrompt = {
769
826
  removeAttachment,
770
827
  sendMessage,
771
828
  addNewLine,
829
+ onKeyDown,
772
830
  imageAspectRatios,
773
831
  }
774
832
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 3.0.4
3
+ Version: 3.0.5
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.4"
7
+ version = "3.0.5"
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.4",
18
+ version="3.0.5",
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
File without changes
File without changes