@yak-io/svelte 0.2.0 → 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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
+ export type { ChatConfigProvider, GraphQLRequest, GraphQLSchemaHandler, GraphQLSchemaSource, OpenAPISchemaSource, RESTRequest, RESTSchemaHandler, SchemaSource, Theme, ThemeColors, ToolCallEvent, ToolCallHandler, TriggerButtonConfig, VoiceMachine, VoiceState, WidgetMode, WidgetPosition, } from "@yak-io/javascript";
2
+ export { disableYakLogging, enableYakLogging, isYakLoggingEnabled } from "@yak-io/javascript";
3
+ export type { ToolCallEventHandler, YakApi, YakProviderOptions } from "./provider.js";
1
4
  export { createYakProvider } from "./provider.js";
2
- export type { YakProviderOptions, YakApi, ToolCallEventHandler } from "./provider.js";
3
- export { enableYakLogging, disableYakLogging, isYakLoggingEnabled } from "@yak-io/javascript";
4
- export type { GraphQLSchemaHandler, RESTSchemaHandler, GraphQLRequest, RESTRequest, ToolCallHandler, ToolCallEvent, SchemaSource, GraphQLSchemaSource, OpenAPISchemaSource, Theme, ThemeColors, TriggerButtonConfig, WidgetPosition, ChatConfigProvider, } from "@yak-io/javascript";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGtF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9F,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,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
- export { createYakProvider } from "./provider.js";
3
2
  // Re-export logging utilities
4
- export { enableYakLogging, disableYakLogging, isYakLoggingEnabled } from "@yak-io/javascript";
3
+ export { disableYakLogging, enableYakLogging, isYakLoggingEnabled } from "@yak-io/javascript";
4
+ export { createYakProvider } from "./provider.js";
@@ -1,8 +1,9 @@
1
+ import { type ChatConfigProvider, type GraphQLSchemaHandler, type RESTSchemaHandler, type Theme, type ToolCallEvent, type ToolCallHandler, type TriggerButtonConfig, type VoiceMachine, type WidgetMode } from "@yak-io/javascript";
1
2
  import { type Readable } from "svelte/store";
2
- import { type TriggerButtonConfig, type ChatConfigProvider, type ToolCallHandler, type ToolCallEvent, type GraphQLSchemaHandler, type RESTSchemaHandler, type Theme } from "@yak-io/javascript";
3
3
  export type ToolCallEventHandler = (event: ToolCallEvent) => void;
4
4
  export type YakProviderOptions = {
5
5
  appId: string;
6
+ mode?: WidgetMode;
6
7
  getConfig?: ChatConfigProvider;
7
8
  onToolCall?: ToolCallHandler;
8
9
  onGraphQLSchemaCall?: GraphQLSchemaHandler;
@@ -13,41 +14,34 @@ export type YakProviderOptions = {
13
14
  trigger?: boolean | TriggerButtonConfig;
14
15
  };
15
16
  export type YakApi = {
16
- /** Readable store — whether the chat widget is open */
17
17
  isOpen: Readable<boolean>;
18
- /** Readable store — whether the iframe is ready */
19
18
  isReady: Readable<boolean>;
20
- /** Open the chat widget */
21
19
  open: () => void;
22
- /** Close the chat widget */
23
20
  close: () => void;
24
- /** Open the chat widget and send a prompt */
25
21
  openWithPrompt: (prompt: string) => void;
26
- /** Subscribe to tool call completion events. Returns an unsubscribe function. */
27
22
  subscribeToToolEvents: (handler: ToolCallEventHandler) => () => void;
28
- /** Mount the widget DOM. Call in onMount(). */
23
+ voiceMachine: Readable<VoiceMachine>;
24
+ voiceStart: () => Promise<void>;
25
+ voiceStop: () => Promise<void>;
26
+ voiceToggle: () => Promise<void>;
29
27
  mount: () => void;
30
- /** Destroy the widget DOM. Call in onDestroy(). */
31
28
  destroy: () => void;
32
29
  };
33
30
  /**
34
- * Creates a yak chat widget instance with Svelte-compatible stores.
31
+ * Creates a yak widget instance (chat + voice) with Svelte stores.
35
32
  *
36
33
  * @example
37
34
  * ```svelte
38
35
  * <script lang="ts">
39
- * import { onMount, onDestroy } from "svelte";
40
- * import { createYakProvider } from "@yak-io/svelte";
36
+ * import { onMount, onDestroy } from "svelte";
37
+ * import { createYakProvider } from "@yak-io/svelte";
41
38
  *
42
- * const yak = createYakProvider({ appId: "my-app" });
43
- * const { isOpen, isReady } = yak;
39
+ * const yak = createYakProvider({ appId: "my-app", mode: "both" });
40
+ * const { isOpen, voiceMachine } = yak;
44
41
  *
45
- * onMount(() => yak.mount());
46
- * onDestroy(() => yak.destroy());
42
+ * onMount(() => yak.mount());
43
+ * onDestroy(() => yak.destroy());
47
44
  * </script>
48
- *
49
- * <button onclick={() => yak.open()}>Open Chat</button>
50
- * <p>Open: {$isOpen}, Ready: {$isReady}</p>
51
45
  * ```
52
46
  */
53
47
  export declare function createYakProvider(options: YakProviderOptions): YakApi;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,KAAK,EACX,MAAM,oBAAoB,CAAC;AAK5B,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,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,MAAM,MAAM,MAAM,GAAG;IACnB,uDAAuD;IACvD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,mDAAmD;IACnD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,6CAA6C;IAC7C,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iFAAiF;IACjF,qBAAqB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAC;IACrE,+CAA+C;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAIF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAkFrE"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAGzB,KAAK,iBAAiB,EACtB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,cAAc,CAAC;AAIjE,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,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,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,MAAM,MAAM,MAAM,GAAG;IAEnB,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,qBAAqB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,MAAM,IAAI,CAAC;IAErE,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAIF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAiGrE"}
package/dist/provider.js CHANGED
@@ -1,30 +1,27 @@
1
- import { writable, readonly } from "svelte/store";
2
- import { YakEmbed, } from "@yak-io/javascript";
3
- import { logger } from "@yak-io/javascript";
1
+ import { INITIAL_VOICE_MACHINE, logger, YakEmbed, } from "@yak-io/javascript";
2
+ import { readonly, writable } from "svelte/store";
4
3
  // ── Provider factory ────────────────────────────────────────────────────────
5
4
  /**
6
- * Creates a yak chat widget instance with Svelte-compatible stores.
5
+ * Creates a yak widget instance (chat + voice) with Svelte stores.
7
6
  *
8
7
  * @example
9
8
  * ```svelte
10
9
  * <script lang="ts">
11
- * import { onMount, onDestroy } from "svelte";
12
- * import { createYakProvider } from "@yak-io/svelte";
10
+ * import { onMount, onDestroy } from "svelte";
11
+ * import { createYakProvider } from "@yak-io/svelte";
13
12
  *
14
- * const yak = createYakProvider({ appId: "my-app" });
15
- * const { isOpen, isReady } = yak;
13
+ * const yak = createYakProvider({ appId: "my-app", mode: "both" });
14
+ * const { isOpen, voiceMachine } = yak;
16
15
  *
17
- * onMount(() => yak.mount());
18
- * onDestroy(() => yak.destroy());
16
+ * onMount(() => yak.mount());
17
+ * onDestroy(() => yak.destroy());
19
18
  * </script>
20
- *
21
- * <button onclick={() => yak.open()}>Open Chat</button>
22
- * <p>Open: {$isOpen}, Ready: {$isReady}</p>
23
19
  * ```
24
20
  */
25
21
  export function createYakProvider(options) {
26
22
  const isOpen = writable(false);
27
23
  const isReady = writable(false);
24
+ const voiceMachine = writable(INITIAL_VOICE_MACHINE);
28
25
  const toolEventSubscribers = new Set();
29
26
  const handleToolCallComplete = (event) => {
30
27
  logger.debug("Tool call completed, notifying subscribers:", {
@@ -45,8 +42,10 @@ export function createYakProvider(options) {
45
42
  (typeof window !== "undefined" ? (path) => window.location.assign(path) : undefined);
46
43
  const embed = new YakEmbed({
47
44
  appId: options.appId,
45
+ mode: options.mode,
48
46
  theme: options.theme,
49
47
  trigger: options.trigger ?? false,
48
+ getConfig: options.getConfig,
50
49
  onToolCall: options.onToolCall,
51
50
  onGraphQLSchemaCall: options.onGraphQLSchemaCall,
52
51
  onRESTSchemaCall: options.onRESTSchemaCall,
@@ -54,11 +53,11 @@ export function createYakProvider(options) {
54
53
  options: { disableRestartButton: options.disableRestartButton },
55
54
  onToolCallComplete: handleToolCallComplete,
56
55
  });
57
- // Sync embed state → stores
58
56
  embed.onStateChange((state) => {
59
57
  isOpen.set(state.isOpen);
60
58
  isReady.set(state.isReady);
61
59
  });
60
+ embed.onVoiceStateChange((m) => voiceMachine.set(m));
62
61
  // Fetch chat config on first open
63
62
  if (options.getConfig) {
64
63
  const getConfig = options.getConfig;
@@ -79,6 +78,14 @@ export function createYakProvider(options) {
79
78
  }
80
79
  });
81
80
  }
81
+ const voiceStart = async () => {
82
+ try {
83
+ await embed.voiceStart();
84
+ }
85
+ catch (err) {
86
+ logger.warn("Voice start failed", err);
87
+ }
88
+ };
82
89
  return {
83
90
  isOpen: readonly(isOpen),
84
91
  isReady: readonly(isReady),
@@ -91,6 +98,10 @@ export function createYakProvider(options) {
91
98
  toolEventSubscribers.delete(handler);
92
99
  };
93
100
  },
101
+ voiceMachine: readonly(voiceMachine),
102
+ voiceStart,
103
+ voiceStop: () => embed.voiceStop(),
104
+ voiceToggle: () => embed.voiceToggle(),
94
105
  mount: () => embed.mount(),
95
106
  destroy: () => embed.destroy(),
96
107
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yak-io/svelte",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Svelte SDK for embedding yak chatbot",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -41,14 +41,14 @@
41
41
  "./package.json": "./package.json"
42
42
  },
43
43
  "dependencies": {
44
- "@yak-io/javascript": "0.7.0"
44
+ "@yak-io/javascript": "0.8.0"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "svelte": "^5.0.0"
48
48
  },
49
49
  "devDependencies": {
50
- "@types/node": "^24.12.0",
51
- "svelte": "^5.34.7",
50
+ "@types/node": "^24.12.4",
51
+ "svelte": "^5.55.7",
52
52
  "typescript": "^5.3.0",
53
53
  "@repo/typescript-config": "0.0.0"
54
54
  },