Skip to content
This repository was archived by the owner on Aug 15, 2026. It is now read-only.

wip: switch to llms-sdk - #22

Merged
AstraBert merged 3 commits into
mainfrom
feat/switch-to-llms-sdk
Jul 30, 2026
Merged

wip: switch to llms-sdk#22
AstraBert merged 3 commits into
mainfrom
feat/switch-to-llms-sdk

Conversation

@AstraBert

@AstraBert AstraBert commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features
    • Added support for OpenAI and Anthropic, including configurable API endpoints and optional prompt caching.
    • Streamed assistant responses now emit structured content parts (text/thinking/tool calls) with tool-call IDs.
  • Improvements
    • Updated session and event payloads to use structured message parts and token-based usage reporting (including cache read/write tokens).
    • CLI now includes --no-prompt-cache and defaults provider behavior to OpenAI.
  • Bug Fixes
    • Improved streamed tool-call handling and ensured tool-call arguments/results are recorded consistently.
  • Tests
    • Expanded integration coverage for Anthropic and updated streaming/event assertions.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a142bf27-d1fd-4f59-a47e-e20df124f012

📥 Commits

Reviewing files that changed from the base of the PR and between 0d0423e and 15f7264.

📒 Files selected for processing (3)
  • microagents-cli/src/init_env.rs
  • microagents-cli/src/main.rs
  • microagents-cli/src/tui/mod.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • microagents-cli/src/main.rs

📝 Walkthrough

Walkthrough

The PR migrates agent generation to llms-sdk, introduces structured assistant message parts and token usage fields, updates tool and storage events, changes CLI provider configuration and rendering, and adds OpenAI and Anthropic integration coverage.

Changes

LLM SDK and message migration

Layer / File(s) Summary
SDK and event contracts
microagents-core/Cargo.toml, microagents-core/src/types.rs, microagents-events/src/*
Agent traits, tool conversion, provider event payloads, usage fields, and assistant content now use structured llms-sdk-compatible types.
Agent construction and streaming
microagents-core/src/agent.rs
Provider handling is limited to OpenAI and Anthropic; requests, streaming, tool execution, usage aggregation, and history updates use the new SDK.
Message conversion and persistence compatibility
microagents-core/src/common.rs, microagents-storage/src/*
Assistant messages, tool calls, and tool results are converted and tested as structured message parts.
Integration commands and client rendering
jakefile.toml, microagents-cli/src/*, microagents-core/tests/integration_test.rs
CLI configuration, TUI rendering, integration tests, and the integration command consume the updated provider and event behavior.
Release metadata and validation support
*/Cargo.toml, .github/workflows/lint.yaml
Package versions, dependency requirements, and nightly lint component installation are updated for the migration.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant MicroAgent
  participant LLM
  participant Storage
  participant ToolFunction
  participant TUI
  CLI->>MicroAgent: configure and start generation
  MicroAgent->>LLM: stream LLMRequest
  LLM-->>MicroAgent: deltas and completed assistant message
  MicroAgent->>Storage: persist stream and session events
  MicroAgent->>ToolFunction: execute tool calls
  ToolFunction-->>MicroAgent: return tool results
  MicroAgent->>Storage: store tool results and assistant message
  MicroAgent-->>TUI: render structured content and usage
Loading

Possibly related PRs

Poem

A rabbit watched the tokens stream,
Structured parts began to gleam.
Tools hopped in, results came back,
Anthropic joined the meadow track.
“llms-sdk!” the bunny cheered.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: migrating the project to llms-sdk.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ 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 feat/switch-to-llms-sdk

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
microagents-core/src/agent.rs (1)

995-996: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

A tool_call can be appended to history with no matching tool result. The assistant message (including its tool_call parts) is always pushed at Line 1038, but several paths produce no ToolResultPart, leaving the next request with an unanswered tool call that OpenAI and Anthropic both reject.

  • microagents-core/src/agent.rs#L995-L996: add an else branch for the local_tools.get(&tc.name) miss that pushes a synthetic MessagePart::ToolResult error for tc.id.
  • microagents-core/src/agent.rs#L1029-L1034: in the Ok(Err(e)) and join-failure arms, also push a ToolResultPart error for the corresponding tool call id (propagate the id into the JoinSet result so it is available on failure) instead of only yielding the error.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-core/src/agent.rs` around lines 995 - 996, Ensure every assistant
tool_call receives a matching ToolResult before history is appended: in the
local_tools.get(&tc.name) miss branch, push a synthetic MessagePart::ToolResult
error using tc.id; in the Ok(Err(e)) and join-failure arms, propagate each
tool-call id through the JoinSet result and push the corresponding
ToolResultPart error instead of only yielding the error. Apply both changes in
microagents-core/src/agent.rs at lines 995-996 and 1029-1034.
🧹 Nitpick comments (8)
microagents-core/tests/integration_test.rs (2)

156-159: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Drop the debug println!.

Left-over debug artifact; the OpenAI test doesn't do this.

🧹 Proposed cleanup
-            Ok(ev) => {
-                println!("{:#?}", ev);
-                events.push(ev)
-            }
+            Ok(ev) => events.push(ev),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-core/tests/integration_test.rs` around lines 156 - 159, Remove
the debug println! call from the Ok(ev) branch in the integration test while
preserving the existing events.push(ev) behavior.

134-148: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Factor the shared assertion body out of the two provider tests.

The Anthropic test duplicates ~70 lines of the OpenAI test verbatim except for provider/model. Extract a async fn assert_weather_run(provider: &str, model: &str) helper so future event-shape changes only need one edit. Also, both tests return silently when the key is missing, so CI reports them as passing — consider eprintln!("skipping: <VAR> unset") so a misconfigured jake integration-core run is visible.

Also applies to: 163-211

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-core/tests/integration_test.rs` around lines 134 - 148, Extract
the duplicated weather-run assertion logic from
test_microagent_integration_anthropic and its OpenAI counterpart into an async
assert_weather_run(provider, model) helper, passing each test’s provider and
model while preserving all assertions. Update both missing-key early returns to
emit an eprintln skip message naming the unset environment variable before
returning.
jakefile.toml (1)

7-14: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

--no-default-features targets are now dead weight.

microagents-core no longer declares a [features] section (the token_estimation/tokie feature was dropped in this PR), so clippy-nodefault, clippy-fix-nodefault, build-nodefault, build-rel-nodefault and test-nodefault are just slower duplicates of the default targets. Remove them (and any CI jobs referencing them) unless a feature flag is coming back.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@jakefile.toml` around lines 7 - 14, Remove the obsolete no-default-features
targets clippy-nodefault, clippy-fix-nodefault, build-nodefault,
build-rel-nodefault, and test-nodefault from the Jake task definitions, and
remove any CI jobs that invoke them. Keep the remaining default clippy, build,
format, and test targets unchanged.
microagents-core/src/agent.rs (2)

149-153: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Comments contradict the values they document.

Line 149 says "GPT-5.5 … as of May 2026" for gpt-5.6-terra, and Line 152 mentions "Claude Opus 4.7" for claude-sonnet-5 (plus a "cuttig-edge" typo).

📝 Suggested wording
-            // GPT-5.5 is the current default ChatGPT model as of May 2026
+            // gpt-5.6-terra is the current default OpenAI model
             SupportedProvider::OpenAI => Ok("gpt-5.6-terra"),
 
-            // Claude Opus 4.7 by Anthropic is cuttig-edge in the models market
+            // claude-sonnet-5 is Anthropic's current general-purpose model
             SupportedProvider::Anthropic => Ok("claude-sonnet-5"),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-core/src/agent.rs` around lines 149 - 153, Update the comments in
the SupportedProvider model mapping to accurately describe the configured
values: make the OpenAI comment match gpt-5.6-terra, make the Anthropic comment
match claude-sonnet-5, and correct the “cuttig-edge” typo.

1293-1306: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Env-var mutation in parallel tests is racy — use the already-available serial_test.

Several tests in this module unsafe { set_var("OPENAI_API_KEY", ...) } while cargo test runs them on multiple threads; concurrent set_var is exactly why the call is unsafe, and test_agent_fails_to_build_if_not_api_key depends on key absence. serial_test = "3.5.0" is already a dev-dependency — annotate every env-mutating test with #[serial]. Restoring with unwrap_or_default() also leaves an empty-string var behind rather than unsetting it.

♻️ Suggested pattern
     #[test]
+    #[serial_test::serial]
     fn test_build_sets_empty_history() {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-core/src/agent.rs` around lines 1293 - 1306, Annotate every test
in the module that mutates OPENAI_API_KEY with the existing serial_test
#[serial] attribute, including the test building the agent. Restore the
environment exactly: preserve and reinstate an existing value, but remove the
variable when it was originally absent instead of restoring an empty string;
apply the same cleanup to tests that require the key to be absent.
microagents-events/src/lib.rs (1)

184-190: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

#[serde(untagged)] makes the persisted part format structurally ambiguous.

Variant identity is inferred purely from which fields happen to deserialize, and serde ignores unknown fields, so the first variant whose required fields are present wins. Today the field sets are disjoint, but any future part sharing a field name (or an added optional field) will silently mis-deserialize persisted sessions, and errors surface as an unhelpful "data did not match any variant". Consider an internally-tagged representation (e.g. #[serde(tag = "type", rename_all = "snake_case")]) plus deny_unknown_fields, with a migration for existing JSONL/SQLite payloads.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-events/src/lib.rs` around lines 184 - 190, Replace the untagged
serialization on AssistantMessagePart with an explicitly tagged representation
using a stable type discriminator and snake_case variant names, and reject
unknown fields on the part payload structs. Update JSONL/SQLite deserialization
to migrate existing untagged persisted payloads into the new tagged format while
preserving compatibility with current sessions.
microagents-storage/src/jsonl.rs (1)

194-206: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Neither persistence round-trip test verifies the new structured content. Both backends serialize to JSON and re-parse via get_session, which is the only coverage that would catch #[serde(untagged)] AssistantMessagePart mis-resolution, yet both tests assert only JSON-RPC method names.

  • microagents-storage/src/jsonl.rs#L194-L206: assert that the round-tripped events[2] content and events[3] result equal the fixtures, and add ToolCall/Thinking parts to the fixture.
  • microagents-storage/src/sqlite.rs#L267-L278: add the same content/result equality assertions after get_session.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-storage/src/jsonl.rs` around lines 194 - 206, Extend the
persistence round-trip tests so structured assistant content is verified after
get_session: in microagents-storage/src/jsonl.rs lines 194-206, add ToolCall and
Thinking parts to the fixtures and assert events[2].content and events[3].result
equal those fixtures; apply the same content/result equality assertions in
microagents-storage/src/sqlite.rs lines 267-278 after get_session.
microagents-cli/src/tui/mod.rs (1)

443-461: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

This tool-call derivation looks dead now, and its comment is stale.

microagents-core builds AssistantResponseEvent only in the tool_calls.is_empty() branch of run() and it does emit AgentEventAny::ToolCall (handled at Line 434), so the content here should never carry ToolCall parts. Either drop this block and the "the core does not currently emit tool.call events" comment, or keep it as a fallback and guard against double-rendering. The Option<Vec<ToolCallPart>> accumulator can also just be a Vec with is_empty().

♻️ Simplification if kept
-                let mut tool_calls: Option<Vec<ToolCallPart>> = None;
-                for part in r.content {
-                    match part {
-                        AssistantMessagePart::ToolCall(t) => {
-                            tool_calls.get_or_insert_with(Vec::new).push(t)
-                        }
-                        _ => continue,
-                    }
-                }
-                if let Some(calls) = tool_calls {
-                    for c in calls {
+                let tool_calls: Vec<ToolCallPart> = r
+                    .content
+                    .into_iter()
+                    .filter_map(|p| match p {
+                        AssistantMessagePart::ToolCall(t) => Some(t),
+                        _ => None,
+                    })
+                    .collect();
+                for c in tool_calls {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-cli/src/tui/mod.rs` around lines 443 - 461, Remove the dead
tool-call derivation loop from the AgentEventAny::AssistantResponse handler,
including its stale comment and related accumulator/argument-normalization
logic. Tool calls are already handled by the AgentEventAny::ToolCall branch, so
preserve that existing rendering path without adding fallback behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@microagents-cli/src/tui/mod.rs`:
- Around line 417-422: Update the usage-line format string in the
session-stopped output to use Display formatting for token counts and
precision-limited Display formatting for latency, avoiding Debug formatting and
long floating-point tails. Keep the existing values and output structure
unchanged.

In `@microagents-core/src/agent.rs`:
- Around line 844-873: Both assistant_message.expect calls in the no-tool-calls
completion path can panic when streaming ends without a Complete chunk; add one
assistant_message.clone() guard in microagents-core/src/agent.rs lines 844-873,
yielding AgentError::RunError and returning when absent, then reuse the mapped
parts for AssistantResponseEvent and SessionStopEvent. Apply the same guard
before pushing the assistant message to self.history at
microagents-core/src/agent.rs line 1038; the sibling site should use the
existing final message rather than assume it is present.
- Around line 455-457: Update the SupportedProvider::Anthropic branch to report
ANTHROPIC_API_KEY in MicroAgentBuilderError::EnvVarNotFoundError when
check_env_var fails, while leaving the existing environment-variable validation
unchanged.
- Around line 913-916: Replace the panic-prone
serde_json::from_str(...).expect(...) in the tool_calls loop with explicit
malformed-JSON handling: when parsing tc.arguments fails, propagate a RunError
or return a ToolResult::Err to the model, and continue normal tool lookup only
for successfully parsed arguments.

---

Outside diff comments:
In `@microagents-core/src/agent.rs`:
- Around line 995-996: Ensure every assistant tool_call receives a matching
ToolResult before history is appended: in the local_tools.get(&tc.name) miss
branch, push a synthetic MessagePart::ToolResult error using tc.id; in the
Ok(Err(e)) and join-failure arms, propagate each tool-call id through the
JoinSet result and push the corresponding ToolResultPart error instead of only
yielding the error. Apply both changes in microagents-core/src/agent.rs at lines
995-996 and 1029-1034.

---

Nitpick comments:
In `@jakefile.toml`:
- Around line 7-14: Remove the obsolete no-default-features targets
clippy-nodefault, clippy-fix-nodefault, build-nodefault, build-rel-nodefault,
and test-nodefault from the Jake task definitions, and remove any CI jobs that
invoke them. Keep the remaining default clippy, build, format, and test targets
unchanged.

In `@microagents-cli/src/tui/mod.rs`:
- Around line 443-461: Remove the dead tool-call derivation loop from the
AgentEventAny::AssistantResponse handler, including its stale comment and
related accumulator/argument-normalization logic. Tool calls are already handled
by the AgentEventAny::ToolCall branch, so preserve that existing rendering path
without adding fallback behavior.

In `@microagents-core/src/agent.rs`:
- Around line 149-153: Update the comments in the SupportedProvider model
mapping to accurately describe the configured values: make the OpenAI comment
match gpt-5.6-terra, make the Anthropic comment match claude-sonnet-5, and
correct the “cuttig-edge” typo.
- Around line 1293-1306: Annotate every test in the module that mutates
OPENAI_API_KEY with the existing serial_test #[serial] attribute, including the
test building the agent. Restore the environment exactly: preserve and reinstate
an existing value, but remove the variable when it was originally absent instead
of restoring an empty string; apply the same cleanup to tests that require the
key to be absent.

In `@microagents-core/tests/integration_test.rs`:
- Around line 156-159: Remove the debug println! call from the Ok(ev) branch in
the integration test while preserving the existing events.push(ev) behavior.
- Around line 134-148: Extract the duplicated weather-run assertion logic from
test_microagent_integration_anthropic and its OpenAI counterpart into an async
assert_weather_run(provider, model) helper, passing each test’s provider and
model while preserving all assertions. Update both missing-key early returns to
emit an eprintln skip message naming the unset environment variable before
returning.

In `@microagents-events/src/lib.rs`:
- Around line 184-190: Replace the untagged serialization on
AssistantMessagePart with an explicitly tagged representation using a stable
type discriminator and snake_case variant names, and reject unknown fields on
the part payload structs. Update JSONL/SQLite deserialization to migrate
existing untagged persisted payloads into the new tagged format while preserving
compatibility with current sessions.

In `@microagents-storage/src/jsonl.rs`:
- Around line 194-206: Extend the persistence round-trip tests so structured
assistant content is verified after get_session: in
microagents-storage/src/jsonl.rs lines 194-206, add ToolCall and Thinking parts
to the fixtures and assert events[2].content and events[3].result equal those
fixtures; apply the same content/result equality assertions in
microagents-storage/src/sqlite.rs lines 267-278 after get_session.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f2378ebc-e173-409d-954e-626ff4350d52

📥 Commits

Reviewing files that changed from the base of the PR and between 6972770 and b4c85b8.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (13)
  • jakefile.toml
  • microagents-cli/src/init_env.rs
  • microagents-cli/src/tui/mod.rs
  • microagents-core/Cargo.toml
  • microagents-core/src/agent.rs
  • microagents-core/src/common.rs
  • microagents-core/src/types.rs
  • microagents-core/tests/integration_test.rs
  • microagents-events/src/lib.rs
  • microagents-events/src/types.rs
  • microagents-storage/src/jsonl.rs
  • microagents-storage/src/memory.rs
  • microagents-storage/src/sqlite.rs
💤 Files with no reviewable changes (1)
  • microagents-cli/src/init_env.rs

Comment thread microagents-cli/src/tui/mod.rs Outdated
Comment thread microagents-core/src/agent.rs
Comment thread microagents-core/src/agent.rs
Comment thread microagents-core/src/agent.rs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
microagents-core/src/agent.rs (1)

659-666: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Reset the terminal message for every generation pass.

After a tool call, a follow-up stream that ends without Complete reuses the previous iteration’s assistant_message; the guard then records that stale tool-call message as a successful response and session stop. Set it to None at the start of each loop iteration.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@microagents-core/src/agent.rs` around lines 659 - 666, Reset
assistant_message to None at the beginning of every generation loop iteration,
before processing the follow-up stream. Update the loop surrounding the existing
assistant_message declaration/guard so each pass starts without a prior terminal
message, while preserving the successful-response handling when the current
stream produces one.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@microagents-cli/src/init_env.rs`:
- Around line 41-43: Update the provider mapping for ANTHROPIC_API_KEY in the
provider inference configuration so it resolves to "anthropic" instead of
"openai". Leave the OPENAI_API_KEY mapping unchanged, ensuring Anthropic-only
configuration selects the Anthropic provider.

In `@microagents-cli/src/main.rs`:
- Around line 35-38: Update the help documentation for the provider field in the
CLI argument definition, removing the claim that omission unconditionally falls
back to OpenAI. Describe that the provider is inferred from configured
environment variables, may select Anthropic, and errors when no provider is
configured; leave the provider option and default behavior unchanged.

In `@microagents-events/src/lib.rs`:
- Around line 383-384: Add an explicit replay-safe no-op match arm for the
ToolAnyCall event in the TUI event handling logic in
microagents-cli/src/tui/mod.rs. Keep the existing ToolCall rendering behavior
unchanged, and ensure replaying persisted ToolAnyCall events does not reach
unreachable! or panic.

---

Outside diff comments:
In `@microagents-core/src/agent.rs`:
- Around line 659-666: Reset assistant_message to None at the beginning of every
generation loop iteration, before processing the follow-up stream. Update the
loop surrounding the existing assistant_message declaration/guard so each pass
starts without a prior terminal message, while preserving the
successful-response handling when the current stream produces one.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: dd96b582-7c6c-4e3d-a008-309f7b0b996e

📥 Commits

Reviewing files that changed from the base of the PR and between b4c85b8 and 0d0423e.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (13)
  • .github/workflows/lint.yaml
  • microagents-cli/Cargo.toml
  • microagents-cli/src/init_env.rs
  • microagents-cli/src/main.rs
  • microagents-cli/src/tui/mod.rs
  • microagents-core/Cargo.toml
  • microagents-core/src/agent.rs
  • microagents-core/src/common.rs
  • microagents-core/tests/integration_test.rs
  • microagents-events/Cargo.toml
  • microagents-events/src/lib.rs
  • microagents-storage/Cargo.toml
  • search-evals/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (1)
  • microagents-cli/src/tui/mod.rs

Comment thread microagents-cli/src/init_env.rs
Comment thread microagents-cli/src/main.rs
Comment thread microagents-events/src/lib.rs
@AstraBert
AstraBert merged commit 7dd6294 into main Jul 30, 2026
6 checks passed
@AstraBert
AstraBert deleted the feat/switch-to-llms-sdk branch July 30, 2026 12:04
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant