diff --git a/AgentCompany-New/src/renderer/src/pages/ChatPage.tsx b/AgentCompany-New/src/renderer/src/pages/ChatPage.tsx index d684b267..95090736 100644 --- a/AgentCompany-New/src/renderer/src/pages/ChatPage.tsx +++ b/AgentCompany-New/src/renderer/src/pages/ChatPage.tsx @@ -8,7 +8,6 @@ import { collectParticipants, filterApprovalsForSpace, isRootMessage, - replayEventsForThread, } from "./chat/chat-helpers"; import { ROLE_KEY } from "../../../shared/domain"; import type { PageProps } from "./types"; @@ -47,10 +46,6 @@ export function ChatPage({ snapshot, actions }: PageProps) { () => snapshot.approvals.filter((a) => a.orgId === orgId && a.state === "pending"), [snapshot.approvals, orgId], ); - const auditEventsAll = useMemo( - () => snapshot.auditEvents.filter((event) => event.orgId === orgId), - [snapshot.auditEvents, orgId], - ); const channels = useMemo(() => spaces.filter((space) => space.spaceType !== "direct"), [spaces]); const directs = useMemo(() => spaces.filter((space) => space.spaceType === "direct"), [spaces]); const canBoardIntervene = useMemo( @@ -106,10 +101,6 @@ export function ChatPage({ snapshot, actions }: PageProps) { const threadMessages = selectedThread ? messagesInSpace.filter((m) => m.threadId === selectedThread.id && m.id !== selectedThread.rootMessageId) : []; - const threadAuditEvents = useMemo( - () => (selectedThread ? replayEventsForThread(auditEventsAll, selectedThread, messagesInSpace) : []), - [auditEventsAll, selectedThread, messagesInSpace], - ); const selectedBoardInterventions = useMemo( () => (selectedThread ? boardInterventionsAll.filter((item) => item.threadId === selectedThread.id) : []), [boardInterventionsAll, selectedThread], @@ -309,7 +300,6 @@ export function ChatPage({ snapshot, actions }: PageProps) { slashInvocations={slashInvocationsAll} boardInterventions={selectedBoardInterventions} files={files} - auditEvents={threadAuditEvents} context={{ employees, agents }} canIntervene={canBoardIntervene} attachmentFileId={threadAttachmentFileId} diff --git a/AgentCompany-New/src/renderer/src/pages/chat/ChatMessageRow.tsx b/AgentCompany-New/src/renderer/src/pages/chat/ChatMessageRow.tsx index 941b2eac..79517b1f 100644 --- a/AgentCompany-New/src/renderer/src/pages/chat/ChatMessageRow.tsx +++ b/AgentCompany-New/src/renderer/src/pages/chat/ChatMessageRow.tsx @@ -212,7 +212,7 @@ function AttachmentCard({ file, handoff = false, onOpen }: { file: FileObjectRec )} -
{file.kind.toUpperCase()} · {file.sha256.slice(0, 8)}
+
{file.kind.toUpperCase()}
{canOpen && } diff --git a/AgentCompany-New/src/renderer/src/pages/chat/ChatThreadPanel.tsx b/AgentCompany-New/src/renderer/src/pages/chat/ChatThreadPanel.tsx index e23c4c33..9203e933 100644 --- a/AgentCompany-New/src/renderer/src/pages/chat/ChatThreadPanel.tsx +++ b/AgentCompany-New/src/renderer/src/pages/chat/ChatThreadPanel.tsx @@ -1,7 +1,6 @@ import { useState, type FormEvent } from "react"; import { Button, Icon, IconButton, Pill } from "../../shared/ui"; import type { - AuditEventRecord, BoardInterventionRecord, ChatAttachmentRecord, ChatMentionRecord, @@ -10,7 +9,7 @@ import type { ChatThreadRecord, FileObjectRecord, } from "../../../../shared/domain"; -import { auditEventLabel, formatTime } from "../types"; +import { formatTime } from "../types"; import { ChatMessageRow } from "./ChatMessageRow"; import { MentionTextarea } from "./MentionTextarea"; import { senderName, type MessageContext } from "./chat-helpers"; @@ -24,7 +23,6 @@ export function ChatThreadPanel({ slashInvocations, boardInterventions, files, - auditEvents, context, canIntervene, attachmentFileId, @@ -43,7 +41,6 @@ export function ChatThreadPanel({ slashInvocations: ChatSlashInvocationRecord[]; boardInterventions: BoardInterventionRecord[]; files: FileObjectRecord[]; - auditEvents: AuditEventRecord[]; context: MessageContext; canIntervene: boolean; attachmentFileId: string; @@ -118,7 +115,6 @@ export function ChatThreadPanel({ compact /> ))} - {auditEvents.length > 0 && }
@@ -244,33 +240,3 @@ function boardStateLabel(state: string): string { function formatBoardAction(action: string): string { return action.replace(/_/g, " "); } - -function AuditReplay({ events }: { events: AuditEventRecord[] }) { - return ( -
-
Audit
-
- {events.map((event) => ( -
- {formatTime(event.createdAt)} - - {auditEventLabel(event.entityType, event.action)} - -
- ))} -
-
- ); -} diff --git a/AgentCompany-New/src/renderer/src/pages/chat/chat-helpers.ts b/AgentCompany-New/src/renderer/src/pages/chat/chat-helpers.ts index 77c1c7b1..e5f088d7 100644 --- a/AgentCompany-New/src/renderer/src/pages/chat/chat-helpers.ts +++ b/AgentCompany-New/src/renderer/src/pages/chat/chat-helpers.ts @@ -1,7 +1,6 @@ import type { AgentRecord, ApprovalRecord, - AuditEventRecord, ChatAttachmentRecord, ChatMessageRecord, ChatSpaceRecord, @@ -81,33 +80,6 @@ export function countMessagesIn(spaceId: string, messages: ChatMessageRecord[]): return messages.filter((message) => message.spaceId === spaceId).length; } -export function replayEventsForThread( - events: AuditEventRecord[], - thread: ChatThreadRecord, - messages: ChatMessageRecord[], -): AuditEventRecord[] { - const messageIds = new Set( - messages - .filter((message) => message.threadId === thread.id || message.id === thread.rootMessageId) - .map((message) => message.id), - ); - return events - .filter((event) => { - if (event.entityType === "chat_message" && messageIds.has(event.entityId)) return true; - const payload = auditPayload(event); - return payload.threadId === thread.id || payload.sourceThreadId === thread.id; - }) - .sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime()); -} - -function auditPayload(event: AuditEventRecord): Record { - const parsed = JSON.parse(event.payloadJson) as unknown; - if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) { - throw new Error("Audit event payload is invalid."); - } - return parsed as Record; -} - export function formatDay(iso: string): string { const date = new Date(iso); if (Number.isNaN(date.getTime())) return "—"; diff --git a/AgentCompany-New/tests/e2e/desktop.spec.ts b/AgentCompany-New/tests/e2e/desktop.spec.ts index 762be85c..e93dab24 100644 --- a/AgentCompany-New/tests/e2e/desktop.spec.ts +++ b/AgentCompany-New/tests/e2e/desktop.spec.ts @@ -102,9 +102,7 @@ test("onboards, hires, and creates work in the Electron shell", async () => { await expect(page.getByText("@Board").first()).toBeVisible(); await expect(page.getByText("/escalate").first()).toBeVisible(); await page.getByRole("button", { name: "Open thread" }).first().click(); - await expect(page.getByText("Audit")).toBeVisible(); - await expect(page.getByText("Chat message sent").first()).toBeVisible(); - await expect(page.getByText("Approval requested").first()).toBeVisible(); + await expect(page.getByRole("textbox", { name: "Thread reply" })).toBeVisible(); await page.getByRole("button", { name: "Approvals" }).click(); await expect(page.getByText("Escalate release").first()).toBeVisible();