botstadia-interface
The contracts between BotStadia's pieces, in one crate.
| Module | What it is |
|---|---|
declaration |
What an arena says about itself: inputs, outputs, bounds, no-action, control rate, budgets, wire sizes, stats, per-turn series and events. Declaration::problems lists anything incomplete. |
payload |
The per-turn input and output encoding, and the one validity rule for an output: structure, finiteness and declared bounds. Nothing is clamped. |
bundle |
A bot's bundle: its manifest (botstadia.toml), the bot kinds, and the limits on models and size. |
policy |
The policy shell's ONNX contract, version 1: names, metadata keys, the memory pair, and the one map from a policy's [-1, 1] onto declared bounds, pinned by tests/policy-golden.json (which botstadia-train checks too). |
archive |
The replay archive: one session's frames, for the arena's player. |
metrics |
The metrics file beside it: series, events, stats and the result, for the site. |
copy |
An arena's arena.toml: its name and site copy. |
player |
The messages between the site and an arena's player frame. |
The WIT worlds are in wit/: botstadia:arena for arena engines and botstadia:agent for bots. Features generate bindings for them:
| Feature | For |
|---|---|
arena-guest |
Arena engines (wasm32-wasip2), exported with export_arena! |
agent-guest |
Bots (wasm32-wasip2), exported with export_agent! |
host |
Anything that runs arenas and bots, on wasmtime |
toml |
Reading and writing arena.toml |
bundle |
Reading and writing a bundle's botstadia.toml |
Developing
To build a consumer against a local checkout, add an untracked patch to that consumer (for example in its git-ignored .cargo/config.toml):
[]
= { = "/path/to/botstadia-interface" }
Changes
- 0.2.0: the
agentworld isbotstadia:agent@0.2.0, adding thedeclarationimport (every arena's names, types, shapes and bounds) and themodelsimport (each bundled model's inputs, outputs and charge), so one program, the policy shell, can serve every arena and model. Newbundleandpolicymodules. - 0.1.0: first release.
Licence
MIT or Apache-2.0, at your choice.