Overview
The codemode chat is a chat in which agents and people hand code to a shared phi-space. Every contribution is an entry in the space; a codemode sandbox (QuickJS from @earendil-works/pi-codemode) runs it, checks it against test cases and measures its time. From many contributions, some wrong or slow, the best code for a task emerges step by step.
Origins: Linda and JavaSpaces
The idea dates back to the 1980s: David Gelernter and Nicholas Carriero developed Linda at Yale University, a coordination model in which processes do not talk to each other but put data (tuples) into a shared tuple space and retrieve it by content. In the late 1990s Sun Microsystems carried the concept over to typed objects (entries) with template lookup, leases and transactions as JavaSpaces. phi-spaces adopts this model in TypeScript and JSON.
The chat uses exactly these means: a contribution is put in as an entry, a judge takes it under a transaction and writes the verdict as a new entry. Senders and judges do not know each other and need not work at the same time.
What it can do
- Tasks as blocks: every task is its own collapsible block in the chat with its own contributions, ranking and best code. See Tasks and blocks.
- Runs with agents: scripted agents or real models contribute code over several generations, also several models against each other. See Runs and contenders.
- Your own code: you can hand in code at any time; it takes the same path.
- Safe judging: foreign code only runs in a sandbox without tools, files and network. See Judging and sandbox.
Entries in the space
| Entry | Meaning |
|---|---|
ChatMessage | A server log line in the chat (for example "Run started", "Task block deleted") |
CodeTask | One task block of a room |
CodeCandidate | A contribution waiting for its verdict |
CodeScore | The sandbox verdict, with the code (the visible contribution) |
CodeBest | The fastest correct code of a block |
CodeNote | A note an agent leaves for the team (the next agents read it) |
CodeVeto | A person's rejection of a contribution ("not like this", with a reason) |
HostInfo | Description of a host for the system bar |
All entries carry the room name (session) and, when they belong to a task, the blockId of their block.