Skip to content

feat: introduce portable plugin engine V2 - #322

Merged
Devin-AXIS merged 2 commits into
mainfrom
agent/plugin-engine-v2
Aug 15, 2026
Merged

feat: introduce portable plugin engine V2#322
Devin-AXIS merged 2 commits into
mainfrom
agent/plugin-engine-v2

Conversation

@Devin-AXIS

Copy link
Copy Markdown
Owner

What changed

  • introduces a shared, engine-neutral plugin package V2 contract and server adapter boundary
  • moves common package capabilities into top-level skills/ and mcp/, while keeping OpenCode-specific assets under engines/opencode/
  • migrates the maintained example packages and documentation to the V2 manifest
  • keeps package-owned Skills and MCP services grouped inside their plugin package in the Extensions UI
  • removes the pre-release V1 lifecycle compatibility path so the active implementation is V2-only

Why

The previous package shape exposed OpenCode-specific directories as the platform contract. This change makes iPolloWork's capability package the stable contract and leaves each agent engine behind an adapter, allowing future engines without changing the product-facing plugin model.

It also fixes the regression where package relationships could be empty and package-owned capabilities such as Figma or Notion appeared as standalone extensions.

Compatibility

Pre-release V1 local lifecycle state is intentionally not migrated. Existing test installations can reset or reinstall their local plugin packages; fresh state starts directly on schema V2.

Validation

  • server plugin lifecycle tests: 15 passed, 145 expectations
  • app extension projection tests: 18 passed, 117 expectations
  • server and app TypeScript checks passed
  • maintainability audit passed with no warnings
  • git diff --check passed
  • live development runtime health passed on v0.21.1
  • authenticated package and catalog requests returned 200; 11 package cards rendered without flattening package-owned Skills

@Devin-AXIS
Devin-AXIS merged commit e6c8b5d into main Aug 15, 2026
0 of 3 checks passed

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

Copy link
Copy Markdown

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: 825b9e94b0

ℹ️ 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".

Comment on lines +147 to +148
for (const spec of currentSpecs) {
if (!input.enabled || !nextSpecSet.has(spec)) await removePlugin(input.config, input.workspaceId, spec);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve shared package-name registrations

When a packageName capability matches a plugin already registered through the plugins API or by another package, installation merely adopts the existing normalized spec because addPlugin deduplicates it, but disabling, updating, or uninstalling this package unconditionally calls removePlugin, which deletes that shared registration (plugins.ts:89-107). The original owner then silently loses its runtime plugin; track ownership/reference counts or reject colliding package-name capabilities before removing them.

Useful? React with 👍 / 👎.

@Devin-AXIS
Devin-AXIS deleted the agent/plugin-engine-v2 branch August 15, 2026 10:57
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.

2 participants