Skip to content

chore(async-nats): disable unused default features - #47

Merged
yordis merged 1 commit into
mainfrom
chore/trim-async-nats-features
Mar 24, 2026
Merged

chore(async-nats): disable unused default features#47
yordis merged 1 commit into
mainfrom
chore/trim-async-nats-features

Conversation

@yordis

@yordis yordis commented Mar 24, 2026

Copy link
Copy Markdown
Member

Summary

  • Disable async-nats default features and only enable what we use
  • Drops jetstream, service, object-store, kv, websockets, nuid, and server_2_* features
  • Keeps ring + nkeys only in trogon-nats (the crate that connects); other crates use bare types only

Why

async-nats 0.46.0 made modules feature-gated, but all features are still enabled by default. We only use core client, headers, subjects, and TLS — the defaults pull in unnecessary dependencies and increase compile time and binary size.

Feature mapping

Crate Features Reason
trogon-nats ring, nkeys Connects to NATS; uses with_credentials_file and with_nkey
acp-nats (none) Only uses types (Client, Message, HeaderMap)
acp-nats-stdio (none) Only uses types
acp-nats-ws (none) Only uses types

Test plan

  • cargo check --workspace
  • cargo clippy --workspace --all-targets
  • cargo test --workspace — all tests pass

@cursor

cursor Bot commented Mar 24, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Moderate risk because changing async-nats feature flags can unintentionally drop required transport/auth functionality and cause build or runtime regressions, though the change is limited to dependency configuration.

Overview
Switches all workspace crates off async-nats default features and explicitly enables only the needed capabilities (notably keeping TLS via ring, and nkeys where credential-based auth is used).

Updates Cargo.lock accordingly, removing now-unneeded transitive dependencies pulled in by async-nats defaults (e.g., time, tryhard, nuid, and related crates), which should reduce build/binary footprint.

Written by Cursor Bugbot for commit 13ab93a. This will update automatically on new commits. Configure here.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis force-pushed the chore/trim-async-nats-features branch from 08c4df9 to 13ab93a Compare March 24, 2026 05:21
@github-actions

github-actions Bot commented Mar 24, 2026

Copy link
Copy Markdown

badge

Code Coverage Summary

Details
Filename                                                     Stmts    Miss  Cover    Missing
---------------------------------------------------------  -------  ------  -------  ---------------------------------------------------------------------------------------------
crates/acp-nats-stdio/src/config.rs                             72       0  100.00%
crates/acp-nats-stdio/src/main.rs                              113      11  90.27%   58, 106-113, 119-121, 138
crates/acp-nats-ws/src/main.rs                                 157       2  98.73%   83, 246
crates/acp-nats-ws/src/config.rs                                83       0  100.00%
crates/acp-nats-ws/src/connection.rs                           162      35  78.40%   71-78, 83-94, 110, 112-113, 118, 129-131, 138, 142, 146, 149-157, 168, 172, 175, 178-182, 216
crates/acp-nats-ws/src/upgrade.rs                               57       2  96.49%   59, 90
crates/acp-nats/src/error.rs                                    84       0  100.00%
crates/acp-nats/src/config.rs                                  200       0  100.00%
crates/acp-nats/src/ext_method_name.rs                          85       0  100.00%
crates/acp-nats/src/session_id.rs                               88       0  100.00%
crates/acp-nats/src/in_flight_slot_guard.rs                     32       0  100.00%
crates/acp-nats/src/lib.rs                                      73       0  100.00%
crates/acp-nats/src/pending_prompt_waiters.rs                  112       0  100.00%
crates/acp-nats/src/acp_prefix.rs                               63       0  100.00%
crates/acp-nats/src/jsonrpc.rs                                   6       0  100.00%
crates/acp-nats/src/nats/extensions.rs                           3       0  100.00%
crates/acp-nats/src/nats/subjects.rs                           106       0  100.00%
crates/acp-nats/src/nats/parsing.rs                            186       0  100.00%
crates/acp-nats/src/nats/token.rs                                8       0  100.00%
crates/acp-nats/src/agent/load_session.rs                      250       0  100.00%
crates/acp-nats/src/agent/mod.rs                               135       0  100.00%
crates/acp-nats/src/agent/new_session.rs                       234       0  100.00%
crates/acp-nats/src/agent/initialize.rs                        178       0  100.00%
crates/acp-nats/src/agent/ext_notification.rs                  224       0  100.00%
crates/acp-nats/src/agent/prompt.rs                            218       0  100.00%
crates/acp-nats/src/agent/cancel.rs                            236       0  100.00%
crates/acp-nats/src/agent/ext_method.rs                        232       0  100.00%
crates/acp-nats/src/agent/set_session_mode.rs                  165       0  100.00%
crates/acp-nats/src/agent/authenticate.rs                      148       0  100.00%
crates/trogon-nats/src/connect.rs                               96      16  83.33%   21-23, 36, 50, 69-152
crates/trogon-nats/src/messaging.rs                            528       4  99.24%   135-140, 150-151
crates/trogon-nats/src/mocks.rs                                304       0  100.00%
crates/trogon-nats/src/auth.rs                                 114       3  97.37%   49-51
crates/trogon-nats/src/client.rs                                25      25  0.00%    50-89
crates/acp-telemetry/src/log.rs                                 70       2  97.14%   39-40
crates/acp-telemetry/src/metric.rs                              35       4  88.57%   33-34, 41-42
crates/acp-telemetry/src/signal.rs                               3       3  0.00%    4-43
crates/acp-telemetry/src/trace.rs                               32       4  87.50%   23-24, 31-32
crates/acp-telemetry/src/service_name.rs                        16       0  100.00%
crates/acp-telemetry/src/lib.rs                                153      22  85.62%   38-45, 80, 85, 90, 104-119
crates/trogon-std/src/json.rs                                   30       0  100.00%
crates/trogon-std/src/args.rs                                   10       0  100.00%
crates/trogon-std/src/dirs/fixed.rs                             84       0  100.00%
crates/trogon-std/src/dirs/system.rs                            98      11  88.78%   57, 65, 67, 75, 77, 85, 87, 96, 98, 109, 154
crates/trogon-std/src/time/mock.rs                             123       0  100.00%
crates/trogon-std/src/time/system.rs                            24       0  100.00%
crates/trogon-std/src/fs/mem.rs                                220      10  95.45%   61-63, 77-79, 133-135, 158
crates/trogon-std/src/fs/system.rs                              29      12  58.62%   17-19, 31-45
crates/trogon-std/src/env/in_memory.rs                          81       0  100.00%
crates/trogon-std/src/env/system.rs                             17       0  100.00%
crates/acp-nats/src/client/fs_read_text_file.rs                384       0  100.00%
crates/acp-nats/src/client/request_permission.rs               338       0  100.00%
crates/acp-nats/src/client/terminal_create.rs                  294       0  100.00%
crates/acp-nats/src/client/terminal_output.rs                  223       0  100.00%
crates/acp-nats/src/client/fs_write_text_file.rs               451       0  100.00%
crates/acp-nats/src/client/terminal_kill.rs                    309       0  100.00%
crates/acp-nats/src/client/session_update.rs                    55       0  100.00%
crates/acp-nats/src/client/terminal_release.rs                 357       0  100.00%
crates/acp-nats/src/client/terminal_wait_for_exit.rs           396       0  100.00%
crates/acp-nats/src/client/rpc_reply.rs                         71       0  100.00%
crates/acp-nats/src/client/mod.rs                             2978       0  100.00%
crates/acp-nats/src/client/ext_session_prompt_response.rs      149       0  100.00%
crates/acp-nats/src/telemetry/metrics.rs                        65       0  100.00%
TOTAL                                                        11872     166  98.60%

Diff against main

Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%

Results for commit: 13ab93a

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

@coderabbitai

coderabbitai Bot commented Mar 24, 2026

Copy link
Copy Markdown

Walkthrough

Four crates update their async-nats dependency configuration to disable default features. Three crates (acp-nats-stdio, acp-nats-ws, acp-nats) disable all defaults, while trogon-nats explicitly enables ring and nkeys features. Version remains at 0.46.0 across all.

Changes

Cohort / File(s) Summary
async-nats dependency defaults disabled
rsworkspace/crates/acp-nats-stdio/Cargo.toml, rsworkspace/crates/acp-nats-ws/Cargo.toml, rsworkspace/crates/acp-nats/Cargo.toml
Changed async-nats from version pin to explicit config with default-features = false.
async-nats with feature selection
rsworkspace/crates/trogon-nats/Cargo.toml
Changed async-nats to disable defaults and explicitly enable ring and nkeys features.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 Four manifests we've tweaked with care,
Default features stripped with flair,
async-nats made lean and light,
Ring and nkeys shining bright!
Dependencies now optimized just right! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore(async-nats): disable unused default features' directly and clearly summarizes the main change: disabling unnecessary async-nats default features across multiple crates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The description clearly explains the changes: disabling async-nats default features and specifying only required ones (ring and nkeys where needed), along with the rationale for reducing compile time and binary size.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/trim-async-nats-features

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yordis
yordis merged commit 64b028f into main Mar 24, 2026
5 checks passed
@yordis
yordis deleted the chore/trim-async-nats-features branch March 24, 2026 05:24
yordis added a commit that referenced this pull request Jun 16, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 22, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 22, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 23, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 23, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 23, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 25, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 25, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 26, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 26, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 26, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 26, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 26, 2026
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
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