summaryrefslogtreecommitdiff
path: root/libpanto/src/root.zig
diff options
context:
space:
mode:
authorT <t@tjp.lol>2026-05-27 07:30:51 -0600
committerT <t@tjp.lol>2026-05-27 07:34:46 -0600
commit75fd7d7833052383e1b61d4275d12c9a993c02d3 (patch)
treee63f25a697cac215281afe76e71892a69af23cb2 /libpanto/src/root.zig
parenteddebe4e8131b7d2112b067fed07e7493d8b1984 (diff)
separate event for providing tool details
OpenAI and Anthropic have tool details (id, name) converge on different timelines. In all cases they are available in `onBlockComplete` which comes with the full block, and previously we had an optional `BlockMeta` argument to `onBlockStart` - the anthropic timeline. We removed the `BlockMeta` from `onBlockStart` since it was always going to be unreliable, and now have an explicit `onToolDetails` instead. This allows us to provide the tool id and name as early as possible from the openai provider (could be in the middle of content deltas), and provide a reliable signal across providers. Also, fix test output.
Diffstat (limited to 'libpanto/src/root.zig')
-rw-r--r--libpanto/src/root.zig12
1 files changed, 11 insertions, 1 deletions
diff --git a/libpanto/src/root.zig b/libpanto/src/root.zig
index 5dacfef..ff02d4d 100644
--- a/libpanto/src/root.zig
+++ b/libpanto/src/root.zig
@@ -1,3 +1,5 @@
+const std = @import("std");
+
pub const conversation = @import("conversation.zig");
pub const provider = @import("provider.zig");
pub const agent = @import("agent.zig");
@@ -25,7 +27,15 @@ const anthropic_messages_json = @import("anthropic_messages_json.zig");
const provider_anthropic_messages = @import("provider_anthropic_messages.zig");
test {
- const std = @import("std");
+ // Test contract: deliberate error-path tests should not produce visible
+ // log output. Library code logs at `.err` for genuine production failures
+ // and `.warn` for expected-failure paths exercised by tests; the test
+ // runner's logger gates on `std.testing.log_level`, which defaults to
+ // `.warn`. Raising it to `.err` silences expected warnings without
+ // changing production behavior. Anything that *should* be visible in a
+ // passing test must use `std.debug.print` or assert via the testing API.
+ std.testing.log_level = .err;
+
std.testing.refAllDecls(@This());
std.testing.refAllDecls(openai_chat_json);
std.testing.refAllDecls(provider_openai_chat);