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
@@ -0,0 +1,744 @@
1
+ import { buildEvidenceItem, buildGenericSummary, currency, genericArtifacts, makeCheck, makeFlag, } from "../helpers.js";
2
+ import { liheapInputSchema, medicaidInputSchema, section8InputSchema, snapInputSchema, ssdiInputSchema, wicInputSchema, } from "../schemas/benefits.js";
3
+ // ---------------------------------------------------------------------------
4
+ // FPL tables (2025)
5
+ // ---------------------------------------------------------------------------
6
+ const FPL_2025 = {
7
+ 1: 15_650,
8
+ 2: 21_150,
9
+ 3: 26_650,
10
+ 4: 32_150,
11
+ 5: 37_650,
12
+ 6: 43_150,
13
+ 7: 48_650,
14
+ 8: 54_150,
15
+ };
16
+ function fplForSize(size) {
17
+ if (size <= 0)
18
+ return FPL_2025[1];
19
+ if (size <= 8)
20
+ return FPL_2025[size];
21
+ // Each additional person adds ~$5,500
22
+ return FPL_2025[8] + (size - 8) * 5_500;
23
+ }
24
+ // ---------------------------------------------------------------------------
25
+ // Max SNAP allotment (2025 approximate)
26
+ // ---------------------------------------------------------------------------
27
+ const SNAP_MAX_ALLOTMENT = {
28
+ 1: 292,
29
+ 2: 536,
30
+ 3: 768,
31
+ 4: 975,
32
+ 5: 1_158,
33
+ 6: 1_390,
34
+ 7: 1_536,
35
+ 8: 1_756,
36
+ };
37
+ function snapMaxForSize(size) {
38
+ if (size <= 0)
39
+ return SNAP_MAX_ALLOTMENT[1];
40
+ if (size <= 8)
41
+ return SNAP_MAX_ALLOTMENT[size];
42
+ return SNAP_MAX_ALLOTMENT[8] + (size - 8) * 220;
43
+ }
44
+ // ---------------------------------------------------------------------------
45
+ // Medicaid expansion states (2025) — states that have NOT expanded
46
+ // ---------------------------------------------------------------------------
47
+ const NON_EXPANSION_STATES = new Set([
48
+ "AL", "FL", "GA", "KS", "MS", "SC", "TN", "TX", "WI", "WY",
49
+ ]);
50
+ // ---------------------------------------------------------------------------
51
+ // benefits/snap
52
+ // ---------------------------------------------------------------------------
53
+ function buildSnapBundle(input) {
54
+ const fpl = fplForSize(input.householdSize);
55
+ const categoricallyEligible = input.receivingTanf || input.receivingSsi;
56
+ const grossIncomeLimit = fpl * 1.3 / 12;
57
+ const netIncomeLimit = fpl / 12;
58
+ const grossIncomeTest = categoricallyEligible || input.monthlyGrossIncome <= grossIncomeLimit;
59
+ const netIncomeTest = categoricallyEligible || input.monthlyNetIncome <= netIncomeLimit;
60
+ const maxAllotment = snapMaxForSize(input.householdSize);
61
+ const estimatedBenefit = Math.max(0, maxAllotment - Math.round(input.monthlyNetIncome * 0.3));
62
+ const evidence = [
63
+ buildEvidenceItem("income-verification", "Income verification (pay stubs, tax return)", true, input.monthlyGrossIncome > 0),
64
+ buildEvidenceItem("identity", "Government-issued photo ID", true, true),
65
+ buildEvidenceItem("residency", "Proof of state residency", true, true),
66
+ buildEvidenceItem("citizenship", "Citizenship or immigration status documentation", true, input.citizenshipStatus === "us_citizen"),
67
+ ];
68
+ const flags = [];
69
+ if (categoricallyEligible) {
70
+ flags.push(makeFlag("receivingTanf", "review", "Categorically eligible through TANF/SSI — income test may be waived."));
71
+ }
72
+ if (!grossIncomeTest) {
73
+ flags.push(makeFlag("monthlyGrossIncome", "error", `Gross income ${currency(input.monthlyGrossIncome)} exceeds 130% FPL limit of ${currency(grossIncomeLimit)}/month.`));
74
+ }
75
+ if (!netIncomeTest) {
76
+ flags.push(makeFlag("monthlyNetIncome", "warning", `Net income ${currency(input.monthlyNetIncome)} exceeds 100% FPL limit of ${currency(netIncomeLimit)}/month.`));
77
+ }
78
+ if (input.citizenshipStatus === "other") {
79
+ flags.push(makeFlag("citizenshipStatus", "error", "SNAP generally requires US citizenship or qualified alien status."));
80
+ }
81
+ const checks = [
82
+ makeCheck("gross-income", "Gross income test (130% FPL)", grossIncomeTest, "error", `Monthly gross income must be at or below ${currency(grossIncomeLimit)}.`),
83
+ makeCheck("net-income", "Net income test (100% FPL)", netIncomeTest, "error", `Monthly net income must be at or below ${currency(netIncomeLimit)}.`),
84
+ makeCheck("citizenship", "Citizenship/immigration status", input.citizenshipStatus !== "other", "error", "Applicant must be a US citizen or qualified alien."),
85
+ ];
86
+ const eligible = grossIncomeTest && netIncomeTest;
87
+ const readiness = eligible ? "likely eligible" : "may not qualify";
88
+ return {
89
+ workflowId: "benefits/snap",
90
+ domain: "benefits",
91
+ title: "SNAP benefits eligibility",
92
+ summary: "SNAP (food stamps) eligibility assessment and benefit estimation. PigeonGov does not submit applications.",
93
+ applicant: undefined,
94
+ household: [],
95
+ evidence,
96
+ answers: input,
97
+ derived: {
98
+ fpl,
99
+ grossIncomeLimit,
100
+ netIncomeLimit,
101
+ grossIncomeTest,
102
+ netIncomeTest,
103
+ categoricallyEligible,
104
+ maxAllotment,
105
+ estimatedMonthlyBenefit: estimatedBenefit,
106
+ },
107
+ validation: { checks, flaggedFields: flags },
108
+ review: buildGenericSummary("SNAP eligibility", readiness, evidence, flags, [
109
+ `Household size: ${input.householdSize}. FPL: ${currency(fpl)}.`,
110
+ `Gross income test (130% FPL): ${grossIncomeTest ? "PASS" : "FAIL"}.`,
111
+ `Net income test (100% FPL): ${netIncomeTest ? "PASS" : "FAIL"}.`,
112
+ categoricallyEligible ? "Categorically eligible via TANF/SSI." : "",
113
+ `Estimated monthly benefit: ${currency(estimatedBenefit)}.`,
114
+ ].filter(Boolean)),
115
+ outputArtifacts: genericArtifacts("benefits-snap", evidence),
116
+ provenance: ["workflow-registry"],
117
+ };
118
+ }
119
+ // ---------------------------------------------------------------------------
120
+ // benefits/section8
121
+ // ---------------------------------------------------------------------------
122
+ function buildSection8Bundle(input) {
123
+ // Placeholder 50% AMI — in production this would vary by county
124
+ const amiLimit = 30_000;
125
+ const incomeEligible = input.annualIncome <= amiLimit;
126
+ const estimatedVoucher = Math.max(0, input.currentHousingCost - Math.round(input.annualIncome * 0.3 / 12));
127
+ const evidence = [
128
+ buildEvidenceItem("income-verification", "Income verification", true, input.annualIncome > 0),
129
+ buildEvidenceItem("identity", "Government-issued photo ID", true, true),
130
+ buildEvidenceItem("lease", "Current lease agreement", false, false),
131
+ ];
132
+ const flags = [
133
+ makeFlag("waitlist", "review", "Most areas have multi-year waitlists for Section 8 vouchers."),
134
+ ];
135
+ if (!incomeEligible) {
136
+ flags.push(makeFlag("annualIncome", "warning", `Annual income ${currency(input.annualIncome)} exceeds 50% AMI placeholder of ${currency(amiLimit)}.`));
137
+ }
138
+ const checks = [
139
+ makeCheck("income-limit", "Income below 50% AMI", incomeEligible, "warning", `Annual income should be at or below ${currency(amiLimit)} (placeholder 50% AMI).`),
140
+ ];
141
+ const preferenceFactors = [];
142
+ if (input.isDisabled)
143
+ preferenceFactors.push("disabled");
144
+ if (input.isElderly)
145
+ preferenceFactors.push("elderly");
146
+ if (input.isVeteran)
147
+ preferenceFactors.push("veteran");
148
+ return {
149
+ workflowId: "benefits/section8",
150
+ domain: "benefits",
151
+ title: "Section 8 Housing Choice Voucher",
152
+ summary: "Section 8 eligibility assessment and voucher estimation. PigeonGov does not submit applications.",
153
+ applicant: undefined,
154
+ household: [],
155
+ evidence,
156
+ answers: input,
157
+ derived: {
158
+ amiLimit,
159
+ incomeEligible,
160
+ estimatedMonthlyVoucher: estimatedVoucher,
161
+ preferenceFactors,
162
+ },
163
+ validation: { checks, flaggedFields: flags },
164
+ review: buildGenericSummary("Section 8 eligibility", incomeEligible ? "income eligible — waitlist likely" : "income may exceed limit", evidence, flags, [
165
+ `Household size: ${input.householdSize}. County: ${input.county}, ${input.state}.`,
166
+ `Annual income: ${currency(input.annualIncome)}. 50% AMI limit: ${currency(amiLimit)}.`,
167
+ `Estimated voucher value: ${currency(estimatedVoucher)}/month.`,
168
+ preferenceFactors.length > 0 ? `Preference factors: ${preferenceFactors.join(", ")}.` : "No preference factors identified.",
169
+ ]),
170
+ outputArtifacts: genericArtifacts("benefits-section8", evidence),
171
+ provenance: ["workflow-registry"],
172
+ };
173
+ }
174
+ // ---------------------------------------------------------------------------
175
+ // benefits/wic
176
+ // ---------------------------------------------------------------------------
177
+ function buildWicBundle(input) {
178
+ const fpl = fplForSize(input.householdSize);
179
+ const incomeLimit185 = fpl * 1.85;
180
+ const incomeEligible = input.annualIncome <= incomeLimit185;
181
+ const adjunctivelyEligible = input.receivingMedicaid || input.receivingSnap || input.receivingTanf;
182
+ const evidence = [
183
+ buildEvidenceItem("identity", "Proof of identity", true, true),
184
+ buildEvidenceItem("income-or-program", "Income documentation or proof of program enrollment", true, incomeEligible || adjunctivelyEligible),
185
+ buildEvidenceItem("medical-referral", "Medical/nutritional referral", true, false),
186
+ ];
187
+ const flags = [];
188
+ if (input.applicantCategory === "child" && input.applicantAge !== undefined && input.applicantAge >= 5) {
189
+ flags.push(makeFlag("applicantAge", "error", "WIC child participants must be under age 5."));
190
+ }
191
+ if (adjunctivelyEligible) {
192
+ flags.push(makeFlag("adjunctiveEligibility", "review", "Adjunctively eligible through Medicaid, SNAP, or TANF — income documentation may not be required."));
193
+ }
194
+ if (!incomeEligible && !adjunctivelyEligible) {
195
+ flags.push(makeFlag("annualIncome", "warning", `Annual income ${currency(input.annualIncome)} exceeds 185% FPL limit of ${currency(incomeLimit185)}.`));
196
+ }
197
+ const ageError = input.applicantCategory === "child" && input.applicantAge !== undefined && input.applicantAge >= 5;
198
+ const checks = [
199
+ makeCheck("income-eligibility", "Income at or below 185% FPL (or adjunctive)", incomeEligible || adjunctivelyEligible, "error", `Household income must be at or below ${currency(incomeLimit185)} (185% FPL) or enrolled in qualifying program.`),
200
+ makeCheck("age-check", "Child under age 5", !ageError, "error", "WIC child participants must be under 5 years old."),
201
+ ];
202
+ const eligible = (incomeEligible || adjunctivelyEligible) && !ageError;
203
+ return {
204
+ workflowId: "benefits/wic",
205
+ domain: "benefits",
206
+ title: "WIC program eligibility",
207
+ summary: "WIC eligibility assessment for women, infants, and children. PigeonGov does not submit applications.",
208
+ applicant: undefined,
209
+ household: [],
210
+ evidence,
211
+ answers: input,
212
+ derived: {
213
+ fpl,
214
+ incomeLimit185,
215
+ incomeEligible,
216
+ adjunctivelyEligible,
217
+ eligible,
218
+ },
219
+ validation: { checks, flaggedFields: flags },
220
+ review: buildGenericSummary("WIC eligibility", eligible ? "likely eligible" : "may not qualify", evidence, flags, [
221
+ `Category: ${input.applicantCategory}. Household size: ${input.householdSize}.`,
222
+ `Annual income: ${currency(input.annualIncome)}. 185% FPL limit: ${currency(incomeLimit185)}.`,
223
+ adjunctivelyEligible ? "Adjunctively eligible via Medicaid/SNAP/TANF." : "",
224
+ input.applicantAge !== undefined ? `Applicant age: ${input.applicantAge}.` : "",
225
+ ].filter(Boolean)),
226
+ outputArtifacts: genericArtifacts("benefits-wic", evidence),
227
+ provenance: ["workflow-registry"],
228
+ };
229
+ }
230
+ // ---------------------------------------------------------------------------
231
+ // benefits/liheap
232
+ // ---------------------------------------------------------------------------
233
+ function buildLiheapBundle(input) {
234
+ const fpl = fplForSize(input.householdSize);
235
+ const incomeLimit150 = fpl * 1.5;
236
+ const incomeEligible = input.annualIncome <= incomeLimit150;
237
+ const benefitType = input.hasUtilityShutoffNotice ? "crisis" : "regular";
238
+ const evidence = [
239
+ buildEvidenceItem("utility-bills", "Recent utility bills", true, true),
240
+ buildEvidenceItem("income-verification", "Income verification", true, input.annualIncome > 0),
241
+ buildEvidenceItem("identity", "Government-issued photo ID", true, true),
242
+ ];
243
+ const flags = [];
244
+ if (input.hasUtilityShutoffNotice) {
245
+ flags.push(makeFlag("hasUtilityShutoffNotice", "review", "Utility shutoff notice present — crisis assistance may be available with expedited processing."));
246
+ }
247
+ if (!incomeEligible) {
248
+ flags.push(makeFlag("annualIncome", "warning", `Annual income ${currency(input.annualIncome)} exceeds 150% FPL limit of ${currency(incomeLimit150)}.`));
249
+ }
250
+ const checks = [
251
+ makeCheck("income-eligibility", "Income at or below 150% FPL", incomeEligible, "error", `Household income must be at or below ${currency(incomeLimit150)} (150% FPL).`),
252
+ ];
253
+ return {
254
+ workflowId: "benefits/liheap",
255
+ domain: "benefits",
256
+ title: "LIHEAP energy assistance",
257
+ summary: "LIHEAP eligibility assessment for home energy assistance. PigeonGov does not submit applications.",
258
+ applicant: undefined,
259
+ household: [],
260
+ evidence,
261
+ answers: input,
262
+ derived: {
263
+ fpl,
264
+ incomeLimit150,
265
+ incomeEligible,
266
+ benefitType,
267
+ season: input.season,
268
+ },
269
+ validation: { checks, flaggedFields: flags },
270
+ review: buildGenericSummary("LIHEAP eligibility", incomeEligible ? "likely eligible" : "may not qualify", evidence, flags, [
271
+ `Household size: ${input.householdSize}. State: ${input.state}.`,
272
+ `Annual income: ${currency(input.annualIncome)}. 150% FPL limit: ${currency(incomeLimit150)}.`,
273
+ `Heating source: ${input.heatingSource}. Season: ${input.season}.`,
274
+ `Benefit type recommendation: ${benefitType} assistance.`,
275
+ ]),
276
+ outputArtifacts: genericArtifacts("benefits-liheap", evidence),
277
+ provenance: ["workflow-registry"],
278
+ };
279
+ }
280
+ // ---------------------------------------------------------------------------
281
+ // benefits/medicaid
282
+ // ---------------------------------------------------------------------------
283
+ function buildMedicaidBundle(input) {
284
+ const fpl = fplForSize(input.householdSize);
285
+ const annualIncome = input.monthlyIncome * 12;
286
+ const incomeAsPctFpl = Math.round((annualIncome / fpl) * 100);
287
+ const isExpansionState = !NON_EXPANSION_STATES.has(input.state);
288
+ // Medicaid income limits vary by category; simplified here
289
+ // Expansion states: 138% FPL for adults. Non-expansion: varies (often ~50-100% for parents, none for childless adults)
290
+ const medicaidLimit = isExpansionState ? 138 : 100;
291
+ const likelyEligible = incomeAsPctFpl <= medicaidLimit;
292
+ // ACA marketplace subsidy threshold: 100-400% FPL
293
+ const suggestAca = !likelyEligible && incomeAsPctFpl <= 400;
294
+ const evidence = [
295
+ buildEvidenceItem("income-verification", "Income verification", true, input.monthlyIncome > 0),
296
+ buildEvidenceItem("identity", "Government-issued photo ID", true, true),
297
+ buildEvidenceItem("disability-docs", "Disability documentation", input.isDisabled, input.isDisabled),
298
+ ];
299
+ const flags = [];
300
+ if (suggestAca) {
301
+ flags.push(makeFlag("incomeLevel", "review", `Income at ${incomeAsPctFpl}% FPL — above Medicaid limit but may qualify for ACA marketplace subsidies.`));
302
+ }
303
+ if (!isExpansionState && !likelyEligible) {
304
+ flags.push(makeFlag("state", "warning", `${input.state} has not expanded Medicaid. Eligibility is more limited for non-disabled adults without children.`));
305
+ }
306
+ const checks = [
307
+ makeCheck("income-check", "MAGI income within Medicaid limits", likelyEligible, "warning", `Income at ${incomeAsPctFpl}% FPL. Medicaid limit in ${input.state}: ~${medicaidLimit}% FPL.`),
308
+ ];
309
+ const eligibilityLabel = likelyEligible ? "likely" : "unlikely";
310
+ return {
311
+ workflowId: "benefits/medicaid",
312
+ domain: "benefits",
313
+ title: "Medicaid eligibility assessment",
314
+ summary: "MAGI-based Medicaid eligibility review. PigeonGov does not submit applications.",
315
+ applicant: undefined,
316
+ household: [],
317
+ evidence,
318
+ answers: input,
319
+ derived: {
320
+ fpl,
321
+ annualIncome,
322
+ incomeAsPctFpl,
323
+ isExpansionState,
324
+ medicaidLimit,
325
+ likelyEligible,
326
+ suggestAca,
327
+ },
328
+ validation: { checks, flaggedFields: flags },
329
+ review: buildGenericSummary("Medicaid eligibility", `${eligibilityLabel}. Income at ${incomeAsPctFpl}% FPL`, evidence, flags, [
330
+ `Household size: ${input.householdSize}. State: ${input.state}.`,
331
+ `Monthly income: ${currency(input.monthlyIncome)}. Annual: ${currency(annualIncome)}.`,
332
+ `Income as % of FPL: ${incomeAsPctFpl}%.`,
333
+ `Expansion state: ${isExpansionState ? "yes" : "no"}. Medicaid limit: ~${medicaidLimit}% FPL.`,
334
+ `Medicaid eligibility: ${eligibilityLabel}. Income at ${incomeAsPctFpl}% FPL.`,
335
+ suggestAca ? "Consider ACA marketplace enrollment — subsidies may be available." : "",
336
+ ].filter(Boolean)),
337
+ outputArtifacts: genericArtifacts("benefits-medicaid", evidence),
338
+ provenance: ["workflow-registry"],
339
+ };
340
+ }
341
+ // ---------------------------------------------------------------------------
342
+ // benefits/ssdi-application
343
+ // ---------------------------------------------------------------------------
344
+ function buildSsdiBundle(input) {
345
+ const SGA_LIMIT_2025 = 1_620; // monthly
346
+ const aboveSga = input.monthlyEarnings > SGA_LIMIT_2025;
347
+ const evidence = [
348
+ buildEvidenceItem("medical-records", "Medical records for all conditions", true, input.hasBeenHospitalized),
349
+ buildEvidenceItem("work-history", "Work history (SSA form)", true, true),
350
+ buildEvidenceItem("physician-docs", "Treating physician documentation", true, input.treatingPhysicians.length > 0),
351
+ ];
352
+ const flags = [
353
+ makeFlag("applicationOutlook", "review", "Most initial SSDI applications are denied — prepare for appeals process."),
354
+ ];
355
+ if (aboveSga) {
356
+ flags.push(makeFlag("monthlyEarnings", "error", `Current monthly earnings of ${currency(input.monthlyEarnings)} exceed the 2025 SGA limit of ${currency(SGA_LIMIT_2025)}.`));
357
+ }
358
+ const checks = [
359
+ makeCheck("sga-check", "Earnings below SGA", !aboveSga, "error", `Monthly earnings must be at or below ${currency(SGA_LIMIT_2025)} (2025 SGA limit).`),
360
+ makeCheck("medical-conditions", "Medical conditions documented", input.medicalConditions.length > 0, "error", "At least one medical condition must be documented."),
361
+ makeCheck("treating-physicians", "Treating physicians identified", input.treatingPhysicians.length > 0, "warning", "At least one treating physician should be identified."),
362
+ ];
363
+ // Five-step evaluation summary
364
+ const fiveStepSummary = [
365
+ `Step 1 — SGA: ${aboveSga ? "FAIL (earnings above SGA)" : "PASS (earnings at or below SGA)"}`,
366
+ `Step 2 — Severity: ${input.medicalConditions.length} condition(s) reported.`,
367
+ "Step 3 — Listings: requires SSA medical review (not assessed here).",
368
+ "Step 4 — Past work: requires vocational analysis (not assessed here).",
369
+ "Step 5 — Other work: requires vocational analysis (not assessed here).",
370
+ ];
371
+ return {
372
+ workflowId: "benefits/ssdi-application",
373
+ domain: "benefits",
374
+ title: "SSDI application intake",
375
+ summary: "SSDI application intake with SGA check and five-step evaluation summary. PigeonGov does not submit claims.",
376
+ applicant: undefined,
377
+ household: [],
378
+ evidence,
379
+ answers: input,
380
+ derived: {
381
+ sgaLimit: SGA_LIMIT_2025,
382
+ aboveSga,
383
+ conditionCount: input.medicalConditions.length,
384
+ physicianCount: input.treatingPhysicians.length,
385
+ fiveStepSummary,
386
+ },
387
+ validation: { checks, flaggedFields: flags },
388
+ review: buildGenericSummary("SSDI application", aboveSga ? "SGA exceeded — likely ineligible" : "SGA within limits — further review needed", evidence, flags, [
389
+ `Applicant: ${input.applicantName}.`,
390
+ `Disability onset: ${input.disabilityOnsetDate}. Last worked: ${input.lastWorkDate}.`,
391
+ `Monthly earnings: ${currency(input.monthlyEarnings)}. SGA limit: ${currency(SGA_LIMIT_2025)}.`,
392
+ `Conditions: ${input.medicalConditions.join(", ")}.`,
393
+ `Treating physicians: ${input.treatingPhysicians.join(", ")}.`,
394
+ ...fiveStepSummary,
395
+ ]),
396
+ outputArtifacts: genericArtifacts("benefits-ssdi-application", evidence),
397
+ provenance: ["workflow-registry"],
398
+ };
399
+ }
400
+ // ---------------------------------------------------------------------------
401
+ // Export
402
+ // ---------------------------------------------------------------------------
403
+ export const benefitsWorkflows = {
404
+ "benefits/snap": {
405
+ summary: {
406
+ id: "benefits/snap",
407
+ domain: "benefits",
408
+ title: "SNAP benefits eligibility",
409
+ summary: "Assess SNAP (food stamps) eligibility using FPL-based income tests and estimate monthly benefits.",
410
+ status: "active",
411
+ audience: "household",
412
+ tags: ["snap", "food-stamps", "benefits", "fpl", "nutrition"],
413
+ },
414
+ inputSchema: snapInputSchema,
415
+ starterData: {
416
+ householdSize: 1,
417
+ monthlyGrossIncome: 0,
418
+ monthlyNetIncome: 0,
419
+ state: "CA",
420
+ citizenshipStatus: "us_citizen",
421
+ receivingTanf: false,
422
+ receivingSsi: false,
423
+ hasAssets: false,
424
+ assetValue: 0,
425
+ hasVehicle: false,
426
+ },
427
+ sections: [
428
+ {
429
+ id: "household",
430
+ title: "Household",
431
+ fields: [
432
+ { key: "householdSize", label: "Household size", type: "number" },
433
+ { key: "state", label: "State", type: "text" },
434
+ {
435
+ key: "citizenshipStatus",
436
+ label: "Citizenship status",
437
+ type: "select",
438
+ options: [
439
+ { label: "US citizen", value: "us_citizen" },
440
+ { label: "Permanent resident", value: "permanent_resident" },
441
+ { label: "Qualified alien", value: "qualified_alien" },
442
+ { label: "Other", value: "other" },
443
+ ],
444
+ },
445
+ ],
446
+ },
447
+ {
448
+ id: "income",
449
+ title: "Income",
450
+ fields: [
451
+ { key: "monthlyGrossIncome", label: "Monthly gross income", type: "currency" },
452
+ { key: "monthlyNetIncome", label: "Monthly net income", type: "currency" },
453
+ ],
454
+ },
455
+ {
456
+ id: "assets",
457
+ title: "Assets",
458
+ fields: [
459
+ { key: "hasAssets", label: "Has countable assets", type: "confirm" },
460
+ { key: "assetValue", label: "Total asset value", type: "currency" },
461
+ { key: "hasVehicle", label: "Has vehicle", type: "confirm" },
462
+ ],
463
+ },
464
+ {
465
+ id: "eligibility-factors",
466
+ title: "Eligibility Factors",
467
+ fields: [
468
+ { key: "receivingTanf", label: "Currently receiving TANF", type: "confirm" },
469
+ { key: "receivingSsi", label: "Currently receiving SSI", type: "confirm" },
470
+ ],
471
+ },
472
+ ],
473
+ buildBundle: buildSnapBundle,
474
+ },
475
+ "benefits/section8": {
476
+ summary: {
477
+ id: "benefits/section8",
478
+ domain: "benefits",
479
+ title: "Section 8 Housing Choice Voucher",
480
+ summary: "Assess Section 8 housing voucher eligibility based on income and area median income limits.",
481
+ status: "active",
482
+ audience: "household",
483
+ tags: ["section-8", "housing", "voucher", "hud", "benefits"],
484
+ },
485
+ inputSchema: section8InputSchema,
486
+ starterData: {
487
+ householdSize: 1,
488
+ annualIncome: 0,
489
+ state: "CA",
490
+ county: "",
491
+ currentHousingCost: 0,
492
+ isDisabled: false,
493
+ isElderly: false,
494
+ isVeteran: false,
495
+ },
496
+ sections: [
497
+ {
498
+ id: "household",
499
+ title: "Household",
500
+ fields: [
501
+ { key: "householdSize", label: "Household size", type: "number" },
502
+ { key: "state", label: "State", type: "text" },
503
+ { key: "county", label: "County", type: "text" },
504
+ ],
505
+ },
506
+ {
507
+ id: "income",
508
+ title: "Income",
509
+ fields: [
510
+ { key: "annualIncome", label: "Annual household income", type: "currency" },
511
+ ],
512
+ },
513
+ {
514
+ id: "housing",
515
+ title: "Housing",
516
+ fields: [
517
+ { key: "currentHousingCost", label: "Current monthly housing cost", type: "currency" },
518
+ { key: "isDisabled", label: "Disabled household member", type: "confirm" },
519
+ { key: "isElderly", label: "Elderly household member (62+)", type: "confirm" },
520
+ { key: "isVeteran", label: "Veteran", type: "confirm" },
521
+ ],
522
+ },
523
+ ],
524
+ buildBundle: buildSection8Bundle,
525
+ },
526
+ "benefits/wic": {
527
+ summary: {
528
+ id: "benefits/wic",
529
+ domain: "benefits",
530
+ title: "WIC program eligibility",
531
+ summary: "Assess WIC eligibility for women, infants, and children based on income and program enrollment.",
532
+ status: "active",
533
+ audience: "household",
534
+ tags: ["wic", "nutrition", "women", "infants", "children", "benefits"],
535
+ },
536
+ inputSchema: wicInputSchema,
537
+ starterData: {
538
+ applicantCategory: "child",
539
+ householdSize: 1,
540
+ annualIncome: 0,
541
+ receivingMedicaid: false,
542
+ receivingSnap: false,
543
+ receivingTanf: false,
544
+ },
545
+ sections: [
546
+ {
547
+ id: "category",
548
+ title: "Category",
549
+ fields: [
550
+ {
551
+ key: "applicantCategory",
552
+ label: "Applicant category",
553
+ type: "select",
554
+ options: [
555
+ { label: "Pregnant", value: "pregnant" },
556
+ { label: "Postpartum", value: "postpartum" },
557
+ { label: "Infant (under 1)", value: "infant" },
558
+ { label: "Child (1-4)", value: "child" },
559
+ ],
560
+ },
561
+ { key: "applicantAge", label: "Applicant age (if child)", type: "number" },
562
+ ],
563
+ },
564
+ {
565
+ id: "household",
566
+ title: "Household",
567
+ fields: [
568
+ { key: "householdSize", label: "Household size", type: "number" },
569
+ ],
570
+ },
571
+ {
572
+ id: "income",
573
+ title: "Income",
574
+ fields: [
575
+ { key: "annualIncome", label: "Annual household income", type: "currency" },
576
+ { key: "receivingMedicaid", label: "Currently receiving Medicaid", type: "confirm" },
577
+ { key: "receivingSnap", label: "Currently receiving SNAP", type: "confirm" },
578
+ { key: "receivingTanf", label: "Currently receiving TANF", type: "confirm" },
579
+ ],
580
+ },
581
+ ],
582
+ buildBundle: buildWicBundle,
583
+ },
584
+ "benefits/liheap": {
585
+ summary: {
586
+ id: "benefits/liheap",
587
+ domain: "benefits",
588
+ title: "LIHEAP energy assistance",
589
+ summary: "Assess LIHEAP eligibility for home energy assistance based on income and utility needs.",
590
+ status: "active",
591
+ audience: "household",
592
+ tags: ["liheap", "energy", "utility", "heating", "cooling", "benefits"],
593
+ },
594
+ inputSchema: liheapInputSchema,
595
+ starterData: {
596
+ householdSize: 1,
597
+ annualIncome: 0,
598
+ state: "CA",
599
+ heatingSource: "",
600
+ hasUtilityShutoffNotice: false,
601
+ season: "winter",
602
+ },
603
+ sections: [
604
+ {
605
+ id: "household",
606
+ title: "Household",
607
+ fields: [
608
+ { key: "householdSize", label: "Household size", type: "number" },
609
+ { key: "state", label: "State", type: "text" },
610
+ ],
611
+ },
612
+ {
613
+ id: "income",
614
+ title: "Income",
615
+ fields: [
616
+ { key: "annualIncome", label: "Annual household income", type: "currency" },
617
+ ],
618
+ },
619
+ {
620
+ id: "utility",
621
+ title: "Utility Information",
622
+ fields: [
623
+ { key: "heatingSource", label: "Primary heating source", type: "text" },
624
+ { key: "hasUtilityShutoffNotice", label: "Has utility shutoff notice", type: "confirm" },
625
+ {
626
+ key: "season",
627
+ label: "Assistance season",
628
+ type: "select",
629
+ options: [
630
+ { label: "Winter (heating)", value: "winter" },
631
+ { label: "Summer (cooling)", value: "summer" },
632
+ ],
633
+ },
634
+ ],
635
+ },
636
+ ],
637
+ buildBundle: buildLiheapBundle,
638
+ },
639
+ "benefits/medicaid": {
640
+ summary: {
641
+ id: "benefits/medicaid",
642
+ domain: "benefits",
643
+ title: "Medicaid eligibility assessment",
644
+ summary: "MAGI-based Medicaid eligibility review with expansion state awareness and ACA marketplace guidance.",
645
+ status: "active",
646
+ audience: "household",
647
+ tags: ["medicaid", "healthcare", "fpl", "magi", "benefits", "aca"],
648
+ },
649
+ inputSchema: medicaidInputSchema,
650
+ starterData: {
651
+ householdSize: 1,
652
+ monthlyIncome: 0,
653
+ state: "CA",
654
+ isPregnant: false,
655
+ hasChildren: false,
656
+ isDisabled: false,
657
+ isElderly: false,
658
+ currentInsurance: "none",
659
+ },
660
+ sections: [
661
+ {
662
+ id: "household",
663
+ title: "Household",
664
+ fields: [
665
+ { key: "householdSize", label: "Household size", type: "number" },
666
+ ],
667
+ },
668
+ {
669
+ id: "income",
670
+ title: "Income",
671
+ fields: [
672
+ { key: "monthlyIncome", label: "Monthly household income", type: "currency" },
673
+ ],
674
+ },
675
+ {
676
+ id: "health-status",
677
+ title: "Health Status",
678
+ fields: [
679
+ { key: "isPregnant", label: "Currently pregnant", type: "confirm" },
680
+ { key: "hasChildren", label: "Has dependent children", type: "confirm" },
681
+ { key: "isDisabled", label: "Disabled", type: "confirm" },
682
+ { key: "isElderly", label: "Age 65 or older", type: "confirm" },
683
+ { key: "currentInsurance", label: "Current insurance", type: "text" },
684
+ ],
685
+ },
686
+ {
687
+ id: "state",
688
+ title: "State",
689
+ fields: [
690
+ { key: "state", label: "State of residence", type: "text" },
691
+ ],
692
+ },
693
+ ],
694
+ buildBundle: buildMedicaidBundle,
695
+ },
696
+ "benefits/ssdi-application": {
697
+ summary: {
698
+ id: "benefits/ssdi-application",
699
+ domain: "benefits",
700
+ title: "SSDI application intake",
701
+ summary: "SSDI application intake with SGA screening, five-step evaluation overview, and evidence checklist.",
702
+ status: "active",
703
+ audience: "individual",
704
+ tags: ["ssdi", "disability", "ssa", "benefits", "social-security"],
705
+ },
706
+ inputSchema: ssdiInputSchema,
707
+ starterData: {
708
+ applicantName: "",
709
+ disabilityOnsetDate: "",
710
+ lastWorkDate: "",
711
+ monthlyEarnings: 0,
712
+ medicalConditions: [],
713
+ treatingPhysicians: [],
714
+ hasBeenHospitalized: false,
715
+ },
716
+ sections: [
717
+ {
718
+ id: "work-history",
719
+ title: "Work History",
720
+ fields: [
721
+ { key: "applicantName", label: "Applicant name", type: "text" },
722
+ { key: "lastWorkDate", label: "Last date worked", type: "date" },
723
+ { key: "monthlyEarnings", label: "Current monthly earnings", type: "currency" },
724
+ ],
725
+ },
726
+ {
727
+ id: "disability-info",
728
+ title: "Disability Information",
729
+ fields: [
730
+ { key: "disabilityOnsetDate", label: "Disability onset date", type: "date" },
731
+ { key: "hasBeenHospitalized", label: "Has been hospitalized", type: "confirm" },
732
+ ],
733
+ },
734
+ {
735
+ id: "medical-evidence",
736
+ title: "Medical Evidence",
737
+ description: "List all medical conditions and treating physicians.",
738
+ fields: [],
739
+ },
740
+ ],
741
+ buildBundle: buildSsdiBundle,
742
+ },
743
+ };
744
+ //# sourceMappingURL=benefits.js.map