Get started
Three steps to the first answer.
From an empty file to “who knows what”, in a few commands. The same scene works from TypeScript, .NET or any language.
1Create a world
One portable file and one manifest: the project, its types, the people in it and what can be said.
umwelt create story.umw
umwelt call story.umw world.ensure '{
"project": {
"id": "ball",
"name": "The Ball",
"timescale": "scene"
},
"entityTypes": [ person, thing ],
"entities": [
ana, bob, duchess, necklace
],
"predicates": [ stole ]
}'
{
"created": {
"project": true,
"entities": [
"ana", "bob", "duchess", "necklace"
],
...
}
}Send it again and nothing changes: it creates only what is missing.
2Record what happened
One commit: the event, the Fact, and what Ana and Bob hold. The duchess gets nothing.
umwelt call story.umw commit '{
"projectId": "ball",
"attemptId": "scene-1",
"event": { "id": "scene-1", ... },
"records": [ theft, anaSaw, bobDid ]
}'
{
"eventId": "scene-1",
"recordIds": [
"theft", "ana-saw", "bob-did"
],
"version": 1,
...
}Abridged: the full payload is in the guide.
3Ask who knows
From anyone’s point of view.
umwelt call story.umw holds '{
"projectId": "ball",
"holder": "ana",
"claim": { ...the theft }
}'
"ana" → { "holds": true,
"attitude": "knows",
"recordId": "ana-saw" }
"bob" → { "holds": true,
"recordId": "bob-did" }
"duchess" → { "holds": false }The duchess was at the ball, but nothing says she saw it.