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>
44 lines
1.5 KiB
TypeScript
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;
|
|
}
|