Skip to content

Commit 9b6926f

Browse files
committed
refactor: remove old features/Chat/Thread
1 parent dbd3c8e commit 9b6926f

File tree

7 files changed

+112
-120
lines changed

7 files changed

+112
-120
lines changed

refact-agent/gui/src/features/Chat/Thread/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

refact-agent/gui/src/features/Chat/Thread/types.ts

Lines changed: 0 additions & 46 deletions
This file was deleted.

refact-agent/gui/src/features/Chat/Thread/utils.ts

Lines changed: 0 additions & 61 deletions
This file was deleted.

refact-agent/gui/src/features/ThreadMessages/threadMessagesSlice.ts

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,8 @@ import {
1515
ToolMessage,
1616
isToolMessage,
1717
} from "../../services/refact";
18-
import {
19-
isMessageWithIntegrationMeta,
20-
MessageWithIntegrationMeta,
21-
} from "../Chat";
22-
import { takeWhile } from "../../utils";
18+
19+
import { Override, takeWhile } from "../../utils";
2320

2421
// TODO: move this somewhere
2522
export type ToolConfirmationRequest = {
@@ -57,6 +54,43 @@ type Message = NonNullable<
5754
MessagesSubscriptionSubscription["comprehensive_thread_subs"]["news_payload_thread_message"]
5855
>;
5956

57+
export type IntegrationMeta = {
58+
name?: string;
59+
path?: string;
60+
project?: string;
61+
shouldIntermediatePageShowUp?: boolean;
62+
};
63+
64+
export function isIntegrationMeta(json: unknown): json is IntegrationMeta {
65+
if (!json || typeof json !== "object") return false;
66+
if (!("name" in json) || !("path" in json) || !("project" in json)) {
67+
return false;
68+
}
69+
return true;
70+
}
71+
72+
export type MessageWithIntegrationMeta = Override<
73+
Message,
74+
{
75+
ftm_user_preferences: { integration: IntegrationMeta };
76+
}
77+
>;
78+
79+
export function isMessageWithIntegrationMeta(
80+
message: unknown,
81+
): message is MessageWithIntegrationMeta {
82+
if (!message || typeof message !== "object") return false;
83+
if (!("ftm_user_preferences" in message)) return false;
84+
if (
85+
!message.ftm_user_preferences ||
86+
typeof message.ftm_user_preferences !== "object"
87+
)
88+
return false;
89+
const preferences = message.ftm_user_preferences as Record<string, unknown>;
90+
if (!("integration" in preferences)) return false;
91+
return isIntegrationMeta(preferences.integration);
92+
}
93+
6094
export type MessagesInitialState = {
6195
waitingBranches: number[]; // alt numbers
6296
streamingBranches: number[]; // alt number
@@ -458,7 +492,7 @@ export const threadMessagesSlice = createSlice({
458492
const maybeIntegrationMeta = messages.find(isMessageWithIntegrationMeta);
459493
if (!maybeIntegrationMeta) return null;
460494
// TODO: any types are causing issues here
461-
const message = maybeIntegrationMeta as MessageWithIntegrationMeta;
495+
const message = maybeIntegrationMeta;
462496
return message.ftm_user_preferences.integration;
463497
}),
464498

refact-agent/gui/src/services/graphql/queriesAndMutationsApi.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import {
4040
import { type RootState } from "../../app/store";
4141
import { setThreadFtId } from "../../features/ThreadMessages";
4242
import { Tool } from "../refact/tools";
43-
import { IntegrationMeta } from "../../features/Chat";
43+
import type { IntegrationMeta } from "../../features/ThreadMessages";
4444

4545
// async function fetchAppSearchableId(apiKey: string, port: number) {
4646
// const appIdUrl = `http://127.0.0.1:${port}/v1/get-app-searchable-id`;

refact-agent/gui/src/services/refact/links.ts

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
22
import { RootState } from "../../app/store";
3-
import { ChatMessage, ChatMessages } from "./types";
4-
import { formatMessagesForLsp } from "../../features/Chat/Thread/utils";
3+
import {
4+
ChatMessage,
5+
ChatMessages,
6+
isAssistantMessage,
7+
isDiffMessage,
8+
isToolMessage,
9+
isUserMessage,
10+
LspChatMode,
11+
} from "./types";
512
import { CHAT_COMMIT_LINK_URL, CHAT_LINKS_URL } from "./consts";
6-
import { LspChatMode } from "../../features/Chat";
13+
14+
import { LspChatMessage, LSPUserMessage } from "./chat";
15+
716
// useful for forcing specific links
817
// import { STUB_LINKS_FOR_CHAT_RESPONSE } from "../../__fixtures__";
918

@@ -227,3 +236,55 @@ function isCommitResponse(json: unknown): json is CommitResponse {
227236
// TODO: type check the arrays if we use the data anywhere.
228237
return true;
229238
}
239+
240+
export function formatMessagesForLsp(messages: ChatMessages): LspChatMessage[] {
241+
return messages.reduce<LspChatMessage[]>((acc, message) => {
242+
if (isUserMessage(message)) {
243+
const { ftm_role, ftm_content, ...rest } = message;
244+
const msg: LSPUserMessage = {
245+
...rest,
246+
role: ftm_role,
247+
content: ftm_content,
248+
};
249+
return acc.concat([msg]);
250+
}
251+
252+
if (isAssistantMessage(message)) {
253+
return acc.concat([
254+
{
255+
role: message.ftm_role,
256+
content: message.ftm_content,
257+
tool_calls: message.ftm_tool_calls ?? undefined,
258+
thinking_blocks: message.thinking_blocks ?? undefined,
259+
finish_reason: message.finish_reason,
260+
usage: message.usage,
261+
},
262+
]);
263+
}
264+
265+
if (isToolMessage(message)) {
266+
return acc.concat([
267+
{
268+
role: "tool",
269+
content: message.ftm_content,
270+
tool_call_id: message.ftm_call_id,
271+
},
272+
]);
273+
}
274+
275+
if (isDiffMessage(message)) {
276+
const diff = {
277+
role: message.ftm_role,
278+
content: JSON.stringify(message.ftm_content),
279+
tool_call_id: message.tool_call_id,
280+
};
281+
return acc.concat([diff]);
282+
}
283+
284+
const ftm_content =
285+
typeof message.ftm_content === "string"
286+
? message.ftm_content
287+
: JSON.stringify(message.ftm_content);
288+
return [...acc, { role: message.ftm_role, content: ftm_content }];
289+
}, []);
290+
}

refact-agent/gui/src/services/refact/types.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
// import { FThreadMessageOutput } from "../../../generated/documents";
21
import type { MessagesSubscriptionSubscription } from "../../../generated/documents";
3-
import { LspChatMode } from "../../features/Chat";
42
import { Checkpoint } from "../../features/Checkpoints/types";
53
import { Override } from "../../utils/Override";
64
import { GetChatTitleActionPayload, GetChatTitleResponse, Usage } from "./chat";
@@ -297,6 +295,13 @@ export function isChatMessage(message: unknown): message is ChatMessage {
297295

298296
export type ChatMessages = ChatMessage[];
299297

298+
export type LspChatMode =
299+
| "NO_TOOLS"
300+
| "EXPLORE"
301+
| "AGENT"
302+
| "CONFIGURE"
303+
| "PROJECT_SUMMARY";
304+
300305
export type ChatMeta = {
301306
current_config_file?: string | undefined;
302307
chat_id?: string | undefined;

0 commit comments

Comments
 (0)