@athlera/react
Advanced tools
+7
-1
@@ -45,2 +45,5 @@ "use client"; | ||
| chatInstance: () => { | ||
| }, | ||
| assistant: null, | ||
| setAssistant: () => { | ||
| } | ||
@@ -56,2 +59,3 @@ }); | ||
| }); | ||
| const [assistant, setAssistant] = (0, import_react2.useState)(null); | ||
| const addToolUI = (toolName, toolUI) => { | ||
@@ -82,3 +86,5 @@ setToolUIStore((prev) => ({ | ||
| setChatInstance, | ||
| chatInstance | ||
| chatInstance, | ||
| assistant, | ||
| setAssistant | ||
| }; | ||
@@ -85,0 +91,0 @@ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AssistantContext.Provider, { value: contextValue, children }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/index.ts","../src/context/AssistantProvider/AssistantContext.ts","../src/context/AssistantProvider/AssistantProvider.tsx","../src/hooks/useToolUI.ts","../src/lib/createToolUI.ts"],"sourcesContent":["export * from './context'\nexport * from './hooks'\nexport * from './lib'\n\n// Expose the types from @athlera/core\nexport {\n type ToolUIRenderProps,\n type CreateToolUIInterface\n} from '@athlera/core'","import { createContext, Dispatch } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { AddToolResultFunc } from \"./AssistantProvider\";\n\nexport type AssistantContextType = {\n toolUIStore: Record<string, Omit<CreateToolUIInterface, 'toolName'>>;\n getToolUI: (toolName: string) => Omit<CreateToolUIInterface, 'toolName'>;\n addToolUI: (toolName: string, toolUI: Omit<CreateToolUIInterface, 'toolName'>) => void;\n removeToolUI: (toolName: string) => void;\n setChatInstance: Dispatch<AddToolResultFunc>;\n chatInstance: AddToolResultFunc;\n}\n\nexport const AssistantContext = createContext<AssistantContextType>({\n toolUIStore: {},\n getToolUI: () => ({} as Omit<CreateToolUIInterface, 'toolName'>),\n addToolUI: () => {},\n removeToolUI: () => {},\n setChatInstance: () => {},\n chatInstance: () => {}\n} as AssistantContextType);","\"use client\";\nimport { ReactNode, useContext, useState } from 'react';\nimport { AssistantContext, AssistantContextType } from './AssistantContext';\nimport { CreateToolUIInterface } from '@athlera/core';\n\nexport type AddToolResultFunc = any;\n\nexport function AssistantProvider({ children }: { children: ReactNode }) {\n const [toolUIStore, setToolUIStore] = useState<Record<string, Omit<CreateToolUIInterface, 'toolName'>>>({});\n const [chatInstance, setChatInstance] = useState<AddToolResultFunc>(() => () => {});\n\n const addToolUI = (toolName: string, toolUI: any) => {\n setToolUIStore((prev) => ({\n ...prev,\n [toolName]: toolUI\n }));\n };\n\n const getToolUI = (toolName: string) => {\n return toolUIStore[toolName] ?? null;\n };\n\n const getToolsInPosition = (position: 'before' | 'after' | 'inline') => {\n return Object.entries(toolUIStore).filter(([_, tool]) => tool.position === position);\n };\n\n const removeToolUI = (toolName: string) => {\n setToolUIStore((prev) => {\n const newStore = { ...prev };\n delete newStore[toolName];\n return newStore;\n });\n };\n\n const contextValue: AssistantContextType = {\n toolUIStore,\n getToolUI,\n addToolUI,\n removeToolUI,\n setChatInstance,\n chatInstance\n }\n\n return (\n <AssistantContext.Provider value={contextValue}>\n {children}\n </AssistantContext.Provider>\n );\n}\n\nexport const useAssistantProvider = () => {\n const context = useContext(AssistantContext);\n \n if (!context) {\n throw new Error('useAssistantProvider must be used within an AssistantProvider');\n }\n\n return context;\n}","\"use client\";\n\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useAssistantProvider } from \"../context\";\nimport { useEffect } from \"react\";\n\nexport const useToolUI = <TArgs, TResult = any, TResponse = any>(\n tool: CreateToolUIInterface<TArgs, TResult, TResponse>\n) => {\n const assistantRuntime = useAssistantProvider();\n\n useEffect(() => {\n if (!tool) return;\n\n assistantRuntime.addToolUI(tool.toolName, { render: tool.render, position: tool.position });\n\n return () => {\n assistantRuntime.removeToolUI(tool.toolName);\n };\n }, []);\n}","\"use client\";\n\nimport { FC } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useToolUI } from \"../hooks\";\n\nexport type ToolUIFunction = FC & {\n unstable_tool: CreateToolUIInterface<any, any>;\n};\n\nexport const createToolUI = <TArgs, TResult, TResponse>(tool: CreateToolUIInterface<TArgs, TResult, TResponse>) => {\n const ToolUI: ToolUIFunction = () => {\n useToolUI(tool);\n return null;\n };\n\n ToolUI.unstable_tool = tool;\n return ToolUI;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAwC;AAajC,IAAM,uBAAmB,4BAAoC;AAAA,EAChE,aAAa,CAAC;AAAA,EACd,WAAW,OAAO,CAAC;AAAA,EACnB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,cAAc,MAAM;AAAA,EAAC;AACzB,CAAyB;;;ACnBzB,IAAAA,gBAAgD;AA2CxC;AArCD,SAAS,kBAAkB,EAAE,SAAS,GAA4B;AACrE,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAkE,CAAC,CAAC;AAC1G,QAAM,CAAC,cAAc,eAAe,QAAI,wBAA4B,MAAM,MAAM;AAAA,EAAC,CAAC;AAElF,QAAM,YAAY,CAAC,UAAkB,WAAgB;AACjD,mBAAe,CAAC,UAAU;AAAA,MACtB,GAAG;AAAA,MACH,CAAC,QAAQ,GAAG;AAAA,IAChB,EAAE;AAAA,EACN;AAEA,QAAM,YAAY,CAAC,aAAqB;AACpC,WAAO,YAAY,QAAQ,KAAK;AAAA,EACpC;AAEA,QAAM,qBAAqB,CAAC,aAA4C;AACpE,WAAO,OAAO,QAAQ,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,KAAK,aAAa,QAAQ;AAAA,EACvF;AAEA,QAAM,eAAe,CAAC,aAAqB;AACvC,mBAAe,CAAC,SAAS;AACrB,YAAM,WAAW,EAAE,GAAG,KAAK;AAC3B,aAAO,SAAS,QAAQ;AACxB,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,QAAM,eAAqC;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,SACI,4CAAC,iBAAiB,UAAjB,EAA0B,OAAO,cAC7B,UACL;AAER;AAEO,IAAM,uBAAuB,MAAM;AACtC,QAAM,cAAU,0BAAW,gBAAgB;AAE3C,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,+DAA+D;AAAA,EACnF;AAEA,SAAO;AACX;;;ACtDA,IAAAC,gBAA0B;AAEnB,IAAM,YAAY,CACrB,SACC;AACD,QAAM,mBAAmB,qBAAqB;AAE9C,+BAAU,MAAM;AACZ,QAAI,CAAC,KAAM;AAEX,qBAAiB,UAAU,KAAK,UAAU,EAAE,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS,CAAC;AAE1F,WAAO,MAAM;AACT,uBAAiB,aAAa,KAAK,QAAQ;AAAA,IAC/C;AAAA,EACJ,GAAG,CAAC,CAAC;AACT;;;ACVO,IAAM,eAAe,CAA4B,SAA2D;AAC/G,QAAM,SAAyB,MAAM;AACjC,cAAU,IAAI;AACd,WAAO;AAAA,EACX;AAEA,SAAO,gBAAgB;AACvB,SAAO;AACX;","names":["import_react","import_react"]} | ||
| {"version":3,"sources":["../src/index.ts","../src/context/AssistantProvider/AssistantContext.ts","../src/context/AssistantProvider/AssistantProvider.tsx","../src/hooks/useToolUI.ts","../src/lib/createToolUI.ts"],"sourcesContent":["export * from './context'\nexport * from './hooks'\nexport * from './lib'\n\n// Expose the types from @athlera/core\nexport {\n type ToolUIRenderProps,\n type CreateToolUIInterface\n} from '@athlera/core'","import { createContext, Dispatch } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { AddToolResultFunc } from \"./AssistantProvider\";\n\nexport type AssistantContextType = {\n toolUIStore: Record<string, Omit<CreateToolUIInterface, 'toolName'>>;\n getToolUI: (toolName: string) => Omit<CreateToolUIInterface, 'toolName'>;\n addToolUI: (toolName: string, toolUI: Omit<CreateToolUIInterface, 'toolName'>) => void;\n removeToolUI: (toolName: string) => void;\n setChatInstance: Dispatch<AddToolResultFunc>;\n chatInstance: AddToolResultFunc;\n assistant: any;\n setAssistant: Dispatch<any>;\n}\n\nexport const AssistantContext = createContext<AssistantContextType>({\n toolUIStore: {},\n getToolUI: () => ({} as Omit<CreateToolUIInterface, 'toolName'>),\n addToolUI: () => {},\n removeToolUI: () => {},\n setChatInstance: () => {},\n chatInstance: () => {},\n assistant: null,\n setAssistant: () => {}\n} as AssistantContextType);","\"use client\";\nimport { ReactNode, useContext, useState } from 'react';\nimport { AssistantContext, AssistantContextType } from './AssistantContext';\nimport { CreateToolUIInterface } from '@athlera/core';\n\nexport type AddToolResultFunc = any;\n\nexport function AssistantProvider<T = any>({ children }: { children: ReactNode }) {\n const [toolUIStore, setToolUIStore] = useState<Record<string, Omit<CreateToolUIInterface, 'toolName'>>>({});\n const [chatInstance, setChatInstance] = useState<AddToolResultFunc>(() => () => {});\n const [assistant, setAssistant] = useState<T>(null!);\n\n const addToolUI = (toolName: string, toolUI: any) => {\n setToolUIStore((prev) => ({\n ...prev,\n [toolName]: toolUI\n }));\n };\n\n const getToolUI = (toolName: string) => {\n return toolUIStore[toolName] ?? null;\n };\n\n const getToolsInPosition = (position: 'before' | 'after' | 'inline') => {\n return Object.entries(toolUIStore).filter(([_, tool]) => tool.position === position);\n };\n\n const removeToolUI = (toolName: string) => {\n setToolUIStore((prev) => {\n const newStore = { ...prev };\n delete newStore[toolName];\n return newStore;\n });\n };\n\n const contextValue: AssistantContextType = {\n toolUIStore,\n getToolUI,\n addToolUI,\n removeToolUI,\n setChatInstance,\n chatInstance,\n assistant,\n setAssistant\n }\n\n return (\n <AssistantContext.Provider value={contextValue}>\n {children}\n </AssistantContext.Provider>\n );\n}\n\nexport const useAssistantProvider = () => {\n const context = useContext(AssistantContext);\n \n if (!context) {\n throw new Error('useAssistantProvider must be used within an AssistantProvider');\n }\n\n return context;\n}","\"use client\";\n\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useAssistantProvider } from \"../context\";\nimport { useEffect } from \"react\";\n\nexport const useToolUI = <TArgs, TResult = any, TResponse = any>(\n tool: CreateToolUIInterface<TArgs, TResult, TResponse>\n) => {\n const assistantRuntime = useAssistantProvider();\n\n useEffect(() => {\n if (!tool) return;\n\n assistantRuntime.addToolUI(tool.toolName, { render: tool.render, position: tool.position });\n\n return () => {\n assistantRuntime.removeToolUI(tool.toolName);\n };\n }, []);\n}","\"use client\";\n\nimport { FC } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useToolUI } from \"../hooks\";\n\nexport type ToolUIFunction = FC & {\n unstable_tool: CreateToolUIInterface<any, any>;\n};\n\nexport const createToolUI = <TArgs, TResult, TResponse>(tool: CreateToolUIInterface<TArgs, TResult, TResponse>) => {\n const ToolUI: ToolUIFunction = () => {\n useToolUI(tool);\n return null;\n };\n\n ToolUI.unstable_tool = tool;\n return ToolUI;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAwC;AAejC,IAAM,uBAAmB,4BAAoC;AAAA,EAChE,aAAa,CAAC;AAAA,EACd,WAAW,OAAO,CAAC;AAAA,EACnB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EAAC;AACzB,CAAyB;;;ACvBzB,IAAAA,gBAAgD;AA8CxC;AAxCD,SAAS,kBAA2B,EAAE,SAAS,GAA4B;AAC9E,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAkE,CAAC,CAAC;AAC1G,QAAM,CAAC,cAAc,eAAe,QAAI,wBAA4B,MAAM,MAAM;AAAA,EAAC,CAAC;AAClF,QAAM,CAAC,WAAW,YAAY,QAAI,wBAAY,IAAK;AAEnD,QAAM,YAAY,CAAC,UAAkB,WAAgB;AACjD,mBAAe,CAAC,UAAU;AAAA,MACtB,GAAG;AAAA,MACH,CAAC,QAAQ,GAAG;AAAA,IAChB,EAAE;AAAA,EACN;AAEA,QAAM,YAAY,CAAC,aAAqB;AACpC,WAAO,YAAY,QAAQ,KAAK;AAAA,EACpC;AAEA,QAAM,qBAAqB,CAAC,aAA4C;AACpE,WAAO,OAAO,QAAQ,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,KAAK,aAAa,QAAQ;AAAA,EACvF;AAEA,QAAM,eAAe,CAAC,aAAqB;AACvC,mBAAe,CAAC,SAAS;AACrB,YAAM,WAAW,EAAE,GAAG,KAAK;AAC3B,aAAO,SAAS,QAAQ;AACxB,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,QAAM,eAAqC;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,SACI,4CAAC,iBAAiB,UAAjB,EAA0B,OAAO,cAC7B,UACL;AAER;AAEO,IAAM,uBAAuB,MAAM;AACtC,QAAM,cAAU,0BAAW,gBAAgB;AAE3C,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,+DAA+D;AAAA,EACnF;AAEA,SAAO;AACX;;;ACzDA,IAAAC,gBAA0B;AAEnB,IAAM,YAAY,CACrB,SACC;AACD,QAAM,mBAAmB,qBAAqB;AAE9C,+BAAU,MAAM;AACZ,QAAI,CAAC,KAAM;AAEX,qBAAiB,UAAU,KAAK,UAAU,EAAE,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS,CAAC;AAE1F,WAAO,MAAM;AACT,uBAAiB,aAAa,KAAK,QAAQ;AAAA,IAC/C;AAAA,EACJ,GAAG,CAAC,CAAC;AACT;;;ACVO,IAAM,eAAe,CAA4B,SAA2D;AAC/G,QAAM,SAAyB,MAAM;AACjC,cAAU,IAAI;AACd,WAAO;AAAA,EACX;AAEA,SAAO,gBAAgB;AACvB,SAAO;AACX;","names":["import_react","import_react"]} |
+3
-1
@@ -8,3 +8,3 @@ import * as react from 'react'; | ||
| type AddToolResultFunc = any; | ||
| declare function AssistantProvider({ children }: { | ||
| declare function AssistantProvider<T = any>({ children }: { | ||
| children: ReactNode; | ||
@@ -21,2 +21,4 @@ }): react_jsx_runtime.JSX.Element; | ||
| chatInstance: AddToolResultFunc; | ||
| assistant: any; | ||
| setAssistant: Dispatch<any>; | ||
| }; | ||
@@ -23,0 +25,0 @@ declare const AssistantContext: react.Context<AssistantContextType>; |
+3
-1
@@ -8,3 +8,3 @@ import * as react from 'react'; | ||
| type AddToolResultFunc = any; | ||
| declare function AssistantProvider({ children }: { | ||
| declare function AssistantProvider<T = any>({ children }: { | ||
| children: ReactNode; | ||
@@ -21,2 +21,4 @@ }): react_jsx_runtime.JSX.Element; | ||
| chatInstance: AddToolResultFunc; | ||
| assistant: any; | ||
| setAssistant: Dispatch<any>; | ||
| }; | ||
@@ -23,0 +25,0 @@ declare const AssistantContext: react.Context<AssistantContextType>; |
+7
-1
@@ -15,2 +15,5 @@ "use client"; | ||
| chatInstance: () => { | ||
| }, | ||
| assistant: null, | ||
| setAssistant: () => { | ||
| } | ||
@@ -26,2 +29,3 @@ }); | ||
| }); | ||
| const [assistant, setAssistant] = useState(null); | ||
| const addToolUI = (toolName, toolUI) => { | ||
@@ -52,3 +56,5 @@ setToolUIStore((prev) => ({ | ||
| setChatInstance, | ||
| chatInstance | ||
| chatInstance, | ||
| assistant, | ||
| setAssistant | ||
| }; | ||
@@ -55,0 +61,0 @@ return /* @__PURE__ */ jsx(AssistantContext.Provider, { value: contextValue, children }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/context/AssistantProvider/AssistantContext.ts","../src/context/AssistantProvider/AssistantProvider.tsx","../src/hooks/useToolUI.ts","../src/lib/createToolUI.ts"],"sourcesContent":["import { createContext, Dispatch } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { AddToolResultFunc } from \"./AssistantProvider\";\n\nexport type AssistantContextType = {\n toolUIStore: Record<string, Omit<CreateToolUIInterface, 'toolName'>>;\n getToolUI: (toolName: string) => Omit<CreateToolUIInterface, 'toolName'>;\n addToolUI: (toolName: string, toolUI: Omit<CreateToolUIInterface, 'toolName'>) => void;\n removeToolUI: (toolName: string) => void;\n setChatInstance: Dispatch<AddToolResultFunc>;\n chatInstance: AddToolResultFunc;\n}\n\nexport const AssistantContext = createContext<AssistantContextType>({\n toolUIStore: {},\n getToolUI: () => ({} as Omit<CreateToolUIInterface, 'toolName'>),\n addToolUI: () => {},\n removeToolUI: () => {},\n setChatInstance: () => {},\n chatInstance: () => {}\n} as AssistantContextType);","\"use client\";\nimport { ReactNode, useContext, useState } from 'react';\nimport { AssistantContext, AssistantContextType } from './AssistantContext';\nimport { CreateToolUIInterface } from '@athlera/core';\n\nexport type AddToolResultFunc = any;\n\nexport function AssistantProvider({ children }: { children: ReactNode }) {\n const [toolUIStore, setToolUIStore] = useState<Record<string, Omit<CreateToolUIInterface, 'toolName'>>>({});\n const [chatInstance, setChatInstance] = useState<AddToolResultFunc>(() => () => {});\n\n const addToolUI = (toolName: string, toolUI: any) => {\n setToolUIStore((prev) => ({\n ...prev,\n [toolName]: toolUI\n }));\n };\n\n const getToolUI = (toolName: string) => {\n return toolUIStore[toolName] ?? null;\n };\n\n const getToolsInPosition = (position: 'before' | 'after' | 'inline') => {\n return Object.entries(toolUIStore).filter(([_, tool]) => tool.position === position);\n };\n\n const removeToolUI = (toolName: string) => {\n setToolUIStore((prev) => {\n const newStore = { ...prev };\n delete newStore[toolName];\n return newStore;\n });\n };\n\n const contextValue: AssistantContextType = {\n toolUIStore,\n getToolUI,\n addToolUI,\n removeToolUI,\n setChatInstance,\n chatInstance\n }\n\n return (\n <AssistantContext.Provider value={contextValue}>\n {children}\n </AssistantContext.Provider>\n );\n}\n\nexport const useAssistantProvider = () => {\n const context = useContext(AssistantContext);\n \n if (!context) {\n throw new Error('useAssistantProvider must be used within an AssistantProvider');\n }\n\n return context;\n}","\"use client\";\n\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useAssistantProvider } from \"../context\";\nimport { useEffect } from \"react\";\n\nexport const useToolUI = <TArgs, TResult = any, TResponse = any>(\n tool: CreateToolUIInterface<TArgs, TResult, TResponse>\n) => {\n const assistantRuntime = useAssistantProvider();\n\n useEffect(() => {\n if (!tool) return;\n\n assistantRuntime.addToolUI(tool.toolName, { render: tool.render, position: tool.position });\n\n return () => {\n assistantRuntime.removeToolUI(tool.toolName);\n };\n }, []);\n}","\"use client\";\n\nimport { FC } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useToolUI } from \"../hooks\";\n\nexport type ToolUIFunction = FC & {\n unstable_tool: CreateToolUIInterface<any, any>;\n};\n\nexport const createToolUI = <TArgs, TResult, TResponse>(tool: CreateToolUIInterface<TArgs, TResult, TResponse>) => {\n const ToolUI: ToolUIFunction = () => {\n useToolUI(tool);\n return null;\n };\n\n ToolUI.unstable_tool = tool;\n return ToolUI;\n}"],"mappings":";AAAA,SAAS,qBAA+B;AAajC,IAAM,mBAAmB,cAAoC;AAAA,EAChE,aAAa,CAAC;AAAA,EACd,WAAW,OAAO,CAAC;AAAA,EACnB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,cAAc,MAAM;AAAA,EAAC;AACzB,CAAyB;;;ACnBzB,SAAoB,YAAY,gBAAgB;AA2CxC;AArCD,SAAS,kBAAkB,EAAE,SAAS,GAA4B;AACrE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAkE,CAAC,CAAC;AAC1G,QAAM,CAAC,cAAc,eAAe,IAAI,SAA4B,MAAM,MAAM;AAAA,EAAC,CAAC;AAElF,QAAM,YAAY,CAAC,UAAkB,WAAgB;AACjD,mBAAe,CAAC,UAAU;AAAA,MACtB,GAAG;AAAA,MACH,CAAC,QAAQ,GAAG;AAAA,IAChB,EAAE;AAAA,EACN;AAEA,QAAM,YAAY,CAAC,aAAqB;AACpC,WAAO,YAAY,QAAQ,KAAK;AAAA,EACpC;AAEA,QAAM,qBAAqB,CAAC,aAA4C;AACpE,WAAO,OAAO,QAAQ,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,KAAK,aAAa,QAAQ;AAAA,EACvF;AAEA,QAAM,eAAe,CAAC,aAAqB;AACvC,mBAAe,CAAC,SAAS;AACrB,YAAM,WAAW,EAAE,GAAG,KAAK;AAC3B,aAAO,SAAS,QAAQ;AACxB,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,QAAM,eAAqC;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,SACI,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,cAC7B,UACL;AAER;AAEO,IAAM,uBAAuB,MAAM;AACtC,QAAM,UAAU,WAAW,gBAAgB;AAE3C,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,+DAA+D;AAAA,EACnF;AAEA,SAAO;AACX;;;ACtDA,SAAS,iBAAiB;AAEnB,IAAM,YAAY,CACrB,SACC;AACD,QAAM,mBAAmB,qBAAqB;AAE9C,YAAU,MAAM;AACZ,QAAI,CAAC,KAAM;AAEX,qBAAiB,UAAU,KAAK,UAAU,EAAE,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS,CAAC;AAE1F,WAAO,MAAM;AACT,uBAAiB,aAAa,KAAK,QAAQ;AAAA,IAC/C;AAAA,EACJ,GAAG,CAAC,CAAC;AACT;;;ACVO,IAAM,eAAe,CAA4B,SAA2D;AAC/G,QAAM,SAAyB,MAAM;AACjC,cAAU,IAAI;AACd,WAAO;AAAA,EACX;AAEA,SAAO,gBAAgB;AACvB,SAAO;AACX;","names":[]} | ||
| {"version":3,"sources":["../src/context/AssistantProvider/AssistantContext.ts","../src/context/AssistantProvider/AssistantProvider.tsx","../src/hooks/useToolUI.ts","../src/lib/createToolUI.ts"],"sourcesContent":["import { createContext, Dispatch } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { AddToolResultFunc } from \"./AssistantProvider\";\n\nexport type AssistantContextType = {\n toolUIStore: Record<string, Omit<CreateToolUIInterface, 'toolName'>>;\n getToolUI: (toolName: string) => Omit<CreateToolUIInterface, 'toolName'>;\n addToolUI: (toolName: string, toolUI: Omit<CreateToolUIInterface, 'toolName'>) => void;\n removeToolUI: (toolName: string) => void;\n setChatInstance: Dispatch<AddToolResultFunc>;\n chatInstance: AddToolResultFunc;\n assistant: any;\n setAssistant: Dispatch<any>;\n}\n\nexport const AssistantContext = createContext<AssistantContextType>({\n toolUIStore: {},\n getToolUI: () => ({} as Omit<CreateToolUIInterface, 'toolName'>),\n addToolUI: () => {},\n removeToolUI: () => {},\n setChatInstance: () => {},\n chatInstance: () => {},\n assistant: null,\n setAssistant: () => {}\n} as AssistantContextType);","\"use client\";\nimport { ReactNode, useContext, useState } from 'react';\nimport { AssistantContext, AssistantContextType } from './AssistantContext';\nimport { CreateToolUIInterface } from '@athlera/core';\n\nexport type AddToolResultFunc = any;\n\nexport function AssistantProvider<T = any>({ children }: { children: ReactNode }) {\n const [toolUIStore, setToolUIStore] = useState<Record<string, Omit<CreateToolUIInterface, 'toolName'>>>({});\n const [chatInstance, setChatInstance] = useState<AddToolResultFunc>(() => () => {});\n const [assistant, setAssistant] = useState<T>(null!);\n\n const addToolUI = (toolName: string, toolUI: any) => {\n setToolUIStore((prev) => ({\n ...prev,\n [toolName]: toolUI\n }));\n };\n\n const getToolUI = (toolName: string) => {\n return toolUIStore[toolName] ?? null;\n };\n\n const getToolsInPosition = (position: 'before' | 'after' | 'inline') => {\n return Object.entries(toolUIStore).filter(([_, tool]) => tool.position === position);\n };\n\n const removeToolUI = (toolName: string) => {\n setToolUIStore((prev) => {\n const newStore = { ...prev };\n delete newStore[toolName];\n return newStore;\n });\n };\n\n const contextValue: AssistantContextType = {\n toolUIStore,\n getToolUI,\n addToolUI,\n removeToolUI,\n setChatInstance,\n chatInstance,\n assistant,\n setAssistant\n }\n\n return (\n <AssistantContext.Provider value={contextValue}>\n {children}\n </AssistantContext.Provider>\n );\n}\n\nexport const useAssistantProvider = () => {\n const context = useContext(AssistantContext);\n \n if (!context) {\n throw new Error('useAssistantProvider must be used within an AssistantProvider');\n }\n\n return context;\n}","\"use client\";\n\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useAssistantProvider } from \"../context\";\nimport { useEffect } from \"react\";\n\nexport const useToolUI = <TArgs, TResult = any, TResponse = any>(\n tool: CreateToolUIInterface<TArgs, TResult, TResponse>\n) => {\n const assistantRuntime = useAssistantProvider();\n\n useEffect(() => {\n if (!tool) return;\n\n assistantRuntime.addToolUI(tool.toolName, { render: tool.render, position: tool.position });\n\n return () => {\n assistantRuntime.removeToolUI(tool.toolName);\n };\n }, []);\n}","\"use client\";\n\nimport { FC } from \"react\";\nimport { CreateToolUIInterface } from \"@athlera/core\";\nimport { useToolUI } from \"../hooks\";\n\nexport type ToolUIFunction = FC & {\n unstable_tool: CreateToolUIInterface<any, any>;\n};\n\nexport const createToolUI = <TArgs, TResult, TResponse>(tool: CreateToolUIInterface<TArgs, TResult, TResponse>) => {\n const ToolUI: ToolUIFunction = () => {\n useToolUI(tool);\n return null;\n };\n\n ToolUI.unstable_tool = tool;\n return ToolUI;\n}"],"mappings":";AAAA,SAAS,qBAA+B;AAejC,IAAM,mBAAmB,cAAoC;AAAA,EAChE,aAAa,CAAC;AAAA,EACd,WAAW,OAAO,CAAC;AAAA,EACnB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EAAC;AACzB,CAAyB;;;ACvBzB,SAAoB,YAAY,gBAAgB;AA8CxC;AAxCD,SAAS,kBAA2B,EAAE,SAAS,GAA4B;AAC9E,QAAM,CAAC,aAAa,cAAc,IAAI,SAAkE,CAAC,CAAC;AAC1G,QAAM,CAAC,cAAc,eAAe,IAAI,SAA4B,MAAM,MAAM;AAAA,EAAC,CAAC;AAClF,QAAM,CAAC,WAAW,YAAY,IAAI,SAAY,IAAK;AAEnD,QAAM,YAAY,CAAC,UAAkB,WAAgB;AACjD,mBAAe,CAAC,UAAU;AAAA,MACtB,GAAG;AAAA,MACH,CAAC,QAAQ,GAAG;AAAA,IAChB,EAAE;AAAA,EACN;AAEA,QAAM,YAAY,CAAC,aAAqB;AACpC,WAAO,YAAY,QAAQ,KAAK;AAAA,EACpC;AAEA,QAAM,qBAAqB,CAAC,aAA4C;AACpE,WAAO,OAAO,QAAQ,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,KAAK,aAAa,QAAQ;AAAA,EACvF;AAEA,QAAM,eAAe,CAAC,aAAqB;AACvC,mBAAe,CAAC,SAAS;AACrB,YAAM,WAAW,EAAE,GAAG,KAAK;AAC3B,aAAO,SAAS,QAAQ;AACxB,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,QAAM,eAAqC;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,SACI,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,cAC7B,UACL;AAER;AAEO,IAAM,uBAAuB,MAAM;AACtC,QAAM,UAAU,WAAW,gBAAgB;AAE3C,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,+DAA+D;AAAA,EACnF;AAEA,SAAO;AACX;;;ACzDA,SAAS,iBAAiB;AAEnB,IAAM,YAAY,CACrB,SACC;AACD,QAAM,mBAAmB,qBAAqB;AAE9C,YAAU,MAAM;AACZ,QAAI,CAAC,KAAM;AAEX,qBAAiB,UAAU,KAAK,UAAU,EAAE,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS,CAAC;AAE1F,WAAO,MAAM;AACT,uBAAiB,aAAa,KAAK,QAAQ;AAAA,IAC/C;AAAA,EACJ,GAAG,CAAC,CAAC;AACT;;;ACVO,IAAM,eAAe,CAA4B,SAA2D;AAC/G,QAAM,SAAyB,MAAM;AACjC,cAAU,IAAI;AACd,WAAO;AAAA,EACX;AAEA,SAAO,gBAAgB;AACvB,SAAO;AACX;","names":[]} |
+1
-1
| { | ||
| "name": "@athlera/react", | ||
| "version": "0.1.0", | ||
| "version": "0.1.1", | ||
| "author": "Athlera AS <support@athlera.com> (https://athlera.com)", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
22726
4.88%240
6.19%0
-100%