feat(plugins): paramètres projet plugins + attribution skills/tools aux agents — #282 (manifeste accepte contributes.skills IdeA-native multi-harness; store .ideai/project-plugins.json v1: enable plugin par projet + assignments skills/tools par agent; refs + use cases settings/assign/unassign; resolver skills pour idea_skill_read et injection catalogue lancement agent; permissions MCP dynamiques projetées par harness Claude Code/Codex/OpenCode; tombstones uninstall, hot reload recalcule catalogue et marque assignments cassés; frontend: Settings projet Plugins, détail capabilities, attribution agent, catalogue permissions; bump pointeur IdeaSDK 6eb8db3; QA verte: cargo test -p application, project_plugin_settings 3/3, dto_plugins 2/2, structured_launch_d3 26/26, catalogue mcp 7/7, frontend 5 tests ProjectPluginSettings/plugin, npm build frontend)
This commit is contained in:
@ -1856,6 +1856,8 @@ export type PluginLifecycleState =
|
||||
|
||||
/** Counts of what a plugin declares, shown in the admin list (carnet §5). */
|
||||
export interface PluginContributionSummary {
|
||||
/** Agent skills shipped by the plugin. Absent on older backend DTOs. */
|
||||
skills?: number;
|
||||
topLevelMenus: number;
|
||||
menuItems: number;
|
||||
layouts: number;
|
||||
@ -1917,6 +1919,8 @@ export interface PluginUninstallResult {
|
||||
|
||||
/** Contribution declarations for one plugin, as consumed by the runtime loader. */
|
||||
export interface PluginContributionDto {
|
||||
/** Read-only, package-relative skills exposed to project agents. */
|
||||
skills?: PluginSkillContribution[];
|
||||
menus: PluginTopLevelMenuContribution[];
|
||||
menuItems: PluginMenuItemContribution[];
|
||||
slashCommands?: PluginSlashCommandContribution[];
|
||||
@ -1924,6 +1928,66 @@ export interface PluginContributionDto {
|
||||
mcpServers: PluginMcpServerSummary[];
|
||||
}
|
||||
|
||||
/** One agent skill declared by an IdeA plugin manifest. */
|
||||
export interface PluginSkillContribution {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
kind: SkillKind;
|
||||
path: string;
|
||||
}
|
||||
|
||||
/** Validated plugin manifest returned by the project-plugin settings catalogue. */
|
||||
export interface ProjectPluginManifest {
|
||||
ideaPluginManifestVersion: number;
|
||||
id: string;
|
||||
displayName: string;
|
||||
publisher?: string;
|
||||
version: string;
|
||||
description?: string;
|
||||
engineIdea?: string;
|
||||
main: string;
|
||||
icon?: string;
|
||||
trustLevel: "full";
|
||||
capabilities: Array<"ui" | "mcp" | "tooling">;
|
||||
activationScope: "app" | "project";
|
||||
contributes: PluginContributionDto;
|
||||
}
|
||||
|
||||
export interface ProjectPluginActivation {
|
||||
pluginId: string;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export interface PluginSkillRef {
|
||||
pluginId: string;
|
||||
skillId: string;
|
||||
}
|
||||
|
||||
export interface PluginToolRef {
|
||||
pluginId: string;
|
||||
serverId: string;
|
||||
toolName: string;
|
||||
}
|
||||
|
||||
export interface AgentPluginAssignments {
|
||||
agentId: string;
|
||||
skills: PluginSkillRef[];
|
||||
tools: PluginToolRef[];
|
||||
}
|
||||
|
||||
export interface ProjectPluginSettings {
|
||||
version: number;
|
||||
plugins: ProjectPluginActivation[];
|
||||
agents: AgentPluginAssignments[];
|
||||
}
|
||||
|
||||
/** Project settings plus the currently installed global plugin manifests. */
|
||||
export interface ProjectPluginSettingsView {
|
||||
settings: ProjectPluginSettings;
|
||||
installed: ProjectPluginManifest[];
|
||||
}
|
||||
|
||||
/** One entry of `plugin_list_runtime_contributions` (mirror of `PluginRuntimePluginDto`). */
|
||||
export interface PluginRuntimePlugin {
|
||||
id: string;
|
||||
@ -2266,5 +2330,11 @@ export interface CustomPluginLayoutCell {
|
||||
export interface PluginMcpServerSummary {
|
||||
id: string;
|
||||
displayName: string;
|
||||
command?: string;
|
||||
args?: string[];
|
||||
env?: Array<[string, string]>;
|
||||
cwd?: string;
|
||||
transport?: "stdio";
|
||||
autoStart?: boolean;
|
||||
allowAbsoluteCommand?: boolean;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user