.cognet

axonl prepare writes everything it derives from the source here: types for the editor, the compiled mind. Nothing in it is edited by hand or committed. Deleting it is always safe — the next prepare writes it again.

A cognet inside an agent has no .cognet/ of its own; the same files go in the agent's .agent/cognet/.

.agent/cognet/
├── schema/          # types for every component, in all three languages
│   └── room/
│       ├── room.ts          # handles — #schema/room/room
│       ├── room.types.ts    # plain types — #schema/room/room.types
│       ├── room.rs          # crate::schema::room::room
│       └── room.py          # schema.room.room
├── native/          # with Rust: the generated crate and the built module
├── python/          # with Python: the environment
├── cognet.mjs       # the compiled mind
└── manifest.json    # what was built: name, version, ABI

The editor's view

Source uses globals it never imports — defineSystem, ecs, kernel. The generated declarations type them against this mind's own components and model roles, so a misspelt component or an undeclared role is an error in the editor, not at the first tick.

When to prepare

After changing a component, adding a system, or changing the config.