open-standards/wai/wai-app/templates/AGENTS.md
Transaction Science 608cd843e9 wai-app: Create's crate, a library with no binary, whose export wai create writes
wai/wai-ui becomes wai/wai-app, the library `wai_app`, with no binary and no `cli`
feature: `wai`, built with its feature `app`, is its command line and its MCP
server. Its served files are named wai-app-* (the WebAssembly package wai_app),
the recordings wai-app-*.json.

- export.rs gives the files of a starter project for a program and the facts its
  project file holds (title, summary, `wai dev`'s mode for the app's room, a watch
  room's file, a show's audience); `wai create --from app.oui` writes them, the
  project file and the licence. The export no longer writes app.json, room.toml,
  relay.toml, package.json, check.mjs or serve.mjs: wai.json names the room, `wai
  dev` runs it and `wai app check` checks the project. Its README and AGENTS.md
  say so, and the README its licence.
- runtime.rs reads a Create runtime by its listing (create/wai-app-runtime.json),
  checking each file's SHA-256.
- bridge.rs keeps the bridge on 127.0.0.1 a coding agent streams a program into
  the page through, with a stream helper; the stdio server, its tools and the
  binary's test go (`wai mcp --toolset app` serves them).
- The page's Export hands over app.oui, the program in its canonical form, and the
  command that makes it a project; the ZIP writer and the page's export in
  WebAssembly go. The page names `wai mcp --toolset app` for the coding agent.
- joule-ui/docs/create.md §4 and §5: the export as `wai create --from app.oui`, and
  the agent's tools app_guide, app_check, app_stream and app_export.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 05:13:27 -04:00

21 lines
1.2 KiB
Markdown

# Working on this project
This is a WAI app. `app.oui` is the app, written in joule-ui's line language (SPEC §11 of
joule-ui): one widget a line, `name = Widget(arguments)`, `root` first. The page renders
it with the WAI widgets in `vendor/create/`, and `wai dev` runs the room that `wai.json` names.
- To change the app, edit `app.oui`, then run `wai app check`. A line the registry does not
accept is refused with its line and a reason code; fix that line.
- Keep `wai.json`'s `dev` block matching the app's room: a `Room` is `"mode": "room"`; a
`WatchTogether` is `"mode": "watch"` with `"watch": "media/<source>"` (and `"watch_ms"` for a
file that is not WAV); a `Show` is `"mode": "show"` with `"audience"` equal to its audience.
- Run it with `wai dev`; `wai dev --check` checks every piece and stops.
- Do not edit `vendor/`: it is the runtime, checked file by file against `vendor.json`.
- Never put a key, a token or any other secret in this repository. Development keys are
made in `.wai/` by `wai dev` and stay there.
- WAI's tools for a coding agent: `wai mcp --toolset core,dev,app` (`wai setup-agent`
registers it). `app_check` checks a program, as `wai app check` does.
## The language and the widgets
{{GUIDE}}