All checks were successful
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 1m48s
standards workspaces build + test / aac-rs (pull_request) Successful in 36s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 37s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 34s
standards workspaces build + test / map-rs (pull_request) Successful in 31s
standards workspaces build + test / mesh-rs (pull_request) Successful in 25s
standards workspaces build + test / openpay (pull_request) Successful in 1m27s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m50s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m18s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m12s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m10s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m38s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m6s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 2m35s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 2m39s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 2m39s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m33s
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Successful in 2m14s
LlmReply carried a bare `microjoules`, and charge_llm_step tagged every model step Estimated. A backend that ran a model in this process and read it on a live counter (an eoc-local backend's MeterSpan, now backed by the per-process counter) had no way to say so. Its measured figure was recorded as an estimate. - LlmReply carries a JouleCost. LlmReply::new is the provider's estimate, as before, and LlmReply::with_cost gives a figure with its grade. - charge_llm_step records the provider's cost as graded and charges the budget that figure. - NeuralProvider wraps any in-process NeuralBackend as an LlmProvider. The reply's energy is the backend's own JouleCost. Tokens are counted from the text (approx_tokens, or the model's tokenizer through with_token_counter) and feed only the token budget. A model served over the network still reports an estimate: it ran on hardware no counter here reads. Tests: an MlcBackend metered by an advancing counter gives a measured span, and a held, failed or stub counter gives the estimate. A whole ReAct run records the model step measured. Reverting charge_llm_step to always-estimated fails both end-to-end tests. Co-Authored-By: Claude Opus 5.5 <[email protected]>
24 lines
742 B
TOML
24 lines
742 B
TOML
[package]
|
|
name = "eoc-agent"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
authors.workspace = true
|
|
description = "EOC — agentic loops (ReAct, Reflexion, ToT, LATS, Plan-and-Execute, CodeAct) with per-step token + joule budgets."
|
|
|
|
[dependencies]
|
|
eoc-core.workspace = true
|
|
eoc-meter.workspace = true
|
|
eoc-neural.workspace = true
|
|
|
|
serde = { workspace = true }
|
|
serde_json = "1"
|
|
thiserror.workspace = true
|
|
async-trait.workspace = true
|
|
tokio = { workspace = true, features = ["macros", "rt", "sync", "time"] }
|
|
|
|
[dev-dependencies]
|
|
eoc-local = { path = "../eoc-local", features = ["mlc"] }
|
|
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
|