fix(rectification): isolate receipt activity after staging sync
Staging Backend Quality Gate / validate (push) Failing after 11m36s
Staging Backend Quality Gate / publish (push) Has been skipped

This commit is contained in:
Jesse
2026-08-11 18:22:30 +08:00
parent b04dd1a9e0
commit 5dd0ab66a9
2 changed files with 24 additions and 7 deletions
@@ -57,7 +57,8 @@ type RectificationAgenticChatProps = Readonly<{
type RenderMessage = ChatMessageView & {
renderKey: string;
activity?: readonly string[];
/** V9 execution-receipt steps; separate from shared consultation activity. */
receiptActivity?: readonly string[];
receiptStatus?: string;
};
@@ -119,7 +120,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
text: turn.text ?? "",
renderKey: key,
state: turn.status === "completed" ? "settled" : "thinking",
activity: activityFromReceipt(turn.receipt),
receiptActivity: activityFromReceipt(turn.receipt),
receiptStatus: turn.receipt?.status,
}];
}
@@ -212,7 +213,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
...(action === "message"
? [{ role: "user", text: trimmed, renderKey: userRenderKey, state: "settled" } satisfies RenderMessage]
: []),
{ role: "assistant", text: "", renderKey: assistantRenderKey, state: "thinking", activity: [] },
{ role: "assistant", text: "", renderKey: assistantRenderKey, state: "thinking", receiptActivity: [] },
]);
setDraft("");
@@ -293,7 +294,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
activitySet.add(event.type);
liveActivity = [...liveActivity, labelForPhase(event.type)];
setMessages((current) => current.map((message) => message.renderKey === assistantRenderKey
? { ...message, activity: liveActivity }
? { ...message, receiptActivity: liveActivity }
: message));
}
}
@@ -304,7 +305,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
const succeeded = completed && !streamFailed && Boolean(parsed.text);
setMessages((current) => succeeded
? current.map((message) => message.renderKey === assistantRenderKey
? { ...message, text: parsed.text, suggestions: parsed.suggestions, state: "settled", activity: liveActivity }
? { ...message, text: parsed.text, suggestions: parsed.suggestions, state: "settled", receiptActivity: liveActivity }
: message)
: current.filter((message) => message.renderKey !== assistantRenderKey));
setSuggestions(succeeded ? parsed.suggestions : []);
@@ -386,11 +387,11 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
{messages.map((message) => (
<div key={message.renderKey} className="rectification-message-wrap">
<ChatMessageRow message={message} />
{message.activity && message.activity.length > 0 && (
{message.receiptActivity && message.receiptActivity.length > 0 && (
<details className="rectification-activity">
<summary></summary>
<ol>
{message.activity.map((step) => <li key={step}>{step}</li>)}
{message.receiptActivity.map((step) => <li key={step}>{step}</li>)}
</ol>
</details>
)}