Files
IdeaSDK/examples/hello-plugin
Blomios 31925dc1ce docs(sdk): éclate et étend la documentation SDK par sujet
Remplace le README monolithique par un point d'entrée vers des pages dédiées
(manifest, activation/contexte, menus, commandes/feedback, layouts React,
fenêtres, services, packaging/distribution) pour couvrir #142-#144 et
faciliter la navigation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-04 00:39:30 +02:00
..

Hello Plugin

Installable IdeA plugin example rebuilt from the public SDK types.

It exercises the current plugin primitives end to end:

  • top-level menu: Hello Plugin;
  • menu entry: hello-plugin;
  • command: hello-plugin, returning readable feedback: { status: "launched", taskId, state, message } when it starts a background task, or { status: "skipped", reason, message } when a precondition is not met;
  • layout contribution: hello-plugin.hello-world, rendered by a React/JSX component with hooks.
  • plugin window: the menu command opens the layout through ctx.services.windows.open(...) when services are available.
  • plugin-owned storage: activation count, command run count and initialization flag;
  • tooling capability: logs the focused workspace project when ctx.services is available.

The source is intentionally split across multiple TypeScript modules:

  • src/index.ts is the manifest entrypoint and imports relative ESM modules;
  • src/constants.ts owns shared command/layout identifiers;
  • src/core/layout.tsx and src/core/workspace.ts hold feature logic.
  • src/core/storage.ts keeps plugin-owned counters and flags in ctx.storage.

The build uses plain tsc; it does not bundle the plugin into one file. The archive includes all compiled dist/**/*.js files so IdeA can load dist/index.js and serve its package-relative imports through idea-plugin://. React and ReactDOM are peer dependencies resolved to the host instance at runtime. Other runtime imports from node_modules are outside this contract: vendor them as relative files or bundle them into the plugin output before packaging.

npm run typecheck:examples
npm run package:hello-plugin

The installable archive is emitted at examples/hello-plugin/build/hello-plugin-0.1.0.zip. It contains idea-plugin.json at the ZIP root and the compiled multi-file ESM output under dist/, including dist/index.js, matching the manifest main field.

Diagnostics

During activation the plugin logs:

  • whether the command and layout runtime registries are available;
  • whether plugin-owned storage is available;
  • activation count and initialization state stored through ctx.storage;
  • successful registration of the hello-plugin command;
  • successful registration of the hello-plugin.hello-world layout;
  • availability of the workspace service from the tooling runtime capability;
  • best-effort workspace watch setup, including a non-fatal log when unavailable;
  • the first layout render, including project/node identifiers;
  • plugin window open/focus results from ctx.services.windows.open(...).

During command invocation the plugin logs and returns structured feedback for programmatic callers. The current human menu-click UI does not guarantee display of that return value.

  • skipped command feedback when no project or no helloPlugin.ownerAgentId is available;
  • launched background command feedback when helloPlugin.ownerAgentId is configured;

These messages are intentionally small and stable so installation, bundle import, activation and layout rendering failures can be separated quickly in IdeA logs/devtools.