llms-py 2.0.12__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.
- llms.py +68 -37
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/ai.mjs +1 -1
- {llms_py-2.0.12.dist-info → llms_py-2.0.14.dist-info}/METADATA +1 -1
- llms_py-2.0.14.dist-info/RECORD +40 -0
- llms_py-2.0.12.dist-info/RECORD +0 -40
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/index.html +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/llms.json +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/requirements.txt +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/App.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/Avatar.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/Brand.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/ChatPrompt.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/Main.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/ModelSelector.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/ProviderStatus.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/Recents.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/SettingsDialog.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/Sidebar.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/SignIn.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/SystemPromptEditor.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/SystemPromptSelector.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/Welcome.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/app.css +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/fav.svg +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/lib/highlight.min.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/lib/idb.min.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/lib/marked.min.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/lib/servicestack-client.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/lib/servicestack-vue.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/lib/vue-router.min.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/lib/vue.min.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/markdown.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/tailwind.input.css +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/threadStore.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/typography.css +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui/utils.mjs +0 -0
- {llms_py-2.0.12.data → llms_py-2.0.14.data}/data/ui.json +0 -0
- {llms_py-2.0.12.dist-info → llms_py-2.0.14.dist-info}/WHEEL +0 -0
- {llms_py-2.0.12.dist-info → llms_py-2.0.14.dist-info}/entry_points.txt +0 -0
- {llms_py-2.0.12.dist-info → llms_py-2.0.14.dist-info}/licenses/LICENSE +0 -0
- {llms_py-2.0.12.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.
|
|
25
|
+
VERSION = "2.0.14"
|
|
26
26
|
_ROOT = None
|
|
27
27
|
g_config_path = None
|
|
28
28
|
g_ui_path = None
|
|
@@ -838,6 +838,7 @@ def github_url(filename):
|
|
|
838
838
|
|
|
839
839
|
async def save_text(url, save_path):
|
|
840
840
|
async with aiohttp.ClientSession() as session:
|
|
841
|
+
_log(f"GET {url}")
|
|
841
842
|
async with session.get(url) as resp:
|
|
842
843
|
text = await resp.text()
|
|
843
844
|
if resp.status >= 400:
|
|
@@ -1110,34 +1111,61 @@ def main():
|
|
|
1110
1111
|
if not g_config_path or not os.path.exists(g_config_path):
|
|
1111
1112
|
# copy llms.json and ui.json to llms_home
|
|
1112
1113
|
|
|
1113
|
-
if not os.path.exists(home_config_path)
|
|
1114
|
+
if not os.path.exists(home_config_path):
|
|
1114
1115
|
llms_home = os.path.dirname(home_config_path)
|
|
1115
1116
|
os.makedirs(llms_home, exist_ok=True)
|
|
1116
1117
|
|
|
1117
|
-
|
|
1118
|
-
try:
|
|
1119
|
-
config_json = read_resource_text(resource_config_path)
|
|
1120
|
-
with open(home_config_path, "w") as f:
|
|
1121
|
-
f.write(config_json)
|
|
1122
|
-
_log(f"Created default config at {home_config_path}")
|
|
1123
|
-
except (OSError, AttributeError) as e:
|
|
1124
|
-
_log(f"Error reading resource config: {e}")
|
|
1125
|
-
|
|
1126
|
-
# Read UI config from resource
|
|
1127
|
-
if not os.path.exists(home_ui_path) and resource_exists(resource_ui_path):
|
|
1118
|
+
if resource_exists(resource_config_path):
|
|
1128
1119
|
try:
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
f.write(ui_json)
|
|
1132
|
-
_log(f"Created default ui config at {home_ui_path}")
|
|
1120
|
+
# Read config from resource (handle both Path and Traversable objects)
|
|
1121
|
+
config_json = read_resource_text(resource_ui_path)
|
|
1133
1122
|
except (OSError, AttributeError) as e:
|
|
1134
|
-
_log(f"Error reading resource
|
|
1123
|
+
_log(f"Error reading resource config: {e}")
|
|
1124
|
+
if not config_json:
|
|
1125
|
+
try:
|
|
1126
|
+
config_json = asyncio.run(save_text(github_url("llms.json"), home_ui_path))
|
|
1127
|
+
except Exception as e:
|
|
1128
|
+
_log(f"Error downloading llms.json: {e}")
|
|
1129
|
+
print("Could not create llms.json. Create one with --init or use --config <path>")
|
|
1130
|
+
exit(1)
|
|
1135
1131
|
|
|
1132
|
+
with open(home_config_path, "w") as f:
|
|
1133
|
+
f.write(config_json)
|
|
1134
|
+
_log(f"Created default config at {home_config_path}")
|
|
1136
1135
|
# Update g_config_path to point to the copied file
|
|
1137
1136
|
g_config_path = home_config_path
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1137
|
+
if not g_config_path or not os.path.exists(g_config_path):
|
|
1138
|
+
print("llms.json not found. Create one with --init or use --config <path>")
|
|
1139
|
+
exit(1)
|
|
1140
|
+
|
|
1141
|
+
if not g_ui_path or not os.path.exists(g_ui_path):
|
|
1142
|
+
# Read UI config from resource
|
|
1143
|
+
if not os.path.exists(home_ui_path):
|
|
1144
|
+
llms_home = os.path.dirname(home_ui_path)
|
|
1145
|
+
os.makedirs(llms_home, exist_ok=True)
|
|
1146
|
+
if resource_exists(resource_ui_path):
|
|
1147
|
+
try:
|
|
1148
|
+
# Read config from resource (handle both Path and Traversable objects)
|
|
1149
|
+
ui_json = read_resource_text(resource_ui_path)
|
|
1150
|
+
except (OSError, AttributeError) as e:
|
|
1151
|
+
_log(f"Error reading resource ui config: {e}")
|
|
1152
|
+
if not ui_json:
|
|
1153
|
+
try:
|
|
1154
|
+
ui_json = asyncio.run(save_text(github_url("ui.json"), home_ui_path))
|
|
1155
|
+
except Exception as e:
|
|
1156
|
+
_log(f"Error downloading ui.json: {e}")
|
|
1157
|
+
print("Could not create ui.json. Create one with --init or use --config <path>")
|
|
1158
|
+
exit(1)
|
|
1159
|
+
|
|
1160
|
+
with open(home_ui_path, "w") as f:
|
|
1161
|
+
f.write(ui_json)
|
|
1162
|
+
_log(f"Created default ui config at {home_ui_path}")
|
|
1163
|
+
|
|
1164
|
+
# Update g_config_path to point to the copied file
|
|
1165
|
+
g_ui_path = home_ui_path
|
|
1166
|
+
if not g_ui_path or not os.path.exists(g_ui_path):
|
|
1167
|
+
print("ui.json not found. Create one with --init or use --config <path>")
|
|
1168
|
+
exit(1)
|
|
1141
1169
|
|
|
1142
1170
|
# read contents
|
|
1143
1171
|
with open(g_config_path, "r") as f:
|
|
@@ -1173,6 +1201,10 @@ def main():
|
|
|
1173
1201
|
if cli_args.serve is not None:
|
|
1174
1202
|
port = int(cli_args.serve)
|
|
1175
1203
|
|
|
1204
|
+
if not os.path.exists(g_ui_path):
|
|
1205
|
+
print(f"UI not found at {g_ui_path}")
|
|
1206
|
+
exit(1)
|
|
1207
|
+
|
|
1176
1208
|
app = web.Application()
|
|
1177
1209
|
|
|
1178
1210
|
async def chat_handler(request):
|
|
@@ -1247,6 +1279,20 @@ def main():
|
|
|
1247
1279
|
raise web.HTTPNotFound
|
|
1248
1280
|
|
|
1249
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)
|
|
1250
1296
|
|
|
1251
1297
|
async def not_found_handler(request):
|
|
1252
1298
|
return web.Response(text="404: Not Found", status=404)
|
|
@@ -1262,24 +1308,9 @@ def main():
|
|
|
1262
1308
|
|
|
1263
1309
|
# Serve index.html as fallback route (SPA routing)
|
|
1264
1310
|
app.router.add_route('*', '/{tail:.*}', index_handler)
|
|
1265
|
-
|
|
1266
|
-
if os.path.exists(g_ui_path):
|
|
1267
|
-
async def ui_config_handler(request):
|
|
1268
|
-
with open(g_ui_path, "r") as f:
|
|
1269
|
-
ui = json.load(f)
|
|
1270
|
-
if 'defaults' not in ui:
|
|
1271
|
-
ui['defaults'] = g_config['defaults']
|
|
1272
|
-
enabled, disabled = provider_status()
|
|
1273
|
-
ui['status'] = {
|
|
1274
|
-
"all": list(g_config['providers'].keys()),
|
|
1275
|
-
"enabled": enabled,
|
|
1276
|
-
"disabled": disabled
|
|
1277
|
-
}
|
|
1278
|
-
return web.json_response(ui)
|
|
1279
|
-
app.router.add_get('/config', ui_config_handler)
|
|
1280
1311
|
|
|
1281
1312
|
print(f"Starting server on port {port}...")
|
|
1282
|
-
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)
|
|
1283
1314
|
exit(0)
|
|
1284
1315
|
|
|
1285
1316
|
if cli_args.enable is not None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: llms-py
|
|
3
|
-
Version: 2.0.
|
|
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,,
|
llms_py-2.0.12.dist-info/RECORD
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
llms.py,sha256=P6Lu9lHPujMd4HwXrx4_pJic6ye4cGps0lFf5X-f85c,59146
|
|
2
|
-
llms_py-2.0.12.data/data/index.html,sha256=RmvPW7H49tHR3DdQvvSrcR_OeCt1InYd5dirBxfZCpo,2417
|
|
3
|
-
llms_py-2.0.12.data/data/llms.json,sha256=aQFm_lXsPLTWCndE2DNhTY04P576U7NFN9hx5-QwL3E,19582
|
|
4
|
-
llms_py-2.0.12.data/data/requirements.txt,sha256=iv-JIaacmTl-hSho3QmphcKnbRRYx1st47yjz_178Ro,8
|
|
5
|
-
llms_py-2.0.12.data/data/ui.json,sha256=iBOmpNeD5-o8AgUa51ymS-KemovJ7bm9J1fnL0nf8jk,134025
|
|
6
|
-
llms_py-2.0.12.data/data/ui/App.mjs,sha256=hXtUjaL3GrcIHieEK3BzIG72OVzrorBBS4RkE1DOGc4,439
|
|
7
|
-
llms_py-2.0.12.data/data/ui/Avatar.mjs,sha256=3rHpxe_LuCDiNP895F3FOjWx4j377JA9rD1FLluvtgA,851
|
|
8
|
-
llms_py-2.0.12.data/data/ui/Brand.mjs,sha256=ZkJ1Yd9ZgdTbs7f3ezM0UtsHMcm6v4-L-m3avnSXAXU,1184
|
|
9
|
-
llms_py-2.0.12.data/data/ui/ChatPrompt.mjs,sha256=IbfCx3W0SlX8x9lvaFjB1rqJqNkbeUvfqFHP9iKzZ9s,19776
|
|
10
|
-
llms_py-2.0.12.data/data/ui/Main.mjs,sha256=kLNWyXWUgHAaX3C3kVkAHOLvEI3H4bd5k9yMkUIRQPU,27348
|
|
11
|
-
llms_py-2.0.12.data/data/ui/ModelSelector.mjs,sha256=qiI-7DBwif5ipNZtzgaZQ2o_wHc23dBRMY6zVkMOCak,947
|
|
12
|
-
llms_py-2.0.12.data/data/ui/ProviderStatus.mjs,sha256=qF_rPdhyt9GffKdPCJdU0yanrDJ3cw1HLPygFP_KjEs,5744
|
|
13
|
-
llms_py-2.0.12.data/data/ui/Recents.mjs,sha256=hmj7V-RXVw-DqMXjUr3OhFHTYQTkvkEhuNEDTGBf3Qw,8448
|
|
14
|
-
llms_py-2.0.12.data/data/ui/SettingsDialog.mjs,sha256=Jm21s5CcZT97ZEhPc7c1WgnLOLdfSiC1SDroYsh7zM4,18095
|
|
15
|
-
llms_py-2.0.12.data/data/ui/Sidebar.mjs,sha256=ERm2Q7pftKTHLCjf-Q76joy1dsvtNWLoYH-wO2mS1LI,9781
|
|
16
|
-
llms_py-2.0.12.data/data/ui/SignIn.mjs,sha256=df3b-7L3ZIneDGbJWUk93K9RGo40gVeuR5StzT1ZH9g,2324
|
|
17
|
-
llms_py-2.0.12.data/data/ui/SystemPromptEditor.mjs,sha256=2CyIUvkIubqYPyIp5zC6_I8CMxvYINuYNjDxvMz4VRU,1265
|
|
18
|
-
llms_py-2.0.12.data/data/ui/SystemPromptSelector.mjs,sha256=AuEtRwUf_RkGgene3nVA9bw8AeMb-b5_6ZLJCTWA8KQ,3051
|
|
19
|
-
llms_py-2.0.12.data/data/ui/Welcome.mjs,sha256=QFAxN7sjWlhMvOIJCmHjNFCQcvpM_T-b4ze1ld9Hj7I,912
|
|
20
|
-
llms_py-2.0.12.data/data/ui/ai.mjs,sha256=tGAENGWY3gxn6j0_SqDTX14-rKdAlXsmAMQ9Mz2lUcw,2346
|
|
21
|
-
llms_py-2.0.12.data/data/ui/app.css,sha256=1Z4coREGsjMw7lYabejdaG0ZMwPpP5lmjRHRDYygq-g,94964
|
|
22
|
-
llms_py-2.0.12.data/data/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
|
|
23
|
-
llms_py-2.0.12.data/data/ui/markdown.mjs,sha256=O5UspOeD8-E23rxOLWcS4eyy2YejMbPwszCYteVtuoU,6221
|
|
24
|
-
llms_py-2.0.12.data/data/ui/tailwind.input.css,sha256=P6QxCwbTBAaG2079ddgtFuuXDLIztEkJDFwj0wmOvkk,11978
|
|
25
|
-
llms_py-2.0.12.data/data/ui/threadStore.mjs,sha256=nM53p1E78Jc7tPOoyS3J3SW9F1njcZ-Fw5FlR9l-3yY,7215
|
|
26
|
-
llms_py-2.0.12.data/data/ui/typography.css,sha256=Z5Fe2IQWnh7bu1CMXniYt0SkaN2fXOFlOuniXUW8oGM,19325
|
|
27
|
-
llms_py-2.0.12.data/data/ui/utils.mjs,sha256=UKyaBsuJYEc-MWoL9b1M5-t3x6h5_HV9HsNBoDVtBRw,4226
|
|
28
|
-
llms_py-2.0.12.data/data/ui/lib/highlight.min.mjs,sha256=sG7wq8bF-IKkfie7S4QSyh5DdHBRf0NqQxMOEH8-MT0,127458
|
|
29
|
-
llms_py-2.0.12.data/data/ui/lib/idb.min.mjs,sha256=CeTXyV4I_pB5vnibvJuyXdMs0iVF2ZL0Z7cdm3w_QaI,3853
|
|
30
|
-
llms_py-2.0.12.data/data/ui/lib/marked.min.mjs,sha256=QRHb_VZugcBJRD2EP6gYlVFEsJw5C2fQ8ImMf_pA2_s,39488
|
|
31
|
-
llms_py-2.0.12.data/data/ui/lib/servicestack-client.mjs,sha256=UVafVbzhJ_0N2lzv7rlzIbzwnWpoqXxGk3N3FSKgOOc,54534
|
|
32
|
-
llms_py-2.0.12.data/data/ui/lib/servicestack-vue.mjs,sha256=r_-khYokisXJAIPDLh8Wq6YtcLAY6HNjtJlCZJjLy74,215181
|
|
33
|
-
llms_py-2.0.12.data/data/ui/lib/vue-router.min.mjs,sha256=fR30GHoXI1u81zyZ26YEU105pZgbbAKSXbpnzFKIxls,30418
|
|
34
|
-
llms_py-2.0.12.data/data/ui/lib/vue.min.mjs,sha256=iXh97m5hotl0eFllb3aoasQTImvp7mQoRJ_0HoxmZkw,163811
|
|
35
|
-
llms_py-2.0.12.dist-info/licenses/LICENSE,sha256=rRryrddGfVftpde-rmAZpW0R8IJihqJ8t8wpfDXoKiQ,1549
|
|
36
|
-
llms_py-2.0.12.dist-info/METADATA,sha256=S545zYZs-obRPtHMHN8g4mVr2D9DAz21wF6Avo3GDEk,28351
|
|
37
|
-
llms_py-2.0.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
38
|
-
llms_py-2.0.12.dist-info/entry_points.txt,sha256=svUoTt28bIJeo6Mb1ffDBLyzhD90DWtFbfp0ShyRCgU,35
|
|
39
|
-
llms_py-2.0.12.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
|
|
40
|
-
llms_py-2.0.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|