Skip to content

✨ feat: migrate tools and channels to subprocess plugins#72

Open
vaayne wants to merge 22 commits intomainfrom
feat/plugin-runtime-migration
Open

✨ feat: migrate tools and channels to subprocess plugins#72
vaayne wants to merge 22 commits intomainfrom
feat/plugin-runtime-migration

Conversation

@vaayne
Copy link
Copy Markdown
Owner

@vaayne vaayne commented Mar 28, 2026

Implements the full plugin runtime migration slice for tools and channels.

What changed:

  • Added the subprocess plugin foundation: manifests, protocol types, catalog discovery, client lifecycle, and restartable supervision.
  • Migrated built-in tools (read, bash, edit, write, webfetch) onto the subprocess runtime through the dedicated anna-plugin helper.
  • Migrated Telegram, QQ, Feishu, and Weixin onto subprocess channel plugins with restartable host adapters.
  • Added runtime plugin bindings via the new runtime_plugins setting so tool and channel slots can be rebound by plugin ID without affecting JS plugins.
  • Added anna plugin runtime list and anna plugin runtime bind for operator visibility and binding control.
  • Preserved the existing JS plugin system and documented the new boundary between JS plugins and subprocess runtime plugins.

Verification:

  • mise x -- go test ./...
  • mise run release:check

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7a6af93d88

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

store: store,
authStore: authStore,
engine: engine,
linkCodes: auth.NewLinkCodeStore(),
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use shared link-code store for channel plugins

Initialize channel plugins with a process-local auth.NewLinkCodeStore() here makes /link <code> unusable after this migration: admin link codes are generated in the gateway process (admin.Server.generateLinkCode), but channel handlers now consume codes in a different process with a different in-memory store, so valid codes are always treated as invalid. This breaks account linking for all subprocess-backed channels unless link codes are moved to shared storage or bridged over IPC.

Useful? React with 👍 / 👎.

@vaayne vaayne changed the title ✨ feat: migrate channels to subprocess plugins ✨ feat: migrate tools and channels to subprocess plugins Mar 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant