Le manifeste hello-plugin était généré par un SDK obsolète/désaligné avec le schéma backend actuel (champ ideaPluginManifestVersion manquant, displayName, trustLevel, shape de contributes), ce qui faisait échouer l'installation avec « invalid input: missing field ideaPluginManifestVersion ». - SDK (manifest.ts/js, index.ts) aligné sur le schéma backend courant. - hello-plugin (exemple + fixture) régénéré avec le manifeste valide. - Base de tests fonctionnels plugins : fixture réelle versionnée (reference-minimal) + test d'installation/chargement bout en bout (plugin_install_load.rs), pour couvrir install/load/catalog depuis un dossier fixture réel. Le sous-repo git imbriqué et vide (sdk/IdeaSDK/.git, 0 commit) a été neutralisé pour que les sources du SDK soient suivies normalement dans ce dépôt plutôt que comme gitlink vide. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
1002 B
TypeScript
37 lines
1002 B
TypeScript
export interface ActivateContext {
|
|
pluginId: string;
|
|
logger: PluginLogger;
|
|
subscriptions: CommandDisposable[];
|
|
commands?: CommandRegistry;
|
|
storage?: PluginStorage;
|
|
}
|
|
|
|
export interface IdeAPluginModule {
|
|
activate(ctx: ActivateContext): void | Promise<void>;
|
|
deactivate?(): void | Promise<void>;
|
|
}
|
|
|
|
export interface PluginLogger {
|
|
debug(message: string, ...args: unknown[]): void;
|
|
info(message: string, ...args: unknown[]): void;
|
|
warn(message: string, ...args: unknown[]): void;
|
|
error(message: string, ...args: unknown[]): void;
|
|
}
|
|
|
|
export type CommandHandler = (...args: unknown[]) => unknown | Promise<unknown>;
|
|
|
|
export interface CommandRegistry {
|
|
registerCommand(commandId: string, handler: CommandHandler): CommandDisposable;
|
|
}
|
|
|
|
export interface CommandDisposable {
|
|
dispose(): void;
|
|
}
|
|
|
|
export interface PluginStorage {
|
|
get<T = unknown>(key: string): Promise<T | undefined>;
|
|
set<T = unknown>(key: string, value: T): Promise<void>;
|
|
delete(key: string): Promise<void>;
|
|
}
|
|
|