workspace/ files existed on disk but were not included in previous incremental commit, causing git to record them as deleted. Re-adding all workspace card components, AgentWorkspace, ActivityTimeline, and WorkspaceCardRenderer to properly track them. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
"use client";
|
|
import { BookOpen } from "lucide-react";
|
|
|
|
interface KnowledgeResult {
|
|
title: string;
|
|
category: string;
|
|
snippet: string;
|
|
}
|
|
|
|
interface KnowledgeResultCardProps {
|
|
query: string;
|
|
total: number;
|
|
results: KnowledgeResult[];
|
|
}
|
|
|
|
export function KnowledgeResultCard({ query, total, results }: KnowledgeResultCardProps) {
|
|
return (
|
|
<div className="rounded-xl border border-[var(--gem-border)] bg-[var(--gem-surface)] p-4">
|
|
<div className="flex items-center gap-2 mb-3">
|
|
<BookOpen size={15} className="text-[var(--gem-blue,#4285f4)]" />
|
|
<span className="text-sm font-medium text-[var(--gem-text)]">知识库检索</span>
|
|
<span className="ml-auto text-xs text-[var(--gem-text-muted)] bg-[var(--gem-surface-2)] px-2 py-0.5 rounded-full">
|
|
{total} 条结果
|
|
</span>
|
|
</div>
|
|
{query && (
|
|
<p className="text-xs text-[var(--gem-text-muted)] mb-3">查询:{query}</p>
|
|
)}
|
|
<div className="space-y-3">
|
|
{results.map((r, i) => (
|
|
<div key={i} className="border-t border-[var(--gem-border)] pt-2 first:border-0 first:pt-0">
|
|
<div className="flex items-start gap-2">
|
|
<span className="text-xs text-[var(--gem-text)] font-medium leading-snug flex-1">{r.title}</span>
|
|
{r.category && (
|
|
<span className="text-[10px] text-[var(--gem-text-muted)] bg-[var(--gem-surface-2)] px-1.5 py-0.5 rounded flex-shrink-0">{r.category}</span>
|
|
)}
|
|
</div>
|
|
{r.snippet && (
|
|
<p className="text-xs text-[var(--gem-text-muted)] mt-1 leading-relaxed line-clamp-2">{r.snippet}</p>
|
|
)}
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|