From 2ecfa5edd82981758b47b4c580455050bfcacd46 Mon Sep 17 00:00:00 2001 From: Simon Farshid Date: Thu, 20 Jun 2024 15:36:31 -0700 Subject: [PATCH] refactor: cleanup (#268) --- .../src/core/VercelModelAdapter.tsx | 1 - .../src/core/convertToCoreMessage.ts | 2 - .../react-hook-form/src/useAssistantForm.tsx | 16 +- packages/react-markdown/src/codeblock.tsx | 148 ------------------ .../model-config/useAssistantToolRenderer.tsx | 1 - .../message/ContentPartComponentTypes.tsx | 3 - packages/react/src/utils/ModelConfigTypes.ts | 1 - 7 files changed, 5 insertions(+), 167 deletions(-) delete mode 100644 packages/react-markdown/src/codeblock.tsx diff --git a/packages/react-ai-sdk/src/core/VercelModelAdapter.tsx b/packages/react-ai-sdk/src/core/VercelModelAdapter.tsx index 8a6b16938d..b4b571b7cb 100644 --- a/packages/react-ai-sdk/src/core/VercelModelAdapter.tsx +++ b/packages/react-ai-sdk/src/core/VercelModelAdapter.tsx @@ -26,7 +26,6 @@ export class VercelModelAdapter implements ChatModelAdapter { messages: messages.flatMap(convertToCoreMessage), ...(config.tools ? { - // biome-ignore lint/suspicious/noExplicitAny: TODO tools: config.tools as Record>, } : {}), diff --git a/packages/react-ai-sdk/src/core/convertToCoreMessage.ts b/packages/react-ai-sdk/src/core/convertToCoreMessage.ts index 1f30cca361..6f242f9593 100644 --- a/packages/react-ai-sdk/src/core/convertToCoreMessage.ts +++ b/packages/react-ai-sdk/src/core/convertToCoreMessage.ts @@ -27,11 +27,9 @@ export const convertToCoreMessage = (message: ThreadMessage): CoreMessage[] => { ) { expandedMessages.push({ role: content.type === "tool-result" ? "tool" : message.role, - // biome-ignore lint/suspicious/noExplicitAny: content: [content] as any, }); } else { - // biome-ignore lint/suspicious/noExplicitAny: (lastMessage.content as Array).push(content); } }; diff --git a/packages/react-hook-form/src/useAssistantForm.tsx b/packages/react-hook-form/src/useAssistantForm.tsx index d400e5f262..d387f7e22b 100644 --- a/packages/react-hook-form/src/useAssistantForm.tsx +++ b/packages/react-hook-form/src/useAssistantForm.tsx @@ -40,13 +40,13 @@ export type UseAssistantFormProps< export const useAssistantForm = < TFieldValues extends FieldValues = FieldValues, - // biome-ignore lint/suspicious/noExplicitAny: TContext = any, TTransformedValues extends FieldValues | undefined = undefined, >( props?: UseAssistantFormProps, ): UseFormReturn => { const form = useForm(props); + const { control, getValues, setValue } = form; const { useModelConfig } = useAssistantContext(); const registerModelConfigProvider = useModelConfig( @@ -55,14 +55,13 @@ export const useAssistantForm = < useEffect(() => { const value: ModelConfig = { - system: `Form State:\n${JSON.stringify(form.getValues())}`, + system: `Form State:\n${JSON.stringify(getValues())}`, tools: { set_form_field: { ...formTools.set_form_field, execute: async (args) => { - // biome-ignore lint/suspicious/noExplicitAny: TODO - form.setValue(args.name as any, args.value as any); + setValue(args.name, args.value); return { success: true }; }, @@ -70,7 +69,7 @@ export const useAssistantForm = < submit_form: { ...formTools.submit_form, execute: async () => { - const { _names, _fields } = form.control; + const { _names, _fields } = control; for (const name of _names.mount) { const field = _fields[name]; if (field?._f) { @@ -99,12 +98,7 @@ export const useAssistantForm = < }, }; return registerModelConfigProvider(() => value); - }, [ - form.control, - form.setValue, - form.getValues, - registerModelConfigProvider, - ]); + }, [control, setValue, getValues, registerModelConfigProvider]); const renderFormFieldTool = props?.assistant?.tools?.set_form_field?.render; useAssistantToolRenderer( diff --git a/packages/react-markdown/src/codeblock.tsx b/packages/react-markdown/src/codeblock.tsx deleted file mode 100644 index e6bbc69290..0000000000 --- a/packages/react-markdown/src/codeblock.tsx +++ /dev/null @@ -1,148 +0,0 @@ -// Inspired by Chatbot-UI and modified to fit the needs of this project -// @see https://github.com/mckaywrigley/chatbot-ui/blob/main/components/Markdown/CodeBlock.tsx - -"use client"; - -import { FC, memo } from "react"; -import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; -import { coldarkDark } from "react-syntax-highlighter/dist/cjs/styles/prism"; - -import { useCopyToClipboard } from "@/lib/hooks/use-copy-to-clipboard"; -import { IconCheck, IconCopy, IconDownload } from "@/components/ui/icons"; -import { Button } from "@/components/ui/button"; - -interface Props { - language: string; - value: string; -} - -interface languageMap { - [key: string]: string | undefined; -} - -export const programmingLanguages: languageMap = { - javascript: ".js", - python: ".py", - java: ".java", - c: ".c", - cpp: ".cpp", - "c++": ".cpp", - "c#": ".cs", - ruby: ".rb", - php: ".php", - swift: ".swift", - "objective-c": ".m", - kotlin: ".kt", - typescript: ".ts", - go: ".go", - perl: ".pl", - rust: ".rs", - scala: ".scala", - haskell: ".hs", - lua: ".lua", - shell: ".sh", - sql: ".sql", - html: ".html", - css: ".css", - // add more file extensions here, make sure the key is same as language prop in CodeBlock.tsx component -}; - -export const generateRandomString = (length: number, lowercase = false) => { - const chars = "ABCDEFGHJKLMNPQRSTUVWXY3456789"; // excluding similar looking characters like Z, 2, I, 1, O, 0 - let result = ""; - for (let i = 0; i < length; i++) { - result += chars.charAt(Math.floor(Math.random() * chars.length)); - } - return lowercase ? result.toLowerCase() : result; -}; - -const CodeBlock: FC = memo(({ language, value }) => { - const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 }); - - const downloadAsFile = () => { - if (typeof window === "undefined") { - return; - } - const fileExtension = programmingLanguages[language] || ".file"; - const suggestedFileName = `file-${generateRandomString( - 3, - true, - )}${fileExtension}`; - const fileName = window.prompt("Enter file name" || "", suggestedFileName); - - if (!fileName) { - // User pressed cancel on prompt. - return; - } - - const blob = new Blob([value], { type: "text/plain" }); - const url = URL.createObjectURL(blob); - const link = document.createElement("a"); - link.download = fileName; - link.href = url; - link.style.display = "none"; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - URL.revokeObjectURL(url); - }; - - const onCopy = () => { - if (isCopied) return; - copyToClipboard(value); - }; - - return ( -
-
- {language} -
- - -
-
- - {value} - -
- ); -}); -CodeBlock.displayName = "CodeBlock"; - -export { CodeBlock }; diff --git a/packages/react/src/model-config/useAssistantToolRenderer.tsx b/packages/react/src/model-config/useAssistantToolRenderer.tsx index 7fe477c1c5..d9ca54ca25 100644 --- a/packages/react/src/model-config/useAssistantToolRenderer.tsx +++ b/packages/react/src/model-config/useAssistantToolRenderer.tsx @@ -9,7 +9,6 @@ export type AssistantToolRendererProps = { }; export const useAssistantToolRenderer = ( - // biome-ignore lint/suspicious/noExplicitAny: intentional any tool: AssistantToolRendererProps | null, ) => { const { useToolRenderers } = useAssistantContext(); diff --git a/packages/react/src/primitives/message/ContentPartComponentTypes.tsx b/packages/react/src/primitives/message/ContentPartComponentTypes.tsx index 4238aa1b41..5b1c76c365 100644 --- a/packages/react/src/primitives/message/ContentPartComponentTypes.tsx +++ b/packages/react/src/primitives/message/ContentPartComponentTypes.tsx @@ -27,15 +27,12 @@ export type UIContentPartProps = { }; export type UIContentPartComponent = ComponentType; -// biome-ignore lint/suspicious/noExplicitAny: intentional any export type ToolCallContentPartProps = { part: ToolCallContentPart; status: ContentPartStatus; }; export type ToolCallContentPartComponent< - // biome-ignore lint/suspicious/noExplicitAny: intentional any TArgs = any, - // biome-ignore lint/suspicious/noExplicitAny: intentional any TResult = any, > = ComponentType>; diff --git a/packages/react/src/utils/ModelConfigTypes.ts b/packages/react/src/utils/ModelConfigTypes.ts index adb4b7272a..4b52237bf8 100644 --- a/packages/react/src/utils/ModelConfigTypes.ts +++ b/packages/react/src/utils/ModelConfigTypes.ts @@ -14,7 +14,6 @@ export type Tool = { export type ModelConfig = { priority?: number; system?: string; - // biome-ignore lint/suspicious/noExplicitAny: intentional any tools?: Record>; };