Every chat session now runs through the Hermes bridge, so the three chat chains become feature-equivalent instead of three partially-maintained dispatch paths. Keeping the coding-agent and in-house agent runtimes alive meant every bridge change had to be mirrored into two more runtimes that had already drifted. Historical rows are read, not migrated: sessions stored with the retired source normalize to cli on load, workflow graphs naming the retired agents keep loading and run on the bridge, and the visible-source check plus SOURCE_LABELS still recognize the old value so those sessions stay listed. The public surface follows the code: the OpenAPI generator and the MCP chat-run tool schema drop the six retired entry fields so external callers are not told about runtimes that no longer exist. harness-check gains a RETIRED_RUNTIME scan so the residual check is a mechanical gate instead of a manual grep, with the two surviving read-side compat sites recorded with reasons. Refs: docs/phases/phase_003.md
65 lines
2.7 KiB
Markdown
65 lines
2.7 KiB
Markdown
# Agent Map
|
|
|
|
This file is a short map for coding agents. Keep detailed guidance in `docs/`
|
|
and keep this file small enough to fit into every task context.
|
|
|
|
## First Reads
|
|
|
|
- `DEVELOPMENT.md` - project commands, coding rules, test rules, and PR shape.
|
|
- `ARCHITECTURE.md` - package boundaries, data ownership, and runtime flow.
|
|
- `docs/harness/README.md` - how this repository is prepared for agent work.
|
|
- `docs/harness/validation.md` - which checks to run for each change type.
|
|
- `docs/harness/worktree-runbook.md` - isolated local dev and test setup.
|
|
- `docs/harness/pr-review.md` - self-review checklist before pushing.
|
|
|
|
## Common Commands
|
|
|
|
```bash
|
|
npm ci --ignore-scripts
|
|
npm run harness:check
|
|
npm run test
|
|
npm run test:e2e
|
|
npm run build
|
|
```
|
|
|
|
Use the smallest relevant check while iterating. Before a broad PR, run
|
|
`npm run harness:check`, `npm run test:coverage`, `npm run test:e2e`, and
|
|
`npm run build`.
|
|
|
|
## Code Ownership Map
|
|
|
|
- `packages/client/src` - Vue 3 client, stores, routes, i18n, API helpers.
|
|
- `packages/server/src` - Koa API, Socket.IO, persistence, Hermes integration.
|
|
- `packages/skills` - built-in skills injected into the Hermes skills directory.
|
|
- `tests/client`, `tests/server`, `tests/shared` - Vitest coverage.
|
|
- `tests/e2e` - Playwright browser coverage with mocked backend services.
|
|
- `.github/workflows` - CI, release, and Docker packaging automation.
|
|
|
|
## Hard Rules
|
|
|
|
- Keep routes thin: put request handling in controllers and reusable behavior in services.
|
|
- Keep Web UI state under `HERMES_WEB_UI_HOME` or `HERMES_WEBUI_STATE_DIR`.
|
|
- Keep Hermes Agent state separate from Web UI state.
|
|
- Register local API routes before proxy catch-all routes.
|
|
- Use structured APIs and argument arrays instead of shell string construction.
|
|
- Add user-facing strings to every locale file.
|
|
- Do not mix unrelated refactors into a bug fix.
|
|
|
|
## Red Lines
|
|
|
|
- `packages/server/src/services/hermes/agent-bridge/python/` is read-only vendored code.
|
|
- The `/chat-run` Socket.IO event contract must not change event names, field names,
|
|
field types, or emission timing. Adding optional fields is allowed.
|
|
- Hermes `state.db` is read-only. Node-side code must never open it; read session
|
|
history through the bridge's `getHistory`/`getOutput` instead.
|
|
- `services/hermes/group-chat/`, `lib/context-compressor/`, and
|
|
`services/hermes/context-engine/` are the chat chain: changes require a
|
|
`docs/chat-chain-changes/<date>-<slug>.md` fragment.
|
|
- `packages/desktop` and `packages/website` are removed; do not reintroduce them.
|
|
|
|
## When The Agent Gets Stuck
|
|
|
|
Improve the harness instead of repeating the same prompt. Add missing docs,
|
|
tests, logs, scripts, or CI checks so the next agent can see and verify the
|
|
constraint directly.
|