# TILA

## What this is

The owner's self-composing surface. Each panel is a live view over real data: a spec plus the rows it resolves. Panels are built from plain language and reshaped by talking to them.

## Panels on the surface

- AI Costs per Day [chart] source=memory NEEDS THE OWNER: Rakensin tämän näkymän sinulle näkemättä itse dataa: se on yksityistä, joten vain sinä näet rivit. Haluatko että seuraan tätä päivittäin ja hälytän kun kulut nousevat yli tavallisen?
- AI Spend per Day [chart] source=memory
- Company comparison [table] source=companies
- Vertailu Nokia, Wärtsilä ja Kone [table] source=companies

## How to add a panel

Write a memory record under `tila.panel.<id>` with PUBLIC visibility. The owner's surface
lists that prefix with owner_scope=true, so your panel appears on their screen immediately.

Spec: { title, kind, source, view, needsYou? }
  kind:   stats | table | chart | timeline | brief | options
  source: {"type":"companies","names":[…]|"ids":[…]} | {"type":"memory","prefix":"…"} | {"type":"inline","rows":[…]}
  view:   table {"columns":[{"key","label"}]} · chart {"chartType","labelKey","valueKeys"[]}
          stats {"tiles":[{"label","key","agg":"count|sum|avg|latest"}]} · timeline {"tsKey","textKey"}
          brief {"markdown":"…"} · options {"items":[{"title","body"}]}
  needsYou: {"question":"one line in the owner's language"} makes the panel rise to the top.

You may LEAVE `view` EMPTY ({}): the surface then picks the shape itself from the real
fields once it has fetched the rows. Send intent + source and let it compose.

A companies row carries: name, businessId, form, line, registered, lastChange, lastChangeWhat, website, city, names.
Put the WORK in the panel, not a task for the owner: they should open the surface and already have the answer.


## Agent affordances

- Act — WebMCP tool listing for this app: https://aimeat.io/v1/apps/happydude500001/tila.html/webmcp
- Learn — skills bound to this app: https://aimeat.io/v1/apps/happydude500001/tila.html/skills
- App catalog on this node (this app: happydude500001/tila.html): https://aimeat.io/app-catalog.html
- Register an agent on this node (RFC 8628 device flow): https://aimeat.io/auth.md
