llms-py 2.0.13__py3-none-any.whl → 2.0.14__py3-none-any.whl

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 (41) hide show
  1. llms.py +16 -16
  2. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/ai.mjs +1 -1
  3. {llms_py-2.0.13.dist-info → llms_py-2.0.14.dist-info}/METADATA +1 -1
  4. llms_py-2.0.14.dist-info/RECORD +40 -0
  5. llms_py-2.0.13.dist-info/RECORD +0 -40
  6. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/index.html +0 -0
  7. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/llms.json +0 -0
  8. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/requirements.txt +0 -0
  9. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/App.mjs +0 -0
  10. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/Avatar.mjs +0 -0
  11. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/Brand.mjs +0 -0
  12. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/ChatPrompt.mjs +0 -0
  13. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/Main.mjs +0 -0
  14. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/ModelSelector.mjs +0 -0
  15. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/ProviderStatus.mjs +0 -0
  16. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/Recents.mjs +0 -0
  17. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/SettingsDialog.mjs +0 -0
  18. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/Sidebar.mjs +0 -0
  19. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/SignIn.mjs +0 -0
  20. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/SystemPromptEditor.mjs +0 -0
  21. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/SystemPromptSelector.mjs +0 -0
  22. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/Welcome.mjs +0 -0
  23. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/app.css +0 -0
  24. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/fav.svg +0 -0
  25. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/lib/highlight.min.mjs +0 -0
  26. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/lib/idb.min.mjs +0 -0
  27. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/lib/marked.min.mjs +0 -0
  28. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/lib/servicestack-client.mjs +0 -0
  29. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/lib/servicestack-vue.mjs +0 -0
  30. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/lib/vue-router.min.mjs +0 -0
  31. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/lib/vue.min.mjs +0 -0
  32. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/markdown.mjs +0 -0
  33. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/tailwind.input.css +0 -0
  34. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/threadStore.mjs +0 -0
  35. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/typography.css +0 -0
  36. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui/utils.mjs +0 -0
  37. {llms_py-2.0.13.data → llms_py-2.0.14.data}/data/ui.json +0 -0
  38. {llms_py-2.0.13.dist-info → llms_py-2.0.14.dist-info}/WHEEL +0 -0
  39. {llms_py-2.0.13.dist-info → llms_py-2.0.14.dist-info}/entry_points.txt +0 -0
  40. {llms_py-2.0.13.dist-info → llms_py-2.0.14.dist-info}/licenses/LICENSE +0 -0
  41. {llms_py-2.0.13.dist-info → llms_py-2.0.14.dist-info}/top_level.txt +0 -0
llms.py CHANGED
@@ -22,7 +22,7 @@ from aiohttp import web
22
22
  from pathlib import Path
23
23
  from importlib import resources # Py≥3.9 (pip install importlib_resources for 3.7/3.8)
24
24
 
25
- VERSION = "2.0.13"
25
+ VERSION = "2.0.14"
26
26
  _ROOT = None
27
27
  g_config_path = None
28
28
  g_ui_path = None
@@ -1279,6 +1279,20 @@ def main():
1279
1279
  raise web.HTTPNotFound
1280
1280
 
1281
1281
  app.router.add_get("/ui/{path:.*}", ui_static, name="ui_static")
1282
+
1283
+ async def ui_config_handler(request):
1284
+ with open(g_ui_path, "r") as f:
1285
+ ui = json.load(f)
1286
+ if 'defaults' not in ui:
1287
+ ui['defaults'] = g_config['defaults']
1288
+ enabled, disabled = provider_status()
1289
+ ui['status'] = {
1290
+ "all": list(g_config['providers'].keys()),
1291
+ "enabled": enabled,
1292
+ "disabled": disabled
1293
+ }
1294
+ return web.json_response(ui)
1295
+ app.router.add_get('/config', ui_config_handler)
1282
1296
 
1283
1297
  async def not_found_handler(request):
1284
1298
  return web.Response(text="404: Not Found", status=404)
@@ -1294,23 +1308,9 @@ def main():
1294
1308
 
1295
1309
  # Serve index.html as fallback route (SPA routing)
1296
1310
  app.router.add_route('*', '/{tail:.*}', index_handler)
1297
-
1298
- async def ui_config_handler(request):
1299
- with open(g_ui_path, "r") as f:
1300
- ui = json.load(f)
1301
- if 'defaults' not in ui:
1302
- ui['defaults'] = g_config['defaults']
1303
- enabled, disabled = provider_status()
1304
- ui['status'] = {
1305
- "all": list(g_config['providers'].keys()),
1306
- "enabled": enabled,
1307
- "disabled": disabled
1308
- }
1309
- return web.json_response(ui)
1310
- app.router.add_get('/config', ui_config_handler)
1311
1311
 
1312
1312
  print(f"Starting server on port {port}...")
1313
- web.run_app(app, host='0.0.0.0', port=port)
1313
+ web.run_app(app, host='0.0.0.0', port=port, print=_log)
1314
1314
  exit(0)
1315
1315
 
1316
1316
  if cli_args.enable is not None:
@@ -6,7 +6,7 @@ const headers = { 'Accept': 'application/json' }
6
6
  const prefsKey = 'llms.prefs'
7
7
 
8
8
  export const o = {
9
- version: '2.0.13',
9
+ version: '2.0.14',
10
10
  base,
11
11
  prefsKey,
12
12
  welcome: 'Welcome to llms.py',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 2.0.13
3
+ Version: 2.0.14
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
@@ -0,0 +1,40 @@
1
+ llms.py,sha256=bh_8AmA4fPNdE_9oOjJrrAnPlKNeoKyDmE9Buq8iV5c,60500
2
+ llms_py-2.0.14.data/data/index.html,sha256=RmvPW7H49tHR3DdQvvSrcR_OeCt1InYd5dirBxfZCpo,2417
3
+ llms_py-2.0.14.data/data/llms.json,sha256=aQFm_lXsPLTWCndE2DNhTY04P576U7NFN9hx5-QwL3E,19582
4
+ llms_py-2.0.14.data/data/requirements.txt,sha256=iv-JIaacmTl-hSho3QmphcKnbRRYx1st47yjz_178Ro,8
5
+ llms_py-2.0.14.data/data/ui.json,sha256=iBOmpNeD5-o8AgUa51ymS-KemovJ7bm9J1fnL0nf8jk,134025
6
+ llms_py-2.0.14.data/data/ui/App.mjs,sha256=hXtUjaL3GrcIHieEK3BzIG72OVzrorBBS4RkE1DOGc4,439
7
+ llms_py-2.0.14.data/data/ui/Avatar.mjs,sha256=3rHpxe_LuCDiNP895F3FOjWx4j377JA9rD1FLluvtgA,851
8
+ llms_py-2.0.14.data/data/ui/Brand.mjs,sha256=ZkJ1Yd9ZgdTbs7f3ezM0UtsHMcm6v4-L-m3avnSXAXU,1184
9
+ llms_py-2.0.14.data/data/ui/ChatPrompt.mjs,sha256=IbfCx3W0SlX8x9lvaFjB1rqJqNkbeUvfqFHP9iKzZ9s,19776
10
+ llms_py-2.0.14.data/data/ui/Main.mjs,sha256=kLNWyXWUgHAaX3C3kVkAHOLvEI3H4bd5k9yMkUIRQPU,27348
11
+ llms_py-2.0.14.data/data/ui/ModelSelector.mjs,sha256=qiI-7DBwif5ipNZtzgaZQ2o_wHc23dBRMY6zVkMOCak,947
12
+ llms_py-2.0.14.data/data/ui/ProviderStatus.mjs,sha256=qF_rPdhyt9GffKdPCJdU0yanrDJ3cw1HLPygFP_KjEs,5744
13
+ llms_py-2.0.14.data/data/ui/Recents.mjs,sha256=hmj7V-RXVw-DqMXjUr3OhFHTYQTkvkEhuNEDTGBf3Qw,8448
14
+ llms_py-2.0.14.data/data/ui/SettingsDialog.mjs,sha256=Jm21s5CcZT97ZEhPc7c1WgnLOLdfSiC1SDroYsh7zM4,18095
15
+ llms_py-2.0.14.data/data/ui/Sidebar.mjs,sha256=ERm2Q7pftKTHLCjf-Q76joy1dsvtNWLoYH-wO2mS1LI,9781
16
+ llms_py-2.0.14.data/data/ui/SignIn.mjs,sha256=df3b-7L3ZIneDGbJWUk93K9RGo40gVeuR5StzT1ZH9g,2324
17
+ llms_py-2.0.14.data/data/ui/SystemPromptEditor.mjs,sha256=2CyIUvkIubqYPyIp5zC6_I8CMxvYINuYNjDxvMz4VRU,1265
18
+ llms_py-2.0.14.data/data/ui/SystemPromptSelector.mjs,sha256=AuEtRwUf_RkGgene3nVA9bw8AeMb-b5_6ZLJCTWA8KQ,3051
19
+ llms_py-2.0.14.data/data/ui/Welcome.mjs,sha256=QFAxN7sjWlhMvOIJCmHjNFCQcvpM_T-b4ze1ld9Hj7I,912
20
+ llms_py-2.0.14.data/data/ui/ai.mjs,sha256=mQpBHkU8jp0DO0vtdkVujzWJcC04SDpobutk3sWVgto,2346
21
+ llms_py-2.0.14.data/data/ui/app.css,sha256=1Z4coREGsjMw7lYabejdaG0ZMwPpP5lmjRHRDYygq-g,94964
22
+ llms_py-2.0.14.data/data/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
23
+ llms_py-2.0.14.data/data/ui/markdown.mjs,sha256=O5UspOeD8-E23rxOLWcS4eyy2YejMbPwszCYteVtuoU,6221
24
+ llms_py-2.0.14.data/data/ui/tailwind.input.css,sha256=P6QxCwbTBAaG2079ddgtFuuXDLIztEkJDFwj0wmOvkk,11978
25
+ llms_py-2.0.14.data/data/ui/threadStore.mjs,sha256=nM53p1E78Jc7tPOoyS3J3SW9F1njcZ-Fw5FlR9l-3yY,7215
26
+ llms_py-2.0.14.data/data/ui/typography.css,sha256=Z5Fe2IQWnh7bu1CMXniYt0SkaN2fXOFlOuniXUW8oGM,19325
27
+ llms_py-2.0.14.data/data/ui/utils.mjs,sha256=UKyaBsuJYEc-MWoL9b1M5-t3x6h5_HV9HsNBoDVtBRw,4226
28
+ llms_py-2.0.14.data/data/ui/lib/highlight.min.mjs,sha256=sG7wq8bF-IKkfie7S4QSyh5DdHBRf0NqQxMOEH8-MT0,127458
29
+ llms_py-2.0.14.data/data/ui/lib/idb.min.mjs,sha256=CeTXyV4I_pB5vnibvJuyXdMs0iVF2ZL0Z7cdm3w_QaI,3853
30
+ llms_py-2.0.14.data/data/ui/lib/marked.min.mjs,sha256=QRHb_VZugcBJRD2EP6gYlVFEsJw5C2fQ8ImMf_pA2_s,39488
31
+ llms_py-2.0.14.data/data/ui/lib/servicestack-client.mjs,sha256=UVafVbzhJ_0N2lzv7rlzIbzwnWpoqXxGk3N3FSKgOOc,54534
32
+ llms_py-2.0.14.data/data/ui/lib/servicestack-vue.mjs,sha256=r_-khYokisXJAIPDLh8Wq6YtcLAY6HNjtJlCZJjLy74,215181
33
+ llms_py-2.0.14.data/data/ui/lib/vue-router.min.mjs,sha256=fR30GHoXI1u81zyZ26YEU105pZgbbAKSXbpnzFKIxls,30418
34
+ llms_py-2.0.14.data/data/ui/lib/vue.min.mjs,sha256=iXh97m5hotl0eFllb3aoasQTImvp7mQoRJ_0HoxmZkw,163811
35
+ llms_py-2.0.14.dist-info/licenses/LICENSE,sha256=rRryrddGfVftpde-rmAZpW0R8IJihqJ8t8wpfDXoKiQ,1549
36
+ llms_py-2.0.14.dist-info/METADATA,sha256=zyBLBoDwdXrK2ZZT14e3kfDyKR0I3kZF6uEq2KZJ5xY,28351
37
+ llms_py-2.0.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
38
+ llms_py-2.0.14.dist-info/entry_points.txt,sha256=svUoTt28bIJeo6Mb1ffDBLyzhD90DWtFbfp0ShyRCgU,35
39
+ llms_py-2.0.14.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
40
+ llms_py-2.0.14.dist-info/RECORD,,
@@ -1,40 +0,0 @@
1
- llms.py,sha256=P7AdUjJ26qbD9JYkERwxSECIuv6iAi8V_bE5KoGddcI,60488
2
- llms_py-2.0.13.data/data/index.html,sha256=RmvPW7H49tHR3DdQvvSrcR_OeCt1InYd5dirBxfZCpo,2417
3
- llms_py-2.0.13.data/data/llms.json,sha256=aQFm_lXsPLTWCndE2DNhTY04P576U7NFN9hx5-QwL3E,19582
4
- llms_py-2.0.13.data/data/requirements.txt,sha256=iv-JIaacmTl-hSho3QmphcKnbRRYx1st47yjz_178Ro,8
5
- llms_py-2.0.13.data/data/ui.json,sha256=iBOmpNeD5-o8AgUa51ymS-KemovJ7bm9J1fnL0nf8jk,134025
6
- llms_py-2.0.13.data/data/ui/App.mjs,sha256=hXtUjaL3GrcIHieEK3BzIG72OVzrorBBS4RkE1DOGc4,439
7
- llms_py-2.0.13.data/data/ui/Avatar.mjs,sha256=3rHpxe_LuCDiNP895F3FOjWx4j377JA9rD1FLluvtgA,851
8
- llms_py-2.0.13.data/data/ui/Brand.mjs,sha256=ZkJ1Yd9ZgdTbs7f3ezM0UtsHMcm6v4-L-m3avnSXAXU,1184
9
- llms_py-2.0.13.data/data/ui/ChatPrompt.mjs,sha256=IbfCx3W0SlX8x9lvaFjB1rqJqNkbeUvfqFHP9iKzZ9s,19776
10
- llms_py-2.0.13.data/data/ui/Main.mjs,sha256=kLNWyXWUgHAaX3C3kVkAHOLvEI3H4bd5k9yMkUIRQPU,27348
11
- llms_py-2.0.13.data/data/ui/ModelSelector.mjs,sha256=qiI-7DBwif5ipNZtzgaZQ2o_wHc23dBRMY6zVkMOCak,947
12
- llms_py-2.0.13.data/data/ui/ProviderStatus.mjs,sha256=qF_rPdhyt9GffKdPCJdU0yanrDJ3cw1HLPygFP_KjEs,5744
13
- llms_py-2.0.13.data/data/ui/Recents.mjs,sha256=hmj7V-RXVw-DqMXjUr3OhFHTYQTkvkEhuNEDTGBf3Qw,8448
14
- llms_py-2.0.13.data/data/ui/SettingsDialog.mjs,sha256=Jm21s5CcZT97ZEhPc7c1WgnLOLdfSiC1SDroYsh7zM4,18095
15
- llms_py-2.0.13.data/data/ui/Sidebar.mjs,sha256=ERm2Q7pftKTHLCjf-Q76joy1dsvtNWLoYH-wO2mS1LI,9781
16
- llms_py-2.0.13.data/data/ui/SignIn.mjs,sha256=df3b-7L3ZIneDGbJWUk93K9RGo40gVeuR5StzT1ZH9g,2324
17
- llms_py-2.0.13.data/data/ui/SystemPromptEditor.mjs,sha256=2CyIUvkIubqYPyIp5zC6_I8CMxvYINuYNjDxvMz4VRU,1265
18
- llms_py-2.0.13.data/data/ui/SystemPromptSelector.mjs,sha256=AuEtRwUf_RkGgene3nVA9bw8AeMb-b5_6ZLJCTWA8KQ,3051
19
- llms_py-2.0.13.data/data/ui/Welcome.mjs,sha256=QFAxN7sjWlhMvOIJCmHjNFCQcvpM_T-b4ze1ld9Hj7I,912
20
- llms_py-2.0.13.data/data/ui/ai.mjs,sha256=wW_8ag_kEQfMBUjsXauvNjiW_Z4JOFOi2PcNR0pYSg8,2346
21
- llms_py-2.0.13.data/data/ui/app.css,sha256=1Z4coREGsjMw7lYabejdaG0ZMwPpP5lmjRHRDYygq-g,94964
22
- llms_py-2.0.13.data/data/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
23
- llms_py-2.0.13.data/data/ui/markdown.mjs,sha256=O5UspOeD8-E23rxOLWcS4eyy2YejMbPwszCYteVtuoU,6221
24
- llms_py-2.0.13.data/data/ui/tailwind.input.css,sha256=P6QxCwbTBAaG2079ddgtFuuXDLIztEkJDFwj0wmOvkk,11978
25
- llms_py-2.0.13.data/data/ui/threadStore.mjs,sha256=nM53p1E78Jc7tPOoyS3J3SW9F1njcZ-Fw5FlR9l-3yY,7215
26
- llms_py-2.0.13.data/data/ui/typography.css,sha256=Z5Fe2IQWnh7bu1CMXniYt0SkaN2fXOFlOuniXUW8oGM,19325
27
- llms_py-2.0.13.data/data/ui/utils.mjs,sha256=UKyaBsuJYEc-MWoL9b1M5-t3x6h5_HV9HsNBoDVtBRw,4226
28
- llms_py-2.0.13.data/data/ui/lib/highlight.min.mjs,sha256=sG7wq8bF-IKkfie7S4QSyh5DdHBRf0NqQxMOEH8-MT0,127458
29
- llms_py-2.0.13.data/data/ui/lib/idb.min.mjs,sha256=CeTXyV4I_pB5vnibvJuyXdMs0iVF2ZL0Z7cdm3w_QaI,3853
30
- llms_py-2.0.13.data/data/ui/lib/marked.min.mjs,sha256=QRHb_VZugcBJRD2EP6gYlVFEsJw5C2fQ8ImMf_pA2_s,39488
31
- llms_py-2.0.13.data/data/ui/lib/servicestack-client.mjs,sha256=UVafVbzhJ_0N2lzv7rlzIbzwnWpoqXxGk3N3FSKgOOc,54534
32
- llms_py-2.0.13.data/data/ui/lib/servicestack-vue.mjs,sha256=r_-khYokisXJAIPDLh8Wq6YtcLAY6HNjtJlCZJjLy74,215181
33
- llms_py-2.0.13.data/data/ui/lib/vue-router.min.mjs,sha256=fR30GHoXI1u81zyZ26YEU105pZgbbAKSXbpnzFKIxls,30418
34
- llms_py-2.0.13.data/data/ui/lib/vue.min.mjs,sha256=iXh97m5hotl0eFllb3aoasQTImvp7mQoRJ_0HoxmZkw,163811
35
- llms_py-2.0.13.dist-info/licenses/LICENSE,sha256=rRryrddGfVftpde-rmAZpW0R8IJihqJ8t8wpfDXoKiQ,1549
36
- llms_py-2.0.13.dist-info/METADATA,sha256=9sRoJiSKz--ottXAmKzjeSpjeiD8VXYXCXo1rsaXoPE,28351
37
- llms_py-2.0.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
38
- llms_py-2.0.13.dist-info/entry_points.txt,sha256=svUoTt28bIJeo6Mb1ffDBLyzhD90DWtFbfp0ShyRCgU,35
39
- llms_py-2.0.13.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
40
- llms_py-2.0.13.dist-info/RECORD,,