@novu/react 3.19.1-rc.852194fa77 → 3.19.1

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.
@@ -30,7 +30,7 @@ __export(hooks_exports, {
30
30
  module.exports = __toCommonJS(hooks_exports);
31
31
  var import_js = require("@novu/js");
32
32
  var import_NovuProvider = require("./NovuProvider.cjs");
33
- __reExport(hooks_exports, require("./useAgentChat.cjs"), module.exports);
33
+ __reExport(hooks_exports, require("./useWebChat.cjs"), module.exports);
34
34
  __reExport(hooks_exports, require("./useChannelConnection.cjs"), module.exports);
35
35
  __reExport(hooks_exports, require("./useChannelConnections.cjs"), module.exports);
36
36
  __reExport(hooks_exports, require("./useChannelEndpoint.cjs"), module.exports);
@@ -55,7 +55,7 @@ __reExport(hooks_exports, require("./useUpdateSubscription.cjs"), module.exports
55
55
  SeverityLevelEnum,
56
56
  WorkflowCriticalityEnum,
57
57
  useNovu,
58
- ...require("./useAgentChat.cjs"),
58
+ ...require("./useWebChat.cjs"),
59
59
  ...require("./useChannelConnection.cjs"),
60
60
  ...require("./useChannelConnections.cjs"),
61
61
  ...require("./useChannelEndpoint.cjs"),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\nexport { NovuProvider, useNovu } from './NovuProvider';\nexport * from './useAgentChat';\nexport * from './useChannelConnection';\nexport * from './useChannelConnections';\nexport * from './useChannelEndpoint';\nexport * from './useChannelEndpoints';\nexport * from './useCounts';\nexport * from './useCreateChannelEndpoint';\nexport * from './useCreateSubscription';\nexport * from './useDeleteChannelConnection';\nexport * from './useDeleteChannelEndpoint';\nexport * from './useNotifications';\nexport * from './usePreferences';\nexport * from './useRemoveSubscription';\nexport * from './useSchedule';\nexport * from './useSubscription';\nexport * from './useSubscriptions';\nexport * from './useTelegramSubscriberLink';\nexport * from './useUpdateSubscription';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAA4E;AAC5E,0BAAsC;AACtC,0BAAc,+BAHd;AAIA,0BAAc,uCAJd;AAKA,0BAAc,wCALd;AAMA,0BAAc,qCANd;AAOA,0BAAc,sCAPd;AAQA,0BAAc,4BARd;AASA,0BAAc,2CATd;AAUA,0BAAc,wCAVd;AAWA,0BAAc,6CAXd;AAYA,0BAAc,2CAZd;AAaA,0BAAc,mCAbd;AAcA,0BAAc,iCAdd;AAeA,0BAAc,wCAfd;AAgBA,0BAAc,8BAhBd;AAiBA,0BAAc,kCAjBd;AAkBA,0BAAc,mCAlBd;AAmBA,0BAAc,4CAnBd;AAoBA,0BAAc,wCApBd;","names":[]}
1
+ {"version":3,"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\nexport { NovuProvider, useNovu } from './NovuProvider';\nexport * from './useWebChat';\nexport * from './useChannelConnection';\nexport * from './useChannelConnections';\nexport * from './useChannelEndpoint';\nexport * from './useChannelEndpoints';\nexport * from './useCounts';\nexport * from './useCreateChannelEndpoint';\nexport * from './useCreateSubscription';\nexport * from './useDeleteChannelConnection';\nexport * from './useDeleteChannelEndpoint';\nexport * from './useNotifications';\nexport * from './usePreferences';\nexport * from './useRemoveSubscription';\nexport * from './useSchedule';\nexport * from './useSubscription';\nexport * from './useSubscriptions';\nexport * from './useTelegramSubscriberLink';\nexport * from './useUpdateSubscription';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAA4E;AAC5E,0BAAsC;AACtC,0BAAc,6BAHd;AAIA,0BAAc,uCAJd;AAKA,0BAAc,wCALd;AAMA,0BAAc,qCANd;AAOA,0BAAc,sCAPd;AAQA,0BAAc,4BARd;AASA,0BAAc,2CATd;AAUA,0BAAc,wCAVd;AAWA,0BAAc,6CAXd;AAYA,0BAAc,2CAZd;AAaA,0BAAc,mCAbd;AAcA,0BAAc,iCAdd;AAeA,0BAAc,wCAfd;AAgBA,0BAAc,8BAhBd;AAiBA,0BAAc,kCAjBd;AAkBA,0BAAc,mCAlBd;AAmBA,0BAAc,4CAnBd;AAoBA,0BAAc,wCApBd;","names":[]}
@@ -1,7 +1,7 @@
1
1
  export * from '@novu/js';
2
2
  export { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';
3
3
  export { NovuProvider, useNovu } from './NovuProvider.cjs';
4
- export { UseAgentChatProps, UseAgentChatResult, useAgentChat } from './useAgentChat.cjs';
4
+ export { UseWebChatProps, UseWebChatResult, useWebChat } from './useWebChat.cjs';
5
5
  export { UseChannelConnectionProps, UseChannelConnectionResult, useChannelConnection } from './useChannelConnection.cjs';
6
6
  export { UseChannelConnectionsProps, UseChannelConnectionsResult, useChannelConnections } from './useChannelConnections.cjs';
7
7
  export { UseChannelEndpointProps, UseChannelEndpointResult, useChannelEndpoint } from './useChannelEndpoint.cjs';
@@ -17,18 +17,19 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/hooks/useAgentChat.ts
21
- var useAgentChat_exports = {};
22
- __export(useAgentChat_exports, {
23
- useAgentChat: () => useAgentChat
20
+ // src/hooks/useWebChat.ts
21
+ var useWebChat_exports = {};
22
+ __export(useWebChat_exports, {
23
+ useWebChat: () => useWebChat
24
24
  });
25
- module.exports = __toCommonJS(useAgentChat_exports);
25
+ module.exports = __toCommonJS(useWebChat_exports);
26
+ var import_js = require("@novu/js");
26
27
  var import_react = require("react");
27
28
  var import_useDataRef = require("./internal/useDataRef.cjs");
28
29
  var import_NovuProvider = require("./NovuProvider.cjs");
29
30
  var EMPTY_SERVER_SNAPSHOT = {
30
31
  key: "ssr",
31
- status: "ready",
32
+ status: "loading",
32
33
  run: { isRunning: false },
33
34
  conversationStatus: "active",
34
35
  pagination: { hasMore: false, status: "idle" },
@@ -94,46 +95,89 @@ function getCreateFlowKey(agentId, agentHash) {
94
95
  function resolveOwnedRuntime(args) {
95
96
  const key = getCreateFlowKey(args.agentId, args.agentHash);
96
97
  const current = args.ownedRuntimeRef.current;
97
- if ((current == null ? void 0 : current.key) === key) {
98
+ if ((current == null ? void 0 : current.novu) === args.novu && current.key === key) {
98
99
  return current.runtime;
99
100
  }
100
101
  current == null ? void 0 : current.runtime.dispose();
101
- const result = args.novu.agentChat.conversation({ agentId: args.agentId, agentHash: args.agentHash });
102
- if (!result.ok) {
103
- args.ownedRuntimeRef.current = null;
104
- return null;
102
+ const runtime = args.novu.webChat.conversation({ agentId: args.agentId, agentHash: args.agentHash });
103
+ args.ownedRuntimeRef.current = { key, novu: args.novu, runtime };
104
+ return runtime;
105
+ }
106
+ function toNovuError(error) {
107
+ if (error instanceof import_js.NovuError) {
108
+ return error;
109
+ }
110
+ if (error instanceof Error) {
111
+ return new import_js.NovuError("Failed to load Web Chat", error);
105
112
  }
106
- args.ownedRuntimeRef.current = { key, runtime: result.data };
107
- return result.data;
113
+ return new import_js.NovuError("Failed to load Web Chat", new Error(String(error)));
108
114
  }
109
- var useAgentChat = (props) => {
115
+ var useWebChat = (props) => {
110
116
  var _a;
111
117
  const novu = (0, import_NovuProvider.useNovu)();
112
118
  const propsRef = (0, import_useDataRef.useDataRef)(props);
119
+ const [loadState, setLoadState] = (0, import_react.useState)(() => ({
120
+ novu,
121
+ status: "loading"
122
+ }));
123
+ (0, import_react.useEffect)(() => {
124
+ let cancelled = false;
125
+ if (!novu.isWebChatLoaded) {
126
+ setLoadState({ novu, status: "loading" });
127
+ }
128
+ void novu.loadWebChat().then(() => {
129
+ if (!cancelled) {
130
+ setLoadState({ novu, status: "ready" });
131
+ }
132
+ }).catch((error) => {
133
+ var _a2, _b;
134
+ if (cancelled) {
135
+ return;
136
+ }
137
+ const novuError = toNovuError(error);
138
+ (_b = (_a2 = propsRef.current).onError) == null ? void 0 : _b.call(_a2, novuError);
139
+ setLoadState({ novu, status: "error", error: novuError });
140
+ });
141
+ return () => {
142
+ cancelled = true;
143
+ };
144
+ }, [novu, propsRef]);
145
+ const webChatReady = loadState.novu === novu && loadState.status === "ready";
146
+ const webChatLoadError = loadState.novu === novu && loadState.status === "error" ? loadState.error : void 0;
147
+ const isWebChatLoading = loadState.novu !== novu || loadState.status === "loading";
113
148
  const sharedRuntime = "conversation" in props ? props.conversation : void 0;
114
149
  const agentId = (sharedRuntime == null ? void 0 : sharedRuntime.agentId) ?? props.agentId;
115
150
  const conversationIdProp = sharedRuntime ? void 0 : props.conversationId;
116
151
  const agentHash = sharedRuntime ? void 0 : props.agentHash;
117
152
  const ownedRuntimeRef = (0, import_react.useRef)(null);
153
+ (0, import_react.useEffect)(() => {
154
+ const current = ownedRuntimeRef.current;
155
+ if (current && current.novu !== novu) {
156
+ current.runtime.dispose();
157
+ ownedRuntimeRef.current = null;
158
+ }
159
+ }, [novu]);
118
160
  const cachedRuntime = (0, import_react.useMemo)(() => {
161
+ if (!webChatReady) {
162
+ return null;
163
+ }
119
164
  if (sharedRuntime) {
120
165
  return sharedRuntime;
121
166
  }
122
167
  if (!conversationIdProp) {
123
168
  return null;
124
169
  }
125
- const result = novu.agentChat.conversation({
170
+ return novu.webChat.conversation({
126
171
  agentId,
127
172
  conversationId: conversationIdProp,
128
173
  agentHash
129
174
  });
130
- return result.ok ? result.data : null;
131
- }, [sharedRuntime, novu, agentId, conversationIdProp, agentHash]);
175
+ }, [webChatReady, sharedRuntime, novu, agentId, conversationIdProp, agentHash]);
132
176
  if (sharedRuntime || conversationIdProp) {
133
177
  (_a = ownedRuntimeRef.current) == null ? void 0 : _a.runtime.dispose();
134
178
  ownedRuntimeRef.current = null;
135
179
  }
136
- const ownedRuntime = sharedRuntime || conversationIdProp ? null : resolveOwnedRuntime({ novu, agentId, agentHash, ownedRuntimeRef });
180
+ const ownedRuntime = !webChatReady || sharedRuntime || conversationIdProp ? null : resolveOwnedRuntime({ novu, agentId, agentHash, ownedRuntimeRef });
137
181
  const runtime = sharedRuntime ?? cachedRuntime ?? ownedRuntime;
138
182
  (0, import_react.useEffect)(() => {
139
183
  return () => {
@@ -189,17 +233,22 @@ var useAgentChat = (props) => {
189
233
  const snapshot = (0, import_react.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
190
234
  const callRuntime = (0, import_react.useCallback)(
191
235
  async (action) => {
192
- var _a2, _b;
236
+ var _a2, _b, _c, _d;
193
237
  if (!runtime) {
194
- return { error: void 0 };
238
+ const error = webChatLoadError ?? new import_js.NovuError(
239
+ isWebChatLoading ? "Web Chat is still loading" : "Web Chat runtime is unavailable",
240
+ new Error("Web Chat runtime is not ready")
241
+ );
242
+ (_b = (_a2 = propsRef.current).onError) == null ? void 0 : _b.call(_a2, error);
243
+ return { error };
195
244
  }
196
245
  const response = await action(runtime);
197
246
  if (response.error) {
198
- (_b = (_a2 = propsRef.current).onError) == null ? void 0 : _b.call(_a2, response.error);
247
+ (_d = (_c = propsRef.current).onError) == null ? void 0 : _d.call(_c, response.error);
199
248
  }
200
249
  return response;
201
250
  },
202
- [runtime, propsRef]
251
+ [runtime, webChatLoadError, isWebChatLoading, propsRef]
203
252
  );
204
253
  const refetch = (0, import_react.useCallback)(async () => {
205
254
  var _a2, _b;
@@ -234,7 +283,10 @@ var useAgentChat = (props) => {
234
283
  }),
235
284
  [snapshot.pagination.status, snapshot.pagination.hasMore, fetchMore]
236
285
  );
237
- const sendMessage = (0, import_react.useCallback)((text) => callRuntime((target) => target.sendMessage(text)), [callRuntime]);
286
+ const sendMessage = (0, import_react.useCallback)(
287
+ (input) => callRuntime((target) => target.sendMessage(input)),
288
+ [callRuntime]
289
+ );
238
290
  const respondToAction = (0, import_react.useCallback)(
239
291
  (args) => callRuntime((target) => target.respondToAction(args)),
240
292
  [callRuntime]
@@ -251,11 +303,10 @@ var useAgentChat = (props) => {
251
303
  messages: [...snapshot.messages],
252
304
  pendingActions: [...snapshot.pendingActions],
253
305
  conversationId: snapshot.conversationId,
254
- error: snapshot.error,
255
- isLoading: snapshot.status === "loading",
306
+ error: webChatLoadError ?? snapshot.error,
307
+ isLoading: !webChatLoadError && (isWebChatLoading || snapshot.status === "loading"),
256
308
  isRunning: snapshot.run.isRunning,
257
309
  typing: snapshot.run.typing,
258
- status: snapshot.conversationStatus,
259
310
  conversationStatus: snapshot.conversationStatus,
260
311
  run: snapshot.run,
261
312
  pagination: paginationWithFetch,
@@ -270,6 +321,6 @@ var useAgentChat = (props) => {
270
321
  };
271
322
  // Annotate the CommonJS export names for ESM import in node:
272
323
  0 && (module.exports = {
273
- useAgentChat
324
+ useWebChat
274
325
  });
275
- //# sourceMappingURL=useAgentChat.cjs.map
326
+ //# sourceMappingURL=useWebChat.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useWebChat.ts"],"sourcesContent":["import type {\n AgentConversationPublicationMeta,\n AgentConversationRunSnapshot,\n AgentConversationRuntime,\n AgentConversationSnapshot,\n AgentConversationStatus,\n AgentEventEnvelope,\n AgentHashFields,\n AgentMessage,\n AgentPendingAction,\n AgentToolApprovalDecision,\n LoadConversationResult,\n RespondToActionResult,\n SendActionResult,\n SendMessageInput,\n SendMessageResult,\n WebChatPagination,\n WebChatPlanLimitError,\n} from '@novu/js';\nimport { NovuError } from '@novu/js';\nimport { type MutableRefObject, useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { useDataRef } from './internal/useDataRef';\nimport { useNovu } from './NovuProvider';\n\ntype UseWebChatCallbacks = {\n onSuccess?: (data: LoadConversationResult) => void;\n onError?: (error: NovuError | WebChatPlanLimitError) => void;\n /**\n * Fires once when a message id first appears. History pages do not fire.\n * The first event of a turn can create an empty assistant message before text arrives.\n * A send that never reaches the server does not fire. The message status becomes `failed` instead.\n */\n onMessage?: (message: AgentMessage) => void;\n /**\n * Fires once per pending action, including actions still pending on mount.\n * Paging backwards does not fire.\n */\n onActionRequested?: (action: AgentPendingAction) => void;\n /**\n * Live event envelopes for this conversation.\n * Duplicates that the client drops do not fire.\n * Envelopes that arrive before the conversation id exists do not fire.\n * The message list in this render does not include this envelope yet.\n */\n onEvent?: (envelope: AgentEventEnvelope) => void;\n};\n\n/** Arguments for {@link useWebChat}. Pass `agentId`, or pass `conversation`. Do not mix the two. */\nexport type UseWebChatProps = UseWebChatCallbacks &\n AgentHashFields &\n (\n | {\n agentId: string;\n /**\n * Resume this conversation. The hook loads history on mount.\n * Omit this prop to start a new chat. The first send creates a conversation.\n */\n conversationId?: string;\n conversation?: never;\n }\n | {\n /** Share an existing conversation runtime across multiple hook instances. */\n conversation: AgentConversationRuntime;\n agentId?: never;\n conversationId?: never;\n agentHash?: never;\n }\n );\n\n/** State and actions returned by {@link useWebChat}. */\nexport type UseWebChatResult = {\n /** Conversation timeline. */\n messages: AgentMessage[];\n /** Tool approvals and MCP connect items that are still pending. */\n pendingActions: AgentPendingAction[];\n /** Server conversation id after create or resume. */\n conversationId?: string;\n /** Last error from load, send, retry, or action. */\n error?: NovuError | WebChatPlanLimitError;\n /** True while Web Chat loads and, for an existing conversation, until the first history fetch completes. */\n isLoading: boolean;\n /** True while the agent turn is in progress. Same as `run.isRunning`. */\n isRunning: boolean;\n /** Typing indicator. Same as `run.typing`. Absent when the agent is not typing. */\n typing?: AgentConversationRunSnapshot['typing'];\n /** `'active'` or `'resolved'`. The agent sets `resolved` with `ctx.resolve()`. Not a loading flag. */\n conversationStatus: AgentConversationStatus;\n /** Current agent-run snapshot. */\n run: AgentConversationRunSnapshot;\n /** Older-history control. Not a top-level `hasMore` or `fetchMore`. */\n pagination: WebChatPagination & {\n fetchMore: () => Promise<{\n data?: { messages: AgentMessage[]; hasMore: boolean };\n error?: NovuError;\n }>;\n };\n /** True while reconnect recovery is in progress. */\n isRecovering: boolean;\n /** Set when reconnect recovery fails. Separate from send and fetch `error`. */\n catchUpError?: NovuError;\n /** Reload the newest history page. No-op when there is no conversation id. */\n refetch: () => Promise<void>;\n /** Send a user message. `input` is a string, or `{ text, metadata }`. Creates a conversation when `conversationId` is omitted. */\n sendMessage: (input: SendMessageInput) => Promise<{\n data?: SendMessageResult;\n error?: NovuError | WebChatPlanLimitError;\n }>;\n /** Resolve a pending `tool-approval`. Pass `action.id` from `pendingActions`. */\n respondToAction: (args: { actionId: string; decision: AgentToolApprovalDecision }) => Promise<{\n data?: RespondToActionResult;\n error?: NovuError | WebChatPlanLimitError;\n }>;\n /** Click a Card button. Do not use this for tool approval. */\n sendAction: (args: { actionId: string; sourceMessageId: string; value?: string }) => Promise<{\n data?: SendActionResult;\n error?: NovuError | WebChatPlanLimitError;\n }>;\n /** Resend a message whose `status` is `failed`. Reuses the original idempotency key. */\n retryMessage: (messageId: string) => Promise<{\n data?: SendMessageResult;\n error?: NovuError | WebChatPlanLimitError;\n }>;\n};\n\nconst EMPTY_SERVER_SNAPSHOT = {\n key: 'ssr',\n status: 'loading',\n run: { isRunning: false },\n conversationStatus: 'active',\n pagination: { hasMore: false, status: 'idle' },\n messages: [],\n pendingActions: [],\n isRecovering: false,\n} as AgentConversationSnapshot;\n\ntype RuntimeActionResult<T> = {\n data?: T;\n error?: NovuError | WebChatPlanLimitError;\n};\n\nfunction handlePublicationCallbacks(args: {\n snapshot: AgentConversationSnapshot;\n meta: AgentConversationPublicationMeta | undefined;\n conversationIdProp: string | undefined;\n propsRef: ReturnType<typeof useDataRef<UseWebChatProps>>;\n loadNotifiedRef: MutableRefObject<boolean>;\n notifiedCatchUpErrorRef: MutableRefObject<NovuError | undefined>;\n lastReportedErrorKeyRef: MutableRefObject<string | undefined>;\n}): void {\n const {\n snapshot,\n meta,\n conversationIdProp,\n propsRef,\n loadNotifiedRef,\n notifiedCatchUpErrorRef,\n lastReportedErrorKeyRef,\n } = args;\n\n if ((meta?.historyLoaded || meta?.change?.kind === 'history') && !loadNotifiedRef.current && conversationIdProp) {\n if (snapshot.conversationId) {\n loadNotifiedRef.current = true;\n propsRef.current.onSuccess?.({\n conversationId: snapshot.conversationId,\n messages: [...snapshot.messages],\n hasMore: snapshot.pagination.hasMore,\n });\n }\n }\n\n if (snapshot.catchUpError && snapshot.catchUpError !== notifiedCatchUpErrorRef.current) {\n notifiedCatchUpErrorRef.current = snapshot.catchUpError;\n propsRef.current.onError?.(snapshot.catchUpError);\n } else if (!snapshot.catchUpError) {\n notifiedCatchUpErrorRef.current = undefined;\n }\n\n if (snapshot.error) {\n const originalMessage = 'originalError' in snapshot.error ? (snapshot.error.originalError?.message ?? '') : '';\n const errorKey = `${snapshot.error.message}:${originalMessage}`;\n if (lastReportedErrorKeyRef.current !== errorKey) {\n lastReportedErrorKeyRef.current = errorKey;\n propsRef.current.onError?.(snapshot.error as NovuError | WebChatPlanLimitError);\n }\n } else {\n lastReportedErrorKeyRef.current = undefined;\n }\n\n const change = meta?.change;\n if (change?.kind === 'live') {\n propsRef.current.onEvent?.(change.envelope);\n }\n\n if (change && change.kind !== 'history') {\n for (const message of change.addedMessages) {\n propsRef.current.onMessage?.(message);\n }\n }\n\n if (change) {\n for (const action of change.newActions) {\n propsRef.current.onActionRequested?.(action);\n }\n }\n}\n\ntype OwnedRuntimeEntry = {\n key: string;\n novu: ReturnType<typeof useNovu>;\n runtime: AgentConversationRuntime;\n};\n\nfunction getCreateFlowKey(agentId: string, agentHash?: string): string {\n return `${agentId}\\0${agentHash ?? ''}`;\n}\n\nfunction resolveOwnedRuntime(args: {\n novu: ReturnType<typeof useNovu>;\n agentId: string;\n agentHash?: string;\n ownedRuntimeRef: MutableRefObject<OwnedRuntimeEntry | null>;\n}): AgentConversationRuntime | null {\n const key = getCreateFlowKey(args.agentId, args.agentHash);\n const current = args.ownedRuntimeRef.current;\n\n if (current?.novu === args.novu && current.key === key) {\n return current.runtime;\n }\n\n current?.runtime.dispose();\n\n const runtime = args.novu.webChat.conversation({ agentId: args.agentId, agentHash: args.agentHash });\n args.ownedRuntimeRef.current = { key, novu: args.novu, runtime };\n return runtime;\n}\n\ntype WebChatLoadState =\n | { novu: ReturnType<typeof useNovu>; status: 'loading' }\n | { novu: ReturnType<typeof useNovu>; status: 'ready' }\n | { novu: ReturnType<typeof useNovu>; status: 'error'; error: NovuError };\n\nfunction toNovuError(error: unknown): NovuError {\n if (error instanceof NovuError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new NovuError('Failed to load Web Chat', error);\n }\n\n return new NovuError('Failed to load Web Chat', new Error(String(error)));\n}\n\n/**\n * Headless Web Chat client. Use it inside `NovuProvider`.\n *\n * @example\n * ```tsx\n * const { messages, sendMessage, isRunning, isLoading, error } = useWebChat({\n * agentId: 'YOUR_AGENT_IDENTIFIER',\n * });\n * ```\n */\nexport const useWebChat = (props: UseWebChatProps): UseWebChatResult => {\n const novu = useNovu();\n const propsRef = useDataRef(props);\n const [loadState, setLoadState] = useState<WebChatLoadState>(() => ({\n novu,\n status: 'loading',\n }));\n\n useEffect(() => {\n let cancelled = false;\n\n if (!novu.isWebChatLoaded) {\n setLoadState({ novu, status: 'loading' });\n }\n\n void novu\n .loadWebChat()\n .then(() => {\n if (!cancelled) {\n setLoadState({ novu, status: 'ready' });\n }\n })\n .catch((error: unknown) => {\n if (cancelled) {\n return;\n }\n\n const novuError = toNovuError(error);\n propsRef.current.onError?.(novuError);\n setLoadState({ novu, status: 'error', error: novuError });\n });\n\n return () => {\n cancelled = true;\n };\n }, [novu, propsRef]);\n\n const webChatReady = loadState.novu === novu && loadState.status === 'ready';\n const webChatLoadError = loadState.novu === novu && loadState.status === 'error' ? loadState.error : undefined;\n const isWebChatLoading = loadState.novu !== novu || loadState.status === 'loading';\n\n const sharedRuntime = 'conversation' in props ? props.conversation : undefined;\n const agentId = sharedRuntime?.agentId ?? props.agentId!;\n const conversationIdProp = sharedRuntime ? undefined : props.conversationId;\n const agentHash = sharedRuntime ? undefined : props.agentHash;\n\n const ownedRuntimeRef = useRef<OwnedRuntimeEntry | null>(null);\n\n useEffect(() => {\n const current = ownedRuntimeRef.current;\n if (current && current.novu !== novu) {\n current.runtime.dispose();\n ownedRuntimeRef.current = null;\n }\n }, [novu]);\n\n const cachedRuntime = useMemo(() => {\n if (!webChatReady) {\n return null;\n }\n\n if (sharedRuntime) {\n return sharedRuntime;\n }\n\n if (!conversationIdProp) {\n return null;\n }\n\n return novu.webChat.conversation({\n agentId,\n conversationId: conversationIdProp,\n agentHash,\n });\n }, [webChatReady, sharedRuntime, novu, agentId, conversationIdProp, agentHash]);\n\n if (sharedRuntime || conversationIdProp) {\n ownedRuntimeRef.current?.runtime.dispose();\n ownedRuntimeRef.current = null;\n }\n\n const ownedRuntime =\n !webChatReady || sharedRuntime || conversationIdProp\n ? null\n : resolveOwnedRuntime({ novu, agentId, agentHash, ownedRuntimeRef });\n\n const runtime = sharedRuntime ?? cachedRuntime ?? ownedRuntime;\n\n useEffect(() => {\n return () => {\n ownedRuntimeRef.current?.runtime.dispose();\n ownedRuntimeRef.current = null;\n };\n }, []);\n\n const loadNotifiedRef = useRef(false);\n const replayedActionsRef = useRef(false);\n const notifiedCatchUpErrorRef = useRef<NovuError | undefined>();\n const lastReportedErrorKeyRef = useRef<string>();\n\n useEffect(() => {\n loadNotifiedRef.current = false;\n replayedActionsRef.current = false;\n notifiedCatchUpErrorRef.current = undefined;\n lastReportedErrorKeyRef.current = undefined;\n }, [runtime]);\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (!runtime) {\n return () => {};\n }\n\n if (!replayedActionsRef.current) {\n replayedActionsRef.current = true;\n for (const action of runtime.getSnapshot().pendingActions) {\n propsRef.current.onActionRequested?.(action);\n }\n }\n\n return runtime.subscribe((snapshot, meta) => {\n onStoreChange();\n handlePublicationCallbacks({\n snapshot,\n meta,\n conversationIdProp,\n propsRef,\n loadNotifiedRef,\n notifiedCatchUpErrorRef,\n lastReportedErrorKeyRef,\n });\n });\n },\n [runtime, conversationIdProp, propsRef]\n );\n\n const getSnapshot = useCallback(() => {\n return runtime?.getSnapshot() ?? EMPTY_SERVER_SNAPSHOT;\n }, [runtime]);\n\n const getServerSnapshot = useCallback(() => {\n return runtime?.getServerSnapshot() ?? EMPTY_SERVER_SNAPSHOT;\n }, [runtime]);\n\n const snapshot = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n const callRuntime = useCallback(\n async <T>(action: (target: AgentConversationRuntime) => Promise<RuntimeActionResult<T>>) => {\n if (!runtime) {\n const error =\n webChatLoadError ??\n new NovuError(\n isWebChatLoading ? 'Web Chat is still loading' : 'Web Chat runtime is unavailable',\n new Error('Web Chat runtime is not ready')\n );\n propsRef.current.onError?.(error);\n\n return { error };\n }\n\n const response = await action(runtime);\n if (response.error) {\n propsRef.current.onError?.(response.error);\n }\n\n return response;\n },\n [runtime, webChatLoadError, isWebChatLoading, propsRef]\n );\n\n const refetch = useCallback(async () => {\n if (!runtime) {\n return;\n }\n\n const response = await runtime.load();\n if (response.data) {\n propsRef.current.onSuccess?.({\n conversationId: response.data.conversationId,\n messages: [...response.data.messages],\n hasMore: response.data.hasMore,\n });\n }\n }, [runtime, propsRef]);\n\n const fetchMore = useCallback(async () => {\n const response = await callRuntime((target) => target.fetchMore());\n\n return {\n ...response,\n error: response.error as NovuError | undefined,\n data: response.data\n ? {\n messages: [...response.data.messages],\n hasMore: response.data.hasMore,\n }\n : undefined,\n };\n }, [callRuntime]);\n\n const paginationWithFetch = useMemo(\n () => ({\n status: snapshot.pagination.status,\n hasMore: snapshot.pagination.hasMore,\n fetchMore,\n }),\n [snapshot.pagination.status, snapshot.pagination.hasMore, fetchMore]\n );\n\n const sendMessage = useCallback(\n (input: SendMessageInput) => callRuntime((target) => target.sendMessage(input)),\n [callRuntime]\n );\n const respondToAction = useCallback(\n (args: { actionId: string; decision: AgentToolApprovalDecision }) =>\n callRuntime((target) => target.respondToAction(args)),\n [callRuntime]\n );\n const sendAction = useCallback(\n (args: { actionId: string; sourceMessageId: string; value?: string }) =>\n callRuntime((target) => target.sendAction(args)),\n [callRuntime]\n );\n const retryMessage = useCallback(\n (messageId: string) => callRuntime((target) => target.retryMessage(messageId)),\n [callRuntime]\n );\n\n return {\n messages: [...snapshot.messages],\n pendingActions: [...snapshot.pendingActions],\n conversationId: snapshot.conversationId,\n error: webChatLoadError ?? (snapshot.error as UseWebChatResult['error']),\n isLoading: !webChatLoadError && (isWebChatLoading || snapshot.status === 'loading'),\n isRunning: snapshot.run.isRunning,\n typing: snapshot.run.typing,\n conversationStatus: snapshot.conversationStatus,\n run: snapshot.run,\n pagination: paginationWithFetch,\n isRecovering: snapshot.isRecovering,\n catchUpError: snapshot.catchUpError,\n refetch,\n sendMessage,\n respondToAction,\n sendAction,\n retryMessage,\n };\n};\n"],"mappings":"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","names":["_a","snapshot"]}
@@ -0,0 +1,117 @@
1
+ import { LoadConversationResult, NovuError, WebChatPlanLimitError, AgentMessage, AgentPendingAction, AgentEventEnvelope, AgentHashFields, AgentConversationRuntime, AgentConversationRunSnapshot, AgentConversationStatus, WebChatPagination, SendMessageInput, SendMessageResult, AgentToolApprovalDecision, RespondToActionResult, SendActionResult } from '@novu/js';
2
+
3
+ type UseWebChatCallbacks = {
4
+ onSuccess?: (data: LoadConversationResult) => void;
5
+ onError?: (error: NovuError | WebChatPlanLimitError) => void;
6
+ /**
7
+ * Fires once when a message id first appears. History pages do not fire.
8
+ * The first event of a turn can create an empty assistant message before text arrives.
9
+ * A send that never reaches the server does not fire. The message status becomes `failed` instead.
10
+ */
11
+ onMessage?: (message: AgentMessage) => void;
12
+ /**
13
+ * Fires once per pending action, including actions still pending on mount.
14
+ * Paging backwards does not fire.
15
+ */
16
+ onActionRequested?: (action: AgentPendingAction) => void;
17
+ /**
18
+ * Live event envelopes for this conversation.
19
+ * Duplicates that the client drops do not fire.
20
+ * Envelopes that arrive before the conversation id exists do not fire.
21
+ * The message list in this render does not include this envelope yet.
22
+ */
23
+ onEvent?: (envelope: AgentEventEnvelope) => void;
24
+ };
25
+ /** Arguments for {@link useWebChat}. Pass `agentId`, or pass `conversation`. Do not mix the two. */
26
+ type UseWebChatProps = UseWebChatCallbacks & AgentHashFields & ({
27
+ agentId: string;
28
+ /**
29
+ * Resume this conversation. The hook loads history on mount.
30
+ * Omit this prop to start a new chat. The first send creates a conversation.
31
+ */
32
+ conversationId?: string;
33
+ conversation?: never;
34
+ } | {
35
+ /** Share an existing conversation runtime across multiple hook instances. */
36
+ conversation: AgentConversationRuntime;
37
+ agentId?: never;
38
+ conversationId?: never;
39
+ agentHash?: never;
40
+ });
41
+ /** State and actions returned by {@link useWebChat}. */
42
+ type UseWebChatResult = {
43
+ /** Conversation timeline. */
44
+ messages: AgentMessage[];
45
+ /** Tool approvals and MCP connect items that are still pending. */
46
+ pendingActions: AgentPendingAction[];
47
+ /** Server conversation id after create or resume. */
48
+ conversationId?: string;
49
+ /** Last error from load, send, retry, or action. */
50
+ error?: NovuError | WebChatPlanLimitError;
51
+ /** True while Web Chat loads and, for an existing conversation, until the first history fetch completes. */
52
+ isLoading: boolean;
53
+ /** True while the agent turn is in progress. Same as `run.isRunning`. */
54
+ isRunning: boolean;
55
+ /** Typing indicator. Same as `run.typing`. Absent when the agent is not typing. */
56
+ typing?: AgentConversationRunSnapshot['typing'];
57
+ /** `'active'` or `'resolved'`. The agent sets `resolved` with `ctx.resolve()`. Not a loading flag. */
58
+ conversationStatus: AgentConversationStatus;
59
+ /** Current agent-run snapshot. */
60
+ run: AgentConversationRunSnapshot;
61
+ /** Older-history control. Not a top-level `hasMore` or `fetchMore`. */
62
+ pagination: WebChatPagination & {
63
+ fetchMore: () => Promise<{
64
+ data?: {
65
+ messages: AgentMessage[];
66
+ hasMore: boolean;
67
+ };
68
+ error?: NovuError;
69
+ }>;
70
+ };
71
+ /** True while reconnect recovery is in progress. */
72
+ isRecovering: boolean;
73
+ /** Set when reconnect recovery fails. Separate from send and fetch `error`. */
74
+ catchUpError?: NovuError;
75
+ /** Reload the newest history page. No-op when there is no conversation id. */
76
+ refetch: () => Promise<void>;
77
+ /** Send a user message. `input` is a string, or `{ text, metadata }`. Creates a conversation when `conversationId` is omitted. */
78
+ sendMessage: (input: SendMessageInput) => Promise<{
79
+ data?: SendMessageResult;
80
+ error?: NovuError | WebChatPlanLimitError;
81
+ }>;
82
+ /** Resolve a pending `tool-approval`. Pass `action.id` from `pendingActions`. */
83
+ respondToAction: (args: {
84
+ actionId: string;
85
+ decision: AgentToolApprovalDecision;
86
+ }) => Promise<{
87
+ data?: RespondToActionResult;
88
+ error?: NovuError | WebChatPlanLimitError;
89
+ }>;
90
+ /** Click a Card button. Do not use this for tool approval. */
91
+ sendAction: (args: {
92
+ actionId: string;
93
+ sourceMessageId: string;
94
+ value?: string;
95
+ }) => Promise<{
96
+ data?: SendActionResult;
97
+ error?: NovuError | WebChatPlanLimitError;
98
+ }>;
99
+ /** Resend a message whose `status` is `failed`. Reuses the original idempotency key. */
100
+ retryMessage: (messageId: string) => Promise<{
101
+ data?: SendMessageResult;
102
+ error?: NovuError | WebChatPlanLimitError;
103
+ }>;
104
+ };
105
+ /**
106
+ * Headless Web Chat client. Use it inside `NovuProvider`.
107
+ *
108
+ * @example
109
+ * ```tsx
110
+ * const { messages, sendMessage, isRunning, isLoading, error } = useWebChat({
111
+ * agentId: 'YOUR_AGENT_IDENTIFIER',
112
+ * });
113
+ * ```
114
+ */
115
+ declare const useWebChat: (props: UseWebChatProps) => UseWebChatResult;
116
+
117
+ export { type UseWebChatProps, type UseWebChatResult, useWebChat };
@@ -37,7 +37,6 @@ __export(index_exports, {
37
37
  SubscriptionPreferences: () => import_components.SubscriptionPreferences,
38
38
  TelegramConnectButton: () => import_components.TelegramConnectButton,
39
39
  WorkflowCriticalityEnum: () => import_js.WorkflowCriticalityEnum,
40
- useAgentChat: () => import_hooks.useAgentChat,
41
40
  useChannelConnection: () => import_hooks.useChannelConnection,
42
41
  useChannelConnections: () => import_hooks.useChannelConnections,
43
42
  useChannelEndpoint: () => import_hooks.useChannelEndpoint,
@@ -53,7 +52,8 @@ __export(index_exports, {
53
52
  useSubscription: () => import_hooks.useSubscription,
54
53
  useSubscriptions: () => import_hooks.useSubscriptions,
55
54
  useTelegramSubscriberLink: () => import_hooks.useTelegramSubscriberLink,
56
- useUpdateSubscription: () => import_hooks.useUpdateSubscription
55
+ useUpdateSubscription: () => import_hooks.useUpdateSubscription,
56
+ useWebChat: () => import_hooks.useWebChat
57
57
  });
58
58
  module.exports = __toCommonJS(index_exports);
59
59
  var import_js = require("@novu/js");
@@ -78,7 +78,6 @@ var import_hooks = require("./hooks/index.cjs");
78
78
  SubscriptionPreferences,
79
79
  TelegramConnectButton,
80
80
  WorkflowCriticalityEnum,
81
- useAgentChat,
82
81
  useChannelConnection,
83
82
  useChannelConnections,
84
83
  useChannelEndpoint,
@@ -94,6 +93,7 @@ var import_hooks = require("./hooks/index.cjs");
94
93
  useSubscription,
95
94
  useSubscriptions,
96
95
  useTelegramSubscriberLink,
97
- useUpdateSubscription
96
+ useUpdateSubscription,
97
+ useWebChat
98
98
  });
99
99
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ChannelConnectButtonIconKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\nexport type {\n BellProps,\n InboxContentProps,\n InboxProps,\n MsTeamsConnectButtonProps,\n MsTeamsLinkUserProps,\n NotificationProps,\n NovuProviderProps,\n SlackConnectButtonProps,\n SlackLinkUserProps,\n SubscriptionButtonProps,\n SubscriptionPreferencesProps,\n SubscriptionProps,\n TelegramConnectButtonProps,\n} from './components';\nexport {\n Bell,\n Inbox,\n InboxContent,\n MsTeamsConnectButton,\n MsTeamsLinkUser,\n Notifications,\n NovuProvider,\n Preferences,\n SlackConnectButton,\n SlackLinkUser,\n Subscription,\n SubscriptionButton,\n SubscriptionPreferences,\n TelegramConnectButton,\n} from './components';\nexport type {\n UseAgentChatProps,\n UseAgentChatResult,\n UseChannelConnectionProps,\n UseChannelConnectionResult,\n UseChannelConnectionsProps,\n UseChannelConnectionsResult,\n UseChannelEndpointProps,\n UseChannelEndpointResult,\n UseCountsProps,\n UseCountsResult,\n UseCreateChannelEndpointProps,\n UseCreateChannelEndpointResult,\n UseDeleteChannelEndpointProps,\n UseDeleteChannelEndpointResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n UseTelegramSubscriberLinkProps,\n UseTelegramSubscriberLinkResult,\n} from './hooks';\nexport {\n useAgentChat,\n useChannelConnection,\n useChannelConnections,\n useChannelEndpoint,\n useCounts,\n useCreateChannelEndpoint,\n useCreateSubscription,\n useDeleteChannelEndpoint,\n useNotifications,\n useNovu,\n usePreferences,\n useRemoveSubscription,\n useSchedule,\n useSubscription,\n useSubscriptions,\n useTelegramSubscriberLink,\n useUpdateSubscription,\n} from './hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n ReactAllAppearance,\n ReactInboxAppearance,\n ReactInboxTheme,\n ReactSubscriptionAppearance,\n ReactSubscriptionTheme,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from './utils/types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAA4E;AAiD5E,wBAeO;AAuBP,mBAkBO;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ChannelConnectButtonIconKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\nexport type {\n BellProps,\n InboxContentProps,\n InboxProps,\n MsTeamsConnectButtonProps,\n MsTeamsLinkUserProps,\n NotificationProps,\n NovuProviderProps,\n SlackConnectButtonProps,\n SlackLinkUserProps,\n SubscriptionButtonProps,\n SubscriptionPreferencesProps,\n SubscriptionProps,\n TelegramConnectButtonProps,\n} from './components';\nexport {\n Bell,\n Inbox,\n InboxContent,\n MsTeamsConnectButton,\n MsTeamsLinkUser,\n Notifications,\n NovuProvider,\n Preferences,\n SlackConnectButton,\n SlackLinkUser,\n Subscription,\n SubscriptionButton,\n SubscriptionPreferences,\n TelegramConnectButton,\n} from './components';\nexport type {\n UseWebChatProps,\n UseWebChatResult,\n UseChannelConnectionProps,\n UseChannelConnectionResult,\n UseChannelConnectionsProps,\n UseChannelConnectionsResult,\n UseChannelEndpointProps,\n UseChannelEndpointResult,\n UseCountsProps,\n UseCountsResult,\n UseCreateChannelEndpointProps,\n UseCreateChannelEndpointResult,\n UseDeleteChannelEndpointProps,\n UseDeleteChannelEndpointResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n UseTelegramSubscriberLinkProps,\n UseTelegramSubscriberLinkResult,\n} from './hooks';\nexport {\n useWebChat,\n useChannelConnection,\n useChannelConnections,\n useChannelEndpoint,\n useCounts,\n useCreateChannelEndpoint,\n useCreateSubscription,\n useDeleteChannelEndpoint,\n useNotifications,\n useNovu,\n usePreferences,\n useRemoveSubscription,\n useSchedule,\n useSubscription,\n useSubscriptions,\n useTelegramSubscriberLink,\n useUpdateSubscription,\n} from './hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n ReactAllAppearance,\n ReactInboxAppearance,\n ReactInboxTheme,\n ReactSubscriptionAppearance,\n ReactSubscriptionTheme,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from './utils/types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAA4E;AAiD5E,wBAeO;AAuBP,mBAkBO;","names":[]}
@@ -15,7 +15,7 @@ export { Subscription, SubscriptionProps } from './components/subscription/Subsc
15
15
  export { SubscriptionButton, SubscriptionButtonProps } from './components/subscription/SubscriptionButton.cjs';
16
16
  export { SubscriptionPreferences, SubscriptionPreferencesProps } from './components/subscription/SubscriptionPreferences.cjs';
17
17
  export { TelegramConnectButton, TelegramConnectButtonProps } from './components/telegram-connect-button/TelegramConnectButton.cjs';
18
- export { UseAgentChatProps, UseAgentChatResult, useAgentChat } from './hooks/useAgentChat.cjs';
18
+ export { UseWebChatProps, UseWebChatResult, useWebChat } from './hooks/useWebChat.cjs';
19
19
  export { UseChannelConnectionProps, UseChannelConnectionResult, useChannelConnection } from './hooks/useChannelConnection.cjs';
20
20
  export { UseChannelConnectionsProps, UseChannelConnectionsResult, useChannelConnections } from './hooks/useChannelConnections.cjs';
21
21
  export { UseChannelEndpointProps, UseChannelEndpointResult, useChannelEndpoint } from './hooks/useChannelEndpoint.cjs';
@@ -37,7 +37,6 @@ __export(server_exports, {
37
37
  SubscriptionPreferences: () => SubscriptionPreferences,
38
38
  TelegramConnectButton: () => TelegramConnectButton,
39
39
  WorkflowCriticalityEnum: () => import_js.WorkflowCriticalityEnum,
40
- useAgentChat: () => useAgentChat,
41
40
  useCounts: () => useCounts,
42
41
  useCreateSubscription: () => useCreateSubscription,
43
42
  useNotifications: () => useNotifications,
@@ -47,7 +46,8 @@ __export(server_exports, {
47
46
  useSchedule: () => useSchedule,
48
47
  useSubscription: () => useSubscription,
49
48
  useSubscriptions: () => useSubscriptions,
50
- useUpdateSubscription: () => useUpdateSubscription
49
+ useUpdateSubscription: () => useUpdateSubscription,
50
+ useWebChat: () => useWebChat
51
51
  });
52
52
  module.exports = __toCommonJS(server_exports);
53
53
  var import_ShadowRootDetector = require("../components/ShadowRootDetector.cjs");
@@ -92,14 +92,13 @@ function TelegramConnectButton() {
92
92
  function useNovu() {
93
93
  return null;
94
94
  }
95
- function useAgentChat(_) {
95
+ function useWebChat(_) {
96
96
  return {
97
97
  messages: [],
98
98
  pendingActions: [],
99
- isLoading: false,
99
+ isLoading: true,
100
100
  isRunning: false,
101
101
  typing: void 0,
102
- status: "active",
103
102
  conversationStatus: "active",
104
103
  run: { isRunning: false },
105
104
  pagination: {
@@ -204,7 +203,6 @@ function useSubscriptions(_) {
204
203
  SubscriptionPreferences,
205
204
  TelegramConnectButton,
206
205
  WorkflowCriticalityEnum,
207
- useAgentChat,
208
206
  useCounts,
209
207
  useCreateSubscription,
210
208
  useNotifications,
@@ -214,6 +212,7 @@ function useSubscriptions(_) {
214
212
  useSchedule,
215
213
  useSubscription,
216
214
  useSubscriptions,
217
- useUpdateSubscription
215
+ useUpdateSubscription,
216
+ useWebChat
218
217
  });
219
218
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/index.tsx"],"sourcesContent":["import type { InboxProps } from '../components/Inbox';\nimport { ShadowRootDetector } from '../components/ShadowRootDetector';\nimport type {\n UseAgentChatProps,\n UseAgentChatResult,\n UseCreateSubscriptionProps,\n UseCreateSubscriptionResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesProps,\n UsePreferencesResult,\n UseRemoveSubscriptionProps,\n UseRemoveSubscriptionResult,\n UseScheduleProps,\n UseScheduleResult,\n UseSubscriptionProps,\n UseSubscriptionResult,\n UseSubscriptionsProps,\n UseSubscriptionsResult,\n UseUpdateSubscriptionProps,\n UseUpdateSubscriptionResult,\n} from '../hooks';\nimport type { NovuProviderProps } from '../hooks/NovuProvider';\nimport type { UseCountsProps, UseCountsResult } from '../hooks/useCounts';\n\n/**\n * Exporting all components from the components folder\n * as empty functions to fix build errors in SSR\n * This will be replaced with actual components\n * when we implement the SSR components in @novu/js/ui\n */\nexport function Inbox(props: InboxProps) {\n return <ShadowRootDetector />;\n}\n\nexport function InboxContent() {}\n\nexport function Notifications() {}\n\nexport function Preferences() {}\n\nexport function Bell() {}\n\nexport function NovuProvider(props: NovuProviderProps) {\n return <>{props.children}</>;\n}\n\nexport function Subscription() {\n return <ShadowRootDetector />;\n}\n\nexport function SubscriptionButton() {}\n\nexport function SubscriptionPreferences() {}\n\nexport function SlackConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function SlackLinkUser() {\n return <ShadowRootDetector />;\n}\n\nexport function MsTeamsConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function MsTeamsLinkUser() {\n return <ShadowRootDetector />;\n}\n\nexport function TelegramConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function useNovu() {\n return null;\n}\n\nexport function useAgentChat(_: UseAgentChatProps): UseAgentChatResult {\n return {\n messages: [],\n pendingActions: [],\n isLoading: false,\n isRunning: false,\n typing: undefined,\n status: 'active',\n conversationStatus: 'active',\n run: { isRunning: false },\n pagination: {\n status: 'idle',\n hasMore: false,\n fetchMore: () => Promise.resolve({ data: undefined, error: undefined }),\n },\n isRecovering: false,\n catchUpError: undefined,\n refetch: () => Promise.resolve(),\n sendMessage: () => Promise.resolve({ data: undefined, error: undefined }),\n respondToAction: () => Promise.resolve({ data: undefined, error: undefined }),\n sendAction: () => Promise.resolve({ data: undefined, error: undefined }),\n retryMessage: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useCounts(_: UseCountsProps): UseCountsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useNotifications(_: UseNotificationsProps): UseNotificationsResult {\n return {\n isLoading: false,\n isFetching: false,\n hasMore: false,\n readAll: () => Promise.resolve({ data: undefined, error: undefined }),\n seenAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAllRead: () => Promise.resolve({ data: undefined, error: undefined }),\n refetch: () => Promise.resolve(),\n fetchMore: () => Promise.resolve(),\n };\n}\n\nexport function usePreferences(_: UsePreferencesProps): UsePreferencesResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSchedule(_: UseScheduleProps): UseScheduleResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSubscription(_: UseSubscriptionProps): UseSubscriptionResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useCreateSubscription(_: UseCreateSubscriptionProps = {}): UseCreateSubscriptionResult {\n return {\n isCreating: false,\n error: undefined,\n create: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useUpdateSubscription(_: UseUpdateSubscriptionProps = {}): UseUpdateSubscriptionResult {\n return {\n isUpdating: false,\n error: undefined,\n update: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useRemoveSubscription(_: UseRemoveSubscriptionProps = {}): UseRemoveSubscriptionResult {\n return {\n isRemoving: false,\n error: undefined,\n remove: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useSubscriptions(_: UseSubscriptionsProps): UseSubscriptionsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\n\nexport type { BellProps, InboxContentProps, InboxProps, NotificationProps, NovuProviderProps } from '../components';\n\nexport type {\n UseAgentChatProps,\n UseAgentChatResult,\n UseCountsProps,\n UseCountsResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n} from '../hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from '../utils/types';\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/server/index.tsx"],"sourcesContent":["import type { InboxProps } from '../components/Inbox';\nimport { ShadowRootDetector } from '../components/ShadowRootDetector';\nimport type {\n UseWebChatProps,\n UseWebChatResult,\n UseCreateSubscriptionProps,\n UseCreateSubscriptionResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesProps,\n UsePreferencesResult,\n UseRemoveSubscriptionProps,\n UseRemoveSubscriptionResult,\n UseScheduleProps,\n UseScheduleResult,\n UseSubscriptionProps,\n UseSubscriptionResult,\n UseSubscriptionsProps,\n UseSubscriptionsResult,\n UseUpdateSubscriptionProps,\n UseUpdateSubscriptionResult,\n} from '../hooks';\nimport type { NovuProviderProps } from '../hooks/NovuProvider';\nimport type { UseCountsProps, UseCountsResult } from '../hooks/useCounts';\n\n/**\n * Exporting all components from the components folder\n * as empty functions to fix build errors in SSR\n * This will be replaced with actual components\n * when we implement the SSR components in @novu/js/ui\n */\nexport function Inbox(props: InboxProps) {\n return <ShadowRootDetector />;\n}\n\nexport function InboxContent() {}\n\nexport function Notifications() {}\n\nexport function Preferences() {}\n\nexport function Bell() {}\n\nexport function NovuProvider(props: NovuProviderProps) {\n return <>{props.children}</>;\n}\n\nexport function Subscription() {\n return <ShadowRootDetector />;\n}\n\nexport function SubscriptionButton() {}\n\nexport function SubscriptionPreferences() {}\n\nexport function SlackConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function SlackLinkUser() {\n return <ShadowRootDetector />;\n}\n\nexport function MsTeamsConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function MsTeamsLinkUser() {\n return <ShadowRootDetector />;\n}\n\nexport function TelegramConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function useNovu() {\n return null;\n}\n\nexport function useWebChat(_: UseWebChatProps): UseWebChatResult {\n return {\n messages: [],\n pendingActions: [],\n isLoading: true,\n isRunning: false,\n typing: undefined,\n conversationStatus: 'active',\n run: { isRunning: false },\n pagination: {\n status: 'idle',\n hasMore: false,\n fetchMore: () => Promise.resolve({ data: undefined, error: undefined }),\n },\n isRecovering: false,\n catchUpError: undefined,\n refetch: () => Promise.resolve(),\n sendMessage: () => Promise.resolve({ data: undefined, error: undefined }),\n respondToAction: () => Promise.resolve({ data: undefined, error: undefined }),\n sendAction: () => Promise.resolve({ data: undefined, error: undefined }),\n retryMessage: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useCounts(_: UseCountsProps): UseCountsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useNotifications(_: UseNotificationsProps): UseNotificationsResult {\n return {\n isLoading: false,\n isFetching: false,\n hasMore: false,\n readAll: () => Promise.resolve({ data: undefined, error: undefined }),\n seenAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAllRead: () => Promise.resolve({ data: undefined, error: undefined }),\n refetch: () => Promise.resolve(),\n fetchMore: () => Promise.resolve(),\n };\n}\n\nexport function usePreferences(_: UsePreferencesProps): UsePreferencesResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSchedule(_: UseScheduleProps): UseScheduleResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSubscription(_: UseSubscriptionProps): UseSubscriptionResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useCreateSubscription(_: UseCreateSubscriptionProps = {}): UseCreateSubscriptionResult {\n return {\n isCreating: false,\n error: undefined,\n create: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useUpdateSubscription(_: UseUpdateSubscriptionProps = {}): UseUpdateSubscriptionResult {\n return {\n isUpdating: false,\n error: undefined,\n update: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useRemoveSubscription(_: UseRemoveSubscriptionProps = {}): UseRemoveSubscriptionResult {\n return {\n isRemoving: false,\n error: undefined,\n remove: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useSubscriptions(_: UseSubscriptionsProps): UseSubscriptionsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\n\nexport type { BellProps, InboxContentProps, InboxProps, NotificationProps, NovuProviderProps } from '../components';\n\nexport type {\n UseWebChatProps,\n UseWebChatResult,\n UseCountsProps,\n UseCountsResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n} from '../hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from '../utils/types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gCAAmC;AAqLnC,gBAA4E;AAtJnE;AADF,SAAS,MAAM,OAAmB;AACvC,SAAO,4CAAC,gDAAmB;AAC7B;AAEO,SAAS,eAAe;AAAC;AAEzB,SAAS,gBAAgB;AAAC;AAE1B,SAAS,cAAc;AAAC;AAExB,SAAS,OAAO;AAAC;AAEjB,SAAS,aAAa,OAA0B;AACrD,SAAO,2EAAG,gBAAM,UAAS;AAC3B;AAEO,SAAS,eAAe;AAC7B,SAAO,4CAAC,gDAAmB;AAC7B;AAEO,SAAS,qBAAqB;AAAC;AAE/B,SAAS,0BAA0B;AAAC;AAEpC,SAAS,qBAAqB;AACnC,SAAO,4CAAC,gDAAmB;AAC7B;AAEO,SAAS,gBAAgB;AAC9B,SAAO,4CAAC,gDAAmB;AAC7B;AAEO,SAAS,uBAAuB;AACrC,SAAO,4CAAC,gDAAmB;AAC7B;AAEO,SAAS,kBAAkB;AAChC,SAAO,4CAAC,gDAAmB;AAC7B;AAEO,SAAS,wBAAwB;AACtC,SAAO,4CAAC,gDAAmB;AAC7B;AAEO,SAAS,UAAU;AACxB,SAAO;AACT;AAEO,SAAS,WAAW,GAAsC;AAC/D,SAAO;AAAA,IACL,UAAU,CAAC;AAAA,IACX,gBAAgB,CAAC;AAAA,IACjB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,oBAAoB;AAAA,IACpB,KAAK,EAAE,WAAW,MAAM;AAAA,IACxB,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACxE;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,aAAa,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACxE,iBAAiB,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IAC5E,YAAY,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACvE,cAAc,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EAC3E;AACF;AAEO,SAAS,UAAU,GAAoC;AAC5D,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,iBAAiB,GAAkD;AACjF,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACpE,SAAS,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACpE,YAAY,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACvE,gBAAgB,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IAC3E,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,WAAW,MAAM,QAAQ,QAAQ;AAAA,EACnC;AACF;AAEO,SAAS,eAAe,GAA8C;AAC3E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,YAAY,GAAwC;AAClE,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,gBAAgB,GAAgD;AAC9E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,iBAAiB,GAAkD;AACjF,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;","names":[]}
@@ -3,7 +3,7 @@ import { InboxProps } from '../components/Inbox.cjs';
3
3
  export * from '@novu/js';
4
4
  export { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';
5
5
  import { NovuProviderProps } from '../hooks/NovuProvider.cjs';
6
- import { UseAgentChatProps, UseAgentChatResult } from '../hooks/useAgentChat.cjs';
6
+ import { UseWebChatProps, UseWebChatResult } from '../hooks/useWebChat.cjs';
7
7
  import { UseCountsProps, UseCountsResult } from '../hooks/useCounts.cjs';
8
8
  import { UseCreateSubscriptionProps, UseCreateSubscriptionResult } from '../hooks/useCreateSubscription.cjs';
9
9
  import { UseNotificationsProps, UseNotificationsResult } from '../hooks/useNotifications.cjs';
@@ -41,7 +41,7 @@ declare function MsTeamsConnectButton(): react_jsx_runtime.JSX.Element;
41
41
  declare function MsTeamsLinkUser(): react_jsx_runtime.JSX.Element;
42
42
  declare function TelegramConnectButton(): react_jsx_runtime.JSX.Element;
43
43
  declare function useNovu(): null;
44
- declare function useAgentChat(_: UseAgentChatProps): UseAgentChatResult;
44
+ declare function useWebChat(_: UseWebChatProps): UseWebChatResult;
45
45
  declare function useCounts(_: UseCountsProps): UseCountsResult;
46
46
  declare function useNotifications(_: UseNotificationsProps): UseNotificationsResult;
47
47
  declare function usePreferences(_: UsePreferencesProps): UsePreferencesResult;
@@ -52,4 +52,4 @@ declare function useUpdateSubscription(_?: UseUpdateSubscriptionProps): UseUpdat
52
52
  declare function useRemoveSubscription(_?: UseRemoveSubscriptionProps): UseRemoveSubscriptionResult;
53
53
  declare function useSubscriptions(_: UseSubscriptionsProps): UseSubscriptionsResult;
54
54
 
55
- export { Bell, Inbox, InboxContent, InboxProps, MsTeamsConnectButton, MsTeamsLinkUser, Notifications, NovuProvider, NovuProviderProps, Preferences, SlackConnectButton, SlackLinkUser, Subscription, SubscriptionButton, SubscriptionPreferences, TelegramConnectButton, UseAgentChatProps, UseAgentChatResult, UseCountsProps, UseCountsResult, UseNotificationsProps, UseNotificationsResult, UseScheduleProps as UsePreferencesProps, UsePreferencesResult, useAgentChat, useCounts, useCreateSubscription, useNotifications, useNovu, usePreferences, useRemoveSubscription, useSchedule, useSubscription, useSubscriptions, useUpdateSubscription };
55
+ export { Bell, Inbox, InboxContent, InboxProps, MsTeamsConnectButton, MsTeamsLinkUser, Notifications, NovuProvider, NovuProviderProps, Preferences, SlackConnectButton, SlackLinkUser, Subscription, SubscriptionButton, SubscriptionPreferences, TelegramConnectButton, UseCountsProps, UseCountsResult, UseNotificationsProps, UseNotificationsResult, UseScheduleProps as UsePreferencesProps, UsePreferencesResult, UseWebChatProps, UseWebChatResult, useCounts, useCreateSubscription, useNotifications, useNovu, usePreferences, useRemoveSubscription, useSchedule, useSubscription, useSubscriptions, useUpdateSubscription, useWebChat };
@@ -1,7 +1,7 @@
1
1
  export * from '@novu/js';
2
2
  export { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';
3
3
  export { NovuProvider, useNovu } from './NovuProvider.js';
4
- export { UseAgentChatProps, UseAgentChatResult, useAgentChat } from './useAgentChat.js';
4
+ export { UseWebChatProps, UseWebChatResult, useWebChat } from './useWebChat.js';
5
5
  export { UseChannelConnectionProps, UseChannelConnectionResult, useChannelConnection } from './useChannelConnection.js';
6
6
  export { UseChannelConnectionsProps, UseChannelConnectionsResult, useChannelConnections } from './useChannelConnections.js';
7
7
  export { UseChannelEndpointProps, UseChannelEndpointResult, useChannelEndpoint } from './useChannelEndpoint.js';
@@ -1,7 +1,7 @@
1
1
  // src/hooks/index.ts
2
2
  import { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from "@novu/js";
3
3
  import { NovuProvider, useNovu } from "./NovuProvider.js";
4
- export * from "./useAgentChat.js";
4
+ export * from "./useWebChat.js";
5
5
  export * from "./useChannelConnection.js";
6
6
  export * from "./useChannelConnections.js";
7
7
  export * from "./useChannelEndpoint.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\nexport { NovuProvider, useNovu } from './NovuProvider';\nexport * from './useAgentChat';\nexport * from './useChannelConnection';\nexport * from './useChannelConnections';\nexport * from './useChannelEndpoint';\nexport * from './useChannelEndpoints';\nexport * from './useCounts';\nexport * from './useCreateChannelEndpoint';\nexport * from './useCreateSubscription';\nexport * from './useDeleteChannelConnection';\nexport * from './useDeleteChannelEndpoint';\nexport * from './useNotifications';\nexport * from './usePreferences';\nexport * from './useRemoveSubscription';\nexport * from './useSchedule';\nexport * from './useSubscription';\nexport * from './useSubscriptions';\nexport * from './useTelegramSubscriberLink';\nexport * from './useUpdateSubscription';\n"],"mappings":";AACA,SAAS,iBAAiB,mBAAmB,+BAA+B;AAC5E,SAAS,cAAc,eAAe;AACtC,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\nexport { NovuProvider, useNovu } from './NovuProvider';\nexport * from './useWebChat';\nexport * from './useChannelConnection';\nexport * from './useChannelConnections';\nexport * from './useChannelEndpoint';\nexport * from './useChannelEndpoints';\nexport * from './useCounts';\nexport * from './useCreateChannelEndpoint';\nexport * from './useCreateSubscription';\nexport * from './useDeleteChannelConnection';\nexport * from './useDeleteChannelEndpoint';\nexport * from './useNotifications';\nexport * from './usePreferences';\nexport * from './useRemoveSubscription';\nexport * from './useSchedule';\nexport * from './useSubscription';\nexport * from './useSubscriptions';\nexport * from './useTelegramSubscriberLink';\nexport * from './useUpdateSubscription';\n"],"mappings":";AACA,SAAS,iBAAiB,mBAAmB,+BAA+B;AAC5E,SAAS,cAAc,eAAe;AACtC,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}