One Effect v4 Git core: smart-HTTP server, browser client, Unix CLI. Hosts are a Cloudflare Durable Object, Node, the browser, and the CLI.
Read docs/internals.md before changing code. Before writing Effect, read .claude/skills/effect and node_modules/effect/AGENTS.md; search node_modules/effect/src for anything they don't cover.
npm run check # oxfmt + oxlint
npm run fix
npm test # unit + workerd; interop skips without git
- No
node:*belowhost/except*.node.ts. Ports stayR = never— do not thread AlchemyRuntimeContextthrough them. - Errors:
Schema.TaggedError+httpApiStatusinsrc/git/Error.ts. Services:Context.Service+Layer.effect+Service.of. Stream; do not buffer bodies or object walks. Confignotprocess.env.Effect.catchnotcatchAll.Effect.fn("Domain.operation")on public methods. Noas anyor widen-then-assert; a cast needs aSAFETY:reason, and!is for an invariant the line above establishes, never for a check nobody made.- Verify git claims against the real
gitbinary.
Specs: docs/hub.md, docs/agents.md, docs/cli.md.