This is an agents-only codebase. All PRs are reviewed and merged by agents. Humans contribute as QA testers. See CONTRIBUTING.md.
- Monorepo:
packages/miladywithin eliza-ok - Runtime baseline: Node 22+ (keep Node + Bun paths working)
Accept: bug fixes, security fixes, test coverage, documentation accuracy, performance improvements (with benchmarks).
Deep review required: new features, plugins, architectural changes, memory/context improvements. Must include tests and benchmarks proving value.
Reject: aesthetic/UI redesigns, theme changes, visual "improvements" that don't enhance agent capability. This project prioritizes agent quality over human-facing aesthetics. De-emphasize and decline these firmly.
- Does it stay in scope?
- Does it break anything?
- Is it secure? (assume adversarial intent)
- Is it tested?
- Is it necessary?
- Source code:
src/— runtime insrc/runtime/, CLI wiring insrc/cli/, config insrc/config/, providers insrc/providers/, hooks insrc/hooks/, utils insrc/utils/, types insrc/types/ - Tests: colocated
*.test.tsalongside source files - Build output:
dist/(viatsdown) - Entry points:
src/entry.ts(CLI),src/index.ts(library),src/runtime/eliza.ts(elizaOS runtime) - Apps:
apps/app/(Capacitor mobile/desktop, includes React UI),apps/chrome-extension/ - Deployment:
deploy/(Docker configs) - Scripts:
scripts/(build, dev, release tooling) - Tests:
test/(setup, helpers, mocks, e2e scripts) - Skills:
skills/(cached skill catalog)
- Install deps:
bun install - Type-check/build:
bun run build(runs tsdown + UI build) - Lint/format:
bun run check - Run CLI in dev:
bun run milady ...orbun run dev:cli - Tests:
bun run test(parallel unit + playwright),bun run test:e2e,bun run test:live - Coverage:
bun run test:coverage
- Language: TypeScript (ESM). Prefer strict typing; avoid
anyandunknownunless absolutely necessary. - Formatting/linting via Biome; run
bun run checkbefore commits. - Add brief code comments for tricky or non-obvious logic.
- Aim to keep files under ~500 LOC; split/refactor when it improves clarity or testability.
- Do not remove exception-handling guards in
apps/app/electron/src/native/agent.tsas "excess" or during deslop/cleanup. The try/catch and.catch()there keep the desktop app usable when the runtime fails to load (API server stays up, UI can show error). Seedocs/electron-startup.md. - Do not remove NODE_PATH setup code in
src/runtime/eliza.ts,scripts/run-node.mjs, orapps/app/electron/src/native/agent.ts. Without it, dynamic plugin imports fail with "Cannot find module". Seedocs/plugin-resolution-and-node-path.md. - Do not remove the Bun exports patch in
scripts/patch-deps.mjs(patchBunExports). It fixes "Cannot find module" for plugins whose published package.json pointsexports["."].bunat missing./src/index.ts. See "Bun and published package exports" indocs/plugin-resolution-and-node-path.md. - Naming: use Milady for product/app/docs headings; use
miladyfor CLI command, package/binary, paths, and config keys.
- Direct imports in
src/:@elizaos/core,@clack/prompts,chalk,commander,dotenv,json5,zod - Workspace plugins (
@elizaos/plugin-*): loaded at runtime, each with their ownpackage.json - Do not add dependencies unless
src/code directly imports them
- Framework: Vitest with V8 coverage thresholds (25% lines/functions/statements, 15% branches)
- Naming: match source names with
*.test.ts; e2e in*.e2e.test.ts; live in*.live.test.ts - Run
bun run testbefore pushing when you touch logic
- Follow concise, action-oriented commit messages (e.g.,
milady: add verbose flag to send) - Group related changes; avoid bundling unrelated refactors
- PRs should summarize scope, note testing performed, and mention any user-facing changes
- Never commit real secrets, phone numbers, or live configuration values
- Use obviously fake placeholders in docs, tests, and examples
- Configuration lives at
~/.milady/milady.json; workspace at~/.milady/workspace/