oharness-loop 0.1.0

Agent, Loop trait, ReactLoop, ConversationLoop, and run_reflexion for open-harness
Documentation
[package]
name = "oharness-loop"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
description = "Agent, Loop trait, ReactLoop, ConversationLoop, and run_reflexion for open-harness"
readme = "README.md"
keywords = ["agent", "react", "reflexion", "llm", "loop"]
categories = ["api-bindings", "asynchronous"]

[lints]
workspace = true

[features]
default = ["react"]
react = []
# M2 part 2: conversational user-simulator loop + reflexion helper.
conversation = []
reflexion = []
# Convenience forwarding feature so the `llm_judge_critic` example
# can use `required-features = ["llm-judge"]`. Turns on
# `oharness-critic/llm-judge` transitively; no other effect.
llm-judge = ["oharness-critic/llm-judge"]

[dependencies]
oharness-core = { workspace = true }
oharness-llm = { workspace = true }
oharness-tools = { workspace = true }
oharness-memory = { workspace = true }
oharness-trace = { workspace = true }
oharness-critic = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
async-trait = { workspace = true }
tokio = { workspace = true }
tokio-util = { workspace = true }
tracing = { workspace = true }
time = { workspace = true }

[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
futures = { workspace = true }
tempfile = "3"
# For the `budget_enforcement` example only — keeps the budget crate
# out of the default dep graph.
oharness-budget = { workspace = true }

# `reflexion_run` uses the `run_reflexion` helper which is gated
# behind the `reflexion` cargo feature; declare it explicitly so
# `cargo run --example reflexion_run` works (and so the workspace
# example build under `--all-features` picks it up).
[[example]]
name = "reflexion_run"
required-features = ["reflexion"]

# `llm_judge_critic` wraps oharness-critic's `LlmJudgeCritic` which
# lives behind `oharness-critic/llm-judge`. The `llm-judge` feature
# on this crate forwards to that so `required-features` accepts a
# local name (cargo doesn't allow crate/feature syntax here).
[[example]]
name = "llm_judge_critic"
required-features = ["llm-judge"]

# `multi_agent_conversation` drives a `ConversationLoop` which
# lives behind the `conversation` feature on this crate.
[[example]]
name = "multi_agent_conversation"
required-features = ["conversation"]