Skip to content

fix(macros): flatten struct parameters to remove confusing wrapper - #58

Merged
avrabe merged 1 commit into
mainfrom
fix/flatten-struct-parameters
Oct 1, 2025
Merged

fix(macros): flatten struct parameters to remove confusing wrapper#58
avrabe merged 1 commit into
mainfrom
fix/flatten-struct-parameters

Conversation

@avrabe

@avrabe avrabe commented Sep 30, 2025

Copy link
Copy Markdown
Contributor

Problem

Single struct parameters had a mismatch between schema and runtime:

  • Schema: {"properties": {"message": ..., "count": ...}}
  • Runtime expected: {"params": {"message": ..., "count": ...}}
  • AI agents were forced to use a confusing nested structure

Solution

Implemented smart parameter detection:

  • Custom structs → Deserialize from entire args object (flattened)
  • Primitives/std types → Extract by parameter name

Changes

  • Added is_primitive_or_std_type() helper
  • Updated extract_parameters() for single struct handling
  • Updated generate_method_call_with_params() with same logic
  • Added 3 comprehensive runtime tests
  • Updated hello-world example documentation

Testing

✅ All 180+ tests passing

  • test_struct_parameter_flattening_at_runtime - validates flat args work, nested fails
  • test_multi_param_still_works - ensures multi-param unchanged
  • test_optional_struct_fields_work - tests optional field handling
  • All existing tests continue to pass

Breaking Change

Single struct parameter handling changed. AI agents now send:

{"name": "Alice", "greeting": "Hi"}

Instead of:

{"params": {"name": "Alice", "greeting": "Hi"}}

Version

Bumps to 0.11.0

Single struct parameters now deserialize from entire args object instead of
requiring nested "params" key. AI agents send {"name": "Alice"} directly
instead of {"params": {"name": "Alice"}}.

- Add smart type detection (primitives vs custom structs)
- Flatten custom structs, extract primitives by name
- Add runtime tests validating flattening behavior
- Update hello-world example docs

BREAKING CHANGE: Single struct parameter handling changed
Bumps version to 0.11.0
@github-actions

Copy link
Copy Markdown

Code Coverage Report 📊

Local Coverage: 19.64%
Validation: Handled by Codecov

Note: Coverage validation is now performed by Codecov to ensure consistency across all platforms.

Coverage Details
Filename                                                  Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
integration-tests/src/auth_server_integration.rs              380                61    83.95%          26                 9    65.38%         273                70    74.36%           0                 0         -
integration-tests/src/cli_server_integration.rs               390                32    91.79%          35                 5    85.71%         347                23    93.37%           0                 0         -
integration-tests/src/end_to_end_scenarios.rs                 906               172    81.02%          40                 9    77.50%         594                90    84.85%           0                 0         -
integration-tests/src/lib.rs                                   22                12    45.45%           5                 2    60.00%          44                17    61.36%           0                 0         -
integration-tests/src/monitoring_integration.rs               427                66    84.54%          28                 8    71.43%         357                83    76.75%           0                 0         -
integration-tests/src/transport_server_integration.rs         432               101    76.62%          31                11    64.52%         369               128    65.31%           0                 0         -
mcp-auth/src/audit.rs                                         385               262    31.95%          27                17    37.04%         269               177    34.20%           0                 0         -
mcp-auth/src/config.rs                                         48                41    14.58%          11                10     9.09%          75                68     9.33%           0                 0         -
mcp-auth/src/consent.rs                                       140               140     0.00%          12                12     0.00%          98                98     0.00%           0                 0         -
mcp-auth/src/consent/manager.rs                               511               511     0.00%          40                40     0.00%         395               395     0.00%           0                 0         -
mcp-auth/src/crypto/encryption.rs                              89                89     0.00%           9                 9     0.00%          51                51     0.00%           0                 0         -
mcp-auth/src/crypto/hashing.rs                                 98                98     0.00%          10                10     0.00%          53                53     0.00%           0                 0         -
mcp-auth/src/crypto/keys.rs                                   115               115     0.00%           8                 8     0.00%          78                78     0.00%           0                 0         -
mcp-auth/src/crypto/mod.rs                                     15                15     0.00%           2                 2     0.00%          12                12     0.00%           0                 0         -
mcp-auth/src/jwt.rs                                           321               284    11.53%          29                27     6.90%         255               226    11.37%           0                 0         -
mcp-auth/src/lib.rs                                            18                15    16.67%           6                 5    16.67%          16                13    18.75%           0                 0         -
mcp-auth/src/manager.rs                                      1229              1116     9.19%         116               101    12.93%         918               794    13.51%           0                 0         -
mcp-auth/src/manager_vault.rs                                 241               241     0.00%          22                22     0.00%         194               194     0.00%           0                 0         -
mcp-auth/src/middleware/mcp_auth.rs                           240               240     0.00%          24                24     0.00%         208               208     0.00%           0                 0         -
mcp-auth/src/middleware/session_middleware.rs                 435               435     0.00%          41                41     0.00%         359               359     0.00%           0                 0         -
mcp-auth/src/models.rs                                        195               195     0.00%          19                19     0.00%         166               166     0.00%           0                 0         -
mcp-auth/src/monitoring/dashboard_server.rs                   241               241     0.00%          28                28     0.00%         440               440     0.00%           0                 0         -
mcp-auth/src/monitoring/security_monitor.rs                   708               708     0.00%          70                70     0.00%         531               531     0.00%           0                 0         -
mcp-auth/src/performance.rs                                   577               577     0.00%          34                34     0.00%         425               425     0.00%           0                 0         -
mcp-auth/src/permissions/mcp_permissions.rs                   419               419     0.00%          33                33     0.00%         319               319     0.00%           0                 0         -
mcp-auth/src/security/request_security.rs                     702               702     0.00%          49                49     0.00%         615               615     0.00%           0                 0         -
mcp-auth/src/session/session_manager.rs                       457               457     0.00%          50                50     0.00%         353               353     0.00%           0                 0         -
mcp-auth/src/setup/mod.rs                                     160               160     0.00%          21                21     0.00%         163               163     0.00%           0                 0         -
mcp-auth/src/setup/validator.rs                               141               141     0.00%          11                11     0.00%         106               106     0.00%           0                 0         -
mcp-auth/src/storage.rs                                       697               680     2.44%          50                46     8.00%         412               394     4.37%           0                 0         -
mcp-auth/src/transport/auth_extractors.rs                     155               155     0.00%          27                27     0.00%         137               137     0.00%           0                 0         -
mcp-auth/src/transport/http_auth.rs                           303               303     0.00%          20                20     0.00%         216               216     0.00%           0                 0         -
mcp-auth/src/transport/stdio_auth.rs                          268               268     0.00%          22                22     0.00%         195               195     0.00%           0                 0         -
mcp-auth/src/transport/websocket_auth.rs                      351               351     0.00%          23                23     0.00%         258               258     0.00%           0                 0         -
mcp-auth/src/validation.rs                                    144               144     0.00%          13                13     0.00%          95                95     0.00%           0                 0         -
mcp-auth/src/vault/infisical.rs                               637               637     0.00%          54                54     0.00%         489               489     0.00%           0                 0         -
mcp-auth/src/vault/mod.rs                                     135               135     0.00%          17                17     0.00%          92                92     0.00%           0                 0         -
mcp-cli-derive/src/lib.rs                                     324               324     0.00%          22                22     0.00%         262               262     0.00%           0                 0         -
mcp-cli/src/config.rs                                          81                68    16.05%          13                10    23.08%          70                61    12.86%           0                 0         -
mcp-cli/src/lib.rs                                             15                15     0.00%           5                 5     0.00%          15                15     0.00%           0                 0         -
mcp-cli/src/server.rs                                         241               241     0.00%          34                34     0.00%         207               207     0.00%           0                 0         -
mcp-cli/src/utils.rs                                          101               101     0.00%          13                13     0.00%          73                73     0.00%           0                 0         -
mcp-logging/src/aggregation.rs                                311               311     0.00%          27                27     0.00%         228               228     0.00%           0                 0         -
mcp-logging/src/alerting.rs                                   552               344    37.68%          39                17    56.41%         419               226    46.06%           0                 0         -
mcp-logging/src/correlation.rs                                415               415     0.00%          34                34     0.00%         299               299     0.00%           0                 0         -
mcp-logging/src/dashboard.rs                                  391               197    49.62%          21                15    28.57%         394               182    53.81%           0                 0         -
mcp-logging/src/metrics.rs                                    306               127    58.50%          36                19    47.22%         329               123    62.61%           0                 0         -
mcp-logging/src/persistence.rs                                360               360     0.00%          26                26     0.00%         202               202     0.00%           0                 0         -
mcp-logging/src/profiling.rs                                  502               496     1.20%          37                36     2.70%         398               354    11.06%           0                 0         -
mcp-logging/src/sanitization.rs                               268               265     1.12%          22                21     4.55%         181               173     4.42%           0                 0         -
mcp-logging/src/structured.rs                                 258               255     1.16%          24                23     4.17%         230               227     1.30%           0                 0         -
mcp-logging/src/telemetry.rs                                   75                34    54.67%          12                 5    58.33%          78                24    69.23%           0                 0         -
mcp-monitoring/src/collector.rs                               179                78    56.42%          19                 8    57.89%         133                52    60.90%           0                 0         -
mcp-monitoring/src/config.rs                                    3                 0   100.00%           1                 0   100.00%           8                 0   100.00%           0                 0         -
mcp-monitoring/src/lib.rs                                       3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
mcp-monitoring/src/metrics.rs                                   3                 3     0.00%           1                 1     0.00%          11                11     0.00%           0                 0         -
mcp-protocol/src/error.rs                                     193               153    20.73%          27                18    33.33%         151               117    22.52%           0                 0         -
mcp-protocol/src/errors.rs                                     83                83     0.00%          12                12     0.00%          40                40     0.00%           0                 0         -
mcp-protocol/src/lib.rs                                        12                12     0.00%           2                 2     0.00%          11                11     0.00%           0                 0         -
mcp-protocol/src/model.rs                                     134               131     2.24%          30                29     3.33%         177               170     3.95%           0                 0         -
mcp-protocol/src/validation.rs                                222               222     0.00%          23                23     0.00%         159               159     0.00%           0                 0         -
mcp-security/src/config.rs                                      4                 0   100.00%           1                 0   100.00%           9                 0   100.00%           0                 0         -
mcp-security/src/lib.rs                                         3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
mcp-security/src/middleware.rs                                 18                 3    83.33%           3                 0   100.00%          25                 3    88.00%           0                 0         -
mcp-security/src/validation.rs                                 10                10     0.00%           1                 1     0.00%          11                11     0.00%           0                 0         -
mcp-server/src/alerting_endpoint.rs                           117               117     0.00%          15                15     0.00%         110               110     0.00%           0                 0         -
mcp-server/src/backend.rs                                     116               101    12.93%          26                22    15.38%         101                88    12.87%           0                 0         -
mcp-server/src/builder_trait.rs                                26                26     0.00%           3                 3     0.00%          23                23     0.00%           0                 0         -
mcp-server/src/common_backend.rs                               59                59     0.00%          11                11     0.00%          82                82     0.00%           0                 0         -
mcp-server/src/context.rs                                      55                14    74.55%          10                 3    70.00%          46                16    65.22%           0                 0         -
mcp-server/src/dashboard_endpoint.rs                          104               104     0.00%          12                12     0.00%          79                79     0.00%           0                 0         -
mcp-server/src/handler.rs                                     293               189    35.49%          51                29    43.14%         221               127    42.53%           0                 0         -
mcp-server/src/health_endpoint.rs                              83                83     0.00%           5                 5     0.00%          91                91     0.00%           0                 0         -
mcp-server/src/metrics_endpoint.rs                            133               133     0.00%           7                 7     0.00%          86                86     0.00%           0                 0         -
mcp-server/src/middleware.rs                                  128                33    74.22%          13                 5    61.54%         104                17    83.65%           0                 0         -
mcp-server/src/server.rs                                      327               111    66.06%          38                19    50.00%         230                77    66.52%           0                 0         -
mcp-transport/src/batch.rs                                    191               191     0.00%          14                14     0.00%         128               128     0.00%           0                 0         -
mcp-transport/src/config.rs                                    15                12    20.00%           5                 4    20.00%          15                12    20.00%           0                 0         -
mcp-transport/src/http.rs                                     651               634     2.61%          39                36     7.69%         438               408     6.85%           0                 0         -
mcp-transport/src/lib.rs                                       13                 3    76.92%           1                 0   100.00%          12                 3    75.00%           0                 0         -
mcp-transport/src/stdio.rs                                    233               186    20.17%          17                12    29.41%         162               119    26.54%           0                 0         -
mcp-transport/src/streamable_http.rs                          223               223     0.00%          19                19     0.00%         165               165     0.00%           0                 0         -
mcp-transport/src/validation.rs                               191               191     0.00%          14                14     0.00%         135               135     0.00%           0                 0         -
mcp-transport/src/websocket.rs                                 15                 9    40.00%           5                 3    40.00%          17                11    35.29%           0                 0         -
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                                       20772             16986    18.23%        1855              1543    16.82%       16348             13138    19.64%           0                 0         -

📋 Full Report: View on Codecov

@github-actions

Copy link
Copy Markdown

PR Validation Results

Quick Validation: ✅

  • Format check
  • Clippy lints
  • Unit tests
  • Documentation

Summary: ✅ All checks passed

@avrabe
avrabe merged commit e9b6bf5 into main Oct 1, 2025
20 of 22 checks passed
@avrabe
avrabe deleted the fix/flatten-struct-parameters branch October 1, 2025 04:04
@codecov

codecov Bot commented Oct 1, 2025

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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