Z ZPI 文档 v0.3.8
介绍页

源码

packages/ui/src/components/CompactionDivider.tsx

tsx34 行查看原文
// Ported from ZCode v4/ConversationRowView.tsx MarkerDividerRow (Apache-2.0).
import { Archive } from "lucide-react";
import type { CompactionView } from "../types.ts";
import { userErrorMessage } from "../user-error.ts";

export function CompactionDivider({ marker }: { marker: CompactionView }) {
  const running = marker.status === "running";
  const label = {
    running: "正在压缩上下文",
    completed: marker.origin === "auto" ? "上下文已自动压缩" : "上下文已压缩",
    aborted: "上下文压缩已中断",
    interrupted: "上下文压缩已中断",
    error: "上下文压缩失败",
    noop: "上下文已是最新,无需压缩",
  }[marker.status];
  return (
    <div
      className="compaction-divider"
      data-testid="compaction-divider"
      data-status={marker.status}
      data-origin={marker.origin}
      role="status"
      title={marker.error ? userErrorMessage(marker.error) : undefined}
    >
      <span aria-hidden="true" className="compaction-line" />
      <span className="compaction-label">
        {!running && <Archive size={14} aria-hidden="true" />}
        <span className={running ? "thinking-label-streaming" : undefined}>{label}</span>
      </span>
      <span aria-hidden="true" className="compaction-line" />
    </div>
  );
}