Skip to content

[Feature] Add optional ACP coding-agent package #76

Description

@scald

What problem are you trying to solve?

NOOA retains a capable InteractiveAgent, CodeAct runtime, repository tools, and host-facing events, but it has no working terminal client. PR #9 removed the previous TUI because the public commands referenced an unpublished external package and failed at runtime. Users currently need to build a custom host to use NOOA as an interactive coding agent.

No existing issue or PR mentions ACP or the Agent Client Protocol. PR #62 added external nooa_cli.commands entry points and used tui as its motivating example, which provides the extension point this proposal needs.

Proposed solution

Add an optional nooa-acp workspace distribution that:

  • hosts a CodingInteractiveAgent over the open Agent Client Protocol on stdio;
  • maps NOOA messages, tool lifecycle, usage, and cancellation events to ACP updates;
  • registers nooa acp through the entry-point mechanism added in feat(cli): let external packages add nooa subcommands via entry points #62;
  • keeps ACP dependencies out of core nooa and the default nooa-cli;
  • interoperates with separately installed ACP clients without importing or redistributing them;
  • includes deterministic protocol tests and documentation for LiteLLM-supported models.

The initial implementation supports one session per process, text prompts, resource links, stdio MCP servers, Markdown responses, CodeAct tool progress, usage, cancellation, and clean shutdown.

Alternatives considered

  • Restore a native in-repo TUI: duplicates the client interface, expands UI dependencies, and revisits the surface removed in Chore/strip tui #9.
  • Bundle a client implementation: increases dependency and release coupling instead of using the protocol boundary.
  • Use another coding agent as the backend: its agent loop would replace NOOA CodeAct, context, tools, and retries rather than expose NOOA itself.
  • Publish from a separate repository: increases release/version skew with the NOOA event and InteractiveAgent APIs.

Additional context

The ACP Python SDK is Apache-2.0. The implementation uses SDK 0.11 because 0.12 is inside the repository's seven-day dependency quarantine. Generated code and shell execution remain subject to NOOA's existing sandbox warning; the working-directory boundary is not presented as containment.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions