diff --git a/AGENTS.md b/AGENTS.md index d909994..b90d355 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,8 +3,8 @@ Project-level context for AI agents working in this repository. > **⚠️ IMPORTANT: All work must be done in THIS source directory (`~/src/ollie/`).** > Never edit files under `~/.config/ollie/` — that is an install target. -> Changes made there are overwritten on the next `just install-data`. -> Edit source files here, then run `just` to build and install. +> Changes made there are overwritten on the next `make install-data`. +> Edit source files here, then run `make` to build and install. ## Project Overview Ollie is an AI agent runtime inspired by Plan 9: agent state and behaviors are exposed as files in a 9P namespace. Orchestration, scheduling, and UIs are external — shell scripts, editors, web apps. The core is minimal; capabilities come from composing scripts. @@ -53,41 +53,34 @@ ollie/ ← you are here ### Canonical source for prompts, tools, and skills -Do not edit `~/.config/ollie/` directly. It is an install target. Runtime data is copied from `data/` by `just install-data`; compiled tools are built into the same runtime tools directory by their build targets. The installed configuration also contains `backends.conf`, `sandbox.yaml`, agents, prompts, skills, scripts, and tools. +Do not edit `~/.config/ollie/` directly. It is an install target. Runtime data is copied from `data/` by `make install-data`; compiled tools are built into the same runtime tools directory by their build targets. The installed configuration also contains `backends.conf`, `sandbox.yaml`, agents, prompts, skills, scripts, and tools. ## Build System -The default `just` target builds and installs the KF6 variant. Build and install are separate phases. +The default `make` target builds, tests, and installs. Build and install are separate phases. ```bash -just # build + test + install (KF6) -just kf5 # build + install the KF5/Qt5 variant -just build # build core, 9P, lib9p, tools, and KDE -just core # go build ./... -just ninep # olliesrv and ollie-9p -just lib9p # native lib9p shared library and header -just toolsrv # toolsrv binary -just code-tools # Tree-sitter code-intelligence tools -just file-tools # Go file tools -just lsp-tools # LSP tools -just tools-web # web_fetch -just kde # KDE KF6 integration -just kde-kf5 # KDE KF5 integration -just install-data # runtime configuration, prompts, skills, scripts, and tools -just install-el # Emacs frontend -just test # core and lib9p tests -just test-core # cmd/olliesrv, cmd/toolsrv, shared packages, and toolsrv tests -just test-9p # lib9p tests -just test-remote # build-check toolsrv (`go build ./cmd/toolsrv/...`) -just clean # remove build artifacts +make # build + test + install +make build # build core, 9P, client, tools, and KDE +make core # go build ./... +make ninep # olliesrv and ollie-9p +make client # native lib9p shared library and header +make tools # compiled tools (code-intel, file, LSP, web) +make kde # KDE KF6 integration +make kde-kf5 # KDE KF5 integration +make install-data # runtime configuration, prompts, skills, scripts, and tools +make test # core and lib9p tests +make test-core # cmd/olliesrv, cmd/toolsrv, shared packages +make test-9p # lib9p tests +make clean # remove build artifacts ``` -Requires [just](https://github.com/casey/just): `cargo install just`. +Requires GNU Make. ## Testing The supported test entry points are: ```bash -just test -just test-core -just test-9p +make test +make test-core +make test-9p ``` -For direct Go testing, use the packages covered by `just test-core` and `just test-9p`. The current repository does not contain the former `cmd/ollie-remote` package; remote tool execution is implemented by `toolclient.SpawnRemote` and the remote toolsrv deployment path. +For direct Go testing, use the packages covered by `make test-core` and `make test-9p`. ## Language & Conventions - **Go** (root module): Go 1.25+, standard library preferred, minimal dependencies. @@ -136,7 +129,7 @@ Runtime configuration is read from `~/.config/ollie/` (or `$XDG_CONFIG_HOME/olli - `OLLIE_BACKEND` is a fallback when no configured backend or session backend is selected. - `OLLIE_MODEL` is a legacy/environment model fallback; configured backend sections can set `model = ...`. - The runtime path helpers honor `XDG_CONFIG_HOME`, `XDG_DATA_HOME`, and `XDG_RUNTIME_DIR`. -- The current `justfile` install targets use `~/.config/ollie`, `~/.local/share/ollie`, and `~/.local/bin` directly; non-default XDG locations therefore require adjusting the install targets or copying the installed files manually. +- The Makefile install targets use `~/.config/ollie`, `~/.local/share/ollie`, and `~/.local/bin` directly; non-default XDG locations require adjusting the install targets or copying the installed files manually. - Runtime tools are discovered from `$XDG_CONFIG_HOME/ollie/tools` (default: `~/.config/ollie/tools`). - OptMem runtime data is under `$XDG_DATA_HOME/ollie/optmem` (default: `~/.local/share/ollie/optmem`). ## Adding a new tool @@ -147,26 +140,26 @@ Runtime configuration is read from `~/.config/ollie/` (or `$XDG_CONFIG_HOME/olli ```json {"description":"...","prompt":"...","args":{...},"tier":"hot","readOnly":false} ``` -3. Run `just install-data` to install +3. Run `make install-data` to install ### Compiled tool (Go) 1. Create a package under `tools//cmd//main.go` - Read JSON args from stdin, write result to stdout, exit 0/1 - Share library code in `tools//` (e.g. `tools/lsp/`) 2. Create `.meta` alongside `main.go` in the same `cmd//` directory (same format as above) -3. Add a build target in the justfile that compiles to `{{cfg}}/tools/` **and** installs the `.meta` file alongside it -4. Run `just` to build and install +3. Add a build target in the Makefile that compiles to `$(CFG)/tools/` **and** installs the `.meta` file alongside it +4. Run `make` to build and install -The `.meta` file lives with the code that produces the tool, not in `data/tools/`. See the `lsp-tools` just target for the canonical pattern. +The `.meta` file lives with the code that produces the tool, not in `data/tools/`. See the `tools` target in the Makefile for the canonical pattern. Both paths produce the same result: an executable + `.meta` in `$XDG_CONFIG_HOME/ollie/tools`. The registry doesn't distinguish between scripts and binaries. ## Adding a new prompt 1. Write the markdown file in `data/prompts/` 2. If it should be loaded by default, reference it in `data/agents/default.json` -3. Run `just install-data` to install +3. Run `make install-data` to install ## KDE development -KDE integration is part of this repository under `kde/`. Build and install it through the root `justfile` targets. The component has its own `kde/justfile` for focused KDE builds. +KDE integration is part of this repository under `kde/`. Build and install it through the root Makefile targets (`make kde` or `make kde-kf5`). ## Key Lessons (Aug 14–17 session)