Files
fusion/plugins/fusion-plugin-dependency-graph/src/dashboard-interop.d.ts
gsxdsm 29d94e0fa3 fix: drop dependency-graph plugin's use of removed stuck-task tagging
The dependency-graph plugin imported the deleted taskStuck util through its
dashboard interop shim, breaking the dashboard vite build. Remove the isStuck
gate from graph nodes, the taskStuckTimeoutMs prop threading, the taskStuck
module declaration from dashboard-interop.d.ts, and the stalled-card-as-stuck
test coverage. Covered by the existing remove-stuck-task-tagging changeset.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 15:58:58 -07:00

63 lines
2.8 KiB
TypeScript

/*
FNXC:StuckTagRemoval 2026-08-17-22:30:
The taskStuck shim was deleted with the dashboard's stuck-task tagging; the host module no longer exists.
*/
declare module "@fusion/dashboard/app/plugins/types" {
import type { ReactNode } from "react";
import type { Task, TaskDetail, TraitFlags, WorkflowStep } from "@fusion/core";
export type DetailTaskTab = "definition" | "logs" | "changes" | "comments" | "model" | "workflow" | "pr" | "retries";
export type PluginToastType = "success" | "error" | "warning" | "info";
export interface PluginDashboardViewContext {
projectId?: string;
tasks: Task[];
workflowSteps: WorkflowStep[];
openTaskDetail: (task: Task | TaskDetail, initialTab?: DetailTaskTab) => void;
/* FNXC:WorkflowLifecycleColumns 2026-07-31-15:30: mirrors the host's `PluginDashboardViewContext`. */
columnFlagsByTaskId?: ReadonlyMap<string, Partial<TraitFlags>>;
renderTaskCard?: (task: Task | TaskDetail) => ReactNode;
addToast?: (message: string, type?: PluginToastType) => void;
}
export type PluginTaskView = `plugin:${string}:${string}`;
}
declare module "@fusion/dashboard/app/components/TaskCard" {
import type { Column, Task, TaskDetail, TraitFlags } from "@fusion/core";
import type { ReactElement } from "react";
interface TaskCardProps {
task: Task;
projectId?: string;
onOpenDetail: (task: Task | TaskDetail) => void;
addToast: (message: string, type?: "success" | "error" | "info" | "warning") => void;
globalPaused?: boolean;
onUpdateTask?: (
id: string,
updates: { title?: string; description?: string; dependencies?: string[] }
) => Promise<Task>;
onArchiveTask?: (id: string) => Promise<Task>;
onUnarchiveTask?: (id: string) => Promise<Task>;
onDeleteTask?: (id: string, options?: { removeDependencyReferences?: boolean }) => Promise<Task>;
onRetryTask?: (id: string) => Promise<Task>;
onOpenDetailWithTab?: (task: Task | TaskDetail, initialTab: "changes") => void;
onOpenMission?: (missionId: string) => void;
onMoveTask?: (id: string, column: Column, optionsOrPosition?: { preserveProgress?: boolean } | number) => Promise<Task>;
lastFetchTimeMs?: number;
/* FNXC:WorkflowLifecycleColumns 2026-07-31-15:30: the prop the host card already accepts; without it
declared here a plugin-drawn card could not be given the board's traits at all. */
taskColumnFlags?: Partial<TraitFlags>;
disableDrag?: boolean;
}
export function TaskCard(props: TaskCardProps): ReactElement;
}
declare module "@fusion/dashboard/app/utils/projectStorage" {
export function getScopedItem(baseKey: string, projectId?: string): string | null;
export function setScopedItem(baseKey: string, value: string, projectId?: string): void;
export function removeScopedItem(baseKey: string, projectId?: string): void;
}