@yak-io/react 0.10.0 → 0.11.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 CHANGED
@@ -20,6 +20,7 @@ pnpm add @yak-io/react
20
20
  | `YakWidget` | component | The floating launcher pill. Render it inside `YakProvider`, or omit it and build your own trigger. |
21
21
  | `useYak()` | hook | Imperative control of chat + voice, plus reactive state. |
22
22
  | `useYakToolEvent(handler)` | hook | Run a callback after each tool call (e.g. cache invalidation). |
23
+ | `createYakToolset` / `createYakServerAdapter` | fn | Compose GraphQL/REST/tRPC/custom tool adapters into one `onToolCall` (re-exported from `@yak-io/javascript`). |
23
24
  | `enableYakLogging` / `disableYakLogging` / `isYakLoggingEnabled` | fn | Toggle verbose SDK logging. |
24
25
  | Types | — | `YakProviderProps`, `YakWidgetProps`, `YakContextValue`, plus core types re-exported from `@yak-io/javascript`. |
25
26
 
@@ -121,10 +122,7 @@ function TasksPage() {
121
122
  | `children` | `ReactNode` | — | Your app (required). |
122
123
  | `mode` | `"chat" \| "voice" \| "both"` | `"chat"` | Which surfaces are exposed. |
123
124
  | `getConfig` | `ChatConfigProvider` | — | Async provider of routes + tools. Called on open / voice start. |
124
- | `onToolCall` | `ToolCallHandler` | — | Executes a tool the assistant calls. |
125
- | `onGraphQLSchemaCall` | `GraphQLSchemaHandler` | — | Handles GraphQL schema tool calls. |
126
- | `onRESTSchemaCall` | `RESTSchemaHandler` | — | Handles REST/OpenAPI schema tool calls. |
127
- | `theme` | `Theme` | — | Position, color mode, and colors. |
125
+ | `onToolCall` | `ToolCallHandler` | — | Executes a tool the assistant calls. || `theme` | `Theme` | — | Position, color mode, and colors. |
128
126
  | `onRedirect` | `(path: string) => void` | `window.location.assign` | Navigation handler. |
129
127
  | `disableRestartButton` | `boolean` | `false` | Hide the restart-session button. |
130
128
  | `trigger` | `boolean \| TriggerButtonConfig` | `false` | Render the provider's built-in pill. Leave `false` and use `<YakWidget>` instead. |
@@ -188,6 +186,9 @@ import type {
188
186
  ChatConfigProvider,
189
187
  ToolCallHandler,
190
188
  ToolCallEvent,
189
+ ToolAdapter,
190
+ YakToolset,
191
+ YakServerAdapterConfig,
191
192
  Theme,
192
193
  WidgetMode,
193
194
  WidgetPosition,
@@ -1,4 +1,4 @@
1
- import { type ChatConfigProvider, type GraphQLSchemaHandler, type RESTSchemaHandler, type Theme, type ToolCallHandler, type TriggerButtonConfig, type UserIdentity, type WidgetMode } from "@yak-io/javascript";
1
+ import { type ChatConfigProvider, type Theme, type ToolCallHandler, type TriggerButtonConfig, type UserIdentity, type WidgetMode } from "@yak-io/javascript";
2
2
  import type React from "react";
3
3
  /**
4
4
  * Props for YakProvider
@@ -6,6 +6,12 @@ import type React from "react";
6
6
  export type YakProviderProps = {
7
7
  /** App identifier in the yak SaaS */
8
8
  appId: string;
9
+ /**
10
+ * Override the origin the chat/voice runtime connects to. Defaults to
11
+ * `https://chat.yak.io`. Read once when the provider mounts; most integrators
12
+ * never set this.
13
+ */
14
+ origin?: string;
9
15
  /**
10
16
  * Which experiences this widget exposes.
11
17
  * "chat" — chat only (iframe).
@@ -25,14 +31,6 @@ export type YakProviderProps = {
25
31
  * The consuming platform decides how to execute (browser, server fetch, etc.)
26
32
  */
27
33
  onToolCall?: ToolCallHandler;
28
- /**
29
- * Handler for GraphQL schema tool calls.
30
- */
31
- onGraphQLSchemaCall?: GraphQLSchemaHandler;
32
- /**
33
- * Handler for REST/OpenAPI schema tool calls.
34
- */
35
- onRESTSchemaCall?: RESTSchemaHandler;
36
34
  /** Optional theme configuration */
37
35
  theme?: Theme;
38
36
  /** Optional redirect handler (defaults to window.location.assign) */
@@ -62,5 +60,5 @@ export type YakProviderProps = {
62
60
  * (panel, iframe, optional trigger) is delegated to YakEmbed. Consumers
63
61
  * access both surfaces via `useYak()`.
64
62
  */
65
- export declare function YakProvider({ appId, mode, getConfig, onToolCall, onGraphQLSchemaCall, onRESTSchemaCall, theme, onRedirect, disableRestartButton, trigger, user, children, }: YakProviderProps): React.JSX.Element;
63
+ export declare function YakProvider({ appId, origin, mode, getConfig, onToolCall, theme, onRedirect, disableRestartButton, trigger, user, children, }: YakProviderProps): React.JSX.Element;
66
64
  //# sourceMappingURL=YakProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"YakProvider.d.ts","sourceRoot":"","sources":["../src/YakProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAGzB,KAAK,iBAAiB,EACtB,KAAK,KAAK,EAEV,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;IAC3C;;OAEG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;IACxC;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,IAAa,EACb,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,OAAe,EACf,IAAI,EACJ,QAAQ,GACT,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmNtC"}
1
+ {"version":3,"file":"YakProvider.d.ts","sourceRoot":"","sources":["../src/YakProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,KAAK,EAEV,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;IACxC;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,EACN,IAAa,EACb,SAAS,EACT,UAAU,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,OAAe,EACf,IAAI,EACJ,QAAQ,GACT,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4MtC"}
@@ -8,7 +8,7 @@ import { YakContext } from "./context.js";
8
8
  * (panel, iframe, optional trigger) is delegated to YakEmbed. Consumers
9
9
  * access both surfaces via `useYak()`.
10
10
  */
11
- export function YakProvider({ appId, mode = "chat", getConfig, onToolCall, onGraphQLSchemaCall, onRESTSchemaCall, theme, onRedirect, disableRestartButton, trigger = false, user, children, }) {
11
+ export function YakProvider({ appId, origin, mode = "chat", getConfig, onToolCall, theme, onRedirect, disableRestartButton, trigger = false, user, children, }) {
12
12
  const [isOpen, setIsOpen] = useState(false);
13
13
  const [isReady, setIsReady] = useState(false);
14
14
  const [voiceMachine, setVoiceMachine] = useState(INITIAL_VOICE_MACHINE);
@@ -45,13 +45,12 @@ export function YakProvider({ appId, mode = "chat", getConfig, onToolCall, onGra
45
45
  if (!embedRef.current) {
46
46
  embedRef.current = new YakEmbed({
47
47
  appId,
48
+ origin,
48
49
  mode,
49
50
  theme,
50
51
  trigger,
51
52
  getConfig,
52
53
  onToolCall,
53
- onGraphQLSchemaCall,
54
- onRESTSchemaCall,
55
54
  onRedirect: resolvedRedirect,
56
55
  options: { disableRestartButton },
57
56
  onToolCallComplete: handleToolCallComplete,
@@ -79,8 +78,6 @@ export function YakProvider({ appId, mode = "chat", getConfig, onToolCall, onGra
79
78
  embed.getClient().updateConfig({
80
79
  appId,
81
80
  onToolCall,
82
- onGraphQLSchemaCall,
83
- onRESTSchemaCall,
84
81
  theme,
85
82
  onRedirect: resolvedRedirect,
86
83
  options: { disableRestartButton },
@@ -91,16 +88,12 @@ export function YakProvider({ appId, mode = "chat", getConfig, onToolCall, onGra
91
88
  appId,
92
89
  getConfig,
93
90
  onToolCall,
94
- onGraphQLSchemaCall,
95
- onRESTSchemaCall,
96
91
  onRedirect: resolvedRedirect,
97
92
  });
98
93
  }, [
99
94
  appId,
100
95
  getConfig,
101
96
  onToolCall,
102
- onGraphQLSchemaCall,
103
- onRESTSchemaCall,
104
97
  theme,
105
98
  resolvedRedirect,
106
99
  disableRestartButton,
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";
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, YakConfig, YakContextValue } from "./context.js";
4
4
  export { useYak, useYakToolEvent } from "./context.js";
5
5
  export type { YakProviderProps } from "./YakProvider.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,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,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,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,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  // Re-export useful types and constants from @yak-io/javascript for consumers
3
- export { disableYakLogging, enableYakLogging, isYakLoggingEnabled } from "@yak-io/javascript";
3
+ export { createYakServerAdapter, createYakToolset, disableYakLogging, enableYakLogging, isYakLoggingEnabled, } from "@yak-io/javascript";
4
4
  // Public API - only export what consumers need
5
5
  export { useYak, useYakToolEvent } from "./context.js";
6
6
  export { YakProvider } from "./YakProvider.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yak-io/react",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "React SDK for embedding yak chatbot",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -42,7 +42,7 @@
42
42
  "./package.json": "./package.json"
43
43
  },
44
44
  "dependencies": {
45
- "@yak-io/javascript": "0.9.0"
45
+ "@yak-io/javascript": "0.10.0"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "react": "^18.0.0 || ^19.0.0",