Skip to content

feat(cli): add Oh My Pi (omp) as 44th client surface - #1228

Closed
DavidHLP wants to merge 1 commit into
DeusData:mainfrom
DavidHLP:main
Closed

feat(cli): add Oh My Pi (omp) as 44th client surface#1228
DavidHLP wants to merge 1 commit into
DeusData:mainfrom
DavidHLP:main

Conversation

@DavidHLP

Copy link
Copy Markdown

What does this PR do?

Summary

Add Oh My Pi (omp) as a STABLE, auto-detected client surface with full four-layer
integration: MCP server registration, durable instructions, skill, and three direct-MCP
tiered subagent profiles (Scout/Verify/Auditor).

This addresses the client-integration side of #649. The resources/list protocol
compatibility issue described in #649 was addressed separately in #958.

Refs #649

What changed

  • Schema (agent_clients.h): CBM_AGENT_CLIENT_OMP enum value
  • Profile (agent_clients.c): stability CBM_AGENT_STABLE, capabilities
    MCP | INSTRUCTIONS | SKILL | AGENT, marker ~/.omp/agent, resolve path
    ~/.omp/agent/mcp.json, json_client: true, type: "stdio"
  • Dialect (agent_profiles.h/.c): CBM_GRAPH_DIALECT_OMP, direct-capable,
    tool prefix mcp__codebase_memory_mcp_, render includes tools: [read, grep, glob],
    read-summarize: false, autoloadSkills: [codebase-memory]
  • Install/uninstall (cli.c): install/uninstall_omp_durable_context,
    legacy_omp_verify_agent_content, wired into registry loops
  • Docs: 43→44 surfaces in README, npm README, index.html, llms.txt, main.c

Scope

Included: omp client surface integration, docs sync, test coverage.

Not included: resources/list protocol fix (addressed in #958), other MCP
interface changes, other client modifications.

Tests

make -f Makefile.cbm test
Result: PASS — 6224 passed, 1 skipped

make -f Makefile.cbm lint-ci
Result: PASS — CI linters passed (cppcheck, clang-format, NOLINT whitelist)

make -f Makefile.cbm security
Result: PASS — All security checks passed (75 files)

git diff --check
Result: PASS — no whitespace errors

Checklist

  • Every commit is signed off (git commit -s) — DCO present on f80b3c2
  • Tests pass locally (make -f Makefile.cbm test)
  • Lint passes (make -f Makefile.cbm lint-ci)
  • New behavior is covered by a test

Add omp (Oh My Pi) as a STABLE, detected client surface with full
four-layer integration: MCP server registration, durable instructions,
skill, and three direct-MCP tiered subagent profiles (Scout/Verify/
Auditor). This matches Claude Code's integration depth — omp subagents
have direct MCP access (confirmed via ablation testing), unlike
parent-handoff-only clients (Pochi, Cursor, Rovo, Augment).

Schema (agent_clients.h):
  New CBM_AGENT_CLIENT_OMP enum value, positioned before COUNT.

Profile (agent_clients.c):
  - stability: CBM_AGENT_STABLE (auto-detected, auto-installed)
  - capabilities: MCP | INSTRUCTIONS | SKILL | AGENT
    No HOOK — omp's context event is fire-once advisory only; the
    recommended upstream path is skill + agents + MCP, not TS hooks.
  - detection_command: "omp" (specific enough per existing clients)
  - marker: ~/.omp/agent (omp-managed config root)
  - resolve_path: ~/.omp/agent/mcp.json
  - json_client: true (uses standard mcpServers JSON edit path)
  - agent_json_canonical: added to type:"stdio" branch alongside
    GitLab Duo and Visual Studio (omp's schema expects this field)

Dialect (agent_profiles.h/.c):
  New CBM_GRAPH_DIALECT_OMP, direct-capable (not in handoff-only list).
  - tool prefix: "mcp__codebase_memory_mcp_" (single underscore,
    hyphens→underscores — verified at runtime via omp device inventory)
  - render: YAML frontmatter with tools (read/grep/glob + tier-specific
    MCP tool allowlist), read-summarize: false (exact source verification
    for evidence tiers — omp's read returns structural summaries by
    default), autoloadSkills: [codebase-memory] (subagents start blank)

Install/uninstall (cli.c):
  - install_omp_durable_context: writes AGENTS.md + skill +
    3 tiered agent profiles to ~/.omp/agent/
  - uninstall_omp_durable_context: removes managed block + skill +
    tiered profiles
  - legacy_omp_verify_agent_content: migration source for prior installs
  - Wired into install_agent_client_registry and
    uninstall_agent_client_registry loops

Design decisions (documented for reviewers):
  1. No HOOK capability: omp's tool_call event can only block/pass (no
     augmentation channel like Claude's additionalContext). A context-
     event nudge was tested but is advisory-only and excluded from the
     upstream path to keep the PR minimal.
  2. read-summarize: false: omp's read tool returns structural summaries
     by default; Tier 2/3 require exact snippets for material claims.
  3. autoloadSkills: omp subagents start with no conversation history;
     without autoload the skill decision matrix is never loaded.
  4. Direct-capable (not handoff): ablation testing confirmed omp
     subagents can call mcp__* tools directly. write→xd:// dispatch
     does NOT work in subagents ("xd:// is not mounted in this session").

Test coverage:
  - test_agent_clients.c: omp in stable_ids (19 entries), capabilities
    array, json_schemas (type:stdio assertion), foreign_entries
  - test_agent_profiles.c: omp in direct_dialects array, direct-capable
    assertion, dedicated test verifying direct profile has
    mcp__codebase_memory_mcp_ prefix + read-summarize + autoloadSkills,
    and handoff profile excludes MCP tools
  - test_cli.c: required_agents updated to 44, all 43→44 / 37→38 string
    contracts updated across README/npm/index.html/llms.txt/main.c

Build: scripts/build.sh passes (exit 0).
Tests: scripts/test.sh passes (exit 0, all suites green).
Lint: scripts/lint.sh has one pre-existing error in pass_lsp_cross.h
(parameter name mismatch imp_keys/imp_vals vs imp_names/imp_qns),
unrelated to this change.

Signed-off-by: DavidHLP <lysf15520112973@163.com>
@DavidHLP
DavidHLP requested a review from DeusData as a code owner July 23, 2026 11:39
@DavidHLP DavidHLP closed this Jul 23, 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