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.
Files changed (571) hide show
  1. package/AGENTS.md +258 -0
  2. package/LICENSE +21 -0
  3. package/PRIVACY.md +38 -0
  4. package/README.md +234 -0
  5. package/agents.json +72 -0
  6. package/dist/bin/pigeongov.d.ts +2 -0
  7. package/dist/bin/pigeongov.js +4 -0
  8. package/dist/bin/pigeongov.js.map +1 -0
  9. package/dist/src/advisory/decision-support/contribution-optimizer.d.ts +36 -0
  10. package/dist/src/advisory/decision-support/contribution-optimizer.js +88 -0
  11. package/dist/src/advisory/decision-support/contribution-optimizer.js.map +1 -0
  12. package/dist/src/advisory/decision-support/deduction-optimizer.d.ts +31 -0
  13. package/dist/src/advisory/decision-support/deduction-optimizer.js +96 -0
  14. package/dist/src/advisory/decision-support/deduction-optimizer.js.map +1 -0
  15. package/dist/src/advisory/life-events/events.d.ts +4 -0
  16. package/dist/src/advisory/life-events/events.js +156 -0
  17. package/dist/src/advisory/life-events/events.js.map +1 -0
  18. package/dist/src/advisory/life-events/planner.d.ts +19 -0
  19. package/dist/src/advisory/life-events/planner.js +72 -0
  20. package/dist/src/advisory/life-events/planner.js.map +1 -0
  21. package/dist/src/advisory/screener/engine.d.ts +4 -0
  22. package/dist/src/advisory/screener/engine.js +368 -0
  23. package/dist/src/advisory/screener/engine.js.map +1 -0
  24. package/dist/src/advisory/screener/intake.d.ts +68 -0
  25. package/dist/src/advisory/screener/intake.js +93 -0
  26. package/dist/src/advisory/screener/intake.js.map +1 -0
  27. package/dist/src/analytics/stats.d.ts +18 -0
  28. package/dist/src/analytics/stats.js +158 -0
  29. package/dist/src/analytics/stats.js.map +1 -0
  30. package/dist/src/api/handlers/deadlines.d.ts +2 -0
  31. package/dist/src/api/handlers/deadlines.js +7 -0
  32. package/dist/src/api/handlers/deadlines.js.map +1 -0
  33. package/dist/src/api/handlers/openapi.d.ts +2 -0
  34. package/dist/src/api/handlers/openapi.js +7 -0
  35. package/dist/src/api/handlers/openapi.js.map +1 -0
  36. package/dist/src/api/handlers/workflows.d.ts +5 -0
  37. package/dist/src/api/handlers/workflows.js +73 -0
  38. package/dist/src/api/handlers/workflows.js.map +1 -0
  39. package/dist/src/api/index.d.ts +20 -0
  40. package/dist/src/api/index.js +70 -0
  41. package/dist/src/api/index.js.map +1 -0
  42. package/dist/src/api/openapi.d.ts +5 -0
  43. package/dist/src/api/openapi.js +384 -0
  44. package/dist/src/api/openapi.js.map +1 -0
  45. package/dist/src/api/router.d.ts +19 -0
  46. package/dist/src/api/router.js +57 -0
  47. package/dist/src/api/router.js.map +1 -0
  48. package/dist/src/cli/commands/completions.d.ts +2 -0
  49. package/dist/src/cli/commands/completions.js +396 -0
  50. package/dist/src/cli/commands/completions.js.map +1 -0
  51. package/dist/src/cli/commands/deadlines.d.ts +2 -0
  52. package/dist/src/cli/commands/deadlines.js +47 -0
  53. package/dist/src/cli/commands/deadlines.js.map +1 -0
  54. package/dist/src/cli/commands/doctor.d.ts +2 -0
  55. package/dist/src/cli/commands/doctor.js +50 -0
  56. package/dist/src/cli/commands/doctor.js.map +1 -0
  57. package/dist/src/cli/commands/drafts.d.ts +2 -0
  58. package/dist/src/cli/commands/drafts.js +75 -0
  59. package/dist/src/cli/commands/drafts.js.map +1 -0
  60. package/dist/src/cli/commands/extract.d.ts +2 -0
  61. package/dist/src/cli/commands/extract.js +17 -0
  62. package/dist/src/cli/commands/extract.js.map +1 -0
  63. package/dist/src/cli/commands/fees.d.ts +2 -0
  64. package/dist/src/cli/commands/fees.js +40 -0
  65. package/dist/src/cli/commands/fees.js.map +1 -0
  66. package/dist/src/cli/commands/fill.d.ts +25 -0
  67. package/dist/src/cli/commands/fill.js +354 -0
  68. package/dist/src/cli/commands/fill.js.map +1 -0
  69. package/dist/src/cli/commands/glossary.d.ts +2 -0
  70. package/dist/src/cli/commands/glossary.js +90 -0
  71. package/dist/src/cli/commands/glossary.js.map +1 -0
  72. package/dist/src/cli/commands/life-event.d.ts +2 -0
  73. package/dist/src/cli/commands/life-event.js +41 -0
  74. package/dist/src/cli/commands/life-event.js.map +1 -0
  75. package/dist/src/cli/commands/list.d.ts +2 -0
  76. package/dist/src/cli/commands/list.js +19 -0
  77. package/dist/src/cli/commands/list.js.map +1 -0
  78. package/dist/src/cli/commands/machine.d.ts +2 -0
  79. package/dist/src/cli/commands/machine.js +100 -0
  80. package/dist/src/cli/commands/machine.js.map +1 -0
  81. package/dist/src/cli/commands/merge.d.ts +2 -0
  82. package/dist/src/cli/commands/merge.js +24 -0
  83. package/dist/src/cli/commands/merge.js.map +1 -0
  84. package/dist/src/cli/commands/plugin.d.ts +2 -0
  85. package/dist/src/cli/commands/plugin.js +119 -0
  86. package/dist/src/cli/commands/plugin.js.map +1 -0
  87. package/dist/src/cli/commands/profile.d.ts +2 -0
  88. package/dist/src/cli/commands/profile.js +125 -0
  89. package/dist/src/cli/commands/profile.js.map +1 -0
  90. package/dist/src/cli/commands/review.d.ts +2 -0
  91. package/dist/src/cli/commands/review.js +25 -0
  92. package/dist/src/cli/commands/review.js.map +1 -0
  93. package/dist/src/cli/commands/scaffold.d.ts +2 -0
  94. package/dist/src/cli/commands/scaffold.js +304 -0
  95. package/dist/src/cli/commands/scaffold.js.map +1 -0
  96. package/dist/src/cli/commands/schemas.d.ts +2 -0
  97. package/dist/src/cli/commands/schemas.js +14 -0
  98. package/dist/src/cli/commands/schemas.js.map +1 -0
  99. package/dist/src/cli/commands/screen.d.ts +2 -0
  100. package/dist/src/cli/commands/screen.js +89 -0
  101. package/dist/src/cli/commands/screen.js.map +1 -0
  102. package/dist/src/cli/commands/serve.d.ts +2 -0
  103. package/dist/src/cli/commands/serve.js +46 -0
  104. package/dist/src/cli/commands/serve.js.map +1 -0
  105. package/dist/src/cli/commands/start.d.ts +2 -0
  106. package/dist/src/cli/commands/start.js +16 -0
  107. package/dist/src/cli/commands/start.js.map +1 -0
  108. package/dist/src/cli/commands/stats.d.ts +2 -0
  109. package/dist/src/cli/commands/stats.js +17 -0
  110. package/dist/src/cli/commands/stats.js.map +1 -0
  111. package/dist/src/cli/commands/testdata.d.ts +2 -0
  112. package/dist/src/cli/commands/testdata.js +60 -0
  113. package/dist/src/cli/commands/testdata.js.map +1 -0
  114. package/dist/src/cli/commands/tui.d.ts +2 -0
  115. package/dist/src/cli/commands/tui.js +26 -0
  116. package/dist/src/cli/commands/tui.js.map +1 -0
  117. package/dist/src/cli/commands/validate.d.ts +2 -0
  118. package/dist/src/cli/commands/validate.js +22 -0
  119. package/dist/src/cli/commands/validate.js.map +1 -0
  120. package/dist/src/cli/commands/vault.d.ts +2 -0
  121. package/dist/src/cli/commands/vault.js +73 -0
  122. package/dist/src/cli/commands/vault.js.map +1 -0
  123. package/dist/src/cli/commands/workflows.d.ts +2 -0
  124. package/dist/src/cli/commands/workflows.js +23 -0
  125. package/dist/src/cli/commands/workflows.js.map +1 -0
  126. package/dist/src/cli/display/review.d.ts +2 -0
  127. package/dist/src/cli/display/review.js +4 -0
  128. package/dist/src/cli/display/review.js.map +1 -0
  129. package/dist/src/cli/display/summary.d.ts +2 -0
  130. package/dist/src/cli/display/summary.js +19 -0
  131. package/dist/src/cli/display/summary.js.map +1 -0
  132. package/dist/src/cli/display/validation.d.ts +2 -0
  133. package/dist/src/cli/display/validation.js +16 -0
  134. package/dist/src/cli/display/validation.js.map +1 -0
  135. package/dist/src/cli/index.d.ts +1 -0
  136. package/dist/src/cli/index.js +83 -0
  137. package/dist/src/cli/index.js.map +1 -0
  138. package/dist/src/cli/output.d.ts +21 -0
  139. package/dist/src/cli/output.js +107 -0
  140. package/dist/src/cli/output.js.map +1 -0
  141. package/dist/src/cli/prompts/common.d.ts +21 -0
  142. package/dist/src/cli/prompts/common.js +53 -0
  143. package/dist/src/cli/prompts/common.js.map +1 -0
  144. package/dist/src/cli/prompts/credits.d.ts +3 -0
  145. package/dist/src/cli/prompts/credits.js +23 -0
  146. package/dist/src/cli/prompts/credits.js.map +1 -0
  147. package/dist/src/cli/prompts/deductions.d.ts +12 -0
  148. package/dist/src/cli/prompts/deductions.js +26 -0
  149. package/dist/src/cli/prompts/deductions.js.map +1 -0
  150. package/dist/src/cli/prompts/identity.d.ts +8 -0
  151. package/dist/src/cli/prompts/identity.js +36 -0
  152. package/dist/src/cli/prompts/identity.js.map +1 -0
  153. package/dist/src/cli/prompts/income.d.ts +15 -0
  154. package/dist/src/cli/prompts/income.js +61 -0
  155. package/dist/src/cli/prompts/income.js.map +1 -0
  156. package/dist/src/cli/prompts/workflow.d.ts +3 -0
  157. package/dist/src/cli/prompts/workflow.js +74 -0
  158. package/dist/src/cli/prompts/workflow.js.map +1 -0
  159. package/dist/src/cli/support.d.ts +53 -0
  160. package/dist/src/cli/support.js +80 -0
  161. package/dist/src/cli/support.js.map +1 -0
  162. package/dist/src/cli/tui.d.ts +22 -0
  163. package/dist/src/cli/tui.js +122 -0
  164. package/dist/src/cli/tui.js.map +1 -0
  165. package/dist/src/engine/audit-risk/scorer.d.ts +36 -0
  166. package/dist/src/engine/audit-risk/scorer.js +132 -0
  167. package/dist/src/engine/audit-risk/scorer.js.map +1 -0
  168. package/dist/src/engine/crypto/cost-basis.d.ts +19 -0
  169. package/dist/src/engine/crypto/cost-basis.js +115 -0
  170. package/dist/src/engine/crypto/cost-basis.js.map +1 -0
  171. package/dist/src/engine/crypto/transaction-parser.d.ts +36 -0
  172. package/dist/src/engine/crypto/transaction-parser.js +124 -0
  173. package/dist/src/engine/crypto/transaction-parser.js.map +1 -0
  174. package/dist/src/engine/crypto/wash-sale.d.ts +25 -0
  175. package/dist/src/engine/crypto/wash-sale.js +51 -0
  176. package/dist/src/engine/crypto/wash-sale.js.map +1 -0
  177. package/dist/src/engine/equity/espp.d.ts +41 -0
  178. package/dist/src/engine/equity/espp.js +90 -0
  179. package/dist/src/engine/equity/espp.js.map +1 -0
  180. package/dist/src/engine/equity/iso.d.ts +42 -0
  181. package/dist/src/engine/equity/iso.js +94 -0
  182. package/dist/src/engine/equity/iso.js.map +1 -0
  183. package/dist/src/engine/equity/nso.d.ts +35 -0
  184. package/dist/src/engine/equity/nso.js +63 -0
  185. package/dist/src/engine/equity/nso.js.map +1 -0
  186. package/dist/src/engine/equity/rsu.d.ts +33 -0
  187. package/dist/src/engine/equity/rsu.js +64 -0
  188. package/dist/src/engine/equity/rsu.js.map +1 -0
  189. package/dist/src/engine/field-mapper.d.ts +26 -0
  190. package/dist/src/engine/field-mapper.js +119 -0
  191. package/dist/src/engine/field-mapper.js.map +1 -0
  192. package/dist/src/engine/forms/core-1040.d.ts +2 -0
  193. package/dist/src/engine/forms/core-1040.js +124 -0
  194. package/dist/src/engine/forms/core-1040.js.map +1 -0
  195. package/dist/src/engine/forms/form-8949.d.ts +21 -0
  196. package/dist/src/engine/forms/form-8949.js +96 -0
  197. package/dist/src/engine/forms/form-8949.js.map +1 -0
  198. package/dist/src/engine/forms/index.d.ts +7 -0
  199. package/dist/src/engine/forms/index.js +6 -0
  200. package/dist/src/engine/forms/index.js.map +1 -0
  201. package/dist/src/engine/forms/schedule-b.d.ts +15 -0
  202. package/dist/src/engine/forms/schedule-b.js +78 -0
  203. package/dist/src/engine/forms/schedule-b.js.map +1 -0
  204. package/dist/src/engine/forms/schedule-d.d.ts +9 -0
  205. package/dist/src/engine/forms/schedule-d.js +86 -0
  206. package/dist/src/engine/forms/schedule-d.js.map +1 -0
  207. package/dist/src/engine/fpl.d.ts +70 -0
  208. package/dist/src/engine/fpl.js +127 -0
  209. package/dist/src/engine/fpl.js.map +1 -0
  210. package/dist/src/engine/gig/home-office.d.ts +34 -0
  211. package/dist/src/engine/gig/home-office.js +53 -0
  212. package/dist/src/engine/gig/home-office.js.map +1 -0
  213. package/dist/src/engine/gig/mileage.d.ts +30 -0
  214. package/dist/src/engine/gig/mileage.js +45 -0
  215. package/dist/src/engine/gig/mileage.js.map +1 -0
  216. package/dist/src/engine/gig/multi-1099.d.ts +19 -0
  217. package/dist/src/engine/gig/multi-1099.js +28 -0
  218. package/dist/src/engine/gig/multi-1099.js.map +1 -0
  219. package/dist/src/engine/multiyear/carryforward.d.ts +31 -0
  220. package/dist/src/engine/multiyear/carryforward.js +77 -0
  221. package/dist/src/engine/multiyear/carryforward.js.map +1 -0
  222. package/dist/src/engine/multiyear/compare.d.ts +25 -0
  223. package/dist/src/engine/multiyear/compare.js +94 -0
  224. package/dist/src/engine/multiyear/compare.js.map +1 -0
  225. package/dist/src/engine/multiyear/import.d.ts +23 -0
  226. package/dist/src/engine/multiyear/import.js +193 -0
  227. package/dist/src/engine/multiyear/import.js.map +1 -0
  228. package/dist/src/engine/optimizer/filing-status.d.ts +29 -0
  229. package/dist/src/engine/optimizer/filing-status.js +66 -0
  230. package/dist/src/engine/optimizer/filing-status.js.map +1 -0
  231. package/dist/src/engine/orchestrator.d.ts +14 -0
  232. package/dist/src/engine/orchestrator.js +135 -0
  233. package/dist/src/engine/orchestrator.js.map +1 -0
  234. package/dist/src/engine/scenarios/whatif.d.ts +34 -0
  235. package/dist/src/engine/scenarios/whatif.js +70 -0
  236. package/dist/src/engine/scenarios/whatif.js.map +1 -0
  237. package/dist/src/engine/state/ca/calculator.d.ts +3 -0
  238. package/dist/src/engine/state/ca/calculator.js +107 -0
  239. package/dist/src/engine/state/ca/calculator.js.map +1 -0
  240. package/dist/src/engine/state/common.d.ts +39 -0
  241. package/dist/src/engine/state/common.js +115 -0
  242. package/dist/src/engine/state/common.js.map +1 -0
  243. package/dist/src/engine/state/ga/calculator.d.ts +3 -0
  244. package/dist/src/engine/state/ga/calculator.js +82 -0
  245. package/dist/src/engine/state/ga/calculator.js.map +1 -0
  246. package/dist/src/engine/state/il/calculator.d.ts +3 -0
  247. package/dist/src/engine/state/il/calculator.js +49 -0
  248. package/dist/src/engine/state/il/calculator.js.map +1 -0
  249. package/dist/src/engine/state/mi/calculator.d.ts +3 -0
  250. package/dist/src/engine/state/mi/calculator.js +60 -0
  251. package/dist/src/engine/state/mi/calculator.js.map +1 -0
  252. package/dist/src/engine/state/nc/calculator.d.ts +3 -0
  253. package/dist/src/engine/state/nc/calculator.js +54 -0
  254. package/dist/src/engine/state/nc/calculator.js.map +1 -0
  255. package/dist/src/engine/state/nj/calculator.d.ts +3 -0
  256. package/dist/src/engine/state/nj/calculator.js +90 -0
  257. package/dist/src/engine/state/nj/calculator.js.map +1 -0
  258. package/dist/src/engine/state/ny/calculator.d.ts +3 -0
  259. package/dist/src/engine/state/ny/calculator.js +103 -0
  260. package/dist/src/engine/state/ny/calculator.js.map +1 -0
  261. package/dist/src/engine/state/oh/calculator.d.ts +3 -0
  262. package/dist/src/engine/state/oh/calculator.js +79 -0
  263. package/dist/src/engine/state/oh/calculator.js.map +1 -0
  264. package/dist/src/engine/state/pa/calculator.d.ts +3 -0
  265. package/dist/src/engine/state/pa/calculator.js +58 -0
  266. package/dist/src/engine/state/pa/calculator.js.map +1 -0
  267. package/dist/src/engine/state/registry.d.ts +9 -0
  268. package/dist/src/engine/state/registry.js +67 -0
  269. package/dist/src/engine/state/registry.js.map +1 -0
  270. package/dist/src/engine/state/types.d.ts +57 -0
  271. package/dist/src/engine/state/types.js +2 -0
  272. package/dist/src/engine/state/types.js.map +1 -0
  273. package/dist/src/engine/state/va/calculator.d.ts +3 -0
  274. package/dist/src/engine/state/va/calculator.js +76 -0
  275. package/dist/src/engine/state/va/calculator.js.map +1 -0
  276. package/dist/src/engine/suggestions/missed-deductions.d.ts +43 -0
  277. package/dist/src/engine/suggestions/missed-deductions.js +128 -0
  278. package/dist/src/engine/suggestions/missed-deductions.js.map +1 -0
  279. package/dist/src/engine/tax-calculator.d.ts +55 -0
  280. package/dist/src/engine/tax-calculator.js +156 -0
  281. package/dist/src/engine/tax-calculator.js.map +1 -0
  282. package/dist/src/engine/tax-constants-2025.d.ts +56 -0
  283. package/dist/src/engine/tax-constants-2025.js +138 -0
  284. package/dist/src/engine/tax-constants-2025.js.map +1 -0
  285. package/dist/src/engine/types.d.ts +77 -0
  286. package/dist/src/engine/types.js +2 -0
  287. package/dist/src/engine/types.js.map +1 -0
  288. package/dist/src/engine/va-math.d.ts +24 -0
  289. package/dist/src/engine/va-math.js +90 -0
  290. package/dist/src/engine/va-math.js.map +1 -0
  291. package/dist/src/engine/validator.d.ts +7 -0
  292. package/dist/src/engine/validator.js +108 -0
  293. package/dist/src/engine/validator.js.map +1 -0
  294. package/dist/src/glossary/entries/healthcare.d.ts +2 -0
  295. package/dist/src/glossary/entries/healthcare.js +78 -0
  296. package/dist/src/glossary/entries/healthcare.js.map +1 -0
  297. package/dist/src/glossary/entries/immigration.d.ts +2 -0
  298. package/dist/src/glossary/entries/immigration.js +112 -0
  299. package/dist/src/glossary/entries/immigration.js.map +1 -0
  300. package/dist/src/glossary/entries/tax.d.ts +2 -0
  301. package/dist/src/glossary/entries/tax.js +149 -0
  302. package/dist/src/glossary/entries/tax.js.map +1 -0
  303. package/dist/src/glossary/entries/unemployment.d.ts +2 -0
  304. package/dist/src/glossary/entries/unemployment.js +52 -0
  305. package/dist/src/glossary/entries/unemployment.js.map +1 -0
  306. package/dist/src/glossary/index.d.ts +19 -0
  307. package/dist/src/glossary/index.js +39 -0
  308. package/dist/src/glossary/index.js.map +1 -0
  309. package/dist/src/i18n/index.d.ts +21 -0
  310. package/dist/src/i18n/index.js +92 -0
  311. package/dist/src/i18n/index.js.map +1 -0
  312. package/dist/src/mcp/result.d.ts +3 -0
  313. package/dist/src/mcp/result.js +7 -0
  314. package/dist/src/mcp/result.js.map +1 -0
  315. package/dist/src/mcp/return-bundle.d.ts +19 -0
  316. package/dist/src/mcp/return-bundle.js +49 -0
  317. package/dist/src/mcp/return-bundle.js.map +1 -0
  318. package/dist/src/mcp/shared.d.ts +49102 -0
  319. package/dist/src/mcp/shared.js +354 -0
  320. package/dist/src/mcp/shared.js.map +1 -0
  321. package/dist/src/mcp/tools/build-packet.d.ts +7 -0
  322. package/dist/src/mcp/tools/build-packet.js +23 -0
  323. package/dist/src/mcp/tools/build-packet.js.map +1 -0
  324. package/dist/src/mcp/tools/calculate-tax.d.ts +40 -0
  325. package/dist/src/mcp/tools/calculate-tax.js +17 -0
  326. package/dist/src/mcp/tools/calculate-tax.js.map +1 -0
  327. package/dist/src/mcp/tools/deadlines.d.ts +7 -0
  328. package/dist/src/mcp/tools/deadlines.js +23 -0
  329. package/dist/src/mcp/tools/deadlines.js.map +1 -0
  330. package/dist/src/mcp/tools/describe-form.d.ts +14 -0
  331. package/dist/src/mcp/tools/describe-form.js +23 -0
  332. package/dist/src/mcp/tools/describe-form.js.map +1 -0
  333. package/dist/src/mcp/tools/describe-workflow.d.ts +6 -0
  334. package/dist/src/mcp/tools/describe-workflow.js +16 -0
  335. package/dist/src/mcp/tools/describe-workflow.js.map +1 -0
  336. package/dist/src/mcp/tools/explain-flag.d.ts +7 -0
  337. package/dist/src/mcp/tools/explain-flag.js +19 -0
  338. package/dist/src/mcp/tools/explain-flag.js.map +1 -0
  339. package/dist/src/mcp/tools/extract-document.d.ts +13 -0
  340. package/dist/src/mcp/tools/extract-document.js +20 -0
  341. package/dist/src/mcp/tools/extract-document.js.map +1 -0
  342. package/dist/src/mcp/tools/fees.d.ts +7 -0
  343. package/dist/src/mcp/tools/fees.js +24 -0
  344. package/dist/src/mcp/tools/fees.js.map +1 -0
  345. package/dist/src/mcp/tools/fill-form.d.ts +56 -0
  346. package/dist/src/mcp/tools/fill-form.js +47 -0
  347. package/dist/src/mcp/tools/fill-form.js.map +1 -0
  348. package/dist/src/mcp/tools/fill-workflow.d.ts +7 -0
  349. package/dist/src/mcp/tools/fill-workflow.js +24 -0
  350. package/dist/src/mcp/tools/fill-workflow.js.map +1 -0
  351. package/dist/src/mcp/tools/glossary.d.ts +8 -0
  352. package/dist/src/mcp/tools/glossary.js +54 -0
  353. package/dist/src/mcp/tools/glossary.js.map +1 -0
  354. package/dist/src/mcp/tools/list-forms.d.ts +6 -0
  355. package/dist/src/mcp/tools/list-forms.js +15 -0
  356. package/dist/src/mcp/tools/list-forms.js.map +1 -0
  357. package/dist/src/mcp/tools/list-workflows.d.ts +6 -0
  358. package/dist/src/mcp/tools/list-workflows.js +16 -0
  359. package/dist/src/mcp/tools/list-workflows.js.map +1 -0
  360. package/dist/src/mcp/tools/plan-life-event.d.ts +59 -0
  361. package/dist/src/mcp/tools/plan-life-event.js +41 -0
  362. package/dist/src/mcp/tools/plan-life-event.js.map +1 -0
  363. package/dist/src/mcp/tools/review-form.d.ts +40 -0
  364. package/dist/src/mcp/tools/review-form.js +26 -0
  365. package/dist/src/mcp/tools/review-form.js.map +1 -0
  366. package/dist/src/mcp/tools/review-workflow.d.ts +7 -0
  367. package/dist/src/mcp/tools/review-workflow.js +27 -0
  368. package/dist/src/mcp/tools/review-workflow.js.map +1 -0
  369. package/dist/src/mcp/tools/screen-eligibility.d.ts +53 -0
  370. package/dist/src/mcp/tools/screen-eligibility.js +44 -0
  371. package/dist/src/mcp/tools/screen-eligibility.js.map +1 -0
  372. package/dist/src/mcp/tools/start-workflow.d.ts +6 -0
  373. package/dist/src/mcp/tools/start-workflow.js +17 -0
  374. package/dist/src/mcp/tools/start-workflow.js.map +1 -0
  375. package/dist/src/mcp/tools/validate-form.d.ts +48 -0
  376. package/dist/src/mcp/tools/validate-form.js +30 -0
  377. package/dist/src/mcp/tools/validate-form.js.map +1 -0
  378. package/dist/src/mcp/tools/validate-workflow.d.ts +7 -0
  379. package/dist/src/mcp/tools/validate-workflow.js +24 -0
  380. package/dist/src/mcp/tools/validate-workflow.js.map +1 -0
  381. package/dist/src/pdf/batch.d.ts +8 -0
  382. package/dist/src/pdf/batch.js +15 -0
  383. package/dist/src/pdf/batch.js.map +1 -0
  384. package/dist/src/pdf/merge.d.ts +10 -0
  385. package/dist/src/pdf/merge.js +62 -0
  386. package/dist/src/pdf/merge.js.map +1 -0
  387. package/dist/src/pdf/ocr.d.ts +22 -0
  388. package/dist/src/pdf/ocr.js +52 -0
  389. package/dist/src/pdf/ocr.js.map +1 -0
  390. package/dist/src/pdf/reader.d.ts +2 -0
  391. package/dist/src/pdf/reader.js +354 -0
  392. package/dist/src/pdf/reader.js.map +1 -0
  393. package/dist/src/pdf/shared.d.ts +89 -0
  394. package/dist/src/pdf/shared.js +137 -0
  395. package/dist/src/pdf/shared.js.map +1 -0
  396. package/dist/src/pdf/writer.d.ts +7 -0
  397. package/dist/src/pdf/writer.js +311 -0
  398. package/dist/src/pdf/writer.js.map +1 -0
  399. package/dist/src/plugins/loader.d.ts +15 -0
  400. package/dist/src/plugins/loader.js +86 -0
  401. package/dist/src/plugins/loader.js.map +1 -0
  402. package/dist/src/plugins/sandbox.d.ts +14 -0
  403. package/dist/src/plugins/sandbox.js +88 -0
  404. package/dist/src/plugins/sandbox.js.map +1 -0
  405. package/dist/src/plugins/types.d.ts +17 -0
  406. package/dist/src/plugins/types.js +13 -0
  407. package/dist/src/plugins/types.js.map +1 -0
  408. package/dist/src/schemas/2025/f1040.d.ts +127 -0
  409. package/dist/src/schemas/2025/f1040.js +104 -0
  410. package/dist/src/schemas/2025/f1040.js.map +1 -0
  411. package/dist/src/schemas/2025/f1099-int.d.ts +53 -0
  412. package/dist/src/schemas/2025/f1099-int.js +51 -0
  413. package/dist/src/schemas/2025/f1099-int.js.map +1 -0
  414. package/dist/src/schemas/2025/f1099-nec.d.ts +47 -0
  415. package/dist/src/schemas/2025/f1099-nec.js +45 -0
  416. package/dist/src/schemas/2025/f1099-nec.js.map +1 -0
  417. package/dist/src/schemas/2025/form-8949.d.ts +46 -0
  418. package/dist/src/schemas/2025/form-8949.js +71 -0
  419. package/dist/src/schemas/2025/form-8949.js.map +1 -0
  420. package/dist/src/schemas/2025/index.d.ts +1004 -0
  421. package/dist/src/schemas/2025/index.js +60 -0
  422. package/dist/src/schemas/2025/index.js.map +1 -0
  423. package/dist/src/schemas/2025/schedule-1.d.ts +44 -0
  424. package/dist/src/schemas/2025/schedule-1.js +56 -0
  425. package/dist/src/schemas/2025/schedule-1.js.map +1 -0
  426. package/dist/src/schemas/2025/schedule-b.d.ts +32 -0
  427. package/dist/src/schemas/2025/schedule-b.js +53 -0
  428. package/dist/src/schemas/2025/schedule-b.js.map +1 -0
  429. package/dist/src/schemas/2025/schedule-c.d.ts +58 -0
  430. package/dist/src/schemas/2025/schedule-c.js +46 -0
  431. package/dist/src/schemas/2025/schedule-c.js.map +1 -0
  432. package/dist/src/schemas/2025/schedule-d.d.ts +36 -0
  433. package/dist/src/schemas/2025/schedule-d.js +52 -0
  434. package/dist/src/schemas/2025/schedule-d.js.map +1 -0
  435. package/dist/src/schemas/2025/shared.d.ts +98 -0
  436. package/dist/src/schemas/2025/shared.js +161 -0
  437. package/dist/src/schemas/2025/shared.js.map +1 -0
  438. package/dist/src/schemas/2025/w2.d.ts +57 -0
  439. package/dist/src/schemas/2025/w2.js +62 -0
  440. package/dist/src/schemas/2025/w2.js.map +1 -0
  441. package/dist/src/storage/drafts.d.ts +25 -0
  442. package/dist/src/storage/drafts.js +117 -0
  443. package/dist/src/storage/drafts.js.map +1 -0
  444. package/dist/src/storage/paths.d.ts +15 -0
  445. package/dist/src/storage/paths.js +33 -0
  446. package/dist/src/storage/paths.js.map +1 -0
  447. package/dist/src/storage/profile.d.ts +17 -0
  448. package/dist/src/storage/profile.js +59 -0
  449. package/dist/src/storage/profile.js.map +1 -0
  450. package/dist/src/storage/vault.d.ts +38 -0
  451. package/dist/src/storage/vault.js +187 -0
  452. package/dist/src/storage/vault.js.map +1 -0
  453. package/dist/src/testing/synthetic.d.ts +13 -0
  454. package/dist/src/testing/synthetic.js +164 -0
  455. package/dist/src/testing/synthetic.js.map +1 -0
  456. package/dist/src/types.d.ts +362 -0
  457. package/dist/src/types.js +2 -0
  458. package/dist/src/types.js.map +1 -0
  459. package/dist/src/workflows/deadlines.d.ts +13 -0
  460. package/dist/src/workflows/deadlines.js +88 -0
  461. package/dist/src/workflows/deadlines.js.map +1 -0
  462. package/dist/src/workflows/domains/benefits.d.ts +409 -0
  463. package/dist/src/workflows/domains/benefits.js +744 -0
  464. package/dist/src/workflows/domains/benefits.js.map +1 -0
  465. package/dist/src/workflows/domains/business.d.ts +65 -0
  466. package/dist/src/workflows/domains/business.js +76 -0
  467. package/dist/src/workflows/domains/business.js.map +1 -0
  468. package/dist/src/workflows/domains/education.d.ts +251 -0
  469. package/dist/src/workflows/domains/education.js +504 -0
  470. package/dist/src/workflows/domains/education.js.map +1 -0
  471. package/dist/src/workflows/domains/estate.d.ts +217 -0
  472. package/dist/src/workflows/domains/estate.js +407 -0
  473. package/dist/src/workflows/domains/estate.js.map +1 -0
  474. package/dist/src/workflows/domains/healthcare-ext.d.ts +88 -0
  475. package/dist/src/workflows/domains/healthcare-ext.js +150 -0
  476. package/dist/src/workflows/domains/healthcare-ext.js.map +1 -0
  477. package/dist/src/workflows/domains/healthcare.d.ts +92 -0
  478. package/dist/src/workflows/domains/healthcare.js +126 -0
  479. package/dist/src/workflows/domains/healthcare.js.map +1 -0
  480. package/dist/src/workflows/domains/identity-domain.d.ts +291 -0
  481. package/dist/src/workflows/domains/identity-domain.js +541 -0
  482. package/dist/src/workflows/domains/identity-domain.js.map +1 -0
  483. package/dist/src/workflows/domains/immigration-ext.d.ts +282 -0
  484. package/dist/src/workflows/domains/immigration-ext.js +590 -0
  485. package/dist/src/workflows/domains/immigration-ext.js.map +1 -0
  486. package/dist/src/workflows/domains/immigration.d.ts +121 -0
  487. package/dist/src/workflows/domains/immigration.js +152 -0
  488. package/dist/src/workflows/domains/immigration.js.map +1 -0
  489. package/dist/src/workflows/domains/legal.d.ts +235 -0
  490. package/dist/src/workflows/domains/legal.js +380 -0
  491. package/dist/src/workflows/domains/legal.js.map +1 -0
  492. package/dist/src/workflows/domains/permits.d.ts +65 -0
  493. package/dist/src/workflows/domains/permits.js +74 -0
  494. package/dist/src/workflows/domains/permits.js.map +1 -0
  495. package/dist/src/workflows/domains/retirement.d.ts +59 -0
  496. package/dist/src/workflows/domains/retirement.js +155 -0
  497. package/dist/src/workflows/domains/retirement.js.map +1 -0
  498. package/dist/src/workflows/domains/tax.d.ts +133 -0
  499. package/dist/src/workflows/domains/tax.js +187 -0
  500. package/dist/src/workflows/domains/tax.js.map +1 -0
  501. package/dist/src/workflows/domains/unemployment.d.ts +105 -0
  502. package/dist/src/workflows/domains/unemployment.js +122 -0
  503. package/dist/src/workflows/domains/unemployment.js.map +1 -0
  504. package/dist/src/workflows/domains/veterans.d.ts +189 -0
  505. package/dist/src/workflows/domains/veterans.js +380 -0
  506. package/dist/src/workflows/domains/veterans.js.map +1 -0
  507. package/dist/src/workflows/fees.d.ts +15 -0
  508. package/dist/src/workflows/fees.js +93 -0
  509. package/dist/src/workflows/fees.js.map +1 -0
  510. package/dist/src/workflows/helpers.d.ts +8 -0
  511. package/dist/src/workflows/helpers.js +66 -0
  512. package/dist/src/workflows/helpers.js.map +1 -0
  513. package/dist/src/workflows/io.d.ts +3 -0
  514. package/dist/src/workflows/io.js +38 -0
  515. package/dist/src/workflows/io.js.map +1 -0
  516. package/dist/src/workflows/registry.d.ts +51355 -0
  517. package/dist/src/workflows/registry.js +140 -0
  518. package/dist/src/workflows/registry.js.map +1 -0
  519. package/dist/src/workflows/schemas/benefits.d.ts +78 -0
  520. package/dist/src/workflows/schemas/benefits.js +91 -0
  521. package/dist/src/workflows/schemas/benefits.js.map +1 -0
  522. package/dist/src/workflows/schemas/common.d.ts +27 -0
  523. package/dist/src/workflows/schemas/common.js +28 -0
  524. package/dist/src/workflows/schemas/common.js.map +1 -0
  525. package/dist/src/workflows/schemas/education.d.ts +70 -0
  526. package/dist/src/workflows/schemas/education.js +85 -0
  527. package/dist/src/workflows/schemas/education.js.map +1 -0
  528. package/dist/src/workflows/schemas/estate.d.ts +64 -0
  529. package/dist/src/workflows/schemas/estate.js +85 -0
  530. package/dist/src/workflows/schemas/estate.js.map +1 -0
  531. package/dist/src/workflows/schemas/healthcare-ext.d.ts +15 -0
  532. package/dist/src/workflows/schemas/healthcare-ext.js +17 -0
  533. package/dist/src/workflows/schemas/healthcare-ext.js.map +1 -0
  534. package/dist/src/workflows/schemas/healthcare.d.ts +33 -0
  535. package/dist/src/workflows/schemas/healthcare.js +20 -0
  536. package/dist/src/workflows/schemas/healthcare.js.map +1 -0
  537. package/dist/src/workflows/schemas/identity-domain.d.ts +64 -0
  538. package/dist/src/workflows/schemas/identity-domain.js +87 -0
  539. package/dist/src/workflows/schemas/identity-domain.js.map +1 -0
  540. package/dist/src/workflows/schemas/immigration-ext.d.ts +63 -0
  541. package/dist/src/workflows/schemas/immigration-ext.js +58 -0
  542. package/dist/src/workflows/schemas/immigration-ext.js.map +1 -0
  543. package/dist/src/workflows/schemas/immigration.d.ts +48 -0
  544. package/dist/src/workflows/schemas/immigration.js +27 -0
  545. package/dist/src/workflows/schemas/immigration.js.map +1 -0
  546. package/dist/src/workflows/schemas/legal.d.ts +45 -0
  547. package/dist/src/workflows/schemas/legal.js +45 -0
  548. package/dist/src/workflows/schemas/legal.js.map +1 -0
  549. package/dist/src/workflows/schemas/planning.d.ts +23 -0
  550. package/dist/src/workflows/schemas/planning.js +15 -0
  551. package/dist/src/workflows/schemas/planning.js.map +1 -0
  552. package/dist/src/workflows/schemas/retirement.d.ts +14 -0
  553. package/dist/src/workflows/schemas/retirement.js +22 -0
  554. package/dist/src/workflows/schemas/retirement.js.map +1 -0
  555. package/dist/src/workflows/schemas/tax.d.ts +58 -0
  556. package/dist/src/workflows/schemas/tax.js +51 -0
  557. package/dist/src/workflows/schemas/tax.js.map +1 -0
  558. package/dist/src/workflows/schemas/unemployment.d.ts +33 -0
  559. package/dist/src/workflows/schemas/unemployment.js +19 -0
  560. package/dist/src/workflows/schemas/unemployment.js.map +1 -0
  561. package/dist/src/workflows/schemas/veterans.d.ts +47 -0
  562. package/dist/src/workflows/schemas/veterans.js +51 -0
  563. package/dist/src/workflows/schemas/veterans.js.map +1 -0
  564. package/dist/src/workflows/types.d.ts +9 -0
  565. package/dist/src/workflows/types.js +2 -0
  566. package/dist/src/workflows/types.js.map +1 -0
  567. package/dist/xmcp.config.d.ts +3 -0
  568. package/dist/xmcp.config.js +29 -0
  569. package/dist/xmcp.config.js.map +1 -0
  570. package/llms.txt +48 -0
  571. 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,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from "../src/cli/index.js";
3
+ await runCli(process.argv);
4
+ //# sourceMappingURL=pigeongov.js.map
@@ -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 {};