fabro/lib/apps/fabro-cli/tests/it/cmd
Bryan Helmkamp ef86ad278a
Carry usage as lithos-llm's Usage and rename billing to usage
Re-pin lithos-llm to 55add4596b861a0623d00c3a54aa5c147c8d504b and
pebble to c91810fe51aece80359b9cd8efea971af0c46925, where token usage
and cost travel together as Usage { tokens: TokenCounts, cost:
Option<Cost> }. Fabro now carries that one type everywhere it used to
carry BilledTokenCounts, BilledModelUsage, UsdMicros, or a token count
beside a cost_usd_micros.

fabro-types: billing.rs is usage.rs with ModelRef, ModelUsage { model,
usage }, sum_usage, and usage_is_empty; billing_rollup.rs is
usage_rollup.rs with ProjectionUsageStage, ProjectionUsageByModel,
ProjectionUsageRollup, and usage_rollup_from_projection. Every usage
field is named usage: StageProjection.usage and usage_by_model,
Outcome<Option<ModelUsage>>, stage.completed and stage.failed usage and
usage_by_model, prompt.completed usage, run.completed and run.failed
usage (total_usd_micros is gone), Conclusion.usage, StageSummary.usage,
Run.usage. RunSize buckets by Cost.

fabro-workflow: model_usage_from_llm prices tokens from the catalog with
a Catalog cost source, with_reported_cost keeps a provider cost, and the
pebble handler's stage_usage groups pebble's accounts by model and sums
rows with Usage::saturating_add, so a total has a cost only when every
priced part was priced. The store fold's live usage is the agent's
usage plus its descendants'.

API: the OpenAPI spec deletes BilledTokenCounts, BilledModelUsage,
CompletionUsage, CompletionCost, TokenUsage, and RunBillingSummary,
adds TokenCounts, Cost, Usage, and ModelUsage, and renames every
billing schema, property, tag, path, and operation to usage. fabro-api
reuses lithos-llm's and fabro-types' types through with_replacement,
with a round-trip test per replacement.

Old stored runs get no migration: their pebble events in the old shape
read back with zero usage, and their rebuilt projections lose agent
usage.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-14 12:31:34 -06:00
..
approve.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
archive.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
artifact_cp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
artifact_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
attach.rs Remove tests and fixtures tied to retired manifest fields 2026-09-13 08:55:55 -06:00
auth.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
cli_reference.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
config.rs Create CLI runs from immutable workflow intents 2026-09-01 16:14:34 -04:00
create.rs Simplify CLI repository selectors and add workflow shorthand 2026-09-12 14:18:34 -06:00
deny.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
diff.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
discord.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
docs.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
doctor.rs Point twin_doctor's isolated server at the twin 2026-09-14 09:41:05 -06:00
dump.rs Resolve one Git identity per run and inject it everywhere 2026-09-12 11:35:46 -06:00
events.rs Update run creation event fixtures and docs 2026-08-03 15:09:32 -04:00
exec.rs Read catalog policy from lithos core fields and metadata.agent 2026-09-09 23:20:12 -06:00
fabro.rs Select CLI workflow sources and run targets independently 2026-09-12 11:48:21 -06:00
fork.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
graph.rs Show each diagnostic's suggested fix in CLI output 2026-07-27 14:06:31 -04:00
inspect.rs Remove Git run metadata branches 2026-09-05 12:31:03 -04:00
install.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
json_global.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
logs.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
mcp.rs Simplify run creation to registered workflow versions 2026-09-12 11:04:15 -06:00
mod.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
model.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
model_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
model_test.rs Expose lithos request and response shapes through the API, server, CLI, and web 2026-09-09 17:26:57 -06:00
parent.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
parse.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_close.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_create.rs Make pull request creation durable and asynchronous 2026-08-01 19:28:52 -04:00
pr_link.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_merge.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_unlink.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
pr_view.rs fix(workflow): make publish failures terminal 2026-07-27 11:25:18 -04:00
preflight.rs Add model stylesheet templates 2026-08-25 18:14:25 -04:00
provider.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
provider_login.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
ps.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
render_graph.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
repo.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
repo_deinit.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
repo_init.rs Create CLI runs from immutable workflow intents 2026-09-01 16:14:34 -04:00
resume.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
rewind.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
rm.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
runner.rs Remove client-selected run IDs from the CLI 2026-08-01 11:47:11 -04:00
sandbox_cp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
sandbox_preview.rs Route Daytona sandboxes through the sandbox driver 2026-09-09 19:14:13 -06:00
sandbox_ssh.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_rm.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
secret_set.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
send_analytics.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
send_panic.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
server_start.rs Remove expired startup secret migrations 2026-09-05 14:05:48 -04:00
server_status.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
server_stop.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
start.rs Create CLI runs from immutable workflow intents 2026-09-01 16:14:34 -04:00
support.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
system.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_df.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_events.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_info.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_prune.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
system_repair.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
test_panic.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
top_level.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
unarchive.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
uninstall.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
upgrade.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
validate.rs Add on_failure="succeed" as an explicit failure policy 2026-08-26 07:34:24 -04:00
variable.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_get.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_rm.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
variable_set.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
version.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
wait.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
worker_auth.rs Remove client-selected run IDs from the CLI 2026-08-01 11:47:11 -04:00
workflow.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
workflow_create.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
workflow_list.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00