Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ repository = "https://github.com/Dione-b/procyon"
readme = "README.md"
keywords = ["stellar", "soroban", "tui", "agent", "smart-contracts"]
categories = ["command-line-utilities", "development-tools"]
exclude = [".github/", ".env.example", ".gitignore"]

[dependencies]
# UI e terminal
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ account keys and contract interfaces, and Node/`npx` for the [Caatinga](#caating
## Status

Early. The core loop works — streaming, tool calling, workspace confinement, context compaction,
MCP, session persistence, twelve providers — with 369 tests and CI. What to expect:
MCP, session persistence, twelve providers — with 389 tests and CI. What to expect:

- **No per-operation approval.** File writes are confined to the workspace but not individually
confirmed. Mainnet is a switch you set once, not a prompt. See [Safety](#safety).
Expand Down Expand Up @@ -227,7 +227,7 @@ to compact rather than corrupt the transcript.
## Development

```bash
cargo test # 369 tests, no network, no toolchain
cargo test # 389 tests, no network, no toolchain
cargo test -- --ignored # 8 more, needing network or an installed toolchain
cargo clippy --all-targets -- -D warnings
cargo fmt --all --check
Expand Down
2 changes: 1 addition & 1 deletion src/agent/subagent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ pub async fn run_subagent(
let max_output = subagent_config.max_tokens.unwrap_or(config.max_tokens) as usize;
let envelope = crate::budget::price_envelope(Some(&subagent_config.system_prompt), &tool_defs);
let ceiling = crate::budget::threshold_tokens(crate::budget::usable_window(
crate::budget::context_window(model),
crate::budget::context_window(config.provider, model),
max_output,
));

Expand Down
6 changes: 5 additions & 1 deletion src/anthropic/stream.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,11 @@ impl EventSink for StreamState<'_> {
Delta::TextDelta { text } => {
// A delta for a block that was never opened still belongs somewhere: dropping
// it would lose text the user has already been shown.
match self.blocks.entry(index).or_insert_with(|| Partial::Text(String::new())) {
match self
.blocks
.entry(index)
.or_insert_with(|| Partial::Text(String::new()))
{
Partial::Text(buffer) => buffer.push_str(&text),
// Text arriving on a tool block is not something this format produces;
// appending it to the argument string would corrupt the call.
Expand Down
Loading
Loading