feat: switch to node v24 LTS + zod + vitest refactor#4
Merged
Conversation
Closed
Collaborator
|
Looks great — just the airports.json change (gitignore data/, prebuild step instead of committing it). Push that and I'll approve right away! you the beast brother |
willbyers1
approved these changes
Apr 3, 2026
willbyers1
approved these changes
Apr 3, 2026
willbyers1
approved these changes
Apr 3, 2026
feat: switch to node v24 LTS + zod + vitest refactor
telivity-otaip
pushed a commit
that referenced
this pull request
Apr 18, 2026
…200 default; ATPCO-rule-driven Codex review HIGH #4 — CLAUDE.md violation in agents/exchange + agents/settlement. Both engines previously fell back to a "$200" / matching-pattern penalty when no specific filed rule matched. Those values were invented common- industry patterns, not authoritative ATPCO data. Per the project domain spec: - When Cat31/Cat33 rules ARE supplied → apply as filed. - When rules are NOT supplied: voluntary → permitted at no charge (penalty 0) involuntary → fee waived to 0 (regulatory comp via Agent 5.3) Changes: change-management/ - Add Cat31Rules type with rules[] + reject_patterns[]. - Engine reads input.cat31_rules and input.is_involuntary. - Remove $200 fallback. Remove file-based rule loading. - Move data/change-fee-rules.json to __tests__/fixtures/ with TEST FIXTURE banner. Tests pass it explicitly via input.cat31_rules to exercise the apply-as-filed branch. New tests cover the ATPCO-default branch (no rules supplied). refund-processing/ - Add Cat33Rules type and input.cat33_rules + input.is_involuntary. - Remove $200 fallback. Remove file-based rule loading. - Move data/refund-penalty-rules.json to __tests__/fixtures/ with same TEST FIXTURE banner. - Same test pattern: filed-rule tests + ATPCO-default tests + involuntary tests (both with and without rules). Drop unused DomainInputRequired import in fare-engine. Verification: 37 change-management tests, 42 refund-processing tests, 3,075 total tests, lint + typecheck clean. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8 tasks
telivity-otaip
pushed a commit
that referenced
this pull request
Apr 18, 2026
…omainInputError Codex review MEDIUM #1 + MEDIUM #4. MEDIUM #1 — booking/api-abstraction rate limiter undercounting - Previously the rate-limit counter incremented once per execute() call, before the retry loop. Each retry to the upstream provider therefore went uncounted, under-reporting traffic against provider quotas and letting agents sail past per-window limits while believing they were still in budget. - Move the increment INSIDE the retry loop, before each requestHandler call. Move the rate-limit guard inside the loop too, so an attempt that would exceed the quota short-circuits cleanly without burning another outbound request. - New test: 1 initial + 2 retries on a retryable failure → request_count ends at 3, not 1. MEDIUM #4 — stub agents throw raw Error - New @otaip/core class UnimplementedDomainInputError(agentId, detail) with code 'UNIMPLEMENTED_DOMAIN_INPUT'. Callers can catch by class instead of string-matching. - Replace `throw new Error(...)` in 4 stub agents with `throw new UnimplementedDomainInputError(...)`: DisruptionResponseAgent (5.4) DynamicPricingAgent (2.6) RevenueManagementAgent (2.7) InterlineSettlementAgent (7.4) - Tests updated to assert on the typed error (instance + agentId + code). - The other 'placeholder' agents called out in the original review (self-service-rebooking, waitlist-management) were since fully built out and no longer throw raw Errors. Verification: 3,085 tests pass, lint + typecheck clean. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This was referenced Apr 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
.nvmrc, engines field)pnpm-lock.yamlto reflect all dependency changesWhy
Node 20 exits LTS maintenance in October 2026; moving to v24 LTS now keeps us on the current support window. The ESLint flat config migration was forced by ESLint v10 dropping legacy config support. Dependency bumps address accumulated drift across the monorepo.
Testing
pnpm installsuccessfulpnpm buildpasses across all packagespnpm testfull test suite passespnpm lintno new errors with flat config for ESLint v10