Skip to content

Commit

Permalink
fix: explicitely allow undefined in optional fields (#370)
Browse files Browse the repository at this point in the history
  • Loading branch information
Yonom authored Jul 1, 2024
1 parent e1b56b5 commit fcf02fb
Show file tree
Hide file tree
Showing 12 changed files with 66 additions and 47 deletions.
6 changes: 3 additions & 3 deletions packages/react-ai-sdk/src/rsc/VercelRSCAdapter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ type RSCMessageConverter<T> = {
type VercelRSCAdapterBase<T> = {
messages: T[];
append: (message: AppendMessage) => Promise<void>;
edit?: (message: AppendMessage) => Promise<void>;
reload?: (parentId: string | null) => Promise<void>;
convertMessage?: (message: T) => VercelRSCMessage;
edit?: (message: AppendMessage) => Promise<void> | undefined;
reload?: (parentId: string | null) => Promise<void> | undefined;
convertMessage?: (message: T) => VercelRSCMessage | undefined;
};

export type VercelRSCAdapter<T = VercelRSCMessage> = VercelRSCAdapterBase<T> &
Expand Down
2 changes: 1 addition & 1 deletion packages/react-ai-sdk/src/rsc/VercelRSCMessage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ export type VercelRSCMessage = {
id: string;
role: "user" | "assistant";
display: ReactNode;
createdAt?: Date;
createdAt?: Date | undefined;
};
44 changes: 28 additions & 16 deletions packages/react-hook-form/src/useAssistantForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,34 @@ export type UseAssistantFormProps<
TFieldValues extends FieldValues,
TContext,
> = UseFormProps<TFieldValues, TContext> & {
assistant?: {
tools?: {
set_form_field?: {
render?: ToolCallContentPartComponent<
z.ZodType<typeof formTools.set_form_field>,
unknown
>;
};
submit_form?: {
render?: ToolCallContentPartComponent<
z.ZodType<typeof formTools.submit_form>,
unknown
>;
};
};
};
assistant?:
| {
tools?:
| {
set_form_field?:
| {
render?:
| ToolCallContentPartComponent<
z.ZodType<typeof formTools.set_form_field>,
unknown
>
| undefined;
}
| undefined;
submit_form?:
| {
render?:
| ToolCallContentPartComponent<
z.ZodType<typeof formTools.submit_form>,
unknown
>
| undefined;
}
| undefined;
}
| undefined;
}
| undefined;
};

export const useAssistantForm = <
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useAppendMessage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ type CreateAppendMessage =
| string
| {
parentId?: string | null | undefined;
role?: AppendMessage["role"];
role?: AppendMessage["role"] | undefined;
content: AppendMessage["content"];
};

Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/model-config/useAssistantTool.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import type { Tool } from "../types/ModelConfigTypes";

export type AssistantToolProps<TArgs, TResult> = Tool<TArgs, TResult> & {
toolName: string;
render?: ToolCallContentPartComponent<TArgs, TResult>;
render?: ToolCallContentPartComponent<TArgs, TResult> | undefined;
};

export const useAssistantTool = <TArgs, TResult>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { useMessageContext } from "../../context/react/MessageContext";
import { useCombinedStore } from "../../utils/combined/useCombinedStore";
import { getMessageText } from "../../utils/getMessageText";

type UseActionBarCopyProps = {
copiedDuration?: number;
export type UseActionBarCopyProps = {
copiedDuration?: number | undefined;
};

export const useActionBarCopy = ({
Expand All @@ -15,7 +15,10 @@ export const useActionBarCopy = ({
const hasCopyableContent = useCombinedStore(
[useMessage, useEditComposer],
(m, c) => {
return !c.isEditing && m.message.content.some((c) => c.type === "text");
return (
!c.isEditing &&
m.message.content.some((c) => c.type === "text" && c.text.length > 0)
);
},
);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { useCallback } from "react";
import { useThreadContext } from "../../context";

type UseApplyThreadSuggestionProps = {
export type UseApplyThreadSuggestionProps = {
prompt: string;
method: "replace";
autoSend?: boolean;
autoSend?: boolean | undefined;
};

export const useThreadSuggestion = ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ type AssistantModalPrimitiveContentElement = ElementRef<
export type AssistantModalPrimitiveContentProps = ComponentPropsWithoutRef<
typeof PopoverPrimitive.Content
> & {
dissmissOnInteractOutside?: boolean;
dissmissOnInteractOutside?: boolean | undefined;
};

export const AssistantModalPrimitiveContent = forwardRef<
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ type BranchPickerPrimitiveRootElement = ElementRef<typeof Primitive.div>;
type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;

export type BranchPickerPrimitiveRootProps = PrimitiveDivProps & {
hideWhenSingleBranch?: boolean;
hideWhenSingleBranch?: boolean | undefined;
};

export const BranchPickerPrimitiveRoot = forwardRef<
Expand Down
22 changes: 13 additions & 9 deletions packages/react/src/primitives/message/MessageContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,19 @@ import type {
} from "../../types/ContentPartComponentTypes";

export type MessagePrimitiveContentProps = {
components?: {
Text?: TextContentPartComponent;
Image?: ImageContentPartComponent;
UI?: UIContentPartComponent;
tools?: {
by_name?: Record<string, ToolCallContentPartComponent>;
Fallback?: ComponentType<ToolCallContentPartProps>;
};
};
components?:
| {
Text?: TextContentPartComponent | undefined;
Image?: ImageContentPartComponent | undefined;
UI?: UIContentPartComponent | undefined;
tools?: {
by_name?:
| Record<string, ToolCallContentPartComponent | undefined>
| undefined;
Fallback?: ComponentType<ToolCallContentPartProps> | undefined;
};
}
| undefined;
};

const defaultComponents = {
Expand Down
10 changes: 5 additions & 5 deletions packages/react/src/primitives/thread/ThreadMessages.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ export type ThreadPrimitiveMessagesProps = {
components:
| {
Message: ComponentType;
UserMessage?: ComponentType;
EditComposer?: ComponentType;
AssistantMessage?: ComponentType;
UserMessage?: ComponentType | undefined;
EditComposer?: ComponentType | undefined;
AssistantMessage?: ComponentType | undefined;
}
| {
Message?: ComponentType;
Message?: ComponentType | undefined;
UserMessage: ComponentType;
EditComposer?: ComponentType;
EditComposer?: ComponentType | undefined;
AssistantMessage: ComponentType;
};
};
Expand Down
8 changes: 4 additions & 4 deletions packages/react/src/types/ModelConfigTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ type ToolExecuteFunction<TArgs, TResult> = (
) => TResult | Promise<TResult>;

export type Tool<TArgs = unknown, TResult = unknown> = {
description?: string;
description?: string | undefined;
parameters: z.ZodSchema<TArgs>;
execute: ToolExecuteFunction<TArgs, TResult>;
};

export type ModelConfig = {
priority?: number;
system?: string;
tools?: Record<string, Tool<any, any>>;
priority?: number | undefined;
system?: string | undefined;
tools?: Record<string, Tool<any, any>> | undefined;
};

export type ModelConfigProvider = () => ModelConfig;
Expand Down

0 comments on commit fcf02fb

Please sign in to comment.