源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
This commit is contained in:
+41
@@ -0,0 +1,41 @@
|
||||
import { useMemo, useRef } from "react";
|
||||
import type { AgentConversationVM } from "../contracts/agentConversationVM";
|
||||
import type { WorkspaceAgentSessionDetailViewModel } from "../../workspaceAgentSessionDetailViewModel";
|
||||
import {
|
||||
projectAgentConversationVM,
|
||||
reconcileProjectedAgentConversationVM
|
||||
} from "./agentConversationProjection";
|
||||
|
||||
export function useProjectedAgentConversation({
|
||||
conversation,
|
||||
detail,
|
||||
avoidGroupingEdits = false
|
||||
}: {
|
||||
conversation?: AgentConversationVM | null;
|
||||
detail?: WorkspaceAgentSessionDetailViewModel | null;
|
||||
avoidGroupingEdits?: boolean;
|
||||
}): AgentConversationVM | null {
|
||||
const previousConversationRef = useRef<AgentConversationVM | null>(null);
|
||||
|
||||
return useMemo(() => {
|
||||
if (!conversation && !detail) {
|
||||
previousConversationRef.current = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
const nextConversation =
|
||||
conversation ??
|
||||
projectAgentConversationVM(
|
||||
detail as WorkspaceAgentSessionDetailViewModel,
|
||||
{
|
||||
avoidGroupingEdits
|
||||
}
|
||||
);
|
||||
const reconciledConversation = reconcileProjectedAgentConversationVM(
|
||||
previousConversationRef.current,
|
||||
nextConversation
|
||||
);
|
||||
previousConversationRef.current = reconciledConversation;
|
||||
return reconciledConversation;
|
||||
}, [avoidGroupingEdits, conversation, detail]);
|
||||
}
|
||||
Reference in New Issue
Block a user