@useago/sdk 0.3.2 → 0.3.4

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.
Files changed (121) hide show
  1. package/dist/AgoClient-DF7M2WAz.js +575 -0
  2. package/dist/AgoClient-bjN-z2ZQ.cjs +6 -0
  3. package/dist/angular.cjs +1 -143
  4. package/dist/angular.d.cts +530 -0
  5. package/dist/angular.d.ts +530 -2
  6. package/dist/angular.js +71 -139
  7. package/dist/createFormCollector-ClzHfaBd.js +185 -0
  8. package/dist/createFormCollector-H4Me_2uj.cjs +1 -0
  9. package/dist/createMockClient-C50gjV0b.js +71 -0
  10. package/dist/createMockClient-DQvFFWnc.cjs +1 -0
  11. package/dist/devtools.cjs +26 -100
  12. package/dist/devtools.d.cts +443 -0
  13. package/dist/devtools.d.ts +443 -2
  14. package/dist/devtools.js +68 -93
  15. package/dist/functions-BH1X5kas.cjs +1 -0
  16. package/dist/functions-CWSRi3xv.js +312 -0
  17. package/dist/helpers.cjs +1 -15
  18. package/dist/{helpers/functions.d.ts → helpers.d.cts} +121 -62
  19. package/dist/helpers.d.ts +121 -2
  20. package/dist/helpers.js +16 -2
  21. package/dist/index.cjs +1 -347
  22. package/dist/index.d.cts +1150 -0
  23. package/dist/index.d.ts +1150 -20
  24. package/dist/index.js +129 -298
  25. package/dist/react.cjs +31 -22438
  26. package/dist/react.d.cts +999 -0
  27. package/dist/react.d.ts +999 -2
  28. package/dist/react.js +8416 -22376
  29. package/dist/rolldown-runtime-CaekUdDJ.cjs +1 -0
  30. package/dist/rolldown-runtime-DxmricAu.js +25 -0
  31. package/dist/vue.cjs +1 -336
  32. package/dist/vue.d.cts +1063 -0
  33. package/dist/vue.d.ts +1063 -2
  34. package/dist/vue.js +174 -316
  35. package/dist/widget.cjs +1 -0
  36. package/dist/widget.d.cts +577 -0
  37. package/dist/widget.d.ts +577 -2
  38. package/dist/widget.js +398 -0
  39. package/package.json +35 -24
  40. package/dist/AgoClient-DPZdN5n2.js +0 -905
  41. package/dist/AgoClient-DPZdN5n2.js.map +0 -1
  42. package/dist/AgoClient-wMVUQqCD.cjs +0 -976
  43. package/dist/AgoClient-wMVUQqCD.cjs.map +0 -1
  44. package/dist/angular/ago.service.d.ts +0 -98
  45. package/dist/angular/index.d.ts +0 -4
  46. package/dist/angular/provide.d.ts +0 -27
  47. package/dist/angular.cjs.map +0 -1
  48. package/dist/angular.js.map +0 -1
  49. package/dist/api/HttpClient.d.ts +0 -31
  50. package/dist/api/index.d.ts +0 -1
  51. package/dist/auto/createAgo.d.ts +0 -39
  52. package/dist/auto/index.d.ts +0 -1
  53. package/dist/client/AgoClient.d.ts +0 -169
  54. package/dist/client/errors.d.ts +0 -48
  55. package/dist/client/index.d.ts +0 -3
  56. package/dist/client/types.d.ts +0 -205
  57. package/dist/createMockClient-Ci_N2tH8.cjs +0 -104
  58. package/dist/createMockClient-Ci_N2tH8.cjs.map +0 -1
  59. package/dist/createMockClient-U0ae_AYy.js +0 -99
  60. package/dist/createMockClient-U0ae_AYy.js.map +0 -1
  61. package/dist/devtools/index.d.ts +0 -2
  62. package/dist/devtools/initDevPanel.d.ts +0 -15
  63. package/dist/devtools.cjs.map +0 -1
  64. package/dist/devtools.js.map +0 -1
  65. package/dist/functions/FunctionRegistry.d.ts +0 -41
  66. package/dist/functions/defineFunction.d.ts +0 -22
  67. package/dist/functions/index.d.ts +0 -2
  68. package/dist/functions/types.d.ts +0 -50
  69. package/dist/functions--c6lx3ic.cjs +0 -480
  70. package/dist/functions--c6lx3ic.cjs.map +0 -1
  71. package/dist/functions-C9F1dnmh.js +0 -398
  72. package/dist/functions-C9F1dnmh.js.map +0 -1
  73. package/dist/helpers/factory.d.ts +0 -20
  74. package/dist/helpers/index.d.ts +0 -1
  75. package/dist/index.cjs.map +0 -1
  76. package/dist/index.js.map +0 -1
  77. package/dist/react/components/ChatInput.d.ts +0 -12
  78. package/dist/react/components/ChatWidget.d.ts +0 -35
  79. package/dist/react/components/Markdown.d.ts +0 -12
  80. package/dist/react/components/Message.d.ts +0 -9
  81. package/dist/react/components/index.d.ts +0 -8
  82. package/dist/react/context/AgoContext.d.ts +0 -62
  83. package/dist/react/context/index.d.ts +0 -2
  84. package/dist/react/hooks/index.d.ts +0 -7
  85. package/dist/react/hooks/useAgo.d.ts +0 -14
  86. package/dist/react/hooks/useAgoContext.d.ts +0 -40
  87. package/dist/react/hooks/useAgoFunction.d.ts +0 -58
  88. package/dist/react/hooks/useAgoStore.d.ts +0 -17
  89. package/dist/react/hooks/useChat.d.ts +0 -45
  90. package/dist/react/hooks/useConversation.d.ts +0 -28
  91. package/dist/react/hooks/useMessages.d.ts +0 -26
  92. package/dist/react/index.d.ts +0 -24
  93. package/dist/react/testing.d.ts +0 -2
  94. package/dist/react.cjs.map +0 -1
  95. package/dist/react.js.map +0 -1
  96. package/dist/rolldown-runtime-BqCkTl7Q.cjs +0 -50
  97. package/dist/rolldown-runtime-CNZpIYwj.js +0 -33
  98. package/dist/state/ClientContextRegistry.d.ts +0 -64
  99. package/dist/state/createStore.d.ts +0 -30
  100. package/dist/streaming/SSEHandler.d.ts +0 -46
  101. package/dist/streaming/helpers.d.ts +0 -67
  102. package/dist/streaming/index.d.ts +0 -2
  103. package/dist/testing/createMockClient.d.ts +0 -42
  104. package/dist/testing/index.d.ts +0 -2
  105. package/dist/utils/eventEmitter.d.ts +0 -23
  106. package/dist/utils/index.d.ts +0 -2
  107. package/dist/utils/logger.d.ts +0 -14
  108. package/dist/vue/composables/useAgo.d.ts +0 -17
  109. package/dist/vue/composables/useAgoEvents.d.ts +0 -11
  110. package/dist/vue/composables/useAgoFunction.d.ts +0 -34
  111. package/dist/vue/composables/useAgoStore.d.ts +0 -18
  112. package/dist/vue/composables/useChat.d.ts +0 -251
  113. package/dist/vue/composables/useConversation.d.ts +0 -178
  114. package/dist/vue/composables/useMessages.d.ts +0 -89
  115. package/dist/vue/index.d.ts +0 -11
  116. package/dist/vue/plugin.d.ts +0 -16
  117. package/dist/vue/symbols.d.ts +0 -3
  118. package/dist/vue.cjs.map +0 -1
  119. package/dist/vue.js.map +0 -1
  120. package/dist/widget/index.d.ts +0 -1
  121. package/dist/widget/types.d.ts +0 -43
package/dist/index.js CHANGED
@@ -1,309 +1,140 @@
1
- import { a as ClientContextRegistry, c as AgoApiError, d as AgoNetworkError, f as AgoStreamError, i as isStreamNetworkError, l as AgoError, n as EventEmitter, o as FunctionRegistry, r as SSEHandler, s as logger, t as AgoClient, u as AgoFunctionError } from "./AgoClient-DPZdN5n2.js";
2
- import { t as createMockClient } from "./createMockClient-U0ae_AYy.js";
3
- import { a as highlightElement, c as setLocalStorage, d as showNotification, f as showToast, i as getUserLocation, l as setTheme, m as trackEvent, o as openUrl, p as submitForm, r as getLocalStorage, s as scrollToElement, t as copyToClipboard, u as showConfirmDialog } from "./functions-C9F1dnmh.js";
4
- //#region src/state/createStore.ts
5
- function createStore(initial, persist) {
6
- const storage = persist ? persist.storage ?? (typeof localStorage !== "undefined" ? localStorage : void 0) : void 0;
7
- let state = initial;
8
- if (persist && storage) try {
9
- const raw = storage.getItem(persist.key);
10
- if (raw != null) state = JSON.parse(raw);
11
- } catch {}
12
- const subscribers = /* @__PURE__ */ new Set();
13
- const notify = () => subscribers.forEach((fn) => fn(state));
14
- function persistState() {
15
- if (persist && storage) try {
16
- storage.setItem(persist.key, JSON.stringify(state));
17
- } catch {}
18
- }
19
- return {
20
- get: () => state,
21
- set: (next) => {
22
- state = next;
23
- persistState();
24
- notify();
25
- },
26
- subscribe: (fn) => {
27
- subscribers.add(fn);
28
- return () => {
29
- subscribers.delete(fn);
30
- };
31
- }
32
- };
1
+ import { a as w, c as h, d as A, f as y, i as C, l as E, n as b, o as S, r as v, s as k, t as d, u as M } from "./AgoClient-DF7M2WAz.js";
2
+ import { n as T, t as I } from "./createFormCollector-ClzHfaBd.js";
3
+ import { t as G } from "./createMockClient-C50gjV0b.js";
4
+ import { a as q, c as x, d as L, f as N, i as D, l as H, m as J, o as R, p as j, r as B, s as P, t as $, u as z } from "./functions-CWSRi3xv.js";
5
+ function K(e) {
6
+ return e;
33
7
  }
34
- //#endregion
35
- //#region src/functions/defineFunction.ts
36
- /**
37
- * Create a reusable function definition.
38
- * Returns the same object — this is an identity function for discoverability and type-checking.
39
- *
40
- * ```ts
41
- * // Define once, reuse anywhere
42
- * export const lookupOrder = defineFunction({
43
- * name: "lookupOrder",
44
- * description: "Look up an order by ID",
45
- * parameters: { type: "object", properties: { id: { type: "string" } }, required: ["id"] },
46
- * handler: async (args) => fetchOrder(args.id as string),
47
- * });
48
- *
49
- * // Register with client
50
- * client.registerFunction(lookupOrder);
51
- *
52
- * // Or use in React
53
- * useAgoFunction(lookupOrder.name, lookupOrder);
54
- * ```
55
- */
56
- function defineFunction(definition) {
57
- return definition;
8
+ function Q(e, t) {
9
+ return e.on("message:complete", t), () => e.off("message:complete", t);
58
10
  }
59
- //#endregion
60
- //#region src/streaming/helpers.ts
61
- /**
62
- * Subscribe to complete messages with a simple callback. Returns an unsubscribe function.
63
- *
64
- * ```ts
65
- * const unsub = onMessage(client, (msg) => console.log(msg.content));
66
- * // later: unsub();
67
- * ```
68
- */
69
- function onMessage(client, callback) {
70
- client.on("message:complete", callback);
71
- return () => client.off("message:complete", callback);
11
+ function V(e, t) {
12
+ return e.on("message:chunk", t), () => e.off("message:chunk", t);
72
13
  }
73
- /**
74
- * Subscribe to streaming text chunks.
75
- *
76
- * ```ts
77
- * onMessageChunk(client, ({ content }) => {
78
- * outputEl.textContent += content;
79
- * });
80
- * ```
81
- */
82
- function onMessageChunk(client, callback) {
83
- client.on("message:chunk", callback);
84
- return () => client.off("message:chunk", callback);
14
+ function W(e, t) {
15
+ return e.on("message:start", t), () => e.off("message:start", t);
85
16
  }
86
- /**
87
- * Subscribe to message start events.
88
- */
89
- function onMessageStart(client, callback) {
90
- client.on("message:start", callback);
91
- return () => client.off("message:start", callback);
17
+ function X(e, t) {
18
+ return e.on("message:error", t), () => e.off("message:error", t);
92
19
  }
93
- /**
94
- * Subscribe to message errors.
95
- */
96
- function onMessageError(client, callback) {
97
- client.on("message:error", callback);
98
- return () => client.off("message:error", callback);
20
+ function Y(e, t) {
21
+ return e.on("toolCall:received", t), () => e.off("toolCall:received", t);
99
22
  }
100
- /**
101
- * Subscribe to tool call events.
102
- */
103
- function onToolCall(client, callback) {
104
- client.on("toolCall:received", callback);
105
- return () => client.off("toolCall:received", callback);
23
+ function Z(e, t) {
24
+ return e.on("function:invoke", t), () => e.off("function:invoke", t);
106
25
  }
107
- /**
108
- * Subscribe to client function invocations.
109
- */
110
- function onFunctionInvoke(client, callback) {
111
- client.on("function:invoke", callback);
112
- return () => client.off("function:invoke", callback);
26
+ async function* _(e, t, g) {
27
+ const n = [];
28
+ let r = null, a = !1;
29
+ const u = (s) => {
30
+ n.push(s), r?.();
31
+ }, f = (s) => u({
32
+ type: "start",
33
+ data: s
34
+ }), o = (s) => u({
35
+ type: "chunk",
36
+ data: s
37
+ }), i = (s) => {
38
+ u({
39
+ type: "complete",
40
+ data: s
41
+ }), a = !0, r?.();
42
+ }, l = (s) => {
43
+ u({
44
+ type: "error",
45
+ data: s
46
+ }), a = !0, r?.();
47
+ }, m = (s) => u({
48
+ type: "toolCall",
49
+ data: s
50
+ });
51
+ e.on("message:start", f), e.on("message:chunk", o), e.on("message:complete", i), e.on("message:error", l), e.on("toolCall:received", m), e.sendMessage(t, g).catch(() => {
52
+ a = !0, r?.();
53
+ });
54
+ try {
55
+ for (; !a || n.length > 0; ) n.length > 0 ? yield n.shift() : (await new Promise((s) => {
56
+ r = s;
57
+ }), r = null);
58
+ } finally {
59
+ e.off("message:start", f), e.off("message:chunk", o), e.off("message:complete", i), e.off("message:error", l), e.off("toolCall:received", m);
60
+ }
113
61
  }
114
- /**
115
- * Send a message and iterate over chunks as an async generator.
116
- * Gives you full control over how you process the stream.
117
- *
118
- * ```ts
119
- * for await (const chunk of createMessageStream(client, "Hello!")) {
120
- * console.log(chunk.type, chunk.data);
121
- * }
122
- * ```
123
- */
124
- async function* createMessageStream(client, content, options) {
125
- const queue = [];
126
- let resolve = null;
127
- let done = false;
128
- const push = (event) => {
129
- queue.push(event);
130
- resolve?.();
131
- };
132
- const onStart = (data) => push({
133
- type: "start",
134
- data
135
- });
136
- const onChunk = (data) => push({
137
- type: "chunk",
138
- data
139
- });
140
- const onComplete = (data) => {
141
- push({
142
- type: "complete",
143
- data
144
- });
145
- done = true;
146
- resolve?.();
147
- };
148
- const onError = (data) => {
149
- push({
150
- type: "error",
151
- data
152
- });
153
- done = true;
154
- resolve?.();
155
- };
156
- const onTool = (data) => push({
157
- type: "toolCall",
158
- data
159
- });
160
- client.on("message:start", onStart);
161
- client.on("message:chunk", onChunk);
162
- client.on("message:complete", onComplete);
163
- client.on("message:error", onError);
164
- client.on("toolCall:received", onTool);
165
- client.sendMessage(content, options).catch(() => {
166
- done = true;
167
- resolve?.();
168
- });
169
- try {
170
- while (!done || queue.length > 0) if (queue.length > 0) yield queue.shift();
171
- else {
172
- await new Promise((r) => {
173
- resolve = r;
174
- });
175
- resolve = null;
176
- }
177
- } finally {
178
- client.off("message:start", onStart);
179
- client.off("message:chunk", onChunk);
180
- client.off("message:complete", onComplete);
181
- client.off("message:error", onError);
182
- client.off("toolCall:received", onTool);
183
- }
62
+ function c(e) {
63
+ let t, g, n, r, a, u;
64
+ if (typeof window < "u" && window.AGO) {
65
+ const o = window.AGO;
66
+ t = o.basepath, g = o.widgetId, n = o.agent || o.defaultAgent, r = o.permission, a = o.email, u = o.jwt;
67
+ }
68
+ if (typeof document < "u") {
69
+ const o = (i) => document.querySelector(`meta[name="${i}"]`)?.getAttribute("content") || void 0;
70
+ t = t || o("ago-base-url"), g = g || o("ago-widget-id"), n = n || o("ago-agent") || o("ago-agent-id"), r = r || o("ago-permission"), a = a || o("ago-user-email");
71
+ }
72
+ if (typeof document < "u") {
73
+ const o = [document.body, ...Array.from(document.querySelectorAll("script[data-ago-base-url]"))].filter(Boolean);
74
+ for (const i of o)
75
+ i && (t = t || i.getAttribute("data-ago-base-url") || void 0, g = g || i.getAttribute("data-ago-widget-id") || void 0, n = n || i.getAttribute("data-ago-agent") || i.getAttribute("data-ago-agent-id") || void 0, r = r || i.getAttribute("data-ago-permission") || void 0, a = a || i.getAttribute("data-ago-user-email") || void 0);
76
+ }
77
+ t = e?.baseUrl || t, g = e?.widgetId || g, n = e?.agent || e?.defaultAgentId || n, r = e?.permission || r, a = e?.userEmail || a, u = e?.userJwt || u;
78
+ const f = e?.debug;
79
+ return t ? {
80
+ baseUrl: t,
81
+ widgetId: g,
82
+ agent: n,
83
+ permission: r,
84
+ userEmail: a,
85
+ userJwt: u,
86
+ debug: f
87
+ } : null;
184
88
  }
185
- //#endregion
186
- //#region src/auto/createAgo.ts
187
- /**
188
- * Auto-detect AGO configuration from the DOM environment.
189
- *
190
- * Checks (in order of priority):
191
- * 1. `window.AGO` global object (widget config)
192
- * 2. `<meta>` tags: `<meta name="ago-api-key" content="...">`
193
- * 3. `data-ago-*` attributes on `<body>` or `<script data-ago-api-key="...">`
194
- * 4. Explicit overrides passed as argument
195
- *
196
- * Returns null if no API key can be found.
197
- */
198
- function autoDetectConfig(overrides) {
199
- let baseUrl;
200
- let widgetId;
201
- let agent;
202
- let permission;
203
- let userEmail;
204
- let userJwt;
205
- if (typeof window !== "undefined" && window.AGO) {
206
- const ago = window.AGO;
207
- baseUrl = ago.basepath;
208
- widgetId = ago.widgetId;
209
- agent = ago.agent || ago.defaultAgent;
210
- permission = ago.permission;
211
- userEmail = ago.email;
212
- userJwt = ago.jwt;
213
- }
214
- if (typeof document !== "undefined") {
215
- const getMeta = (name) => document.querySelector(`meta[name="${name}"]`)?.getAttribute("content") || void 0;
216
- baseUrl = baseUrl || getMeta("ago-base-url");
217
- widgetId = widgetId || getMeta("ago-widget-id");
218
- agent = agent || getMeta("ago-agent") || getMeta("ago-agent-id");
219
- permission = permission || getMeta("ago-permission");
220
- userEmail = userEmail || getMeta("ago-user-email");
221
- }
222
- if (typeof document !== "undefined") {
223
- const sources = [document.body, ...Array.from(document.querySelectorAll("script[data-ago-base-url]"))].filter(Boolean);
224
- for (const el of sources) {
225
- if (!el) continue;
226
- baseUrl = baseUrl || el.getAttribute("data-ago-base-url") || void 0;
227
- widgetId = widgetId || el.getAttribute("data-ago-widget-id") || void 0;
228
- agent = agent || el.getAttribute("data-ago-agent") || el.getAttribute("data-ago-agent-id") || void 0;
229
- permission = permission || el.getAttribute("data-ago-permission") || void 0;
230
- userEmail = userEmail || el.getAttribute("data-ago-user-email") || void 0;
231
- }
232
- }
233
- baseUrl = overrides?.baseUrl || baseUrl;
234
- widgetId = overrides?.widgetId || widgetId;
235
- agent = overrides?.agent || overrides?.defaultAgentId || agent;
236
- permission = overrides?.permission || permission;
237
- userEmail = overrides?.userEmail || userEmail;
238
- userJwt = overrides?.userJwt || userJwt;
239
- const debug = overrides?.debug;
240
- if (!baseUrl) return null;
241
- return {
242
- baseUrl,
243
- widgetId,
244
- agent,
245
- permission,
246
- userEmail,
247
- userJwt,
248
- debug
249
- };
89
+ function ee(e) {
90
+ const t = c(e);
91
+ if (!t) throw new Error('createAgo(): could not detect AGO configuration. Set window.AGO, add <meta name="ago-base-url">, or pass { baseUrl } explicitly.');
92
+ return new d(t);
250
93
  }
251
- /**
252
- * Create an AgoClient with zero configuration.
253
- * Auto-detects config from window.AGO, meta tags, and data-ago-* attributes.
254
- *
255
- * ```html
256
- * <!-- In your HTML -->
257
- * <meta name="ago-base-url" content="https://YOUR-DOMAIN.useago.com">
258
- *
259
- * <!-- Or on a script tag -->
260
- * <script src="app.js" data-ago-base-url="https://YOUR-DOMAIN.useago.com"><\/script>
261
- * ```
262
- *
263
- * ```ts
264
- * import { createAgo } from "@useago/sdk";
265
- *
266
- * // Zero config — picks up from DOM
267
- * const client = createAgo();
268
- *
269
- * // Or with partial overrides
270
- * const client = createAgo({ debug: true });
271
- * ```
272
- *
273
- * Throws if no base URL can be detected.
274
- */
275
- function createAgo(overrides) {
276
- const config = autoDetectConfig(overrides);
277
- if (!config) throw new Error("createAgo(): could not detect AGO configuration. Set window.AGO, add <meta name=\"ago-base-url\">, or pass { baseUrl } explicitly.");
278
- return new AgoClient(config);
94
+ function te(e, t) {
95
+ return {
96
+ ...e,
97
+ handler: t
98
+ };
279
99
  }
280
- //#endregion
281
- //#region src/helpers/factory.ts
282
- /**
283
- * Attach a handler to a pre-built function definition.
284
- *
285
- * Pre-built helpers (`showToast`, `trackEvent`, ...) ship with a no-op or
286
- * console-logging default handler. Use `withHandler` to wire them up to
287
- * your actual implementation without mutating the original definition.
288
- *
289
- * ```ts
290
- * import { showToast, withHandler } from "@useago/sdk";
291
- *
292
- * client.register(
293
- * withHandler(showToast, (args) => {
294
- * myToast(args.message as string);
295
- * return { shown: true };
296
- * })
297
- * );
298
- * ```
299
- */
300
- function withHandler(definition, handler) {
301
- return {
302
- ...definition,
303
- handler
304
- };
305
- }
306
- //#endregion
307
- export { AgoApiError, AgoClient, AgoError, AgoFunctionError, AgoNetworkError, AgoStreamError, ClientContextRegistry, EventEmitter, FunctionRegistry, SSEHandler, autoDetectConfig, copyToClipboard, createAgo, createMessageStream, createMockClient, createStore, defineFunction, getLocalStorage, getUserLocation, highlightElement, isStreamNetworkError, logger, onFunctionInvoke, onMessage, onMessageChunk, onMessageError, onMessageStart, onToolCall, openUrl, scrollToElement, setLocalStorage, setTheme, showConfirmDialog, showNotification, showToast, submitForm, trackEvent, withHandler };
308
-
309
- //# sourceMappingURL=index.js.map
100
+ export {
101
+ h as AgoApiError,
102
+ d as AgoClient,
103
+ E as AgoError,
104
+ M as AgoFunctionError,
105
+ A as AgoNetworkError,
106
+ y as AgoStreamError,
107
+ w as ClientContextRegistry,
108
+ b as EventEmitter,
109
+ S as FunctionRegistry,
110
+ v as SSEHandler,
111
+ c as autoDetectConfig,
112
+ $ as copyToClipboard,
113
+ ee as createAgo,
114
+ I as createFormCollector,
115
+ _ as createMessageStream,
116
+ G as createMockClient,
117
+ T as createStore,
118
+ K as defineFunction,
119
+ B as getLocalStorage,
120
+ D as getUserLocation,
121
+ q as highlightElement,
122
+ C as isStreamNetworkError,
123
+ k as logger,
124
+ Z as onFunctionInvoke,
125
+ Q as onMessage,
126
+ V as onMessageChunk,
127
+ X as onMessageError,
128
+ W as onMessageStart,
129
+ Y as onToolCall,
130
+ R as openUrl,
131
+ P as scrollToElement,
132
+ x as setLocalStorage,
133
+ H as setTheme,
134
+ z as showConfirmDialog,
135
+ L as showNotification,
136
+ N as showToast,
137
+ j as submitForm,
138
+ J as trackEvent,
139
+ te as withHandler
140
+ };