Initial curated Unraid-AppOps-Gateway source from 3bd6f6fee310125bfbb4d4650389a817f498724d

This commit is contained in:
Public Source Publisher committed 2026-10-01 01:35:57 +02:00
commit 1dfbca08a1
528 files changed
+131054

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
export type SafetyActionFeedbackTone = "success" | "warning" | "error";
export interface SafetyActionFeedbackLink {
label: string;
href: string;
}
export interface SafetyActionFeedback {
tone: SafetyActionFeedbackTone;
title: string;
description: string;
links: SafetyActionFeedbackLink[];
}
export interface SafetyPlanResult {
success: boolean;
status: string;
href?: string;
executable?: boolean;
planId?: string | null;
}
export const buildSafetyStateFeedback = (
kind: "finding" | "recommendation",
id: string,
status: string,
): SafetyActionFeedback => ({
tone: "success",
title: kind === "finding" ? "Finding status bijgewerkt" : "Recommendation verborgen",
description: `${id} staat nu op ${status}. Dit is metadata-only governance; er is geen externe connectoractie uitgevoerd.`,
links: [
{ label: "Open audit", href: `/audit?query=${encodeURIComponent(id)}` },
{ label: "Refresh safety", href: "/safety" },
],
});
export const buildSafetyPlanFeedback = (
recommendationId: string,
result: SafetyPlanResult,
): SafetyActionFeedback => {
if (!result.success) {
return {
tone: "error",
title: "Remediation plan niet aangemaakt",
description: `${recommendationId} kon niet naar een niet-uitvoerend remediation plan worden omgezet.`,
links: [{ label: "Open planner", href: "/ai/remediation-planner" }],
};
}
return {
tone: result.executable ? "warning" : "success",
title: "Remediation plan gekoppeld",
description: result.executable
? "Plan is aangemaakt. Controleer execution-instellingen voordat je iets uitvoert."
: "Plan is aangemaakt als niet-uitvoerend advies. Er zijn geen connector-, policy- of infrastructuurmutaties uitgevoerd.",
links: [
{ label: "Open plan", href: result.href || "/ai/remediation-planner" },
{ label: "Open audit", href: `/audit?query=${encodeURIComponent(result.planId || recommendationId)}` },
],
};
};
export const buildSafetyActionErrorFeedback = (label: string, error: unknown): SafetyActionFeedback => ({
tone: "error",
title: `${label} mislukt`,
description: error instanceof Error ? error.message : "Safety actie kon niet worden verwerkt.",
links: [{ label: "Open audit", href: "/audit" }],
});