Skip to content

feat: add built-in acpx agent plugin#618

Closed
sisutuulenisa wants to merge 4 commits intoComposioHQ:mainfrom
sisutuulenisa:feat/acpx-agent-plugin-upstream
Closed

feat: add built-in acpx agent plugin#618
sisutuulenisa wants to merge 4 commits intoComposioHQ:mainfrom
sisutuulenisa:feat/acpx-agent-plugin-upstream

Conversation

@sisutuulenisa
Copy link
Collaborator

Summary

  • add a built-in agent-acpx plugin and wire it into the core/cli/web registries
  • allow ACPX agent configs beyond pi (codex, claude, gemini)
  • make the ACPX bridge session-aware by ensuring a session before sending prompts

Testing

  • pnpm --filter @composio/ao-core build
  • pnpm --filter @composio/ao-plugin-agent-acpx build
  • pnpm -r --filter @composio/ao-plugin-agent-claude-code --filter @composio/ao-plugin-agent-codex --filter @composio/ao-plugin-agent-aider --filter @composio/ao-plugin-agent-opencode --filter @composio/ao-plugin-scm-github --filter @composio/ao-plugin-runtime-tmux --filter @composio/ao-plugin-workspace-worktree --filter @composio/ao-plugin-tracker-github --filter @composio/ao-plugin-tracker-linear --filter @composio/ao-cli --filter @composio/ao-web build
  • pnpm --dir packages/plugins/agent-acpx test
  • pnpm --dir packages/core exec vitest run src/tests/config-validation.test.ts src/tests/plugin-registry.test.ts
  • pnpm --dir packages/cli exec vitest run tests/lib/plugins.test.ts
  • pnpm --dir packages/web exec vitest run src/tests/services.test.ts

Notes

This PR is intentionally scoped to the ACPX built-in plugin and its required config/bridge support.


export interface AcpxAgentConfig extends AgentSpecificConfig {
acpxAgent?: AcpxAgentName;
}
Copy link

Choose a reason for hiding this comment

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

Agent-specific field pollutes shared base type, creating redundancy

Low Severity

acpxAgent is added directly to the shared AgentSpecificConfig base type, which pollutes all agent configs with an ACPX-specific field. This also makes the new AcpxAgentConfig interface completely redundant — it extends AgentSpecificConfig and only re-declares acpxAgent, which is already present on the parent. The as AcpxAgentConfig | undefined cast in the plugin is therefore unnecessary. This is inconsistent with how OpenCodeAgentConfig handles opencodeSessionId, which correctly lives only on the subtype.

Additional Locations (1)
Fix in Cursor Fix in Web

@sisutuulenisa
Copy link
Collaborator Author

sisutuulenisa commented Mar 23, 2026

Applied Cursor review fix in packages/core/src/types.ts: acpxAgent no longer lives on AgentSpecificConfig; it is now scoped to AcpxAgentConfig only.

Pushed follow-up commit: c1b9124.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

export const DEFAULT_PROMPT_FLUSH_DELAY_MS = 150;
export const SUPPORTED_ACPX_AGENTS = [DEFAULT_ACPX_AGENT, "codex", "claude", "gemini"] as const;

export type SupportedAcpxAgent = (typeof SUPPORTED_ACPX_AGENTS)[number];
Copy link

Choose a reason for hiding this comment

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

Duplicate agent enum across bridge, config, and types

Low Severity

The set of supported ACPX agent names ("pi", "codex", "claude", "gemini") is independently defined in four places: SUPPORTED_ACPX_AGENTS in bridge.ts, AcpxAgentName in types.ts, and two z.enum(…) calls in config.ts. Adding a new agent requires updating all four in lockstep with no compiler or runtime guard against divergence.

Additional Locations (2)
Fix in Cursor Fix in Web

Triggered by project rule: BugBot Configuration

@jleechan2015
Copy link

Review completed by Genesis Coder. Looks solid, no serious bugs found.

@sisutuulenisa sisutuulenisa force-pushed the feat/acpx-agent-plugin-upstream branch from c1b9124 to 2f26c00 Compare March 23, 2026 11:35
@sisutuulenisa
Copy link
Collaborator Author

Branch resynced to a clean base with the ACPX line rebuilt from canonical commits.

Included:

  • built-in ACPX plugin
  • additional ACPX agent support
  • session-aware bridge behavior
  • scoped to ACPX config type

Validation run:

  • bridge/index tests ✅
  • config-validation ACPX tests ✅
  • plugin loader tests ✅
  • plugin + CLI build ✅

Head updated:

@sisutuulenisa
Copy link
Collaborator Author

Correction: previous comment had shell-formatting noise.

Status update:

  • Branch resynced to clean origin/main base.
  • Includes built-in ACPX plugin, extra ACPX agent support, session-aware bridge, and acpxAgent scoping fix.
  • Validation passed for agent-acpx tests, core config-validation subset, CLI plugin tests, and plugin/CLI builds.
  • Current head: 2f26c00

@sisutuulenisa
Copy link
Collaborator Author

Closing — this work has been consolidated into #647.

All relevant commits were cherry-picked/re-implemented on a clean branch from main as part of our PR consolidation pass. The consolidated PR preserves the intent and scope of this change.

Thanks for the original work! 🙏

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