Files
bot-agents/AGENTS.md
T
Danny Kim c8a150fee7 Drop Deno from the agents and spawn child processes directly (#22)
Co-authored-by: Danny Kim <temeddix@gmail.com>
Co-committed-by: Danny Kim <temeddix@gmail.com>
2026-10-18 14:40:48 +00:00

3.0 KiB

At the start of every new session, run damem recall in the terminal and treat its output as the context for this repository. If the damem command is not found, read INSTALL.md and follow it before reasoning or responding.

Pull requests

Land every change through a pull request. Immediately after creating one, comment @bot to request an AI-bot review. Wait for green CI and the bot's approval on the current head before merging. Never merge without the user's explicit permission.

Runtime and checks

The action's TypeScript runs directly on the job image's Node.js (24.2 or newer; package.json has no engines, the node:24-bookworm image pins it), which strips the types itself: there is no build step and no runtime dependency. Keep the sources to erasable syntax and .ts imports, which tsconfig.json enforces. Its strictness set is fixed and leaves exactOptionalPropertyTypes off (.agents/memory/ts-only-files-and-imports.md). Checks use Vite+: vp check formats, lints, and type-checks, and vp test runs Vitest. Unit tests sit next to the code as src/*.test.ts; repository-level tests live in tests/.

A # alias in package.json imports may point anywhere and owns its target: an alias to a folder's index.ts owns that folder and everything below it; an alias to any other file owns only that file. No overlap: no file may be owned by 2 aliases, so no alias inside another alias's area and no 2 aliases with the same target. Outside an area, only the exact alias reaches it; a deeper alias specifier or a relative path into the area is a bypass. Inside an area, relative imports of siblings and subfolders are free. A ../ import is banned in every file, owned or not (import/no-relative-parent-imports); runtime file URLs such as new URL("../prompt.md", import.meta.url) are paths, not imports, and stay. Files no alias owns need no index.ts and no alias, and import ./ siblings and subfolders freely. The one alias is #testing (./src/testing/index.ts): tests that use its helpers import it by alias, and tests/ imports src/ only through it. Local convention, stricter than the general rule above: in this repo, aliases point only at a direct subfolder of src/ ("#helpers": "./src/helpers/index.ts"), and code outside src/ uses ./ relative imports. scripts/ is flat: one file per tool, no subfolders and no index.ts, imported directly by file path (.agents/memory/imports-aliases-barrels.md).

The only config files are package.json, tsconfig.json, and vite.config.ts, plus package-lock.json. Repo-local lint rules and the rule list live in scripts/project-lint.ts. Lint disable comments are not allowed; fix the source instead.

The composite action uses npm only to install the externally distributed Claude Code, Codex, and OpenCode command-line tools; do not treat those vendor executables as repository TypeScript dependencies.