What your team gets
- Every source (quest rewards, drops, selling) and sink (repairs, shops, upgrades) of each currency, as an amount per hour of play.
- Per currency: sources, sinks and net per hour, against the net your design aims for. A net far from the target shows in warning colour.
- A bar chart of the flows per hour, sinks in red.
- Your agent changes the economy by asking (“cut quest gold by 10%”) and can scale all sources or sinks of a currency at once.
Ask your agent
Economy balance sheet. Your agent builds, seeds and checks the app.
The manifest
Seed the data
An agent edit: “cut quest gold by 10%”
Read the flows:quest-gold has "amountPerHour": 1200 and a revision, here 1. Write the change:
conflict means someone changed the flow: read again and retry. For “make every gold sink 15% bigger”, call the app’s tool while the person has it open: summer_app_call with { "tool": "scale_flows", "input": { "currency": "gold", "kind": "sink", "percent": 15 } }.
Check the look
After every publish:summer_app_screenshot { "appId": "<app id>" }summer_app_screenshot { "appId": "<app id>", "width": 390 }summer_app_screenshot { "appId": "<app id>", "theme": "dark" }summer_app_screenshot { "appId": "<app id>", "params": { "currency": "gems" } }if the app reads the currency from launch params.
errors and console.
What it uses
SDK:summer.ready (its params for a starting currency); summer.data.collection("currencies") and summer.data.collection("flows") with .list() and .subscribe(); summer.data.commands() to save table edits and scale_flows in one revision; summer.agent.tool("scale_flows"); summer.page.declare() with a choice field for the currency.
Kit: summer-page; summer-toolbar with summer-segmented (one option per currency); summer-stats and summer-stat (sources, sinks and net per hour; the net with delta against the target and tone="warn" when it is more than 20% away); summer-chart (kind="bar", x="name", y ["perHour"], highlight { "key": "kind", "equals": "sink", "tone": "bad", "label": "Sinks", "otherLabel": "Sources" }); summer-table (row-key="id", sortable, an editable amount column with format: "number"); summer-save-bar; summer-dialog with summer-form and summer-select to add a flow.
The numbers per currency:

