acp-runtime
AgentThe ACP runtime is the domain service that serves the ACP API contract. It owns the host-scoped dependencies needed to run…
The desktop app no longer has a `src/shared/` directory. Shared code has an explicit owner under `src/core/`:
The desktop app no longer has a `src/shared/` directory. Shared code has an explicit owner under `src/core/`:
contributions.
contracts, main-process registries, and renderer contributions.
Renderer-main traffic uses Wire. The desktop contract is assembled in `src/core/manifests/shared/desktop-wire-contract.ts`, served by `src/main/gateway/desktop-wire.ts`, and consumed through per-slice typed domain clients built on the seeded connection seam in `src/core/primitives/wire/browser/connection.ts` (the renderer bootstrap seeds the connection once via `src/renderer/lib/runtime/seed-desktop-wire.ts`). The shared manifest imports only slice API contracts. A drift test compares its keys and contract references with the lazy Node controller registry in `src/core/manifests/node/controllers.ts`.
Workspace packages are consumed exclusively through their `package.json` `exports` maps. Every `packages/*` package exposes a `development` condition pointing at `src/`; `dist` stays the default, so dev and packaged builds resolve differently by design. `tsconfig.base.json` sets `customConditions: ["development"]` so TypeScript follows the same resolution. There are no `@emdash/*` path aliases in any tsconfig or Vite config.
Within `packages/core`, internal imports use `#`-prefixed subpath imports declared in its `package.json` `imports` map (`#runtimes/*`, `#services/*`, `#primitives/*`).
App-internal aliases (`@/*`, `@core/*`, `@renderer/*`, `@main/*`, `@root/*`, `@tooling/*`) are defined in `apps/emdash-desktop/tsconfig.json` and mirrored in its `electron.vite.config.ts`.
When adding a provider:
1. add or update its plugin in `packages/plugins/src/agents/impl/` and register it in `packages/plugins/src/agents/registry.ts` 2. add any required env passthrough in the provider's plugin definition (`packages/plugins/src/agents/impl/`); PTY env construction lives in `packages/core/src/services/pty/api/terminal-env.ts` 3. add or update hook/plugin installation and parsing in provider plugin behavior if the provider supports explicit events; the TUI runtime installs and hosts hooks 4. update renderer surfaces that consume agent metadata through their slice domain clients 5. add tests for non-standard spawn or detection behavior
Emdash is the Open-Source Agentic Development Environment (🧡 YC W26). Run multiple coding agents in parallel. Use any provider.
The ACP runtime is the domain service that serves the ACP API contract. It owns the host-scoped dependencies needed to run…
This page defines the target organization of `packages/core/src/`. Core is organized by module type so that shared domain APIs…
Git is split into a transport contract and a host-scoped runtime. Renderer, desktop, and workspace-server code share the Wire…
The main process is organized into domain modules under `src/main/core/`. Each domain typically has a `controller.ts` (RPC…
`@emdash/core/primitives/path/api` is the source of truth for portable file identity and lexical path operations. The detailed…
Validates project structure against co-location and architecture patterns defined in AGENTS.md
Deprecated placeholder. Do not use; follow root AGENTS.md and package instructions instead.
Use this agent when you need to create or update technical documentation that helps developers understand the deep patterns,…
Orchestration patterns learned from experience. Review at startup and before heartbeat responses.