Package config ports config.ts's config discovery + loading: it finds a
codegen config file (codegen.yml/codegen.json/package.json), parses it, and
exposes a CodegenContext that carries the config plus CLI-flag overrides.
Load finds and parses the config, honoring an explicit --config path
(file or directory). Returns the parsed config, its filepath, and the
directory it was resolved from (the context cwd).
Validate ports the normalize() config validation in codegen.ts: it verifies
the `generates` field exists, every output has plugins, and a schema is
reachable (root-level or per-output).
Context carries the resolved config + provenance and applies CLI-flag
overrides. It mirrors the CodegenContext class in config.ts (minus the
graphql-config project integration, deferred per D8).
New builds a Context. Like upstream, all relative schema/document/output
paths resolve against the process working directory (or an explicit --cwd),
NOT the config file's directory.