llms-py 3.0.14__py3-none-any.whl → 3.0.15__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/extensions/app/ui/threadStore.mjs +10 -3
- llms/extensions/computer_use/README.md +96 -0
- llms/extensions/skills/LICENSE +202 -0
- llms/extensions/skills/__init__.py +130 -0
- llms/extensions/skills/errors.py +25 -0
- llms/extensions/skills/models.py +39 -0
- llms/extensions/skills/parser.py +178 -0
- llms/extensions/skills/ui/index.mjs +335 -0
- llms/extensions/skills/ui/skills/create-plan/SKILL.md +74 -0
- llms/extensions/skills/validator.py +177 -0
- llms/extensions/system_prompts/ui/index.mjs +6 -10
- llms/extensions/tools/ui/index.mjs +1 -1
- llms/main.py +8 -5
- llms/ui/ai.mjs +1 -1
- llms/ui/app.css +36 -22
- llms/ui/ctx.mjs +53 -6
- llms/ui/modules/chat/ChatBody.mjs +126 -19
- llms/ui/modules/chat/index.mjs +4 -12
- llms/ui/tailwind.input.css +10 -0
- llms/ui/utils.mjs +25 -1
- {llms_py-3.0.14.dist-info → llms_py-3.0.15.dist-info}/METADATA +1 -1
- {llms_py-3.0.14.dist-info → llms_py-3.0.15.dist-info}/RECORD +26 -17
- {llms_py-3.0.14.dist-info → llms_py-3.0.15.dist-info}/WHEEL +0 -0
- {llms_py-3.0.14.dist-info → llms_py-3.0.15.dist-info}/entry_points.txt +0 -0
- {llms_py-3.0.14.dist-info → llms_py-3.0.15.dist-info}/licenses/LICENSE +0 -0
- {llms_py-3.0.14.dist-info → llms_py-3.0.15.dist-info}/top_level.txt +0 -0
llms/ui/modules/chat/index.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ref, watch, computed, nextTick, inject } from 'vue'
|
|
3
3
|
import { $$, createElement, lastRightPart, ApiResult, createErrorStatus } from "@servicestack/client"
|
|
4
4
|
import SettingsDialog, { useSettings } from './SettingsDialog.mjs'
|
|
5
|
-
import { ChatBody, LightboxImage, TypeText, TypeImage, TypeAudio, TypeFile, ViewType, ViewTypes, ViewToolTypes, ToolArguments, ToolOutput, MessageUsage, MessageReasoning } from './ChatBody.mjs'
|
|
5
|
+
import { ChatBody, LightboxImage, TypeText, TypeImage, TypeAudio, TypeFile, ViewType, ViewTypes, ViewToolTypes, TextViewer, ToolArguments, ToolOutput, MessageUsage, MessageReasoning } from './ChatBody.mjs'
|
|
6
6
|
import { AppContext } from '../../ctx.mjs'
|
|
7
7
|
|
|
8
8
|
const imageExts = 'png,webp,jpg,jpeg,gif,bmp,svg,tiff,ico'.split(',')
|
|
@@ -252,23 +252,14 @@ export function useChatPrompt(ctx) {
|
|
|
252
252
|
return ctx.createErrorResult({ message: `Model ${request.model || ''} not found`, errorCode: 'NotFound' })
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
if (!request.messages) request.messages = []
|
|
256
|
-
if (!request.metadata) request.metadata = {}
|
|
257
|
-
|
|
258
255
|
if (!thread) {
|
|
259
256
|
const title = getTextContent(request) || 'New Chat'
|
|
260
257
|
thread = await ctx.threads.startNewThread({ title, model, redirect })
|
|
261
258
|
}
|
|
262
259
|
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
const ctxRequest = {
|
|
266
|
-
request,
|
|
267
|
-
thread,
|
|
268
|
-
}
|
|
260
|
+
const ctxRequest = ctx.createChatContext({ request, thread })
|
|
269
261
|
ctx.chatRequestFilters.forEach(f => f(ctxRequest))
|
|
270
|
-
|
|
271
|
-
console.debug('completion.request', request)
|
|
262
|
+
ctx.completeChatContext(ctxRequest)
|
|
272
263
|
|
|
273
264
|
// Send to API
|
|
274
265
|
const startTime = Date.now()
|
|
@@ -935,6 +926,7 @@ export default {
|
|
|
935
926
|
ViewType,
|
|
936
927
|
ViewTypes,
|
|
937
928
|
ViewToolTypes,
|
|
929
|
+
TextViewer,
|
|
938
930
|
ToolArguments,
|
|
939
931
|
ToolOutput,
|
|
940
932
|
|
llms/ui/tailwind.input.css
CHANGED
|
@@ -166,6 +166,16 @@
|
|
|
166
166
|
overflow: auto !important;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
.prose .frontmatter {
|
|
170
|
+
white-space: pre-wrap;
|
|
171
|
+
word-break: break-all;
|
|
172
|
+
margin-bottom: 1em;
|
|
173
|
+
padding: 0.5rem;
|
|
174
|
+
font-size: 0.8rem !important;
|
|
175
|
+
background: #f9fafb;
|
|
176
|
+
border: 1px solid #e5e7eb;
|
|
177
|
+
}
|
|
178
|
+
|
|
169
179
|
/* highlight.js - vs.css */
|
|
170
180
|
.hljs {
|
|
171
181
|
background: white;
|
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
|
+
'<': '<',
|
|
217
|
+
'>': '>',
|
|
218
|
+
'"': '"',
|
|
219
|
+
"'": '''
|
|
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.
|
|
3
|
+
Version: 3.0.15
|
|
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=
|
|
6
|
+
llms/main.py,sha256=xEWU18A6dTncIFOroN2PDQdnSDhQ9Yr22OHuBbrCYSU,176425
|
|
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,7 +12,8 @@ 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=
|
|
15
|
+
llms/extensions/app/ui/threadStore.mjs,sha256=QS6mLqysw9Je_ixUKpbhAELGq-As8aFk6Qm_vO5hvUQ,12515
|
|
16
|
+
llms/extensions/computer_use/README.md,sha256=xGQXMFtTnjOLll9rDeF1b6Msl3uK5UwjvocvW7WCmps,4293
|
|
16
17
|
llms/extensions/computer_use/__init__.py,sha256=YOMJnMFsIi6vdZ8BpI7_uWubIwiWHAJoLpHflGC9BI0,715
|
|
17
18
|
llms/extensions/computer_use/base.py,sha256=Igio5R6kPQOxIbmpaA7X6j6eC4cpF3jwTTR8rURfp5E,2386
|
|
18
19
|
llms/extensions/computer_use/bash.py,sha256=5s_oYqRGnE1xIICe6qVsfUMJFIbp79Ac0X5NVkSrn_c,5929
|
|
@@ -143,22 +144,30 @@ llms/extensions/providers/nvidia.py,sha256=C6cwqn3EufYDfRIgbc8MDkQNyD6w3c7hbjfYa
|
|
|
143
144
|
llms/extensions/providers/openai.py,sha256=hkE-LVsw6M92_qEbpayuPo17Z1OWKHe7lm2wduLMng8,6138
|
|
144
145
|
llms/extensions/providers/openrouter.py,sha256=5SfCJKo1aGKoDGez6HXYQe9elMMo9sSEDFqqdxamAgA,3330
|
|
145
146
|
llms/extensions/providers/zai.py,sha256=WPJlDxmnjuhxlgWhUXw2MYqgEKYfy14wVQbpQyMMlbU,7736
|
|
147
|
+
llms/extensions/skills/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
148
|
+
llms/extensions/skills/__init__.py,sha256=hnbcXTc578zwxJjY3qq56UZtd-cqqVoNHxHLziOBKw4,4352
|
|
149
|
+
llms/extensions/skills/errors.py,sha256=V4DTFNtzVADDlZ0g7RmoxZRFeG01oaG3zzaPAVdtkfQ,572
|
|
150
|
+
llms/extensions/skills/models.py,sha256=xmRfz8BMeOdzZXhW6MYFjkOVHOKD6bMDynId8aysans,1461
|
|
151
|
+
llms/extensions/skills/parser.py,sha256=Mb4NOtoY3Ip4Nng8ixb26oE8U_Sp5CI3n3l_qxbg1UM,5500
|
|
152
|
+
llms/extensions/skills/validator.py,sha256=te49hTfIPJWcMcLLCApSJ2Ru3lrqVF8ayDXtPEZF9sU,5154
|
|
153
|
+
llms/extensions/skills/ui/index.mjs,sha256=2fE_npjzjaRqEMPmx1JuIxazo9Bv8qmidaKe50GPp-U,15625
|
|
154
|
+
llms/extensions/skills/ui/skills/create-plan/SKILL.md,sha256=g_SLyBid2dwj56FBzh87lZGu1t08edLs0plimT2uNzs,2481
|
|
146
155
|
llms/extensions/system_prompts/README.md,sha256=ayr18lnSsGp62bunC6kxkvcSvZki775rbZ-8VoMDQEc,597
|
|
147
156
|
llms/extensions/system_prompts/__init__.py,sha256=TZy1CS2dPkBNBA_Ovf9BlVetZqTt2NgnsrZi6Mtg_C0,1535
|
|
148
|
-
llms/extensions/system_prompts/ui/index.mjs,sha256=
|
|
157
|
+
llms/extensions/system_prompts/ui/index.mjs,sha256=Ec2dXSzEj6RnEuW2U3HxeXK3LTl_lJrVJIayozquoB4,11981
|
|
149
158
|
llms/extensions/system_prompts/ui/prompts.json,sha256=t5DD3bird-87wFa4OlW-bC2wdoYDrVzfyc8TO5OaotI,128489
|
|
150
159
|
llms/extensions/tools/__init__.py,sha256=u76604Cn_sRFQRqeA_pkVEty27V688Mt9Z7Kh63yDr8,4825
|
|
151
|
-
llms/extensions/tools/ui/index.mjs,sha256
|
|
160
|
+
llms/extensions/tools/ui/index.mjs,sha256=7hnrieDpdwbLrZ09cs0V_A6RxmjYff4Tg85lvXC8jwI,35006
|
|
152
161
|
llms/ui/App.mjs,sha256=CoUzO9mV__-jV19NKHYIbwHsjWMnO11jyNSbnJhe1gQ,7486
|
|
153
|
-
llms/ui/ai.mjs,sha256=
|
|
154
|
-
llms/ui/app.css,sha256=
|
|
155
|
-
llms/ui/ctx.mjs,sha256=
|
|
162
|
+
llms/ui/ai.mjs,sha256=rOCaGgwqabs_rrKTocaY8PBy0KmIoDFFeOU5fkyoCGA,6541
|
|
163
|
+
llms/ui/app.css,sha256=ZqR_QJPCYzhCxjiCnNrflYBhEEs3She-_6bq6SDlES0,187709
|
|
164
|
+
llms/ui/ctx.mjs,sha256=g1mmv87bhKCFyMbAImvX6mArmGliAoGPPupFEaMMf7c,14500
|
|
156
165
|
llms/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
|
|
157
166
|
llms/ui/index.mjs,sha256=7GMbFyG3L4k6dxSrQYQ0BLzqL976xw5HeaqKco0THHA,4296
|
|
158
167
|
llms/ui/markdown.mjs,sha256=ZeGXxX4_UEUCVkLZzmwXlqWBfReSFzBivdxNu8uSgFk,6648
|
|
159
|
-
llms/ui/tailwind.input.css,sha256=
|
|
168
|
+
llms/ui/tailwind.input.css,sha256=9stg-po5X2-y598_Qw_2rnfRXR2NPjZK--d9xf-tZZE,17277
|
|
160
169
|
llms/ui/typography.css,sha256=6o7pbMIamRVlm2GfzSStpcOG4T5eFCK_WcQ3RIHKAsU,19587
|
|
161
|
-
llms/ui/utils.mjs,sha256=
|
|
170
|
+
llms/ui/utils.mjs,sha256=mYLTe5-CncWos4Y4z-hzvXVESKkTuVHDYTRMRGc6Ssc,7993
|
|
162
171
|
llms/ui/lib/chart.js,sha256=dx8FdDX0Rv6OZtZjr9FQh5h-twFsKjfnb-FvFlQ--cU,196176
|
|
163
172
|
llms/ui/lib/charts.mjs,sha256=OPFAifcA4MPRv8pw6I7glVh7Xccv8guio0k35zPBDIY,926
|
|
164
173
|
llms/ui/lib/color.js,sha256=DDG7Pr-qzJHTPISZNSqP_qJR8UflKHEc_56n6xrBugQ,8273
|
|
@@ -173,12 +182,12 @@ llms/ui/lib/vue.mjs,sha256=75FuLhUTPk19sncwNIrm0BGEL0_Qw298-_v01fPWYoI,542872
|
|
|
173
182
|
llms/ui/modules/icons.mjs,sha256=LGcH0ys0QLS2ZKCO42qHpwPYbBV_EssoWLezU4XZEzU,27751
|
|
174
183
|
llms/ui/modules/layout.mjs,sha256=8pAxs8bedQI3b3eRA9nrfpLZznLmrpp4BZvigYAQjpQ,12572
|
|
175
184
|
llms/ui/modules/model-selector.mjs,sha256=6U4rAZ7vmQELFRQGWk4YEtq02v3lyHdMq6yUOp-ArXg,43184
|
|
176
|
-
llms/ui/modules/chat/ChatBody.mjs,sha256=
|
|
185
|
+
llms/ui/modules/chat/ChatBody.mjs,sha256=EOBMKmjCY7MK5UHFmKTjaJMkPWTaHeDDjJ9bvCsHprs,54981
|
|
177
186
|
llms/ui/modules/chat/SettingsDialog.mjs,sha256=HMBJTwrapKrRIAstIIqp0QlJL5O-ho4hzgvfagPfsX8,19930
|
|
178
|
-
llms/ui/modules/chat/index.mjs,sha256=
|
|
179
|
-
llms_py-3.0.
|
|
180
|
-
llms_py-3.0.
|
|
181
|
-
llms_py-3.0.
|
|
182
|
-
llms_py-3.0.
|
|
183
|
-
llms_py-3.0.
|
|
184
|
-
llms_py-3.0.
|
|
187
|
+
llms/ui/modules/chat/index.mjs,sha256=1UKfjIub7PtPmHtoIdKOqf3j9a1UJZjad8VTxtV_EIw,39667
|
|
188
|
+
llms_py-3.0.15.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
|
|
189
|
+
llms_py-3.0.15.dist-info/METADATA,sha256=In3z5zm1VwL5ycrJac_3tOiIH4gQbVT1hG1qWrJoSvY,2195
|
|
190
|
+
llms_py-3.0.15.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
191
|
+
llms_py-3.0.15.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
|
|
192
|
+
llms_py-3.0.15.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
|
|
193
|
+
llms_py-3.0.15.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|