Shun Miyazawa 1 год назад
Родитель
Сommit
9f871c1cb6

+ 3 - 3
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantSidebar/AiAssistantSidebar.tsx

@@ -19,6 +19,7 @@ import { useCurrentPageId } from '~/stores/page';
 import loggerFactory from '~/utils/logger';
 
 import type { AiAssistantHasId } from '../../../../interfaces/ai-assistant';
+import { isInsertDiff } from '../../../../interfaces/editor-assistant/sse-schemas';
 import { MessageErrorCode, StreamErrorCode } from '../../../../interfaces/message-error';
 import { ThreadType } from '../../../../interfaces/thread-relation';
 import type { IThreadRelationHasId } from '../../../../interfaces/thread-relation';
@@ -276,9 +277,8 @@ const AiAssistantSidebarSubstance: React.FC<AiAssistantSidebarSubstanceProps> =
                 textValues.push(data.appendedMessage);
               },
               onDetectedDiff: (data) => {
-                console.log('sse diff', { data });
-
-                if (data.diff.insert != null) {
+                if (isInsertDiff(data)) {
+                  console.log('detected diff (insert)');
                   mutateIsEnableUnifiedMergeView(true);
                   setDetectedDiff(data.diff.insert);
                 }

+ 13 - 0
apps/app/src/features/openai/interfaces/editor-assistant/sse-schemas.ts

@@ -28,3 +28,16 @@ export const SseFinalizedSchema = z
 export type SseMessage = z.infer<typeof SseMessageSchema>;
 export type SseDetectedDiff = z.infer<typeof SseDetectedDiffSchema>;
 export type SseFinalized = z.infer<typeof SseFinalizedSchema>;
+
+// Type guard for SseDetectedDiff
+export const isInsertDiff = (diff: SseDetectedDiff): diff is { diff: { insert: string } } => {
+  return 'insert' in diff.diff;
+};
+
+export const isDeleteDiff = (diff: SseDetectedDiff): diff is { diff: { delete: number } } => {
+  return 'delete' in diff.diff;
+};
+
+export const isRetainDiff = (diff: SseDetectedDiff): diff is { diff : { retain: number} } => {
+  return 'retain' in diff.diff;
+};