The Rust Agent tool only persisted queued metadata, so delegated work never actually ran. This change wires Agent into a detached background conversation path with isolated runtime, API client, session state, restricted tool subsets, and file-backed lifecycle/result updates. Constraint: Keep the tool entrypoint in the tools crate and avoid copying the upstream TypeScript implementation Rejected: Spawn an external claw process | less aligned with the requested in-process runtime/client design Rejected: Leave execution in the CLI crate only | would keep tools::Agent as a metadata-only stub Confidence: medium Scope-risk: moderate Reversibility: clean Directive: Tool subset mappings are curated guardrails; revisit them before enabling recursive Agent access or richer agent definitions Tested: cargo build --release --manifest-path rust/Cargo.toml Tested: cargo test --manifest-path rust/Cargo.toml Not-tested: Live end-to-end background sub-agent run against Anthropic API credentials
18 lines
645 B
Rust
18 lines
645 B
Rust
mod client;
|
|
mod error;
|
|
mod sse;
|
|
mod types;
|
|
|
|
pub use client::{
|
|
oauth_token_is_expired, read_base_url, resolve_saved_oauth_token, resolve_startup_auth_source,
|
|
AnthropicClient, AuthSource, MessageStream, OAuthTokenSet,
|
|
};
|
|
pub use error::ApiError;
|
|
pub use sse::{parse_frame, SseParser};
|
|
pub use types::{
|
|
ContentBlockDelta, ContentBlockDeltaEvent, ContentBlockStartEvent, ContentBlockStopEvent,
|
|
InputContentBlock, InputMessage, MessageDelta, MessageDeltaEvent, MessageRequest,
|
|
MessageResponse, MessageStartEvent, MessageStopEvent, OutputContentBlock, StreamEvent,
|
|
ToolChoice, ToolDefinition, ToolResultContentBlock, Usage,
|
|
};
|