{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "z-ai-digest-query-tool-part",
  "title": "Z Ai Digest Query Tool Part",
  "dependencies": [
    "ai@6.0.116"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://ui.orchid.ai/r/orchid-theme.json",
    "https://ui.orchid.ai/r/z-ai-status.json"
  ],
  "files": [
    {
      "path": "registry/ui/orchid/spectrum/organisms/z-ai-chat/z-ai-digest-query-tool-part.tsx",
      "content": "\"use client\";\nimport { ZAiStatus } from \"../../atoms/z-ai-status/z-ai-status\";\nimport { mapToolUIPartToAIStatus } from \"../../atoms/z-ai-status/z-ai-status\";\nimport type { ToolUIPart } from 'ai';\ntype DigestThread = {\n    id: string;\n    sender: string;\n    subject: string;\n    summary?: string;\n};\ntype DigestResult = {\n    readyForReview: {\n        threads: DigestThread[];\n        count: number;\n    };\n    calendar?: {\n        threads: DigestThread[];\n        count: number;\n    };\n    other: {\n        threads: DigestThread[];\n        count: number;\n    };\n};\nexport function ZAiDigestQueryToolPart({ part }: {\n    part: ToolUIPart;\n}) {\n    if (part.state === 'input-streaming') {\n        return (<ZAiStatus title=\"Checking what's new...\" status={mapToolUIPartToAIStatus(part.state)}/>);\n    }\n    if (part.state === 'output-available') {\n        if (isDigestResult(part.output)) {\n            return null;\n        }\n        return <ZAiStatus title=\"Nothing new to show.\" status=\"error\"/>;\n    }\n    if (part.state === 'output-error') {\n        return (<ZAiStatus title=\"Failed to check updates\" status=\"error\" errorText={part.errorText} errorOutput={part.output}/>);\n    }\n    return null;\n}\nfunction isDigestResult(value: unknown): value is DigestResult {\n    if (typeof value !== 'object' || value === null)\n        return false;\n    const obj = value as Record<string, unknown>;\n    if (typeof obj.readyForReview !== 'object' || obj.readyForReview === null)\n        return false;\n    if (typeof obj.other !== 'object' || obj.other === null)\n        return false;\n    const rfr = obj.readyForReview as Record<string, unknown>;\n    const cal = obj.calendar as Record<string, unknown> | undefined;\n    const nc = obj.other as Record<string, unknown>;\n    const hasCalendarThreads = cal ? Array.isArray(cal.threads) : true;\n    return Array.isArray(rfr.threads) && hasCalendarThreads && Array.isArray(nc.threads);\n}\n",
      "type": "registry:ui",
      "target": "@ui/orchid/spectrum/organisms/z-ai-chat/z-ai-digest-query-tool-part.tsx"
    }
  ],
  "type": "registry:ui"
}