Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
5e4450a
AGENTS.md
Tiendil May 16, 2026
147e13e
specs -> old specs
Tiendil May 16, 2026
c3669aa
usage.md
Tiendil May 16, 2026
bd09d6d
config version
Tiendil May 16, 2026
aa335ab
wip
Tiendil May 16, 2026
4575847
defaults config section
Tiendil May 16, 2026
e636e74
wip
Tiendil May 16, 2026
4186f52
better default names
Tiendil May 16, 2026
99f2b8a
wip
Tiendil May 16, 2026
1946b3d
wip
Tiendil May 16, 2026
3b64ac1
wip
Tiendil May 16, 2026
1aa1245
configuration.md finished
Tiendil May 16, 2026
144b29c
removed deprecated journal demo gif
Tiendil May 16, 2026
344b3cb
initialization.md
Tiendil May 16, 2026
33e0b47
wip
Tiendil May 17, 2026
68d20b9
workflows.md
Tiendil May 17, 2026
bc4bf0e
wip
Tiendil May 17, 2026
34af62a
specs, begining
Tiendil May 17, 2026
5275717
behavior specs
Tiendil May 17, 2026
01aea45
dictionary
Tiendil May 17, 2026
4411331
naming.md
Tiendil May 17, 2026
921aab6
modules_layout.md
Tiendil May 17, 2026
c912751
errors.md
Tiendil May 17, 2026
319c7a9
entities.md
Tiendil May 17, 2026
585aee8
tests.md
Tiendil May 17, 2026
2f52a5e
removed old specs
Tiendil May 17, 2026
32f0eb0
tach
Tiendil May 17, 2026
37cf48b
depmesh integration
Tiendil May 17, 2026
100e806
decouple core from protocol
Tiendil May 17, 2026
6c26dbc
better protocol module positioning
Tiendil May 17, 2026
781480e
runtime module
Tiendil May 17, 2026
1578b3f
decouple domain & core
Tiendil May 17, 2026
a6e2c4e
better specs
Tiendil May 17, 2026
9b8ca73
journal moved from machine to context
Tiendil May 17, 2026
6598942
decouplin machine & context
Tiendil May 17, 2026
f77fa3e
better protocol specs
Tiendil May 17, 2026
76def51
two types of entities: domain + data
Tiendil May 17, 2026
c04a956
better protocol specs
Tiendil May 17, 2026
2c18e54
continue with protocol specs
Tiendil May 17, 2026
9e84220
specs
Tiendil May 17, 2026
33bfae4
better imports
Tiendil May 17, 2026
d974b6f
core & domain tests
Tiendil May 17, 2026
f90c4ca
tests
Tiendil May 18, 2026
4a50bde
skill tests
Tiendil May 18, 2026
cf984d4
machine tests
Tiendil May 18, 2026
1b31452
workspaces tests
Tiendil May 18, 2026
1782f51
context tests
Tiendil May 18, 2026
ed31a9a
primitives tests
Tiendil May 18, 2026
1b0600d
protocol tests
Tiendil May 18, 2026
f9e3b66
runtime tests
Tiendil May 18, 2026
231042f
lib tests
Tiendil May 18, 2026
0e3af20
fixed types
Tiendil May 18, 2026
e6769a3
mypu
Tiendil May 18, 2026
4e5cfbc
less code in tests
Tiendil May 18, 2026
5f4d9fa
less code
Tiendil May 18, 2026
a69719c
polish workflow fixed
Tiendil May 18, 2026
61fb1c3
changelog.md
Tiendil May 18, 2026
d95fee5
readme spec
Tiendil May 18, 2026
af6a947
fixing readme
Tiendil May 18, 2026
ea25126
wip
Tiendil May 18, 2026
471266a
wip
Tiendil May 18, 2026
62bb2a1
readme
Tiendil May 18, 2026
c5a9e78
wip
Tiendil May 18, 2026
8323b9f
wip
Tiendil May 18, 2026
28b2d4a
wip
Tiendil May 18, 2026
38418bb
wip
Tiendil May 18, 2026
cb0bb23
readme
Tiendil May 18, 2026
937f1ea
readme
Tiendil May 18, 2026
91ff9ce
readme
Tiendil May 18, 2026
e5a9e88
wip
Tiendil May 18, 2026
3d17689
wip
Tiendil May 18, 2026
602d995
wip
Tiendil May 18, 2026
7d98649
wip
Tiendil May 18, 2026
b087c59
wip
Tiendil May 18, 2026
4001c67
wip
Tiendil May 18, 2026
36f9ba9
wip
Tiendil May 18, 2026
5627a3d
wip
Tiendil May 18, 2026
3629675
wip
Tiendil May 18, 2026
72459e8
wip
Tiendil May 18, 2026
a71b63f
wip
Tiendil May 18, 2026
bcd2973
wip
Tiendil May 18, 2026
d7bcbab
wip
Tiendil May 18, 2026
ea93496
wip
Tiendil May 18, 2026
bed95d1
wip
Tiendil May 18, 2026
4c877fa
wip
Tiendil May 18, 2026
88529b0
spelling
Tiendil May 18, 2026
6b7f6e4
features
Tiendil May 18, 2026
4a560ea
features
Tiendil May 18, 2026
de4c7bb
wip
Tiendil May 18, 2026
f9c59b5
wip
Tiendil May 18, 2026
374cadc
wip
Tiendil May 18, 2026
18be7a6
wip
Tiendil May 18, 2026
c2e699f
wip
Tiendil May 18, 2026
f073ad1
spec updated
Tiendil May 18, 2026
be4b95f
poetry -> uv
Tiendil May 18, 2026
8760d8f
changes
Tiendil May 18, 2026
ebe1b76
changes approved
Tiendil May 18, 2026
0ac2aaa
spelling
Tiendil May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/code-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch_ref }}
ref: ${{ inputs.branch_ref || github.ref }}

- name: Build containers
run: ./bin/dev-build-containers.sh
Expand All @@ -35,5 +35,8 @@ jobs:
- name: Check types
run: ./bin/dev-check-semantics.sh

- name: Run tests
run: ./bin/dev-tests.sh

- name: Check runtime
run: ./bin/dev-check-runtime.sh
107 changes: 101 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,104 @@
# Instructions for the AI Agents

This document provides instructions and guidelines for the AI agents working on this project.
This document provides instructions and guidelines for the AI agents working on `donna`.

Every agent MUST follow the rules and guidelines outlined in this document when performing their work.
Every agent MUST follow these instructions.

## Donna tool
## Project Overview

Since this is the repository that contains the Donna project itself, you have direct access to the Donna CLI tool via `./bin/donna.sh` script. I.e. you develop Donna using Donna.
`donna` is a CLI tool that helps agents run predefined workflows in deterministic way.

In all commands that use `donna`, you MUST replace `donna` with `./bin/donna.sh` when you run the command.
Workflow is a state-machine / non-linear graph of operations that guides the agent's work. Each operation can run code, output text, provide instructions for the agent (to execute them and report back to Donna), or do other things. The agent's task is to follow the instructions of the operations and report back to Donna about the next operation to run.

For example, instead of `donna artifacts list` you MUST run `./bin/donna.sh artifacts list`.
Donna maintains the state of the workflow and the stack of operations.

So, you may look at `donna` as a Virtual Machine for agents, where agent is just one of the possible execution contexts, and workflows are programs that run in this VM.

## Source Of Truth

Project behavior and architecture are specified in `./specs/`.

Agents MUST read the relevant specifications before making changes.

Start from `./specs/intro.md` to find the relevant specification documents.

When adding, deleting, or significantly changing a specification, agents MUST update `./specs/intro.md`.

Agents MUST NOT create new specifications without explicit instructions.

Agents MUST NOT delete or significantly change existing specifications without explicit instructions.

## Development Environment

All development-related operations MUST be performed in Docker containers.

Agents MUST NOT perform development-related operations directly on the host machine.

Allowed development commands:

- `./bin/dev-tests.sh` — run all Python tests inside the container.
- `./bin/dev.sh` — run development utilities inside the container, for example `./bin/dev.sh uv run pytest`.
- `./bin/dev-build-containers.sh` — build base Docker images for development; use only after approved Docker or dependency changes.

Searching, reading, and editing repository files MAY be done on the host machine.

## Restricted Changes And Operations

Agents MUST NOT perform these operations without explicit permission:

- Change `docker-compose.yml` or Docker-related configuration.
- Change Docker runtime parameters such as resources or volumes.
- Change running Docker services unrelated to this project.
- Install new dependencies.
- Update lock files.
- Install new tools, utilities, or software on the host machine or in development containers.
- Change project structure by moving files or creating new top-level directories.

If one of these operations seems necessary, agents MUST ask for explicit permission before doing it.

## Implementation Guidance

Follow existing specifications and local project patterns.

Keep changes scoped to the requested task.

Do not implement behavior that is only mentioned as future or possible functionality unless explicitly requested.

When code is added, tests SHOULD follow `./specs/architecture/tests.md`.

When entities, errors, warnings, or module layout are affected, agents MUST check the corresponding architecture specs.

## Top priority tools

These tools MUST have the highest priority when an agent is deciding which tool to use for a given task:

### `donna`

We use Donna to develop Donna. We use the current development version of Donna. For convinience, use shortcut `./bin/donna.sh` to run current development version of Donna.

Use Donna to run workflows.

You may need to read the usage intructions for `donna`: `./bin/donna.sh -p llm skill usage` in these cases:

- You need to run a workflow first time in the session.
- You need to list available workflows first time in the session.

You run workflows only when explicitly instructed to do so by a developer or Donna itself. You MUST run workflows in that cases.

Donna is configured to log significant operation steps via `task` tool.

### `depmesh`

`depmesh` — a tool for discovering dependencies between project artifacts.

Agents MUST use `depmesh` for dependency types supported by its configuration.

At the start of each work session, read the `depmesh` usage instructions for details:

```bash
depmesh skill usage
```

### `ast-grep`

`ast-grep` — a tool for searching and manipulating Abstract Syntax Trees in code. Use it when you work with particular code patterns, structures, or constructs in the codebase.
Expand Down Expand Up @@ -81,3 +164,15 @@ You MUST NOT log:

- CLI commands you execute.
- Elementary or trivial steps.

You can read the logged journal with:

```bash
./bin/journal-tail.py --lines 20
```

### `rg`

Use `rg` for text and file searches unless a structural code query is needed.

`ast-grep` has a higher priority than `rg` whenever a structural code query is needed.
Loading
Loading