feat(cli): add Oh My Pi (omp) as 44th client surface#1229
Conversation
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>
|
Thanks for the comprehensive integration work. Before product-direction approval, the current head has two concrete configuration risks: it hardcodes |
|
Thanks — understood. I’ll pause implementation until the product direction on OMP auto-installation is decided. If the integration is accepted, I’ll revise it to:
I won’t push further implementation changes until that direction is confirmed. Thanks for calling out these risks. |
|
Thanks, and sorry for the slow first response. Queued for review. Mechanically clean: MERGEABLE with 28 green checks across +139/-29 in 13 files. Being straight with you about the review question: adding a 44th client surface is a scope decision rather than a correctness one. The implementation being clean does not by itself settle whether the project wants another integration target to maintain, and that call is the maintainers rather than mine to make in triage. Mentioning it now rather than after a long silence. |
Signed-off-by: DavidHLP <lysf15520112973@163.com>
|
@DeusData |
Signed-off-by: DavidHLP <lysf15520112973@163.com>
Summary
~/.omp/agent/mcp.jsonusing the standardmcpServersJSON path withtype: "stdio"mcp__codebase_memory_mcp_tool names, exact-source reads (read-summarize: false), and automatic loading of thecodebase-memoryskillllms.txt, and CLI helpRefs #649.
Install / Uninstall
OMP is detected automatically when its command or
~/.omp/agentmarker is present.The OMP integration manages:
Test plan
make -f Makefile.cbm test— 6224 passed, 1 skippedmake -f Makefile.cbm lint-ci— CI linters passed (cppcheck, clang-format, NOLINT whitelist)make -f Makefile.cbm security— all security checks passed (75 files)git diff --check— no whitespace errorsChanges (13 files)
src/cli/agent_clients.hCBM_AGENT_CLIENT_OMPsrc/cli/agent_clients.ctype: "stdio"schemasrc/cli/agent_profiles.hCBM_GRAPH_DIALECT_OMPsrc/cli/agent_profiles.csrc/cli/cli.csrc/main.ctests/test_agent_clients.ctests/test_agent_profiles.cread-summarize, skill autoloading, and handoff behaviortests/test_cli.cREADME.mdpkg/npm/README.mddocs/index.htmldocs/llms.txtDesign notes
mcp__*tools directlytool_callcontext event is advisory and does not provide a safe augmentation channelread-summarize: falsekeeps Tier 2/3 evidence grounded in exact source rather than structural summariesautoloadSkills: [codebase-memory]is required because OMP subagents start without parent conversation historyChecklist
git commit -s) — DCO present onf80b3c2make -f Makefile.cbm test)make -f Makefile.cbm lint-ci)