Files
fusion/plugins/fusion-plugin-quality/src/dashboard-interop.d.ts
gsxdsm c8b4e23ca4 FN-8357: show verification videos in the Quality hub
Surface executor-produced task verification videos in the top-level Quality hub.

- Fetch review-artifact settings and video artifacts per selected project.
- Render tokenized inline videos with source-task navigation and responsive states.
- Add host interop aliases, coverage, documentation, and a minor changeset.

Files changed:
 .changeset/FN-8357-quality-verification-videos.md  |   7 +
 docs/settings-reference.md                         |   2 +-
 docs/workflow-steps.md                             |   2 +-
 packages/dashboard/tsconfig.app.json               |   1 +
 packages/dashboard/vite.config.ts                  |   2 +
 packages/dashboard/vitest.config.ts                |   2 +
 plugins/fusion-plugin-quality/package.json         |   1 +
 .../dashboard-view-verification-videos.test.tsx    | 131 ++++++++++++++++++
 .../src/dashboard-interop.d.ts                     |  20 +++
 .../fusion-plugin-quality/src/dashboard-view.css   |  87 ++++++++++++
 .../fusion-plugin-quality/src/dashboard-view.tsx   | 151 +++++++++++++++++++--
 plugins/fusion-plugin-quality/tsconfig.json        |   1 +
 plugins/fusion-plugin-quality/vitest.config.ts     |   8 ++
 pnpm-lock.yaml                                     | 135 +++++++++++++++++-
 14 files changed, 532 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-8357
Fusion-Task-Lineage: 728a5417-87ed-4203-850d-8ee108206766
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-18 19:51:58 -07:00

44 lines
1.5 KiB
TypeScript

// Ambient host interop (no runtime dependency on @fusion/dashboard).
// Vite aliases resolve these to the real dashboard sources at build time.
// FNXC:Quality 2026-07-19-12:00: The Quality plugin consumes existing artifact media through this narrow host bridge so inline video elements receive the tokenized URL they require without importing dashboard client APIs.
// Mirrors fusion-plugin-compound-engineering/src/dashboard-interop.d.ts.
declare module "@fusion/dashboard/app/plugins/types" {
import type { Task } from "@fusion/core";
export interface PluginDashboardViewContext {
projectId?: string;
tasks: Task[];
openTaskDetail: (task: Task, initialTab?: string) => void;
}
}
declare module "@fusion/dashboard/app/api/task-content" {
export type ArtifactType = "document" | "image" | "video" | "audio" | "other";
export interface ArtifactWithTask {
id: string;
type: ArtifactType;
title: string;
taskId?: string;
authorId?: string;
authorType?: string;
}
export function artifactMediaUrlWithToken(id: string, projectId?: string): string;
}
declare module "@fusion/dashboard/app/components/ViewHeader" {
import type { ComponentType, ReactNode } from "react";
import type { LucideProps } from "lucide-react";
export interface ViewHeaderProps {
icon: ComponentType<LucideProps>;
title: string;
actions?: ReactNode;
titleId?: string;
}
export function ViewHeader(props: ViewHeaderProps): ReactNode;
}