@markcolabs/mcp 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-API.md +111 -0
  3. package/README.md +128 -205
  4. package/dist/engines/compoundInterest.d.ts +8 -6
  5. package/dist/engines/compoundInterest.d.ts.map +1 -1
  6. package/dist/engines/compoundInterest.js +8 -6
  7. package/dist/engines/compoundInterest.js.map +1 -1
  8. package/dist/engines/data/irs2026.d.ts +110 -3
  9. package/dist/engines/data/irs2026.d.ts.map +1 -1
  10. package/dist/engines/data/irs2026.js +86 -3
  11. package/dist/engines/data/irs2026.js.map +1 -1
  12. package/dist/engines/data/rmd2026.d.ts +59 -0
  13. package/dist/engines/data/rmd2026.d.ts.map +1 -0
  14. package/dist/engines/data/rmd2026.js +75 -0
  15. package/dist/engines/data/rmd2026.js.map +1 -0
  16. package/dist/engines/data/stateTax2026.d.ts +114 -0
  17. package/dist/engines/data/stateTax2026.d.ts.map +1 -0
  18. package/dist/engines/data/stateTax2026.js +348 -0
  19. package/dist/engines/data/stateTax2026.js.map +1 -0
  20. package/dist/engines/hsa.d.ts +110 -0
  21. package/dist/engines/hsa.d.ts.map +1 -0
  22. package/dist/engines/hsa.js +83 -0
  23. package/dist/engines/hsa.js.map +1 -0
  24. package/dist/engines/ira.d.ts +115 -0
  25. package/dist/engines/ira.d.ts.map +1 -0
  26. package/dist/engines/ira.js +127 -0
  27. package/dist/engines/ira.js.map +1 -0
  28. package/dist/engines/mortgage.d.ts +7 -6
  29. package/dist/engines/mortgage.d.ts.map +1 -1
  30. package/dist/engines/mortgage.js +7 -6
  31. package/dist/engines/mortgage.js.map +1 -1
  32. package/dist/engines/paycheck.d.ts +57 -18
  33. package/dist/engines/paycheck.d.ts.map +1 -1
  34. package/dist/engines/paycheck.js +59 -26
  35. package/dist/engines/paycheck.js.map +1 -1
  36. package/dist/engines/retirement401k.d.ts +7 -3
  37. package/dist/engines/retirement401k.d.ts.map +1 -1
  38. package/dist/engines/retirement401k.js +7 -3
  39. package/dist/engines/retirement401k.js.map +1 -1
  40. package/dist/engines/rmd.d.ts +107 -0
  41. package/dist/engines/rmd.d.ts.map +1 -0
  42. package/dist/engines/rmd.js +109 -0
  43. package/dist/engines/rmd.js.map +1 -0
  44. package/dist/engines/rothConversion.d.ts +124 -0
  45. package/dist/engines/rothConversion.d.ts.map +1 -0
  46. package/dist/engines/rothConversion.js +145 -0
  47. package/dist/engines/rothConversion.js.map +1 -0
  48. package/dist/engines/socialSecurity.d.ts +7 -3
  49. package/dist/engines/socialSecurity.d.ts.map +1 -1
  50. package/dist/engines/socialSecurity.js +7 -3
  51. package/dist/engines/socialSecurity.js.map +1 -1
  52. package/dist/index.d.ts +21 -9
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +109 -11
  55. package/dist/index.js.map +1 -1
  56. package/dist/shared/bounds.d.ts +50 -0
  57. package/dist/shared/bounds.d.ts.map +1 -1
  58. package/dist/shared/bounds.js +85 -0
  59. package/dist/shared/bounds.js.map +1 -1
  60. package/dist/tools/hsa.d.ts +58 -0
  61. package/dist/tools/hsa.d.ts.map +1 -0
  62. package/dist/tools/hsa.js +129 -0
  63. package/dist/tools/hsa.js.map +1 -0
  64. package/dist/tools/ira.d.ts +55 -0
  65. package/dist/tools/ira.d.ts.map +1 -0
  66. package/dist/tools/ira.js +117 -0
  67. package/dist/tools/ira.js.map +1 -0
  68. package/dist/tools/paycheck.d.ts +14 -7
  69. package/dist/tools/paycheck.d.ts.map +1 -1
  70. package/dist/tools/paycheck.js +24 -11
  71. package/dist/tools/paycheck.js.map +1 -1
  72. package/dist/tools/retirement401k.d.ts +3 -3
  73. package/dist/tools/retirement401k.d.ts.map +1 -1
  74. package/dist/tools/retirement401k.js +3 -3
  75. package/dist/tools/retirement401k.js.map +1 -1
  76. package/dist/tools/rmd.d.ts +60 -0
  77. package/dist/tools/rmd.d.ts.map +1 -0
  78. package/dist/tools/rmd.js +130 -0
  79. package/dist/tools/rmd.js.map +1 -0
  80. package/dist/tools/rothConversion.d.ts +66 -0
  81. package/dist/tools/rothConversion.d.ts.map +1 -0
  82. package/dist/tools/rothConversion.js +141 -0
  83. package/dist/tools/rothConversion.js.map +1 -0
  84. package/dist/tools/socialSecurity.d.ts +3 -3
  85. package/dist/tools/socialSecurity.d.ts.map +1 -1
  86. package/dist/tools/socialSecurity.js +3 -3
  87. package/dist/tools/socialSecurity.js.map +1 -1
  88. package/package.json +19 -5
@@ -0,0 +1,107 @@
1
+ /**
2
+ * RMD (Required Minimum Distribution) engine — lifted from
3
+ * site/src/utils/rmd-engine.js (functions `calculateRMD`,
4
+ * `getDistributionPeriod`, `getRMDStartAge`).
5
+ *
6
+ * Per ADR-0039 § 5: pure synchronous function, ENGINE_VERSION constant,
7
+ * parity test against the site source as the gate.
8
+ *
9
+ * Scope (S141 Wave 1B Item #3): SINGLE-YEAR RMD distribution-amount
10
+ * calculation only. The site calculator's multi-year projection
11
+ * (`generateRMDProjection`) and pre-RMD age-projection path are OUT of
12
+ * scope for v1 — callers needing year-by-year projections should call the
13
+ * tool repeatedly with the projected balance for each year.
14
+ *
15
+ * Table coverage: ONLY the Uniform Lifetime Table (Pub. 590-B Table III,
16
+ * post-2022 version) is implemented, mirroring the site source which uses
17
+ * `UNIFORM_LIFETIME_TABLE` exclusively. The Joint Life Expectancy Table
18
+ * (Table II, applied when spouse is sole beneficiary AND 10+ years younger)
19
+ * is NOT in the site engine and is therefore NOT in this tool — adding it
20
+ * here would create a parity gap with the site calculator. The `tableUsed`
21
+ * field is always `"uniform-lifetime"` for v1; the union type leaves room
22
+ * for `"joint-life-expectancy"` in a future minor bump when the site adds it.
23
+ *
24
+ * Math reference (per IRC §401(a)(9) + Pub. 590-B):
25
+ * distributionPeriod = UNIFORM_LIFETIME_TABLE[ownerAge]
26
+ * rmdAmount = accountBalance / distributionPeriod
27
+ *
28
+ * Missed-RMD penalty (SECURE 2.0 §302, effective 2023+):
29
+ * penaltyIfMissed = rmdAmount × 0.25 (default 25% excise tax)
30
+ * reduced to 10% if corrected within IRS correction window (typically 2 years)
31
+ * (down from 50% pre-SECURE-2.0)
32
+ *
33
+ * Source: IRS Publication 590-B (Uniform Lifetime Table III, post-2022) +
34
+ * SECURE 2.0 Act §107 (RMD age tiers) + §302 (25% excise tax).
35
+ * Last verified: 2026-05-27.
36
+ */
37
+ /**
38
+ * SemVer of the RMD engine. Per ADR-0039 § 5 (reaffirmed in ADR-0041
39
+ * Position #4a): major bump = math change; minor = additive output; patch =
40
+ * numerical correction. NOT bumped for cosmetic refactors.
41
+ * - 1.0.0: initial v1 lift from rmd-engine.js (S141 Wave 1B).
42
+ */
43
+ export declare const ENGINE_VERSION = "1.0.0";
44
+ /**
45
+ * Which IRS RMD distribution-period table was applied. For v1 always
46
+ * `"uniform-lifetime"` (mirrors the site source). The `"joint-life-expectancy"`
47
+ * variant is reserved for a future minor when the site engine adds Table II.
48
+ */
49
+ export type RmdTableUsed = "uniform-lifetime" | "joint-life-expectancy";
50
+ /** Inputs to the RMD distribution-amount engine. */
51
+ export interface RmdDistributionAmountInput {
52
+ /** Prior year-end account balance, USD. */
53
+ accountBalance: number;
54
+ /** Owner's age this calendar year (must be ≥ SECURE 2.0 RMD age, typically 73). */
55
+ ownerAge: number;
56
+ /**
57
+ * Spouse's age (optional). RESERVED FOR FUTURE Joint Life Expectancy Table
58
+ * support. v1 ignores this input — the Uniform Lifetime Table is always
59
+ * applied (matches site parity). Documented in tool description so callers
60
+ * know not to rely on it for v1.
61
+ */
62
+ spouseAge?: number;
63
+ /**
64
+ * Whether the spouse is the sole IRA beneficiary (optional). RESERVED FOR
65
+ * FUTURE Joint Life Expectancy Table support. v1 ignores this input.
66
+ */
67
+ isSpouseSoleBeneficiary?: boolean;
68
+ }
69
+ /** Result payload returned by the engine. */
70
+ export interface RmdDistributionAmountResult {
71
+ /** Required minimum distribution this year, USD. */
72
+ rmdAmount: number;
73
+ /** Years (life-expectancy factor from the applied IRS table). */
74
+ distributionPeriod: number;
75
+ /** Duplicates distributionPeriod under a more semantic name. */
76
+ lifeExpectancyFactor: number;
77
+ /** Which IRS table was applied. Always `"uniform-lifetime"` for v1. */
78
+ tableUsed: RmdTableUsed;
79
+ /**
80
+ * Default excise tax owed if the RMD is missed (SECURE 2.0 §302, 25%).
81
+ * Reduced to 10% if corrected within the IRS correction window (typically
82
+ * 2 years) — callers should surface this nuance in the UI; the field
83
+ * itself reports the 25% default.
84
+ */
85
+ penaltyIfMissed: number;
86
+ /** Provenance metadata. */
87
+ meta: {
88
+ /** IRS table edition / tax year. */
89
+ tableYear: number;
90
+ /** Source authority (IRS publication / SECURE 2.0 citation). */
91
+ source: string;
92
+ };
93
+ }
94
+ /**
95
+ * Compute the required minimum distribution for the given inputs.
96
+ *
97
+ * 1-to-1 logic port of site/src/utils/rmd-engine.js `calculateRMD` +
98
+ * `getDistributionPeriod` (single-year path; multi-year projection out of
99
+ * scope). The site engine clamps lookups to [72, 120]; we additionally
100
+ * require ownerAge ≥ 73 (SECURE 2.0 floor for the 1951-1959 cohort, the
101
+ * common case in 2026) at the tool boundary via RMD_BOUNDS.
102
+ *
103
+ * Throws on undefined-period lookup — should be unreachable because bounds
104
+ * validation in the tool wrapper rejects out-of-range ages first.
105
+ */
106
+ export declare function distributionAmount(input: RmdDistributionAmountInput): RmdDistributionAmountResult;
107
+ //# sourceMappingURL=rmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rmd.d.ts","sourceRoot":"","sources":["../../src/engines/rmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAUH;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAExE,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,6CAA6C;AAC7C,MAAM,WAAW,2BAA2B;IAC1C,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,SAAS,EAAE,YAAY,CAAC;IACxB;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,IAAI,EAAE;QACJ,oCAAoC;QACpC,SAAS,EAAE,MAAM,CAAC;QAClB,gEAAgE;QAChE,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,0BAA0B,GAChC,2BAA2B,CAyC7B"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * RMD (Required Minimum Distribution) engine — lifted from
3
+ * site/src/utils/rmd-engine.js (functions `calculateRMD`,
4
+ * `getDistributionPeriod`, `getRMDStartAge`).
5
+ *
6
+ * Per ADR-0039 § 5: pure synchronous function, ENGINE_VERSION constant,
7
+ * parity test against the site source as the gate.
8
+ *
9
+ * Scope (S141 Wave 1B Item #3): SINGLE-YEAR RMD distribution-amount
10
+ * calculation only. The site calculator's multi-year projection
11
+ * (`generateRMDProjection`) and pre-RMD age-projection path are OUT of
12
+ * scope for v1 — callers needing year-by-year projections should call the
13
+ * tool repeatedly with the projected balance for each year.
14
+ *
15
+ * Table coverage: ONLY the Uniform Lifetime Table (Pub. 590-B Table III,
16
+ * post-2022 version) is implemented, mirroring the site source which uses
17
+ * `UNIFORM_LIFETIME_TABLE` exclusively. The Joint Life Expectancy Table
18
+ * (Table II, applied when spouse is sole beneficiary AND 10+ years younger)
19
+ * is NOT in the site engine and is therefore NOT in this tool — adding it
20
+ * here would create a parity gap with the site calculator. The `tableUsed`
21
+ * field is always `"uniform-lifetime"` for v1; the union type leaves room
22
+ * for `"joint-life-expectancy"` in a future minor bump when the site adds it.
23
+ *
24
+ * Math reference (per IRC §401(a)(9) + Pub. 590-B):
25
+ * distributionPeriod = UNIFORM_LIFETIME_TABLE[ownerAge]
26
+ * rmdAmount = accountBalance / distributionPeriod
27
+ *
28
+ * Missed-RMD penalty (SECURE 2.0 §302, effective 2023+):
29
+ * penaltyIfMissed = rmdAmount × 0.25 (default 25% excise tax)
30
+ * reduced to 10% if corrected within IRS correction window (typically 2 years)
31
+ * (down from 50% pre-SECURE-2.0)
32
+ *
33
+ * Source: IRS Publication 590-B (Uniform Lifetime Table III, post-2022) +
34
+ * SECURE 2.0 Act §107 (RMD age tiers) + §302 (25% excise tax).
35
+ * Last verified: 2026-05-27.
36
+ */
37
+ import { UNIFORM_LIFETIME_TABLE_2026, UNIFORM_LIFETIME_MIN_AGE, UNIFORM_LIFETIME_MAX_AGE, RMD_MISSED_EXCISE_RATE, RMD_TABLE_SOURCE, } from "./data/rmd2026.js";
38
+ /**
39
+ * SemVer of the RMD engine. Per ADR-0039 § 5 (reaffirmed in ADR-0041
40
+ * Position #4a): major bump = math change; minor = additive output; patch =
41
+ * numerical correction. NOT bumped for cosmetic refactors.
42
+ * - 1.0.0: initial v1 lift from rmd-engine.js (S141 Wave 1B).
43
+ */
44
+ export const ENGINE_VERSION = "1.0.0";
45
+ /**
46
+ * Compute the required minimum distribution for the given inputs.
47
+ *
48
+ * 1-to-1 logic port of site/src/utils/rmd-engine.js `calculateRMD` +
49
+ * `getDistributionPeriod` (single-year path; multi-year projection out of
50
+ * scope). The site engine clamps lookups to [72, 120]; we additionally
51
+ * require ownerAge ≥ 73 (SECURE 2.0 floor for the 1951-1959 cohort, the
52
+ * common case in 2026) at the tool boundary via RMD_BOUNDS.
53
+ *
54
+ * Throws on undefined-period lookup — should be unreachable because bounds
55
+ * validation in the tool wrapper rejects out-of-range ages first.
56
+ */
57
+ export function distributionAmount(input) {
58
+ const { accountBalance, ownerAge } = input;
59
+ // Edge: zero balance → zero RMD. Mirror the site's balance ≤ 0 short-circuit
60
+ // but still report the (clamped) distribution period for caller transparency.
61
+ if (accountBalance <= 0) {
62
+ const factor = lookupDistributionPeriod(ownerAge);
63
+ return {
64
+ rmdAmount: 0,
65
+ distributionPeriod: factor,
66
+ lifeExpectancyFactor: factor,
67
+ tableUsed: "uniform-lifetime",
68
+ penaltyIfMissed: 0,
69
+ meta: {
70
+ tableYear: 2026,
71
+ source: RMD_TABLE_SOURCE,
72
+ },
73
+ };
74
+ }
75
+ const distributionPeriod = lookupDistributionPeriod(ownerAge);
76
+ // Site rounds to cents (Math.round * 100 / 100). Keep the same rounding for
77
+ // parity correctness in the test file.
78
+ const rmdRaw = accountBalance / distributionPeriod;
79
+ const rmdAmount = Math.round(rmdRaw * 100) / 100;
80
+ const penaltyIfMissed = Math.round(rmdAmount * RMD_MISSED_EXCISE_RATE * 100) / 100;
81
+ return {
82
+ rmdAmount,
83
+ distributionPeriod,
84
+ lifeExpectancyFactor: distributionPeriod,
85
+ tableUsed: "uniform-lifetime",
86
+ penaltyIfMissed,
87
+ meta: {
88
+ tableYear: 2026,
89
+ source: RMD_TABLE_SOURCE,
90
+ },
91
+ };
92
+ }
93
+ /**
94
+ * Look up the distribution period from the Uniform Lifetime Table.
95
+ * Mirrors site `getDistributionPeriod`: clamps to [72, 120] and floors
96
+ * fractional ages.
97
+ */
98
+ function lookupDistributionPeriod(age) {
99
+ const lookupAge = Math.min(Math.max(Math.floor(age), UNIFORM_LIFETIME_MIN_AGE), UNIFORM_LIFETIME_MAX_AGE);
100
+ const factor = UNIFORM_LIFETIME_TABLE_2026[lookupAge];
101
+ if (factor === undefined) {
102
+ // Defensive: bounds validation should prevent this. If we ever hit it,
103
+ // throwing surfaces it as INTERNAL via the tool wrapper rather than
104
+ // silently returning NaN.
105
+ throw new Error(`RMD: no distribution-period factor for age ${age} (lookupAge=${lookupAge})`);
106
+ }
107
+ return factor;
108
+ }
109
+ //# sourceMappingURL=rmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rmd.js","sourceRoot":"","sources":["../../src/engines/rmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAuDtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAiC;IAEjC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE3C,6EAA6E;IAC7E,8EAA8E;IAC9E,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO;YACL,SAAS,EAAE,CAAC;YACZ,kBAAkB,EAAE,MAAM;YAC1B,oBAAoB,EAAE,MAAM;YAC5B,SAAS,EAAE,kBAAkB;YAC7B,eAAe,EAAE,CAAC;YAClB,IAAI,EAAE;gBACJ,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,gBAAgB;aACzB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAE9D,4EAA4E;IAC5E,uCAAuC;IACvC,MAAM,MAAM,GAAG,cAAc,GAAG,kBAAkB,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAEjD,MAAM,eAAe,GACnB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,sBAAsB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAE7D,OAAO;QACL,SAAS;QACT,kBAAkB;QAClB,oBAAoB,EAAE,kBAAkB;QACxC,SAAS,EAAE,kBAAkB;QAC7B,eAAe;QACf,IAAI,EAAE;YACJ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,gBAAgB;SACzB;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,GAAW;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC,EACnD,wBAAwB,CACzB,CAAC;IACF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,uEAAuE;QACvE,oEAAoE;QACpE,0BAA0B;QAC1B,MAAM,IAAI,KAAK,CACb,8CAA8C,GAAG,eAAe,SAAS,GAAG,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Roth Conversion tax-impact engine — lifted from
3
+ * site/src/pages/roth-conversion-calculator/roth-conversion-calculator.js
4
+ * (functions in tax-brackets.js + calculateBreakEvenYears) and
5
+ * site/src/utils/tax-brackets.js (calculateIncrementalTax, getMarginalRate).
6
+ *
7
+ * Per ADR-0039 § 5: pure synchronous function, ENGINE_VERSION constant,
8
+ * parity test against the source site engine.
9
+ *
10
+ * Scope (S141 Wave 1A Item #2, per S141 Risk #2): SINGLE-CONVERSION tax
11
+ * impact only. Multi-year scenario simulation / optimization is deferred to a
12
+ * future tool (`dc.calculator.rothConversion.multiYearOptimization`). This
13
+ * tool answers "if I convert $X today, what's my federal tax owed?" and
14
+ * "when do I break even on the upfront tax?"
15
+ *
16
+ * NOT MODELED (intentional scope limits):
17
+ * - State tax on the conversion (caller's responsibility; conversion is
18
+ * typically taxed by state at ordinary-income rates).
19
+ * - IRMAA tier impact (the site calculator surfaces this; out of scope for
20
+ * the MCP v0.3.0 tool).
21
+ * - 5-year rule timing for individual contributions (we report whether the
22
+ * 5-year rule applies based on age < 59.5, but don't model the per-
23
+ * conversion clock).
24
+ *
25
+ * Math reference:
26
+ * For taxable income I and conversion amount C:
27
+ * beforeTax = bracketTax(I, brackets[filingStatus])
28
+ * afterTax = bracketTax(I + C, brackets[filingStatus])
29
+ * taxOwed = afterTax − beforeTax (incremental)
30
+ * marginalRate = top bracket spanned by (I + C)
31
+ * effectiveRate = taxOwed / C
32
+ *
33
+ * Break-even years (when conversion tax savings recoup themselves, given
34
+ * the user's retirement marginal rate is lower than the conversion
35
+ * marginal rate and tax-free Roth growth at real return r):
36
+ * If retirementMarginalRate >= conversionMarginalRate → 0
37
+ * (already break-even because future bracket ≥ today's)
38
+ * Else:
39
+ * savingsPerYear ≈ futureBalance × (conversionMarginalRate −
40
+ * retirementMarginalRate)
41
+ * breakEvenYears = log((1 − totalConvRate) / (1 − totalFutureRate))
42
+ * / log(1 + r)
43
+ * (where totalConvRate ≈ effectiveRateOnConversion,
44
+ * totalFutureRate ≈ retirementMarginalRate)
45
+ *
46
+ * This is the same break-even math the site `calculateBreakEvenYears`
47
+ * function uses (we drop the explicit state-tax term; caller-side).
48
+ *
49
+ * Source: IRS Rev. Proc. 2025-32 (2026 federal tax brackets).
50
+ * Last verified: 2026-05-09.
51
+ */
52
+ import { type FilingStatus } from "./data/federalTax.js";
53
+ /**
54
+ * SemVer of the Roth conversion engine. Per ADR-0039 § 5 (reaffirmed in
55
+ * ADR-0041 Position #4a): major bump = math change; minor = additive output;
56
+ * patch = numerical correction. NOT bumped for cosmetic refactors.
57
+ * - 1.0.0: initial v1 lift from roth-conversion-calculator.js + tax-brackets.js
58
+ * (S141 Wave 1A).
59
+ */
60
+ export declare const ENGINE_VERSION = "1.0.0";
61
+ /** Inputs to the Roth conversion tax-impact engine. */
62
+ export interface RothConversionTaxImpactInput {
63
+ /** Conversion amount (USD). Must be > 0 to compute taxes. */
64
+ conversionAmount: number;
65
+ /** User's current age (used for 5-year rule flag). */
66
+ age: number;
67
+ /** Federal filing status. */
68
+ filingStatus: FilingStatus;
69
+ /** Current federal taxable income (before adding the conversion), USD. */
70
+ currentTaxableIncome: number;
71
+ /**
72
+ * Expected retirement marginal federal tax rate, whole-number percent
73
+ * (e.g., 12 for 12%). Optional — when omitted, `breakEvenYears` is `null`.
74
+ */
75
+ retirementMarginalRatePercent?: number;
76
+ /**
77
+ * Expected real (inflation-adjusted) annual return on the converted Roth
78
+ * balance, whole-number percent. Defaults to 7 (a reasonable real-return
79
+ * assumption for a diversified portfolio). Used only for break-even math.
80
+ */
81
+ expectedReturnPercent?: number;
82
+ }
83
+ /** Result payload returned by the engine. */
84
+ export interface RothConversionTaxImpactResult {
85
+ /** Incremental federal income tax on the conversion amount, USD. */
86
+ taxOwed: number;
87
+ /**
88
+ * Top marginal federal bracket the conversion pushes the user into,
89
+ * expressed as a decimal (e.g., 0.32 for 32%).
90
+ */
91
+ marginalRateOnConversion: number;
92
+ /** taxOwed / conversionAmount, as a decimal. 0 if conversionAmount = 0. */
93
+ effectiveRateOnConversion: number;
94
+ /**
95
+ * Whether the Roth 5-year rule clock applies for this conversion:
96
+ * true if user is under age 59.5 at conversion. (Conversions made when
97
+ * the account holder is < 59.5 incur a separate 5-year clock for
98
+ * penalty-free withdrawal of converted principal.)
99
+ */
100
+ fiveYearRuleApplies: boolean;
101
+ /**
102
+ * Years until tax-free Roth growth offsets the upfront conversion tax,
103
+ * assuming retirementMarginalRate < conversionMarginalRate. `null` if
104
+ * `retirementMarginalRatePercent` was not provided. `0` if retirement
105
+ * rate ≥ conversion rate (already break-even). May be `Infinity` if
106
+ * mathematically unreachable.
107
+ */
108
+ breakEvenYears: number | null;
109
+ /** Provenance metadata. */
110
+ meta: {
111
+ /** IRS tax year these brackets apply to. */
112
+ tableYear: number;
113
+ /** Source authority. */
114
+ source: string;
115
+ };
116
+ }
117
+ /**
118
+ * Compute Roth conversion tax impact (single conversion).
119
+ *
120
+ * 1-to-1 port of the federal-tax + incremental-tax + marginal-rate +
121
+ * break-even logic the site uses, with state tax / IRMAA omitted per scope.
122
+ */
123
+ export declare function taxImpact(input: RothConversionTaxImpactInput): RothConversionTaxImpactResult;
124
+ //# sourceMappingURL=rothConversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rothConversion.d.ts","sourceRoot":"","sources":["../../src/engines/rothConversion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,uDAAuD;AACvD,MAAM,WAAW,4BAA4B;IAC3C,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,0EAA0E;IAC1E,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,6CAA6C;AAC7C,MAAM,WAAW,6BAA6B;IAC5C,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,wBAAwB,EAAE,MAAM,CAAC;IACjC,2EAA2E;IAC3E,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;;OAKG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2BAA2B;IAC3B,IAAI,EAAE;QACJ,4CAA4C;QAC5C,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB;QACxB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AA4BD;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,4BAA4B,GAClC,6BAA6B,CAoE/B"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Roth Conversion tax-impact engine — lifted from
3
+ * site/src/pages/roth-conversion-calculator/roth-conversion-calculator.js
4
+ * (functions in tax-brackets.js + calculateBreakEvenYears) and
5
+ * site/src/utils/tax-brackets.js (calculateIncrementalTax, getMarginalRate).
6
+ *
7
+ * Per ADR-0039 § 5: pure synchronous function, ENGINE_VERSION constant,
8
+ * parity test against the source site engine.
9
+ *
10
+ * Scope (S141 Wave 1A Item #2, per S141 Risk #2): SINGLE-CONVERSION tax
11
+ * impact only. Multi-year scenario simulation / optimization is deferred to a
12
+ * future tool (`dc.calculator.rothConversion.multiYearOptimization`). This
13
+ * tool answers "if I convert $X today, what's my federal tax owed?" and
14
+ * "when do I break even on the upfront tax?"
15
+ *
16
+ * NOT MODELED (intentional scope limits):
17
+ * - State tax on the conversion (caller's responsibility; conversion is
18
+ * typically taxed by state at ordinary-income rates).
19
+ * - IRMAA tier impact (the site calculator surfaces this; out of scope for
20
+ * the MCP v0.3.0 tool).
21
+ * - 5-year rule timing for individual contributions (we report whether the
22
+ * 5-year rule applies based on age < 59.5, but don't model the per-
23
+ * conversion clock).
24
+ *
25
+ * Math reference:
26
+ * For taxable income I and conversion amount C:
27
+ * beforeTax = bracketTax(I, brackets[filingStatus])
28
+ * afterTax = bracketTax(I + C, brackets[filingStatus])
29
+ * taxOwed = afterTax − beforeTax (incremental)
30
+ * marginalRate = top bracket spanned by (I + C)
31
+ * effectiveRate = taxOwed / C
32
+ *
33
+ * Break-even years (when conversion tax savings recoup themselves, given
34
+ * the user's retirement marginal rate is lower than the conversion
35
+ * marginal rate and tax-free Roth growth at real return r):
36
+ * If retirementMarginalRate >= conversionMarginalRate → 0
37
+ * (already break-even because future bracket ≥ today's)
38
+ * Else:
39
+ * savingsPerYear ≈ futureBalance × (conversionMarginalRate −
40
+ * retirementMarginalRate)
41
+ * breakEvenYears = log((1 − totalConvRate) / (1 − totalFutureRate))
42
+ * / log(1 + r)
43
+ * (where totalConvRate ≈ effectiveRateOnConversion,
44
+ * totalFutureRate ≈ retirementMarginalRate)
45
+ *
46
+ * This is the same break-even math the site `calculateBreakEvenYears`
47
+ * function uses (we drop the explicit state-tax term; caller-side).
48
+ *
49
+ * Source: IRS Rev. Proc. 2025-32 (2026 federal tax brackets).
50
+ * Last verified: 2026-05-09.
51
+ */
52
+ import { FEDERAL_TAX_BRACKETS_2026, } from "./data/federalTax.js";
53
+ /**
54
+ * SemVer of the Roth conversion engine. Per ADR-0039 § 5 (reaffirmed in
55
+ * ADR-0041 Position #4a): major bump = math change; minor = additive output;
56
+ * patch = numerical correction. NOT bumped for cosmetic refactors.
57
+ * - 1.0.0: initial v1 lift from roth-conversion-calculator.js + tax-brackets.js
58
+ * (S141 Wave 1A).
59
+ */
60
+ export const ENGINE_VERSION = "1.0.0";
61
+ /**
62
+ * Progressive bracket lookup — verbatim port of site `calculateBracketTax`.
63
+ */
64
+ function bracketTax(taxable, brackets) {
65
+ if (!brackets.length || taxable <= 0)
66
+ return 0;
67
+ for (let i = brackets.length - 1; i >= 0; i--) {
68
+ const b = brackets[i];
69
+ if (taxable > b.min) {
70
+ return b.baseTax + (taxable - b.min) * b.rate;
71
+ }
72
+ }
73
+ return 0;
74
+ }
75
+ /**
76
+ * Get the marginal (top) bracket rate for a given taxable income —
77
+ * verbatim port of site `getMarginalRate` (returns as decimal).
78
+ */
79
+ function marginalRateFor(taxable, brackets) {
80
+ if (taxable <= 0)
81
+ return brackets[0]?.rate ?? 0;
82
+ for (let i = brackets.length - 1; i >= 0; i--) {
83
+ if (taxable > brackets[i].min)
84
+ return brackets[i].rate;
85
+ }
86
+ return brackets[0]?.rate ?? 0;
87
+ }
88
+ /**
89
+ * Compute Roth conversion tax impact (single conversion).
90
+ *
91
+ * 1-to-1 port of the federal-tax + incremental-tax + marginal-rate +
92
+ * break-even logic the site uses, with state tax / IRMAA omitted per scope.
93
+ */
94
+ export function taxImpact(input) {
95
+ const { conversionAmount, age, filingStatus, currentTaxableIncome, retirementMarginalRatePercent, expectedReturnPercent = 7, } = input;
96
+ const brackets = FEDERAL_TAX_BRACKETS_2026[filingStatus];
97
+ // Incremental federal tax — bracket walk before + after the conversion.
98
+ const beforeTax = bracketTax(currentTaxableIncome, brackets);
99
+ const afterTax = bracketTax(currentTaxableIncome + conversionAmount, brackets);
100
+ const taxOwed = Math.max(0, afterTax - beforeTax);
101
+ // Marginal rate the conversion pushes us into (top spanned bracket).
102
+ const marginalRateOnConversion = marginalRateFor(currentTaxableIncome + conversionAmount, brackets);
103
+ // Effective rate (averaged across the brackets the conversion spans).
104
+ const effectiveRateOnConversion = conversionAmount > 0 ? taxOwed / conversionAmount : 0;
105
+ // 5-year rule applies for under-59.5 conversions.
106
+ const fiveYearRuleApplies = age < 59.5;
107
+ // Break-even years — only when retirementMarginalRatePercent is provided.
108
+ // We use the same log-ratio form as the site calculator's
109
+ // calculateBreakEvenYears (state tax omitted here per scope).
110
+ let breakEvenYears = null;
111
+ if (typeof retirementMarginalRatePercent === "number") {
112
+ const futureRate = retirementMarginalRatePercent / 100;
113
+ const conversionRate = effectiveRateOnConversion;
114
+ const r = expectedReturnPercent / 100;
115
+ if (futureRate >= conversionRate) {
116
+ // Future tax rate ≥ today's conversion rate → already break-even.
117
+ breakEvenYears = 0;
118
+ }
119
+ else if (conversionRate >= 1) {
120
+ breakEvenYears = Infinity;
121
+ }
122
+ else if (r <= 0) {
123
+ breakEvenYears = Infinity;
124
+ }
125
+ else {
126
+ // log((1 - futureRate) / (1 - conversionRate)) / log(1 + r)
127
+ const numerator = Math.log((1 - futureRate) / (1 - conversionRate));
128
+ const denominator = Math.log(1 + r);
129
+ const raw = numerator / denominator;
130
+ breakEvenYears = raw < 0 ? 0 : raw;
131
+ }
132
+ }
133
+ return {
134
+ taxOwed,
135
+ marginalRateOnConversion,
136
+ effectiveRateOnConversion,
137
+ fiveYearRuleApplies,
138
+ breakEvenYears,
139
+ meta: {
140
+ tableYear: 2026,
141
+ source: "IRS Rev. Proc. 2025-32",
142
+ },
143
+ };
144
+ }
145
+ //# sourceMappingURL=rothConversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rothConversion.js","sourceRoot":"","sources":["../../src/engines/rothConversion.ts"],"names":[],"mappings":"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"}
@@ -20,10 +20,14 @@
20
20
  * Output values are USD monthly benefits (or USD lifetime totals).
21
21
  */
22
22
  /**
23
- * SemVer of the SS engine.
24
- * - 0.2.0: initial port (S136). Co-incident with the package-wide S136 batch bump.
23
+ * SemVer of the SS engine. Per ADR-0039 § 5 (reaffirmed in ADR-0041 Position #4a):
24
+ * major bump = math change; minor = additive output; patch = numerical correction.
25
+ * NOT bumped for cosmetic refactors.
26
+ * - 0.2.0 (v0.1.0 publish): initial port (S136), shipped under out-of-policy package-surface version.
27
+ * - 1.0.0 (v0.2.0 publish): one-time reset to align with ADR-0039 § 5 per ADR-0041 D4a.
28
+ * Math unchanged.
25
29
  */
26
- export declare const ENGINE_VERSION = "0.2.0";
30
+ export declare const ENGINE_VERSION = "1.0.0";
27
31
  /** Inputs to the SS estimate engine. */
28
32
  export interface SocialSecurityEstimateInput {
29
33
  /** Birth year (1943-2004 supported). */
@@ -1 +1 @@
1
- {"version":3,"file":"socialSecurity.d.ts","sourceRoot":"","sources":["../../src/engines/socialSecurity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH;;;GAGG;AACH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,wCAAwC;AACxC,MAAM,WAAW,2BAA2B;IAC1C,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,4BAA4B;IAC3C,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,yBAAyB,EAAE,MAAM,CAAC;IAClC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAsGD,wBAAgB,QAAQ,CACtB,KAAK,EAAE,2BAA2B,GACjC,4BAA4B,CAiC9B"}
1
+ {"version":3,"file":"socialSecurity.d.ts","sourceRoot":"","sources":["../../src/engines/socialSecurity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,wCAAwC;AACxC,MAAM,WAAW,2BAA2B;IAC1C,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,4BAA4B;IAC3C,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,yBAAyB,EAAE,MAAM,CAAC;IAClC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAsGD,wBAAgB,QAAQ,CACtB,KAAK,EAAE,2BAA2B,GACjC,4BAA4B,CAiC9B"}
@@ -21,10 +21,14 @@
21
21
  */
22
22
  import { SSA_BEND_POINTS, SS_WAGE_BASE, DEFAULT_LIFE_EXPECTANCY, } from "./data/ssa.js";
23
23
  /**
24
- * SemVer of the SS engine.
25
- * - 0.2.0: initial port (S136). Co-incident with the package-wide S136 batch bump.
24
+ * SemVer of the SS engine. Per ADR-0039 § 5 (reaffirmed in ADR-0041 Position #4a):
25
+ * major bump = math change; minor = additive output; patch = numerical correction.
26
+ * NOT bumped for cosmetic refactors.
27
+ * - 0.2.0 (v0.1.0 publish): initial port (S136), shipped under out-of-policy package-surface version.
28
+ * - 1.0.0 (v0.2.0 publish): one-time reset to align with ADR-0039 § 5 per ADR-0041 D4a.
29
+ * Math unchanged.
26
30
  */
27
- export const ENGINE_VERSION = "0.2.0";
31
+ export const ENGINE_VERSION = "1.0.0";
28
32
  // ---------------------------------------------------------------------------
29
33
  // FRA lookup (mirrors site engine FRA_TABLE)
30
34
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"socialSecurity.js","sourceRoot":"","sources":["../../src/engines/socialSecurity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socialSecurity.js","sourceRoot":"","sources":["../../src/engines/socialSecurity.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,29 +2,41 @@
2
2
  /**
3
3
  * @markcolabs/mcp — MCP server entrypoint.
4
4
  *
5
- * Sprint 136 v0.1.0 (per ADR-0039). Registers:
6
- * - 5 tools:
7
- * dc.calculator.mortgage.monthlyPayment (S135 Item 5)
8
- * dc.calculator.compoundInterest.futureValue (S135 Item 5)
9
- * dc.calculator.401k.projection (S136 Item 3)
10
- * dc.calculator.socialSecurity.estimate (S136 Item 3)
11
- * dc.calculator.paycheck.netPay (S136 Item 3)
5
+ * v0.3.0 (per ADR-0039 + ADR-0041 reconciliation; S141 Wave 1A + 1B).
6
+ * Registers:
7
+ * - 9 tools:
8
+ * dc.calculator.mortgage.monthlyPayment (S135 Item 5)
9
+ * dc.calculator.compoundInterest.futureValue (S135 Item 5)
10
+ * dc.calculator.retirement401k.projection (S136 Item 3, renamed v0.2.0 per ADR-0041 D2)
11
+ * dc.calculator.socialSecurity.estimatedBenefit (S136 Item 3, renamed v0.2.0 per ADR-0041 D2)
12
+ * dc.calculator.paycheck.netPay (S136 Item 3)
13
+ * dc.calculator.ira.contributionLimit (S141 Wave 1A)
14
+ * dc.calculator.rothConversion.taxImpact (S141 Wave 1A)
15
+ * dc.calculator.rmd.distributionAmount (S141 Wave 1B — new)
16
+ * dc.calculator.hsa.contributionLimit (S141 Wave 1B — new)
12
17
  * - 1 resource: dc://disclaimers/ymyl (canonical YMYL disclaimer)
13
18
  *
14
19
  * Transport: stdio (default for local MCP clients).
15
20
  *
16
- * S136 hits O5-KR1 5-tool target. Post-S136: methodology resources
17
- * (dc://methodologies/*) and the `plan-retirement` prompt template (O5-KR2).
21
+ * S141 Wave 1A took tool coverage 5 7; Wave 1B finalizes 7 → 9 (v0.3.0).
18
22
  */
19
23
  export { execute as executeMortgageTool } from "./tools/mortgage.js";
20
24
  export { execute as executeCompoundInterestTool } from "./tools/compoundInterest.js";
21
25
  export { execute as executeRetirement401kTool } from "./tools/retirement401k.js";
22
26
  export { execute as executeSocialSecurityTool } from "./tools/socialSecurity.js";
23
27
  export { execute as executePaycheckTool } from "./tools/paycheck.js";
28
+ export { execute as executeIraTool } from "./tools/ira.js";
29
+ export { execute as executeRothConversionTool } from "./tools/rothConversion.js";
30
+ export { execute as executeRmdTool } from "./tools/rmd.js";
31
+ export { execute as executeHsaTool } from "./tools/hsa.js";
24
32
  export * as mortgageEngine from "./engines/mortgage.js";
25
33
  export * as compoundInterestEngine from "./engines/compoundInterest.js";
26
34
  export * as retirement401kEngine from "./engines/retirement401k.js";
27
35
  export * as socialSecurityEngine from "./engines/socialSecurity.js";
28
36
  export * as paycheckEngine from "./engines/paycheck.js";
37
+ export * as iraEngine from "./engines/ira.js";
38
+ export * as rothConversionEngine from "./engines/rothConversion.js";
39
+ export * as rmdEngine from "./engines/rmd.js";
40
+ export * as hsaEngine from "./engines/hsa.js";
29
41
  export * from "./envelope.js";
30
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAwBH,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,sBAAsB,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AA4BH,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,sBAAsB,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,cAAc,eAAe,CAAC"}