chore(packaging): align engines, drop typescript peer dep, remove dead .npmignore - #518
Conversation
…d .npmignore - engines.node >=18.0.0 -> >=18.17.0: undici 6.x requires Node >=18.17, so the old floor advertised support the dependency tree cannot deliver - remove peerDependencies.typescript: the published package ships compiled dist/ JS and .d.ts files; consumers never need the TS compiler installed, and the peer range only added install-time warnings for JS-only users - delete .npmignore: npm ignores it entirely when package.json "files" is present (which it is), so the file was dead config that could mislead contributors into thinking it gates the tarball - sync the Node-floor claims in CONTRIBUTING.md, docs/getting-started.md, and AGENTS.md https://claude.ai/code/session_01XNtnkLbBiXZxfQQYLMpucB
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
📝 WalkthroughWalkthroughthe pr bumps the minimum node.js version from 18.0.0 to 18.17.0 across the package engine declaration and all user-facing documentation. four ranges updated: package.json engines constraint, plus matching updates to AGENTS.md, CONTRIBUTING.md, and getting-started documentation. Node.js 18.17 Minimum Version Requirement
Estimated Code Review Effort🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Line 155: Update the package.json engines.node entry to ">=18.17.0" (change
the existing "node" floor to match [email protected]) and update the CI workflow
that defines the Node matrix (the job that uses node-version) to include
"18.17.x" alongside existing 20.x and 22.x so tests run against the new minimum;
target the engines.node key in package.json and the node-version matrix entries
in your CI workflow file.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 9b4d00eb-6d6f-4e56-a8c6-2f9ab11b8f9e
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (5)
.npmignoreAGENTS.mdCONTRIBUTING.mddocs/getting-started.mdpackage.json
💤 Files with no reviewable changes (1)
- .npmignore
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Greptile Review
🧰 Additional context used
📓 Path-based instructions (4)
**
⚙️ CodeRabbit configuration file
**: # PROJECT KNOWLEDGE BASEGenerated: 2026-04-25
Commit: a87e005
Branch: main
Package version: 2.2.0OVERVIEW
codex-multi-authis a Codex CLI-first OAuth account manager and optional forwarding wrapper for the official Codex CLI. The installedcodex-multi-authentrypoint handles account-management commands locally,codex-multi-auth-codexforwards official Codex commands through this package's wrapper when explicitly used, and runtime rotation can route live Responses traffic through a localhost account-rotation proxy by default. The plugin-host entrypoint remains exported for compatibility, but the primary product surface is the account manager, optional wrapper, storage, runtime proxy, and repair tooling.STRUCTURE
./ ├── scripts/ │ ├── codex.js # codex-multi-auth-codex wrapper, official CLI forwarder, shadow CODEX_HOME/runtime proxy setup │ ├── codex-multi-auth.js # standalone package CLI entrypoint │ ├── codex-routing.js # auth command and compatibility alias routing │ ├── codex-bin-resolver.js # official Codex binary discovery │ ├── codex-app-router.js # persistent localhost router for packaged Codex app bind │ └── codex-app-launcher.js # reversible user-level app launcher routing helper ├── index.ts # optional plugin-host runtime entry ├── lib/ # core runtime logic (see lib/AGENTS.md) │ ├── auth/ # OAuth flow, PKCE, callback server │ ├── runtime/ # Codex CLI/app integration helpers, app bind, live sync, runtime observability │ ├── request/ # request transform, SSE, failover, backoff │ ├── storage/ # path resolution, migrations, backups, restore, import/export │ ├── codex-cli/ # Codex CLI state sync and writer helpers │ ├── codex-manager/ # command modules and settings panels │ ├── prompts/ # model-family prompts, GitHub ETag cache │ ├── recovery/ # conve...
Files:
CONTRIBUTING.mdpackage.jsondocs/getting-started.mdAGENTS.md
package.json
📄 CodeRabbit inference engine (SECURITY.md)
package.json: Pinhonodependency to version 4.12.21 or later to avoid vulnerabilities (GHSA-3hrh-pfw6-9m5x, GHSA-2gcr-mfcq-wcc3, GHSA-xrhx-7g5j-rcj5, GHSA-f577-qrjj-4474)
Pinrollupdependency to version ^4.59.0 or later to avoid vulnerabilities in the Vite and Vitest transitive dependency graph
Files:
package.json
docs/**/*.md
📄 CodeRabbit inference engine (docs/STYLE_GUIDE.md)
docs/**/*.md: User-facing documentation should follow the page template: Title and one-line lead, Quick path commands, Core operational workflow, Troubleshooting or failure handling, and Related links
Use short sections and scan-friendly tables in documentation where they improve clarity
Prefer direct, actionable language in documentation
Use runnable command examples in documentation
Explain expected outcomes after critical commands in documentation
Keep terminology consistent with runtime names in documentation
Avoid speculative language when behavior is deterministic in documentation
Put the user problem in the first paragraph before implementation detail
Use descriptive page titles such ascodex-multi-auth Featuresinstead of generic titles on public docs
Do not repeat keyword lists in every section; search terms should appear only where they help a developer understand the page
Canonical command family iscodex-multi-auth ...
Canonical runtime root is~/.codex/multi-auth
Runtime rotation must be described as default-on unless the release policy changes
Legacy command/path references belong only in migration contexts in documentation
Compatibility aliases (codex multi auth,codex multi-auth,codex multiauth) belong only in command reference, troubleshooting, or migration contexts
Keep command flags aligned with runtime usage text in documentation
Avoid non-runnable command snippets in documentation
Avoid conflicting path guidance across documentation
Avoid legacy-first onboarding language in documentation
docs/**/*.md: Documentation should follow the structure defined in DOCUMENTATION.md governance contract, with clear sections for Getting Started, Daily Use, Release History, Repair, Reference, Maintainer Docs, and Governance
All documentation must reference governance files (README.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md) in a Governance section
Files:
docs/getting-started.md
docs/**
⚙️ CodeRabbit configuration file
keep README, SECURITY, and docs consistent with actual CLI flags and workflows. whenever behavior changes, require updated upgrade notes and mention new npm scripts.
Files:
docs/getting-started.md
⚙️ CodeRabbit configuration file
docs/**: # Documentation ArchitectureCanonical governance for repository documentation quality and consistency.
Documentation Layers
Layer Audience Primary goal Product entry New operators and search visitors Explain the project quickly, prioritize the right concepts first, and complete first successful login/check User operations Daily users Configure, run, recover, and report issues safely Reference Power users and maintainers Exact command, setting, and path lookup Development Contributors and maintainers Internal architecture, flow, tests, and ownership
Source of Truth Map
Scope File Project entry README.mdDocs portal docs/README.mdDaily operator landing docs/index.mdOnboarding docs/getting-started.mdFAQ docs/faq.mdPublic architecture overview docs/architecture.mdFeature map docs/features.mdConfiguration guide docs/configuration.mdTroubleshooting guide docs/troubleshooting.mdPrivacy and data handling docs/privacy.mdUpgrade and migration docs/upgrade.mdCommand reference docs/reference/commands.mdPublic API contract docs/reference/public-api.mdError contract reference docs/reference/error-contracts.mdSettings reference docs/reference/settings.mdStorage path reference docs/reference/storage-paths.mdDocs style contract docs/STYLE_GUIDE.mdDocs governance (this file) docs/DOCUMENTATION.mdArchitecture internals docs/development/ARCHITECTURE.mdRuntime rotation implementation guide docs/development/ARCHITECTURE.mdGitHub metadata guidance docs/development/GITHUB_DISCOVERABILITY.mdIA/findability audit (2026-03-01) docs/development/IA_FINDABILITY_AUDIT_2026-03-01.mdConfig fields internals docs/development/CONFIG_FIELDS.mdConfig flow internals `docs/development/CONF...
Files:
docs/getting-started.md
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Ensure Node.js version is 18.17 or higher
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Install the official openai/codex CLI as a prerequisite before installing codex-multi-auth
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Use the browser-first OAuth flow (Open Browser option) as the default login method for codex-multi-auth
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Use the device-code flow (--device-auth flag) for headless, remote, SSH, or container environments where browser access is unavailable
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Use the manual login path (--manual flag) only when device auth is unavailable or when handling OAuth callbacks manually
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Store account data under ~/.codex/multi-auth by default, or under $CODEX_MULTI_AUTH_DIR/backups if the storage root is overridden
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Enable runtime rotation by default for request-bearing sessions launched through codex-multi-auth-codex or a configured app bind
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Use project-scoped account pools stored under ~/.codex/multi-auth/projects/<project-key>/openai-codex-accounts.json when project-level account isolation is needed
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Share the same account pool across linked Git worktrees without creating separate pools per worktree path
Learnt from: CR
Repo: ndycode/codex-multi-auth
Timestamp: 2026-06-09T17:45:16.353Z
Learning: Run codex-multi-auth doctor --fix to restore stale account state
🔇 Additional comments (3)
AGENTS.md (1)
76-76: LGTM!CONTRIBUTING.md (1)
32-32: LGTM!docs/getting-started.md (1)
9-9: LGTM!
…loor Review follow-up: >=18.17.0 is the floor to run the published package (driven by undici), but the dev toolchain does not support Node 18 at all (vitest requires ^20.0.0||^22||>=24, eslint ^20.19||^22.13||>=24), so contributors need Node 20+. This is also why CI tests on 20.x/22.x and why an 18.17 CI job is not feasible. https://claude.ai/code/session_01XNtnkLbBiXZxfQQYLMpucB
Summary
Part 2 of the repo-wide audit (see #517 for part 1). Three small, independent packaging corrections — each one verified against the actual npm behavior before changing.
Changes
engines.node:>=18.0.0→>=18.17.0[email protected](a direct dependency) requires Node>=18.17. The previous floor advertised support the dependency tree can't actually deliver —npm installon 18.0–18.16 would warn/fail at the undici level while this package claimed compatibility. Doc claims inCONTRIBUTING.md,docs/getting-started.md, andAGENTS.mdare synced.Remove
peerDependencies.typescript: "^5"The published package ships compiled
dist/JS +.d.ts. Consumers never need the TypeScript compiler at runtime or to consume the types; the peer range only produced install-time peer warnings for JS-only users. TypeScript remains a devDependency (^5.9.3).Delete
.npmignorenpm ignores
.npmignoreentirely whenpackage.json#filesis present (which it is). The file was dead config that could mislead contributors into thinking it gates the tarball; thefilesallowlist +scripts/check-pack-budget.mjsare the real controls.package-lock.jsonis updated surgically (root entry only) to avoid unrelated lockfile churn from npm version drift.Testing
npm installresolves cleanly;npm ls --omit=devclean ✅test/documentation.test.ts(enforces docs/package coherence) ✅node scripts/check-pack-budget.mjs→ pack budget ok, 1,022,387 bytes / 1,101 files ✅test/install-codex-auth.test.ts: 2 pre-existing sandbox-only failures (identical on cleanmain), everything else passes ✅https://claude.ai/code/session_01XNtnkLbBiXZxfQQYLMpucB
Generated by Claude Code
note: greptile review for oc-chatgpt-multi-auth. cite files like
lib/foo.ts:123. confirm regression tests + windows concurrency/token redaction coverage.Greptile Summary
three independent packaging corrections: tighten the
engines.nodefloor to>=18.17.0(matching what[email protected]actually requires), drop thetypescriptpeer dep (the package ships compileddist/+.d.tsso consumers never need the compiler), and delete the now-dead.npmignore(superseded by thepackage.json#filesallowlist). docs are synced acrossAGENTS.md,CONTRIBUTING.md, anddocs/getting-started.md.engines.nodebump —>=18.0.0→>=18.17.0; eliminates the false-compatibility window wherenpm installon node 18.0–18.16 would fail at theundicilevel while this package claimed support.peerDependencies.typescriptremoval — no longer warns JS-only consumers about an unnecessary peer; typescript stays as a devDependency..npmignoredeletion — removes misleading dead config;filesarray inpackage.jsonandscripts/check-pack-budget.mjsremain the sole tarball controls.CONTRIBUTING.mdnow explicitly directs contributors to node 20.19+/22.13+, neatly side-stepping the>=18.18transitive dev-dep floor raised in the previous review thread.Confidence Score: 5/5
safe to merge — all three changes are well-scoped packaging corrections with no runtime behavior impact.
changes are purely metadata and docs: an engines floor bump that correctly reflects an existing dependency constraint, removal of a peer dep that was never functionally required, and deletion of a dead file that npm was already ignoring. no source code or auth logic is touched, no token handling paths change, and the lockfile update is surgical (root entry only). the previous review thread concern about >=18.18 for dev toolchain is fully addressed by directing contributors to node 20+ rather than trying to thread the 18.x patch-version needle.
no files require special attention — all changes are consistent and straightforward.
Important Files Changed
peerDependencies.typescriptand bumpsengines.nodeto>=18.17.0; both changes are correct — compiled dist ships its own.d.tsfiles and [email protected] mandates the 18.17 floor.npmignorewhenpackage.json#filesis present, which it is;filesallowlist pluscheck-pack-budget.mjsare the real tarball controls>=18.17) from dev requirement (20.19+/22.13+), making the previous >=18.18 transitive-devDep mismatch a non-issue by steering contributors off Node 18 entirelyNode >= 18toNode >= 18.17, consistent with the engines change18+to18.17+; keeps docs in sync with the new engines floorFlowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[npm install codex-multi-auth] --> B{Node version?} B -- "< 18.17" --> C[❌ engines mismatch\[email protected] fails] B -- ">= 18.17" --> D[✅ install succeeds] D --> E{User type?} E -- "JS consumer" --> F[uses compiled dist/ + .d.ts\nno typescript peer dep warning] E -- "TS consumer" --> G[uses compiled dist/ + .d.ts\nbrings own typescript] E -- "contributor" --> H[needs Node 20.19+ / 22.13+\nfor vitest + eslint dev toolchain] D --> I[tarball contents] I --> J[package.json#files allowlist\n+ check-pack-budget.mjs] J -- ".npmignore deleted" --> K[no misleading dead config]Reviews (2): Last reviewed commit: "docs(contributing): distinguish runtime ..." | Re-trigger Greptile