@anvaka/vue-llm 0.1.2 → 0.3.0

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.
@@ -1,54 +1,64 @@
1
1
  import { OpenAIProvider as i } from "./OpenAIProvider.js";
2
- import { AnthropicProvider as n } from "./AnthropicProvider.js";
3
- import { GrokProvider as s } from "./GrokProvider.js";
4
- import { GeminiProvider as m } from "./GeminiProvider.js";
5
- import { OllamaProvider as p } from "./OllamaProvider.js";
6
- import { LlamaServerProvider as u } from "./LlamaServerProvider.js";
2
+ import { AnthropicProvider as s } from "./AnthropicProvider.js";
3
+ import { BedrockProvider as n } from "./BedrockProvider.js";
4
+ import { GrokProvider as m } from "./GrokProvider.js";
5
+ import { GeminiProvider as p } from "./GeminiProvider.js";
6
+ import { OllamaProvider as u } from "./OllamaProvider.js";
7
+ import { LlamaServerProvider as E } from "./LlamaServerProvider.js";
7
8
  import { OpenRouterProvider as l } from "./OpenRouterProvider.js";
8
- import { CustomProvider as A } from "./CustomProvider.js";
9
+ import { DeepSeekProvider as A } from "./DeepSeekProvider.js";
10
+ import { CustomProvider as O } from "./CustomProvider.js";
9
11
  const e = {
10
12
  OPENAI: "openai",
11
13
  ANTHROPIC: "anthropic",
14
+ BEDROCK: "bedrock",
12
15
  GROK: "grok",
13
16
  GEMINI: "gemini",
14
17
  OLLAMA: "ollama",
15
18
  LLAMA_SERVER: "llama-server",
16
19
  OPENROUTER: "openrouter",
20
+ DEEPSEEK: "deepseek",
17
21
  CUSTOM: "custom"
18
- }, L = {
22
+ }, S = {
19
23
  [e.OPENAI]: { name: "OpenAI", baseUrl: "https://api.openai.com", requiresApiKey: !0 },
20
24
  [e.ANTHROPIC]: { name: "Anthropic", baseUrl: "https://api.anthropic.com", requiresApiKey: !0 },
25
+ [e.BEDROCK]: { name: "AWS Bedrock", baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com", requiresApiKey: !0 },
21
26
  [e.GROK]: { name: "Grok", baseUrl: "https://api.x.ai", requiresApiKey: !0 },
22
27
  [e.GEMINI]: { name: "Google Gemini", baseUrl: "https://generativelanguage.googleapis.com", requiresApiKey: !0 },
23
28
  [e.OLLAMA]: { name: "Ollama (Native)", baseUrl: "http://localhost:11434", requiresApiKey: !1 },
24
29
  [e.LLAMA_SERVER]: { name: "Local Llama Server", baseUrl: "http://localhost:8080", requiresApiKey: !1 },
25
30
  [e.OPENROUTER]: { name: "OpenRouter", baseUrl: "https://openrouter.ai/api", requiresApiKey: !0 },
31
+ [e.DEEPSEEK]: { name: "DeepSeek", baseUrl: "https://api.deepseek.com", requiresApiKey: !0 },
26
32
  [e.CUSTOM]: { name: "Custom OpenAI Compatible", baseUrl: "", requiresApiKey: !1 }
27
33
  };
28
- function O(t, r) {
34
+ function c(t, r) {
29
35
  switch (t) {
30
36
  case e.OPENAI:
31
37
  return new i(r);
32
38
  case e.ANTHROPIC:
39
+ return new s(r);
40
+ case e.BEDROCK:
33
41
  return new n(r);
34
42
  case e.GROK:
35
- return new s(r);
36
- case e.GEMINI:
37
43
  return new m(r);
38
- case e.OLLAMA:
44
+ case e.GEMINI:
39
45
  return new p(r);
40
- case e.LLAMA_SERVER:
46
+ case e.OLLAMA:
41
47
  return new u(r);
48
+ case e.LLAMA_SERVER:
49
+ return new E(r);
42
50
  case e.OPENROUTER:
43
51
  return new l(r);
44
- case e.CUSTOM:
52
+ case e.DEEPSEEK:
45
53
  return new A(r);
54
+ case e.CUSTOM:
55
+ return new O(r);
46
56
  default:
47
57
  throw new Error(`Unknown provider type: ${t}`);
48
58
  }
49
59
  }
50
60
  const a = /* @__PURE__ */ new Map();
51
- function U(t, r) {
61
+ function b(t, r) {
52
62
  if (typeof t != "string" || !r)
53
63
  throw new Error("registerProvider requires a type string and a class reference");
54
64
  a.set(t, r);
@@ -58,12 +68,12 @@ function N(t, r) {
58
68
  const o = a.get(t);
59
69
  return new o(r);
60
70
  }
61
- return O(t, r);
71
+ return c(t, r);
62
72
  }
63
73
  export {
64
- L as DEFAULT_CONFIGS,
74
+ S as DEFAULT_CONFIGS,
65
75
  e as PROVIDERS,
66
- O as createProvider,
76
+ c as createProvider,
67
77
  N as createProviderFlexible,
68
- U as registerProvider
78
+ b as registerProvider
69
79
  };
@@ -1,12 +1,19 @@
1
1
  import { BaseProvider as o } from "./BaseProvider.js";
2
2
  import { OpenAIProvider as t } from "./OpenAIProvider.js";
3
- import { DEFAULT_CONFIGS as d, PROVIDERS as v, createProvider as p, createProviderFlexible as x, registerProvider as a } from "./factory.js";
3
+ import { AnthropicProvider as p } from "./AnthropicProvider.js";
4
+ import { BEDROCK_CLAUDE_MODELS as v, BedrockProvider as x } from "./BedrockProvider.js";
5
+ import { DeepSeekProvider as m } from "./DeepSeekProvider.js";
6
+ import { DEFAULT_CONFIGS as E, PROVIDERS as O, createProvider as c, createProviderFlexible as A, registerProvider as S } from "./factory.js";
4
7
  export {
8
+ p as AnthropicProvider,
9
+ v as BEDROCK_CLAUDE_MODELS,
5
10
  o as BaseProvider,
6
- d as DEFAULT_CONFIGS,
11
+ x as BedrockProvider,
12
+ E as DEFAULT_CONFIGS,
13
+ m as DeepSeekProvider,
7
14
  t as OpenAIProvider,
8
- v as PROVIDERS,
9
- p as createProvider,
10
- x as createProviderFlexible,
11
- a as registerProvider
15
+ O as PROVIDERS,
16
+ c as createProvider,
17
+ A as createProviderFlexible,
18
+ S as registerProvider
12
19
  };
@@ -1,4 +1,4 @@
1
- import { ref as u, computed as L, watch as G, onMounted as Ne, onUnmounted as Je, createElementBlock as o, createCommentVNode as r, openBlock as n, createElementVNode as s, withModifiers as J, createTextVNode as R, toDisplayString as d, withDirectives as y, Fragment as S, renderList as z, unref as re, vModelSelect as ue, vModelText as I, vModelCheckbox as Re, normalizeClass as Y, createVNode as je, nextTick as qe } from "vue";
1
+ import { ref as u, computed as L, watch as G, onMounted as Ne, onUnmounted as Je, openBlock as o, createElementBlock as n, createElementVNode as s, withModifiers as J, createTextVNode as R, toDisplayString as d, createCommentVNode as r, withDirectives as y, Fragment as S, renderList as z, unref as re, vModelSelect as ue, vModelText as I, vModelCheckbox as Re, normalizeClass as Y, createVNode as je, nextTick as qe } from "vue";
2
2
  import { useLLM as Oe, createDefaultConfig as de } from "../useLLM.js";
3
3
  import { DEFAULT_CONFIGS as Be, createProvider as We } from "../../providers/factory.js";
4
4
  import Ge from "./StoredKeysManager.vue.js";
@@ -226,7 +226,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
226
226
  document.removeEventListener("keydown", oe);
227
227
  }), (l, e) => {
228
228
  var i, m, ie;
229
- return x.isVisible ? (n(), o("div", {
229
+ return x.isVisible ? (o(), n("div", {
230
230
  key: 0,
231
231
  class: "llm-modal-overlay",
232
232
  onClick: N
@@ -239,7 +239,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
239
239
  s("div", Ye, [
240
240
  s("h2", null, [
241
241
  e[12] || (e[12] = R(" Manage LLM Providers ", -1)),
242
- v.value ? (n(), o("span", He, d(f.value ? " - Edit" : " - Add"), 1)) : r("", !0)
242
+ v.value ? (o(), n("span", He, d(f.value ? " - Edit" : " - Add"), 1)) : r("", !0)
243
243
  ]),
244
244
  s("button", {
245
245
  class: "llm-btn llm-btn--ghost llm-btn--sm llm-close-btn",
@@ -247,7 +247,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
247
247
  }, "×")
248
248
  ]),
249
249
  s("div", Qe, [
250
- v.value ? (n(), o("div", Xe, [
250
+ v.value ? (o(), n("div", Xe, [
251
251
  s("div", Ze, [
252
252
  e[22] || (e[22] = s("label", { class: "llm-field-label" }, "Provider Type:", -1)),
253
253
  y(s("select", {
@@ -256,14 +256,14 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
256
256
  class: "llm-form-control"
257
257
  }, [
258
258
  e[13] || (e[13] = s("option", { value: "" }, "Select a provider...", -1)),
259
- (n(!0), o(S, null, z(re(V), (a, p) => (n(), o("option", {
259
+ (o(!0), n(S, null, z(re(V), (a, p) => (o(), n("option", {
260
260
  key: p,
261
261
  value: p
262
262
  }, d(a.name), 9, el))), 128))
263
263
  ], 544), [
264
264
  [ue, t.value.provider]
265
265
  ]),
266
- t.value.provider ? (n(), o(S, { key: 0 }, [
266
+ t.value.provider ? (o(), n(S, { key: 0 }, [
267
267
  e[14] || (e[14] = s("label", { class: "llm-field-label" }, "Provider Name:", -1)),
268
268
  y(s("input", {
269
269
  "onUpdate:modelValue": e[1] || (e[1] = (a) => t.value.name = a),
@@ -275,7 +275,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
275
275
  [I, t.value.name]
276
276
  ])
277
277
  ], 64)) : r("", !0),
278
- t.value.provider ? (n(), o(S, { key: 1 }, [
278
+ t.value.provider ? (o(), n(S, { key: 1 }, [
279
279
  e[18] || (e[18] = s("label", { class: "llm-field-label" }, "Base URL:", -1)),
280
280
  y(s("input", {
281
281
  "onUpdate:modelValue": e[2] || (e[2] = (a) => t.value.baseUrl = a),
@@ -286,7 +286,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
286
286
  }, null, 8, tl), [
287
287
  [I, t.value.baseUrl]
288
288
  ]),
289
- (m = A.value) != null && m.requiresApiKey || t.value.provider === "custom" ? (n(), o(S, { key: 0 }, [
289
+ (m = A.value) != null && m.requiresApiKey || t.value.provider === "custom" ? (o(), n(S, { key: 0 }, [
290
290
  e[16] || (e[16] = s("label", { class: "llm-field-label" }, "API Key:", -1)),
291
291
  s("div", sl, [
292
292
  s("div", al, [
@@ -299,7 +299,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
299
299
  }, null, 8, ol), [
300
300
  [I, t.value.apiKey]
301
301
  ]),
302
- re(le)(t.value.provider) ? (n(), o("button", {
302
+ re(le)(t.value.provider) ? (o(), n("button", {
303
303
  key: 0,
304
304
  type: "button",
305
305
  class: "llm-btn llm-btn--ghost llm-btn--sm",
@@ -309,7 +309,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
309
309
  ]),
310
310
  s("small", nl, [
311
311
  e[15] || (e[15] = R(" ⚠️ API key is stored locally in your browser ", -1)),
312
- t.value.provider === "custom" ? (n(), o("span", il, " (optional for custom providers)")) : r("", !0)
312
+ t.value.provider === "custom" ? (o(), n("span", il, " (optional for custom providers)")) : r("", !0)
313
313
  ])
314
314
  ])
315
315
  ], 64)) : r("", !0),
@@ -321,7 +321,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
321
321
  class: "llm-form-control"
322
322
  }, [
323
323
  s("option", dl, d(_.value ? "Loading models..." : "Select a model..."), 1),
324
- (n(!0), o(S, null, z(U.value, (a) => (n(), o("option", {
324
+ (o(!0), n(S, null, z(U.value, (a) => (o(), n("option", {
325
325
  key: a,
326
326
  value: a
327
327
  }, d(a), 9, vl))), 128))
@@ -334,8 +334,8 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
334
334
  disabled: !t.value.baseUrl || _.value,
335
335
  title: "Refresh models list"
336
336
  }, d(_.value ? "Loading..." : "Refresh"), 9, cl),
337
- h.value ? (n(), o("div", ml, d(h.value), 1)) : r("", !0),
338
- ke.value ? (n(), o("div", fl, [
337
+ h.value ? (o(), n("div", ml, d(h.value), 1)) : r("", !0),
338
+ ke.value ? (o(), n("div", fl, [
339
339
  s("label", bl, [
340
340
  y(s("input", {
341
341
  type: "checkbox",
@@ -366,7 +366,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
366
366
  { number: !0 }
367
367
  ]
368
368
  ]),
369
- D.value ? (n(), o("small", kl, " This model uses a fixed temperature of 1. ")) : (n(), o("small", yl, " Controls randomness: 0 = deterministic, 2 = very creative "))
369
+ D.value ? (o(), n("small", kl, " This model uses a fixed temperature of 1. ")) : (o(), n("small", yl, " Controls randomness: 0 = deterministic, 2 = very creative "))
370
370
  ]),
371
371
  e[21] || (e[21] = s("label", { class: "llm-field-label" }, "Max Tokens:", -1)),
372
372
  y(s("input", {
@@ -387,14 +387,14 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
387
387
  ])
388
388
  ], 64)) : r("", !0)
389
389
  ]),
390
- c.value ? (n(), o("div", {
390
+ c.value ? (o(), n("div", {
391
391
  key: 0,
392
392
  class: Y(["llm-test-result", c.value.success ? "llm-test-result--success" : "llm-test-result--error"])
393
393
  }, d(c.value.message), 3)) : r("", !0)
394
- ])) : (n(), o("div", hl, [
395
- T.value.length > 0 ? (n(), o("div", Cl, [
394
+ ])) : (o(), n("div", hl, [
395
+ T.value.length > 0 ? (o(), n("div", Cl, [
396
396
  e[23] || (e[23] = s("h3", null, "Configured Providers", -1)),
397
- (n(!0), o(S, null, z(T.value, (a) => (n(), o("div", {
397
+ (o(!0), n(S, null, z(T.value, (a) => (o(), n("div", {
398
398
  key: a.id,
399
399
  class: Y(["llm-provider-item", {
400
400
  active: a.id === M.value,
@@ -406,10 +406,10 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
406
406
  s("div", wl, [
407
407
  s("div", Sl, [
408
408
  R(d(a.name) + " ", 1),
409
- a.enabled === !1 ? (n(), o("span", Tl, "Disabled")) : r("", !0)
409
+ a.enabled === !1 ? (o(), n("span", Tl, "Disabled")) : r("", !0)
410
410
  ]),
411
- a.id === M.value ? (n(), o("span", Ml, "Active")) : r("", !0),
412
- x.showJudge && a.id === k.value ? (n(), o("span", Kl, "Judge")) : r("", !0)
411
+ a.id === M.value ? (o(), n("span", Ml, "Active")) : r("", !0),
412
+ x.showJudge && a.id === k.value ? (o(), n("span", Kl, "Judge")) : r("", !0)
413
413
  ]),
414
414
  s("div", Ul, [
415
415
  s("button", {
@@ -425,7 +425,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
425
425
  onClick: e[8] || (e[8] = J(() => {
426
426
  }, ["stop"]))
427
427
  }, [
428
- x.showJudge && a.enabled !== !1 ? (n(), o("button", {
428
+ x.showJudge && a.enabled !== !1 ? (o(), n("button", {
429
429
  key: 0,
430
430
  class: "llm-btn llm-btn--ghost llm-btn--sm",
431
431
  onClick: (p) => Fe(a),
@@ -446,13 +446,13 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
446
446
  }, " Delete ", 8, Vl)
447
447
  ])
448
448
  ], 10, _l))), 128))
449
- ])) : (n(), o("div", $l, [...e[24] || (e[24] = [
449
+ ])) : (o(), n("div", $l, [...e[24] || (e[24] = [
450
450
  s("p", null, "Connect your first AI provider to start chatting.", -1),
451
451
  s("p", null, `Click "Add New Provider" below. You'll need a base URL and, for some providers, an API key.`, -1),
452
452
  s("p", { class: "llm-security-note" }, "API keys are stored locally in your browser.", -1)
453
453
  ])]))
454
454
  ])),
455
- q.value ? (n(), o("div", {
455
+ q.value ? (o(), n("div", {
456
456
  key: 2,
457
457
  class: "llm-keys-manager-overlay",
458
458
  onClick: ne
@@ -470,12 +470,12 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
470
470
  ])) : r("", !0)
471
471
  ]),
472
472
  s("div", Dl, [
473
- v.value ? r("", !0) : (n(), o("button", {
473
+ v.value ? r("", !0) : (o(), n("button", {
474
474
  key: 0,
475
475
  class: "llm-btn llm-btn--secondary",
476
476
  onClick: Ae
477
477
  }, " Add New Provider ")),
478
- !v.value && he.value ? (n(), o("button", {
478
+ !v.value && he.value ? (o(), n("button", {
479
479
  key: 1,
480
480
  class: "llm-btn llm-btn--ghost",
481
481
  onClick: xe
@@ -485,7 +485,7 @@ const Ye = { class: "llm-modal-header" }, He = { key: 0 }, Qe = { class: "llm-mo
485
485
  class: "llm-btn llm-btn--ghost",
486
486
  onClick: e[10] || (e[10] = (a) => v.value ? Ee() : N())
487
487
  }, " Close "),
488
- v.value ? (n(), o("button", {
488
+ v.value ? (o(), n("button", {
489
489
  key: 2,
490
490
  class: "llm-btn llm-btn--primary",
491
491
  onClick: Me,
@@ -1,4 +1,4 @@
1
- import { ref as c, onMounted as _, createElementBlock as r, openBlock as n, withDirectives as g, createElementVNode as i, Fragment as P, renderList as h, toDisplayString as S, vModelSelect as y } from "vue";
1
+ import { ref as c, onMounted as _, openBlock as r, createElementBlock as n, withDirectives as g, createElementVNode as i, Fragment as P, renderList as h, toDisplayString as S, vModelSelect as y } from "vue";
2
2
  import { useLLM as I } from "../useLLM.js";
3
3
  /* empty css */
4
4
  import M from "../../_virtual/_plugin-vue_export-helper.js";
@@ -24,7 +24,7 @@ const k = { class: "llm-provider-selector" }, x = ["value"], C = {
24
24
  };
25
25
  return _(() => {
26
26
  m();
27
- }), (b, t) => (n(), r("div", k, [
27
+ }), (b, t) => (r(), n("div", k, [
28
28
  g(i("select", {
29
29
  "onUpdate:modelValue": t[0] || (t[0] = (o) => e.value = o),
30
30
  onChange: f,
@@ -34,7 +34,7 @@ const k = { class: "llm-provider-selector" }, x = ["value"], C = {
34
34
  value: "",
35
35
  disabled: ""
36
36
  }, "Select Provider...", -1)),
37
- (n(!0), r(P, null, h(a.value, (o) => (n(), r("option", {
37
+ (r(!0), n(P, null, h(a.value, (o) => (r(), n("option", {
38
38
  key: o.id,
39
39
  value: o.id
40
40
  }, S(o.name), 9, x))), 128)),
@@ -1,4 +1,4 @@
1
- import { ref as v, watch as R, onMounted as G, createElementBlock as d, openBlock as c, createElementVNode as s, createCommentVNode as b, Fragment as D, renderList as V, toDisplayString as p, withDirectives as S, withKeys as K, vModelDynamic as U, unref as q, vModelSelect as z, nextTick as J } from "vue";
1
+ import { ref as v, watch as R, onMounted as G, openBlock as d, createElementBlock as c, createElementVNode as s, createCommentVNode as b, Fragment as D, renderList as V, toDisplayString as p, withDirectives as S, withKeys as K, vModelDynamic as U, unref as q, vModelSelect as z, nextTick as J } from "vue";
2
2
  import { useLLM as Q } from "../useLLM.js";
3
3
  import { DEFAULT_CONFIGS as W } from "../../providers/factory.js";
4
4
  import { maskApiKey as X } from "../../core/keyStore.js";
@@ -98,7 +98,7 @@ This action cannot be undone.`) && F(e) && (h(), w("keysUpdated"));
98
98
  }, 500);
99
99
  }), G(() => {
100
100
  h();
101
- }), (e, t) => (c(), d("div", Z, [
101
+ }), (e, t) => (d(), c("div", Z, [
102
102
  s("div", I, [
103
103
  t[5] || (t[5] = s("h3", null, "Stored API Keys", -1)),
104
104
  s("button", {
@@ -108,12 +108,12 @@ This action cannot be undone.`) && F(e) && (h(), w("keysUpdated"));
108
108
  ]),
109
109
  s("div", ee, [
110
110
  s("div", te, [
111
- Object.keys(y.value).length === 0 && !f.value ? (c(), d("div", le, [...t[6] || (t[6] = [
111
+ Object.keys(y.value).length === 0 && !f.value ? (d(), c("div", le, [...t[6] || (t[6] = [
112
112
  s("p", null, "No API keys stored yet.", -1),
113
113
  s("small", null, "Keys are automatically stored when you save a provider configuration.", -1)
114
114
  ])])) : b("", !0),
115
- Object.keys(y.value).length > 0 || f.value ? (c(), d("div", se, [
116
- (c(!0), d(D, null, V(y.value, (o, l) => (c(), d("div", {
115
+ Object.keys(y.value).length > 0 || f.value ? (d(), c("div", se, [
116
+ (d(!0), c(D, null, V(y.value, (o, l) => (d(), c("div", {
117
117
  key: l,
118
118
  class: "llm-key-item"
119
119
  }, [
@@ -123,7 +123,7 @@ This action cannot be undone.`) && F(e) && (h(), w("keysUpdated"));
123
123
  s("div", re, p(E(l)), 1),
124
124
  s("span", ae, p(O(o.storedAt)), 1)
125
125
  ]),
126
- o.serviceEndpoint ? (c(), d("div", de, [
126
+ o.serviceEndpoint ? (d(), c("div", de, [
127
127
  s("small", null, p(o.serviceEndpoint), 1)
128
128
  ])) : b("", !0),
129
129
  s("div", ce, [
@@ -155,7 +155,7 @@ This action cannot be undone.`) && F(e) && (h(), w("keysUpdated"));
155
155
  ])
156
156
  ])
157
157
  ]))), 128)),
158
- f.value ? (c(), d("div", pe, [
158
+ f.value ? (d(), c("div", pe, [
159
159
  s("div", ye, [
160
160
  s("div", fe, [
161
161
  s("div", _e, [
@@ -164,7 +164,7 @@ This action cannot be undone.`) && F(e) && (h(), w("keysUpdated"));
164
164
  class: "llm-form-control llm-provider-select"
165
165
  }, [
166
166
  t[7] || (t[7] = s("option", { value: "" }, "Select provider type...", -1)),
167
- (c(!0), d(D, null, V(q(_), (o, l) => (c(), d("option", {
167
+ (d(!0), c(D, null, V(q(_), (o, l) => (d(), c("option", {
168
168
  key: l,
169
169
  value: l,
170
170
  disabled: l !== "custom" && k(l)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvaka/vue-llm",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "Browser-only LLM client with provider adapters and Vue 3 components",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -8,7 +8,8 @@
8
8
  "module": "dist/index.js",
9
9
  "scripts": {
10
10
  "build": "vite build",
11
- "dev": "vite build --watch"
11
+ "dev": "vite build --watch",
12
+ "test:providers": "node test/providers.mjs"
12
13
  },
13
14
  "exports": {
14
15
  ".": {
@@ -23,6 +24,10 @@
23
24
  "import": "./dist/providers/index.js",
24
25
  "default": "./dist/providers/index.js"
25
26
  },
27
+ "./pricing": {
28
+ "import": "./dist/pricing/index.js",
29
+ "default": "./dist/pricing/index.js"
30
+ },
26
31
  "./styles/variables.css": "./src/styles/variables.css",
27
32
  "./styles/components.css": "./src/styles/components.css",
28
33
  "./dist/vue-llm.css": "./dist/vue-llm.css"