@chat-lab/ui 0.1.0-beta.51 → 0.1.0-beta.53

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 (37) hide show
  1. package/dist/components/Chatkit/index.cjs +42 -18
  2. package/dist/components/Chatkit/index.cjs.map +1 -1
  3. package/dist/components/Chatkit/index.d.ts.map +1 -1
  4. package/dist/components/Chatkit/index.js +42 -18
  5. package/dist/components/Chatkit/index.js.map +1 -1
  6. package/dist/components/Chatkit/types.d.ts +1 -0
  7. package/dist/components/Chatkit/types.d.ts.map +1 -1
  8. package/dist/hooks/useSkillAgent/SkillAgentPlugin.cjs +30 -1
  9. package/dist/hooks/useSkillAgent/SkillAgentPlugin.cjs.map +1 -1
  10. package/dist/hooks/useSkillAgent/SkillAgentPlugin.d.ts +6 -2
  11. package/dist/hooks/useSkillAgent/SkillAgentPlugin.d.ts.map +1 -1
  12. package/dist/hooks/useSkillAgent/SkillAgentPlugin.js +30 -1
  13. package/dist/hooks/useSkillAgent/SkillAgentPlugin.js.map +1 -1
  14. package/dist/hooks/useSkillAgent/index.cjs +25 -3
  15. package/dist/hooks/useSkillAgent/index.cjs.map +1 -1
  16. package/dist/hooks/useSkillAgent/index.d.ts +3 -1
  17. package/dist/hooks/useSkillAgent/index.d.ts.map +1 -1
  18. package/dist/hooks/useSkillAgent/index.js +26 -4
  19. package/dist/hooks/useSkillAgent/index.js.map +1 -1
  20. package/dist/hooks/useThread.d.ts +24 -0
  21. package/dist/hooks/useThread.d.ts.map +1 -1
  22. package/dist/packages/core/dist/index.cjs +17 -9
  23. package/dist/packages/core/dist/index.cjs.map +1 -1
  24. package/dist/packages/core/dist/index.js +17 -9
  25. package/dist/packages/core/dist/index.js.map +1 -1
  26. package/dist/utils/convertToAssistantMessage.cjs +0 -1
  27. package/dist/utils/convertToAssistantMessage.cjs.map +1 -1
  28. package/dist/utils/convertToAssistantMessage.d.ts.map +1 -1
  29. package/dist/utils/convertToAssistantMessage.js +0 -1
  30. package/dist/utils/convertToAssistantMessage.js.map +1 -1
  31. package/dist/utils/deepAssign.cjs +31 -0
  32. package/dist/utils/deepAssign.cjs.map +1 -0
  33. package/dist/utils/deepAssign.d.ts +2 -0
  34. package/dist/utils/deepAssign.d.ts.map +1 -0
  35. package/dist/utils/deepAssign.js +29 -0
  36. package/dist/utils/deepAssign.js.map +1 -0
  37. package/package.json +1 -1
@@ -7,11 +7,29 @@ var index$1 = require('../../node_modules/.pnpm/ahooks@3.9.6_react-dom@17.0.2_re
7
7
 
8
8
  const useSkillAgent = (options) => {
9
9
  const chatControllerRef = React.useRef();
10
- if (!chatControllerRef.current) {
11
- const store = new index.ThreadMessageManager(index.createThreadManagerState());
12
- const plugin = new SkillAgentPlugin({
10
+ const pluginRef = React.useRef();
11
+ if (!pluginRef.current) {
12
+ pluginRef.current = new SkillAgentPlugin({
13
13
  onStateChange: options.onStateChange,
14
+ onUploadFiles: options.onUploadFiles,
15
+ });
16
+ }
17
+ const adkPlugin = React.useRef();
18
+ if (!adkPlugin.current) {
19
+ adkPlugin.current = new index.AdkPlugin({
20
+ appName: options.adkOptions.appName,
21
+ userId: options.adkOptions.userID,
14
22
  });
23
+ }
24
+ pluginRef.current.updateOptions(options);
25
+ adkPlugin.current.updateOptions({
26
+ appName: options.adkOptions.appName,
27
+ userId: options.adkOptions.userID,
28
+ onStateChange: options.onStateChange,
29
+ });
30
+ if (!chatControllerRef.current) {
31
+ const store = new index.ThreadMessageManager(index.createThreadManagerState());
32
+ const plugin = pluginRef.current;
15
33
  const adlPlugin = new index.AdkPlugin({
16
34
  appName: options.adkOptions.appName,
17
35
  userId: options.adkOptions.userID,
@@ -57,10 +75,14 @@ const useSkillAgent = (options) => {
57
75
  chatControllerRef.current?.setCurrentThread(sessionId);
58
76
  });
59
77
  });
78
+ const getState = index$1(() => {
79
+ return chatControllerRef.current?.getCurrentThread()?.metadata?.state;
80
+ });
60
81
  return {
61
82
  controllerRef: chatControllerRef,
62
83
  sendMessage,
63
84
  ready,
85
+ getState,
64
86
  };
65
87
  };
66
88
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/hooks/useSkillAgent/index.tsx"],"sourcesContent":["import {\n ChatController,\n createThreadManagerState,\n ThreadMessageManager,\n AdkPlugin,\n} from '@chat-lab/core';\nimport { useRef } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport SkillAgentPlugin from './SkillAgentPlugin';\nimport { useMemoizedFn } from 'ahooks';\n\nexport interface SkillAgentOptions {\n api: string;\n sessionId?: string;\n adkOptions: {\n appName: string;\n userID: string;\n };\n query?: Record<string, string>;\n onError?: (error: Error) => void;\n onStateChange?: (state: string) => void;\n}\n\nconst useSkillAgent = (options: SkillAgentOptions) => {\n const chatControllerRef = useRef<ChatController>();\n if (!chatControllerRef.current) {\n const store = new ThreadMessageManager(createThreadManagerState());\n const plugin = new SkillAgentPlugin({\n onStateChange: options.onStateChange,\n });\n const adlPlugin = new AdkPlugin({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n });\n chatControllerRef.current = new ChatController({\n requestOptions: {\n api: options.api,\n meta: options.query,\n headers: {\n Authorization: 'Bearer',\n },\n defaultParams: {\n streaming: true,\n },\n },\n protocolOptions: {\n protocol: 'ADK',\n },\n storeManager: store,\n plugins: [plugin, adlPlugin],\n });\n }\n\n const sendMessage = useMemoizedFn(({ message }: { message: string }) => {\n chatControllerRef.current?.sendMessage({\n content: [\n {\n type: 'text',\n text: message,\n },\n ],\n });\n });\n const ready = useMemoizedFn(({ sessionId }: { sessionId: string }) => {\n chatControllerRef.current\n ?.addThread({\n id: sessionId,\n name: sessionId,\n metadata: {},\n sending: false,\n messages: [],\n })\n .then(() => {\n chatControllerRef.current?.setCurrentThread(sessionId);\n });\n });\n return {\n controllerRef: chatControllerRef,\n sendMessage,\n ready,\n };\n};\n\nexport { useSkillAgent };\n"],"names":["useRef","ThreadMessageManager","createThreadManagerState","AdkPlugin","ChatController","useMemoizedFn"],"mappings":";;;;;;;AAuBA,MAAM,aAAa,GAAG,CAAC,OAA0B,KAAI;AACnD,IAAA,MAAM,iBAAiB,GAAGA,YAAM,EAAkB,CAAC;AACnD,IAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAIC,0BAAoB,CAACC,8BAAwB,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;AACrC,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,SAAS,GAAG,IAAIC,eAAS,CAAC;AAC9B,YAAA,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;AACnC,YAAA,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;AAClC,SAAA,CAAC,CAAC;AACH,QAAA,iBAAiB,CAAC,OAAO,GAAG,IAAIC,oBAAc,CAAC;AAC7C,YAAA,cAAc,EAAE;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,KAAK;AACnB,gBAAA,OAAO,EAAE;AACP,oBAAA,aAAa,EAAE,QAAQ;AACxB,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,SAAS,EAAE,IAAI;AAChB,iBAAA;AACF,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC7B,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,WAAW,GAAGC,OAAa,CAAC,CAAC,EAAE,OAAO,EAAuB,KAAI;AACrE,QAAA,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;AACrC,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAGA,OAAa,CAAC,CAAC,EAAE,SAAS,EAAyB,KAAI;AACnE,QAAA,iBAAiB,CAAC,OAAO;AACvB,cAAE,SAAS,CAAC;AACV,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;aACD,IAAI,CAAC,MAAK;AACT,YAAA,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzD,SAAC,CAAC,CAAC;AACP,KAAC,CAAC,CAAC;IACH,OAAO;AACL,QAAA,aAAa,EAAE,iBAAiB;QAChC,WAAW;QACX,KAAK;KACN,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/hooks/useSkillAgent/index.tsx"],"sourcesContent":["import {\n ChatController,\n createThreadManagerState,\n ThreadMessageManager,\n AdkPlugin,\n} from '@chat-lab/core';\nimport { useRef } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport SkillAgentPlugin from './SkillAgentPlugin';\nimport { useMemoizedFn } from 'ahooks';\n\nexport interface SkillAgentOptions {\n api: string;\n sessionId?: string;\n adkOptions: {\n appName: string;\n userID: string;\n };\n query?: Record<string, string>;\n onError?: (error: Error) => void;\n onStateChange?: (state: {}) => void;\n onUploadFiles?: (files: File[]) => Promise<string[]>;\n}\n\nconst useSkillAgent = (options: SkillAgentOptions) => {\n const chatControllerRef = useRef<ChatController>();\n const pluginRef = useRef<SkillAgentPlugin>();\n if (!pluginRef.current) {\n pluginRef.current = new SkillAgentPlugin({\n onStateChange: options.onStateChange,\n onUploadFiles: options.onUploadFiles,\n });\n }\n const adkPlugin = useRef<AdkPlugin>();\n if (!adkPlugin.current) {\n adkPlugin.current = new AdkPlugin({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n });\n }\n pluginRef.current.updateOptions(options);\n adkPlugin.current.updateOptions({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n onStateChange: options.onStateChange,\n });\n\n if (!chatControllerRef.current) {\n const store = new ThreadMessageManager(createThreadManagerState());\n const plugin = pluginRef.current;\n const adlPlugin = new AdkPlugin({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n });\n chatControllerRef.current = new ChatController({\n requestOptions: {\n api: options.api,\n meta: options.query,\n headers: {\n Authorization: 'Bearer',\n },\n defaultParams: {\n streaming: true,\n },\n },\n protocolOptions: {\n protocol: 'ADK',\n },\n storeManager: store,\n plugins: [plugin, adlPlugin],\n });\n }\n\n const sendMessage = useMemoizedFn(({ message }: { message: string }) => {\n chatControllerRef.current?.sendMessage({\n content: [\n {\n type: 'text',\n text: message,\n },\n ],\n });\n });\n const ready = useMemoizedFn(({ sessionId }: { sessionId: string }) => {\n chatControllerRef.current\n ?.addThread({\n id: sessionId,\n name: sessionId,\n metadata: {},\n sending: false,\n messages: [],\n })\n .then(() => {\n chatControllerRef.current?.setCurrentThread(sessionId);\n });\n });\n\n const getState = useMemoizedFn(() => {\n return chatControllerRef.current?.getCurrentThread()?.metadata?.state;\n });\n return {\n controllerRef: chatControllerRef,\n sendMessage,\n ready,\n getState,\n };\n};\n\nexport { useSkillAgent };\n"],"names":["useRef","AdkPlugin","ThreadMessageManager","createThreadManagerState","ChatController","useMemoizedFn"],"mappings":"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"}
@@ -8,7 +8,8 @@ export interface SkillAgentOptions {
8
8
  };
9
9
  query?: Record<string, string>;
10
10
  onError?: (error: Error) => void;
11
- onStateChange?: (state: string) => void;
11
+ onStateChange?: (state: {}) => void;
12
+ onUploadFiles?: (files: File[]) => Promise<string[]>;
12
13
  }
13
14
  declare const useSkillAgent: (options: SkillAgentOptions) => {
14
15
  controllerRef: import("react").MutableRefObject<ChatController<import("@chat-lab/core").ChatMessage<import("@chat-lab/core").BaseMessage>> | undefined>;
@@ -18,6 +19,7 @@ declare const useSkillAgent: (options: SkillAgentOptions) => {
18
19
  ready: (this: unknown, args_0: {
19
20
  sessionId: string;
20
21
  }) => void;
22
+ getState: (this: unknown) => any;
21
23
  };
22
24
  export { useSkillAgent };
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSkillAgent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,aAAa,GAAI,SAAS,iBAAiB;;;iBA8BY,MAAM;;;mBAUR,MAAM;;CAkBhE,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSkillAgent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACtD;AAED,QAAA,MAAM,aAAa,GAAI,SAAS,iBAAiB;;;iBAiDY,MAAM;;;mBAUR,MAAM;;;CAuBhE,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,15 +1,33 @@
1
- import { ThreadMessageManager, createThreadManagerState, AdkPlugin, ChatController } from '../../packages/core/dist/index.js';
1
+ import { AdkPlugin, ThreadMessageManager, createThreadManagerState, ChatController } from '../../packages/core/dist/index.js';
2
2
  import { useRef } from 'react';
3
3
  import SkillAgentPlugin from './SkillAgentPlugin.js';
4
4
  import useMemoizedFn from '../../node_modules/.pnpm/ahooks@3.9.6_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/ahooks/es/useMemoizedFn/index.js';
5
5
 
6
6
  const useSkillAgent = (options) => {
7
7
  const chatControllerRef = useRef();
8
- if (!chatControllerRef.current) {
9
- const store = new ThreadMessageManager(createThreadManagerState());
10
- const plugin = new SkillAgentPlugin({
8
+ const pluginRef = useRef();
9
+ if (!pluginRef.current) {
10
+ pluginRef.current = new SkillAgentPlugin({
11
11
  onStateChange: options.onStateChange,
12
+ onUploadFiles: options.onUploadFiles,
13
+ });
14
+ }
15
+ const adkPlugin = useRef();
16
+ if (!adkPlugin.current) {
17
+ adkPlugin.current = new AdkPlugin({
18
+ appName: options.adkOptions.appName,
19
+ userId: options.adkOptions.userID,
12
20
  });
21
+ }
22
+ pluginRef.current.updateOptions(options);
23
+ adkPlugin.current.updateOptions({
24
+ appName: options.adkOptions.appName,
25
+ userId: options.adkOptions.userID,
26
+ onStateChange: options.onStateChange,
27
+ });
28
+ if (!chatControllerRef.current) {
29
+ const store = new ThreadMessageManager(createThreadManagerState());
30
+ const plugin = pluginRef.current;
13
31
  const adlPlugin = new AdkPlugin({
14
32
  appName: options.adkOptions.appName,
15
33
  userId: options.adkOptions.userID,
@@ -55,10 +73,14 @@ const useSkillAgent = (options) => {
55
73
  chatControllerRef.current?.setCurrentThread(sessionId);
56
74
  });
57
75
  });
76
+ const getState = useMemoizedFn(() => {
77
+ return chatControllerRef.current?.getCurrentThread()?.metadata?.state;
78
+ });
58
79
  return {
59
80
  controllerRef: chatControllerRef,
60
81
  sendMessage,
61
82
  ready,
83
+ getState,
62
84
  };
63
85
  };
64
86
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/hooks/useSkillAgent/index.tsx"],"sourcesContent":["import {\n ChatController,\n createThreadManagerState,\n ThreadMessageManager,\n AdkPlugin,\n} from '@chat-lab/core';\nimport { useRef } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport SkillAgentPlugin from './SkillAgentPlugin';\nimport { useMemoizedFn } from 'ahooks';\n\nexport interface SkillAgentOptions {\n api: string;\n sessionId?: string;\n adkOptions: {\n appName: string;\n userID: string;\n };\n query?: Record<string, string>;\n onError?: (error: Error) => void;\n onStateChange?: (state: string) => void;\n}\n\nconst useSkillAgent = (options: SkillAgentOptions) => {\n const chatControllerRef = useRef<ChatController>();\n if (!chatControllerRef.current) {\n const store = new ThreadMessageManager(createThreadManagerState());\n const plugin = new SkillAgentPlugin({\n onStateChange: options.onStateChange,\n });\n const adlPlugin = new AdkPlugin({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n });\n chatControllerRef.current = new ChatController({\n requestOptions: {\n api: options.api,\n meta: options.query,\n headers: {\n Authorization: 'Bearer',\n },\n defaultParams: {\n streaming: true,\n },\n },\n protocolOptions: {\n protocol: 'ADK',\n },\n storeManager: store,\n plugins: [plugin, adlPlugin],\n });\n }\n\n const sendMessage = useMemoizedFn(({ message }: { message: string }) => {\n chatControllerRef.current?.sendMessage({\n content: [\n {\n type: 'text',\n text: message,\n },\n ],\n });\n });\n const ready = useMemoizedFn(({ sessionId }: { sessionId: string }) => {\n chatControllerRef.current\n ?.addThread({\n id: sessionId,\n name: sessionId,\n metadata: {},\n sending: false,\n messages: [],\n })\n .then(() => {\n chatControllerRef.current?.setCurrentThread(sessionId);\n });\n });\n return {\n controllerRef: chatControllerRef,\n sendMessage,\n ready,\n };\n};\n\nexport { useSkillAgent };\n"],"names":[],"mappings":";;;;;AAuBA,MAAM,aAAa,GAAG,CAAC,OAA0B,KAAI;AACnD,IAAA,MAAM,iBAAiB,GAAG,MAAM,EAAkB,CAAC;AACnD,IAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,wBAAwB,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;AACrC,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;AAC9B,YAAA,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;AACnC,YAAA,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;AAClC,SAAA,CAAC,CAAC;AACH,QAAA,iBAAiB,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC;AAC7C,YAAA,cAAc,EAAE;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,KAAK;AACnB,gBAAA,OAAO,EAAE;AACP,oBAAA,aAAa,EAAE,QAAQ;AACxB,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,SAAS,EAAE,IAAI;AAChB,iBAAA;AACF,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC7B,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,EAAuB,KAAI;AACrE,QAAA,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;AACrC,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAyB,KAAI;AACnE,QAAA,iBAAiB,CAAC,OAAO;AACvB,cAAE,SAAS,CAAC;AACV,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;aACD,IAAI,CAAC,MAAK;AACT,YAAA,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzD,SAAC,CAAC,CAAC;AACP,KAAC,CAAC,CAAC;IACH,OAAO;AACL,QAAA,aAAa,EAAE,iBAAiB;QAChC,WAAW;QACX,KAAK;KACN,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/hooks/useSkillAgent/index.tsx"],"sourcesContent":["import {\n ChatController,\n createThreadManagerState,\n ThreadMessageManager,\n AdkPlugin,\n} from '@chat-lab/core';\nimport { useRef } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport SkillAgentPlugin from './SkillAgentPlugin';\nimport { useMemoizedFn } from 'ahooks';\n\nexport interface SkillAgentOptions {\n api: string;\n sessionId?: string;\n adkOptions: {\n appName: string;\n userID: string;\n };\n query?: Record<string, string>;\n onError?: (error: Error) => void;\n onStateChange?: (state: {}) => void;\n onUploadFiles?: (files: File[]) => Promise<string[]>;\n}\n\nconst useSkillAgent = (options: SkillAgentOptions) => {\n const chatControllerRef = useRef<ChatController>();\n const pluginRef = useRef<SkillAgentPlugin>();\n if (!pluginRef.current) {\n pluginRef.current = new SkillAgentPlugin({\n onStateChange: options.onStateChange,\n onUploadFiles: options.onUploadFiles,\n });\n }\n const adkPlugin = useRef<AdkPlugin>();\n if (!adkPlugin.current) {\n adkPlugin.current = new AdkPlugin({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n });\n }\n pluginRef.current.updateOptions(options);\n adkPlugin.current.updateOptions({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n onStateChange: options.onStateChange,\n });\n\n if (!chatControllerRef.current) {\n const store = new ThreadMessageManager(createThreadManagerState());\n const plugin = pluginRef.current;\n const adlPlugin = new AdkPlugin({\n appName: options.adkOptions.appName,\n userId: options.adkOptions.userID,\n });\n chatControllerRef.current = new ChatController({\n requestOptions: {\n api: options.api,\n meta: options.query,\n headers: {\n Authorization: 'Bearer',\n },\n defaultParams: {\n streaming: true,\n },\n },\n protocolOptions: {\n protocol: 'ADK',\n },\n storeManager: store,\n plugins: [plugin, adlPlugin],\n });\n }\n\n const sendMessage = useMemoizedFn(({ message }: { message: string }) => {\n chatControllerRef.current?.sendMessage({\n content: [\n {\n type: 'text',\n text: message,\n },\n ],\n });\n });\n const ready = useMemoizedFn(({ sessionId }: { sessionId: string }) => {\n chatControllerRef.current\n ?.addThread({\n id: sessionId,\n name: sessionId,\n metadata: {},\n sending: false,\n messages: [],\n })\n .then(() => {\n chatControllerRef.current?.setCurrentThread(sessionId);\n });\n });\n\n const getState = useMemoizedFn(() => {\n return chatControllerRef.current?.getCurrentThread()?.metadata?.state;\n });\n return {\n controllerRef: chatControllerRef,\n sendMessage,\n ready,\n getState,\n };\n};\n\nexport { useSkillAgent };\n"],"names":[],"mappings":";;;;;AAwBA,MAAM,aAAa,GAAG,CAAC,OAA0B,KAAI;AACnD,IAAA,MAAM,iBAAiB,GAAG,MAAM,EAAkB,CAAC;AACnD,IAAA,MAAM,SAAS,GAAG,MAAM,EAAoB,CAAC;AAC7C,IAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACtB,QAAA,SAAS,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC;YACvC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;AACrC,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,MAAM,SAAS,GAAG,MAAM,EAAa,CAAC;AACtC,IAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACtB,QAAA,SAAS,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC;AAChC,YAAA,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;AACnC,YAAA,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;AAClC,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC,IAAA,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;AAC9B,QAAA,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;AACnC,QAAA,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;QACjC,aAAa,EAAE,OAAO,CAAC,aAAa;AACrC,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,wBAAwB,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;AAC9B,YAAA,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;AACnC,YAAA,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;AAClC,SAAA,CAAC,CAAC;AACH,QAAA,iBAAiB,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC;AAC7C,YAAA,cAAc,EAAE;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,KAAK;AACnB,gBAAA,OAAO,EAAE;AACP,oBAAA,aAAa,EAAE,QAAQ;AACxB,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,SAAS,EAAE,IAAI;AAChB,iBAAA;AACF,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC7B,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,EAAuB,KAAI;AACrE,QAAA,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;AACrC,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAyB,KAAI;AACnE,QAAA,iBAAiB,CAAC,OAAO;AACvB,cAAE,SAAS,CAAC;AACV,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;aACD,IAAI,CAAC,MAAK;AACT,YAAA,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzD,SAAC,CAAC,CAAC;AACP,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAK;QAClC,OAAO,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC;AACxE,KAAC,CAAC,CAAC;IACH,OAAO;AACL,QAAA,aAAa,EAAE,iBAAiB;QAChC,WAAW;QACX,KAAK;QACL,QAAQ;KACT,CAAC;AACJ;;;;"}
@@ -24,6 +24,18 @@ declare const useThread: () => {
24
24
  readonly url: string;
25
25
  readonly status: "init" | "uploading" | "success" | "error";
26
26
  readonly type: string;
27
+ readonly file?: {
28
+ readonly lastModified: number;
29
+ readonly name: string;
30
+ readonly webkitRelativePath: string;
31
+ readonly size: number;
32
+ readonly type: string;
33
+ readonly arrayBuffer: () => Promise<ArrayBuffer>;
34
+ readonly bytes: () => Promise<Uint8Array<ArrayBuffer>>;
35
+ readonly slice: (start?: number, end?: number, contentType?: string) => Blob;
36
+ readonly stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
37
+ readonly text: () => Promise<string>;
38
+ } | undefined;
27
39
  readonly mimeType: string;
28
40
  readonly createdAt?: number | undefined;
29
41
  }[] | undefined;
@@ -101,6 +113,18 @@ declare const useThread: () => {
101
113
  readonly url: string;
102
114
  readonly status: "init" | "uploading" | "success" | "error";
103
115
  readonly type: string;
116
+ readonly file?: {
117
+ readonly lastModified: number;
118
+ readonly name: string;
119
+ readonly webkitRelativePath: string;
120
+ readonly size: number;
121
+ readonly type: string;
122
+ readonly arrayBuffer: () => Promise<ArrayBuffer>;
123
+ readonly bytes: () => Promise<Uint8Array<ArrayBuffer>>;
124
+ readonly slice: (start?: number, end?: number, contentType?: string) => Blob;
125
+ readonly stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
126
+ readonly text: () => Promise<string>;
127
+ } | undefined;
104
128
  readonly mimeType: string;
105
129
  readonly createdAt?: number | undefined;
106
130
  }[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useThread.d.ts","sourceRoot":"","sources":["../../src/hooks/useThread.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBd,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"useThread.d.ts","sourceRoot":"","sources":["../../src/hooks/useThread.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBd,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -6,6 +6,7 @@ var mitt = require('../../../node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dis
6
6
  var vanilla = require('../../../node_modules/.pnpm/valtio@2.1.8_patch_hash_boxi3qpsg2dztwe4vz7tsjpr3m_@types_react@17.0.2_react@17.0.2/node_modules/valtio/esm/vanilla.cjs');
7
7
  var v4 = require('../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.cjs');
8
8
  var last = require('../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/last.cjs');
9
+ var isNil = require('../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isNil.cjs');
9
10
  var throttle = require('../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/throttle.cjs');
10
11
  var keys = require('../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.cjs');
11
12
  var compact = require('../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/compact.cjs');
@@ -141,6 +142,7 @@ var AdkProtocol = class extends BaseProtocols_default {
141
142
  this.protocol = ProtocolEnum.ADK;
142
143
  this.authors = [];
143
144
  this.omitCompleteText = options.omitCompleteText == true;
145
+ this.splitText = options.splitText || false;
144
146
  this.protocolName = options.protocolName || options.protocol;
145
147
  }
146
148
  onStartSend() {
@@ -285,7 +287,7 @@ var AdkProtocol = class extends BaseProtocols_default {
285
287
  generateRequestBody(request) {
286
288
  const { userMessage, defaultParams, dynamicParams } = request;
287
289
  const attachParts = userMessage.attaches?.map((item) => {
288
- if (item.url.startsWith("https://") || item.url.startsWith("http://")) {
290
+ if (item.url.startsWith("https://") || item.url.startsWith("http://") || item.url.startsWith("/")) {
289
291
  return {
290
292
  fileData: {
291
293
  displayName: item.attachId,
@@ -1446,6 +1448,9 @@ var AdkPlugin = class extends ChatkitPlugin {
1446
1448
  this.setAppName = (appName) => {
1447
1449
  this.options.appName = appName;
1448
1450
  };
1451
+ this.updateOptions = (options) => {
1452
+ this.options = options;
1453
+ };
1449
1454
  this.options = options;
1450
1455
  this.adkProtocol = new Adk_default({
1451
1456
  omitCompleteText: false,
@@ -1572,16 +1577,16 @@ var AdkPlugin = class extends ChatkitPlugin {
1572
1577
  if (getFetchResponse.ok) {
1573
1578
  const data = await getFetchResponse.json();
1574
1579
  const xSessionId = getFetchResponse.headers.get("x-session-id");
1580
+ this.options.onStateChange?.(data.state);
1575
1581
  this.chatController?.updateThread(threadId, {
1576
1582
  metadata: {
1577
1583
  ...thread.metadata,
1578
1584
  ["sessionInited"]: true,
1579
1585
  sessionId: data.id,
1580
1586
  ["isInitingSession"]: false,
1581
- ["x-session-id"]: xSessionId
1587
+ ["x-session-id"]: xSessionId,
1588
+ state: data.state
1582
1589
  },
1583
- // messages: data?.events?.map(
1584
- // (chunk: {
1585
1590
  // id: string;
1586
1591
  // author: string;
1587
1592
  // content: { parts: any[] };
@@ -1819,8 +1824,6 @@ var toRaw = (obj) => {
1819
1824
  return obj;
1820
1825
  }
1821
1826
  };
1822
-
1823
- // src/ChatController.ts
1824
1827
  var ChatController = class {
1825
1828
  constructor(options) {
1826
1829
  this.abortControllers = /* @__PURE__ */ new Map();
@@ -1892,7 +1895,11 @@ var ChatController = class {
1892
1895
  this.store.setLoading(id, false);
1893
1896
  }
1894
1897
  getCurrentThread() {
1895
- return this.store.getCurrentThread();
1898
+ const thread = this.store.getCurrentThread();
1899
+ if (isNil(thread)) {
1900
+ return null;
1901
+ }
1902
+ return toRaw(thread);
1896
1903
  }
1897
1904
  async setCurrentThread(threadId) {
1898
1905
  this.store.setCurrentThread(threadId);
@@ -2026,7 +2033,8 @@ var ChatController = class {
2026
2033
  }
2027
2034
  const shouldSend = {
2028
2035
  dynamicParams: hookContext.dynamicParams,
2029
- requestOptions: hookContext.extraRequestOptions
2036
+ requestOptions: hookContext.extraRequestOptions,
2037
+ userMessage: hookContext.userMessage
2030
2038
  };
2031
2039
  const storeManager = this.store;
2032
2040
  try {
@@ -2034,7 +2042,7 @@ var ChatController = class {
2034
2042
  const requestBody = protocolAdaptor.generateRequestBody({
2035
2043
  dynamicParams: shouldSend.dynamicParams,
2036
2044
  defaultParams: this.requestOptions.defaultParams || {},
2037
- userMessage,
2045
+ userMessage: shouldSend.userMessage,
2038
2046
  thread,
2039
2047
  contextMessages: allMessages
2040
2048
  });