Files
IdeA/sdk/IdeaSDK/src/runtime.ts
Blomios 6270f98e54 fix(plugin-sdk): aligne le manifeste hello-plugin sur le schéma backend + fixture de test
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>
2026-07-29 10:00:58 +02:00

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>;
}