feat: internalize native agent tool platform capabilities

Analysed against 7bb58e4910 files changedby 2233admin
Open PR on GitHub

Change-risk score

9.9out of 10Elevated
Repository health
7.6to8.4base against this head

This change sits in the top third of this repository's own risk distribution, the band worth reviewing closely.

The largest health movement is in lib.rs, down 0.3. Nothing outside this PR depends on a contract it changed.

Files changed
10
in this diff
Contracts changed
0
removed or signature
Outside callers
0
not in this diff
Findings added
129
2 resolved

Blast radius on the repo map

Every file in the repository, grouped into its own directories and sized by lines. The ones this PR changes are lit, and everything that imports them is marked.

cratesomc-autoresear…omc-cliomc-contextomc-git-provid…omc-hooksomc-hostomc-hudomc-installeromc-interopomc-mcpomc-notificationsomc-sharedomc-skillsomc-teamsrcsrcsrcsrcsrcsrcsrcsrcsrcsrcsrcsrctestssrcclaudecodexelementsmemoryroutingtoolstypesagentsbackground
changed, health fellchanged, health rosechanged, health heldimports a changed fileuntouchedchanged by this PR

Drawing 231 of 280 files at a readable size, grouped by directory and sized by lines of code. 10 changed here reach 9 more by import. 49 are too small to see at this width, which is what the frame below is for.

Inside crates

omc-autoresearchomc-cliomc-contextomc-git-provideromc-hooksomc-hostomc-hudomc-installeromc-interopomc-mcpomc-sharedomc-skillsomc-teamsrcsrcsrcsrcsrcsrcsrcsrcsrcsrcsrcclaudecodexelementsroutingtoolsagentsbackgroundcommunica…runti…prd.rsdispatch.rscon…rule…gi…gi…git…lib.…co…ev…regi…ca…config.rsin…installer.rsmcp_bridg…omx_team_…share…lib.rsma…no…memory_t…pr…state_too…resilience…ex…loade…template…regi…agent_…dispat…forbid…agent_…fault_…govern…observability.rsmain.rslib.rstask_graph.…phase_contr…runtimes.rstrackers.rsusa…worker_hea…work_steal…mo…mo…cost.rsprompt_time.…rat…token_u…todos…paths.rsreasoning…rule…rou…sc…sign…te…ty…lsp_tools.rsme…no…state…hooks.rsteam.…ralp…ralp…ro…manager…me…

261 files, 6 changed by this PR and 9 that import one. Click any directory above to frame it instead.

Changed

What this PR added, and what it took away

Introduced findings are the ones inside the lines this PR added, not the file's existing ones. The resolved column is the only place in the product that lists them.

Introduced (129)
  • criticalnested complexity
    crates/omc-cli/src/dispatch/tool.rs:13

    run_tool_value nests 7 levels deep

  • criticalcomplex method
    crates/omc-shared/src/workflow_contract.rs:137

    next_stage has cyclomatic complexity 33

  • criticallow cohesion
    crates/omc-hooks/src/registry.rs:63

    HookRegistry has low cohesion (LCOM4=5): its 21 methods split into 5 groups that share no fields or calls

  • criticallarge method
    crates/omc-cli/src/dispatch/tool.rs:13

    run_tool_value is 346 lines long

  • criticalcomplex method
    crates/omc-cli/src/dispatch/tool.rs:13

    run_tool_value has cyclomatic complexity 35

  • highnested complexity
    crates/omc-cli/src/dispatch/tool/control.rs:3

    run_control_tool nests 5 levels deep

  • highcomplex method
    crates/omc-shared/src/hash_edit.rs:148

    validate has cyclomatic complexity 15

  • highlow cohesion
    crates/omc-mcp/src/tool_registry.rs:86

    McpToolRegistry has low cohesion (LCOM4=4): its 11 methods split into 4 groups that share no fields or calls

  • highlow cohesion
    crates/omc-python/src/session.rs:132

    PythonReplService has low cohesion (LCOM4=3): its 11 methods split into 3 groups that share no fields or calls

  • highlow cohesion
    crates/omc-shared/src/config/paths.rs:44

    OmcPaths has low cohesion (LCOM4=6): its 13 methods split into 6 groups that share no fields or calls

  • highlow cohesion
    crates/omc-shared/src/operation_contract.rs:297

    ArtifactRef has low cohesion (LCOM4=3): its 5 methods split into 3 groups that share no fields or calls

  • highlarge method
    tests/host-consumer/consumer.py:323

    run_mcp is 179 lines long

  • highlarge method
    tests/host-consumer/consumer.py:104

    run_cli is 171 lines long

  • highcomplex method
    tests/host-consumer/consumer.py:323

    run_mcp has cyclomatic complexity 18

  • mediumnested complexity
    crates/omc-cli/src/dispatch/host.rs:77

    run_setup_host nests 4 levels deep

  • mediumnested complexity
    crates/omc-cli/src/dispatch/host.rs:20

    run_doctor nests 4 levels deep

  • mediumnested complexity
    crates/omc-cli/src/dispatch/templates.rs:107

    list_skills nests 4 levels deep

  • mediumnested complexity
    crates/omc-shared/src/dap_adapter/client.rs:269

    spawn_reader nests 4 levels deep

  • mediumnested complexity
    crates/omc-shared/src/dap_adapter/client.rs:46

    request nests 4 levels deep

  • mediumnested complexity
    crates/omc-shared/src/lsp_adapter/transport.rs:98

    spawn_reader nests 4 levels deep

  • mediumnested complexity
    crates/omc-shared/src/workflow_contract.rs:137

    next_stage nests 4 levels deep

  • mediumcomplex conditional
    crates/omc-shared/src/code_intel.rs:147

    if condition combines 4 boolean operators

  • mediumcomplex conditional
    crates/omc-shared/src/hash_edit.rs:152

    if condition combines 4 boolean operators

  • mediumcomplex conditional
    crates/omc-shared/src/state/goal_ledger.rs:103

    if condition combines 4 boolean operators

  • mediumcomplex method
    crates/omc-cli/src/dispatch/status.rs:81

    build_status has cyclomatic complexity 10

  • mediumcomplex method
    crates/omc-mcp/src/schema_contract.rs:121

    compare_schema has cyclomatic complexity 13

  • mediumcomplex method
    crates/omc-shared/src/capability_catalog.rs:276

    availability has cyclomatic complexity 11

  • mediumcomplex method
    crates/omc-shared/src/dap_adapter/client.rs:46

    request has cyclomatic complexity 10

  • mediumlarge method
    crates/omc-cli/src/dispatch/tool/control.rs:3

    run_control_tool is 117 lines long

  • mediumlarge method
    crates/omc-mcp/src/python_tools.rs:94

    handle is 98 lines long

  • mediumcomplex method
    crates/omc-cli/src/dispatch/tool/control.rs:3

    run_control_tool has cyclomatic complexity 14

  • mediumcomplex method
    crates/omc-mcp/src/python_tools.rs:94

    handle has cyclomatic complexity 9

  • mediumcomplex method
    crates/omc-shared/src/code_intel.rs:146

    validate_request has cyclomatic complexity 10

  • mediumcomplex method
    crates/omc-shared/src/code_intel.rs:57

    query_code_intel has cyclomatic complexity 10

  • mediumlarge method
    crates/omc-cli/src/dispatch/host.rs:77

    run_setup_host is 97 lines long

  • mediumcomplex method
    crates/omc-cli/src/dispatch/host.rs:77

    run_setup_host has cyclomatic complexity 13

  • mediumcomplex method
    crates/omc-cli/src/dispatch/host.rs:20

    run_doctor has cyclomatic complexity 10

  • mediumcomplex method
    crates/omc-shared/src/hash_edit.rs:84

    apply has cyclomatic complexity 10

  • mediumlarge method
    crates/omc-shared/src/dap_adapter.rs:155

    run_debug_session is 97 lines long

  • mediumcomplex method
    crates/omc-shared/src/dap_adapter.rs:266

    validate_request has cyclomatic complexity 9

  • mediumcomplex method
    crates/omc-shared/src/dap_adapter.rs:155

    run_debug_session has cyclomatic complexity 10

  • mediumdry violation
    crates/omc-cli/src/commands/agent.rs:22

    56% of file duplicated; worst clone shares 36 lines with crates/omc-cli/src/commands/agent.rs

  • mediumdry violation
    crates/omc-mcp/src/agent_tools.rs:49

    46% of file duplicated; worst clone shares 21 lines with crates/omc-mcp/src/goal_tools.rs

  • mediumdry violation
    crates/omc-mcp/src/agent_tools/adapter_tools.rs:127

    30% of file duplicated; worst clone shares 20 lines with crates/omc-mcp/src/agent_tools/adapter_tools.rs

  • mediumdry violation
    crates/omc-mcp/src/agent_tools_tests.rs:16

    34% of file duplicated; worst clone shares 18 lines with crates/omc-mcp/src/agent_tools_tests.rs

  • mediumdry violation
    crates/omc-mcp/src/goal_tools.rs:174

    64% of file duplicated; worst clone shares 47 lines with crates/omc-mcp/src/goal_tools.rs

  • mediumdry violation
    crates/omc-mcp/src/lib.rs:6

    46% of file duplicated; worst clone shares 16 lines with crates/omc-shared/src/lib.rs

  • mediumlow cohesion
    crates/omc-mcp/src/server.rs:77

    McpServer has low cohesion (LCOM4=2): its 5 methods split into 2 groups that share no fields or calls

  • mediumlow cohesion
    crates/omc-python/src/python_kernel.rs:23

    PythonKernel has low cohesion (LCOM4=2): its 5 methods split into 2 groups that share no fields or calls

  • mediumlow cohesion
    crates/omc-shared/src/dap_adapter/client.rs:29

    DapClient has low cohesion (LCOM4=2): its 5 methods split into 2 groups that share no fields or calls

  • mediumdry violation
    crates/omc-shared/src/dap_adapter/client.rs:267

    27% of file duplicated; worst clone shares 83 lines with crates/omc-shared/src/lsp_adapter/transport.rs

  • mediumlow cohesion
    crates/omc-shared/src/goal_contract.rs:63

    GoalRecord has low cohesion (LCOM4=2): its 7 methods split into 2 groups that share no fields or calls

  • mediumdry violation
    crates/omc-shared/src/lib.rs:3

    62% of file duplicated; worst clone shares 23 lines with crates/omc-shared/src/lib.rs

  • mediumdry violation
    crates/omc-shared/src/lsp_adapter.rs:8

    36% of file duplicated; worst clone shares 19 lines with crates/omc-shared/src/dap_adapter.rs

  • mediumdry violation
    crates/omc-shared/src/lsp_adapter/transport.rs:96

    44% of file duplicated; worst clone shares 83 lines with crates/omc-shared/src/dap_adapter/client.rs

  • mediumdry violation
    crates/omc-shared/src/operation_contract.rs:271

    26% of file duplicated; worst clone shares 16 lines with crates/omc-shared/src/goal_contract.rs

  • mediumlow cohesion
    crates/omc-shared/src/session_pool.rs:29

    BoundedSessionPool<K, V> has low cohesion (LCOM4=2): its 7 methods split into 2 groups that share no fields or calls

  • mediumlow cohesion
    crates/omc-shared/src/state/goal_ledger.rs:18

    GoalLedger has low cohesion (LCOM4=2): its 8 methods split into 2 groups that share no fields or calls

  • mediumdry violation
    crates/omc-shared/src/workflow_contract.rs:240

    32% of file duplicated; worst clone shares 24 lines with crates/omc-shared/src/workflow_contract.rs

  • mediumduplicated assertion block
    crates/omc-cli/tests/agent_tool_contract.rs:93

    assertion block at lines 93-94 is duplicated in crates/omc-cli/tests/agent_tool_contract.rs

  • mediumduplicated assertion block
    crates/omc-cli/tests/agent_tool_contract.rs:117

    assertion block at lines 117-118 is duplicated in crates/omc-cli/tests/agent_tool_contract.rs

  • mediumduplicated assertion block
    crates/omc-shared/tests/agent_tool_consumer.rs:63

    assertion block at lines 63-66 is duplicated in crates/omc-shared/tests/agent_tool_consumer.rs

  • mediumduplicated assertion block
    crates/omc-shared/tests/agent_tool_consumer.rs:83

    assertion block at lines 83-86 is duplicated in crates/omc-shared/tests/agent_tool_consumer.rs

  • mediumprimitive obsession
    crates/omc-shared/src/dap_adapter.rs:155

    run_debug_session takes 7 parameters

  • mediumio in loop
    crates/omc-cli/src/dispatch/templates.rs:14

    a filesystem call runs once per loop iteration (N+1 / IO-in-loop)

  • mediumio in loop
    crates/omc-cli/src/dispatch/templates.rs:82

    a filesystem call runs once per loop iteration (N+1 / IO-in-loop)

  • mediumio in loop
    crates/omc-cli/src/dispatch/templates.rs:114

    a filesystem call runs once per loop iteration (N+1 / IO-in-loop)

  • mediumio in loop
    crates/omc-host/src/mcp_reg_tests.rs:66

    a filesystem call runs once per loop iteration (N+1 / IO-in-loop)

  • mediumio in loop
    crates/omc-host/src/mcp_reg_tests.rs:78

    a filesystem call runs once per loop iteration (N+1 / IO-in-loop)

  • mediumio in loop
    crates/omc-host/src/mcp_reg_tests.rs:133

    a filesystem call runs once per loop iteration (N+1 / IO-in-loop)

  • mediumio in loop
    crates/omc-shared/src/state/goal_ledger.rs:71

    a filesystem call runs once per loop iteration (N+1 / IO-in-loop)

  • mediumio in loop
    tests/host-consumer/benchmark.py:22

    a subprocess spawn runs once per loop iteration (N+1 / IO-in-loop)

  • lowcomplex conditional
    crates/omc-mcp/src/schema_contract.rs:132

    if condition combines 3 boolean operators

  • lowlarge method
    crates/omc-cli/src/dispatch/status.rs:81

    build_status is 67 lines long

  • lowlarge method
    crates/omc-mcp/src/agent_tools/contract_tools.rs:43

    handle is 72 lines long

  • lowlarge method
    crates/omc-shared/src/capability_catalog.rs:276

    availability is 77 lines long

  • lowlarge method
    crates/omc-shared/src/dap_adapter/client.rs:46

    request is 69 lines long

  • lowlarge method
    crates/omc-shared/src/code_intel.rs:57

    query_code_intel is 83 lines long

  • lowlarge method
    crates/omc-shared/src/workflow_contract.rs:137

    next_stage is 89 lines long

  • lowlarge method
    crates/omc-shared/src/hash_edit.rs:84

    apply is 60 lines long

  • lowlarge method
    crates/omc-shared/src/dap_adapter.rs:266

    validate_request is 66 lines long

  • lowdry violation
    crates/omc-cli/src/dispatch.rs:111

    18% of file duplicated; worst clone shares 24 lines with crates/omc-cli/src/dispatch.rs

  • lowdry violation
    crates/omc-cli/src/dispatch/status.rs:44

    14% of file duplicated; worst clone shares 12 lines with crates/omc-cli/src/dispatch/status.rs

  • lowdry violation
    crates/omc-cli/src/dispatch/tool.rs:105

    20% of file duplicated; worst clone shares 12 lines with crates/omc-cli/src/dispatch/tool.rs

  • lowdry violation
    crates/omc-cli/src/dispatch/tool/control.rs:43

    21% of file duplicated; worst clone shares 9 lines with crates/omc-cli/src/dispatch/tool.rs

  • lowdry violation
    crates/omc-interop/src/lib.rs:33

    14% of file duplicated; worst clone shares 15 lines with crates/omc-interop/src/shared_state.rs

  • lowdry violation
    crates/omc-mcp/src/agent_tools/contract_tools.rs:281

    20% of file duplicated; worst clone shares 20 lines with crates/omc-mcp/src/agent_tools/adapter_tools.rs

  • lowdry violation
    crates/omc-mcp/src/python_tools.rs:130

    22% of file duplicated; worst clone shares 22 lines with crates/omc-mcp/src/python_tools.rs

  • lowdry violation
    crates/omc-mcp/src/schema_contract.rs:155

    17% of file duplicated; worst clone shares 12 lines with crates/omc-mcp/src/schema_contract.rs

  • lowdry violation
    crates/omc-mcp/src/team_tools.rs:104

    13% of file duplicated; worst clone shares 14 lines with crates/omc-mcp/src/agent_tools.rs

  • lowdry violation
    crates/omc-python/src/session.rs:123

    11% of file duplicated; worst clone shares 15 lines with crates/omc-hooks/src/registry.rs

  • lowdry violation
    crates/omc-shared/src/agent_tool.rs:150

    9% of file duplicated; worst clone shares 10 lines with crates/omc-shared/src/code_intel.rs

  • lowprimitive obsession
    crates/omc-shared/src/capability_catalog.rs:228

    descriptor takes 6 parameters

  • lowdry violation
    crates/omc-shared/src/dap_adapter.rs:92

    18% of file duplicated; worst clone shares 20 lines with crates/omc-shared/src/config/paths.rs

  • lowerror handling
    crates/omc-shared/src/dap_adapter_tests.rs:4

    unwrap/expect turns a recoverable error into a crash

  • lowdry violation
    crates/omc-shared/src/goal_contract.rs:38

    18% of file duplicated; worst clone shares 16 lines with crates/omc-shared/src/operation_contract.rs

  • lowdry violation
    crates/omc-shared/src/hash_edit.rs:150

    21% of file duplicated; worst clone shares 12 lines with crates/omc-shared/src/operation_contract.rs

  • lowprimitive obsession
    crates/omc-shared/src/lsp_adapter.rs:228

    run_lsp_session takes 6 parameters

  • lowdry violation
    crates/omc-shared/src/lsp_adapter/session.rs:155

    16% of file duplicated; worst clone shares 19 lines with crates/omc-shared/src/lsp_adapter.rs

  • lowprimitive obsession
    crates/omc-shared/src/operation_contract.rs:238

    from_agent_event takes 5 parameters

  • lowdry violation
    crates/omc-shared/src/state/goal_ledger.rs:65

    13% of file duplicated; worst clone shares 8 lines with crates/omc-interop/src/shared_state.rs

  • lowdry violation
    crates/omc-shared/src/team_contract.rs:8

    19% of file duplicated; worst clone shares 7 lines with crates/omc-shared/src/operation_contract.rs

  • lowdry violation
    crates/omc-shared/tests/agent_tool_consumer.rs:25

    18% of file duplicated; worst clone shares 18 lines with crates/omc-host/src/mcp_reg_tests.rs

  • lowdry violation
    tests/host-consumer/benchmark.py:25

    12% of file duplicated; worst clone shares 8 lines with tests/host-consumer/lsp_benchmark.py

  • lowdry violation
    tests/host-consumer/lsp_benchmark.py:11

    10% of file duplicated; worst clone shares 8 lines with tests/host-consumer/benchmark.py

  • lowerror handling
    crates/omc-cli/tests/agent_tool_contract.rs:12

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-cli/tests/agent_tool_contract.rs:26

    panic!/unreachable!/todo!/unimplemented! aborts the process unconditionally

  • lowerror handling
    crates/omc-cli/tests/agent_tool_contract.rs:28

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-cli/tests/agent_tool_contract.rs:39

    unwrap/expect turns a recoverable error into a crash

  • lowprimitive obsession
    crates/omc-shared/src/hash_edit.rs:66

    new takes 5 parameters

  • lowprimitive obsession
    tests/host-consumer/consumer.py:323

    run_mcp takes 6 parameters

  • lowprimitive obsession
    tests/host-consumer/consumer.py:104

    run_cli takes 6 parameters

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:267

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:269

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:277

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:291

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:294

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:315

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:323

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:324

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:324

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:332

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:338

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:348

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:361

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:361

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:367

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:372

    unwrap/expect turns a recoverable error into a crash

  • lowerror handling
    crates/omc-host/src/mcp_reg_tests.rs:372

    unwrap/expect turns a recoverable error into a crash

Resolved (2)
  • nested complexity
    crates/omc-cli/src/dispatch.rs
  • complex method
    crates/omc-cli/src/dispatch.rs

Who else knows this code

The primary author of each changed file by share of its recent commits, mined from git history. Advisory: it says who has context, not who must review.

  • crates/omc-interop/src/shared_state.rs2233admin 100% of 1 commits · the PR author
  • crates/omc-team/src/dispatch.rs2233admin 100% of 2 commits · the PR author
  • crates/omc-host/src/adapter.rs2233admin 100% of 1 commits · the PR author
  • crates/omc-python/src/repl.rs2233admin 100% of 1 commits · the PR author
  • crates/omc-python/src/executor.rs2233admin 100% of 1 commits · the PR author

Get this on your own pull requests

This page came from an index of 2233admin/oh-my-claudecode-RS. No model calls, no configuration, and it refreshes on every push. Install the bot and every pull request gets one of these.