@opencx/widget 3.0.86 → 3.0.88

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 (54) hide show
  1. package/dist/designs.cjs +19 -47
  2. package/dist/designs.cjs.map +1 -1
  3. package/dist/designs.js +1297 -18475
  4. package/dist/designs.js.map +1 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.js +6 -4
  8. package/dist/index.js.map +1 -1
  9. package/dist/react.cjs +1 -1
  10. package/dist/react.cjs.map +1 -1
  11. package/dist/react.js +20 -18
  12. package/dist/react.js.map +1 -1
  13. package/dist/src/designs/react/hooks/useCanvas.d.ts +3 -0
  14. package/dist/src/designs/react/hooks/useTheme.d.ts +6 -0
  15. package/dist/src/designs/react/index.d.ts +3 -2
  16. package/dist/src/designs/react/screens/chat/ChatCanvas.d.ts +2 -0
  17. package/dist/src/headless/core/__tests__/test-utils.d.ts +41 -2
  18. package/dist/src/headless/core/api/api-caller.d.ts +41 -2
  19. package/dist/src/headless/core/api/schema.d.ts +179 -75
  20. package/dist/src/headless/core/context/message.ctx.d.ts +1 -0
  21. package/dist/src/headless/core/context/session.ctx.d.ts +24 -0
  22. package/dist/src/headless/core/context/widget.ctx.d.ts +2 -0
  23. package/dist/src/headless/core/index.d.ts +1 -1
  24. package/dist/src/headless/core/types/dtos.d.ts +3 -2
  25. package/dist/src/headless/core/types/widget-config.d.ts +7 -0
  26. package/dist/src/headless/react/WidgetProvider.d.ts +4 -1
  27. package/dist/src/headless/react/hooks/useMessages.d.ts +1 -0
  28. package/dist/src/headless/react/hooks/useModes.d.ts +15 -0
  29. package/dist/src/headless/react/hooks/useSessions.d.ts +27 -0
  30. package/dist/src/headless/react/index.d.ts +2 -0
  31. package/dist/src/headless/react/types/modes.components.d.ts +11 -0
  32. package/dist/useModes-DSFNdOy3.cjs +2 -0
  33. package/dist/useModes-DSFNdOy3.cjs.map +1 -0
  34. package/dist/useModes-DleBrdDK.js +260 -0
  35. package/dist/useModes-DleBrdDK.js.map +1 -0
  36. package/dist/widget.ctx-CC3c7FPb.js +1542 -0
  37. package/dist/widget.ctx-CC3c7FPb.js.map +1 -0
  38. package/dist/widget.ctx-HuLTTMAM.cjs +5 -0
  39. package/dist/widget.ctx-HuLTTMAM.cjs.map +1 -0
  40. package/dist-embed/script.js +83 -83
  41. package/dist-embed/script.js.map +1 -1
  42. package/package.json +113 -52
  43. package/dist/is-exhaustive-9o43S91P.cjs +0 -2
  44. package/dist/is-exhaustive-9o43S91P.cjs.map +0 -1
  45. package/dist/is-exhaustive-DGJzQK69.js +0 -7
  46. package/dist/is-exhaustive-DGJzQK69.js.map +0 -1
  47. package/dist/useWidgetTrigger-Bi12WVrs.js +0 -1364
  48. package/dist/useWidgetTrigger-Bi12WVrs.js.map +0 -1
  49. package/dist/useWidgetTrigger-Bplu_1C-.cjs +0 -18
  50. package/dist/useWidgetTrigger-Bplu_1C-.cjs.map +0 -1
  51. package/dist/widget.ctx-DFFwNHvy.js +0 -673
  52. package/dist/widget.ctx-DFFwNHvy.js.map +0 -1
  53. package/dist/widget.ctx-oIT8sGvJ.cjs +0 -5
  54. package/dist/widget.ctx-oIT8sGvJ.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./widget.ctx-oIT8sGvJ.cjs"),e=require("./is-exhaustive-9o43S91P.cjs");exports.PrimitiveState=t.PrimitiveState;exports.WidgetCtx=t.WidgetCtx;exports.isExhaustive=e.isExhaustive;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./widget.ctx-HuLTTMAM.cjs");function r(e,i){console.error(`Missing case for ${e} in ${i}`)}exports.PrimitiveState=t.PrimitiveState;exports.WidgetCtx=t.WidgetCtx;exports.isExhaustive=r;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.cjs","sources":["../src/headless/core/utils/is-exhaustive.ts"],"sourcesContent":["export function isExhaustive(value: never, funcName: string) {\n console.error(`Missing case for ${value} in ${funcName}`);\n}\n"],"names":["isExhaustive","value","funcName"],"mappings":"6HAAgB,SAAAA,EAAaC,EAAcC,EAAkB,CAC3D,QAAQ,MAAM,oBAAoBD,CAAK,OAAOC,CAAQ,EAAE,CAC1D"}
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
- import { P as e, W as a } from "./widget.ctx-DFFwNHvy.js";
2
- import { i as s } from "./is-exhaustive-DGJzQK69.js";
1
+ import { P as s, W as a } from "./widget.ctx-CC3c7FPb.js";
2
+ function t(i, e) {
3
+ console.error(`Missing case for ${i} in ${e}`);
4
+ }
3
5
  export {
4
- e as PrimitiveState,
6
+ s as PrimitiveState,
5
7
  a as WidgetCtx,
6
- s as isExhaustive
8
+ t as isExhaustive
7
9
  };
8
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"index.js","sources":["../src/headless/core/utils/is-exhaustive.ts"],"sourcesContent":["export function isExhaustive(value: never, funcName: string) {\n console.error(`Missing case for ${value} in ${funcName}`);\n}\n"],"names":["isExhaustive","value","funcName"],"mappings":";AAAgB,SAAAA,EAAaC,GAAcC,GAAkB;AAC3D,UAAQ,MAAM,oBAAoBD,CAAK,OAAOC,CAAQ,EAAE;AAC1D;"}
package/dist/react.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useWidgetTrigger-Bplu_1C-.cjs");function g(t,i,s){const{widgetCtx:{api:u}}=e.useWidget();return e._default(async r=>u.vote({action:r==="up"?"upvote":"downvote",messagePublicId:t,sessionId:i}).then(s),[u,t,i,s])}exports.WidgetProvider=e.WidgetProvider;exports.WidgetTriggerProvider=e.WidgetTriggerProvider;exports.useConfig=e.useConfig;exports.useContact=e.useContact;exports.useIsAwaitingBotReply=e.useIsAwaitingBotReply;exports.useMessages=e.useMessages;exports.usePreludeData=e.usePreludeData;exports.usePrimitiveState=e.usePrimitiveState;exports.useSessions=e.useSessions;exports.useUploadFiles=e.useUploadFiles;exports.useWidget=e.useWidget;exports.useWidgetRouter=e.useWidgetRouter;exports.useWidgetTrigger=e.useWidgetTrigger;exports.useVote=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useModes-DSFNdOy3.cjs"),o=require("react-use/lib/useAsyncFn");function g(s,t,i){const{widgetCtx:{api:u}}=e.useWidget();return o(async r=>u.vote({action:r==="up"?"upvote":"downvote",messagePublicId:s,sessionId:t}).then(i),[u,s,t,i])}exports.WidgetProvider=e.WidgetProvider;exports.WidgetTriggerProvider=e.WidgetTriggerProvider;exports.useConfig=e.useConfig;exports.useContact=e.useContact;exports.useIsAwaitingBotReply=e.useIsAwaitingBotReply;exports.useMessages=e.useMessages;exports.useModes=e.useModes;exports.usePreludeData=e.usePreludeData;exports.usePrimitiveState=e.usePrimitiveState;exports.useSessions=e.useSessions;exports.useUploadFiles=e.useUploadFiles;exports.useWidget=e.useWidget;exports.useWidgetRouter=e.useWidgetRouter;exports.useWidgetTrigger=e.useWidgetTrigger;exports.useVote=g;
2
2
  //# sourceMappingURL=react.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.cjs","sources":["../src/headless/react/hooks/useVote.ts"],"sourcesContent":["import useAsyncFn from 'react-use/lib/useAsyncFn';\nimport { useWidget } from '../WidgetProvider';\n\n/**\n * @param id\n * @param onSuccess\n * @returns\n */\nexport function useVote(id: string, sessionId: string, onSuccess?: () => void) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async (action: 'up' | 'down') => {\n return api\n .vote({\n action: action === 'up' ? 'upvote' : 'downvote',\n messagePublicId: id,\n sessionId,\n })\n .then(onSuccess);\n },\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useUpvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'upvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useDownvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'downvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n"],"names":["useVote","id","sessionId","onSuccess","api","useWidget","useAsyncFn","action"],"mappings":"mIAQgB,SAAAA,EAAQC,EAAYC,EAAmBC,EAAwB,CACvE,KAAA,CACJ,UAAW,CAAE,IAAAC,CAAI,GACfC,EAAU,UAAA,EACP,OAAAC,EAAA,SACL,MAAOC,GACEH,EACJ,KAAK,CACJ,OAAQG,IAAW,KAAO,SAAW,WACrC,gBAAiBN,EACjB,UAAAC,CAAA,CACD,EACA,KAAKC,CAAS,EAEnB,CAACC,EAAKH,EAAIC,EAAWC,CAAS,CAAA,CAElC"}
1
+ {"version":3,"file":"react.cjs","sources":["../src/headless/react/hooks/useVote.ts"],"sourcesContent":["import useAsyncFn from 'react-use/lib/useAsyncFn';\nimport { useWidget } from '../WidgetProvider';\n\n/**\n * @param id\n * @param onSuccess\n * @returns\n */\nexport function useVote(id: string, sessionId: string, onSuccess?: () => void) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async (action: 'up' | 'down') => {\n return api\n .vote({\n action: action === 'up' ? 'upvote' : 'downvote',\n messagePublicId: id,\n sessionId,\n })\n .then(onSuccess);\n },\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useUpvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'upvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useDownvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'downvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n"],"names":["useVote","id","sessionId","onSuccess","api","useWidget","useAsyncFn","action"],"mappings":"iKAQgB,SAAAA,EAAQC,EAAYC,EAAmBC,EAAwB,CACvE,KAAA,CACJ,UAAW,CAAE,IAAAC,CAAI,GACfC,EAAU,UAAA,EACP,OAAAC,EACL,MAAOC,GACEH,EACJ,KAAK,CACJ,OAAQG,IAAW,KAAO,SAAW,WACrC,gBAAiBN,EACjB,UAAAC,CAAA,CACD,EACA,KAAKC,CAAS,EAEnB,CAACC,EAAKH,EAAIC,EAAWC,CAAS,CAAA,CAElC"}
package/dist/react.js CHANGED
@@ -1,9 +1,10 @@
1
- import { u, _ as r } from "./useWidgetTrigger-Bi12WVrs.js";
2
- import { W as p, k as f, a as l, b as v, c as W, d as c, e as m, f as P, g as w, i as x, h as C, j as b } from "./useWidgetTrigger-Bi12WVrs.js";
3
- function g(e, s, t) {
1
+ import { u as o } from "./useModes-DleBrdDK.js";
2
+ import { W as m, k as c, a as f, b as l, c as v, d as W, l as P, e as w, f as x, g as y, i as C, h as b, j as h } from "./useModes-DleBrdDK.js";
3
+ import r from "react-use/lib/useAsyncFn";
4
+ function n(e, s, t) {
4
5
  const {
5
6
  widgetCtx: { api: a }
6
- } = u();
7
+ } = o();
7
8
  return r(
8
9
  async (i) => a.vote({
9
10
  action: i === "up" ? "upvote" : "downvote",
@@ -14,19 +15,20 @@ function g(e, s, t) {
14
15
  );
15
16
  }
16
17
  export {
17
- p as WidgetProvider,
18
- f as WidgetTriggerProvider,
19
- l as useConfig,
20
- v as useContact,
21
- W as useIsAwaitingBotReply,
22
- c as useMessages,
23
- m as usePreludeData,
24
- P as usePrimitiveState,
25
- w as useSessions,
26
- x as useUploadFiles,
27
- g as useVote,
28
- u as useWidget,
29
- C as useWidgetRouter,
30
- b as useWidgetTrigger
18
+ m as WidgetProvider,
19
+ c as WidgetTriggerProvider,
20
+ f as useConfig,
21
+ l as useContact,
22
+ v as useIsAwaitingBotReply,
23
+ W as useMessages,
24
+ P as useModes,
25
+ w as usePreludeData,
26
+ x as usePrimitiveState,
27
+ y as useSessions,
28
+ C as useUploadFiles,
29
+ n as useVote,
30
+ o as useWidget,
31
+ b as useWidgetRouter,
32
+ h as useWidgetTrigger
31
33
  };
32
34
  //# sourceMappingURL=react.js.map
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../src/headless/react/hooks/useVote.ts"],"sourcesContent":["import useAsyncFn from 'react-use/lib/useAsyncFn';\nimport { useWidget } from '../WidgetProvider';\n\n/**\n * @param id\n * @param onSuccess\n * @returns\n */\nexport function useVote(id: string, sessionId: string, onSuccess?: () => void) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async (action: 'up' | 'down') => {\n return api\n .vote({\n action: action === 'up' ? 'upvote' : 'downvote',\n messagePublicId: id,\n sessionId,\n })\n .then(onSuccess);\n },\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useUpvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'upvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useDownvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'downvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n"],"names":["useVote","id","sessionId","onSuccess","api","useWidget","useAsyncFn","action"],"mappings":";;AAQgB,SAAAA,EAAQC,GAAYC,GAAmBC,GAAwB;AACvE,QAAA;AAAA,IACJ,WAAW,EAAE,KAAAC,EAAI;AAAA,MACfC,EAAU;AACP,SAAAC;AAAAA,IACL,OAAOC,MACEH,EACJ,KAAK;AAAA,MACJ,QAAQG,MAAW,OAAO,WAAW;AAAA,MACrC,iBAAiBN;AAAA,MACjB,WAAAC;AAAA,IAAA,CACD,EACA,KAAKC,CAAS;AAAA,IAEnB,CAACC,GAAKH,GAAIC,GAAWC,CAAS;AAAA,EAAA;AAElC;"}
1
+ {"version":3,"file":"react.js","sources":["../src/headless/react/hooks/useVote.ts"],"sourcesContent":["import useAsyncFn from 'react-use/lib/useAsyncFn';\nimport { useWidget } from '../WidgetProvider';\n\n/**\n * @param id\n * @param onSuccess\n * @returns\n */\nexport function useVote(id: string, sessionId: string, onSuccess?: () => void) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async (action: 'up' | 'down') => {\n return api\n .vote({\n action: action === 'up' ? 'upvote' : 'downvote',\n messagePublicId: id,\n sessionId,\n })\n .then(onSuccess);\n },\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useUpvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'upvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n\n/**\n * @param id\n * @param onSuccess\n * @deprecated use useVote instead\n */\nexport function useDownvote(\n id: string,\n sessionId: string,\n onSuccess?: () => void,\n) {\n const {\n widgetCtx: { api },\n } = useWidget();\n return useAsyncFn(\n async () =>\n api\n .vote({ action: 'downvote', messagePublicId: id, sessionId })\n .then(onSuccess),\n [api, id, sessionId, onSuccess],\n );\n}\n"],"names":["useVote","id","sessionId","onSuccess","api","useWidget","useAsyncFn","action"],"mappings":";;;AAQgB,SAAAA,EAAQC,GAAYC,GAAmBC,GAAwB;AACvE,QAAA;AAAA,IACJ,WAAW,EAAE,KAAAC,EAAI;AAAA,MACfC,EAAU;AACP,SAAAC;AAAA,IACL,OAAOC,MACEH,EACJ,KAAK;AAAA,MACJ,QAAQG,MAAW,OAAO,WAAW;AAAA,MACrC,iBAAiBN;AAAA,MACjB,WAAAC;AAAA,IAAA,CACD,EACA,KAAKC,CAAS;AAAA,IAEnB,CAACC,GAAKH,GAAIC,GAAWC,CAAS;AAAA,EAAA;AAElC;"}
@@ -0,0 +1,3 @@
1
+ export declare function useCanvas(): {
2
+ isCanvasOpen: boolean;
3
+ };
@@ -43,6 +43,12 @@ export declare function useTheme(): {
43
43
  chat: {
44
44
  width: string;
45
45
  height: string;
46
+ withCanvas: {
47
+ width: string;
48
+ height: string;
49
+ transitionTimingFunction: string;
50
+ transitionDuration: string;
51
+ };
46
52
  };
47
53
  };
48
54
  };
@@ -1,9 +1,10 @@
1
1
  import { default as React } from 'react';
2
2
  import { WidgetConfig } from '../../headless/core';
3
- import { WidgetComponentType } from '../../headless/react';
4
- declare function WidgetWrapper({ options, components, loadingComponent, }: {
3
+ import { WidgetComponentType, WidgetModeComponentType } from '../../headless/react';
4
+ declare function WidgetWrapper({ options, components, modesComponents, loadingComponent, }: {
5
5
  options: WidgetConfig;
6
6
  components?: WidgetComponentType[];
7
+ modesComponents?: WidgetModeComponentType[];
7
8
  loadingComponent?: React.ReactNode;
8
9
  }): React.JSX.Element;
9
10
  export { WidgetWrapper as Widget };
@@ -0,0 +1,2 @@
1
+ import { default as React } from 'react';
2
+ export declare function ChatCanvas(): React.JSX.Element | null;
@@ -133,7 +133,7 @@ export declare const TestUtils: {
133
133
  };
134
134
  requestBody: {
135
135
  content: {
136
- "application/json": import('../api/schema').components["schemas"]["SendWidgetMessageDto"];
136
+ "application/json": import('../api/schema').components["schemas"]["WidgetSendMessageInputDto"];
137
137
  };
138
138
  };
139
139
  responses: {
@@ -142,7 +142,7 @@ export declare const TestUtils: {
142
142
  [name: string]: unknown;
143
143
  };
144
144
  content: {
145
- "application/json": import('../api/schema').components["schemas"]["HandleContactMessageOutputDto"];
145
+ "application/json": import('../api/schema').components["schemas"]["WidgetSendMessageOutputDto"];
146
146
  };
147
147
  };
148
148
  500: {
@@ -183,6 +183,7 @@ export declare const TestUtils: {
183
183
  custom_data?: {
184
184
  [key: string]: unknown;
185
185
  } | null;
186
+ exit_mode_prompt?: string;
186
187
  };
187
188
  signal: AbortSignal | undefined;
188
189
  }, `${string}/${string}`>> | undefined): void;
@@ -375,6 +376,44 @@ export declare const TestUtils: {
375
376
  };
376
377
  signal: AbortSignal | undefined;
377
378
  }, `${string}/${string}`>> | undefined): void;
379
+ createStateCheckpoint(target: typeof ApiCaller, returnValue: Partial<import('openapi-fetch').FetchResponse<{
380
+ parameters: {
381
+ query?: never;
382
+ header?: never;
383
+ path?: never;
384
+ cookie?: never;
385
+ };
386
+ requestBody: {
387
+ content: {
388
+ "application/json": import('../api/schema').components["schemas"]["WidgetCreateStateCheckpointInputDto"];
389
+ };
390
+ };
391
+ responses: {
392
+ 200: {
393
+ headers: {
394
+ [name: string]: unknown;
395
+ };
396
+ content: {
397
+ "application/json": import('../api/schema').components["schemas"]["WidgetCreateStateCheckpointOutputDto"];
398
+ };
399
+ };
400
+ 500: {
401
+ headers: {
402
+ [name: string]: unknown;
403
+ };
404
+ content: {
405
+ "application/json": import('../api/schema').components["schemas"]["ErrorDto"];
406
+ };
407
+ };
408
+ };
409
+ }, {
410
+ body: {
411
+ session_id: string;
412
+ payload: {
413
+ [key: string]: unknown;
414
+ };
415
+ };
416
+ }, `${string}/${string}`>> | undefined): void;
378
417
  };
379
418
  };
380
419
  };
@@ -90,7 +90,7 @@ export declare class ApiCaller {
90
90
  };
91
91
  requestBody: {
92
92
  content: {
93
- "application/json": import('./schema').components["schemas"]["SendWidgetMessageDto"];
93
+ "application/json": import('./schema').components["schemas"]["WidgetSendMessageInputDto"];
94
94
  };
95
95
  };
96
96
  responses: {
@@ -99,7 +99,7 @@ export declare class ApiCaller {
99
99
  [name: string]: unknown;
100
100
  };
101
101
  content: {
102
- "application/json": import('./schema').components["schemas"]["HandleContactMessageOutputDto"];
102
+ "application/json": import('./schema').components["schemas"]["WidgetSendMessageOutputDto"];
103
103
  };
104
104
  };
105
105
  500: {
@@ -140,6 +140,7 @@ export declare class ApiCaller {
140
140
  custom_data?: {
141
141
  [key: string]: unknown;
142
142
  } | null;
143
+ exit_mode_prompt?: string;
143
144
  };
144
145
  signal: AbortSignal | undefined;
145
146
  }, `${string}/${string}`>>;
@@ -395,4 +396,42 @@ export declare class ApiCaller {
395
396
  };
396
397
  signal: AbortSignal | undefined;
397
398
  }, `${string}/${string}`>>;
399
+ createStateCheckpoint: (body: Dto["WidgetCreateStateCheckpointInputDto"]) => Promise<import('openapi-fetch').FetchResponse<{
400
+ parameters: {
401
+ query?: never;
402
+ header?: never;
403
+ path?: never;
404
+ cookie?: never;
405
+ };
406
+ requestBody: {
407
+ content: {
408
+ "application/json": import('./schema').components["schemas"]["WidgetCreateStateCheckpointInputDto"];
409
+ };
410
+ };
411
+ responses: {
412
+ 200: {
413
+ headers: {
414
+ [name: string]: unknown;
415
+ };
416
+ content: {
417
+ "application/json": import('./schema').components["schemas"]["WidgetCreateStateCheckpointOutputDto"];
418
+ };
419
+ };
420
+ 500: {
421
+ headers: {
422
+ [name: string]: unknown;
423
+ };
424
+ content: {
425
+ "application/json": import('./schema').components["schemas"]["ErrorDto"];
426
+ };
427
+ };
428
+ };
429
+ }, {
430
+ body: {
431
+ session_id: string;
432
+ payload: {
433
+ [key: string]: unknown;
434
+ };
435
+ };
436
+ }, `${string}/${string}`>>;
398
437
  }
@@ -115,6 +115,22 @@ export interface paths {
115
115
  patch?: never;
116
116
  trace?: never;
117
117
  };
118
+ '/backend/widget/v2/checkpoint': {
119
+ parameters: {
120
+ query?: never;
121
+ header?: never;
122
+ path?: never;
123
+ cookie?: never;
124
+ };
125
+ get?: never;
126
+ put?: never;
127
+ post: operations['createStateCheckpoint'];
128
+ delete?: never;
129
+ options?: never;
130
+ head?: never;
131
+ patch?: never;
132
+ trace?: never;
133
+ };
118
134
  '/backend/widget/v2/upload': {
119
135
  parameters: {
120
136
  query?: never;
@@ -199,42 +215,6 @@ export interface components {
199
215
  /** Format: binary */
200
216
  file: string;
201
217
  };
202
- HandleContactMessageOutputDto: {
203
- /** @enum {boolean} */
204
- success: true;
205
- code?: string | 'session_assigned_to_human_agent' | 'response_cancelled';
206
- autopilotResponse?: {
207
- /** @enum {string} */
208
- type: 'text';
209
- value: {
210
- error: boolean;
211
- content: string;
212
- };
213
- id?: string;
214
- mightSolveUserIssue: boolean;
215
- completelyAndFullyCoveredUserIssue: boolean;
216
- };
217
- uiResponse?: {
218
- /** @enum {string} */
219
- type: 'ui';
220
- value: {
221
- /** @enum {string} */
222
- type: 'ui_component';
223
- request_response?: unknown;
224
- name: string;
225
- content?: string;
226
- };
227
- mightSolveUserIssue: boolean;
228
- };
229
- sessionIsHandedOff?: boolean;
230
- } | {
231
- /** @enum {boolean} */
232
- success: false;
233
- error: {
234
- code?: string;
235
- message?: string;
236
- };
237
- };
238
218
  /** @description Paginated response. */
239
219
  PaginatedWidgetSessionsDto: {
240
220
  items: {
@@ -253,45 +233,14 @@ export interface components {
253
233
  channel: string;
254
234
  isVerified: boolean;
255
235
  lastMessage: string | null;
236
+ modeId: string | null;
237
+ latestStateCheckpointPayload: {
238
+ [key: string]: unknown;
239
+ } | null;
256
240
  }[];
257
241
  /** @description The `cursor` for the request to get the next set of items. Null if there is no more data. */
258
242
  next: string | null;
259
243
  };
260
- SendWidgetMessageDto: {
261
- /** Format: uuid */
262
- uuid: string;
263
- content: string;
264
- session_id: string;
265
- bot_token: string;
266
- /** @description Additional headers to be included in the request of action calls */
267
- headers?: {
268
- [key: string]: string;
269
- } | null;
270
- /** @description Additional query parameters to be included in the query of action calls */
271
- query_params?: {
272
- [key: string]: string;
273
- } | null;
274
- /** @description Additional body properties to be included in the body of action calls */
275
- body_properties?: {
276
- [key: string]: unknown;
277
- } | null;
278
- language?: string | null;
279
- attachments?: {
280
- id: string;
281
- name: string;
282
- size: number;
283
- type: string;
284
- url: string;
285
- }[] | null;
286
- /** @description Context for the AI to be sent with each contact message */
287
- clientContext?: {
288
- [key: string]: unknown;
289
- } | null;
290
- /** @description Custom data to be sent with each contact message */
291
- custom_data?: {
292
- [key: string]: unknown;
293
- } | null;
294
- };
295
244
  UploadWidgetFileResponseDto: {
296
245
  fileName: string;
297
246
  fileUrl: string;
@@ -299,15 +248,29 @@ export interface components {
299
248
  WidgetConfigDto: {
300
249
  sessionsPollingIntervalSeconds: number;
301
250
  sessionPollingIntervalSeconds: number;
251
+ modes: {
252
+ id: string;
253
+ name: string;
254
+ slug?: string | null;
255
+ }[];
302
256
  };
303
257
  WidgetContactTokenResponseDto: {
304
258
  /** @description The JWT token to use for further requests */
305
259
  token: string;
306
260
  };
261
+ WidgetCreateStateCheckpointInputDto: {
262
+ session_id: string;
263
+ payload: {
264
+ [key: string]: unknown;
265
+ };
266
+ };
267
+ WidgetCreateStateCheckpointOutputDto: {
268
+ success: boolean;
269
+ };
307
270
  WidgetHistoryDto: {
308
271
  publicId: string;
309
272
  /** @enum {string} */
310
- type: 'message' | 'handoff' | 'handoff_to_zendesk' | 'agent_message' | 'agent_joined' | 'agent_comment' | 'agent_took_session_from_ai' | 'agent_reopened_session' | 'ai_decided_to_resolve_the_issue' | 'email_draft_message' | 'followup' | 'ai_assumed_the_session_resolved' | 'user_confirmed_the_session_resolved' | 'system_message';
273
+ type: 'message' | 'agent_message' | 'agent_joined' | 'agent_comment' | 'agent_took_session_from_ai' | 'agent_reopened_session' | 'handoff' | 'handoff_to_zendesk' | 'handoff_to_salesforce_miaw' | 'ai_decided_to_resolve_the_issue' | 'ai_assumed_the_session_resolved' | 'user_confirmed_the_session_resolved' | 'state_checkpoint' | 'email_draft_message' | 'followup' | 'system_message';
311
274
  content: {
312
275
  text?: string | null;
313
276
  };
@@ -378,6 +341,107 @@ export interface components {
378
341
  WidgetResolveSessionInputDto: {
379
342
  session_id: string;
380
343
  };
344
+ WidgetSendMessageInputDto: {
345
+ /** Format: uuid */
346
+ uuid: string;
347
+ content: string;
348
+ session_id: string;
349
+ bot_token: string;
350
+ /** @description Additional headers to be included in the request of action calls */
351
+ headers?: {
352
+ [key: string]: string;
353
+ } | null;
354
+ /** @description Additional query parameters to be included in the query of action calls */
355
+ query_params?: {
356
+ [key: string]: string;
357
+ } | null;
358
+ /** @description Additional body properties to be included in the body of action calls */
359
+ body_properties?: {
360
+ [key: string]: unknown;
361
+ } | null;
362
+ language?: string | null;
363
+ attachments?: {
364
+ id: string;
365
+ name: string;
366
+ size: number;
367
+ type: string;
368
+ url: string;
369
+ }[] | null;
370
+ /** @description Context for the AI to be sent with each contact message */
371
+ clientContext?: {
372
+ [key: string]: unknown;
373
+ } | null;
374
+ /** @description Custom data to be sent with each contact message */
375
+ custom_data?: {
376
+ [key: string]: unknown;
377
+ } | null;
378
+ /** @description If there is an active mode, it will be exited and the prompt will be given to the AI for a customized response */
379
+ exit_mode_prompt?: string;
380
+ };
381
+ WidgetSendMessageOutputDto: {
382
+ /** @enum {boolean} */
383
+ success: true;
384
+ code?: string | 'session_assigned_to_human_agent' | 'response_cancelled';
385
+ autopilotResponse?: {
386
+ /** @enum {string} */
387
+ type: 'text';
388
+ value: {
389
+ error: boolean;
390
+ content: string;
391
+ };
392
+ id?: string;
393
+ mightSolveUserIssue: boolean;
394
+ completelyAndFullyCoveredUserIssue: boolean;
395
+ mode?: {
396
+ id: string;
397
+ name: string;
398
+ slug?: string;
399
+ };
400
+ didExitMode?: boolean;
401
+ };
402
+ uiResponse?: {
403
+ /** @enum {string} */
404
+ type: 'ui';
405
+ value: {
406
+ /** @enum {string} */
407
+ type: 'ui_component';
408
+ request_response?: unknown;
409
+ name: string;
410
+ content?: string;
411
+ };
412
+ mightSolveUserIssue: boolean;
413
+ };
414
+ sessionIsHandedOff?: boolean;
415
+ /** @description WidgetSession */
416
+ session?: {
417
+ /** Format: uuid */
418
+ id: string;
419
+ createdAt: string;
420
+ updatedAt: string;
421
+ isHandedOff: boolean;
422
+ isOpened: boolean;
423
+ assignee: {
424
+ /** @enum {string} */
425
+ kind: 'human' | 'ai' | 'none' | 'unknown';
426
+ name: string | null;
427
+ avatarUrl: string | null;
428
+ };
429
+ channel: string;
430
+ isVerified: boolean;
431
+ lastMessage: string | null;
432
+ modeId: string | null;
433
+ latestStateCheckpointPayload: {
434
+ [key: string]: unknown;
435
+ } | null;
436
+ };
437
+ } | {
438
+ /** @enum {boolean} */
439
+ success: false;
440
+ error: {
441
+ code?: string;
442
+ message?: string;
443
+ };
444
+ };
381
445
  WidgetSessionAndHistoryDto: {
382
446
  /** @description WidgetSession */
383
447
  session: {
@@ -396,11 +460,15 @@ export interface components {
396
460
  channel: string;
397
461
  isVerified: boolean;
398
462
  lastMessage: string | null;
463
+ modeId: string | null;
464
+ latestStateCheckpointPayload: {
465
+ [key: string]: unknown;
466
+ } | null;
399
467
  };
400
468
  history: {
401
469
  publicId: string;
402
470
  /** @enum {string} */
403
- type: 'message' | 'handoff' | 'handoff_to_zendesk' | 'agent_message' | 'agent_joined' | 'agent_comment' | 'agent_took_session_from_ai' | 'agent_reopened_session' | 'ai_decided_to_resolve_the_issue' | 'email_draft_message' | 'followup' | 'ai_assumed_the_session_resolved' | 'user_confirmed_the_session_resolved' | 'system_message';
471
+ type: 'message' | 'agent_message' | 'agent_joined' | 'agent_comment' | 'agent_took_session_from_ai' | 'agent_reopened_session' | 'handoff' | 'handoff_to_zendesk' | 'handoff_to_salesforce_miaw' | 'ai_decided_to_resolve_the_issue' | 'ai_assumed_the_session_resolved' | 'user_confirmed_the_session_resolved' | 'state_checkpoint' | 'email_draft_message' | 'followup' | 'system_message';
404
472
  content: {
405
473
  text?: string | null;
406
474
  };
@@ -442,6 +510,10 @@ export interface components {
442
510
  channel: string;
443
511
  isVerified: boolean;
444
512
  lastMessage: string | null;
513
+ modeId: string | null;
514
+ latestStateCheckpointPayload: {
515
+ [key: string]: unknown;
516
+ } | null;
445
517
  };
446
518
  WidgetVoteDto: {
447
519
  /** @enum {string} */
@@ -667,7 +739,39 @@ export interface operations {
667
739
  };
668
740
  requestBody: {
669
741
  content: {
670
- 'application/json': components['schemas']['SendWidgetMessageDto'];
742
+ 'application/json': components['schemas']['WidgetSendMessageInputDto'];
743
+ };
744
+ };
745
+ responses: {
746
+ 200: {
747
+ headers: {
748
+ [name: string]: unknown;
749
+ };
750
+ content: {
751
+ 'application/json': components['schemas']['WidgetSendMessageOutputDto'];
752
+ };
753
+ };
754
+ /** @description Internal Server Error */
755
+ 500: {
756
+ headers: {
757
+ [name: string]: unknown;
758
+ };
759
+ content: {
760
+ 'application/json': components['schemas']['ErrorDto'];
761
+ };
762
+ };
763
+ };
764
+ };
765
+ createStateCheckpoint: {
766
+ parameters: {
767
+ query?: never;
768
+ header?: never;
769
+ path?: never;
770
+ cookie?: never;
771
+ };
772
+ requestBody: {
773
+ content: {
774
+ 'application/json': components['schemas']['WidgetCreateStateCheckpointInputDto'];
671
775
  };
672
776
  };
673
777
  responses: {
@@ -676,7 +780,7 @@ export interface operations {
676
780
  [name: string]: unknown;
677
781
  };
678
782
  content: {
679
- 'application/json': components['schemas']['HandleContactMessageOutputDto'];
783
+ 'application/json': components['schemas']['WidgetCreateStateCheckpointOutputDto'];
680
784
  };
681
785
  };
682
786
  /** @description Internal Server Error */
@@ -29,6 +29,7 @@ export declare class MessageCtx {
29
29
  content: SendMessageDto["content"];
30
30
  attachments?: SendMessageDto["attachments"];
31
31
  customData?: SendMessageDto["custom_data"];
32
+ exitModePrompt?: string;
32
33
  }) => Promise<void>;
33
34
  private toUserMessage;
34
35
  private toBotMessage;