pigeongov 0.2.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.
- package/AGENTS.md +258 -0
- package/LICENSE +21 -0
- package/PRIVACY.md +38 -0
- package/README.md +234 -0
- package/agents.json +72 -0
- package/dist/bin/pigeongov.d.ts +2 -0
- package/dist/bin/pigeongov.js +4 -0
- package/dist/bin/pigeongov.js.map +1 -0
- package/dist/src/advisory/decision-support/contribution-optimizer.d.ts +36 -0
- package/dist/src/advisory/decision-support/contribution-optimizer.js +88 -0
- package/dist/src/advisory/decision-support/contribution-optimizer.js.map +1 -0
- package/dist/src/advisory/decision-support/deduction-optimizer.d.ts +31 -0
- package/dist/src/advisory/decision-support/deduction-optimizer.js +96 -0
- package/dist/src/advisory/decision-support/deduction-optimizer.js.map +1 -0
- package/dist/src/advisory/life-events/events.d.ts +4 -0
- package/dist/src/advisory/life-events/events.js +156 -0
- package/dist/src/advisory/life-events/events.js.map +1 -0
- package/dist/src/advisory/life-events/planner.d.ts +19 -0
- package/dist/src/advisory/life-events/planner.js +72 -0
- package/dist/src/advisory/life-events/planner.js.map +1 -0
- package/dist/src/advisory/screener/engine.d.ts +4 -0
- package/dist/src/advisory/screener/engine.js +368 -0
- package/dist/src/advisory/screener/engine.js.map +1 -0
- package/dist/src/advisory/screener/intake.d.ts +68 -0
- package/dist/src/advisory/screener/intake.js +93 -0
- package/dist/src/advisory/screener/intake.js.map +1 -0
- package/dist/src/analytics/stats.d.ts +18 -0
- package/dist/src/analytics/stats.js +158 -0
- package/dist/src/analytics/stats.js.map +1 -0
- package/dist/src/api/handlers/deadlines.d.ts +2 -0
- package/dist/src/api/handlers/deadlines.js +7 -0
- package/dist/src/api/handlers/deadlines.js.map +1 -0
- package/dist/src/api/handlers/openapi.d.ts +2 -0
- package/dist/src/api/handlers/openapi.js +7 -0
- package/dist/src/api/handlers/openapi.js.map +1 -0
- package/dist/src/api/handlers/workflows.d.ts +5 -0
- package/dist/src/api/handlers/workflows.js +73 -0
- package/dist/src/api/handlers/workflows.js.map +1 -0
- package/dist/src/api/index.d.ts +20 -0
- package/dist/src/api/index.js +70 -0
- package/dist/src/api/index.js.map +1 -0
- package/dist/src/api/openapi.d.ts +5 -0
- package/dist/src/api/openapi.js +384 -0
- package/dist/src/api/openapi.js.map +1 -0
- package/dist/src/api/router.d.ts +19 -0
- package/dist/src/api/router.js +57 -0
- package/dist/src/api/router.js.map +1 -0
- package/dist/src/cli/commands/completions.d.ts +2 -0
- package/dist/src/cli/commands/completions.js +396 -0
- package/dist/src/cli/commands/completions.js.map +1 -0
- package/dist/src/cli/commands/deadlines.d.ts +2 -0
- package/dist/src/cli/commands/deadlines.js +47 -0
- package/dist/src/cli/commands/deadlines.js.map +1 -0
- package/dist/src/cli/commands/doctor.d.ts +2 -0
- package/dist/src/cli/commands/doctor.js +50 -0
- package/dist/src/cli/commands/doctor.js.map +1 -0
- package/dist/src/cli/commands/drafts.d.ts +2 -0
- package/dist/src/cli/commands/drafts.js +75 -0
- package/dist/src/cli/commands/drafts.js.map +1 -0
- package/dist/src/cli/commands/extract.d.ts +2 -0
- package/dist/src/cli/commands/extract.js +17 -0
- package/dist/src/cli/commands/extract.js.map +1 -0
- package/dist/src/cli/commands/fees.d.ts +2 -0
- package/dist/src/cli/commands/fees.js +40 -0
- package/dist/src/cli/commands/fees.js.map +1 -0
- package/dist/src/cli/commands/fill.d.ts +25 -0
- package/dist/src/cli/commands/fill.js +354 -0
- package/dist/src/cli/commands/fill.js.map +1 -0
- package/dist/src/cli/commands/glossary.d.ts +2 -0
- package/dist/src/cli/commands/glossary.js +90 -0
- package/dist/src/cli/commands/glossary.js.map +1 -0
- package/dist/src/cli/commands/life-event.d.ts +2 -0
- package/dist/src/cli/commands/life-event.js +41 -0
- package/dist/src/cli/commands/life-event.js.map +1 -0
- package/dist/src/cli/commands/list.d.ts +2 -0
- package/dist/src/cli/commands/list.js +19 -0
- package/dist/src/cli/commands/list.js.map +1 -0
- package/dist/src/cli/commands/machine.d.ts +2 -0
- package/dist/src/cli/commands/machine.js +100 -0
- package/dist/src/cli/commands/machine.js.map +1 -0
- package/dist/src/cli/commands/merge.d.ts +2 -0
- package/dist/src/cli/commands/merge.js +24 -0
- package/dist/src/cli/commands/merge.js.map +1 -0
- package/dist/src/cli/commands/plugin.d.ts +2 -0
- package/dist/src/cli/commands/plugin.js +119 -0
- package/dist/src/cli/commands/plugin.js.map +1 -0
- package/dist/src/cli/commands/profile.d.ts +2 -0
- package/dist/src/cli/commands/profile.js +125 -0
- package/dist/src/cli/commands/profile.js.map +1 -0
- package/dist/src/cli/commands/review.d.ts +2 -0
- package/dist/src/cli/commands/review.js +25 -0
- package/dist/src/cli/commands/review.js.map +1 -0
- package/dist/src/cli/commands/scaffold.d.ts +2 -0
- package/dist/src/cli/commands/scaffold.js +304 -0
- package/dist/src/cli/commands/scaffold.js.map +1 -0
- package/dist/src/cli/commands/schemas.d.ts +2 -0
- package/dist/src/cli/commands/schemas.js +14 -0
- package/dist/src/cli/commands/schemas.js.map +1 -0
- package/dist/src/cli/commands/screen.d.ts +2 -0
- package/dist/src/cli/commands/screen.js +89 -0
- package/dist/src/cli/commands/screen.js.map +1 -0
- package/dist/src/cli/commands/serve.d.ts +2 -0
- package/dist/src/cli/commands/serve.js +46 -0
- package/dist/src/cli/commands/serve.js.map +1 -0
- package/dist/src/cli/commands/start.d.ts +2 -0
- package/dist/src/cli/commands/start.js +16 -0
- package/dist/src/cli/commands/start.js.map +1 -0
- package/dist/src/cli/commands/stats.d.ts +2 -0
- package/dist/src/cli/commands/stats.js +17 -0
- package/dist/src/cli/commands/stats.js.map +1 -0
- package/dist/src/cli/commands/testdata.d.ts +2 -0
- package/dist/src/cli/commands/testdata.js +60 -0
- package/dist/src/cli/commands/testdata.js.map +1 -0
- package/dist/src/cli/commands/tui.d.ts +2 -0
- package/dist/src/cli/commands/tui.js +26 -0
- package/dist/src/cli/commands/tui.js.map +1 -0
- package/dist/src/cli/commands/validate.d.ts +2 -0
- package/dist/src/cli/commands/validate.js +22 -0
- package/dist/src/cli/commands/validate.js.map +1 -0
- package/dist/src/cli/commands/vault.d.ts +2 -0
- package/dist/src/cli/commands/vault.js +73 -0
- package/dist/src/cli/commands/vault.js.map +1 -0
- package/dist/src/cli/commands/workflows.d.ts +2 -0
- package/dist/src/cli/commands/workflows.js +23 -0
- package/dist/src/cli/commands/workflows.js.map +1 -0
- package/dist/src/cli/display/review.d.ts +2 -0
- package/dist/src/cli/display/review.js +4 -0
- package/dist/src/cli/display/review.js.map +1 -0
- package/dist/src/cli/display/summary.d.ts +2 -0
- package/dist/src/cli/display/summary.js +19 -0
- package/dist/src/cli/display/summary.js.map +1 -0
- package/dist/src/cli/display/validation.d.ts +2 -0
- package/dist/src/cli/display/validation.js +16 -0
- package/dist/src/cli/display/validation.js.map +1 -0
- package/dist/src/cli/index.d.ts +1 -0
- package/dist/src/cli/index.js +83 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/output.d.ts +21 -0
- package/dist/src/cli/output.js +107 -0
- package/dist/src/cli/output.js.map +1 -0
- package/dist/src/cli/prompts/common.d.ts +21 -0
- package/dist/src/cli/prompts/common.js +53 -0
- package/dist/src/cli/prompts/common.js.map +1 -0
- package/dist/src/cli/prompts/credits.d.ts +3 -0
- package/dist/src/cli/prompts/credits.js +23 -0
- package/dist/src/cli/prompts/credits.js.map +1 -0
- package/dist/src/cli/prompts/deductions.d.ts +12 -0
- package/dist/src/cli/prompts/deductions.js +26 -0
- package/dist/src/cli/prompts/deductions.js.map +1 -0
- package/dist/src/cli/prompts/identity.d.ts +8 -0
- package/dist/src/cli/prompts/identity.js +36 -0
- package/dist/src/cli/prompts/identity.js.map +1 -0
- package/dist/src/cli/prompts/income.d.ts +15 -0
- package/dist/src/cli/prompts/income.js +61 -0
- package/dist/src/cli/prompts/income.js.map +1 -0
- package/dist/src/cli/prompts/workflow.d.ts +3 -0
- package/dist/src/cli/prompts/workflow.js +74 -0
- package/dist/src/cli/prompts/workflow.js.map +1 -0
- package/dist/src/cli/support.d.ts +53 -0
- package/dist/src/cli/support.js +80 -0
- package/dist/src/cli/support.js.map +1 -0
- package/dist/src/cli/tui.d.ts +22 -0
- package/dist/src/cli/tui.js +122 -0
- package/dist/src/cli/tui.js.map +1 -0
- package/dist/src/engine/audit-risk/scorer.d.ts +36 -0
- package/dist/src/engine/audit-risk/scorer.js +132 -0
- package/dist/src/engine/audit-risk/scorer.js.map +1 -0
- package/dist/src/engine/crypto/cost-basis.d.ts +19 -0
- package/dist/src/engine/crypto/cost-basis.js +115 -0
- package/dist/src/engine/crypto/cost-basis.js.map +1 -0
- package/dist/src/engine/crypto/transaction-parser.d.ts +36 -0
- package/dist/src/engine/crypto/transaction-parser.js +124 -0
- package/dist/src/engine/crypto/transaction-parser.js.map +1 -0
- package/dist/src/engine/crypto/wash-sale.d.ts +25 -0
- package/dist/src/engine/crypto/wash-sale.js +51 -0
- package/dist/src/engine/crypto/wash-sale.js.map +1 -0
- package/dist/src/engine/equity/espp.d.ts +41 -0
- package/dist/src/engine/equity/espp.js +90 -0
- package/dist/src/engine/equity/espp.js.map +1 -0
- package/dist/src/engine/equity/iso.d.ts +42 -0
- package/dist/src/engine/equity/iso.js +94 -0
- package/dist/src/engine/equity/iso.js.map +1 -0
- package/dist/src/engine/equity/nso.d.ts +35 -0
- package/dist/src/engine/equity/nso.js +63 -0
- package/dist/src/engine/equity/nso.js.map +1 -0
- package/dist/src/engine/equity/rsu.d.ts +33 -0
- package/dist/src/engine/equity/rsu.js +64 -0
- package/dist/src/engine/equity/rsu.js.map +1 -0
- package/dist/src/engine/field-mapper.d.ts +26 -0
- package/dist/src/engine/field-mapper.js +119 -0
- package/dist/src/engine/field-mapper.js.map +1 -0
- package/dist/src/engine/forms/core-1040.d.ts +2 -0
- package/dist/src/engine/forms/core-1040.js +124 -0
- package/dist/src/engine/forms/core-1040.js.map +1 -0
- package/dist/src/engine/forms/form-8949.d.ts +21 -0
- package/dist/src/engine/forms/form-8949.js +96 -0
- package/dist/src/engine/forms/form-8949.js.map +1 -0
- package/dist/src/engine/forms/index.d.ts +7 -0
- package/dist/src/engine/forms/index.js +6 -0
- package/dist/src/engine/forms/index.js.map +1 -0
- package/dist/src/engine/forms/schedule-b.d.ts +15 -0
- package/dist/src/engine/forms/schedule-b.js +78 -0
- package/dist/src/engine/forms/schedule-b.js.map +1 -0
- package/dist/src/engine/forms/schedule-d.d.ts +9 -0
- package/dist/src/engine/forms/schedule-d.js +86 -0
- package/dist/src/engine/forms/schedule-d.js.map +1 -0
- package/dist/src/engine/fpl.d.ts +70 -0
- package/dist/src/engine/fpl.js +127 -0
- package/dist/src/engine/fpl.js.map +1 -0
- package/dist/src/engine/gig/home-office.d.ts +34 -0
- package/dist/src/engine/gig/home-office.js +53 -0
- package/dist/src/engine/gig/home-office.js.map +1 -0
- package/dist/src/engine/gig/mileage.d.ts +30 -0
- package/dist/src/engine/gig/mileage.js +45 -0
- package/dist/src/engine/gig/mileage.js.map +1 -0
- package/dist/src/engine/gig/multi-1099.d.ts +19 -0
- package/dist/src/engine/gig/multi-1099.js +28 -0
- package/dist/src/engine/gig/multi-1099.js.map +1 -0
- package/dist/src/engine/multiyear/carryforward.d.ts +31 -0
- package/dist/src/engine/multiyear/carryforward.js +77 -0
- package/dist/src/engine/multiyear/carryforward.js.map +1 -0
- package/dist/src/engine/multiyear/compare.d.ts +25 -0
- package/dist/src/engine/multiyear/compare.js +94 -0
- package/dist/src/engine/multiyear/compare.js.map +1 -0
- package/dist/src/engine/multiyear/import.d.ts +23 -0
- package/dist/src/engine/multiyear/import.js +193 -0
- package/dist/src/engine/multiyear/import.js.map +1 -0
- package/dist/src/engine/optimizer/filing-status.d.ts +29 -0
- package/dist/src/engine/optimizer/filing-status.js +66 -0
- package/dist/src/engine/optimizer/filing-status.js.map +1 -0
- package/dist/src/engine/orchestrator.d.ts +14 -0
- package/dist/src/engine/orchestrator.js +135 -0
- package/dist/src/engine/orchestrator.js.map +1 -0
- package/dist/src/engine/scenarios/whatif.d.ts +34 -0
- package/dist/src/engine/scenarios/whatif.js +70 -0
- package/dist/src/engine/scenarios/whatif.js.map +1 -0
- package/dist/src/engine/state/ca/calculator.d.ts +3 -0
- package/dist/src/engine/state/ca/calculator.js +107 -0
- package/dist/src/engine/state/ca/calculator.js.map +1 -0
- package/dist/src/engine/state/common.d.ts +39 -0
- package/dist/src/engine/state/common.js +115 -0
- package/dist/src/engine/state/common.js.map +1 -0
- package/dist/src/engine/state/ga/calculator.d.ts +3 -0
- package/dist/src/engine/state/ga/calculator.js +82 -0
- package/dist/src/engine/state/ga/calculator.js.map +1 -0
- package/dist/src/engine/state/il/calculator.d.ts +3 -0
- package/dist/src/engine/state/il/calculator.js +49 -0
- package/dist/src/engine/state/il/calculator.js.map +1 -0
- package/dist/src/engine/state/mi/calculator.d.ts +3 -0
- package/dist/src/engine/state/mi/calculator.js +60 -0
- package/dist/src/engine/state/mi/calculator.js.map +1 -0
- package/dist/src/engine/state/nc/calculator.d.ts +3 -0
- package/dist/src/engine/state/nc/calculator.js +54 -0
- package/dist/src/engine/state/nc/calculator.js.map +1 -0
- package/dist/src/engine/state/nj/calculator.d.ts +3 -0
- package/dist/src/engine/state/nj/calculator.js +90 -0
- package/dist/src/engine/state/nj/calculator.js.map +1 -0
- package/dist/src/engine/state/ny/calculator.d.ts +3 -0
- package/dist/src/engine/state/ny/calculator.js +103 -0
- package/dist/src/engine/state/ny/calculator.js.map +1 -0
- package/dist/src/engine/state/oh/calculator.d.ts +3 -0
- package/dist/src/engine/state/oh/calculator.js +79 -0
- package/dist/src/engine/state/oh/calculator.js.map +1 -0
- package/dist/src/engine/state/pa/calculator.d.ts +3 -0
- package/dist/src/engine/state/pa/calculator.js +58 -0
- package/dist/src/engine/state/pa/calculator.js.map +1 -0
- package/dist/src/engine/state/registry.d.ts +9 -0
- package/dist/src/engine/state/registry.js +67 -0
- package/dist/src/engine/state/registry.js.map +1 -0
- package/dist/src/engine/state/types.d.ts +57 -0
- package/dist/src/engine/state/types.js +2 -0
- package/dist/src/engine/state/types.js.map +1 -0
- package/dist/src/engine/state/va/calculator.d.ts +3 -0
- package/dist/src/engine/state/va/calculator.js +76 -0
- package/dist/src/engine/state/va/calculator.js.map +1 -0
- package/dist/src/engine/suggestions/missed-deductions.d.ts +43 -0
- package/dist/src/engine/suggestions/missed-deductions.js +128 -0
- package/dist/src/engine/suggestions/missed-deductions.js.map +1 -0
- package/dist/src/engine/tax-calculator.d.ts +55 -0
- package/dist/src/engine/tax-calculator.js +156 -0
- package/dist/src/engine/tax-calculator.js.map +1 -0
- package/dist/src/engine/tax-constants-2025.d.ts +56 -0
- package/dist/src/engine/tax-constants-2025.js +138 -0
- package/dist/src/engine/tax-constants-2025.js.map +1 -0
- package/dist/src/engine/types.d.ts +77 -0
- package/dist/src/engine/types.js +2 -0
- package/dist/src/engine/types.js.map +1 -0
- package/dist/src/engine/va-math.d.ts +24 -0
- package/dist/src/engine/va-math.js +90 -0
- package/dist/src/engine/va-math.js.map +1 -0
- package/dist/src/engine/validator.d.ts +7 -0
- package/dist/src/engine/validator.js +108 -0
- package/dist/src/engine/validator.js.map +1 -0
- package/dist/src/glossary/entries/healthcare.d.ts +2 -0
- package/dist/src/glossary/entries/healthcare.js +78 -0
- package/dist/src/glossary/entries/healthcare.js.map +1 -0
- package/dist/src/glossary/entries/immigration.d.ts +2 -0
- package/dist/src/glossary/entries/immigration.js +112 -0
- package/dist/src/glossary/entries/immigration.js.map +1 -0
- package/dist/src/glossary/entries/tax.d.ts +2 -0
- package/dist/src/glossary/entries/tax.js +149 -0
- package/dist/src/glossary/entries/tax.js.map +1 -0
- package/dist/src/glossary/entries/unemployment.d.ts +2 -0
- package/dist/src/glossary/entries/unemployment.js +52 -0
- package/dist/src/glossary/entries/unemployment.js.map +1 -0
- package/dist/src/glossary/index.d.ts +19 -0
- package/dist/src/glossary/index.js +39 -0
- package/dist/src/glossary/index.js.map +1 -0
- package/dist/src/i18n/index.d.ts +21 -0
- package/dist/src/i18n/index.js +92 -0
- package/dist/src/i18n/index.js.map +1 -0
- package/dist/src/mcp/result.d.ts +3 -0
- package/dist/src/mcp/result.js +7 -0
- package/dist/src/mcp/result.js.map +1 -0
- package/dist/src/mcp/return-bundle.d.ts +19 -0
- package/dist/src/mcp/return-bundle.js +49 -0
- package/dist/src/mcp/return-bundle.js.map +1 -0
- package/dist/src/mcp/shared.d.ts +49102 -0
- package/dist/src/mcp/shared.js +354 -0
- package/dist/src/mcp/shared.js.map +1 -0
- package/dist/src/mcp/tools/build-packet.d.ts +7 -0
- package/dist/src/mcp/tools/build-packet.js +23 -0
- package/dist/src/mcp/tools/build-packet.js.map +1 -0
- package/dist/src/mcp/tools/calculate-tax.d.ts +40 -0
- package/dist/src/mcp/tools/calculate-tax.js +17 -0
- package/dist/src/mcp/tools/calculate-tax.js.map +1 -0
- package/dist/src/mcp/tools/deadlines.d.ts +7 -0
- package/dist/src/mcp/tools/deadlines.js +23 -0
- package/dist/src/mcp/tools/deadlines.js.map +1 -0
- package/dist/src/mcp/tools/describe-form.d.ts +14 -0
- package/dist/src/mcp/tools/describe-form.js +23 -0
- package/dist/src/mcp/tools/describe-form.js.map +1 -0
- package/dist/src/mcp/tools/describe-workflow.d.ts +6 -0
- package/dist/src/mcp/tools/describe-workflow.js +16 -0
- package/dist/src/mcp/tools/describe-workflow.js.map +1 -0
- package/dist/src/mcp/tools/explain-flag.d.ts +7 -0
- package/dist/src/mcp/tools/explain-flag.js +19 -0
- package/dist/src/mcp/tools/explain-flag.js.map +1 -0
- package/dist/src/mcp/tools/extract-document.d.ts +13 -0
- package/dist/src/mcp/tools/extract-document.js +20 -0
- package/dist/src/mcp/tools/extract-document.js.map +1 -0
- package/dist/src/mcp/tools/fees.d.ts +7 -0
- package/dist/src/mcp/tools/fees.js +24 -0
- package/dist/src/mcp/tools/fees.js.map +1 -0
- package/dist/src/mcp/tools/fill-form.d.ts +56 -0
- package/dist/src/mcp/tools/fill-form.js +47 -0
- package/dist/src/mcp/tools/fill-form.js.map +1 -0
- package/dist/src/mcp/tools/fill-workflow.d.ts +7 -0
- package/dist/src/mcp/tools/fill-workflow.js +24 -0
- package/dist/src/mcp/tools/fill-workflow.js.map +1 -0
- package/dist/src/mcp/tools/glossary.d.ts +8 -0
- package/dist/src/mcp/tools/glossary.js +54 -0
- package/dist/src/mcp/tools/glossary.js.map +1 -0
- package/dist/src/mcp/tools/list-forms.d.ts +6 -0
- package/dist/src/mcp/tools/list-forms.js +15 -0
- package/dist/src/mcp/tools/list-forms.js.map +1 -0
- package/dist/src/mcp/tools/list-workflows.d.ts +6 -0
- package/dist/src/mcp/tools/list-workflows.js +16 -0
- package/dist/src/mcp/tools/list-workflows.js.map +1 -0
- package/dist/src/mcp/tools/plan-life-event.d.ts +59 -0
- package/dist/src/mcp/tools/plan-life-event.js +41 -0
- package/dist/src/mcp/tools/plan-life-event.js.map +1 -0
- package/dist/src/mcp/tools/review-form.d.ts +40 -0
- package/dist/src/mcp/tools/review-form.js +26 -0
- package/dist/src/mcp/tools/review-form.js.map +1 -0
- package/dist/src/mcp/tools/review-workflow.d.ts +7 -0
- package/dist/src/mcp/tools/review-workflow.js +27 -0
- package/dist/src/mcp/tools/review-workflow.js.map +1 -0
- package/dist/src/mcp/tools/screen-eligibility.d.ts +53 -0
- package/dist/src/mcp/tools/screen-eligibility.js +44 -0
- package/dist/src/mcp/tools/screen-eligibility.js.map +1 -0
- package/dist/src/mcp/tools/start-workflow.d.ts +6 -0
- package/dist/src/mcp/tools/start-workflow.js +17 -0
- package/dist/src/mcp/tools/start-workflow.js.map +1 -0
- package/dist/src/mcp/tools/validate-form.d.ts +48 -0
- package/dist/src/mcp/tools/validate-form.js +30 -0
- package/dist/src/mcp/tools/validate-form.js.map +1 -0
- package/dist/src/mcp/tools/validate-workflow.d.ts +7 -0
- package/dist/src/mcp/tools/validate-workflow.js +24 -0
- package/dist/src/mcp/tools/validate-workflow.js.map +1 -0
- package/dist/src/pdf/batch.d.ts +8 -0
- package/dist/src/pdf/batch.js +15 -0
- package/dist/src/pdf/batch.js.map +1 -0
- package/dist/src/pdf/merge.d.ts +10 -0
- package/dist/src/pdf/merge.js +62 -0
- package/dist/src/pdf/merge.js.map +1 -0
- package/dist/src/pdf/ocr.d.ts +22 -0
- package/dist/src/pdf/ocr.js +52 -0
- package/dist/src/pdf/ocr.js.map +1 -0
- package/dist/src/pdf/reader.d.ts +2 -0
- package/dist/src/pdf/reader.js +354 -0
- package/dist/src/pdf/reader.js.map +1 -0
- package/dist/src/pdf/shared.d.ts +89 -0
- package/dist/src/pdf/shared.js +137 -0
- package/dist/src/pdf/shared.js.map +1 -0
- package/dist/src/pdf/writer.d.ts +7 -0
- package/dist/src/pdf/writer.js +311 -0
- package/dist/src/pdf/writer.js.map +1 -0
- package/dist/src/plugins/loader.d.ts +15 -0
- package/dist/src/plugins/loader.js +86 -0
- package/dist/src/plugins/loader.js.map +1 -0
- package/dist/src/plugins/sandbox.d.ts +14 -0
- package/dist/src/plugins/sandbox.js +88 -0
- package/dist/src/plugins/sandbox.js.map +1 -0
- package/dist/src/plugins/types.d.ts +17 -0
- package/dist/src/plugins/types.js +13 -0
- package/dist/src/plugins/types.js.map +1 -0
- package/dist/src/schemas/2025/f1040.d.ts +127 -0
- package/dist/src/schemas/2025/f1040.js +104 -0
- package/dist/src/schemas/2025/f1040.js.map +1 -0
- package/dist/src/schemas/2025/f1099-int.d.ts +53 -0
- package/dist/src/schemas/2025/f1099-int.js +51 -0
- package/dist/src/schemas/2025/f1099-int.js.map +1 -0
- package/dist/src/schemas/2025/f1099-nec.d.ts +47 -0
- package/dist/src/schemas/2025/f1099-nec.js +45 -0
- package/dist/src/schemas/2025/f1099-nec.js.map +1 -0
- package/dist/src/schemas/2025/form-8949.d.ts +46 -0
- package/dist/src/schemas/2025/form-8949.js +71 -0
- package/dist/src/schemas/2025/form-8949.js.map +1 -0
- package/dist/src/schemas/2025/index.d.ts +1004 -0
- package/dist/src/schemas/2025/index.js +60 -0
- package/dist/src/schemas/2025/index.js.map +1 -0
- package/dist/src/schemas/2025/schedule-1.d.ts +44 -0
- package/dist/src/schemas/2025/schedule-1.js +56 -0
- package/dist/src/schemas/2025/schedule-1.js.map +1 -0
- package/dist/src/schemas/2025/schedule-b.d.ts +32 -0
- package/dist/src/schemas/2025/schedule-b.js +53 -0
- package/dist/src/schemas/2025/schedule-b.js.map +1 -0
- package/dist/src/schemas/2025/schedule-c.d.ts +58 -0
- package/dist/src/schemas/2025/schedule-c.js +46 -0
- package/dist/src/schemas/2025/schedule-c.js.map +1 -0
- package/dist/src/schemas/2025/schedule-d.d.ts +36 -0
- package/dist/src/schemas/2025/schedule-d.js +52 -0
- package/dist/src/schemas/2025/schedule-d.js.map +1 -0
- package/dist/src/schemas/2025/shared.d.ts +98 -0
- package/dist/src/schemas/2025/shared.js +161 -0
- package/dist/src/schemas/2025/shared.js.map +1 -0
- package/dist/src/schemas/2025/w2.d.ts +57 -0
- package/dist/src/schemas/2025/w2.js +62 -0
- package/dist/src/schemas/2025/w2.js.map +1 -0
- package/dist/src/storage/drafts.d.ts +25 -0
- package/dist/src/storage/drafts.js +117 -0
- package/dist/src/storage/drafts.js.map +1 -0
- package/dist/src/storage/paths.d.ts +15 -0
- package/dist/src/storage/paths.js +33 -0
- package/dist/src/storage/paths.js.map +1 -0
- package/dist/src/storage/profile.d.ts +17 -0
- package/dist/src/storage/profile.js +59 -0
- package/dist/src/storage/profile.js.map +1 -0
- package/dist/src/storage/vault.d.ts +38 -0
- package/dist/src/storage/vault.js +187 -0
- package/dist/src/storage/vault.js.map +1 -0
- package/dist/src/testing/synthetic.d.ts +13 -0
- package/dist/src/testing/synthetic.js +164 -0
- package/dist/src/testing/synthetic.js.map +1 -0
- package/dist/src/types.d.ts +362 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/workflows/deadlines.d.ts +13 -0
- package/dist/src/workflows/deadlines.js +88 -0
- package/dist/src/workflows/deadlines.js.map +1 -0
- package/dist/src/workflows/domains/benefits.d.ts +409 -0
- package/dist/src/workflows/domains/benefits.js +744 -0
- package/dist/src/workflows/domains/benefits.js.map +1 -0
- package/dist/src/workflows/domains/business.d.ts +65 -0
- package/dist/src/workflows/domains/business.js +76 -0
- package/dist/src/workflows/domains/business.js.map +1 -0
- package/dist/src/workflows/domains/education.d.ts +251 -0
- package/dist/src/workflows/domains/education.js +504 -0
- package/dist/src/workflows/domains/education.js.map +1 -0
- package/dist/src/workflows/domains/estate.d.ts +217 -0
- package/dist/src/workflows/domains/estate.js +407 -0
- package/dist/src/workflows/domains/estate.js.map +1 -0
- package/dist/src/workflows/domains/healthcare-ext.d.ts +88 -0
- package/dist/src/workflows/domains/healthcare-ext.js +150 -0
- package/dist/src/workflows/domains/healthcare-ext.js.map +1 -0
- package/dist/src/workflows/domains/healthcare.d.ts +92 -0
- package/dist/src/workflows/domains/healthcare.js +126 -0
- package/dist/src/workflows/domains/healthcare.js.map +1 -0
- package/dist/src/workflows/domains/identity-domain.d.ts +291 -0
- package/dist/src/workflows/domains/identity-domain.js +541 -0
- package/dist/src/workflows/domains/identity-domain.js.map +1 -0
- package/dist/src/workflows/domains/immigration-ext.d.ts +282 -0
- package/dist/src/workflows/domains/immigration-ext.js +590 -0
- package/dist/src/workflows/domains/immigration-ext.js.map +1 -0
- package/dist/src/workflows/domains/immigration.d.ts +121 -0
- package/dist/src/workflows/domains/immigration.js +152 -0
- package/dist/src/workflows/domains/immigration.js.map +1 -0
- package/dist/src/workflows/domains/legal.d.ts +235 -0
- package/dist/src/workflows/domains/legal.js +380 -0
- package/dist/src/workflows/domains/legal.js.map +1 -0
- package/dist/src/workflows/domains/permits.d.ts +65 -0
- package/dist/src/workflows/domains/permits.js +74 -0
- package/dist/src/workflows/domains/permits.js.map +1 -0
- package/dist/src/workflows/domains/retirement.d.ts +59 -0
- package/dist/src/workflows/domains/retirement.js +155 -0
- package/dist/src/workflows/domains/retirement.js.map +1 -0
- package/dist/src/workflows/domains/tax.d.ts +133 -0
- package/dist/src/workflows/domains/tax.js +187 -0
- package/dist/src/workflows/domains/tax.js.map +1 -0
- package/dist/src/workflows/domains/unemployment.d.ts +105 -0
- package/dist/src/workflows/domains/unemployment.js +122 -0
- package/dist/src/workflows/domains/unemployment.js.map +1 -0
- package/dist/src/workflows/domains/veterans.d.ts +189 -0
- package/dist/src/workflows/domains/veterans.js +380 -0
- package/dist/src/workflows/domains/veterans.js.map +1 -0
- package/dist/src/workflows/fees.d.ts +15 -0
- package/dist/src/workflows/fees.js +93 -0
- package/dist/src/workflows/fees.js.map +1 -0
- package/dist/src/workflows/helpers.d.ts +8 -0
- package/dist/src/workflows/helpers.js +66 -0
- package/dist/src/workflows/helpers.js.map +1 -0
- package/dist/src/workflows/io.d.ts +3 -0
- package/dist/src/workflows/io.js +38 -0
- package/dist/src/workflows/io.js.map +1 -0
- package/dist/src/workflows/registry.d.ts +51355 -0
- package/dist/src/workflows/registry.js +140 -0
- package/dist/src/workflows/registry.js.map +1 -0
- package/dist/src/workflows/schemas/benefits.d.ts +78 -0
- package/dist/src/workflows/schemas/benefits.js +91 -0
- package/dist/src/workflows/schemas/benefits.js.map +1 -0
- package/dist/src/workflows/schemas/common.d.ts +27 -0
- package/dist/src/workflows/schemas/common.js +28 -0
- package/dist/src/workflows/schemas/common.js.map +1 -0
- package/dist/src/workflows/schemas/education.d.ts +70 -0
- package/dist/src/workflows/schemas/education.js +85 -0
- package/dist/src/workflows/schemas/education.js.map +1 -0
- package/dist/src/workflows/schemas/estate.d.ts +64 -0
- package/dist/src/workflows/schemas/estate.js +85 -0
- package/dist/src/workflows/schemas/estate.js.map +1 -0
- package/dist/src/workflows/schemas/healthcare-ext.d.ts +15 -0
- package/dist/src/workflows/schemas/healthcare-ext.js +17 -0
- package/dist/src/workflows/schemas/healthcare-ext.js.map +1 -0
- package/dist/src/workflows/schemas/healthcare.d.ts +33 -0
- package/dist/src/workflows/schemas/healthcare.js +20 -0
- package/dist/src/workflows/schemas/healthcare.js.map +1 -0
- package/dist/src/workflows/schemas/identity-domain.d.ts +64 -0
- package/dist/src/workflows/schemas/identity-domain.js +87 -0
- package/dist/src/workflows/schemas/identity-domain.js.map +1 -0
- package/dist/src/workflows/schemas/immigration-ext.d.ts +63 -0
- package/dist/src/workflows/schemas/immigration-ext.js +58 -0
- package/dist/src/workflows/schemas/immigration-ext.js.map +1 -0
- package/dist/src/workflows/schemas/immigration.d.ts +48 -0
- package/dist/src/workflows/schemas/immigration.js +27 -0
- package/dist/src/workflows/schemas/immigration.js.map +1 -0
- package/dist/src/workflows/schemas/legal.d.ts +45 -0
- package/dist/src/workflows/schemas/legal.js +45 -0
- package/dist/src/workflows/schemas/legal.js.map +1 -0
- package/dist/src/workflows/schemas/planning.d.ts +23 -0
- package/dist/src/workflows/schemas/planning.js +15 -0
- package/dist/src/workflows/schemas/planning.js.map +1 -0
- package/dist/src/workflows/schemas/retirement.d.ts +14 -0
- package/dist/src/workflows/schemas/retirement.js +22 -0
- package/dist/src/workflows/schemas/retirement.js.map +1 -0
- package/dist/src/workflows/schemas/tax.d.ts +58 -0
- package/dist/src/workflows/schemas/tax.js +51 -0
- package/dist/src/workflows/schemas/tax.js.map +1 -0
- package/dist/src/workflows/schemas/unemployment.d.ts +33 -0
- package/dist/src/workflows/schemas/unemployment.js +19 -0
- package/dist/src/workflows/schemas/unemployment.js.map +1 -0
- package/dist/src/workflows/schemas/veterans.d.ts +47 -0
- package/dist/src/workflows/schemas/veterans.js +51 -0
- package/dist/src/workflows/schemas/veterans.js.map +1 -0
- package/dist/src/workflows/types.d.ts +9 -0
- package/dist/src/workflows/types.js +2 -0
- package/dist/src/workflows/types.js.map +1 -0
- package/dist/xmcp.config.d.ts +3 -0
- package/dist/xmcp.config.js +29 -0
- package/dist/xmcp.config.js.map +1 -0
- package/llms.txt +48 -0
- package/package.json +82 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# AGENTS.md — pigeongov
|
|
2
|
+
|
|
3
|
+
## What This Is
|
|
4
|
+
|
|
5
|
+
`PigeonGov` is a local-first government workflow platform for the United States. 34 workflows across 13 domains — tax, immigration, healthcare, benefits, education, veterans, identity, legal, estate, retirement, unemployment, business, and permits. The engine is exposed through both a CLI (with `--json` structured output) and an MCP server so agents can call the same workflows programmatically.
|
|
6
|
+
|
|
7
|
+
This repository targets the 2025 tax year for returns filed in 2026. Tax constants reflect the IRS filing values in force for 2025 returns.
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
CLI -> human interaction, file I/O, terminal display
|
|
13
|
+
MCP -> agent interface, structured tool results (20 tools)
|
|
14
|
+
Engine -> pure tax math, validation, and mapping
|
|
15
|
+
Advisory -> life events, eligibility screener, decision support
|
|
16
|
+
Schemas -> versioned form definitions by tax year
|
|
17
|
+
Workflows -> domain-specific workflow definitions and bundle builders
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Rules:
|
|
21
|
+
- The engine never does I/O.
|
|
22
|
+
- The CLI and MCP layers handle all I/O.
|
|
23
|
+
- Every output that can be reviewed by a human or agent includes `flaggedFields`.
|
|
24
|
+
- No user data is logged.
|
|
25
|
+
|
|
26
|
+
## MCP Tools (20)
|
|
27
|
+
|
|
28
|
+
### Workflow tools
|
|
29
|
+
| Tool | Description |
|
|
30
|
+
|------|-------------|
|
|
31
|
+
| `list-workflows` | List all workflows with optional domain filter |
|
|
32
|
+
| `describe-workflow` | Get full workflow description with sections, fields, starter data, and schema |
|
|
33
|
+
| `start-workflow` | Get starter data JSON for a workflow |
|
|
34
|
+
| `fill-workflow` | Fill a workflow with data and return the complete bundle |
|
|
35
|
+
| `validate-workflow` | Validate a filled workflow bundle |
|
|
36
|
+
| `review-workflow` | Get a structured review summary with flagged fields |
|
|
37
|
+
| `build-packet` | Build a complete packet from a filled bundle |
|
|
38
|
+
| `explain-flag` | Explain a specific flagged field with suggested next steps |
|
|
39
|
+
|
|
40
|
+
### Form tools (legacy)
|
|
41
|
+
| Tool | Description |
|
|
42
|
+
|------|-------------|
|
|
43
|
+
| `list-forms` | List available form schemas by tax year |
|
|
44
|
+
| `describe-form` | Describe a specific form schema |
|
|
45
|
+
| `fill-form` | Fill a form with data |
|
|
46
|
+
| `validate-form` | Validate a form |
|
|
47
|
+
| `review-form` | Review a form |
|
|
48
|
+
| `extract-document` | Extract structured data from a source PDF |
|
|
49
|
+
| `calculate-tax` | Run the deterministic tax calculator |
|
|
50
|
+
|
|
51
|
+
### Advisory tools
|
|
52
|
+
| Tool | Description |
|
|
53
|
+
|------|-------------|
|
|
54
|
+
| `plan-life-event` | Get prioritized workflow plan for a life event |
|
|
55
|
+
| `screen-eligibility` | Run eligibility screening for a benefits workflow |
|
|
56
|
+
| `deadlines` | Get filing deadlines and key dates for a workflow |
|
|
57
|
+
| `fees` | Get filing fees, processing times, and cost breakdowns |
|
|
58
|
+
| `glossary` | Look up government terminology with official definitions |
|
|
59
|
+
|
|
60
|
+
## CLI Commands for Agents
|
|
61
|
+
|
|
62
|
+
All commands support `--json` for structured output.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Core workflow operations
|
|
66
|
+
pigeongov workflows list --json
|
|
67
|
+
pigeongov workflows describe tax/1040 --json
|
|
68
|
+
pigeongov fill tax/1040 --json --data ./input.json
|
|
69
|
+
pigeongov validate ./bundle.json --json
|
|
70
|
+
pigeongov review ./bundle.json --json
|
|
71
|
+
pigeongov start tax/1040 --json
|
|
72
|
+
|
|
73
|
+
# Advisory commands
|
|
74
|
+
pigeongov life-event job-loss --json
|
|
75
|
+
pigeongov screen benefits/snap --json --data ./household.json
|
|
76
|
+
pigeongov deadlines tax/1040 --json
|
|
77
|
+
pigeongov fees immigration/naturalization --json
|
|
78
|
+
pigeongov glossary "adjusted gross income" --json
|
|
79
|
+
|
|
80
|
+
# Utility commands
|
|
81
|
+
pigeongov doctor --json
|
|
82
|
+
pigeongov drafts list --json
|
|
83
|
+
pigeongov testdata tax/1040 --json
|
|
84
|
+
pigeongov merge bundle1.json bundle2.json --json
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Structured Output Contract
|
|
88
|
+
|
|
89
|
+
Every `--json` response follows this shape:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"success": true,
|
|
94
|
+
"workflowId": "tax/1040",
|
|
95
|
+
"data": { ... },
|
|
96
|
+
"validation": {
|
|
97
|
+
"valid": false,
|
|
98
|
+
"flaggedFields": [
|
|
99
|
+
{
|
|
100
|
+
"field": "wages",
|
|
101
|
+
"severity": "warning",
|
|
102
|
+
"message": "Wages are zero but filing status is not dependent."
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
"review": {
|
|
107
|
+
"headline": "...",
|
|
108
|
+
"sections": [ ... ]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Exit Codes
|
|
114
|
+
|
|
115
|
+
| Code | Meaning |
|
|
116
|
+
|------|---------|
|
|
117
|
+
| 0 | Success. Bundle is valid. |
|
|
118
|
+
| 1 | Validation errors. Bundle has flagged fields with `severity: "error"`. |
|
|
119
|
+
| 2 | Input error. Missing or malformed input data. |
|
|
120
|
+
| 3 | System error. Unexpected failure. |
|
|
121
|
+
|
|
122
|
+
## Pipeline Composition
|
|
123
|
+
|
|
124
|
+
Agents can compose workflows into multi-step pipelines:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# 1. Get starter data
|
|
128
|
+
pigeongov start tax/1040 --json > starter.json
|
|
129
|
+
|
|
130
|
+
# 2. Fill with data
|
|
131
|
+
pigeongov fill tax/1040 --json --data starter.json > bundle.json
|
|
132
|
+
|
|
133
|
+
# 3. Validate
|
|
134
|
+
pigeongov validate bundle.json --json
|
|
135
|
+
|
|
136
|
+
# 4. Review
|
|
137
|
+
pigeongov review bundle.json --json
|
|
138
|
+
|
|
139
|
+
# 5. Life event planning
|
|
140
|
+
pigeongov life-event marriage --json
|
|
141
|
+
|
|
142
|
+
# 6. Eligibility screening
|
|
143
|
+
pigeongov screen benefits/snap --json --data household.json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
MCP tools follow the same pipeline -- `start-workflow` -> `fill-workflow` -> `validate-workflow` -> `review-workflow` -> `build-packet`.
|
|
147
|
+
|
|
148
|
+
## Current Scope — 34 Workflows
|
|
149
|
+
|
|
150
|
+
### Tax (1)
|
|
151
|
+
- `tax/1040` — Federal individual return (1040, Schedule 1, B, C, D, Form 8949)
|
|
152
|
+
|
|
153
|
+
### Immigration (5)
|
|
154
|
+
- `immigration/family-visa-intake` — Family visa packet
|
|
155
|
+
- `immigration/naturalization` — N-400 eligibility
|
|
156
|
+
- `immigration/green-card-renewal` — I-90 filing
|
|
157
|
+
- `immigration/daca-renewal` — DACA renewal
|
|
158
|
+
- `immigration/work-authorization` — I-765 EAD
|
|
159
|
+
|
|
160
|
+
### Healthcare (2)
|
|
161
|
+
- `healthcare/aca-enrollment` — ACA marketplace
|
|
162
|
+
- `healthcare/medicare-enrollment` — Medicare with IRMAA
|
|
163
|
+
|
|
164
|
+
### Benefits (6)
|
|
165
|
+
- `benefits/snap` — SNAP eligibility
|
|
166
|
+
- `benefits/section8` — Section 8 voucher
|
|
167
|
+
- `benefits/wic` — WIC program
|
|
168
|
+
- `benefits/liheap` — LIHEAP energy
|
|
169
|
+
- `benefits/medicaid` — Medicaid eligibility
|
|
170
|
+
- `benefits/ssdi-application` — SSDI intake
|
|
171
|
+
|
|
172
|
+
### Education (3)
|
|
173
|
+
- `education/fafsa` — FAFSA readiness
|
|
174
|
+
- `education/student-loan-repayment` — IDR comparison
|
|
175
|
+
- `education/529-planner` — 529 projections
|
|
176
|
+
|
|
177
|
+
### Veterans (3)
|
|
178
|
+
- `veterans/disability-claim` — VA disability
|
|
179
|
+
- `veterans/gi-bill` — GI Bill estimation
|
|
180
|
+
- `veterans/va-healthcare` — VA healthcare
|
|
181
|
+
|
|
182
|
+
### Identity (4)
|
|
183
|
+
- `identity/passport` — Passport application
|
|
184
|
+
- `identity/name-change` — Name change
|
|
185
|
+
- `identity/voter-registration` — Voter registration
|
|
186
|
+
- `identity/real-id` — REAL ID readiness
|
|
187
|
+
|
|
188
|
+
### Legal (3)
|
|
189
|
+
- `legal/small-claims` — Small claims filing
|
|
190
|
+
- `legal/expungement` — Expungement eligibility
|
|
191
|
+
- `legal/child-support-modification` — Child support modification
|
|
192
|
+
|
|
193
|
+
### Estate (3)
|
|
194
|
+
- `estate/basic-will` — Will planner
|
|
195
|
+
- `estate/power-of-attorney` — POA planner
|
|
196
|
+
- `estate/advance-directive` — Advance directive
|
|
197
|
+
|
|
198
|
+
### Retirement (1)
|
|
199
|
+
- `retirement/ssa-estimator` — Social Security estimator
|
|
200
|
+
|
|
201
|
+
### Unemployment (1)
|
|
202
|
+
- `unemployment/claim-intake` — Unemployment claim
|
|
203
|
+
|
|
204
|
+
### Business (1)
|
|
205
|
+
- `business/license-starter` — Business license *(preview)*
|
|
206
|
+
|
|
207
|
+
### Permits (1)
|
|
208
|
+
- `permits/local-permit-planner` — Local permits *(preview)*
|
|
209
|
+
|
|
210
|
+
## State Tax Coverage
|
|
211
|
+
|
|
212
|
+
**Full calculators:** CA, NY, IL, PA, NC, MI, GA, VA, NJ, OH
|
|
213
|
+
|
|
214
|
+
**No income tax:** AK, FL, NV, NH, SD, TN, TX, WA, WY
|
|
215
|
+
|
|
216
|
+
## Coding Conventions
|
|
217
|
+
|
|
218
|
+
- Use strict TypeScript.
|
|
219
|
+
- Use Zod for schema boundaries.
|
|
220
|
+
- Keep tax math deterministic and pure.
|
|
221
|
+
- Prefer local file operations over network activity.
|
|
222
|
+
- Mask SSNs in terminal prompts.
|
|
223
|
+
- Display currency with `$` and commas.
|
|
224
|
+
|
|
225
|
+
## 2025 Tax-Year Notes
|
|
226
|
+
|
|
227
|
+
- Use the current IRS 2025 filing values, not older inflation-only estimates where later 2025 law changed the number.
|
|
228
|
+
- Standard deduction, brackets, child tax credit, and self-employment tax rules should match the current IRS 2025 filing guidance.
|
|
229
|
+
- If a value is ambiguous, prefer the current IRS filing page or form instructions over an older bulletin.
|
|
230
|
+
|
|
231
|
+
## Adding a New Workflow
|
|
232
|
+
|
|
233
|
+
1. Create a workflow definition in `src/workflows/domains/`.
|
|
234
|
+
2. Define Zod input schema, starter data, sections, evidence logic, and validation/review rules.
|
|
235
|
+
3. Register the domain in `src/workflows/registry.ts`.
|
|
236
|
+
4. The shared bundle contract means CLI, TUI, site, and MCP inherit automatically.
|
|
237
|
+
5. Add tests for registry behavior, CLI output, and MCP tool integration.
|
|
238
|
+
|
|
239
|
+
## Adding a New Tax Year
|
|
240
|
+
|
|
241
|
+
1. Create a new directory under `src/schemas/<year>/`.
|
|
242
|
+
2. Add the form definitions for that year.
|
|
243
|
+
3. Register the year in the schema index.
|
|
244
|
+
4. Keep engine math pure so the same calculator can be validated independently.
|
|
245
|
+
5. Add test fixtures for the new year before changing behavior.
|
|
246
|
+
|
|
247
|
+
## Privacy Expectations
|
|
248
|
+
|
|
249
|
+
- No telemetry.
|
|
250
|
+
- No cloud uploads.
|
|
251
|
+
- No hidden network calls with user data.
|
|
252
|
+
- No PII in logs or error output.
|
|
253
|
+
|
|
254
|
+
## Documentation Expectations
|
|
255
|
+
|
|
256
|
+
- Keep README, PRIVACY, and AGENTS aligned with the actual product behavior.
|
|
257
|
+
- Document any new forms, workflows, or tax-year changes when they land.
|
|
258
|
+
- Prefer concise, practical explanations over marketing language.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 pigeongov contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/PRIVACY.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Privacy policy
|
|
2
|
+
|
|
3
|
+
`PigeonGov` is designed to be local-first and privacy-preserving across the CLI, TUI, browser planner/reviewer, and MCP server.
|
|
4
|
+
|
|
5
|
+
## What this means
|
|
6
|
+
|
|
7
|
+
- Form and workflow data stays on your machine unless you explicitly choose to move the files yourself.
|
|
8
|
+
- The CLI, TUI, local MCP server, and browser planner should not send application data to cloud services.
|
|
9
|
+
- No telemetry should be collected.
|
|
10
|
+
- No analytics should be embedded.
|
|
11
|
+
- No user tax or application data should be written to logs.
|
|
12
|
+
- Sensitive fields such as SSNs should be masked in terminal input.
|
|
13
|
+
|
|
14
|
+
## File handling
|
|
15
|
+
|
|
16
|
+
- Input PDFs, JSON files, generated outputs, and workflow bundles are read and written locally.
|
|
17
|
+
- You control where files are stored.
|
|
18
|
+
- The tool should not upload documents anywhere.
|
|
19
|
+
|
|
20
|
+
## Browser planner and reviewer
|
|
21
|
+
|
|
22
|
+
- The public website is a client-side planner and reviewer, not a hosted filing backend.
|
|
23
|
+
- Uploaded bundle JSON in the reviewer is processed in the browser session for local inspection.
|
|
24
|
+
- The planner generates local starter payloads and sample bundle downloads. It does not submit forms to agencies.
|
|
25
|
+
|
|
26
|
+
## MCP behavior
|
|
27
|
+
|
|
28
|
+
- The MCP server is an interface to the same local engine and workflow registry.
|
|
29
|
+
- Agent requests should be processed without exfiltrating user data.
|
|
30
|
+
- Any future network activity must be opt-in and must never include return or application contents by default.
|
|
31
|
+
|
|
32
|
+
## Third-party libraries
|
|
33
|
+
|
|
34
|
+
The project may rely on open-source libraries for CLI, PDF, schema, and MCP support. These libraries should be used locally and should not receive user form data unless a specific feature explicitly requires it and the user opts in.
|
|
35
|
+
|
|
36
|
+
## What to do if privacy is at risk
|
|
37
|
+
|
|
38
|
+
If any feature would require sending user data off-device, it should be treated as a separate, explicit opt-in workflow and documented clearly before use.
|
package/README.md
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# PigeonGov
|
|
2
|
+
|
|
3
|
+
`PigeonGov` is a local-first government workflow platform for the United States. 34 workflows across 13 domains: tax, immigration, healthcare, benefits, education, veterans, identity, legal, estate, retirement, unemployment, business, and permits. Humans use it through the CLI and Bubble Tea TUI. Agents use the same workflows through MCP. The public Vercel root hosts a product site, workflow catalog, planner, and browser-side reviewer while preserving the MCP endpoint at `/mcp`.
|
|
4
|
+
|
|
5
|
+
This project targets the 2025 federal tax year for returns filed in 2026, while the broader product design follows 2026-era agentic CLI and TUI conventions.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g pigeongov
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or run it without installing:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx pigeongov
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
To use the full-screen Go terminal UI from source, install Go 1.26+ and run:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pnpm build:tui
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick start
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# List all 34 workflows
|
|
29
|
+
$ npx pigeongov workflows list
|
|
30
|
+
|
|
31
|
+
# Fill a federal tax return
|
|
32
|
+
$ npx pigeongov fill tax/1040
|
|
33
|
+
|
|
34
|
+
# Fill with JSON input/output
|
|
35
|
+
$ npx pigeongov fill immigration/family-visa-intake --json --data ./visa-input.json
|
|
36
|
+
|
|
37
|
+
# Life event action plan
|
|
38
|
+
$ npx pigeongov life-event job-loss
|
|
39
|
+
|
|
40
|
+
# Eligibility screening
|
|
41
|
+
$ npx pigeongov screen benefits/snap
|
|
42
|
+
|
|
43
|
+
# Check your environment
|
|
44
|
+
$ npx pigeongov doctor --json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Workflows
|
|
48
|
+
|
|
49
|
+
### Tax (1)
|
|
50
|
+
- `tax/1040` — Federal individual return (Schedule 1, B, C, D, Form 8949)
|
|
51
|
+
|
|
52
|
+
### Immigration (5)
|
|
53
|
+
- `immigration/family-visa-intake` — Family visa packet intake
|
|
54
|
+
- `immigration/naturalization` — N-400 eligibility review
|
|
55
|
+
- `immigration/green-card-renewal` — I-90 filing organizer
|
|
56
|
+
- `immigration/daca-renewal` — DACA renewal eligibility
|
|
57
|
+
- `immigration/work-authorization` — I-765 EAD application
|
|
58
|
+
|
|
59
|
+
### Healthcare (2)
|
|
60
|
+
- `healthcare/aca-enrollment` — ACA marketplace enrollment
|
|
61
|
+
- `healthcare/medicare-enrollment` — Medicare with IRMAA calculation
|
|
62
|
+
|
|
63
|
+
### Benefits (6)
|
|
64
|
+
- `benefits/snap` — SNAP eligibility and benefit estimation
|
|
65
|
+
- `benefits/section8` — Section 8 Housing Choice Voucher
|
|
66
|
+
- `benefits/wic` — WIC program eligibility
|
|
67
|
+
- `benefits/liheap` — LIHEAP energy assistance
|
|
68
|
+
- `benefits/medicaid` — Medicaid eligibility (MAGI-based)
|
|
69
|
+
- `benefits/ssdi-application` — SSDI application intake
|
|
70
|
+
|
|
71
|
+
### Education (3)
|
|
72
|
+
- `education/fafsa` — FAFSA readiness planner
|
|
73
|
+
- `education/student-loan-repayment` — IDR comparison (SAVE, PAYE, IBR, ICR)
|
|
74
|
+
- `education/529-planner` — 529 savings projections
|
|
75
|
+
|
|
76
|
+
### Veterans (3)
|
|
77
|
+
- `veterans/disability-claim` — VA disability with combined rating
|
|
78
|
+
- `veterans/gi-bill` — Post-9/11 GI Bill estimation
|
|
79
|
+
- `veterans/va-healthcare` — VA healthcare priority groups
|
|
80
|
+
|
|
81
|
+
### Identity (4)
|
|
82
|
+
- `identity/passport` — Passport application readiness
|
|
83
|
+
- `identity/name-change` — Name change with cascading updates
|
|
84
|
+
- `identity/voter-registration` — Voter registration guide
|
|
85
|
+
- `identity/real-id` — REAL ID readiness checker
|
|
86
|
+
|
|
87
|
+
### Legal (3)
|
|
88
|
+
- `legal/small-claims` — Small claims court filing
|
|
89
|
+
- `legal/expungement` — Criminal record expungement
|
|
90
|
+
- `legal/child-support-modification` — Child support modification
|
|
91
|
+
|
|
92
|
+
### Estate (3)
|
|
93
|
+
- `estate/basic-will` — Basic will planner
|
|
94
|
+
- `estate/power-of-attorney` — Power of attorney planner
|
|
95
|
+
- `estate/advance-directive` — Advance directive planner
|
|
96
|
+
|
|
97
|
+
### Retirement (1)
|
|
98
|
+
- `retirement/ssa-estimator` — Social Security benefit estimator
|
|
99
|
+
|
|
100
|
+
### Unemployment (1)
|
|
101
|
+
- `unemployment/claim-intake` — Unemployment claim intake
|
|
102
|
+
|
|
103
|
+
### Business (1)
|
|
104
|
+
- `business/license-starter` — Business license planner *(preview)*
|
|
105
|
+
|
|
106
|
+
### Permits (1)
|
|
107
|
+
- `permits/local-permit-planner` — Local permit planner *(preview)*
|
|
108
|
+
|
|
109
|
+
## State tax coverage
|
|
110
|
+
|
|
111
|
+
**Full calculators:** CA, NY, IL, PA, NC, MI, GA, VA, NJ, OH
|
|
112
|
+
|
|
113
|
+
**No income tax (returns $0):** AK, FL, NV, NH, SD, TN, TX, WA, WY
|
|
114
|
+
|
|
115
|
+
## Decision support
|
|
116
|
+
|
|
117
|
+
- **What-if scenarios** — Compare filing statuses, deduction strategies, income levels
|
|
118
|
+
- **Audit risk scorer** — IRS DIF-inspired heuristics
|
|
119
|
+
- **Missed deduction detector** — Profile-based deduction suggestions
|
|
120
|
+
- **Contribution optimizer** — Optimal 401k, IRA, HSA strategy
|
|
121
|
+
- **Multi-year carryforward** — Track carryforward items across tax years
|
|
122
|
+
|
|
123
|
+
## CLI commands
|
|
124
|
+
|
|
125
|
+
| Command | Description |
|
|
126
|
+
|---------|-------------|
|
|
127
|
+
| `workflows list` | List all workflows |
|
|
128
|
+
| `workflows describe <id>` | Describe a workflow |
|
|
129
|
+
| `fill <id>` | Interactive workflow fill |
|
|
130
|
+
| `validate <file>` | Validate a bundle |
|
|
131
|
+
| `review <file>` | Review summary |
|
|
132
|
+
| `extract <pdf>` | Extract from source PDFs |
|
|
133
|
+
| `serve` | Start MCP server |
|
|
134
|
+
| `tui` | Launch Bubble Tea TUI |
|
|
135
|
+
| `doctor` | Environment check |
|
|
136
|
+
| `drafts` | Manage local drafts |
|
|
137
|
+
| `vault` | Encrypted credential storage |
|
|
138
|
+
| `profile` | Reusable identity profiles |
|
|
139
|
+
| `deadlines` | Filing deadlines |
|
|
140
|
+
| `fees` | Filing fees and costs |
|
|
141
|
+
| `glossary` | Government terminology |
|
|
142
|
+
| `life-event <id>` | Life event action plan |
|
|
143
|
+
| `screen <id>` | Eligibility screening |
|
|
144
|
+
| `merge` | Merge bundles |
|
|
145
|
+
| `scaffold` | Generate workflow plugin |
|
|
146
|
+
| `plugins` | Manage plugins |
|
|
147
|
+
| `testdata` | Generate test data |
|
|
148
|
+
| `schemas` | List form schemas |
|
|
149
|
+
| `start` | Get starter data |
|
|
150
|
+
|
|
151
|
+
All commands support `--json` for structured output and deterministic exit codes (0=success, 1=validation, 2=input, 3=system).
|
|
152
|
+
|
|
153
|
+
## Agent integration
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Claude Code
|
|
157
|
+
claude mcp add pigeongov -- npx pigeongov serve
|
|
158
|
+
|
|
159
|
+
# Codex
|
|
160
|
+
codex mcp add pigeongov -- npx pigeongov serve
|
|
161
|
+
|
|
162
|
+
# Remote MCP endpoint
|
|
163
|
+
https://pigeongov.vercel.app/mcp
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Agent discovery files:
|
|
167
|
+
- [`agents.json`](https://pigeongov.vercel.app/agents.json) — Structured capability manifest
|
|
168
|
+
- [`llms.txt`](https://pigeongov.vercel.app/llms.txt) — Plain-text agent instructions
|
|
169
|
+
|
|
170
|
+
See the [full docs](https://pigeongov.vercel.app/docs/) for MCP tool reference and structured output contracts.
|
|
171
|
+
|
|
172
|
+
## Vercel deployment
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
vercel deploy -y --public
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
The live MCP endpoint: `https://pigeongov.vercel.app/mcp`
|
|
179
|
+
|
|
180
|
+
The public site: `https://pigeongov.vercel.app/`
|
|
181
|
+
|
|
182
|
+
For local HTTP testing:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
npx pigeongov serve --http
|
|
186
|
+
# Listens on http://127.0.0.1:3847/mcp
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Architecture
|
|
190
|
+
|
|
191
|
+
```mermaid
|
|
192
|
+
flowchart TB
|
|
193
|
+
WEB["Web: landing, docs, planner, reviewer"]
|
|
194
|
+
CLI["CLI: commander + @inquirer/prompts + chalk"]
|
|
195
|
+
TUI["TUI: Bubble Tea + Huh + Lip Gloss"]
|
|
196
|
+
MCP["MCP: xmcp tools"]
|
|
197
|
+
WORKFLOWS["Workflow registry + shared bundle model"]
|
|
198
|
+
ENGINE["Engine: tax math, validation, extraction, review"]
|
|
199
|
+
ADVISORY["Advisory: life events, screener, decision support"]
|
|
200
|
+
|
|
201
|
+
WEB --> WORKFLOWS
|
|
202
|
+
CLI --> WORKFLOWS
|
|
203
|
+
TUI --> CLI
|
|
204
|
+
MCP --> WORKFLOWS
|
|
205
|
+
WORKFLOWS --> ENGINE
|
|
206
|
+
WORKFLOWS --> ADVISORY
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Privacy
|
|
210
|
+
|
|
211
|
+
- All processing happens locally on your machine.
|
|
212
|
+
- No cloud account is required for the CLI, TUI, or local MCP server.
|
|
213
|
+
- No telemetry is sent.
|
|
214
|
+
- No user data is logged.
|
|
215
|
+
- SSNs are masked in terminal prompts.
|
|
216
|
+
- The browser planner and reviewer are client-side only — no server submission.
|
|
217
|
+
|
|
218
|
+
Read the full policy in [`PRIVACY.md`](./PRIVACY.md).
|
|
219
|
+
|
|
220
|
+
## Development
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
pnpm install
|
|
224
|
+
pnpm test
|
|
225
|
+
pnpm typecheck
|
|
226
|
+
pnpm build
|
|
227
|
+
pnpm build:mcp
|
|
228
|
+
pnpm build:mcp:vercel
|
|
229
|
+
vercel deploy -y --public
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## License
|
|
233
|
+
|
|
234
|
+
MIT. See [`LICENSE`](./LICENSE).
|
package/agents.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pigeongov",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Local-first, privacy-preserving government workflow platform for U.S. forms and applications",
|
|
5
|
+
"capabilities": ["cli", "mcp", "rest"],
|
|
6
|
+
"cli": {
|
|
7
|
+
"binary": "pigeongov",
|
|
8
|
+
"install": "npm install -g pigeongov",
|
|
9
|
+
"globalOptions": ["--json", "--jsonl", "--compact", "--full", "--fields", "--non-interactive", "--yes", "--dry-run", "--quiet", "--stdin", "--locale"],
|
|
10
|
+
"exitCodes": {
|
|
11
|
+
"0": "success",
|
|
12
|
+
"1": "runtime error",
|
|
13
|
+
"2": "has validation warnings",
|
|
14
|
+
"3": "has validation errors",
|
|
15
|
+
"4": "invalid input",
|
|
16
|
+
"5": "not found",
|
|
17
|
+
"6": "permission denied",
|
|
18
|
+
"7": "conflict",
|
|
19
|
+
"8": "schema error",
|
|
20
|
+
"9": "dependency missing",
|
|
21
|
+
"10": "timeout"
|
|
22
|
+
},
|
|
23
|
+
"commands": {
|
|
24
|
+
"list": { "description": "List available workflows", "args": "[--domain <domain>]" },
|
|
25
|
+
"fill": { "description": "Execute a workflow interactively or from JSON input", "args": "<workflow-id> [--input <file>]" },
|
|
26
|
+
"validate": { "description": "Validate a saved workflow bundle", "args": "<bundle-file>" },
|
|
27
|
+
"review": { "description": "Print human-readable review of a bundle", "args": "<bundle-file>" },
|
|
28
|
+
"extract": { "description": "Extract structured data from PDF documents", "args": "<pdf-file...>" },
|
|
29
|
+
"start": { "description": "Get starter data for a workflow", "args": "<workflow-id>" },
|
|
30
|
+
"schema": { "description": "Get JSON Schema for a workflow's input", "args": "<workflow-id>" },
|
|
31
|
+
"deadlines": { "description": "Show upcoming government deadlines", "args": "[--workflow <id>] [--ics <output>]" },
|
|
32
|
+
"fees": { "description": "Show filing fees for a workflow", "args": "[--workflow <id>]" },
|
|
33
|
+
"glossary": { "description": "Look up government terminology", "args": "[term] [--domain <domain>]" },
|
|
34
|
+
"screen": { "description": "Universal eligibility screener", "args": "" },
|
|
35
|
+
"life-event": { "description": "Get action plan for a life event", "args": "[event-name]" },
|
|
36
|
+
"drafts": { "description": "Manage saved workflow drafts", "args": "list|delete|cleanup" },
|
|
37
|
+
"vault": { "description": "Manage encrypted document vault", "args": "add|list|get|link" },
|
|
38
|
+
"profile": { "description": "Manage household profile", "args": "show|set|import" },
|
|
39
|
+
"merge": { "description": "Merge multiple PDFs with cover page", "args": "<files...> --output <path>" },
|
|
40
|
+
"serve": { "description": "Start MCP server", "args": "[--port <port>]" },
|
|
41
|
+
"doctor": { "description": "System diagnostics", "args": "" }
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"mcp": {
|
|
45
|
+
"endpoint": "http://127.0.0.1:3847/mcp",
|
|
46
|
+
"transport": ["stdio", "streamable-http"],
|
|
47
|
+
"auth": ["api-key"],
|
|
48
|
+
"tools": [
|
|
49
|
+
"pigeongov_fill_workflow",
|
|
50
|
+
"pigeongov_validate_workflow",
|
|
51
|
+
"pigeongov_review_workflow",
|
|
52
|
+
"pigeongov_list_workflows",
|
|
53
|
+
"pigeongov_describe_workflow",
|
|
54
|
+
"pigeongov_extract_document",
|
|
55
|
+
"pigeongov_calculate_tax",
|
|
56
|
+
"pigeongov_explain_flag",
|
|
57
|
+
"pigeongov_list_deadlines",
|
|
58
|
+
"pigeongov_list_fees",
|
|
59
|
+
"pigeongov_lookup_term",
|
|
60
|
+
"pigeongov_screen_eligibility",
|
|
61
|
+
"pigeongov_plan_life_event",
|
|
62
|
+
"pigeongov_list_drafts",
|
|
63
|
+
"pigeongov_load_draft"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"privacy": {
|
|
67
|
+
"localFirst": true,
|
|
68
|
+
"noTelemetry": true,
|
|
69
|
+
"noCloudUploads": true,
|
|
70
|
+
"noPiiInLogs": true
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pigeongov.js","sourceRoot":"","sources":["../../bin/pigeongov.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface ContributionScenario {
|
|
2
|
+
vehicleName: string;
|
|
3
|
+
currentContribution: number;
|
|
4
|
+
maxContribution: number;
|
|
5
|
+
additionalRoom: number;
|
|
6
|
+
taxSavingsPerDollar: number;
|
|
7
|
+
estimatedTaxSavings: number;
|
|
8
|
+
notes: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ContributionOptimization {
|
|
11
|
+
marginalRate: number;
|
|
12
|
+
scenarios: ContributionScenario[];
|
|
13
|
+
totalPotentialSavings: number;
|
|
14
|
+
recommendation: string;
|
|
15
|
+
}
|
|
16
|
+
interface ContributionInput {
|
|
17
|
+
marginalRate: number;
|
|
18
|
+
age: number;
|
|
19
|
+
filingStatus: string;
|
|
20
|
+
agi: number;
|
|
21
|
+
has401k: boolean;
|
|
22
|
+
current401k: number;
|
|
23
|
+
hasIra: boolean;
|
|
24
|
+
currentIra: number;
|
|
25
|
+
iraType: "traditional" | "roth";
|
|
26
|
+
hasHsa: boolean;
|
|
27
|
+
currentHsa: number;
|
|
28
|
+
hsaCoverage: "individual" | "family";
|
|
29
|
+
hasEmployerPlan: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Analyze retirement contribution optimization opportunities.
|
|
33
|
+
* Shows how much more could be contributed and the estimated tax savings.
|
|
34
|
+
*/
|
|
35
|
+
export declare function optimizeContributions(input: ContributionInput): ContributionOptimization;
|
|
36
|
+
export {};
|