fix(permissions): tools MCP inter-projets exposés (idea_project_*) + contactable agent/template persisté — update_agent_contactable (application/web-server/app-tauri), defaultContactable TemplateEditor save/reopen, groupes MCP 'IdeA inter-projets' avec fallback, permissions agent Contactable — #267 (QA verte)

This commit is contained in:
2026-09-07 18:13:27 +02:00
parent 9266d121cd
commit f6101a8249
30 changed files with 632 additions and 89 deletions

View File

@ -17,7 +17,10 @@ import { useEffect, useMemo, useRef, useState } from "react";
import type { Agent, McpToolCatalogue } from "@/domain";
import { Button, Panel, cn } from "@/shared";
import { MCP_TOOL_GROUPS, mcpToolLabel } from "./mcpToolGroups";
import {
mcpToolGroupsForCatalogue,
mcpToolLabel,
} from "./mcpToolGroups";
import { useMcpToolPermissions } from "./useMcpToolPermissions";
export interface McpToolPermissionsPanelProps {
@ -243,9 +246,13 @@ function McpToolEditor({
const [pendingConfirm, setPendingConfirm] = useState(false);
const [savedFlash, setSavedFlash] = useState(false);
const [saveError, setSaveError] = useState<string | null>(null);
const toolGroups = useMemo(
() => mcpToolGroupsForCatalogue(catalogue),
[catalogue],
);
const [expandedGroups, setExpandedGroups] = useState<Record<string, boolean>>(() =>
Object.fromEntries(
MCP_TOOL_GROUPS.map((group) => [
mcpToolGroupsForCatalogue(catalogue).map((group) => [
group.id,
READ_GROUP_IDS.has(group.id) ? targetKind === "project" : true,
]),
@ -375,7 +382,7 @@ function McpToolEditor({
<h5 className="text-xs font-semibold uppercase tracking-wide text-faint">
Détail des tools
</h5>
{MCP_TOOL_GROUPS.map((group) => (
{toolGroups.map((group) => (
<ToolGroupSection
key={group.id}
group={group}