8f2fe7a8e6
* feat(web): add agent message comments * fix(web): harden agent message comments * fix(web): address message comment review findings * fix(web): allow comments on legacy agent messages * fix(web): address latest message comment review * fix(web): address follow-up message comment review * fix(web): address remaining message comment review * fix(web): keep failed mobile comments open * fix(web): preserve selections over message comments
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { buildContextItems } from "./chat-context-items";
|
|
import type { AgentMessageComment } from "@/lib/state/slices/comments";
|
|
|
|
const comment: AgentMessageComment = {
|
|
id: "message-comment-1",
|
|
sessionId: "session-1",
|
|
source: "agent-message",
|
|
messageId: "reply-1",
|
|
selectedText: "selected answer",
|
|
anchor: {
|
|
messageId: "reply-1",
|
|
start: 0,
|
|
end: 15,
|
|
selectedText: "selected answer",
|
|
prefix: "",
|
|
suffix: " continues",
|
|
},
|
|
text: "Please clarify this.",
|
|
createdAt: "2026-07-20T00:00:00Z",
|
|
status: "pending",
|
|
};
|
|
|
|
describe("buildContextItems agent-message comments", () => {
|
|
it("creates one removable context item for pending message comments", () => {
|
|
const items = buildContextItems({
|
|
planContextEnabled: false,
|
|
contextFiles: [],
|
|
resolvedSessionId: "session-1",
|
|
removeContextFile: vi.fn(),
|
|
unpinFile: vi.fn(),
|
|
addPlan: vi.fn(),
|
|
promptsMap: new Map(),
|
|
pendingCommentsByFile: {},
|
|
handleRemoveCommentFile: vi.fn(),
|
|
handleRemoveComment: vi.fn(),
|
|
planComments: [],
|
|
handleClearPlanComments: vi.fn(),
|
|
pendingPRFeedback: [],
|
|
handleRemovePRFeedback: vi.fn(),
|
|
handleClearPRFeedback: vi.fn(),
|
|
walkthroughComments: [],
|
|
handleRemoveWalkthroughComment: vi.fn(),
|
|
handleClearWalkthroughComments: vi.fn(),
|
|
messageComments: [comment],
|
|
handleClearMessageComments: vi.fn(),
|
|
taskId: "task-1",
|
|
} as never);
|
|
|
|
const item = items.find((candidate) => candidate.kind === "agent-message-comment");
|
|
expect(item).toMatchObject({
|
|
kind: "agent-message-comment",
|
|
label: "1 message comment",
|
|
});
|
|
});
|
|
});
|