@yak-io/svelte 0.3.0 β 0.5.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.
- package/README.md +78 -52
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/provider.d.ts +18 -3
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +5 -3
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,26 +1,38 @@
|
|
|
1
1
|
# @yak-io/svelte
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> π **Full documentation:** https://docs.yak.io/docs/sdks/svelte
|
|
4
|
+
>
|
|
5
|
+
> π€ **For LLMs / AI agents:** https://docs.yak.io/llms.txt
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
Svelte SDK for [Yak](https://docs.yak.io) β an embeddable AI assistant (text chat **and** push-to-talk voice) for web apps. `createYakProvider` returns a `YakApi` whose reactive state is exposed as Svelte `Readable` stores.
|
|
6
8
|
|
|
7
9
|
```bash
|
|
8
10
|
pnpm add @yak-io/svelte
|
|
9
11
|
```
|
|
10
12
|
|
|
13
|
+
## Exports
|
|
14
|
+
|
|
15
|
+
| Export | Kind | Purpose |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| `createYakProvider(options)` | fn | Create a widget instance. Returns a `YakApi` with stores + `mount`/`destroy`. |
|
|
18
|
+
| `createYakToolset` / `createYakServerAdapter` | fn | Compose GraphQL/REST/tRPC/custom tool adapters into one `onToolCall` (re-exported from `@yak-io/javascript`). |
|
|
19
|
+
| `enableYakLogging` / `disableYakLogging` / `isYakLoggingEnabled` | fn | Toggle verbose SDK logging. |
|
|
20
|
+
| Types | β | `YakProviderOptions`, `YakApi`, `ToolCallEventHandler`, plus core types from `@yak-io/javascript`. |
|
|
21
|
+
|
|
11
22
|
## Quickstart
|
|
12
23
|
|
|
13
|
-
### 1.
|
|
24
|
+
### 1. Create the provider (module scope)
|
|
14
25
|
|
|
15
26
|
```ts
|
|
16
27
|
// src/yak.ts
|
|
17
|
-
import {
|
|
28
|
+
import { goto } from "$app/navigation";
|
|
18
29
|
import { createYakProvider } from "@yak-io/svelte";
|
|
19
30
|
|
|
20
31
|
export const yak = createYakProvider({
|
|
21
32
|
appId: import.meta.env.VITE_YAK_APP_ID,
|
|
33
|
+
mode: "both", // "chat" | "voice" | "both" β default "chat"
|
|
34
|
+
trigger: true, // show the floating launcher pill
|
|
22
35
|
theme: { position: "bottom-right", colorMode: "system" },
|
|
23
|
-
trigger: { label: "Ask with AI" },
|
|
24
36
|
getConfig: async () => {
|
|
25
37
|
const res = await fetch("/api/yak");
|
|
26
38
|
return res.json();
|
|
@@ -35,19 +47,17 @@ export const yak = createYakProvider({
|
|
|
35
47
|
if (!data.ok) throw new Error(data.error);
|
|
36
48
|
return data.result;
|
|
37
49
|
},
|
|
38
|
-
onRedirect: (path) =>
|
|
39
|
-
goto(path);
|
|
40
|
-
},
|
|
50
|
+
onRedirect: (path) => goto(path),
|
|
41
51
|
});
|
|
42
52
|
```
|
|
43
53
|
|
|
44
|
-
### 2. Mount
|
|
54
|
+
### 2. Mount/destroy in your root component
|
|
45
55
|
|
|
46
56
|
```svelte
|
|
47
|
-
<!--
|
|
57
|
+
<!-- +layout.svelte -->
|
|
48
58
|
<script lang="ts">
|
|
49
59
|
import { onMount, onDestroy } from "svelte";
|
|
50
|
-
import { yak } from "
|
|
60
|
+
import { yak } from "$lib/yak";
|
|
51
61
|
|
|
52
62
|
onMount(() => yak.mount());
|
|
53
63
|
onDestroy(() => yak.destroy());
|
|
@@ -56,69 +66,82 @@ export const yak = createYakProvider({
|
|
|
56
66
|
<slot />
|
|
57
67
|
```
|
|
58
68
|
|
|
59
|
-
### 3. Use stores
|
|
69
|
+
### 3. Use the stores
|
|
60
70
|
|
|
61
|
-
`isOpen
|
|
71
|
+
`isOpen`/`isReady` are `Readable` stores β read them with `$`:
|
|
62
72
|
|
|
63
73
|
```svelte
|
|
64
74
|
<script lang="ts">
|
|
65
|
-
import { yak } from "
|
|
66
|
-
const { isOpen,
|
|
75
|
+
import { yak } from "$lib/yak";
|
|
76
|
+
const { isOpen, open, openWithPrompt } = yak;
|
|
67
77
|
</script>
|
|
68
78
|
|
|
69
|
-
<button on:click={open}>Open
|
|
70
|
-
{
|
|
71
|
-
|
|
72
|
-
{/if}
|
|
73
|
-
{#if $isOpen && !$isReady}
|
|
74
|
-
<p>Loadingβ¦</p>
|
|
75
|
-
{/if}
|
|
79
|
+
<button on:click={open}>Open chat</button>
|
|
80
|
+
<button on:click={() => openWithPrompt("How do I get started?")}>Get help</button>
|
|
81
|
+
{#if $isOpen}<span>Chat is open</span>{/if}
|
|
76
82
|
```
|
|
77
83
|
|
|
78
|
-
|
|
84
|
+
## Voice
|
|
85
|
+
|
|
86
|
+
Set `mode: "voice"` or `mode: "both"`, then drive the session. `voiceStart()` must run from a user gesture (browser mic requirement).
|
|
87
|
+
|
|
88
|
+
```svelte
|
|
89
|
+
<script lang="ts">
|
|
90
|
+
import { yak } from "$lib/yak";
|
|
91
|
+
const { voiceToggle, voiceLoading, voiceMachine } = yak;
|
|
92
|
+
</script>
|
|
93
|
+
|
|
94
|
+
<button on:click={voiceToggle} disabled={$voiceLoading}>
|
|
95
|
+
{$voiceMachine.state === "idle" ? "Start voice" : `Stop (${$voiceMachine.state})`}
|
|
96
|
+
</button>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Tool events
|
|
79
100
|
|
|
80
101
|
```ts
|
|
81
102
|
yak.subscribeToToolEvents((event) => {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
103
|
+
// { name, args, ok, result?, error? }
|
|
104
|
+
if (event.ok && event.name.startsWith("tasks.")) refreshTasks();
|
|
85
105
|
});
|
|
86
106
|
```
|
|
87
107
|
|
|
88
|
-
## API
|
|
108
|
+
## API reference
|
|
89
109
|
|
|
90
110
|
### `createYakProvider(options)`
|
|
91
111
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
You must call `yak.mount()` in `onMount()` and `yak.destroy()` in `onDestroy()`.
|
|
95
|
-
|
|
96
|
-
**Options:**
|
|
112
|
+
Returns a `YakApi`. You must call `yak.mount()` in `onMount()` and `yak.destroy()` in `onDestroy()`.
|
|
97
113
|
|
|
98
|
-
| Option | Type | Description |
|
|
99
|
-
|
|
100
|
-
| `appId` | `string` | Your Yak app ID |
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
104
|
-
| `
|
|
105
|
-
| `
|
|
106
|
-
| `
|
|
107
|
-
| `disableRestartButton` | `boolean` | Hide the restart session button |
|
|
108
|
-
| `trigger` | `boolean \| TriggerButtonConfig` | Built-in trigger button |
|
|
114
|
+
| Option | Type | Default | Description |
|
|
115
|
+
| --- | --- | --- | --- |
|
|
116
|
+
| `appId` | `string` | β | Your Yak app ID (required). |
|
|
117
|
+
| `mode` | `"chat" \| "voice" \| "both"` | `"chat"` | Which surfaces the widget exposes. |
|
|
118
|
+
| `trigger` | `boolean \| TriggerButtonConfig` | `false` | Show the floating pill. **Set `true`** to display it; `TriggerButtonConfig` recolors it. |
|
|
119
|
+
| `getConfig` | `ChatConfigProvider` | β | Async provider of routes + tools. Called on open / voice start. |
|
|
120
|
+
| `onToolCall` | `ToolCallHandler` | β | Executes a tool the assistant calls. || `theme` | `Theme` | β | Position, color mode, and colors. |
|
|
121
|
+
| `onRedirect` | `(path: string) => void` | `window.location.assign` | Navigation handler. |
|
|
122
|
+
| `disableRestartButton` | `boolean` | `false` | Hide the restart-session button. |
|
|
109
123
|
|
|
110
124
|
### `YakApi`
|
|
111
125
|
|
|
112
126
|
```ts
|
|
113
127
|
type YakApi = {
|
|
114
|
-
|
|
115
|
-
|
|
128
|
+
// chat
|
|
129
|
+
isOpen: Readable<boolean>;
|
|
130
|
+
isReady: Readable<boolean>;
|
|
131
|
+
chatLoading: Readable<boolean>; // isOpen && !isReady
|
|
116
132
|
open: () => void;
|
|
117
133
|
close: () => void;
|
|
118
134
|
openWithPrompt: (prompt: string) => void;
|
|
119
135
|
subscribeToToolEvents: (handler: ToolCallEventHandler) => () => void;
|
|
120
|
-
|
|
121
|
-
|
|
136
|
+
// voice
|
|
137
|
+
voiceMachine: Readable<VoiceMachine>; // { state, errorMessage? }
|
|
138
|
+
voiceLoading: Readable<boolean>; // state === "connecting"
|
|
139
|
+
voiceStart: () => Promise<void>;
|
|
140
|
+
voiceStop: () => Promise<void>;
|
|
141
|
+
voiceToggle: () => Promise<void>;
|
|
142
|
+
// lifecycle
|
|
143
|
+
mount: () => void; // call in onMount()
|
|
144
|
+
destroy: () => void; // call in onDestroy()
|
|
122
145
|
};
|
|
123
146
|
```
|
|
124
147
|
|
|
@@ -127,9 +150,7 @@ type YakApi = {
|
|
|
127
150
|
```ts
|
|
128
151
|
import { enableYakLogging, disableYakLogging, isYakLoggingEnabled } from "@yak-io/svelte";
|
|
129
152
|
|
|
130
|
-
enableYakLogging();
|
|
131
|
-
disableYakLogging(); // Disable SDK logs
|
|
132
|
-
isYakLoggingEnabled(); // β boolean
|
|
153
|
+
enableYakLogging(); // verbose SDK logs
|
|
133
154
|
```
|
|
134
155
|
|
|
135
156
|
## Types
|
|
@@ -142,12 +163,17 @@ import type {
|
|
|
142
163
|
ChatConfigProvider,
|
|
143
164
|
ToolCallHandler,
|
|
144
165
|
ToolCallEvent,
|
|
166
|
+
ToolAdapter,
|
|
167
|
+
YakToolset,
|
|
168
|
+
YakServerAdapterConfig,
|
|
145
169
|
Theme,
|
|
146
|
-
|
|
170
|
+
WidgetMode,
|
|
147
171
|
WidgetPosition,
|
|
172
|
+
VoiceState,
|
|
173
|
+
VoiceMachine,
|
|
148
174
|
} from "@yak-io/svelte";
|
|
149
175
|
```
|
|
150
176
|
|
|
151
177
|
## License
|
|
152
178
|
|
|
153
|
-
Proprietary β see LICENSE
|
|
179
|
+
Proprietary β see [LICENSE](./LICENSE).
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type { ChatConfigProvider, GraphQLRequest,
|
|
2
|
-
export { disableYakLogging, enableYakLogging, isYakLoggingEnabled } from "@yak-io/javascript";
|
|
1
|
+
export type { ChatConfigProvider, GraphQLRequest, RESTRequest, Theme, ThemeColors, ToolAdapter, ToolCallEvent, ToolCallHandler, TriggerButtonConfig, VoiceMachine, VoiceState, WidgetMode, WidgetPosition, YakServerAdapterConfig, YakToolset, } from "@yak-io/javascript";
|
|
2
|
+
export { createYakServerAdapter, createYakToolset, disableYakLogging, enableYakLogging, isYakLoggingEnabled, } from "@yak-io/javascript";
|
|
3
3
|
export type { ToolCallEventHandler, YakApi, YakProviderOptions } from "./provider.js";
|
|
4
4
|
export { createYakProvider } from "./provider.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,KAAK,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// Public API
|
|
2
|
-
// Re-export logging utilities
|
|
3
|
-
export { disableYakLogging, enableYakLogging, isYakLoggingEnabled } from "@yak-io/javascript";
|
|
2
|
+
// Re-export tool composition + logging utilities
|
|
3
|
+
export { createYakServerAdapter, createYakToolset, disableYakLogging, enableYakLogging, isYakLoggingEnabled, } from "@yak-io/javascript";
|
|
4
4
|
export { createYakProvider } from "./provider.js";
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ChatConfigProvider, type
|
|
1
|
+
import { type ChatConfigProvider, type Theme, type ToolCallEvent, type ToolCallHandler, type TriggerButtonConfig, type VoiceMachine, type WidgetMode } from "@yak-io/javascript";
|
|
2
2
|
import { type Readable } from "svelte/store";
|
|
3
3
|
export type ToolCallEventHandler = (event: ToolCallEvent) => void;
|
|
4
4
|
export type YakProviderOptions = {
|
|
@@ -6,25 +6,40 @@ export type YakProviderOptions = {
|
|
|
6
6
|
mode?: WidgetMode;
|
|
7
7
|
getConfig?: ChatConfigProvider;
|
|
8
8
|
onToolCall?: ToolCallHandler;
|
|
9
|
-
onGraphQLSchemaCall?: GraphQLSchemaHandler;
|
|
10
|
-
onRESTSchemaCall?: RESTSchemaHandler;
|
|
11
9
|
theme?: Theme;
|
|
12
10
|
onRedirect?: (path: string) => void;
|
|
13
11
|
disableRestartButton?: boolean;
|
|
14
12
|
trigger?: boolean | TriggerButtonConfig;
|
|
15
13
|
};
|
|
14
|
+
/** Handle for controlling the Yak widget β chat + voice β from Svelte (stores). */
|
|
16
15
|
export type YakApi = {
|
|
16
|
+
/** Whether the chat panel is currently open. */
|
|
17
17
|
isOpen: Readable<boolean>;
|
|
18
|
+
/** Whether the chat iframe is ready to receive messages. */
|
|
18
19
|
isReady: Readable<boolean>;
|
|
20
|
+
/** Whether the chat is opening but not yet interactive (`isOpen && !isReady`). */
|
|
21
|
+
chatLoading: Readable<boolean>;
|
|
22
|
+
/** Open the chat panel. */
|
|
19
23
|
open: () => void;
|
|
24
|
+
/** Close the chat panel. */
|
|
20
25
|
close: () => void;
|
|
26
|
+
/** Open the chat panel and send a specific prompt. */
|
|
21
27
|
openWithPrompt: (prompt: string) => void;
|
|
28
|
+
/** Subscribe to tool-call completion events; returns an unsubscribe function. */
|
|
22
29
|
subscribeToToolEvents: (handler: ToolCallEventHandler) => () => void;
|
|
30
|
+
/** Current voice state-machine snapshot. `idle` when mode is `chat`. */
|
|
23
31
|
voiceMachine: Readable<VoiceMachine>;
|
|
32
|
+
/** Whether the voice session is establishing its connection (`state === "connecting"`). */
|
|
33
|
+
voiceLoading: Readable<boolean>;
|
|
34
|
+
/** Start a voice session. Must be invoked from a user gesture. */
|
|
24
35
|
voiceStart: () => Promise<void>;
|
|
36
|
+
/** Stop the current voice session. */
|
|
25
37
|
voiceStop: () => Promise<void>;
|
|
38
|
+
/** Toggle voice: start if idle/error, stop if active. */
|
|
26
39
|
voiceToggle: () => Promise<void>;
|
|
40
|
+
/** Mount the widget into the DOM. Call once (e.g. in `onMount`). */
|
|
27
41
|
mount: () => void;
|
|
42
|
+
/** Tear down the widget and remove its listeners. */
|
|
28
43
|
destroy: () => void;
|
|
29
44
|
};
|
|
30
45
|
/**
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,KAAK,QAAQ,EAAsB,MAAM,cAAc,CAAC;AAI1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;CACzC,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,MAAM,GAAG;IAEnB,gDAAgD;IAChD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,4DAA4D;IAC5D,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,kFAAkF;IAClF,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,sDAAsD;IACtD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iFAAiF;IACjF,qBAAqB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAC;IAErE,wEAAwE;IACxE,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,2FAA2F;IAC3F,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,kEAAkE;IAClE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,sCAAsC;IACtC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,yDAAyD;IACzD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,oEAAoE;IACpE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAIF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAuGrE"}
|
package/dist/provider.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { INITIAL_VOICE_MACHINE, logger, YakEmbed, } from "@yak-io/javascript";
|
|
2
|
-
import { readonly, writable } from "svelte/store";
|
|
2
|
+
import { derived, readonly, writable } from "svelte/store";
|
|
3
3
|
// ββ Provider factory ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
4
4
|
/**
|
|
5
5
|
* Creates a yak widget instance (chat + voice) with Svelte stores.
|
|
@@ -47,8 +47,6 @@ export function createYakProvider(options) {
|
|
|
47
47
|
trigger: options.trigger ?? false,
|
|
48
48
|
getConfig: options.getConfig,
|
|
49
49
|
onToolCall: options.onToolCall,
|
|
50
|
-
onGraphQLSchemaCall: options.onGraphQLSchemaCall,
|
|
51
|
-
onRESTSchemaCall: options.onRESTSchemaCall,
|
|
52
50
|
onRedirect: resolvedRedirect,
|
|
53
51
|
options: { disableRestartButton: options.disableRestartButton },
|
|
54
52
|
onToolCallComplete: handleToolCallComplete,
|
|
@@ -86,9 +84,12 @@ export function createYakProvider(options) {
|
|
|
86
84
|
logger.warn("Voice start failed", err);
|
|
87
85
|
}
|
|
88
86
|
};
|
|
87
|
+
const chatLoading = derived([isOpen, isReady], ([$isOpen, $isReady]) => $isOpen && !$isReady);
|
|
88
|
+
const voiceLoading = derived(voiceMachine, ($voiceMachine) => $voiceMachine.state === "connecting");
|
|
89
89
|
return {
|
|
90
90
|
isOpen: readonly(isOpen),
|
|
91
91
|
isReady: readonly(isReady),
|
|
92
|
+
chatLoading,
|
|
92
93
|
open: () => embed.open(),
|
|
93
94
|
close: () => embed.close(),
|
|
94
95
|
openWithPrompt: (prompt) => embed.openWithPrompt(prompt),
|
|
@@ -99,6 +100,7 @@ export function createYakProvider(options) {
|
|
|
99
100
|
};
|
|
100
101
|
},
|
|
101
102
|
voiceMachine: readonly(voiceMachine),
|
|
103
|
+
voiceLoading,
|
|
102
104
|
voiceStart,
|
|
103
105
|
voiceStop: () => embed.voiceStop(),
|
|
104
106
|
voiceToggle: () => embed.voiceToggle(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yak-io/svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Svelte SDK for embedding yak chatbot",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"node": ">=18"
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
|
+
"README.md",
|
|
28
29
|
"dist",
|
|
29
30
|
"LICENSE"
|
|
30
31
|
],
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
"./package.json": "./package.json"
|
|
42
43
|
},
|
|
43
44
|
"dependencies": {
|
|
44
|
-
"@yak-io/javascript": "0.
|
|
45
|
+
"@yak-io/javascript": "0.10.0"
|
|
45
46
|
},
|
|
46
47
|
"peerDependencies": {
|
|
47
48
|
"svelte": "^5.0.0"
|
|
@@ -52,6 +53,7 @@
|
|
|
52
53
|
"typescript": "^5.3.0",
|
|
53
54
|
"@repo/typescript-config": "0.0.0"
|
|
54
55
|
},
|
|
56
|
+
"homepage": "https://docs.yak.io/docs/sdks/svelte",
|
|
55
57
|
"scripts": {
|
|
56
58
|
"build": "tsc",
|
|
57
59
|
"check-types": "tsc --noEmit",
|