llms-py 3.0.14__py3-none-any.whl → 3.0.16__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 (38) hide show
  1. llms/extensions/app/ui/threadStore.mjs +10 -3
  2. llms/extensions/computer/README.md +96 -0
  3. llms/extensions/computer/__init__.py +59 -0
  4. llms/extensions/{computer_use → computer}/bash.py +2 -2
  5. llms/extensions/{computer_use → computer}/edit.py +10 -14
  6. llms/extensions/computer/filesystem.py +542 -0
  7. llms/extensions/core_tools/__init__.py +0 -38
  8. llms/extensions/providers/google.py +57 -30
  9. llms/extensions/skills/LICENSE +202 -0
  10. llms/extensions/skills/__init__.py +130 -0
  11. llms/extensions/skills/errors.py +25 -0
  12. llms/extensions/skills/models.py +39 -0
  13. llms/extensions/skills/parser.py +178 -0
  14. llms/extensions/skills/ui/index.mjs +362 -0
  15. llms/extensions/skills/ui/skills/create-plan/SKILL.md +74 -0
  16. llms/extensions/skills/validator.py +177 -0
  17. llms/extensions/system_prompts/ui/index.mjs +6 -10
  18. llms/extensions/tools/__init__.py +5 -82
  19. llms/extensions/tools/ui/index.mjs +93 -5
  20. llms/main.py +215 -35
  21. llms/ui/ai.mjs +1 -1
  22. llms/ui/app.css +527 -22
  23. llms/ui/ctx.mjs +53 -6
  24. llms/ui/modules/chat/ChatBody.mjs +186 -24
  25. llms/ui/modules/chat/index.mjs +107 -103
  26. llms/ui/tailwind.input.css +10 -0
  27. llms/ui/utils.mjs +25 -1
  28. {llms_py-3.0.14.dist-info → llms_py-3.0.16.dist-info}/METADATA +1 -1
  29. {llms_py-3.0.14.dist-info → llms_py-3.0.16.dist-info}/RECORD +37 -27
  30. {llms_py-3.0.14.dist-info → llms_py-3.0.16.dist-info}/WHEEL +1 -1
  31. llms/extensions/computer_use/__init__.py +0 -27
  32. /llms/extensions/{computer_use → computer}/base.py +0 -0
  33. /llms/extensions/{computer_use → computer}/computer.py +0 -0
  34. /llms/extensions/{computer_use → computer}/platform.py +0 -0
  35. /llms/extensions/{computer_use → computer}/run.py +0 -0
  36. {llms_py-3.0.14.dist-info → llms_py-3.0.16.dist-info}/entry_points.txt +0 -0
  37. {llms_py-3.0.14.dist-info → llms_py-3.0.16.dist-info}/licenses/LICENSE +0 -0
  38. {llms_py-3.0.14.dist-info → llms_py-3.0.16.dist-info}/top_level.txt +0 -0
llms/ui/utils.mjs CHANGED
@@ -211,6 +211,19 @@ export function isHtml(s) {
211
211
  return isHtml
212
212
  }
213
213
 
214
+ const htmlEntities = {
215
+ '&': '&',
216
+ '<': '&lt;',
217
+ '>': '&gt;',
218
+ '"': '&quot;',
219
+ "'": '&#39;'
220
+ }
221
+
222
+ export function encodeHtml(str) {
223
+ if (!str) return ''
224
+ return str.replace(/[&<>"']/g, m => htmlEntities[m]);
225
+ }
226
+
214
227
  /**
215
228
  * @param {object|array} type
216
229
  * @param {'div'|'table'|'thead'|'th'|'tr'|'td'} tag
@@ -241,6 +254,16 @@ export const nextId = (() => {
241
254
  }
242
255
  })();
243
256
 
257
+ export function fnv1a(str) {
258
+ let hash = 0x811c9dc5
259
+ for (let i = 0; i < str.length; i++) {
260
+ hash ^= str.charCodeAt(i)
261
+ hash = Math.imul(hash, 0x01000193)
262
+ }
263
+ return hash >>> 0
264
+ }
265
+ export const hashString = fnv1a
266
+
244
267
  export function utilsFunctions() {
245
268
  return {
246
269
  nextId,
@@ -256,6 +279,7 @@ export function utilsFunctions() {
256
279
  pluralize,
257
280
  isHtml,
258
281
  htmlFormatClasses,
282
+ encodeHtml,
283
+ hashString,
259
284
  }
260
285
  }
261
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 3.0.14
3
+ Version: 3.0.16
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
@@ -3,7 +3,7 @@ llms/__main__.py,sha256=hrBulHIt3lmPm1BCyAEVtB6DQ0Hvc3gnIddhHCmJasg,151
3
3
  llms/db.py,sha256=oozp5I5lECVO8oZEFwcZl3ES5mARqWeR1BkoqG5kSqM,11687
4
4
  llms/index.html,sha256=nGk1Djtn9p7l6LuKp4Kg0JIB9fCzxtTWXFfmDb4ggpc,1658
5
5
  llms/llms.json,sha256=NEr9kJRkUGZ2YZHbWC-haGPlVVL2Qtnx4kKZENGH1wk,11494
6
- llms/main.py,sha256=GNivNxCaKGzVrFGZ2vqr0RcRRafZBmI9asUgzCGerqk,176342
6
+ llms/main.py,sha256=mce_QW7YCiV0oCNOP2GUCyngkIKIsscf_F9_qFX6bRc,182958
7
7
  llms/providers-extra.json,sha256=_6DmGBiQY9LM6_Y0zOiObYn7ba4g3akSNQfmHcYlENc,11101
8
8
  llms/providers.json,sha256=yjhDurlwo70xqfV0HNLiZaCpw3WvtIgkjoLahQIKX2w,282530
9
9
  llms/extensions/analytics/ui/index.mjs,sha256=m1XwaqYCLwK267JAUCAltkN_nOXep0GxfpvGNS5i4_w,69547
@@ -12,16 +12,18 @@ llms/extensions/app/__init__.py,sha256=aU8Bfliw--Xj1bsKL3PSoX6MY1ZNgweNyMWS1V_YG
12
12
  llms/extensions/app/db.py,sha256=DU8YZ25yFsBI-O6msxh2GgzbwaqKqXkAHJLwQKcmFPI,21533
13
13
  llms/extensions/app/ui/Recents.mjs,sha256=2ypAKUp9_Oqcive1nUWZ8I2PQTBomBg_Pkjygi4oPgs,9261
14
14
  llms/extensions/app/ui/index.mjs,sha256=sB9176LLNuKFsZ28yL-tROA6J4xePNtvxtSrzFcinRo,13271
15
- llms/extensions/app/ui/threadStore.mjs,sha256=CLlD-1HBO1yhZBHLfL0ZdA4quT4R07qr1JW4a8igVNc,12287
16
- llms/extensions/computer_use/__init__.py,sha256=YOMJnMFsIi6vdZ8BpI7_uWubIwiWHAJoLpHflGC9BI0,715
17
- llms/extensions/computer_use/base.py,sha256=Igio5R6kPQOxIbmpaA7X6j6eC4cpF3jwTTR8rURfp5E,2386
18
- llms/extensions/computer_use/bash.py,sha256=5s_oYqRGnE1xIICe6qVsfUMJFIbp79Ac0X5NVkSrn_c,5929
19
- llms/extensions/computer_use/computer.py,sha256=wehwcrYwi9usCRcziE_loMhWDbVgfjLk_T4_4TZa4W4,19642
20
- llms/extensions/computer_use/edit.py,sha256=fEMylXnS07Ql3ZoQPG_l98fKrBHIHOWJzn_yp3D5XXI,12784
21
- llms/extensions/computer_use/platform.py,sha256=w5ECar8lM4Lag7rTYUQmU7wEWaqCeejNXwwM3CB8ulQ,14866
22
- llms/extensions/computer_use/run.py,sha256=ZIcoYyy2cc3IKR_T4yJgx6IUHu2m7UusIJi9Dx1s7dA,1566
15
+ llms/extensions/app/ui/threadStore.mjs,sha256=QS6mLqysw9Je_ixUKpbhAELGq-As8aFk6Qm_vO5hvUQ,12515
16
+ llms/extensions/computer/README.md,sha256=xGQXMFtTnjOLll9rDeF1b6Msl3uK5UwjvocvW7WCmps,4293
17
+ llms/extensions/computer/__init__.py,sha256=47nBZI4VMAJ0-mU0QCNtiqKRd-0CF9z8BnBsLE1jrQw,1813
18
+ llms/extensions/computer/base.py,sha256=Igio5R6kPQOxIbmpaA7X6j6eC4cpF3jwTTR8rURfp5E,2386
19
+ llms/extensions/computer/bash.py,sha256=-xo67wVAdrqxtXgR7MK-iAkJ4Wne7Dm1JmnuHC2xW8o,5953
20
+ llms/extensions/computer/computer.py,sha256=wehwcrYwi9usCRcziE_loMhWDbVgfjLk_T4_4TZa4W4,19642
21
+ llms/extensions/computer/edit.py,sha256=QluhvRhYSSQJfbih4QyfC4M8W8aVqiOApfYXZgZTI5M,12725
22
+ llms/extensions/computer/filesystem.py,sha256=4k_aq-wDySz1yV7k3ZshKr5q8LGH8gYkXgGDNAr62lc,19703
23
+ llms/extensions/computer/platform.py,sha256=w5ECar8lM4Lag7rTYUQmU7wEWaqCeejNXwwM3CB8ulQ,14866
24
+ llms/extensions/computer/run.py,sha256=ZIcoYyy2cc3IKR_T4yJgx6IUHu2m7UusIJi9Dx1s7dA,1566
23
25
  llms/extensions/core_tools/CALCULATOR.md,sha256=pJRtCVF01BgxFrSNh2Ys_lrRi3SFwLgJzAX93AGh93Q,1944
24
- llms/extensions/core_tools/__init__.py,sha256=Y5ZlcSg5yVXxIGX_FVbDcHyeXx3ex_rzRQ2hli6Nk38,23280
26
+ llms/extensions/core_tools/__init__.py,sha256=w8ovJRgXsvrcL8NF-XOrhuBE1oQXfnSQo-Xu7ww3NQY,21641
25
27
  llms/extensions/core_tools/ui/index.mjs,sha256=KycJ2FcQ6BieBY7fjWGxVBGHN6WuFx712OFrO6flXww,31770
26
28
  llms/extensions/core_tools/ui/codemirror/codemirror.css,sha256=60lOqXLSZh74b39qxlbdZ4bXIeScnBtG4euWfktvm_M,8720
27
29
  llms/extensions/core_tools/ui/codemirror/codemirror.js,sha256=7cA89SlK249o7tVfiEWIiqDEA6ZEWxX4CoZmofVA14s,402008
@@ -138,27 +140,35 @@ llms/extensions/providers/__init__.py,sha256=C5zOBQEOB2L96rAZdjV42fPVk_dZxSh2Dv3
138
140
  llms/extensions/providers/anthropic.py,sha256=ey3G9D3drhjzaNTKC8SS_XVSjdi3K7uqYTskmf26Aic,12011
139
141
  llms/extensions/providers/cerebras.py,sha256=HaeFW0GwbD6V6Zrrwqyv78kQb0VXg9oHmykvJfIOOYE,1417
140
142
  llms/extensions/providers/chutes.py,sha256=5ZrfbqoOhgzKLQy_qULcp4jlvW5WXPR0jP9kN2Jzb9g,6229
141
- llms/extensions/providers/google.py,sha256=oCCTE2KAw-WWE2v14XpKzgAMdFIWbjTBoa6GWuqT4dw,26215
143
+ llms/extensions/providers/google.py,sha256=rRmpmtSjTM04mZGNyEV2jcDxdDM99GNj_X68dNT1H20,27719
142
144
  llms/extensions/providers/nvidia.py,sha256=C6cwqn3EufYDfRIgbc8MDkQNyD6w3c7hbjfYaHJSDik,4279
143
145
  llms/extensions/providers/openai.py,sha256=hkE-LVsw6M92_qEbpayuPo17Z1OWKHe7lm2wduLMng8,6138
144
146
  llms/extensions/providers/openrouter.py,sha256=5SfCJKo1aGKoDGez6HXYQe9elMMo9sSEDFqqdxamAgA,3330
145
147
  llms/extensions/providers/zai.py,sha256=WPJlDxmnjuhxlgWhUXw2MYqgEKYfy14wVQbpQyMMlbU,7736
148
+ llms/extensions/skills/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
149
+ llms/extensions/skills/__init__.py,sha256=hnbcXTc578zwxJjY3qq56UZtd-cqqVoNHxHLziOBKw4,4352
150
+ llms/extensions/skills/errors.py,sha256=V4DTFNtzVADDlZ0g7RmoxZRFeG01oaG3zzaPAVdtkfQ,572
151
+ llms/extensions/skills/models.py,sha256=xmRfz8BMeOdzZXhW6MYFjkOVHOKD6bMDynId8aysans,1461
152
+ llms/extensions/skills/parser.py,sha256=Mb4NOtoY3Ip4Nng8ixb26oE8U_Sp5CI3n3l_qxbg1UM,5500
153
+ llms/extensions/skills/validator.py,sha256=te49hTfIPJWcMcLLCApSJ2Ru3lrqVF8ayDXtPEZF9sU,5154
154
+ llms/extensions/skills/ui/index.mjs,sha256=0_7TkyN1T1LH2j3nEz7ek-5RXqKOysEvC2NQ4rSorVE,17189
155
+ llms/extensions/skills/ui/skills/create-plan/SKILL.md,sha256=g_SLyBid2dwj56FBzh87lZGu1t08edLs0plimT2uNzs,2481
146
156
  llms/extensions/system_prompts/README.md,sha256=ayr18lnSsGp62bunC6kxkvcSvZki775rbZ-8VoMDQEc,597
147
157
  llms/extensions/system_prompts/__init__.py,sha256=TZy1CS2dPkBNBA_Ovf9BlVetZqTt2NgnsrZi6Mtg_C0,1535
148
- llms/extensions/system_prompts/ui/index.mjs,sha256=_pVCreAebSzE9dzcHF2kiYODwP-fDHCqtUQB-X5Io9Q,12107
158
+ llms/extensions/system_prompts/ui/index.mjs,sha256=Ec2dXSzEj6RnEuW2U3HxeXK3LTl_lJrVJIayozquoB4,11981
149
159
  llms/extensions/system_prompts/ui/prompts.json,sha256=t5DD3bird-87wFa4OlW-bC2wdoYDrVzfyc8TO5OaotI,128489
150
- llms/extensions/tools/__init__.py,sha256=u76604Cn_sRFQRqeA_pkVEty27V688Mt9Z7Kh63yDr8,4825
151
- llms/extensions/tools/ui/index.mjs,sha256=-Rby2y1Rx83JFcqYqn86uYZjVd_WlF4wSajZ1M31LWg,34997
160
+ llms/extensions/tools/__init__.py,sha256=PRZe0QMfsOymJ3jTqO0VFppNEWI4f2bYSOImK_YrGQM,2036
161
+ llms/extensions/tools/ui/index.mjs,sha256=4gT0mHKuzcLWe8BmrYeVNS3VMd5Me9CX6Q0A_YLyLck,38633
152
162
  llms/ui/App.mjs,sha256=CoUzO9mV__-jV19NKHYIbwHsjWMnO11jyNSbnJhe1gQ,7486
153
- llms/ui/ai.mjs,sha256=gE3WAMzTEu2m67l1Gh3pn4dsog9xSGDYPLQw9TbG67w,6541
154
- llms/ui/app.css,sha256=ZxdHeOSiZYKQvkP_ydTdrW1Zo8lrD4c_amtj4kOtgzA,186973
155
- llms/ui/ctx.mjs,sha256=X4scgXEQ9bMUfQl36sM4A3o2Ufad3LRwItxfmSu1xwc,12838
163
+ llms/ui/ai.mjs,sha256=A5fGDgVa7mRC6aagXkKuXrSM_MlgAF1gsDTWHEZk2No,6541
164
+ llms/ui/app.css,sha256=kKKICFM_85H1BDFdUYJzo93S__1OZcj2cO6zL-4VdJs,209085
165
+ llms/ui/ctx.mjs,sha256=g1mmv87bhKCFyMbAImvX6mArmGliAoGPPupFEaMMf7c,14500
156
166
  llms/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
157
167
  llms/ui/index.mjs,sha256=7GMbFyG3L4k6dxSrQYQ0BLzqL976xw5HeaqKco0THHA,4296
158
168
  llms/ui/markdown.mjs,sha256=ZeGXxX4_UEUCVkLZzmwXlqWBfReSFzBivdxNu8uSgFk,6648
159
- llms/ui/tailwind.input.css,sha256=xOrT0m8HCZRHhnPv4K43HyQCTO_0SpP-tYvxpP8jzYY,17027
169
+ llms/ui/tailwind.input.css,sha256=9stg-po5X2-y598_Qw_2rnfRXR2NPjZK--d9xf-tZZE,17277
160
170
  llms/ui/typography.css,sha256=6o7pbMIamRVlm2GfzSStpcOG4T5eFCK_WcQ3RIHKAsU,19587
161
- llms/ui/utils.mjs,sha256=lurZdnTk4ngR7ziWKeUNvpWVmBg2V6phqngBYWcCL5U,7483
171
+ llms/ui/utils.mjs,sha256=mYLTe5-CncWos4Y4z-hzvXVESKkTuVHDYTRMRGc6Ssc,7993
162
172
  llms/ui/lib/chart.js,sha256=dx8FdDX0Rv6OZtZjr9FQh5h-twFsKjfnb-FvFlQ--cU,196176
163
173
  llms/ui/lib/charts.mjs,sha256=OPFAifcA4MPRv8pw6I7glVh7Xccv8guio0k35zPBDIY,926
164
174
  llms/ui/lib/color.js,sha256=DDG7Pr-qzJHTPISZNSqP_qJR8UflKHEc_56n6xrBugQ,8273
@@ -173,12 +183,12 @@ llms/ui/lib/vue.mjs,sha256=75FuLhUTPk19sncwNIrm0BGEL0_Qw298-_v01fPWYoI,542872
173
183
  llms/ui/modules/icons.mjs,sha256=LGcH0ys0QLS2ZKCO42qHpwPYbBV_EssoWLezU4XZEzU,27751
174
184
  llms/ui/modules/layout.mjs,sha256=8pAxs8bedQI3b3eRA9nrfpLZznLmrpp4BZvigYAQjpQ,12572
175
185
  llms/ui/modules/model-selector.mjs,sha256=6U4rAZ7vmQELFRQGWk4YEtq02v3lyHdMq6yUOp-ArXg,43184
176
- llms/ui/modules/chat/ChatBody.mjs,sha256=l6ANTkOMb6GJSg9-vUBhClndO2pI2RJr8NascPjvMJY,50904
186
+ llms/ui/modules/chat/ChatBody.mjs,sha256=Rwyr7JeqBn6LUn-VtHB9qj7kBsLsOr34SbHcK0twIZ0,58118
177
187
  llms/ui/modules/chat/SettingsDialog.mjs,sha256=HMBJTwrapKrRIAstIIqp0QlJL5O-ho4hzgvfagPfsX8,19930
178
- llms/ui/modules/chat/index.mjs,sha256=FZ0fJ53JXQnTDiSOFhyGp3J5OMuEDQ2YZJGKC5VwS0E,39819
179
- llms_py-3.0.14.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
180
- llms_py-3.0.14.dist-info/METADATA,sha256=bLramlKkA30HvkQwaGmAl9Z_r1Q75UZ0gP3FXv5451s,2195
181
- llms_py-3.0.14.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
182
- llms_py-3.0.14.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
183
- llms_py-3.0.14.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
184
- llms_py-3.0.14.dist-info/RECORD,,
188
+ llms/ui/modules/chat/index.mjs,sha256=nS_L6G1RSuCybgnA6n-q8Sn3OeSbQWL2iW3-zCIFqJk,39548
189
+ llms_py-3.0.16.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
190
+ llms_py-3.0.16.dist-info/METADATA,sha256=zP_aLsJ0caYROZZ-ch-oyoI0HlS86R4M-ZvY64_OmAg,2195
191
+ llms_py-3.0.16.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
192
+ llms_py-3.0.16.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
193
+ llms_py-3.0.16.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
194
+ llms_py-3.0.16.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.10.1)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,27 +0,0 @@
1
- """
2
- Anthropic's Computer Use Tools
3
- https://github.com/anthropics/claude-quickstarts/tree/main/computer-use-demo
4
- """
5
-
6
- import os
7
-
8
- from .bash import open, run_bash
9
- from .computer import computer
10
- from .edit import edit
11
- from .platform import get_display_num, get_screen_resolution
12
-
13
- width, height = get_screen_resolution()
14
- # set enviroment variables
15
- os.environ["WIDTH"] = str(width)
16
- os.environ["HEIGHT"] = str(height)
17
- os.environ["DISPLAY_NUM"] = str(get_display_num())
18
-
19
-
20
- def install(ctx):
21
- ctx.register_tool(run_bash, group="computer_use")
22
- ctx.register_tool(open, group="computer_use")
23
- ctx.register_tool(edit, group="computer_use")
24
- ctx.register_tool(computer, group="computer_use")
25
-
26
-
27
- __install__ = install
File without changes
File without changes
File without changes
File without changes