pigeongov 0.3.3 → 0.4.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 (145) hide show
  1. package/dist/153.js +3 -3
  2. package/dist/159.js +3 -3
  3. package/dist/190.js +3 -3
  4. package/dist/229.js +3 -3
  5. package/dist/328.js +3 -3
  6. package/dist/406.js +37 -0
  7. package/dist/48.js +3 -3
  8. package/dist/50.js +3 -3
  9. package/dist/520.js +3 -3
  10. package/dist/671.js +3 -3
  11. package/dist/691.js +3 -3
  12. package/dist/720.js +3 -3
  13. package/dist/729.js +3 -3
  14. package/dist/730.js +37 -0
  15. package/dist/766.js +3 -3
  16. package/dist/783.js +37 -0
  17. package/dist/785.js +3 -3
  18. package/dist/794.js +37 -0
  19. package/dist/809.js +3 -3
  20. package/dist/952.js +3 -3
  21. package/dist/http.js +1 -1
  22. package/dist/mcp/153.js +3 -3
  23. package/dist/mcp/159.js +3 -3
  24. package/dist/mcp/190.js +3 -3
  25. package/dist/mcp/229.js +3 -3
  26. package/dist/mcp/328.js +3 -3
  27. package/dist/mcp/406.js +37 -0
  28. package/dist/mcp/48.js +3 -3
  29. package/dist/mcp/50.js +3 -3
  30. package/dist/mcp/520.js +3 -3
  31. package/dist/mcp/671.js +3 -3
  32. package/dist/mcp/691.js +3 -3
  33. package/dist/mcp/720.js +3 -3
  34. package/dist/mcp/729.js +3 -3
  35. package/dist/mcp/730.js +37 -0
  36. package/dist/mcp/766.js +3 -3
  37. package/dist/mcp/783.js +37 -0
  38. package/dist/mcp/785.js +3 -3
  39. package/dist/mcp/794.js +37 -0
  40. package/dist/mcp/809.js +3 -3
  41. package/dist/mcp/952.js +3 -3
  42. package/dist/mcp/http.js +2 -2
  43. package/dist/mcp/stdio.js +2 -2
  44. package/dist/src/advisory/cliff/calculator.js +7 -1
  45. package/dist/src/advisory/cliff/calculator.js.map +1 -1
  46. package/dist/src/advisory/cliff/programs.d.ts +1 -0
  47. package/dist/src/advisory/cliff/programs.js +68 -4
  48. package/dist/src/advisory/cliff/programs.js.map +1 -1
  49. package/dist/src/advisory/cliff/state-medicaid.d.ts +37 -0
  50. package/dist/src/advisory/cliff/state-medicaid.js +109 -0
  51. package/dist/src/advisory/cliff/state-medicaid.js.map +1 -0
  52. package/dist/src/advisory/life-events/deadlines.d.ts +38 -0
  53. package/dist/src/advisory/life-events/deadlines.js +913 -0
  54. package/dist/src/advisory/life-events/deadlines.js.map +1 -0
  55. package/dist/src/advisory/life-events/events.js +134 -9
  56. package/dist/src/advisory/life-events/events.js.map +1 -1
  57. package/dist/src/advisory/life-events/ordering.d.ts +33 -0
  58. package/dist/src/advisory/life-events/ordering.js +355 -0
  59. package/dist/src/advisory/life-events/ordering.js.map +1 -0
  60. package/dist/src/advisory/life-events/planner.d.ts +12 -1
  61. package/dist/src/advisory/life-events/planner.js +132 -28
  62. package/dist/src/advisory/life-events/planner.js.map +1 -1
  63. package/dist/src/advisory/screener/engine.js +88 -0
  64. package/dist/src/advisory/screener/engine.js.map +1 -1
  65. package/dist/src/advisory/student-loans/default-prevention.d.ts +49 -0
  66. package/dist/src/advisory/student-loans/default-prevention.js +195 -0
  67. package/dist/src/advisory/student-loans/default-prevention.js.map +1 -0
  68. package/dist/src/advisory/student-loans/pslf-tracker.d.ts +33 -0
  69. package/dist/src/advisory/student-loans/pslf-tracker.js +127 -0
  70. package/dist/src/advisory/student-loans/pslf-tracker.js.map +1 -0
  71. package/dist/src/advisory/student-loans/save-transition.d.ts +50 -0
  72. package/dist/src/advisory/student-loans/save-transition.js +299 -0
  73. package/dist/src/advisory/student-loans/save-transition.js.map +1 -0
  74. package/dist/src/cli/commands/fill.js +60 -1
  75. package/dist/src/cli/commands/fill.js.map +1 -1
  76. package/dist/src/cli/commands/life-event.js +106 -16
  77. package/dist/src/cli/commands/life-event.js.map +1 -1
  78. package/dist/src/cli/commands/state-tax.d.ts +2 -0
  79. package/dist/src/cli/commands/state-tax.js +180 -0
  80. package/dist/src/cli/commands/state-tax.js.map +1 -0
  81. package/dist/src/cli/commands/student-loans.d.ts +2 -0
  82. package/dist/src/cli/commands/student-loans.js +239 -0
  83. package/dist/src/cli/commands/student-loans.js.map +1 -0
  84. package/dist/src/cli/index.js +5 -1
  85. package/dist/src/cli/index.js.map +1 -1
  86. package/dist/src/engine/capital-gains.d.ts +63 -0
  87. package/dist/src/engine/capital-gains.js +167 -0
  88. package/dist/src/engine/capital-gains.js.map +1 -0
  89. package/dist/src/engine/field-mapper.d.ts +7 -3
  90. package/dist/src/engine/field-mapper.js +56 -6
  91. package/dist/src/engine/field-mapper.js.map +1 -1
  92. package/dist/src/engine/forms/core-1040.js +6 -0
  93. package/dist/src/engine/forms/core-1040.js.map +1 -1
  94. package/dist/src/engine/state-tax-integration.d.ts +77 -0
  95. package/dist/src/engine/state-tax-integration.js +169 -0
  96. package/dist/src/engine/state-tax-integration.js.map +1 -0
  97. package/dist/src/engine/tax-calculator.d.ts +32 -1
  98. package/dist/src/engine/tax-calculator.js +167 -12
  99. package/dist/src/engine/tax-calculator.js.map +1 -1
  100. package/dist/src/engine/tax-constants-2025.d.ts +70 -1
  101. package/dist/src/engine/tax-constants-2025.js +104 -1
  102. package/dist/src/engine/tax-constants-2025.js.map +1 -1
  103. package/dist/src/engine/types.d.ts +6 -0
  104. package/dist/src/engine/validator.js +3 -1
  105. package/dist/src/engine/validator.js.map +1 -1
  106. package/dist/src/mcp/shared.d.ts +12017 -1875
  107. package/dist/src/mcp/tools/calculate-state-tax.d.ts +47 -0
  108. package/dist/src/mcp/tools/calculate-state-tax.js +72 -0
  109. package/dist/src/mcp/tools/calculate-state-tax.js.map +1 -0
  110. package/dist/src/mcp/tools/plan-life-event.d.ts +70 -2
  111. package/dist/src/mcp/tools/plan-life-event.js +49 -3
  112. package/dist/src/mcp/tools/plan-life-event.js.map +1 -1
  113. package/dist/src/mcp/tools/student-loan-transition.d.ts +45 -0
  114. package/dist/src/mcp/tools/student-loan-transition.js +81 -0
  115. package/dist/src/mcp/tools/student-loan-transition.js.map +1 -0
  116. package/dist/src/schemas/2025/index.d.ts +1 -1
  117. package/dist/src/schemas/2025/index.js.map +1 -1
  118. package/dist/src/workflows/domains/benefits.d.ts +180 -0
  119. package/dist/src/workflows/domains/benefits.js +475 -0
  120. package/dist/src/workflows/domains/benefits.js.map +1 -1
  121. package/dist/src/workflows/domains/education.d.ts +37 -1
  122. package/dist/src/workflows/domains/education.js +116 -18
  123. package/dist/src/workflows/domains/education.js.map +1 -1
  124. package/dist/src/workflows/domains/tax.d.ts +49 -30
  125. package/dist/src/workflows/domains/tax.js +85 -0
  126. package/dist/src/workflows/domains/tax.js.map +1 -1
  127. package/dist/src/workflows/registry.d.ts +12174 -1801
  128. package/dist/src/workflows/schemas/education.d.ts +13 -0
  129. package/dist/src/workflows/schemas/education.js +9 -0
  130. package/dist/src/workflows/schemas/education.js.map +1 -1
  131. package/dist/src/workflows/schemas/ssi.d.ts +22 -0
  132. package/dist/src/workflows/schemas/ssi.js +23 -0
  133. package/dist/src/workflows/schemas/ssi.js.map +1 -0
  134. package/dist/src/workflows/schemas/tanf.d.ts +19 -0
  135. package/dist/src/workflows/schemas/tanf.js +22 -0
  136. package/dist/src/workflows/schemas/tanf.js.map +1 -0
  137. package/dist/src/workflows/schemas/tax.d.ts +17 -0
  138. package/dist/src/workflows/schemas/tax.js +23 -0
  139. package/dist/src/workflows/schemas/tax.js.map +1 -1
  140. package/dist/stdio.js +1 -1
  141. package/package.json +1 -1
  142. package/dist/110.js +0 -37
  143. package/dist/262.js +0 -37
  144. package/dist/mcp/110.js +0 -37
  145. package/dist/mcp/262.js +0 -37
package/dist/153.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";exports.ids=["153"],exports.modules={975(e,t,i){i.d(t,{b:()=>o});var n=i(706),a=i(2568);function r(e){return Number(e.toFixed(2))}function o(e){let t=(0,n.xm)(e.taxInput),i=r(e.importedDocuments.filter(e=>"w2"===e.type).reduce((e,t)=>"w2"===t.type||"federalWithheld"in t&&"number"==typeof t.federalWithheld?e+t.federalWithheld:e,0)),o=r(e.importedDocuments.filter(e=>"w2"!==e.type).reduce((e,t)=>"federalWithheld"in t&&"number"==typeof t.federalWithheld?e+t.federalWithheld:e,0)),s=r(Math.max(0,e.taxInput.federalWithheld-i-o)),l=a.iq.parse({taxYear:e.taxYear,filingStatus:e.filingStatus,additionalIncome:{line3BusinessIncomeOrLoss:e.taxInput.scheduleCNet||void 0,line8OtherIncome:e.taxInput.otherIncome||void 0,line10TotalAdditionalIncome:e.taxInput.scheduleCNet+e.taxInput.otherIncome||void 0},adjustments:{line11EducatorExpenses:e.taxInput.adjustments.educatorExpenses||void 0,line13HealthSavingsAccountDeduction:e.taxInput.adjustments.hsaDeduction||void 0,line15DeductiblePartOfSelfEmploymentTax:t.selfEmploymentTax>0?r(t.selfEmploymentTax/2):void 0,line20IraDeductions:e.taxInput.adjustments.iraDeduction||void 0,line21StudentLoanInterestDeduction:e.taxInput.adjustments.studentLoanInterest||void 0,line27TotalAdjustments:t.grossIncome-t.adjustedGrossIncome||void 0}}),d=e.taxInput.scheduleCNet>0?a.q$.parse({taxYear:e.taxYear,ownerName:`${e.taxpayer.firstName} ${e.taxpayer.lastName}`,ownerSsn:e.taxpayer.ssn,businessName:"Sole Proprietorship",principalBusinessOrProfession:"Self-employment",accountingMethod:"cash",income:{grossReceiptsOrSales:e.taxInput.scheduleCNet,otherIncome:e.taxInput.otherIncome||void 0},cogs:{},expenses:{},netProfitOrLoss:e.taxInput.scheduleCNet}):void 0,c=a.tl.parse({taxYear:e.taxYear,filingStatus:e.filingStatus,taxpayer:e.taxpayer,spouse:e.spouse,mailingAddress:e.taxpayer.address,dependents:e.dependents,lines:{line1a:e.taxInput.wages||void 0,line2b:e.taxInput.taxableInterest||void 0,line3b:e.taxInput.ordinaryDividends||void 0,line8:l.additionalIncome.line10TotalAdditionalIncome,line9:t.grossIncome,line10:l.adjustments.line27TotalAdjustments,line11:t.adjustedGrossIncome,line12a:e.taxInput.useItemizedDeductions?void 0:t.deduction,line12b:e.taxInput.useItemizedDeductions?t.deduction:void 0,line12z:t.deduction,line13:t.taxableIncome,line14:t.federalTax,line16:t.federalTax,line17:t.selfEmploymentTax||void 0,line21:t.totalCredits||void 0,line24:t.totalTax,line25a:r(i+s)||void 0,line25b:o||void 0,line26:e.taxInput.estimatedPayments||void 0,line27:t.earnedIncomeCredit||void 0,line28:t.additionalChildTaxCredit||void 0,line33:t.totalPayments,line34:t.refund||void 0,line37:t.amountOwed||void 0}}),u={formId:e.formId,taxYear:e.taxYear,taxpayer:e.taxpayer,dependents:e.dependents,importedDocuments:e.importedDocuments,calculation:t,form1040:c,schedule1:l};return e.spouse&&(u.spouse=e.spouse),d&&(u.scheduleC=d),u}},706(e,t,i){i.d(t,{xm:()=>d});let n={single:15750,married_filing_jointly:31500,married_filing_separately:15750,head_of_household:23625,qualifying_surviving_spouse:31500},a={single:[{upperBound:11925,rate:.1},{upperBound:48475,rate:.12},{upperBound:103350,rate:.22},{upperBound:197300,rate:.24},{upperBound:250525,rate:.32},{upperBound:626350,rate:.35},{rate:.37}],married_filing_jointly:[{upperBound:23850,rate:.1},{upperBound:96950,rate:.12},{upperBound:206700,rate:.22},{upperBound:394600,rate:.24},{upperBound:501050,rate:.32},{upperBound:751600,rate:.35},{rate:.37}],married_filing_separately:[{upperBound:11925,rate:.1},{upperBound:48475,rate:.12},{upperBound:103350,rate:.22},{upperBound:197300,rate:.24},{upperBound:250525,rate:.32},{upperBound:375800,rate:.35},{rate:.37}],head_of_household:[{upperBound:17e3,rate:.1},{upperBound:64850,rate:.12},{upperBound:103350,rate:.22},{upperBound:197300,rate:.24},{upperBound:250500,rate:.32},{upperBound:626350,rate:.35},{rate:.37}],qualifying_surviving_spouse:[{upperBound:23850,rate:.1},{upperBound:96950,rate:.12},{upperBound:206700,rate:.22},{upperBound:394600,rate:.24},{upperBound:501050,rate:.32},{upperBound:751600,rate:.35},{rate:.37}]},r={married_filing_jointly:4e5,single:2e5,married_filing_separately:2e5,head_of_household:2e5,qualifying_surviving_spouse:2e5},o={0:{qualifyingChildren:0,phaseInRate:.0765,phaseOutRate:.0765,earnedIncomeAmount:8490,maximumCredit:649,thresholdPhaseoutAmountMfJ:17730,thresholdPhaseoutAmountOther:10620,completedPhaseoutAmountMfJ:26214,completedPhaseoutAmountOther:19104},1:{qualifyingChildren:1,phaseInRate:.34,phaseOutRate:.1598,earnedIncomeAmount:12730,maximumCredit:4328,thresholdPhaseoutAmountMfJ:30470,thresholdPhaseoutAmountOther:23350,completedPhaseoutAmountMfJ:57554,completedPhaseoutAmountOther:50434},2:{qualifyingChildren:2,phaseInRate:.4,phaseOutRate:.2106,earnedIncomeAmount:17880,maximumCredit:7152,thresholdPhaseoutAmountMfJ:30470,thresholdPhaseoutAmountOther:23350,completedPhaseoutAmountMfJ:64430,completedPhaseoutAmountOther:57310},3:{qualifyingChildren:3,phaseInRate:.45,phaseOutRate:.2106,earnedIncomeAmount:17880,maximumCredit:8046,thresholdPhaseoutAmountMfJ:30470,thresholdPhaseoutAmountOther:23350,completedPhaseoutAmountMfJ:68675,completedPhaseoutAmountOther:61555}};function s(e){return Number(e.toFixed(2))}function l(e){return e<0?0:e}function d(e){let t=function(e){if(e<=0)return 0;let t=.9235*e;return s(.124*Math.min(t,176100)+.029*t)}(e.scheduleCNet),i=s(t/2),d=s(e.adjustments.educatorExpenses+e.adjustments.hsaDeduction+i+e.adjustments.iraDeduction+e.adjustments.studentLoanInterest),c=s(e.wages+e.taxableInterest+e.ordinaryDividends+e.scheduleCNet+e.otherIncome),u=s(c-d),p=s(e.useItemizedDeductions?e.itemizedDeductions:n[e.filingStatus]),m=s(l(u-p)),f=function(e,t){let i=a[e],n=l(t),r=[],o=0,d=0,c=0;for(let e of i){let t=e.upperBound??n,i=Math.min(n,t)-o;if(i>0){let t=i*e.rate,n={rate:e.rate,lowerBound:o,taxableAmount:s(i),taxAmount:s(t)};void 0!==e.upperBound&&(n.upperBound=e.upperBound),r.push(n),d+=t,c=e.rate}if(o=t,void 0===e.upperBound||n<=t)break}return{tax:s(d),marginalRate:c,breakdown:r}}(e.filingStatus,m),h=function(e,t,i){let n=e.dependents.filter(e=>e.childTaxCreditEligible).length;if(0===n)return{totalChildTaxCredit:0,nonRefundableChildTaxCredit:0,additionalChildTaxCredit:0};let a=r[e.filingStatus],o=l(2200*n-(t>a?50*Math.ceil((t-a)/1e3):0)),d=Math.min(o,i),c=e.wages+l(e.scheduleCNet),u=.15*l(c-2500),p=Math.min(1700*n,l(o-d),u);return{totalChildTaxCredit:s(d+p),nonRefundableChildTaxCredit:s(d),additionalChildTaxCredit:s(p)}}(e,u,f.tax),y=function(e,t){if("married_filing_separately"===e.filingStatus)return 0;let i=o[Math.min(e.dependents.filter(e=>!!e.eitcEligible).length,3)],n=e.wages+l(e.scheduleCNet);if(n<=0)return 0;let a=Math.min(i.maximumCredit,n*i.phaseInRate),r=l(Math.max(n,t)-("married_filing_jointly"===e.filingStatus?i.thresholdPhaseoutAmountMfJ:i.thresholdPhaseoutAmountOther))*i.phaseOutRate;return s(l(a-r))}(e,u),g=s(h.totalChildTaxCredit+y),b=s(l(f.tax-h.nonRefundableChildTaxCredit)+t),v=s(e.federalWithheld+e.estimatedPayments+y+h.additionalChildTaxCredit),w=s(l(v-b)),k=s(l(b-v)),S=0===c?0:s(b/c);return{grossIncome:c,adjustedGrossIncome:u,deduction:p,taxableIncome:m,federalTax:f.tax,selfEmploymentTax:t,totalTax:b,totalCredits:g,childTaxCredit:h.totalChildTaxCredit,earnedIncomeCredit:y,additionalChildTaxCredit:h.additionalChildTaxCredit,totalPayments:v,amountOwed:k,refund:w,effectiveRate:S,marginalRate:f.marginalRate,breakdown:f.breakdown}}},9955(e,t,i){function n(e){return Number(e.toFixed(2))}function a(e,t,i=.01){return Math.abs((e??0)-t)<=i}function r(e,t,i,n,a,o,s="error"){let l=i?`${t} matches.`:`${t} should be ${a.toFixed(2)} but was ${(o??0).toFixed(2)}.`,d={check:{id:e,label:t,passed:i,severity:s,message:l}};return i||(d.flag={field:n,severity:s,message:l,source:"validator"}),d}function o(e){let t=[],i=[],o=n((e.form1040.lines.line1a??0)+(e.form1040.lines.line2b??0)+(e.form1040.lines.line3b??0)+(e.form1040.lines.line8??0)),s=r("income-total","Form 1040 line 9 total income",a(e.form1040.lines.line9,o),"form1040.lines.line9",o,e.form1040.lines.line9);t.push(s.check),s.flag&&i.push(s.flag);let l=n((e.form1040.lines.line9??0)-(e.form1040.lines.line10??0)),d=r("agi","Form 1040 line 11 adjusted gross income",a(e.form1040.lines.line11,l),"form1040.lines.line11",l,e.form1040.lines.line11);t.push(d.check),d.flag&&i.push(d.flag);let c=n((e.form1040.lines.line12a??0)+(e.form1040.lines.line12b??0)),u=r("deduction-total","Form 1040 line 12z deduction",a(e.form1040.lines.line12z,c),"form1040.lines.line12z",c,e.form1040.lines.line12z);t.push(u.check),u.flag&&i.push(u.flag);let p=n(Math.max(0,(e.form1040.lines.line11??0)-(e.form1040.lines.line12z??0))),m=r("taxable-income","Form 1040 line 13 taxable income",a(e.form1040.lines.line13,p),"form1040.lines.line13",p,e.form1040.lines.line13);t.push(m.check),m.flag&&i.push(m.flag);let f=n(Math.max(0,(e.form1040.lines.line16??0)-(e.form1040.lines.line21??0))+(e.form1040.lines.line17??0)),h=r("total-tax","Form 1040 line 24 total tax",a(e.form1040.lines.line24,f),"form1040.lines.line24",f,e.form1040.lines.line24);t.push(h.check),h.flag&&i.push(h.flag);let y=n((e.form1040.lines.line25a??0)+(e.form1040.lines.line25b??0)+(e.form1040.lines.line26??0)+(e.form1040.lines.line27??0)+(e.form1040.lines.line28??0)+(e.form1040.lines.line31??0)),g=r("payments-total","Form 1040 line 33 total payments",a(e.form1040.lines.line33,y),"form1040.lines.line33",y,e.form1040.lines.line33);t.push(g.check),g.flag&&i.push(g.flag);let b=(e.form1040.lines.line34??0)===0||(e.form1040.lines.line37??0)===0,v=b?"Refund and amount owed are mutually exclusive.":"A return cannot show both a refund and an amount owed.";if(t.push({id:"refund-exclusive",label:"Refund and amount owed exclusivity",passed:b,severity:"error",message:v}),b||(i.push({field:"form1040.lines.line34",severity:"error",message:v,source:"validator"}),i.push({field:"form1040.lines.line37",severity:"error",message:v,source:"validator"})),e.scheduleC){let n=r("schedule-c-net","Schedule C net profit consistency",a(e.schedule1.additionalIncome.line3BusinessIncomeOrLoss,e.scheduleC.netProfitOrLoss??0),"schedule1.additionalIncome.line3BusinessIncomeOrLoss",e.scheduleC.netProfitOrLoss??0,e.schedule1.additionalIncome.line3BusinessIncomeOrLoss,"warning");t.push(n.check),n.flag&&i.push(n.flag)}return{checks:t,flaggedFields:i}}i.d(t,{t:()=>o})},5284(e,t,i){i.d(t,{J:()=>n});function n(e){return{...e,structuredContent:{...e}}}},9314(e,t,i){i.d(t,{_3:()=>tt,LE:()=>eJ,mg:()=>eR,$N:()=>e3,Ak:()=>eU,uq:()=>eH,mW:()=>e9,AC:()=>e6,kO:()=>eK,fv:()=>eV,Lp:()=>e2,i3:()=>e5,vN:()=>eW,uG:()=>eG,RN:()=>eZ,wg:()=>e0,n8:()=>eD,$d:()=>eB,dH:()=>e8,Ut:()=>e4,kV:()=>e7,xK:()=>eQ,HX:()=>eF,op:()=>te,IP:()=>eX,Dl:()=>e1});var n=i(3301),a=i(975),r=i(9955),o=i(706),s=i(2568);function l(e){return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:2}).format(e)}function d(e){return e.replace(/[^\w]+/g,"-")}function c(e,t,i,n,a){return{id:e,label:t,passed:i,severity:n,message:a}}function u(e,t,i,n="workflow"){return{field:e,severity:t,message:i,source:n}}function p(e,t,i,n,a){return a?{id:e,label:t,required:i,status:"review",notes:a,source:"user-input"}:{id:e,label:t,required:i,status:n?"provided":"missing",source:"user-input"}}function m(e,t,i,n,a){let r=i.filter(e=>"provided"===e.status).length;return{headline:`${e}: ${t} (${r}/${i.length} evidence items ready)`,notes:a,flaggedFields:n}}function f(e,t){return[{kind:"bundle",label:"Workflow bundle JSON",format:"json",path:`${d(e)}-bundle.json`},{kind:"review",label:"Review PDF",format:"pdf",path:`${d(e)}-review.pdf`},{kind:"checklist",label:"Evidence checklist",format:"checklist",content:t}]}let h=n.YjP().trim().default("CA"),y=n.Ikc({street1:n.YjP().trim().default(""),street2:n.YjP().trim().optional(),city:n.YjP().trim().default(""),state:h,zipCode:n.YjP().trim().default("")}).strict(),g=n.Ikc({firstName:n.YjP().trim().default(""),lastName:n.YjP().trim().default(""),ssn:n.YjP().trim().default("000-00-0000"),address:y}).strict(),b=n.Ikc({name:n.YjP().trim().default(""),relationship:n.YjP().trim().default(""),age:n.auy.number().int().nonnegative().optional(),notes:n.YjP().trim().optional()}).strict(),v=n.Ikc({applicant:g,entityName:n.YjP().trim().min(1),state:h,locality:n.YjP().trim().min(1),industry:n.YjP().trim().min(1),needsProfessionalLicense:n.zMY().default(!1),hasZoningQuestions:n.zMY().default(!1),notes:n.YjP().trim().optional()}).strict(),w={"business/license-starter":{summary:{id:"business/license-starter",domain:"business",title:"Business license planner",summary:"Map local license, zoning, and entity-registration follow-up tasks for a new business.",status:"preview",audience:"business",tags:["business","license","zoning","registration"]},inputSchema:v,starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},entityName:"",state:"CA",locality:"",industry:"",needsProfessionalLicense:!1,hasZoningQuestions:!1},sections:[{id:"business",title:"Business setup",fields:[{key:"entityName",label:"Entity name",type:"text"},{key:"state",label:"State",type:"text"},{key:"locality",label:"City or county",type:"text"},{key:"industry",label:"Industry",type:"text"}]}],buildBundle(e){let t=[p("entity","Entity registration details",!0,!0),p("professional-license","Professional license checklist",e.needsProfessionalLicense,!e.needsProfessionalLicense),p("zoning","Zoning approval checklist",e.hasZoningQuestions,!e.hasZoningQuestions,e.hasZoningQuestions?"Review local zoning and occupancy requirements.":void 0)];return{workflowId:"business/license-starter",domain:"business",title:"Business license planner",summary:"Preview workflow for local business licensing planning.",applicant:e.applicant,household:[],evidence:t,answers:e,derived:{locality:e.locality,planningMode:"preview"},validation:{checks:[c("entity","Entity name provided",e.entityName.length>0,"error","Provide the business name.")],flaggedFields:[]},review:m("Business launch planning","preview workflow",t,[],[`Industry: ${e.industry}.`,`Locality: ${e.locality}, ${e.state}.`]),outputArtifacts:f("business-license-starter",t),provenance:["workflow-registry","business-planning-model"]}}}},k={"healthcare/aca-enrollment":{summary:{id:"healthcare/aca-enrollment",domain:"healthcare",title:"Healthcare enrollment planner",summary:"Organize household, income, and coverage evidence for marketplace enrollment review.",status:"active",audience:"household",tags:["healthcare","aca","marketplace","household","coverage"]},inputSchema:n.Ikc({applicant:g,household:n.YOg(b).default([]),stateOfResidence:h,annualHouseholdIncome:n.auy.number().nonnegative(),currentlyInsured:n.zMY().default(!1),qualifyingLifeEvent:n.zMY().default(!1),hasEmployerCoverageOffer:n.zMY().default(!1),needsDependentCoverage:n.zMY().default(!1),immigrationDocumentsAvailable:n.zMY().default(!0),incomeProofAvailable:n.zMY().default(!1),residenceProofAvailable:n.zMY().default(!1),preferredCoverageMonth:n.YjP().trim().min(1),notes:n.YjP().trim().optional()}).strict(),starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},household:[],stateOfResidence:"CA",annualHouseholdIncome:0,currentlyInsured:!1,qualifyingLifeEvent:!1,hasEmployerCoverageOffer:!1,needsDependentCoverage:!1,immigrationDocumentsAvailable:!0,incomeProofAvailable:!1,residenceProofAvailable:!1,preferredCoverageMonth:"January"},sections:[{id:"household",title:"Household",fields:[{key:"applicant.firstName",label:"Applicant first name",type:"text"},{key:"stateOfResidence",label:"State of residence",type:"text"},{key:"annualHouseholdIncome",label:"Annual household income",type:"currency"},{key:"preferredCoverageMonth",label:"Preferred coverage month",type:"text"}]},{id:"eligibility",title:"Eligibility",fields:[{key:"currentlyInsured",label:"Currently insured",type:"confirm"},{key:"qualifyingLifeEvent",label:"Qualifying life event",type:"confirm"},{key:"hasEmployerCoverageOffer",label:"Employer coverage offered",type:"confirm"},{key:"needsDependentCoverage",label:"Needs dependent coverage",type:"confirm"}]}],buildBundle(e){let t=e.household.length+1,i=e.annualHouseholdIncome/12,n=[p("income-proof","Income proof",!0,e.incomeProofAvailable),p("residence-proof","Residence proof",!0,e.residenceProofAvailable),p("immigration-docs","Immigration or citizenship documents",!0,e.immigrationDocumentsAvailable),p("employer-coverage","Employer coverage notice",e.hasEmployerCoverageOffer,!e.hasEmployerCoverageOffer,e.hasEmployerCoverageOffer?"Human review recommended to compare affordability and minimum value.":void 0)],a=[];!e.qualifyingLifeEvent&&e.currentlyInsured&&a.push(u("qualifyingLifeEvent","review","Outside open enrollment, a qualifying life event is usually needed to change coverage.")),e.hasEmployerCoverageOffer&&a.push(u("hasEmployerCoverageOffer","review","Employer-sponsored coverage may affect marketplace subsidies and needs a human check."));let r=[c("income-proof","Income proof available",e.incomeProofAvailable,"warning","Upload pay stubs or other income proof before submission review."),c("residence-proof","Residence proof available",e.residenceProofAvailable,"warning","Residence proof is often needed to complete enrollment review."),c("coverage-month","Coverage month selected",e.preferredCoverageMonth.trim().length>0,"error","Choose a target coverage month.")],o=n.filter(e=>"missing"===e.status).length;return{workflowId:"healthcare/aca-enrollment",domain:"healthcare",title:"Healthcare enrollment planner",summary:"Household-centric enrollment planner for marketplace review. PigeonGov does not file coverage applications for you.",applicant:e.applicant,household:e.household,evidence:n,answers:e,derived:{householdSize:t,monthlyIncome:i,coverageTrack:e.qualifyingLifeEvent?"special-enrollment-review":"open-enrollment-review"},validation:{checks:r,flaggedFields:a},review:m("Enrollment readiness",0===o?"ready for review":"missing documentation",n,a,[`Household size: ${t}.`,`Annual household income: ${l(e.annualHouseholdIncome)}.`,`Target effective month: ${e.preferredCoverageMonth}.`]),outputArtifacts:f("healthcare-aca-enrollment",n),provenance:["workflow-registry","healthcare-enrollment-model"]}}}},S=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),age:n.auy.number().int().nonnegative(),hasPartA:n.zMY().default(!1),hasPartB:n.zMY().default(!1),currentCoverage:n.YjP().trim().default("none"),annualIncome:n.auy.number().nonnegative(),filingStatus:n.k5n(["single","married_filing_jointly"])}).strict(),x=[{singleThreshold:103e3,mfjThreshold:206e3,surcharge:0},{singleThreshold:129e3,mfjThreshold:258e3,surcharge:70.9},{singleThreshold:161e3,mfjThreshold:322e3,surcharge:176.4},{singleThreshold:193e3,mfjThreshold:386e3,surcharge:281.9},{singleThreshold:5e5,mfjThreshold:75e4,surcharge:387.4},{singleThreshold:1/0,mfjThreshold:1/0,surcharge:419.3}],z={"healthcare/medicare-enrollment":{summary:{id:"healthcare/medicare-enrollment",domain:"healthcare",title:"Medicare enrollment planner",summary:"Assess Medicare eligibility, calculate IRMAA surcharges, and estimate late enrollment penalties.",status:"active",audience:"individual",tags:["medicare","healthcare","irmaa","enrollment","retirement"]},inputSchema:S,starterData:{applicantName:"",dob:"",age:0,hasPartA:!1,hasPartB:!1,currentCoverage:"none",annualIncome:0,filingStatus:"single"},sections:[{id:"eligibility",title:"Eligibility",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"age",label:"Current age",type:"number"},{key:"hasPartA",label:"Currently enrolled in Part A",type:"confirm"},{key:"hasPartB",label:"Currently enrolled in Part B",type:"confirm"}]},{id:"current-coverage",title:"Current Coverage",fields:[{key:"currentCoverage",label:"Current health coverage",type:"text",helpText:"Enter 'none' if uninsured"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual income (MAGI)",type:"currency"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"}]}]}],buildBundle:function(e){let t=e.age>=65,i=function(e,t){for(let i of x)if(e<=("single"===t?i.singleThreshold:i.mfjThreshold))return i.surcharge;return x[x.length-1].surcharge}(e.annualIncome,e.filingStatus),n=185+i,a="none"!==e.currentCoverage,r=!t||e.hasPartB||a?0:Math.max(0,e.age-65),o=.1*r*185,s=n+o,d=[p("ss-statement","Social Security statement",!0,t),p("current-insurance","Current insurance information",!0,a)],h=[];r>0&&h.push(u("lateEnrollment","warning",`Late enrollment penalty: ${l(o)}/month (${r} year(s) late at 10% penalty per year). This penalty is permanent.`)),i>0&&h.push(u("irmaa","review",`IRMAA surcharge of ${l(i)}/month applies based on income of ${l(e.annualIncome)}.`)),t||h.push(u("age","review",`Age ${e.age} — not yet eligible for Medicare (65+). Consider marketplace or employer coverage.`));let y=[c("age-eligible","Age 65 or older",t,"warning","Medicare eligibility begins at age 65."),c("part-b-enrolled","Part B enrollment",e.hasPartB,"warning","Part B covers outpatient care. Late enrollment incurs permanent penalties.")];return{workflowId:"healthcare/medicare-enrollment",domain:"healthcare",title:"Medicare enrollment planner",summary:"Medicare eligibility assessment with IRMAA calculation and late enrollment penalty estimation. PigeonGov does not enroll in Medicare.",applicant:void 0,household:[],evidence:d,answers:e,derived:{eligible:t,partBBasePremium:185,irmaaSurcharge:i,monthlyPremium:n,yearsLate:r,lateEnrollmentPenalty:o,totalMonthlyWithPenalty:s,hasCredibleCoverage:a},validation:{checks:y,flaggedFields:h},review:m("Medicare enrollment",t?`eligible — ${l(s)}/month total`:"not yet eligible",d,h,[`Applicant: ${e.applicantName}. Age: ${e.age}. DOB: ${e.dob}.`,`Eligibility: ${t?"eligible (65+)":"not yet eligible"}.`,`Part B base premium (2025): ${l(185)}/month.`,i>0?`IRMAA surcharge: ${l(i)}/month.`:"No IRMAA surcharge.",r>0?`Late enrollment penalty: ${l(o)}/month (${r} year(s) \xd7 10%).`:"",`Total estimated monthly premium: ${l(s)}.`,`Part A: ${e.hasPartA?"enrolled":"not enrolled"}. Part B: ${e.hasPartB?"enrolled":"not enrolled"}.`].filter(Boolean)),outputArtifacts:f("healthcare-medicare-enrollment",d),provenance:["workflow-registry"]}}}},_={"immigration/family-visa-intake":{summary:{id:"immigration/family-visa-intake",domain:"immigration",title:"Family visa packet intake",summary:"Build a household-centered family visa or adjustment packet checklist before attorney or human review.",status:"active",audience:"household",tags:["uscis","family","visa","packet","evidence"]},inputSchema:n.Ikc({applicant:g,beneficiary:n.Ikc({fullName:n.YjP().trim().min(1),relationship:n.YjP().trim().min(1),currentCountry:n.YjP().trim().min(1),currentlyInUnitedStates:n.zMY().default(!1)}).strict(),household:n.YOg(b).default([]),visaGoal:n.k5n(["family","fiance","employment","adjustment"]).default("family"),petitionerStatus:n.k5n(["uscitizen","permanent_resident","employer","other"]),hasPassportCopy:n.zMY().default(!1),hasBirthCertificate:n.zMY().default(!1),hasRelationshipEvidence:n.zMY().default(!1),hasFinancialSponsor:n.zMY().default(!1),priorVisaDenials:n.zMY().default(!1),needsTranslation:n.zMY().default(!1),workAuthorizationRequested:n.zMY().default(!1),notes:n.YjP().trim().optional()}).strict(),starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},beneficiary:{fullName:"",relationship:"spouse",currentCountry:"",currentlyInUnitedStates:!1},household:[],visaGoal:"family",petitionerStatus:"uscitizen",hasPassportCopy:!1,hasBirthCertificate:!1,hasRelationshipEvidence:!1,hasFinancialSponsor:!1,priorVisaDenials:!1,needsTranslation:!1,workAuthorizationRequested:!1},sections:[{id:"sponsor",title:"Petitioner",fields:[{key:"applicant.firstName",label:"Petitioner first name",type:"text"},{key:"applicant.lastName",label:"Petitioner last name",type:"text"},{key:"petitionerStatus",label:"Petitioner status",type:"select",options:[{label:"US citizen",value:"uscitizen"},{label:"Permanent resident",value:"permanent_resident"},{label:"Employer",value:"employer"},{label:"Other",value:"other"}]}]},{id:"beneficiary",title:"Beneficiary",fields:[{key:"beneficiary.fullName",label:"Beneficiary full name",type:"text"},{key:"beneficiary.relationship",label:"Relationship",type:"text"},{key:"beneficiary.currentCountry",label:"Current country",type:"text"},{key:"beneficiary.currentlyInUnitedStates",label:"Currently in the United States",type:"confirm"}]},{id:"evidence",title:"Evidence",fields:[{key:"hasPassportCopy",label:"Passport copy available",type:"confirm"},{key:"hasBirthCertificate",label:"Birth certificate available",type:"confirm"},{key:"hasRelationshipEvidence",label:"Relationship evidence available",type:"confirm"},{key:"hasFinancialSponsor",label:"Financial sponsor ready",type:"confirm"}]}],buildBundle(e){let t=[p("passport","Passport biographic page",!0,e.hasPassportCopy),p("birth","Birth certificate",!0,e.hasBirthCertificate),p("relationship","Relationship evidence",!0,e.hasRelationshipEvidence),p("financial","Financial sponsor package",!0,e.hasFinancialSponsor),p("translations","Certified translations",e.needsTranslation,!e.needsTranslation,e.needsTranslation?"Confirm each non-English civil document has a translation.":void 0)],i=[];e.priorVisaDenials&&i.push(u("priorVisaDenials","review","Prior denials usually require a human review of prior filings and refusal notices.")),e.hasFinancialSponsor||i.push(u("hasFinancialSponsor","warning","Most family visa packets need a support affidavit or equivalent sponsor evidence.")),e.hasRelationshipEvidence||i.push(u("hasRelationshipEvidence","error","Relationship evidence is missing for a family-based packet."));let n=[c("beneficiary-name","Beneficiary identity captured",e.beneficiary.fullName.trim().length>0,"error","Provide the beneficiary legal name."),c("relationship-evidence","Relationship evidence captured",e.hasRelationshipEvidence,"error","Relationship evidence is required for packet assembly."),c("passport-copy","Passport copy available",e.hasPassportCopy,"warning","Passport copy is recommended before packet review.")],a=t.filter(e=>"missing"===e.status).length;return{workflowId:"immigration/family-visa-intake",domain:"immigration",title:"Family visa packet intake",summary:"Packet planner for family visa and adjustment-style evidence assembly. PigeonGov does not submit to USCIS.",applicant:e.applicant,household:[{name:e.beneficiary.fullName,relationship:e.beneficiary.relationship},...e.household],evidence:t,answers:e,derived:{packetTrack:e.beneficiary.currentlyInUnitedStates?"adjustment-review":"consular-review",missingEvidenceCount:a,workAuthorizationRequested:e.workAuthorizationRequested},validation:{checks:n,flaggedFields:i},review:m("Visa packet readiness",0===a?"ready for human review":"needs more evidence",t,i,[`${e.beneficiary.fullName} is being reviewed for a ${e.visaGoal} packet.`,`Recommended track: ${e.beneficiary.currentlyInUnitedStates?"adjustment of status review":"consular packet review"}.`,`Missing evidence items: ${a}.`]),outputArtifacts:f("immigration-family-visa-intake",t),provenance:["workflow-registry","immigration-evidence-model"]}}}},I=n.Ikc({departure:n.YjP().trim().min(1),return:n.YjP().trim().min(1),destination:n.YjP().trim().min(1)}).strict(),P=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),greenCardDate:n.YjP().trim().min(1),residencePeriod:n.auy.number().int().nonnegative(),physicalPresenceDays:n.auy.number().int().nonnegative(),tripsAbroad:n.YOg(I).default([]),employmentHistory:n.YOg(n.YjP().trim().min(1)).default([]),hasGoodMoralCharacter:n.zMY().default(!0),englishProficiency:n.k5n(["fluent","basic","exempt"]),civicsReady:n.zMY().default(!1),maritalStatus:n.YjP().trim().min(1)}).strict(),A=n.Ikc({applicantName:n.YjP().trim().min(1),cardExpirationDate:n.YjP().trim().min(1),cardType:n.k5n(["10year","2year-conditional"]),reason:n.k5n(["expiring","lost","damaged","name-change"]),isConditional:n.zMY().default(!1),hasJointFiling:n.zMY().default(!1)}).strict(),C=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),lastApprovalDate:n.YjP().trim().min(1),expirationDate:n.YjP().trim().min(1),hasContinuousPresence:n.zMY().default(!0),hasConvictions:n.zMY().default(!1),advanceParoleHistory:n.zMY().default(!1)}).strict(),$=n.Ikc({applicantName:n.YjP().trim().min(1),category:n.k5n(["marriage","asylum","student-opt","student-cpt","ead-renewal"]),currentEadExpiration:n.YjP().trim().optional(),gapDays:n.auy.number().int().nonnegative().optional()}).strict(),D={marriage:"5-8 months",asylum:"3-5 months","student-opt":"3-5 months","student-cpt":"1-3 months","ead-renewal":"5-8 months"},N={marriage:"I-485 receipt notice",asylum:"Asylum approval or pending notice","student-opt":"I-20 with OPT recommendation","student-cpt":"I-20 with CPT authorization","ead-renewal":"Current/expired EAD card"},T={"immigration/naturalization":{summary:{id:"immigration/naturalization",domain:"immigration",title:"Naturalization eligibility review",summary:"Assess N-400 eligibility including physical presence, continuous residence, and civics/English readiness.",status:"active",audience:"individual",tags:["uscis","naturalization","n-400","citizenship","civics"]},inputSchema:P,starterData:{applicantName:"",dob:"",greenCardDate:"",residencePeriod:0,physicalPresenceDays:0,tripsAbroad:[],employmentHistory:[],hasGoodMoralCharacter:!0,englishProficiency:"fluent",civicsReady:!1,maritalStatus:""},sections:[{id:"eligibility",title:"Eligibility",description:"Core eligibility factors for N-400.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"greenCardDate",label:"Green card issue date",type:"date"},{key:"maritalStatus",label:"Marital status",type:"text"}]},{id:"residence",title:"Residence",description:"Continuous residence and statutory period.",fields:[{key:"residencePeriod",label:"Months of residence",type:"number"}]},{id:"physical-presence",title:"Physical Presence",description:"Physical presence in the US and trips abroad.",fields:[{key:"physicalPresenceDays",label:"Days physically present",type:"number"}]},{id:"background",title:"Background",description:"Moral character and background check.",fields:[{key:"hasGoodMoralCharacter",label:"Good moral character",type:"confirm"}]},{id:"english-civics",title:"English & Civics",description:"English proficiency and civics test readiness.",fields:[{key:"englishProficiency",label:"English proficiency",type:"select",options:[{label:"Fluent",value:"fluent"},{label:"Basic",value:"basic"},{label:"Exempt",value:"exempt"}]},{key:"civicsReady",label:"Civics test ready",type:"confirm"}]}],buildBundle(e){let t=function(e){let t=0,i=0,n=!1,a=!1,r=[];for(let o of e){let e=function(e,t){let i=new Date(e);return Math.max(0,Math.ceil((new Date(t).getTime()-i.getTime())/864e5))}(o.departure,o.return);t+=e,e>i&&(i=e),e>365?(a=!0,r.push(`Trip to ${o.destination} (${e} days) exceeds 1 year -- this resets the statutory period clock.`)):e>180&&(n=!0,r.push(`Trip to ${o.destination} (${e} days) exceeds 6 months -- may break continuous residence.`))}return{totalTripDays:t,longestTripDays:i,breaksContinuousResidence:n,resetsClock:a,tripWarnings:r}}(e.tripsAbroad),i=e.maritalStatus.toLowerCase().includes("married"),n=i?18:30,a=i?36:60,r=Math.floor((30*a-t.totalTripDays)/30),o=[p("green-card","Permanent resident card (green card)",!0,!0),p("passport","Current passport",!0,!0),p("tax-returns","Federal tax returns (last 5 years)",!0,e.employmentHistory.length>0),p("travel-records","Travel records and trip documentation",e.tripsAbroad.length>0,e.tripsAbroad.length>0),p("employment-records","Employment history records",!0,e.employmentHistory.length>0)],s=[];if(t.resetsClock)for(let e of t.tripWarnings.filter(e=>e.includes("resets")))s.push(u("tripsAbroad","error",e));if(t.breaksContinuousResidence)for(let e of t.tripWarnings.filter(e=>e.includes("break")))s.push(u("tripsAbroad","warning",e));e.hasGoodMoralCharacter||s.push(u("hasGoodMoralCharacter","review","Applicant indicated potential moral character concerns -- attorney review strongly recommended."));let d=[c("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant legal name."),c("physical-presence","Physical presence sufficient",r>=n,"error",`Must be physically present at least ${n} of ${a} months. Current: ~${r} months.`),c("continuous-residence","Continuous residence maintained",!t.breaksContinuousResidence&&!t.resetsClock,"warning","A trip exceeding 6 months may disrupt continuous residence."),c("civics-ready","Civics test readiness",e.civicsReady,"warning","Prepare for the civics and English test before the interview.")],h=t.resetsClock?"reset (trip > 1 year)":t.breaksContinuousResidence?"potentially broken (trip > 6 months)":"maintained",y=r>=n&&!t.resetsClock&&e.civicsReady?"appears eligible":"needs further review";return{workflowId:"immigration/naturalization",domain:"immigration",title:"Naturalization eligibility review",summary:"N-400 readiness assessment. PigeonGov does not submit applications to USCIS.",household:[],evidence:o,answers:e,derived:{track:i?"3-year marriage":"5-year standard",physicalPresenceMonths:r,requiredPresenceMonths:n,totalTripDays:t.totalTripDays,longestTripDays:t.longestTripDays,continuousResidence:h,fee:760},validation:{checks:d,flaggedFields:s},review:m("Naturalization readiness",y,o,s,[`Naturalization readiness: ${y}. Physical presence: ~${r}/${n} months. Continuous residence: ${h}.`,`Track: ${i?"3-year marriage":"5-year standard"}.`,`Filing fee: ${l(760)}.`]),outputArtifacts:f("immigration-naturalization",o),provenance:["workflow-registry","naturalization-eligibility-model"]}}},"immigration/green-card-renewal":{summary:{id:"immigration/green-card-renewal",domain:"immigration",title:"Green card renewal",summary:"Route to I-90 (10-year renewal) or I-751 (conditional removal) with fee calculation and evidence planning.",status:"active",audience:"individual",tags:["uscis","green-card","i-90","i-751","renewal"]},inputSchema:A,starterData:{applicantName:"",cardExpirationDate:"",cardType:"10year",reason:"expiring",isConditional:!1,hasJointFiling:!1},sections:[{id:"card-info",title:"Card Information",description:"Details about the current green card.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"cardExpirationDate",label:"Card expiration date",type:"date"},{key:"cardType",label:"Card type",type:"select",options:[{label:"10-year permanent",value:"10year"},{label:"2-year conditional",value:"2year-conditional"}]}]},{id:"renewal-type",title:"Renewal Type",description:"Reason for renewal and filing details.",fields:[{key:"reason",label:"Reason for renewal",type:"select",options:[{label:"Expiring",value:"expiring"},{label:"Lost",value:"lost"},{label:"Damaged",value:"damaged"},{label:"Name change",value:"name-change"}]},{key:"isConditional",label:"Conditional resident",type:"confirm"},{key:"hasJointFiling",label:"Joint filing with spouse",type:"confirm"}]}],buildBundle(e){let t="2year-conditional"===e.cardType||e.isConditional,i=t?"I-751":"I-90",n=t?595:540,a=[p("current-card-front","Current green card (front)",!0,!0),p("current-card-back","Current green card (back)",!0,!0),p("passport-photos","Passport-style photos",!0,!0)];t&&a.push(p("bona-fide-marriage","Evidence of bona fide marriage (joint accounts, leases, children, etc.)",!0,!1,"Conditional residents must demonstrate the marriage is genuine."));let r=[];if(t&&e.cardExpirationDate){let t=new Date(e.cardExpirationDate),i=new Date;i.setMonth(i.getMonth()-6),t<i&&r.push(u("cardExpirationDate","warning","Conditional card expired more than 6 months ago -- late filing may complicate the case."))}t&&!e.hasJointFiling&&r.push(u("hasJointFiling","review","I-751 without joint filing requires a waiver -- attorney review recommended."));let o=[c("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant name."),c("expiration-date","Expiration date provided",e.cardExpirationDate.trim().length>0,"error","Provide the card expiration date.")],s=a.filter(e=>"missing"===e.status).length;return{workflowId:"immigration/green-card-renewal",domain:"immigration",title:"Green card renewal",summary:`${i} filing organizer. PigeonGov does not submit forms to USCIS.`,household:[],evidence:a,answers:e,derived:{formRoute:i,fee:n,isConditional:t,needsWaiver:t&&!e.hasJointFiling},validation:{checks:o,flaggedFields:r},review:m("Green card renewal",0===s?"ready for review":"needs more evidence",a,r,[`Form: ${i}. Filing fee: ${l(n)}.`,`Card type: ${e.cardType}. Reason: ${e.reason}.`,t&&!e.hasJointFiling?"Waiver required: filing without joint petitioner.":""].filter(Boolean)),outputArtifacts:f("immigration-green-card-renewal",a),provenance:["workflow-registry","green-card-renewal-model"]}}},"immigration/daca-renewal":{summary:{id:"immigration/daca-renewal",domain:"immigration",title:"DACA renewal",summary:"Assess DACA renewal timing window, continuous presence, and background eligibility.",status:"active",audience:"individual",tags:["uscis","daca","renewal","ead","deferred-action"]},inputSchema:C,starterData:{applicantName:"",dob:"",lastApprovalDate:"",expirationDate:"",hasContinuousPresence:!0,hasConvictions:!1,advanceParoleHistory:!1},sections:[{id:"current-status",title:"Current Status",description:"Current DACA approval details.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"lastApprovalDate",label:"Last approval date",type:"date"},{key:"expirationDate",label:"Expiration date",type:"date"}]},{id:"eligibility-maintenance",title:"Eligibility Maintenance",description:"Continuous presence and eligibility factors.",fields:[{key:"hasContinuousPresence",label:"Continuous presence maintained",type:"confirm"}]},{id:"background",title:"Background",description:"Criminal history and travel records.",fields:[{key:"hasConvictions",label:"Any convictions",type:"confirm"},{key:"advanceParoleHistory",label:"Advance parole travel history",type:"confirm"}]}],buildBundle(e){let t,i="unknown";if(e.expirationDate){let n=new Date(e.expirationDate),a=new Date;(t=Math.ceil((n.getTime()-a.getTime())/864e5))<0?i="expired":t>150?i="too early (risk of rejection)":t>=120&&t<=150?i="optimal window":t<120&&(i="late (submit immediately)")}let n=[p("previous-ead","Previous EAD card",!0,!0),p("continuous-presence","Proof of continuous presence (utility bills, school records, etc.)",!0,e.hasContinuousPresence),p("school-work-records","School enrollment or employment records",!0,!1,"Gather recent school transcripts or pay stubs.")],a=[];void 0!==t&&t>150&&a.push(u("expirationDate","warning",`Submitting ${t} days before expiration -- USCIS may reject renewals filed more than 150 days early.`)),e.hasConvictions&&a.push(u("hasConvictions","review","Any criminal conviction must be reviewed by an attorney before filing a DACA renewal.")),e.advanceParoleHistory&&a.push(u("advanceParoleHistory","review","Advance parole travel history may affect re-entry eligibility -- attorney review recommended."));let r=[c("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant name."),c("continuous-presence","Continuous presence maintained",e.hasContinuousPresence,"error","Continuous presence is required for DACA renewal."),c("no-convictions","No disqualifying convictions",!e.hasConvictions,"warning","Convictions require careful legal review before filing.")];return n.filter(e=>"missing"===e.status).length,{workflowId:"immigration/daca-renewal",domain:"immigration",title:"DACA renewal",summary:"DACA renewal readiness assessment. PigeonGov does not submit applications to USCIS.",household:[],evidence:n,answers:e,derived:{fee:495,daysUntilExpiration:t,renewalWindowStatus:i,gapRisk:void 0!==t&&t<0},validation:{checks:r,flaggedFields:a},review:m("DACA renewal readiness","optimal window"!==i||e.hasConvictions?"needs review":"ready for filing",n,a,[`Renewal window: ${i}.`,void 0!==t?`Days until expiration: ${t}.`:"Expiration date not provided.",`Filing fee: ${l(495)} (biometrics included).`]),outputArtifacts:f("immigration-daca-renewal",n),provenance:["workflow-registry","daca-renewal-model"]}}},"immigration/work-authorization":{summary:{id:"immigration/work-authorization",domain:"immigration",title:"Work authorization (EAD)",summary:"Plan EAD application by category with evidence requirements, processing time estimates, and gap coverage strategy.",status:"active",audience:"individual",tags:["uscis","ead","work-permit","employment-authorization"]},inputSchema:$,starterData:{applicantName:"",category:"marriage"},sections:[{id:"category",title:"Category",description:"EAD application category.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"category",label:"Authorization category",type:"select",options:[{label:"Marriage-based",value:"marriage"},{label:"Asylum",value:"asylum"},{label:"Student OPT",value:"student-opt"},{label:"Student CPT",value:"student-cpt"},{label:"EAD renewal",value:"ead-renewal"}]}]},{id:"current-status",title:"Current Status",description:"Current EAD details if applicable.",fields:[{key:"currentEadExpiration",label:"Current EAD expiration",type:"date"},{key:"gapDays",label:"Gap days in authorization",type:"number"}]},{id:"timeline",title:"Timeline",description:"Processing expectations and strategy.",fields:[]}],buildBundle(e){let t=D[e.category],i=N[e.category],n=[p("category-evidence",i,!0,!1,`Required for ${e.category} category EAD.`)];"marriage"===e.category?n.push(p("i-485-receipt","I-485 receipt notice",!0,!1)):"asylum"===e.category?n.push(p("asylum-notice","Asylum approval or pending notice",!0,!1)):("student-opt"===e.category||"student-cpt"===e.category)&&n.push(p("i-20","I-20 with school endorsement",!0,!1));let a=[],r=e.gapDays??0;r>0&&a.push(u("gapDays","warning",`${r} days of gap in work authorization -- unauthorized employment during a gap creates serious immigration consequences.`)),e.currentEadExpiration&&new Date(e.currentEadExpiration)<new Date&&a.push(u("currentEadExpiration","error","Current EAD has expired. Check whether an automatic extension applies under 8 CFR 274a.13(d)."));let o=[c("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant name."),c("category-evidence","Category evidence identified",!0,"warning",`Gather ${i} before filing.`)],s=n.filter(e=>"missing"===e.status).length,l="No gap concerns.";if(r>0)l="File as early as possible. Check automatic extension eligibility for timely-filed renewals.";else if(e.currentEadExpiration){let t=new Date(e.currentEadExpiration),i=new Date,n=Math.ceil((t.getTime()-i.getTime())/864e5);n<90&&(l=`${n} days remaining on current EAD. File immediately to minimize gap risk.`)}return{workflowId:"immigration/work-authorization",domain:"immigration",title:"Work authorization (EAD)",summary:"EAD filing planner by category. PigeonGov does not submit forms to USCIS.",household:[],evidence:n,answers:e,derived:{category:e.category,processingEstimate:t,gapDays:r,gapStrategy:l},validation:{checks:o,flaggedFields:a},review:m("Work authorization readiness",0===s?"ready for filing":"needs evidence",n,a,[`Category: ${e.category}. Estimated processing: ${t}.`,l]),outputArtifacts:f("immigration-work-authorization",n),provenance:["workflow-registry","work-authorization-model"]}}}},E={"permits/local-permit-planner":{summary:{id:"permits/local-permit-planner",domain:"permits",title:"Local permit planner",summary:"Preview workflow for local permit scoping and evidence collection.",status:"preview",audience:"individual",tags:["permits","construction","local","planning"]},inputSchema:v,starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},entityName:"",state:"CA",locality:"",industry:"residential",needsProfessionalLicense:!1,hasZoningQuestions:!0},sections:[{id:"permit",title:"Permit basics",fields:[{key:"entityName",label:"Project or applicant name",type:"text"},{key:"locality",label:"City or county",type:"text"},{key:"industry",label:"Permit category",type:"text"}]}],buildBundle(e){let t=[p("site-plan","Site plan or project description",!0,!0),p("zoning","Zoning and occupancy questions",!0,!e.hasZoningQuestions,e.hasZoningQuestions?"Review local zoning office guidance before applying.":void 0)];return{workflowId:"permits/local-permit-planner",domain:"permits",title:"Local permit planner",summary:"Preview planner for local permit routing and document collection.",applicant:e.applicant,household:[],evidence:t,answers:e,derived:{locality:e.locality,planningMode:"preview"},validation:{checks:[c("locality","Locality provided",e.locality.length>0,"error","Provide the city or county.")],flaggedFields:[]},review:m("Permit planning","preview workflow",t,[],[`Permit area: ${e.locality}, ${e.state}.`,`Permit category: ${e.industry}.`]),outputArtifacts:f("permits-local-permit-planner",t),provenance:["workflow-registry","permit-planning-model"]}}}},M=n.Ikc({name:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/),relationship:n.YjP().trim().min(1),childTaxCreditEligible:n.zMY(),eitcEligible:n.zMY().optional()}).strict(),O={"tax/1040":{summary:{id:"tax/1040",domain:"tax",title:"Federal individual return",summary:"Form 1040 with Schedule 1 and Schedule C aware tax workflow for the 2025 filing season.",status:"active",audience:"household",tags:["irs","tax","refund","w2","schedule-c"],year:2025,legacyFormId:"1040"},inputSchema:n.Ikc({taxpayer:g,spouse:g.optional(),dependents:n.YOg(M).default([]),filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),wages:n.auy.number().default(0),taxableInterest:n.auy.number().default(0),ordinaryDividends:n.auy.number().default(0),scheduleCNet:n.auy.number().default(0),otherIncome:n.auy.number().default(0),adjustments:n.Ikc({educatorExpenses:n.auy.number().default(0),hsaDeduction:n.auy.number().default(0),selfEmploymentTaxDeduction:n.auy.number().default(0),iraDeduction:n.auy.number().default(0),studentLoanInterest:n.auy.number().default(0)}).strict().default({educatorExpenses:0,hsaDeduction:0,selfEmploymentTaxDeduction:0,iraDeduction:0,studentLoanInterest:0}),useItemizedDeductions:n.zMY().default(!1),itemizedDeductions:n.auy.number().default(0),federalWithheld:n.auy.number().default(0),estimatedPayments:n.auy.number().default(0)}).strict(),starterData:{taxpayer:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},dependents:[],filingStatus:"single",wages:0,taxableInterest:0,ordinaryDividends:0,scheduleCNet:0,otherIncome:0,adjustments:{educatorExpenses:0,hsaDeduction:0,selfEmploymentTaxDeduction:0,iraDeduction:0,studentLoanInterest:0},useItemizedDeductions:!1,itemizedDeductions:0,federalWithheld:0,estimatedPayments:0},sections:[{id:"identity",title:"Identity",description:"Collect the taxpayer identity and filing status.",fields:[{key:"taxpayer.firstName",label:"First name",type:"text"},{key:"taxpayer.lastName",label:"Last name",type:"text"},{key:"taxpayer.ssn",label:"SSN",type:"text"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"},{label:"Married filing separately",value:"married_filing_separately"},{label:"Head of household",value:"head_of_household"},{label:"Qualifying surviving spouse",value:"qualifying_surviving_spouse"}]}]},{id:"income",title:"Income",fields:[{key:"wages",label:"W-2 wages",type:"currency"},{key:"federalWithheld",label:"Federal withholding",type:"currency"},{key:"scheduleCNet",label:"Schedule C net",type:"currency"},{key:"otherIncome",label:"Other income",type:"currency"}]}],buildBundle(e){let t=(0,o.xm)({filingStatus:e.filingStatus,wages:e.wages,taxableInterest:e.taxableInterest,ordinaryDividends:e.ordinaryDividends,scheduleCNet:e.scheduleCNet,otherIncome:e.otherIncome,adjustments:e.adjustments,useItemizedDeductions:e.useItemizedDeductions,itemizedDeductions:e.itemizedDeductions,dependents:e.dependents,federalWithheld:e.federalWithheld,estimatedPayments:e.estimatedPayments}),i={formId:"1040",taxYear:2025,filingStatus:e.filingStatus,taxpayer:e.taxpayer,dependents:e.dependents,importedDocuments:e.federalWithheld>0?[{type:"w2",employerName:"Withholding input",wages:e.wages,federalWithheld:e.federalWithheld}]:[],taxInput:{filingStatus:e.filingStatus,wages:e.wages,taxableInterest:e.taxableInterest,ordinaryDividends:e.ordinaryDividends,scheduleCNet:e.scheduleCNet,otherIncome:e.otherIncome,adjustments:e.adjustments,useItemizedDeductions:e.useItemizedDeductions,itemizedDeductions:e.itemizedDeductions,dependents:e.dependents,federalWithheld:e.federalWithheld,estimatedPayments:e.estimatedPayments},...e.spouse?{spouse:e.spouse}:{}},n=(0,a.b)(i),s=(0,r.t)(n);return{workflowId:"tax/1040",domain:"tax",title:"Federal individual return",summary:"Deterministic 2025 federal return bundle.",year:2025,legacyFormId:"1040",applicant:e.taxpayer,household:e.dependents.map(e=>({name:e.name,relationship:e.relationship})),evidence:[],answers:e,derived:{refund:t.refund,amountOwed:t.amountOwed,taxableIncome:t.taxableIncome},validation:{checks:s.checks,flaggedFields:s.flaggedFields},review:{headline:t.refund>0?`Refund expected: ${l(t.refund)}`:`Amount owed: ${l(t.amountOwed)}`,notes:[`Gross income ${l(t.grossIncome)}`,`Taxable income ${l(t.taxableIncome)}`,`Federal tax ${l(t.totalTax)}`],flaggedFields:s.flaggedFields},outputArtifacts:[{kind:"bundle",label:"1040 return bundle",format:"json",path:"1040-2025-filled.json"},{kind:"review",label:"Return review PDF",format:"pdf",path:"1040-2025-filled.pdf"}],provenance:["calculation-engine","field-mapper","validator"],filledForm:n,calculation:t}}}},j={"unemployment/claim-intake":{summary:{id:"unemployment/claim-intake",domain:"unemployment",title:"Unemployment claim intake",summary:"Organize claimant identity, separation facts, and wage evidence for state unemployment review.",status:"active",audience:"individual",tags:["unemployment","claim","wages","state","employment"]},inputSchema:n.Ikc({applicant:g,stateOfClaim:h,lastEmployerName:n.YjP().trim().min(1),lastDayWorked:n.YjP().trim().min(1),separationReason:n.k5n(["laid_off","hours_reduced","fired","quit","seasonal_end"]),wagesLast12Months:n.auy.number().nonnegative(),receivingSeverance:n.zMY().default(!1),availableForWork:n.zMY().default(!0),identityProofAvailable:n.zMY().default(!1),wageProofAvailable:n.zMY().default(!1),separationNoticeAvailable:n.zMY().default(!1),notes:n.YjP().trim().optional()}).strict(),starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},stateOfClaim:"CA",lastEmployerName:"",lastDayWorked:"",separationReason:"laid_off",wagesLast12Months:0,receivingSeverance:!1,availableForWork:!0,identityProofAvailable:!1,wageProofAvailable:!1,separationNoticeAvailable:!1},sections:[{id:"claim",title:"Claim basics",fields:[{key:"applicant.firstName",label:"Claimant first name",type:"text"},{key:"stateOfClaim",label:"State of claim",type:"text"},{key:"lastEmployerName",label:"Last employer",type:"text"},{key:"lastDayWorked",label:"Last day worked",type:"date"}]},{id:"separation",title:"Separation facts",fields:[{key:"separationReason",label:"Separation reason",type:"select",options:[{label:"Laid off",value:"laid_off"},{label:"Hours reduced",value:"hours_reduced"},{label:"Fired",value:"fired"},{label:"Quit",value:"quit"},{label:"Seasonal end",value:"seasonal_end"}]},{key:"receivingSeverance",label:"Receiving severance",type:"confirm"},{key:"availableForWork",label:"Available for work",type:"confirm"},{key:"wagesLast12Months",label:"Wages in last 12 months",type:"currency"}]}],buildBundle(e){let t=[p("identity","Identity proof",!0,e.identityProofAvailable),p("wages","Wage proof",!0,e.wageProofAvailable),p("separation-notice","Separation notice or termination letter","hours_reduced"!==e.separationReason,e.separationNoticeAvailable)],i=[];e.availableForWork||i.push(u("availableForWork","error","Most unemployment programs require availability for suitable work.")),("quit"===e.separationReason||"fired"===e.separationReason)&&i.push(u("separationReason","review","Quit and fired claims often require a fact-specific human review before filing.")),e.receivingSeverance&&i.push(u("receivingSeverance","review","Severance may affect timing or state-specific eligibility calculations."));let n=[c("wage-proof","Wage proof available",e.wageProofAvailable,"warning","Collect wage statements or W-2s before claim review."),c("availability","Available for work",e.availableForWork,"error","Claimant must usually certify availability for work."),c("employer","Employer identified",e.lastEmployerName.trim().length>0,"error","Provide the last employer name.")],a=t.filter(e=>"missing"===e.status).length;return{workflowId:"unemployment/claim-intake",domain:"unemployment",title:"Unemployment claim intake",summary:"State claim intake organizer for identity, wage, and separation facts. PigeonGov does not submit the claim.",applicant:e.applicant,household:[],evidence:t,answers:e,derived:{monthlyAverageWages:e.wagesLast12Months/12,readinessState:0===a?"review-ready":"needs-evidence",separationTrack:e.separationReason},validation:{checks:n,flaggedFields:i},review:m("Claim readiness",0===a?"ready for state portal review":"needs more documents",t,i,[`State of claim: ${e.stateOfClaim}.`,`Last employer: ${e.lastEmployerName}.`,`Wages in last 12 months: ${l(e.wagesLast12Months)}.`]),outputArtifacts:f("unemployment-claim-intake",t),provenance:["workflow-registry","unemployment-claim-model"]}}}},Y=n.Ikc({name:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/).default("000-00-0000"),citizenshipStatus:n.k5n(["us_citizen","eligible_noncitizen","other"])}).strict(),L=n.Ikc({income:n.auy.number().nonnegative(),assets:n.auy.number().nonnegative(),householdSize:n.auy.number().int().positive()}).strict(),F=n.Ikc({studentInfo:Y,dependencyStatus:n.k5n(["dependent","independent"]),parentInfo:L.optional(),studentIncome:n.auy.number().nonnegative().default(0),studentAssets:n.auy.number().nonnegative().default(0),schoolCodes:n.YOg(n.YjP().trim().min(1)).default([]),filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),hasCompletedTaxReturn:n.zMY().default(!1)}).strict(),Z=n.Ikc({servicer:n.YjP().trim().min(1),balance:n.auy.number().nonnegative(),rate:n.auy.number().nonnegative(),type:n.k5n(["federal","private"]),originalAmount:n.auy.number().nonnegative()}).strict(),R=n.Ikc({loans:n.YOg(Z).min(1),annualIncome:n.auy.number().nonnegative(),filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),householdSize:n.auy.number().int().positive().default(1),employerType:n.k5n(["public","private","nonprofit"]),monthsOfQualifyingPayments:n.auy.number().int().nonnegative().default(0)}).strict(),B=n.Ikc({state:n.YjP().trim().regex(/^[A-Z]{2}$/),annualContribution:n.auy.number().nonnegative().default(0),beneficiaryAge:n.auy.number().int().nonnegative(),investmentTimeline:n.auy.number().int().positive(),currentBalance:n.auy.number().nonnegative().default(0)}).strict();function U(e){return 15650+5580*Math.max(0,e-1)}function q(e,t){return Math.max(0,e-1.5*U(t))}function G(e,t,i){if(e<=0)return 0;let n=t/12;return 0===n?e/i:e*n*Math.pow(1+n,i)/(Math.pow(1+n,i)-1)}let W={"education/fafsa":{summary:{id:"education/fafsa",domain:"education",title:"FAFSA readiness planner",summary:"Organise student identity, dependency status, and financial evidence for FAFSA filing.",status:"active",audience:"individual",tags:["fafsa","financial-aid","education","student"]},inputSchema:F,starterData:{studentInfo:{name:"",dob:"",ssn:"000-00-0000",citizenshipStatus:"us_citizen"},dependencyStatus:"dependent",studentIncome:0,studentAssets:0,schoolCodes:[],filingStatus:"single",hasCompletedTaxReturn:!1},sections:[{id:"student-identity",title:"Student Identity",fields:[{key:"studentInfo.name",label:"Student full name",type:"text"},{key:"studentInfo.dob",label:"Date of birth",type:"date"},{key:"studentInfo.ssn",label:"SSN",type:"text"},{key:"studentInfo.citizenshipStatus",label:"Citizenship status",type:"select",options:[{label:"US Citizen",value:"us_citizen"},{label:"Eligible non-citizen",value:"eligible_noncitizen"},{label:"Other",value:"other"}]}]},{id:"dependency-status",title:"Dependency Status",fields:[{key:"dependencyStatus",label:"Dependency status",type:"select",options:[{label:"Dependent",value:"dependent"},{label:"Independent",value:"independent"}]}]},{id:"financial-information",title:"Financial Information",fields:[{key:"studentIncome",label:"Student income",type:"currency"},{key:"studentAssets",label:"Student assets",type:"currency"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"},{label:"Head of household",value:"head_of_household"}]},{key:"hasCompletedTaxReturn",label:"Tax return completed",type:"confirm"}]},{id:"school-selection",title:"School Selection",fields:[{key:"schoolCodes",label:"School codes",type:"text",helpText:"Comma-separated federal school codes."}]}],buildBundle(e){let t=[p("tax-return","Federal tax return (IRS DRT preferred)",!0,e.hasCompletedTaxReturn),p("bank-statements","Bank statements for asset verification",!0,e.studentAssets>0),p("w2","W-2 forms",e.studentIncome>0,e.studentIncome>0),p("citizenship-proof","Birth certificate or citizenship proof",!0,"us_citizen"===e.studentInfo.citizenshipStatus,"other"===e.studentInfo.citizenshipStatus?"Non-eligible citizenship status may prevent FAFSA filing.":void 0)];"dependent"===e.dependencyStatus&&e.parentInfo&&t.push(p("parent-tax-return","Parent tax return",!0,e.hasCompletedTaxReturn),p("parent-bank-statements","Parent bank statements",!0,e.parentInfo.assets>0));let i=[],n=e.studentAssets+(e.parentInfo?.assets??0),a=e.studentIncome+(e.parentInfo?.income??0);n>5e4&&a<3e4&&i.push(u("studentAssets","review","High assets relative to low income may trigger verification — ensure documentation is thorough.")),"independent"===e.dependencyStatus&&e.studentIncome<1e4&&e.studentAssets<5e3&&i.push(u("dependencyStatus","review","Independent status with very low income/assets — school may request dependency override documentation.")),"other"===e.studentInfo.citizenshipStatus&&i.push(u("studentInfo.citizenshipStatus","error","Only US citizens and eligible non-citizens may file FAFSA."));let r=Math.max(-1500,Math.round(.22*a+.05*n-6e3)),o=[c("tax-return","Tax return available",e.hasCompletedTaxReturn,"warning","Complete your federal tax return before filing FAFSA for best accuracy."),c("school-codes","At least one school selected",e.schoolCodes.length>0,"error","Add at least one school code so aid can be sent."),c("citizenship","Eligible citizenship status","other"!==e.studentInfo.citizenshipStatus,"error","FAFSA requires US citizenship or eligible non-citizen status.")];return{workflowId:"education/fafsa",domain:"education",title:"FAFSA readiness planner",summary:"FAFSA readiness bundle. PigeonGov does not submit your FAFSA.",applicant:void 0,household:"dependent"===e.dependencyStatus&&e.parentInfo?[{name:"Parent/guardian",relationship:"parent",notes:`Household size: ${e.parentInfo.householdSize}`}]:[],evidence:t,answers:e,derived:{estimatedSAI:r,totalIncome:a,totalAssets:n,schoolCount:e.schoolCodes.length,dependencyStatus:e.dependencyStatus},validation:{checks:o,flaggedFields:i},review:m("FAFSA readiness",`estimated SAI: ${l(r)}`,t,i,[`${t.filter(e=>"provided"===e.status).length} evidence items provided, estimated SAI: ${l(r)}.`,`Schools selected: ${e.schoolCodes.length}.`,`Dependency status: ${e.dependencyStatus}.`]),outputArtifacts:f("education-fafsa",t),provenance:["workflow-registry"]}}},"education/student-loan-repayment":{summary:{id:"education/student-loan-repayment",domain:"education",title:"Student loan repayment planner",summary:"Compare IDR plans (SAVE, PAYE, IBR, ICR) and standard repayment across your federal loan portfolio.",status:"active",audience:"individual",tags:["student-loans","idr","pslf","repayment","education"]},inputSchema:R,starterData:{loans:[{servicer:"",balance:0,rate:.05,type:"federal",originalAmount:0}],annualIncome:0,filingStatus:"single",householdSize:1,employerType:"private",monthsOfQualifyingPayments:0},sections:[{id:"loan-inventory",title:"Loan Inventory",fields:[{key:"loans",label:"Loan details",type:"textarea",helpText:"Enter each loan's servicer, balance, rate, and type."}]},{id:"income-employment",title:"Income & Employment",fields:[{key:"annualIncome",label:"Annual income",type:"currency"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"},{label:"Married filing separately",value:"married_filing_separately"}]},{key:"householdSize",label:"Household size",type:"number"},{key:"employerType",label:"Employer type",type:"select",options:[{label:"Public sector",value:"public"},{label:"Private sector",value:"private"},{label:"Non-profit",value:"nonprofit"}]},{key:"monthsOfQualifyingPayments",label:"Months of qualifying PSLF payments",type:"number"}]},{id:"repayment-goals",title:"Repayment Goals",description:"PigeonGov will compare repayment plans automatically.",fields:[]}],buildBundle(e){let t,i,n,a,r,o,s,d,h,y,g=e.loans.filter(e=>"federal"===e.type),b=e.loans.filter(e=>"private"===e.type),v=e.loans.reduce((e,t)=>e+t.balance,0),w=g.reduce((e,t)=>e+t.balance,0),k=[p("loan-statements","Loan statements",!0,v>0),p("income-verification","Income verification (pay stubs / tax return)",!0,e.annualIncome>0),p("employer-certification","Employer certification for PSLF (ECF)","private"!==e.employerType,"private"!==e.employerType&&e.monthsOfQualifyingPayments>0,"private"!==e.employerType?"Submit ECF annually to track PSLF progress.":void 0)],S=[];b.length>0&&S.push(u("loans","warning",`${b.length} private loan(s) totalling ${l(b.reduce((e,t)=>e+t.balance,0))} are not eligible for IDR or PSLF.`));let x="public"===e.employerType||"nonprofit"===e.employerType;!x&&e.monthsOfQualifyingPayments>0&&S.push(u("employerType","warning","PSLF requires employment with a public-sector or non-profit employer. Current employer type does not qualify."));let z=(n=(i=(t=e.loans.filter(e=>"federal"===e.type)).reduce((e,t)=>e+t.balance,0))>0?t.reduce((e,t)=>e+t.rate*t.balance,0)/i:.05,a=q(e.annualIncome,e.householdSize)/12,r=[],o=G(i,n,120),r.push({name:"Standard",monthlyPayment:Math.round(100*o)/100,totalPaid:Math.round(120*o*100)/100,termMonths:120,eligible:i>0}),s=Math.round(.1*a*100)/100,r.push({name:"SAVE",monthlyPayment:s,totalPaid:Math.round(240*s*100)/100,termMonths:240,eligible:i>0,note:"Replaces REPAYE. Lowest payment for most borrowers."}),d=Math.round(.1*a*100)/100,r.push({name:"PAYE",monthlyPayment:d,totalPaid:Math.round(240*d*100)/100,termMonths:240,eligible:i>0,note:"Capped at Standard payment amount."}),h=Math.round(.15*a*100)/100,r.push({name:"IBR",monthlyPayment:h,totalPaid:Math.round(300*h*100)/100,termMonths:300,eligible:i>0,note:"New borrowers after 2014 get 10% / 20-year terms."}),y=Math.round(100*Math.min(Math.round(.2*a*100)/100,G(i,n,144)))/100,r.push({name:"ICR",monthlyPayment:y,totalPaid:Math.round(300*y*100)/100,termMonths:300,eligible:i>0,note:"Only IDR plan available for Parent PLUS (via consolidation)."}),r),_=z.filter(e=>e.eligible),I=_.length>0?_.reduce((e,t)=>t.monthlyPayment<e.monthlyPayment?t:e,_[0]):null,P=x?Math.max(0,120-e.monthsOfQualifyingPayments):null,A=[c("federal-loans","Federal loans present",g.length>0,"warning","IDR plans are only available for federal student loans."),c("income-provided","Income information provided",e.annualIncome>0,"error","Income is required to calculate IDR payments.")];return{workflowId:"education/student-loan-repayment",domain:"education",title:"Student loan repayment planner",summary:"IDR comparison for federal student loans. PigeonGov does not change your repayment plan.",applicant:void 0,household:[],evidence:k,answers:e,derived:{plans:z,lowestPlan:I?.name??"N/A",lowestMonthlyPayment:I?.monthlyPayment??0,totalBalance:v,totalFederalBalance:w,pslf:x,pslMonthsRemaining:P,discretionaryIncome:q(e.annualIncome,e.householdSize),fpl:U(e.householdSize)},validation:{checks:A,flaggedFields:S},review:m("Student loan repayment",I?`lowest monthly: ${I.name} at ${l(I.monthlyPayment)}/mo`:"no federal loans for IDR",k,S,[`Total balance: ${l(v)} (${l(w)} federal).`,I?`Lowest monthly payment: ${I.name} at ${l(I.monthlyPayment)}/month.`:"No eligible IDR plans.",`PSLF eligible: ${x?"yes":"no"}.${x&&null!==P?` ${P} qualifying months remaining.`:""}`]),outputArtifacts:f("education-student-loan-repayment",k),provenance:["workflow-registry"]}}},"education/529-planner":{summary:{id:"education/529-planner",domain:"education",title:"529 savings planner",summary:"Project 529 plan growth and explore state tax deduction benefits.",status:"active",audience:"household",tags:["529","education-savings","tax-deduction","investment"]},inputSchema:B,starterData:{state:"CA",annualContribution:0,beneficiaryAge:0,investmentTimeline:18,currentBalance:0},sections:[{id:"plan-details",title:"Plan Details",fields:[{key:"state",label:"State",type:"text"},{key:"currentBalance",label:"Current 529 balance",type:"currency"},{key:"beneficiaryAge",label:"Beneficiary current age",type:"number"}]},{id:"contribution-planning",title:"Contribution Planning",fields:[{key:"annualContribution",label:"Annual contribution",type:"currency"},{key:"investmentTimeline",label:"Investment timeline (years)",type:"number"}]}],buildBundle(e){let t,i=Math.max(0,18-e.beneficiaryAge),n=Math.min(e.investmentTimeline,i),a=e.currentBalance;for(let t=0;t<n;t++)a=(a+e.annualContribution)*1.07;a=Math.round(100*a)/100;let r=new Set(["AZ","AR","CO","CT","GA","ID","IL","IN","IA","KS","LA","MD","MI","MN","MS","MO","MT","NE","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","UT","VA","VT","WV","WI","DC"]);t=new Set(["AK","FL","NV","NH","SD","TN","TX","WA","WY"]).has(e.state)?"No state income tax — no deduction benefit, but earnings still grow tax-free.":r.has(e.state)?"State offers a tax deduction or credit for 529 contributions.":"State may not offer a 529 tax deduction — verify with your state tax authority.";let o=e.currentBalance+e.annualContribution*n,s=a-o,d=[],u=[],p=[c("contribution","Annual contribution set",e.annualContribution>0,"warning","Set an annual contribution amount to see projections.")];return{workflowId:"education/529-planner",domain:"education",title:"529 savings planner",summary:"529 plan projection tool. PigeonGov does not manage investments.",applicant:void 0,household:[],evidence:d,answers:e,derived:{projectedBalance:a,projectionYears:n,totalContributions:o,estimatedGrowth:s,growthRate:.07,stateTaxBenefit:t},validation:{checks:p,flaggedFields:u},review:{headline:`529 planner: projected balance ${l(a)} in ${n} years`,notes:[`Current balance: ${l(e.currentBalance)}.`,`Annual contribution: ${l(e.annualContribution)}.`,`Projected balance at beneficiary age 18: ${l(a)}.`,`Estimated growth: ${l(s)}.`,t],flaggedFields:u},outputArtifacts:f("education-529-planner",d),provenance:["workflow-registry"]}}}},H=n.Ikc({passportNumber:n.YjP().trim().min(1),issueDate:n.YjP().trim().min(1),expirationDate:n.YjP().trim().min(1)}).strict(),V=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),citizenshipProof:n.k5n(["birth_certificate","naturalization_certificate","previous_passport"]),isRenewal:n.zMY().default(!1),hasNameChange:n.zMY().default(!1),isMinor:n.zMY().default(!1),processingSpeed:n.k5n(["routine","expedited","urgent"]).default("routine"),currentPassportInfo:H.optional()}).strict(),J=n.Ikc({currentName:n.YjP().trim().min(1),newName:n.YjP().trim().min(1),reason:n.k5n(["marriage","divorce","personal","court-order"]),state:n.YjP().trim().regex(/^[A-Z]{2}$/),hasCourtOrder:n.zMY().default(!1),entitiesToUpdate:n.YOg(n.YjP().trim().min(1)).default(["SSA","DMV","Passport","Bank","Employer","Insurance","Voter Registration","Utilities"])}).strict(),K=n.Ikc({name:n.YjP().trim().min(1),address:n.Ikc({street1:n.YjP().trim().min(1),street2:n.YjP().trim().optional(),city:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),zipCode:n.YjP().trim().min(5)}).strict(),dob:n.YjP().trim().min(1),citizenshipConfirmed:n.zMY(),state:n.YjP().trim().regex(/^[A-Z]{2}$/),previousRegistration:n.zMY().default(!1),partyAffiliation:n.YjP().trim().optional()}).strict(),Q=n.Ikc({name:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),hasIdentityDoc:n.zMY().default(!1),hasSsnDoc:n.zMY().default(!1),hasResidencyDocs:n.auy.number().int().nonnegative().default(0),hasCurrentLicense:n.zMY().default(!1)}).strict(),X={summary:{id:"identity/passport",domain:"identity",title:"Passport application planner",summary:"Determine form routing (DS-11 vs DS-82), document requirements, fees, and processing times for US passport applications.",status:"active",audience:"individual",tags:["passport","ds-11","ds-82","state-department","identity"]},inputSchema:V,starterData:{applicantName:"",dob:"",citizenshipProof:"birth_certificate",isRenewal:!1,hasNameChange:!1,isMinor:!1,processingSpeed:"routine"},sections:[{id:"application-type",title:"Application Type",fields:[{key:"isRenewal",label:"Is this a renewal?",type:"confirm"},{key:"hasNameChange",label:"Name change since last passport?",type:"confirm"},{key:"isMinor",label:"Applicant under 16?",type:"confirm"},{key:"processingSpeed",label:"Processing speed",type:"select",options:[{label:"Routine (6-8 weeks)",value:"routine"},{label:"Expedited (2-3 weeks)",value:"expedited"},{label:"Urgent (same day / emergency)",value:"urgent"}]}]},{id:"applicant-information",title:"Applicant Information",fields:[{key:"applicantName",label:"Full legal name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"citizenshipProof",label:"Citizenship proof type",type:"select",options:[{label:"Birth certificate",value:"birth_certificate"},{label:"Naturalization certificate",value:"naturalization_certificate"},{label:"Previous passport",value:"previous_passport"}]}]},{id:"documentation",title:"Documentation",fields:[{key:"currentPassportInfo.passportNumber",label:"Current passport number (if renewal)",type:"text"},{key:"currentPassportInfo.expirationDate",label:"Current passport expiration date",type:"date"}]}],buildBundle(e){let t,i=e.isRenewal&&!e.hasNameChange&&!e.isMinor&&!!e.currentPassportInfo,n=i?"DS-82":"DS-11",a=0;i?t=130:(t=165,a=35);let r=0;("expedited"===e.processingSpeed||"urgent"===e.processingSpeed)&&(r=60);let o=t+a+r,s={routine:"6-8 weeks",expedited:"2-3 weeks",urgent:"Same day (at passport agency, by appointment only)"}[e.processingSpeed],d=[p("citizenship-proof","birth_certificate"===e.citizenshipProof?"US birth certificate":"naturalization_certificate"===e.citizenshipProof?"Certificate of naturalization":"Previous US passport",!0,!0),p("photo","Passport photo (2x2 inches)",!0,!1),p("current-passport","Current/most recent passport",e.isRenewal,!!e.currentPassportInfo,e.isRenewal&&!e.currentPassportInfo?"Renewal requires your most recent passport.":void 0)];e.hasNameChange&&d.push(p("name-change-doc","Name change documentation (court order, marriage certificate)",!0,!1));let h=[];e.isMinor&&h.push(u("isMinor","review","Minor passport applications require both parents' consent or sole custody documentation. Both parents must appear in person for DS-11.")),e.hasNameChange&&!i&&h.push(u("hasNameChange","warning","Name change requires DS-11 (new application) even if renewing. Court order or marriage/divorce certificate required."));let y=[c("applicant-name","Applicant name provided",e.applicantName.trim().length>0,"error","Full legal name is required."),c("dob","Date of birth provided",e.dob.trim().length>0,"error","Date of birth is required.")];return{workflowId:"identity/passport",domain:"identity",title:"Passport application planner",summary:"Passport application readiness bundle. PigeonGov does not submit passport applications.",applicant:void 0,household:[],evidence:d,answers:e,derived:{recommendedForm:n,canRenewByMail:i,applicationFee:t,executionFee:a,expediteFee:r,totalFees:o,estimatedProcessingTime:s},validation:{checks:y,flaggedFields:h},review:m("Passport application",`${n} — ${s}`,d,h,[`Recommended form: ${n} (${i?"renewal by mail":"in-person submission"}).`,`Total fees: ${l(o)} (application: ${l(t)}${a>0?`, execution: ${l(a)}`:""}${r>0?`, expedite: ${l(r)}`:""}).`,`Estimated processing time: ${s}.`]),outputArtifacts:f("identity-passport",d),provenance:["workflow-registry"]}}},ee=["SSA","DMV","Passport","Bank","Employer","Insurance","Voter Registration","Utilities"],et={"identity/passport":X,"identity/name-change":{summary:{id:"identity/name-change",domain:"identity",title:"Name change planner",summary:"Plan your legal name change and track cascading updates across government agencies, financial institutions, and employers.",status:"active",audience:"individual",tags:["name-change","identity","court-order","ssa","dmv"]},inputSchema:J,starterData:{currentName:"",newName:"",reason:"marriage",state:"CA",hasCourtOrder:!1,entitiesToUpdate:[...ee]},sections:[{id:"name-change-details",title:"Name Change Details",fields:[{key:"currentName",label:"Current legal name",type:"text"},{key:"newName",label:"New legal name",type:"text"},{key:"reason",label:"Reason for name change",type:"select",options:[{label:"Marriage",value:"marriage"},{label:"Divorce",value:"divorce"},{label:"Personal preference",value:"personal"},{label:"Court order",value:"court-order"}]}]},{id:"state-requirements",title:"State Requirements",fields:[{key:"state",label:"State",type:"text"},{key:"hasCourtOrder",label:"Court order obtained",type:"confirm"}]},{id:"cascading-updates",title:"Cascading Updates",description:"Entities to update after name change is legally effective.",fields:[{key:"entitiesToUpdate",label:"Entities to update",type:"textarea",helpText:"Recommended order: SSA, DMV, Passport, Bank, Employer, Insurance, Voter Registration, Utilities."}]}],buildBundle(e){let t="personal"===e.reason||"court-order"===e.reason,i="marriage"===e.reason||"divorce"===e.reason||e.hasCourtOrder,n=[p("court-order","Court order for name change",t,e.hasCourtOrder),p("current-id","Current government ID",!0,!1),p("reason-proof","marriage"===e.reason?"Marriage certificate":"divorce"===e.reason?"Divorce decree":"Court order or supporting documentation",!0,i)],a=[],r=new Set(["AL","AZ","CA","FL","GA","IL","IN","KY","LA","MD","MI","MN","MS","MO","NJ","NY","NC","OH","OK","PA","SC","TN","TX","VA","WA","WI"]);t&&r.has(e.state)&&a.push(u("state","review",`${e.state} may require publication of name change petition in a local newspaper before the hearing. Check county court requirements.`)),t&&!e.hasCourtOrder&&a.push(u("hasCourtOrder","warning","A court order is required for this type of name change. File a petition with your county court."));let o=ee.filter(t=>e.entitiesToUpdate.includes(t)).map((e,t)=>({step:t+1,entity:e,status:"pending"})),s=[c("current-name","Current name provided",e.currentName.trim().length>0,"error","Current legal name is required."),c("new-name","New name provided",e.newName.trim().length>0,"error","New legal name is required."),c("reason-doc","Supporting documentation available",i,"warning","Obtain supporting documentation (marriage cert, divorce decree, or court order) before starting updates.")];return{workflowId:"identity/name-change",domain:"identity",title:"Name change planner",summary:"Name change planning bundle. PigeonGov does not file court petitions.",applicant:void 0,household:[],evidence:n,answers:e,derived:{needsCourtFiling:t,updateChecklist:o,entitiesToUpdateCount:e.entitiesToUpdate.length},validation:{checks:s,flaggedFields:a},review:m("Name change",`${e.currentName||"?"} to ${e.newName||"?"}`,n,a,[`Name change from ${e.currentName||"?"} to ${e.newName||"?"}.`,`${e.entitiesToUpdate.length} entities to update.`,`Court filing required: ${t?"yes":"no"}.`]),outputArtifacts:f("identity-name-change",n),provenance:["workflow-registry"]}}},"identity/voter-registration":{summary:{id:"identity/voter-registration",domain:"identity",title:"Voter registration guide",summary:"Check eligibility, determine registration method, and prepare documentation for voter registration.",status:"active",audience:"individual",tags:["voter","registration","election","identity","civic"]},inputSchema:K,starterData:{name:"",address:{street1:"",city:"",state:"CA",zipCode:""},dob:"",citizenshipConfirmed:!1,state:"CA",previousRegistration:!1},sections:[{id:"eligibility",title:"Eligibility",fields:[{key:"citizenshipConfirmed",label:"US citizen",type:"confirm"},{key:"dob",label:"Date of birth",type:"date"}]},{id:"registration-details",title:"Registration Details",fields:[{key:"name",label:"Full legal name",type:"text"},{key:"address.street1",label:"Street address",type:"text"},{key:"address.city",label:"City",type:"text"},{key:"state",label:"State",type:"text"},{key:"address.zipCode",label:"ZIP code",type:"text"},{key:"previousRegistration",label:"Previously registered in another state?",type:"confirm"},{key:"partyAffiliation",label:"Party affiliation (optional)",type:"text",helpText:"Some states require party affiliation to vote in primaries."}]}],buildBundle(e){let t,i=new Set(["AR","MS","MT","NH","SD","TX","WY"]),n=new Set(["CA","CO","CT","DC","HI","ID","IL","IA","ME","MD","MI","MN","MT","NV","NH","NM","NC","UT","VT","VA","WA","WI"]),a=!i.has(e.state),r=n.has(e.state);t=a?"Online registration available — visit your state's election website.":"Online registration not available — register by mail or in person.";let o=[p("identity-doc","Government-issued ID or last 4 of SSN",!0,!1),p("residency-proof","Proof of residency (varies by state)",!0,!1)],s=[];e.citizenshipConfirmed||s.push(u("citizenshipConfirmed","error","US citizenship is required to register to vote."));let l=[c("citizenship","US citizenship confirmed",e.citizenshipConfirmed,"error","You must be a US citizen to register to vote."),c("name-provided","Name provided",e.name.trim().length>0,"error","Legal name is required for registration."),c("address-provided","Address provided",e.address.street1.trim().length>0,"error","Residential address is required for registration.")];return{workflowId:"identity/voter-registration",domain:"identity",title:"Voter registration guide",summary:"Voter registration readiness bundle. PigeonGov does not register voters.",applicant:void 0,household:[],evidence:o,answers:e,derived:{hasOnlineRegistration:a,hasSameDayRegistration:r,registrationMethod:t,deadlineNote:r?"Same-day registration available — register at your polling place on Election Day.":"Register at least 30 days before Election Day (typical state deadline)."},validation:{checks:l,flaggedFields:s},review:m("Voter registration",e.citizenshipConfirmed?"eligible":"citizenship not confirmed",o,s,[t,r?"Same-day registration is available in your state.":"Register at least 30 days before Election Day."]),outputArtifacts:f("identity-voter-registration",o),provenance:["workflow-registry"]}}},"identity/real-id":{summary:{id:"identity/real-id",domain:"identity",title:"REAL ID readiness checker",summary:"Check document readiness for REAL ID-compliant driver's license or ID card.",status:"active",audience:"individual",tags:["real-id","dmv","identity","driver-license","tsa"]},inputSchema:Q,starterData:{name:"",dob:"",state:"CA",hasIdentityDoc:!1,hasSsnDoc:!1,hasResidencyDocs:0,hasCurrentLicense:!1},sections:[{id:"document-checklist",title:"Document Checklist",description:"REAL ID requires four categories of documentation.",fields:[{key:"hasIdentityDoc",label:"Identity document (passport or birth certificate)",type:"confirm"},{key:"hasSsnDoc",label:"SSN document (card, W-2, or SSA-1099)",type:"confirm"},{key:"hasResidencyDocs",label:"Number of residency proofs (need 2: utility bill, bank statement, etc.)",type:"number"},{key:"hasCurrentLicense",label:"Current driver's license or state ID",type:"confirm"}]},{id:"current-status",title:"Current Status",fields:[{key:"name",label:"Full legal name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"state",label:"State",type:"text"}]}],buildBundle(e){let t=Math.min(e.hasResidencyDocs,2),i=[e.hasIdentityDoc,e.hasSsnDoc,t>=2,e.hasCurrentLicense].filter(Boolean).length,n=[p("identity-doc","Identity document (passport, birth certificate, or permanent resident card)",!0,e.hasIdentityDoc),p("ssn-doc","SSN document (Social Security card, W-2, or SSA-1099)",!0,e.hasSsnDoc),p("residency-1","Residency proof #1 (utility bill, bank statement, mortgage statement)",!0,t>=1),p("residency-2","Residency proof #2 (must be different from #1)",!0,t>=2),p("current-license","Current driver's license or state ID",!1,e.hasCurrentLicense)],a=[];t<2&&a.push(u("hasResidencyDocs","warning",`You have ${t} of 2 required residency proofs. Accepted: utility bills, bank statements, mortgage documents, rental agreements.`));let r=[c("identity-doc","Identity document",e.hasIdentityDoc,"error","A valid identity document is required."),c("ssn-doc","SSN document",e.hasSsnDoc,"error","A document showing your SSN is required."),c("residency","Two residency proofs",t>=2,"error","Two different proofs of residency are required.")];return{workflowId:"identity/real-id",domain:"identity",title:"REAL ID readiness checker",summary:"REAL ID document readiness bundle. PigeonGov does not issue IDs.",applicant:void 0,household:[],evidence:n,answers:e,derived:{docsVerified:i,totalRequired:4,ready:4===i,missingCategories:[...e.hasIdentityDoc?[]:["identity document"],...e.hasSsnDoc?[]:["SSN document"],...t<2?[`${2-t} more residency proof(s)`]:[]]},validation:{checks:r,flaggedFields:a},review:m("REAL ID readiness",`${i}/4 required documents verified`,n,a,[`REAL ID readiness: ${i}/4 required documents verified.`,4===i?"All required documents accounted for — schedule a DMV appointment.":"Gather missing documents before visiting the DMV."]),outputArtifacts:f("identity-real-id",n),provenance:["workflow-registry"]}}}},ei=n.Ikc({householdSize:n.auy.number().int().positive(),monthlyGrossIncome:n.auy.number().nonnegative(),monthlyNetIncome:n.auy.number().nonnegative(),state:h,citizenshipStatus:n.k5n(["us_citizen","permanent_resident","qualified_alien","other"]),receivingTanf:n.zMY().default(!1),receivingSsi:n.zMY().default(!1),hasAssets:n.zMY().default(!1),assetValue:n.auy.number().nonnegative().default(0),hasVehicle:n.zMY().default(!1)}).strict(),en=n.Ikc({householdSize:n.auy.number().int().positive(),annualIncome:n.auy.number().nonnegative(),state:h,county:n.YjP().trim().min(1),currentHousingCost:n.auy.number().nonnegative(),isDisabled:n.zMY().default(!1),isElderly:n.zMY().default(!1),isVeteran:n.zMY().default(!1)}).strict(),ea=n.Ikc({applicantCategory:n.k5n(["pregnant","postpartum","infant","child"]),applicantAge:n.auy.number().int().nonnegative().optional(),householdSize:n.auy.number().int().positive(),annualIncome:n.auy.number().nonnegative(),receivingMedicaid:n.zMY().default(!1),receivingSnap:n.zMY().default(!1),receivingTanf:n.zMY().default(!1)}).strict(),er=n.Ikc({householdSize:n.auy.number().int().positive(),annualIncome:n.auy.number().nonnegative(),state:h,heatingSource:n.YjP().trim().min(1),hasUtilityShutoffNotice:n.zMY().default(!1),season:n.k5n(["winter","summer"])}).strict(),eo=n.Ikc({householdSize:n.auy.number().int().positive(),monthlyIncome:n.auy.number().nonnegative(),state:h,isPregnant:n.zMY().default(!1),hasChildren:n.zMY().default(!1),isDisabled:n.zMY().default(!1),isElderly:n.zMY().default(!1),currentInsurance:n.YjP().trim().default("none")}).strict(),es=n.Ikc({applicantName:n.YjP().trim().min(1),disabilityOnsetDate:n.YjP().trim().min(1),lastWorkDate:n.YjP().trim().min(1),monthlyEarnings:n.auy.number().nonnegative(),medicalConditions:n.YOg(n.YjP().trim().min(1)).min(1),treatingPhysicians:n.YOg(n.YjP().trim().min(1)).min(1),hasBeenHospitalized:n.zMY().default(!1)}).strict(),el={1:15650,2:21150,3:26650,4:32150,5:37650,6:43150,7:48650,8:54150};function ed(e){return e<=0?el[1]:e<=8?el[e]:el[8]+(e-8)*5500}let ec={1:292,2:536,3:768,4:975,5:1158,6:1390,7:1536,8:1756},eu=new Set(["AL","FL","GA","KS","MS","SC","TN","TX","WI","WY"]),ep={"benefits/snap":{summary:{id:"benefits/snap",domain:"benefits",title:"SNAP benefits eligibility",summary:"Assess SNAP (food stamps) eligibility using FPL-based income tests and estimate monthly benefits.",status:"active",audience:"household",tags:["snap","food-stamps","benefits","fpl","nutrition"]},inputSchema:ei,starterData:{householdSize:1,monthlyGrossIncome:0,monthlyNetIncome:0,state:"CA",citizenshipStatus:"us_citizen",receivingTanf:!1,receivingSsi:!1,hasAssets:!1,assetValue:0,hasVehicle:!1},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"},{key:"state",label:"State",type:"text"},{key:"citizenshipStatus",label:"Citizenship status",type:"select",options:[{label:"US citizen",value:"us_citizen"},{label:"Permanent resident",value:"permanent_resident"},{label:"Qualified alien",value:"qualified_alien"},{label:"Other",value:"other"}]}]},{id:"income",title:"Income",fields:[{key:"monthlyGrossIncome",label:"Monthly gross income",type:"currency"},{key:"monthlyNetIncome",label:"Monthly net income",type:"currency"}]},{id:"assets",title:"Assets",fields:[{key:"hasAssets",label:"Has countable assets",type:"confirm"},{key:"assetValue",label:"Total asset value",type:"currency"},{key:"hasVehicle",label:"Has vehicle",type:"confirm"}]},{id:"eligibility-factors",title:"Eligibility Factors",fields:[{key:"receivingTanf",label:"Currently receiving TANF",type:"confirm"},{key:"receivingSsi",label:"Currently receiving SSI",type:"confirm"}]}],buildBundle:function(e){var t;let i=ed(e.householdSize),n=e.receivingTanf||e.receivingSsi,a=1.3*i/12,r=i/12,o=n||e.monthlyGrossIncome<=a,s=n||e.monthlyNetIncome<=r,d=(t=e.householdSize)<=0?ec[1]:t<=8?ec[t]:ec[8]+(t-8)*220,h=Math.max(0,d-Math.round(.3*e.monthlyNetIncome)),y=[p("income-verification","Income verification (pay stubs, tax return)",!0,e.monthlyGrossIncome>0),p("identity","Government-issued photo ID",!0,!0),p("residency","Proof of state residency",!0,!0),p("citizenship","Citizenship or immigration status documentation",!0,"us_citizen"===e.citizenshipStatus)],g=[];n&&g.push(u("receivingTanf","review","Categorically eligible through TANF/SSI — income test may be waived.")),o||g.push(u("monthlyGrossIncome","error",`Gross income ${l(e.monthlyGrossIncome)} exceeds 130% FPL limit of ${l(a)}/month.`)),s||g.push(u("monthlyNetIncome","warning",`Net income ${l(e.monthlyNetIncome)} exceeds 100% FPL limit of ${l(r)}/month.`)),"other"===e.citizenshipStatus&&g.push(u("citizenshipStatus","error","SNAP generally requires US citizenship or qualified alien status."));let b=[c("gross-income","Gross income test (130% FPL)",o,"error",`Monthly gross income must be at or below ${l(a)}.`),c("net-income","Net income test (100% FPL)",s,"error",`Monthly net income must be at or below ${l(r)}.`),c("citizenship","Citizenship/immigration status","other"!==e.citizenshipStatus,"error","Applicant must be a US citizen or qualified alien.")],v=o&&s;return{workflowId:"benefits/snap",domain:"benefits",title:"SNAP benefits eligibility",summary:"SNAP (food stamps) eligibility assessment and benefit estimation. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:y,answers:e,derived:{fpl:i,grossIncomeLimit:a,netIncomeLimit:r,grossIncomeTest:o,netIncomeTest:s,categoricallyEligible:n,maxAllotment:d,estimatedMonthlyBenefit:h},validation:{checks:b,flaggedFields:g},review:m("SNAP eligibility",v?"likely eligible":"may not qualify",y,g,[`Household size: ${e.householdSize}. FPL: ${l(i)}.`,`Gross income test (130% FPL): ${o?"PASS":"FAIL"}.`,`Net income test (100% FPL): ${s?"PASS":"FAIL"}.`,n?"Categorically eligible via TANF/SSI.":"",`Estimated monthly benefit: ${l(h)}.`].filter(Boolean)),outputArtifacts:f("benefits-snap",y),provenance:["workflow-registry"]}}},"benefits/section8":{summary:{id:"benefits/section8",domain:"benefits",title:"Section 8 Housing Choice Voucher",summary:"Assess Section 8 housing voucher eligibility based on income and area median income limits.",status:"active",audience:"household",tags:["section-8","housing","voucher","hud","benefits"]},inputSchema:en,starterData:{householdSize:1,annualIncome:0,state:"CA",county:"",currentHousingCost:0,isDisabled:!1,isElderly:!1,isVeteran:!1},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"},{key:"state",label:"State",type:"text"},{key:"county",label:"County",type:"text"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual household income",type:"currency"}]},{id:"housing",title:"Housing",fields:[{key:"currentHousingCost",label:"Current monthly housing cost",type:"currency"},{key:"isDisabled",label:"Disabled household member",type:"confirm"},{key:"isElderly",label:"Elderly household member (62+)",type:"confirm"},{key:"isVeteran",label:"Veteran",type:"confirm"}]}],buildBundle:function(e){let t=e.annualIncome<=3e4,i=Math.max(0,e.currentHousingCost-Math.round(.3*e.annualIncome/12)),n=[p("income-verification","Income verification",!0,e.annualIncome>0),p("identity","Government-issued photo ID",!0,!0),p("lease","Current lease agreement",!1,!1)],a=[u("waitlist","review","Most areas have multi-year waitlists for Section 8 vouchers.")];t||a.push(u("annualIncome","warning",`Annual income ${l(e.annualIncome)} exceeds 50% AMI placeholder of ${l(3e4)}.`));let r=[c("income-limit","Income below 50% AMI",t,"warning",`Annual income should be at or below ${l(3e4)} (placeholder 50% AMI).`)],o=[];return e.isDisabled&&o.push("disabled"),e.isElderly&&o.push("elderly"),e.isVeteran&&o.push("veteran"),{workflowId:"benefits/section8",domain:"benefits",title:"Section 8 Housing Choice Voucher",summary:"Section 8 eligibility assessment and voucher estimation. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:n,answers:e,derived:{amiLimit:3e4,incomeEligible:t,estimatedMonthlyVoucher:i,preferenceFactors:o},validation:{checks:r,flaggedFields:a},review:m("Section 8 eligibility",t?"income eligible — waitlist likely":"income may exceed limit",n,a,[`Household size: ${e.householdSize}. County: ${e.county}, ${e.state}.`,`Annual income: ${l(e.annualIncome)}. 50% AMI limit: ${l(3e4)}.`,`Estimated voucher value: ${l(i)}/month.`,o.length>0?`Preference factors: ${o.join(", ")}.`:"No preference factors identified."]),outputArtifacts:f("benefits-section8",n),provenance:["workflow-registry"]}}},"benefits/wic":{summary:{id:"benefits/wic",domain:"benefits",title:"WIC program eligibility",summary:"Assess WIC eligibility for women, infants, and children based on income and program enrollment.",status:"active",audience:"household",tags:["wic","nutrition","women","infants","children","benefits"]},inputSchema:ea,starterData:{applicantCategory:"child",householdSize:1,annualIncome:0,receivingMedicaid:!1,receivingSnap:!1,receivingTanf:!1},sections:[{id:"category",title:"Category",fields:[{key:"applicantCategory",label:"Applicant category",type:"select",options:[{label:"Pregnant",value:"pregnant"},{label:"Postpartum",value:"postpartum"},{label:"Infant (under 1)",value:"infant"},{label:"Child (1-4)",value:"child"}]},{key:"applicantAge",label:"Applicant age (if child)",type:"number"}]},{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual household income",type:"currency"},{key:"receivingMedicaid",label:"Currently receiving Medicaid",type:"confirm"},{key:"receivingSnap",label:"Currently receiving SNAP",type:"confirm"},{key:"receivingTanf",label:"Currently receiving TANF",type:"confirm"}]}],buildBundle:function(e){let t=ed(e.householdSize),i=1.85*t,n=e.annualIncome<=i,a=e.receivingMedicaid||e.receivingSnap||e.receivingTanf,r=[p("identity","Proof of identity",!0,!0),p("income-or-program","Income documentation or proof of program enrollment",!0,n||a),p("medical-referral","Medical/nutritional referral",!0,!1)],o=[];"child"===e.applicantCategory&&void 0!==e.applicantAge&&e.applicantAge>=5&&o.push(u("applicantAge","error","WIC child participants must be under age 5.")),a&&o.push(u("adjunctiveEligibility","review","Adjunctively eligible through Medicaid, SNAP, or TANF — income documentation may not be required.")),n||a||o.push(u("annualIncome","warning",`Annual income ${l(e.annualIncome)} exceeds 185% FPL limit of ${l(i)}.`));let s="child"===e.applicantCategory&&void 0!==e.applicantAge&&e.applicantAge>=5,d=[c("income-eligibility","Income at or below 185% FPL (or adjunctive)",n||a,"error",`Household income must be at or below ${l(i)} (185% FPL) or enrolled in qualifying program.`),c("age-check","Child under age 5",!s,"error","WIC child participants must be under 5 years old.")],h=(n||a)&&!s;return{workflowId:"benefits/wic",domain:"benefits",title:"WIC program eligibility",summary:"WIC eligibility assessment for women, infants, and children. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:r,answers:e,derived:{fpl:t,incomeLimit185:i,incomeEligible:n,adjunctivelyEligible:a,eligible:h},validation:{checks:d,flaggedFields:o},review:m("WIC eligibility",h?"likely eligible":"may not qualify",r,o,[`Category: ${e.applicantCategory}. Household size: ${e.householdSize}.`,`Annual income: ${l(e.annualIncome)}. 185% FPL limit: ${l(i)}.`,a?"Adjunctively eligible via Medicaid/SNAP/TANF.":"",void 0!==e.applicantAge?`Applicant age: ${e.applicantAge}.`:""].filter(Boolean)),outputArtifacts:f("benefits-wic",r),provenance:["workflow-registry"]}}},"benefits/liheap":{summary:{id:"benefits/liheap",domain:"benefits",title:"LIHEAP energy assistance",summary:"Assess LIHEAP eligibility for home energy assistance based on income and utility needs.",status:"active",audience:"household",tags:["liheap","energy","utility","heating","cooling","benefits"]},inputSchema:er,starterData:{householdSize:1,annualIncome:0,state:"CA",heatingSource:"",hasUtilityShutoffNotice:!1,season:"winter"},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"},{key:"state",label:"State",type:"text"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual household income",type:"currency"}]},{id:"utility",title:"Utility Information",fields:[{key:"heatingSource",label:"Primary heating source",type:"text"},{key:"hasUtilityShutoffNotice",label:"Has utility shutoff notice",type:"confirm"},{key:"season",label:"Assistance season",type:"select",options:[{label:"Winter (heating)",value:"winter"},{label:"Summer (cooling)",value:"summer"}]}]}],buildBundle:function(e){let t=ed(e.householdSize),i=1.5*t,n=e.annualIncome<=i,a=e.hasUtilityShutoffNotice?"crisis":"regular",r=[p("utility-bills","Recent utility bills",!0,!0),p("income-verification","Income verification",!0,e.annualIncome>0),p("identity","Government-issued photo ID",!0,!0)],o=[];e.hasUtilityShutoffNotice&&o.push(u("hasUtilityShutoffNotice","review","Utility shutoff notice present — crisis assistance may be available with expedited processing.")),n||o.push(u("annualIncome","warning",`Annual income ${l(e.annualIncome)} exceeds 150% FPL limit of ${l(i)}.`));let s=[c("income-eligibility","Income at or below 150% FPL",n,"error",`Household income must be at or below ${l(i)} (150% FPL).`)];return{workflowId:"benefits/liheap",domain:"benefits",title:"LIHEAP energy assistance",summary:"LIHEAP eligibility assessment for home energy assistance. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:r,answers:e,derived:{fpl:t,incomeLimit150:i,incomeEligible:n,benefitType:a,season:e.season},validation:{checks:s,flaggedFields:o},review:m("LIHEAP eligibility",n?"likely eligible":"may not qualify",r,o,[`Household size: ${e.householdSize}. State: ${e.state}.`,`Annual income: ${l(e.annualIncome)}. 150% FPL limit: ${l(i)}.`,`Heating source: ${e.heatingSource}. Season: ${e.season}.`,`Benefit type recommendation: ${a} assistance.`]),outputArtifacts:f("benefits-liheap",r),provenance:["workflow-registry"]}}},"benefits/medicaid":{summary:{id:"benefits/medicaid",domain:"benefits",title:"Medicaid eligibility assessment",summary:"MAGI-based Medicaid eligibility review with expansion state awareness and ACA marketplace guidance.",status:"active",audience:"household",tags:["medicaid","healthcare","fpl","magi","benefits","aca"]},inputSchema:eo,starterData:{householdSize:1,monthlyIncome:0,state:"CA",isPregnant:!1,hasChildren:!1,isDisabled:!1,isElderly:!1,currentInsurance:"none"},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"}]},{id:"income",title:"Income",fields:[{key:"monthlyIncome",label:"Monthly household income",type:"currency"}]},{id:"health-status",title:"Health Status",fields:[{key:"isPregnant",label:"Currently pregnant",type:"confirm"},{key:"hasChildren",label:"Has dependent children",type:"confirm"},{key:"isDisabled",label:"Disabled",type:"confirm"},{key:"isElderly",label:"Age 65 or older",type:"confirm"},{key:"currentInsurance",label:"Current insurance",type:"text"}]},{id:"state",title:"State",fields:[{key:"state",label:"State of residence",type:"text"}]}],buildBundle:function(e){let t=ed(e.householdSize),i=12*e.monthlyIncome,n=Math.round(i/t*100),a=!eu.has(e.state),r=a?138:100,o=n<=r,s=!o&&n<=400,d=[p("income-verification","Income verification",!0,e.monthlyIncome>0),p("identity","Government-issued photo ID",!0,!0),p("disability-docs","Disability documentation",e.isDisabled,e.isDisabled)],h=[];s&&h.push(u("incomeLevel","review",`Income at ${n}% FPL — above Medicaid limit but may qualify for ACA marketplace subsidies.`)),a||o||h.push(u("state","warning",`${e.state} has not expanded Medicaid. Eligibility is more limited for non-disabled adults without children.`));let y=[c("income-check","MAGI income within Medicaid limits",o,"warning",`Income at ${n}% FPL. Medicaid limit in ${e.state}: ~${r}% FPL.`)],g=o?"likely":"unlikely";return{workflowId:"benefits/medicaid",domain:"benefits",title:"Medicaid eligibility assessment",summary:"MAGI-based Medicaid eligibility review. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:d,answers:e,derived:{fpl:t,annualIncome:i,incomeAsPctFpl:n,isExpansionState:a,medicaidLimit:r,likelyEligible:o,suggestAca:s},validation:{checks:y,flaggedFields:h},review:m("Medicaid eligibility",`${g}. Income at ${n}% FPL`,d,h,[`Household size: ${e.householdSize}. State: ${e.state}.`,`Monthly income: ${l(e.monthlyIncome)}. Annual: ${l(i)}.`,`Income as % of FPL: ${n}%.`,`Expansion state: ${a?"yes":"no"}. Medicaid limit: ~${r}% FPL.`,`Medicaid eligibility: ${g}. Income at ${n}% FPL.`,s?"Consider ACA marketplace enrollment — subsidies may be available.":""].filter(Boolean)),outputArtifacts:f("benefits-medicaid",d),provenance:["workflow-registry"]}}},"benefits/ssdi-application":{summary:{id:"benefits/ssdi-application",domain:"benefits",title:"SSDI application intake",summary:"SSDI application intake with SGA screening, five-step evaluation overview, and evidence checklist.",status:"active",audience:"individual",tags:["ssdi","disability","ssa","benefits","social-security"]},inputSchema:es,starterData:{applicantName:"",disabilityOnsetDate:"",lastWorkDate:"",monthlyEarnings:0,medicalConditions:[],treatingPhysicians:[],hasBeenHospitalized:!1},sections:[{id:"work-history",title:"Work History",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"lastWorkDate",label:"Last date worked",type:"date"},{key:"monthlyEarnings",label:"Current monthly earnings",type:"currency"}]},{id:"disability-info",title:"Disability Information",fields:[{key:"disabilityOnsetDate",label:"Disability onset date",type:"date"},{key:"hasBeenHospitalized",label:"Has been hospitalized",type:"confirm"}]},{id:"medical-evidence",title:"Medical Evidence",description:"List all medical conditions and treating physicians.",fields:[]}],buildBundle:function(e){let t=e.monthlyEarnings>1620,i=[p("medical-records","Medical records for all conditions",!0,e.hasBeenHospitalized),p("work-history","Work history (SSA form)",!0,!0),p("physician-docs","Treating physician documentation",!0,e.treatingPhysicians.length>0)],n=[u("applicationOutlook","review","Most initial SSDI applications are denied — prepare for appeals process.")];t&&n.push(u("monthlyEarnings","error",`Current monthly earnings of ${l(e.monthlyEarnings)} exceed the 2025 SGA limit of ${l(1620)}.`));let a=[c("sga-check","Earnings below SGA",!t,"error",`Monthly earnings must be at or below ${l(1620)} (2025 SGA limit).`),c("medical-conditions","Medical conditions documented",e.medicalConditions.length>0,"error","At least one medical condition must be documented."),c("treating-physicians","Treating physicians identified",e.treatingPhysicians.length>0,"warning","At least one treating physician should be identified.")],r=[`Step 1 — SGA: ${t?"FAIL (earnings above SGA)":"PASS (earnings at or below SGA)"}`,`Step 2 — Severity: ${e.medicalConditions.length} condition(s) reported.`,"Step 3 — Listings: requires SSA medical review (not assessed here).","Step 4 — Past work: requires vocational analysis (not assessed here).","Step 5 — Other work: requires vocational analysis (not assessed here)."];return{workflowId:"benefits/ssdi-application",domain:"benefits",title:"SSDI application intake",summary:"SSDI application intake with SGA check and five-step evaluation summary. PigeonGov does not submit claims.",applicant:void 0,household:[],evidence:i,answers:e,derived:{sgaLimit:1620,aboveSga:t,conditionCount:e.medicalConditions.length,physicianCount:e.treatingPhysicians.length,fiveStepSummary:r},validation:{checks:a,flaggedFields:n},review:m("SSDI application",t?"SGA exceeded — likely ineligible":"SGA within limits — further review needed",i,n,[`Applicant: ${e.applicantName}.`,`Disability onset: ${e.disabilityOnsetDate}. Last worked: ${e.lastWorkDate}.`,`Monthly earnings: ${l(e.monthlyEarnings)}. SGA limit: ${l(1620)}.`,`Conditions: ${e.medicalConditions.join(", ")}.`,`Treating physicians: ${e.treatingPhysicians.join(", ")}.`,...r]),outputArtifacts:f("benefits-ssdi-application",i),provenance:["workflow-registry"]}}}},em=n.Ikc({name:n.YjP().trim().min(1),serviceConnected:n.zMY(),currentSeverity:n.k5n(["mild","moderate","severe"])}).strict(),ef={"veterans/disability-claim":{summary:{id:"veterans/disability-claim",domain:"veterans",title:"VA disability compensation claim",summary:"Build a VA disability claim with combined rating estimation using VA math and evidence checklist.",status:"active",audience:"individual",tags:["va","disability","veterans","compensation","rating"]},inputSchema:n.Ikc({veteranName:n.YjP().trim().min(1),serviceStartDate:n.YjP().trim().min(1),serviceEndDate:n.YjP().trim().min(1),dischargeType:n.YjP().trim().min(1),conditions:n.YOg(em).min(1),hasBuddyStatements:n.zMY().default(!1),hasMedicalRecords:n.zMY().default(!1)}).strict(),starterData:{veteranName:"",serviceStartDate:"",serviceEndDate:"",dischargeType:"honorable",conditions:[],hasBuddyStatements:!1,hasMedicalRecords:!1},sections:[{id:"service-info",title:"Service Information",fields:[{key:"veteranName",label:"Veteran name",type:"text"},{key:"serviceStartDate",label:"Service start date",type:"date"},{key:"serviceEndDate",label:"Service end date",type:"date"},{key:"dischargeType",label:"Discharge type",type:"text"}]},{id:"conditions",title:"Conditions",description:"List all conditions being claimed for service connection.",fields:[{key:"hasMedicalRecords",label:"Medical records available",type:"confirm"},{key:"hasBuddyStatements",label:"Buddy statements available",type:"confirm"}]},{id:"evidence",title:"Evidence",fields:[]}],buildBundle:function(e){let t=e.conditions.filter(e=>e.serviceConnected).map(e=>(function(e){switch(e){case"mild":return 10;case"moderate":return 30;case"severe":return 50}})(e.currentSeverity)),i=function(e){if(0===e.length)return 0;let t=[...e].sort((e,t)=>t-e),i=100;for(let e of t)i*=1-e/100;return 10*Math.round((100-i)/10)}(t),n=e.dischargeType.toLowerCase().includes("dishonorable"),a=[p("dd214","DD-214 (Certificate of Release or Discharge)",!0,!0),p("service-medical","Service medical records",!0,e.hasMedicalRecords),p("va-medical","VA medical records",!0,e.hasMedicalRecords),p("buddy-statements","Buddy statements / lay evidence",!1,e.hasBuddyStatements),p("nexus-letters","Nexus letters (medical opinion linking condition to service)",!0,!1,"Nexus letters from physicians are strongly recommended for service connection claims.")],r=[];n&&r.push(u("dischargeType","error","Dishonorable discharge generally bars eligibility for VA disability compensation.")),e.hasMedicalRecords||r.push(u("hasMedicalRecords","warning","Missing medical records — obtain service treatment records and current medical evidence.")),r.push(u("nexusLetters","warning","Nexus letters linking conditions to service are critical for claim success."));let o=[c("discharge-type","Eligible discharge type",!n,"error","Dishonorable discharge bars VA benefits eligibility."),c("medical-records","Medical records available",e.hasMedicalRecords,"warning","Medical records are essential for disability evaluation."),c("conditions-documented","Conditions documented",e.conditions.length>0,"error","At least one condition must be claimed.")],s=e.conditions.filter(e=>e.serviceConnected).length;return{workflowId:"veterans/disability-claim",domain:"veterans",title:"VA disability compensation claim",summary:"VA disability claim intake with combined rating estimation. PigeonGov does not file VA claims.",applicant:void 0,household:[],evidence:a,answers:e,derived:{individualRatings:t,estimatedCombinedRating:i,serviceConnectedCount:s,totalConditions:e.conditions.length,isDishonorable:n},validation:{checks:o,flaggedFields:r},review:m("VA disability claim",n?"ineligible — dishonorable discharge":`${s} service-connected condition(s)`,a,r,[`Veteran: ${e.veteranName}. Service: ${e.serviceStartDate} to ${e.serviceEndDate}.`,`Discharge type: ${e.dischargeType}.`,`Disability claim for ${e.conditions.length} condition(s). ${s} service-connected.`,`Estimated combined rating: ${i}%.`,`Individual ratings: ${t.map(e=>`${e}%`).join(", ")||"none (no service-connected conditions)"}.`]),outputArtifacts:f("veterans-disability-claim",a),provenance:["workflow-registry"]}}},"veterans/gi-bill":{summary:{id:"veterans/gi-bill",domain:"veterans",title:"Post-9/11 GI Bill benefits",summary:"Estimate GI Bill entitlement, monthly housing allowance, and remaining benefits months.",status:"active",audience:"individual",tags:["va","gi-bill","education","veterans","housing-allowance"]},inputSchema:n.Ikc({veteranName:n.YjP().trim().min(1),serviceType:n.k5n(["active","reserve","guard"]),totalServiceMonths:n.auy.number().int().nonnegative(),postServiceMonths:n.auy.number().int().nonnegative(),schoolName:n.YjP().trim().min(1),programType:n.k5n(["undergraduate","graduate","vocational"]),zipCode:n.YjP().trim().min(5),monthsUsed:n.auy.number().int().nonnegative().default(0)}).strict(),starterData:{veteranName:"",serviceType:"active",totalServiceMonths:0,postServiceMonths:0,schoolName:"",programType:"undergraduate",zipCode:"",monthsUsed:0},sections:[{id:"service-info",title:"Service Information",fields:[{key:"veteranName",label:"Veteran name",type:"text"},{key:"serviceType",label:"Service type",type:"select",options:[{label:"Active duty",value:"active"},{label:"Reserve",value:"reserve"},{label:"National Guard",value:"guard"}]},{key:"totalServiceMonths",label:"Total months of service",type:"number"},{key:"postServiceMonths",label:"Months since separation",type:"number"}]},{id:"school-selection",title:"School Selection",fields:[{key:"schoolName",label:"School name",type:"text"},{key:"programType",label:"Program type",type:"select",options:[{label:"Undergraduate",value:"undergraduate"},{label:"Graduate",value:"graduate"},{label:"Vocational / trade",value:"vocational"}]},{key:"zipCode",label:"School ZIP code",type:"text"}]},{id:"benefits",title:"Benefits",fields:[{key:"monthsUsed",label:"Months of entitlement already used",type:"number"}]}],buildBundle:function(e){let t=Math.max(0,36-e.monthsUsed),i=Math.round(1e3/12),n=[p("dd214","DD-214 (Certificate of Release or Discharge)",!0,!0),p("school-acceptance","School acceptance letter",!0,!1)],a=[];t<=3&&a.push(u("monthsUsed","warning",`Only ${t} month(s) of GI Bill entitlement remaining.`)),"active"!==e.serviceType&&e.totalServiceMonths<36&&a.push(u("serviceType","review","Reserve/Guard members may receive partial benefits based on aggregate active duty time."));let r=[c("entitlement-remaining","Entitlement months remaining",t>0,"error","No GI Bill entitlement months remaining."),c("service-duration","Minimum service requirement",e.totalServiceMonths>=6,"warning","At least 6 months of qualifying service is typically required.")];return{workflowId:"veterans/gi-bill",domain:"veterans",title:"Post-9/11 GI Bill benefits",summary:"GI Bill benefit estimation including housing allowance and remaining entitlement. PigeonGov does not file VA education claims.",applicant:void 0,household:[],evidence:n,answers:e,derived:{maxEntitlementMonths:36,monthsRemaining:t,estimatedMonthlyHousingAllowance:1800,bookStipendAnnual:1e3,bookStipendMonthly:i,programType:e.programType},validation:{checks:r,flaggedFields:a},review:m("GI Bill benefits",`${t} months remaining`,n,a,[`Veteran: ${e.veteranName}. Service type: ${e.serviceType}.`,`Total service: ${e.totalServiceMonths} months. Post-service: ${e.postServiceMonths} months.`,`School: ${e.schoolName}. Program: ${e.programType}. ZIP: ${e.zipCode}.`,`GI Bill benefits: ${t} months remaining. Estimated monthly housing: ${l(1800)}.`,`Book stipend: ${l(1e3)}/year.`]),outputArtifacts:f("veterans-gi-bill",n),provenance:["workflow-registry"]}}},"veterans/va-healthcare":{summary:{id:"veterans/va-healthcare",domain:"veterans",title:"VA healthcare enrollment",summary:"Determine VA healthcare priority group and estimate copay obligations based on service and income.",status:"active",audience:"individual",tags:["va","healthcare","veterans","priority-group","enrollment"]},inputSchema:n.Ikc({veteranName:n.YjP().trim().min(1),disabilityRating:n.auy.number().int().nonnegative().default(0),annualIncome:n.auy.number().nonnegative(),hasServiceConnectedDisability:n.zMY().default(!1),receivingVaPension:n.zMY().default(!1),hasCombatService:n.zMY().default(!1)}).strict(),starterData:{veteranName:"",disabilityRating:0,annualIncome:0,hasServiceConnectedDisability:!1,receivingVaPension:!1,hasCombatService:!1},sections:[{id:"service-info",title:"Service Information",fields:[{key:"veteranName",label:"Veteran name",type:"text"},{key:"hasCombatService",label:"Has combat service",type:"confirm"}]},{id:"health-income",title:"Health & Income",fields:[{key:"disabilityRating",label:"VA disability rating (%)",type:"number"},{key:"hasServiceConnectedDisability",label:"Has service-connected disability",type:"confirm"},{key:"receivingVaPension",label:"Receiving VA pension",type:"confirm"},{key:"annualIncome",label:"Annual income",type:"currency"}]}],buildBundle:function(e){var t;let i=e.hasServiceConnectedDisability&&e.disabilityRating>=50?{group:1,label:"50%+ service-connected disability"}:e.hasServiceConnectedDisability&&e.disabilityRating>=30?{group:2,label:"30-40% service-connected disability"}:e.hasServiceConnectedDisability&&e.disabilityRating>=10?{group:3,label:"10-20% service-connected disability"}:e.hasCombatService?{group:4,label:"Combat veteran (enhanced enrollment for 10 years post-combat)"}:e.receivingVaPension||e.annualIncome<35e3?{group:5,label:"Low income or receiving VA pension"}:e.annualIncome<5e4?{group:6,label:"Below geographic means test threshold"}:e.annualIncome<8e4?{group:7,label:"Above means test, agrees to copay"}:{group:8,label:"Above means test, no service-connected disability"},n=(t=i.group)<=3?0:t<=5?15:50,a=[p("dd214","DD-214 (Certificate of Release or Discharge)",!0,!0),p("income-verification","Income verification",!0,e.annualIncome>0),p("disability-rating","Disability rating documentation",e.hasServiceConnectedDisability,e.hasServiceConnectedDisability)],r=[];i.group>=7&&r.push(u("priorityGroup","review",`Priority Group ${i.group} — enrollment may be subject to available resources and copay requirements.`));let o=[c("income-documented","Income documented",e.annualIncome>0,"warning","Income documentation helps determine priority group and copay obligations.")];return{workflowId:"veterans/va-healthcare",domain:"veterans",title:"VA healthcare enrollment",summary:"VA healthcare priority group determination and copay estimation. PigeonGov does not enroll veterans in VA healthcare.",applicant:void 0,household:[],evidence:a,answers:e,derived:{priorityGroup:i.group,priorityGroupLabel:i.label,copayPerVisit:n,hasServiceConnectedDisability:e.hasServiceConnectedDisability,disabilityRating:e.disabilityRating},validation:{checks:o,flaggedFields:r},review:m("VA Healthcare enrollment",`Priority Group ${i.group}`,a,r,[`Veteran: ${e.veteranName}. Disability rating: ${e.disabilityRating}%.`,`VA Healthcare: Priority Group ${i.group}. ${i.label}.`,`VA Healthcare: Priority Group ${i.group}. Copay: ${l(n)} per visit.`]),outputArtifacts:f("veterans-va-healthcare",a),provenance:["workflow-registry"]}}}},eh={"legal/small-claims":{summary:{id:"legal/small-claims",domain:"legal",title:"Small claims court filing",summary:"Prepare a small claims case with filing fee estimate, evidence checklist, and statute of limitations check.",status:"active",audience:"individual",tags:["legal","small-claims","court","filing","dispute"]},inputSchema:n.Ikc({plaintiffName:n.YjP().trim().min(1),defendantName:n.YjP().trim().min(1),state:h,claimAmount:n.auy.number().positive(),claimType:n.k5n(["money-owed","property-damage","contract","deposit","other"]),incidentDate:n.YjP().trim().min(1),hasEvidence:n.zMY().default(!1)}).strict(),starterData:{plaintiffName:"",defendantName:"",state:"CA",claimAmount:0,claimType:"money-owed",incidentDate:"",hasEvidence:!1},sections:[{id:"claim-details",title:"Claim Details",fields:[{key:"claimAmount",label:"Claim amount",type:"currency"},{key:"claimType",label:"Claim type",type:"select",options:[{label:"Money owed",value:"money-owed"},{label:"Property damage",value:"property-damage"},{label:"Contract dispute",value:"contract"},{label:"Security deposit",value:"deposit"},{label:"Other",value:"other"}]},{key:"incidentDate",label:"Incident date",type:"date"},{key:"state",label:"State",type:"text"}]},{id:"parties",title:"Parties",fields:[{key:"plaintiffName",label:"Plaintiff (your name)",type:"text"},{key:"defendantName",label:"Defendant name",type:"text"}]},{id:"evidence",title:"Evidence",fields:[{key:"hasEvidence",label:"Has supporting evidence",type:"confirm"}]}],buildBundle:function(e){var t;let i=(t=e.claimAmount)<=2500?30:t<=5e3?50:75,n=e.claimAmount>1e4,a=e.incidentDate?new Date(e.incidentDate):null,r=new Date,o=a?Math.floor((r.getTime()-a.getTime())/864e5):0,s=a?o/365.25:0,d=!!a&&s>2,h=[p("receipts","Receipts or invoices",!1,e.hasEvidence),p("contracts","Contracts or written agreements",!1,e.hasEvidence),p("photos","Photographs of damage or condition",!1,!1),p("correspondence","Correspondence (emails, texts, letters)",!1,!1),p("witness-info","Witness contact information",!1,!1)],y=[];n&&y.push(u("claimAmount","warning",`Claim of ${l(e.claimAmount)} exceeds typical small claims limit of ${l(1e4)}. Check ${e.state} specific limits ($5,000-$25,000 depending on state).`)),d&&y.push(u("incidentDate","warning",`Incident occurred ~${Math.round(10*s)/10} years ago. Many states have 2-3 year statutes of limitations for small claims. Verify ${e.state} statute.`));let g=[c("claim-amount","Claim within typical limits",!n,"warning",`Check ${e.state} small claims dollar limit.`),c("defendant-identified","Defendant identified",e.defendantName.trim().length>0,"error","Defendant must be identified to file a small claims case."),c("evidence-available","Some evidence available",e.hasEvidence,"warning","Gather supporting evidence before filing.")];return{workflowId:"legal/small-claims",domain:"legal",title:"Small claims court filing",summary:"Small claims case preparation with filing fee estimate and evidence checklist. PigeonGov does not file court documents.",applicant:void 0,household:[],evidence:h,answers:e,derived:{estimatedFilingFee:i,typicalDollarLimit:1e4,exceedsLimit:n,daysSinceIncident:o,yearsElapsed:Math.round(10*s)/10,possibleStatuteOfLimitationsConcern:d},validation:{checks:g,flaggedFields:y},review:m("Small claims case",n?"claim may exceed small claims limit":"within typical limits",h,y,[`${e.plaintiffName} v. ${e.defendantName}. State: ${e.state}.`,`Claim type: ${e.claimType}. Amount: ${l(e.claimAmount)}.`,`Incident date: ${e.incidentDate}. ~${Math.round(10*s)/10} years ago.`,`Estimated filing fee: ${l(i)}.`]),outputArtifacts:f("legal-small-claims",h),provenance:["workflow-registry"]}}},"legal/expungement":{summary:{id:"legal/expungement",domain:"legal",title:"Criminal record expungement",summary:"Assess expungement eligibility with waiting period estimation and documentation requirements.",status:"active",audience:"individual",tags:["legal","expungement","criminal-record","court"]},inputSchema:n.Ikc({applicantName:n.YjP().trim().min(1),state:h,offenseType:n.k5n(["misdemeanor","felony","infraction"]),offenseDate:n.YjP().trim().min(1),sentenceCompletionDate:n.YjP().trim().min(1),hasCompletedProbation:n.zMY().default(!1),subsequentOffenses:n.auy.number().int().nonnegative().default(0)}).strict(),starterData:{applicantName:"",state:"CA",offenseType:"misdemeanor",offenseDate:"",sentenceCompletionDate:"",hasCompletedProbation:!1,subsequentOffenses:0},sections:[{id:"offense-info",title:"Offense Information",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"state",label:"State",type:"text"},{key:"offenseType",label:"Offense type",type:"select",options:[{label:"Infraction",value:"infraction"},{label:"Misdemeanor",value:"misdemeanor"},{label:"Felony",value:"felony"}]},{key:"offenseDate",label:"Offense date",type:"date"}]},{id:"eligibility",title:"Eligibility",fields:[{key:"sentenceCompletionDate",label:"Sentence completion date",type:"date"},{key:"hasCompletedProbation",label:"Has completed probation",type:"confirm"},{key:"subsequentOffenses",label:"Number of subsequent offenses",type:"number"}]},{id:"documentation",title:"Documentation",description:"Gather court records and proof of sentence completion.",fields:[]}],buildBundle:function(e){let t=function(e){switch(e){case"infraction":return{years:1,label:"~1 year from completion (varies by state)"};case"misdemeanor":return{years:3,label:"~3 years from sentence completion (varies by state)"};case"felony":return{years:7,label:"~5-7 years from sentence completion (varies by state)"}}}(e.offenseType),i=e.sentenceCompletionDate?new Date(e.sentenceCompletionDate):null,n=new Date,a=i?(n.getTime()-i.getTime())/315576e5:0,r=!!i&&a>=t.years,o=e.subsequentOffenses>0,s=[p("court-records","Court records of original case",!0,!0),p("sentence-completion","Proof of sentence completion",!0,e.hasCompletedProbation),p("character-references","Character references",!1,!1)],l=[];"felony"===e.offenseType&&l.push(u("offenseType","review","Felony expungement has stricter requirements in most states. Some felonies are ineligible for expungement.")),o&&l.push(u("subsequentOffenses","warning",`${e.subsequentOffenses} subsequent offense(s) on record — may disqualify expungement in many jurisdictions.`)),r||l.push(u("sentenceCompletionDate","warning",`Waiting period may not be met. ~${Math.round(10*a)/10} years since completion; estimated requirement: ${t.years} years.`));let d=[c("probation-complete","Probation/sentence completed",e.hasCompletedProbation,"error","Sentence and probation must be fully completed before expungement."),c("waiting-period","Waiting period likely met",r,"warning",`Estimated waiting period: ${t.label}.`),c("subsequent-offenses","No subsequent offenses",!o,"warning","Subsequent offenses may disqualify expungement.")],h=r&&e.hasCompletedProbation&&!o?"potentially eligible":"eligibility uncertain — review factors above";return{workflowId:"legal/expungement",domain:"legal",title:"Criminal record expungement",summary:"Expungement eligibility assessment with waiting period estimate. PigeonGov does not file legal petitions.",applicant:void 0,household:[],evidence:s,answers:e,derived:{waitingPeriodYears:t.years,waitingPeriodLabel:t.label,yearsSinceCompletion:Math.round(10*a)/10,waitingPeriodMet:r,hasSubsequentOffenses:o,eligibilityAssessment:h},validation:{checks:d,flaggedFields:l},review:m("Expungement eligibility",h,s,l,[`Applicant: ${e.applicantName}. State: ${e.state}.`,`Offense type: ${e.offenseType}. Date: ${e.offenseDate}.`,`Sentence completed: ${e.sentenceCompletionDate}. Years since: ~${Math.round(10*a)/10}.`,`Estimated waiting period: ${t.label}.`,`Subsequent offenses: ${e.subsequentOffenses}.`,`Assessment: ${h}.`]),outputArtifacts:f("legal-expungement",s),provenance:["workflow-registry"]}}},"legal/child-support-modification":{summary:{id:"legal/child-support-modification",domain:"legal",title:"Child support modification petition",summary:"Assess whether changed circumstances meet the modification threshold for child support orders.",status:"active",audience:"individual",tags:["legal","child-support","modification","family-law"]},inputSchema:n.Ikc({petitionerName:n.YjP().trim().min(1),currentOrderAmount:n.auy.number().nonnegative(),currentIncome:n.auy.number().nonnegative(),previousIncome:n.auy.number().nonnegative(),reason:n.k5n(["income-change","custody-change","child-needs-change"]),state:h,numberOfChildren:n.auy.number().int().positive()}).strict(),starterData:{petitionerName:"",currentOrderAmount:0,currentIncome:0,previousIncome:0,reason:"income-change",state:"CA",numberOfChildren:1},sections:[{id:"current-order",title:"Current Order",fields:[{key:"petitionerName",label:"Petitioner name",type:"text"},{key:"currentOrderAmount",label:"Current monthly support amount",type:"currency"},{key:"numberOfChildren",label:"Number of children",type:"number"},{key:"state",label:"State",type:"text"}]},{id:"changed-circumstances",title:"Changed Circumstances",fields:[{key:"previousIncome",label:"Previous income (at time of order)",type:"currency"},{key:"currentIncome",label:"Current income",type:"currency"},{key:"reason",label:"Reason for modification",type:"select",options:[{label:"Income change",value:"income-change"},{label:"Custody change",value:"custody-change"},{label:"Child needs change",value:"child-needs-change"}]}]},{id:"documentation",title:"Documentation",description:"Gather the current order, income records, and proof of changed circumstances.",fields:[]}],buildBundle:function(e){let t=e.currentIncome-e.previousIncome,i=e.previousIncome>0?Math.round(100*Math.abs(t/e.previousIncome)):100,n=i>=15,a=[p("current-order","Current child support order",!0,!0),p("income-docs","Income documentation (pay stubs, tax returns)",!0,e.currentIncome>0),p("changed-circumstances","Proof of changed circumstances",!0,!1)],r=[];n||r.push(u("incomeChange","warning",`Income change of ${i}% may not meet the typical 15% threshold for modification in most states.`)),"child-needs-change"===e.reason&&r.push(u("reason","review","Child needs-based modifications may require medical or educational documentation."));let o=[c("income-change-threshold","Income change meets threshold",n,"warning","Most states require at least a 15% change in income for modification."),c("current-order","Current order documented",!0,"error","The current support order must be documented.")];return{workflowId:"legal/child-support-modification",domain:"legal",title:"Child support modification petition",summary:"Child support modification assessment with income change analysis. PigeonGov does not file legal petitions.",applicant:void 0,household:[],evidence:a,answers:e,derived:{incomeChangeAmount:t,incomeChangePct:i,modificationThreshold:15,meetsThreshold:n,incomeDirection:t>=0?"increase":"decrease"},validation:{checks:o,flaggedFields:r},review:m("Child support modification",n?"change likely meets threshold":"change may be below threshold",a,r,[`Petitioner: ${e.petitionerName}. State: ${e.state}.`,`Current order: ${l(e.currentOrderAmount)}/month. Children: ${e.numberOfChildren}.`,`Previous income: ${l(e.previousIncome)}. Current income: ${l(e.currentIncome)}.`,`Income change: ${i}% (${t>=0?"increase":"decrease"}). Threshold: 15%.`,`Reason: ${e.reason}.`]),outputArtifacts:f("legal-child-support-modification",a),provenance:["workflow-registry"]}}}},ey=n.Ikc({description:n.YjP().trim().min(1),estimatedValue:n.auy.number().nonnegative(),beneficiary:n.YjP().trim().min(1)}).strict(),eg=n.Ikc({name:n.YjP().trim().min(1),age:n.auy.number().int().nonnegative(),isMinor:n.zMY()}).strict(),eb=n.Ikc({name:n.YjP().trim().min(1),relationship:n.YjP().trim().min(1)}).strict(),ev=n.Ikc({testatorName:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),maritalStatus:n.k5n(["single","married","divorced","widowed"]),children:n.YOg(eg).default([]),assets:n.YOg(ey).default([]),executor:eb,alternateExecutor:eb.optional(),guardianForMinors:n.YjP().trim().optional()}).strict(),ew=n.Ikc({principalName:n.YjP().trim().min(1),agentName:n.YjP().trim().min(1),type:n.k5n(["durable","springing","healthcare","financial"]),state:n.YjP().trim().regex(/^[A-Z]{2}$/),powers:n.YOg(n.YjP().trim().min(1)).min(1),effectiveDate:n.YjP().trim().optional()}).strict(),ek=n.Ikc({lifeSupport:n.zMY(),feedingTube:n.zMY(),painManagement:n.zMY(),organDonation:n.zMY()}).strict(),eS=n.Ikc({name:n.YjP().trim().min(1),relationship:n.YjP().trim().min(1)}).strict(),ex=n.Ikc({principalName:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),preferences:ek,healthcareAgent:eS,alternateAgent:eS.optional()}).strict(),ez={"estate/basic-will":{summary:{id:"estate/basic-will",domain:"estate",title:"Basic will planner",summary:"Plan asset distribution, executor selection, and guardian designation for a basic last will and testament.",status:"active",audience:"individual",tags:["will","estate","executor","guardian","probate"]},inputSchema:ev,starterData:{testatorName:"",state:"CA",maritalStatus:"single",children:[],assets:[],executor:{name:"",relationship:""}},sections:[{id:"personal-information",title:"Personal Information",fields:[{key:"testatorName",label:"Your full legal name (testator)",type:"text"},{key:"state",label:"State of residence",type:"text"},{key:"maritalStatus",label:"Marital status",type:"select",options:[{label:"Single",value:"single"},{label:"Married",value:"married"},{label:"Divorced",value:"divorced"},{label:"Widowed",value:"widowed"}]}]},{id:"assets-beneficiaries",title:"Assets & Beneficiaries",description:"List each asset with its estimated value and intended beneficiary.",fields:[{key:"assets",label:"Assets",type:"textarea",helpText:"Enter each asset's description, estimated value, and beneficiary."}]},{id:"executor-guardian",title:"Executor & Guardian",fields:[{key:"executor.name",label:"Executor name",type:"text"},{key:"executor.relationship",label:"Executor relationship",type:"text"},{key:"alternateExecutor.name",label:"Alternate executor name (optional)",type:"text"},{key:"guardianForMinors",label:"Guardian for minor children (if applicable)",type:"text"}]},{id:"state-requirements",title:"State Requirements",description:"Witness and notarisation requirements vary by state.",fields:[]}],buildBundle(e){var t;let i,n,a=e.children.some(e=>e.isMinor),r=e.assets.reduce((e,t)=>e+t.estimatedValue,0),o=new Set(e.assets.map(e=>e.beneficiary)),s=(t=e.state,i=new Set(["VT"]),n=new Set(["LA","CO","IN","NH"]),{witnesses:i.has(t)?3:2,notarizationRecommended:n.has(t)}),d=[p("asset-docs","Asset documentation (titles, deeds, account statements)",!1,e.assets.length>0),p("current-will","Current will (if updating)",!1,!1)],h=[u("general","review","This is a planning tool, not a legal document. Consult an attorney to draft and execute your will.")];a&&!e.guardianForMinors&&h.push(u("guardianForMinors","warning","You have minor children but no guardian designated. Strongly recommended.")),r>5e5&&h.push(u("assets","review",`Estate value (${l(r)}) may benefit from trust planning or more sophisticated estate tools. Consult an estate attorney.`));let y=[c("testator-name","Testator name provided",e.testatorName.trim().length>0,"error","Your full legal name is required."),c("executor-named","Executor named",e.executor.name.trim().length>0,"error","An executor must be named to administer the estate."),c("assets-listed","At least one asset listed",e.assets.length>0,"warning","List your assets to plan distribution.")];return{workflowId:"estate/basic-will",domain:"estate",title:"Basic will planner",summary:"Will planning bundle. This is NOT a legal document — consult an attorney.",applicant:void 0,household:e.children.map(e=>({name:e.name,relationship:"child",age:e.age,notes:e.isMinor?"Minor":void 0})),evidence:d,answers:e,derived:{totalEstateValue:r,assetCount:e.assets.length,beneficiaryCount:o.size,hasMinorChildren:a,witnessesRequired:s.witnesses,notarizationRecommended:s.notarizationRecommended,hasAlternateExecutor:!!e.alternateExecutor,hasGuardian:!!e.guardianForMinors},validation:{checks:y,flaggedFields:h},review:m("Will plan",`${e.assets.length} assets, ${o.size} beneficiaries`,d,h,[`Will plan for ${e.testatorName||"?"}. ${e.assets.length} assets, ${o.size} beneficiaries.`,`Executor: ${e.executor.name||"?"}${e.alternateExecutor?` (alternate: ${e.alternateExecutor.name})`:""}.`,`State: ${e.state} — ${s.witnesses} witnesses required${s.notarizationRecommended?", notarisation recommended":""}.`,"Attorney review recommended."]),outputArtifacts:f("estate-basic-will",d),provenance:["workflow-registry"]}}},"estate/power-of-attorney":{summary:{id:"estate/power-of-attorney",domain:"estate",title:"Power of attorney planner",summary:"Select POA type, define granted powers, and understand state-specific requirements for durable, springing, healthcare, or financial powers of attorney.",status:"active",audience:"individual",tags:["poa","power-of-attorney","estate","durable","healthcare"]},inputSchema:ew,starterData:{principalName:"",agentName:"",type:"durable",state:"CA",powers:["financial management","property transactions","legal matters"]},sections:[{id:"principal-agent",title:"Principal & Agent",fields:[{key:"principalName",label:"Principal (you)",type:"text"},{key:"agentName",label:"Agent (person receiving authority)",type:"text"}]},{id:"powers",title:"Powers",fields:[{key:"powers",label:"Powers granted",type:"textarea",helpText:"List specific powers: financial management, property transactions, healthcare decisions, etc."}]},{id:"type-selection",title:"Type Selection",fields:[{key:"type",label:"POA type",type:"select",options:[{label:"Durable (survives incapacity)",value:"durable"},{label:"Springing (activates on condition)",value:"springing"},{label:"Healthcare",value:"healthcare"},{label:"Financial",value:"financial"}]},{key:"effectiveDate",label:"Effective date (optional — immediate if blank)",type:"date"},{key:"state",label:"State",type:"text"}]}],buildBundle(e){let t,i=[p("principal-id","Principal identity document",!0,!1),p("agent-id","Agent identity document",!0,!1)],n=[];"springing"===e.type&&n.push(u("type","warning","Springing POA may be harder to use in practice — the agent must prove the triggering condition (typically incapacity) has occurred, which can cause delays in emergencies.")),t=e.powers.some(e=>e.toLowerCase().includes("healthcare")||e.toLowerCase().includes("medical"))&&"healthcare"!==e.type?"Consider a separate healthcare POA / advance directive for medical decisions.":"durable"===e.type?"Durable POA is the most common choice — remains effective if you become incapacitated.":"healthcare"===e.type?"Healthcare POA grants authority for medical decisions. Consider pairing with an advance directive.":"financial"===e.type?"Financial POA is limited to financial and property matters.":"Springing POA activates only when a specified condition is met.";let a=[c("principal-name","Principal name provided",e.principalName.trim().length>0,"error","The principal's legal name is required."),c("agent-name","Agent name provided",e.agentName.trim().length>0,"error","The agent's legal name is required."),c("powers-defined","Powers defined",e.powers.length>0,"error","At least one power must be granted.")];return{workflowId:"estate/power-of-attorney",domain:"estate",title:"Power of attorney planner",summary:"POA planning bundle. This is NOT a legal document — consult an attorney.",applicant:void 0,household:[],evidence:i,answers:e,derived:{poaType:e.type,powersCount:e.powers.length,recommendedType:t,isImmediate:!e.effectiveDate,stateFormNote:`Check ${e.state} statutory form requirements — many states have specific POA forms.`},validation:{checks:a,flaggedFields:n},review:m("Power of attorney",`${e.type} POA — ${e.powers.length} powers`,i,n,[`${e.type.charAt(0).toUpperCase()+e.type.slice(1)} POA: ${e.principalName||"?"} grants authority to ${e.agentName||"?"}.`,`${e.powers.length} powers defined.`,t]),outputArtifacts:f("estate-power-of-attorney",i),provenance:["workflow-registry"]}}},"estate/advance-directive":{summary:{id:"estate/advance-directive",domain:"estate",title:"Advance directive planner",summary:"Document healthcare preferences, designate a healthcare agent, and create a distribution plan for your advance directive.",status:"active",audience:"individual",tags:["advance-directive","living-will","healthcare-proxy","estate","end-of-life"]},inputSchema:ex,starterData:{principalName:"",state:"CA",preferences:{lifeSupport:!1,feedingTube:!1,painManagement:!0,organDonation:!1},healthcareAgent:{name:"",relationship:""}},sections:[{id:"healthcare-preferences",title:"Healthcare Preferences",fields:[{key:"preferences.lifeSupport",label:"Accept life-sustaining treatment",type:"confirm"},{key:"preferences.feedingTube",label:"Accept artificial nutrition/hydration",type:"confirm"},{key:"preferences.painManagement",label:"Prioritise comfort/pain management",type:"confirm"},{key:"preferences.organDonation",label:"Organ donation",type:"confirm"}]},{id:"agent-selection",title:"Agent Selection",fields:[{key:"healthcareAgent.name",label:"Healthcare agent name",type:"text"},{key:"healthcareAgent.relationship",label:"Relationship",type:"text"},{key:"alternateAgent.name",label:"Alternate agent name (recommended)",type:"text"},{key:"alternateAgent.relationship",label:"Alternate agent relationship",type:"text"}]},{id:"distribution",title:"Distribution",description:"Who should receive copies of your advance directive.",fields:[]}],buildBundle(e){let t=[],i=[];e.alternateAgent||i.push(u("alternateAgent","review","No alternate healthcare agent designated. Consider naming one in case your primary agent is unavailable."));let n=[{recipient:"Primary care physician",distributed:!1},{recipient:"Hospital / healthcare system",distributed:!1},{recipient:`Healthcare agent: ${e.healthcareAgent.name||"?"}`,distributed:!1},...e.alternateAgent?[{recipient:`Alternate agent: ${e.alternateAgent.name}`,distributed:!1}]:[],{recipient:"Family members",distributed:!1},{recipient:"Attorney (if applicable)",distributed:!1}],a=[`Life support: ${e.preferences.lifeSupport?"accept":"decline"}.`,`Artificial nutrition/hydration: ${e.preferences.feedingTube?"accept":"decline"}.`,`Pain management priority: ${e.preferences.painManagement?"yes":"no"}.`,`Organ donation: ${e.preferences.organDonation?"yes":"no"}.`],r=[c("principal-name","Your name provided",e.principalName.trim().length>0,"error","Your legal name is required."),c("agent-name","Healthcare agent named",e.healthcareAgent.name.trim().length>0,"error","A healthcare agent must be designated.")];return{workflowId:"estate/advance-directive",domain:"estate",title:"Advance directive planner",summary:"Advance directive planning bundle. This is NOT a legal document — consult an attorney or use your state's statutory form.",applicant:void 0,household:[],evidence:t,answers:e,derived:{distributionChecklist:n,preferencesSummary:a,hasAlternateAgent:!!e.alternateAgent,stateFormNote:`Use ${e.state}'s statutory advance directive form for legal validity.`},validation:{checks:r,flaggedFields:i},review:{headline:`Advance directive for ${e.principalName||"?"}. Healthcare agent: ${e.healthcareAgent.name||"?"}. Key preferences documented.`,notes:[`Advance directive for ${e.principalName||"?"}.`,`Healthcare agent: ${e.healthcareAgent.name||"?"} (${e.healthcareAgent.relationship||"?"}).`,...a,`Distribute copies to ${n.length} recipients.`],flaggedFields:i},outputArtifacts:f("estate-advance-directive",t),provenance:["workflow-registry"]}}}},e_=n.Ikc({year:n.auy.number().int().positive(),earnings:n.auy.number().nonnegative()}).strict(),eI={"retirement/ssa-estimator":{summary:{id:"retirement/ssa-estimator",domain:"retirement",title:"Social Security retirement benefit estimator",summary:"Estimate Social Security retirement benefits at ages 62, 67, and 70 using simplified AIME/PIA calculation.",status:"active",audience:"individual",tags:["ssa","retirement","social-security","pia","aime","benefits"]},inputSchema:n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),earningsHistory:n.YOg(e_).min(1),currentAnnualEarnings:n.auy.number().nonnegative(),spouseName:n.YjP().trim().optional(),spouseDob:n.YjP().trim().optional(),spouseEarnings:n.auy.number().nonnegative().optional()}).strict(),starterData:{applicantName:"",dob:"",earningsHistory:[],currentAnnualEarnings:0},sections:[{id:"personal-info",title:"Personal Information",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"spouseName",label:"Spouse name (optional)",type:"text"},{key:"spouseDob",label:"Spouse date of birth (optional)",type:"date"}]},{id:"earnings-history",title:"Earnings History",description:"Enter annual earnings for as many years as available. More history produces better estimates.",fields:[{key:"currentAnnualEarnings",label:"Current annual earnings",type:"currency"},{key:"spouseEarnings",label:"Spouse annual earnings (optional)",type:"currency"}]},{id:"retirement-planning",title:"Retirement Planning",description:"Benefits are estimated at ages 62 (early), 67 (full retirement age), and 70 (delayed).",fields:[]}],buildBundle:function(e){let t,i=function(e,t){let i=[...e.map(e=>e.earnings),t].sort((e,t)=>t-e);for(;i.length<35;)i.push(0);return Math.round(i.slice(0,35).reduce((e,t)=>e+t,0)/420)}(e.earningsHistory,e.currentAnnualEarnings),n=Math.round(100*(i<=1174?.9*i:i<=7078?1056.6000000000001+(i-1174)*.32:2945.88+(i-7078)*.15))/100,a=Math.round(.7*n),r=Math.round(n),o=Math.round(1.24*n);e.spouseName&&void 0!==e.spouseEarnings&&(t=Math.round(.5*n));let s=r-a,d=60*a,h=67+Math.round((s>0?Math.round(d/s):0)/12),y=[p("ssa-statement","Social Security Administration statement",!0,e.earningsHistory.length>0),p("w2-history","W-2 history (last 10+ years)",!1,e.earningsHistory.length>=10)],g=[];e.earningsHistory.length<10&&g.push(u("earningsHistory","warning","Fewer than 10 years of earnings history provided — estimate accuracy is limited."));let b=[c("earnings-history","Sufficient earnings history",e.earningsHistory.length>=10,"warning","At least 10 years of earnings history is recommended for accurate estimation.")],v=[`Applicant: ${e.applicantName}. Date of birth: ${e.dob}.`,`AIME (Average Indexed Monthly Earnings): ${l(i)}.`,`PIA (Primary Insurance Amount): ${l(n)}.`,`Estimated monthly benefit: ${l(a)} at 62, ${l(r)} at 67, ${l(o)} at 70.`,`Break-even analysis: collecting at 62 vs 67 breaks even at approximately age ~${h}.`];return void 0!==t&&e.spouseName&&v.push(`Spousal benefit (${e.spouseName}): up to ${l(t)}/month (50% of worker PIA).`),{workflowId:"retirement/ssa-estimator",domain:"retirement",title:"Social Security retirement benefit estimator",summary:"Simplified SSA retirement benefit estimation using AIME/PIA formula. PigeonGov is not affiliated with SSA.",applicant:void 0,household:[],evidence:y,answers:e,derived:{aime:i,pia:n,benefitAt62:a,benefitAt67:r,benefitAt70:o,spousalBenefit:t,breakEvenAge:h,yearsOfEarnings:e.earningsHistory.length},validation:{checks:b,flaggedFields:g},review:m("SSA retirement estimate",`${l(a)} at 62 / ${l(r)} at 67 / ${l(o)} at 70`,y,g,v),outputArtifacts:f("retirement-ssa-estimator",y),provenance:["workflow-registry"]}}}},eP={...O,..._,...T,...k,...z,...j,...w,...E,...W,...et,...ep,...ef,...eh,...ez,...eI},eA={1040:"tax/1040","family-visa":"immigration/family-visa-intake","healthcare-enrollment":"healthcare/aca-enrollment","unemployment-claim":"unemployment/claim-intake"};function eC(e){if(e in eP)return e;let t=eA[e];if(t)return t;throw Error(`Unsupported workflow: ${e}`)}function e$(e,t){let i=eP[eC(e)],n=i.inputSchema.safeParse(t);if(n.success)return i.buildBundle(n.data);try{let e=i.buildBundle(t);for(let t of n.error.issues)e.validation.flaggedFields.push({field:t.path.join("."),severity:"error",message:t.message,source:"schema-validation"});return e}catch{let e=i.summary;return{workflowId:e.id,domain:e.domain,title:e.title,summary:e.summary,household:[],evidence:[],answers:"object"==typeof t&&null!==t?t:{},derived:{},validation:{checks:[],flaggedFields:n.error.issues.map(e=>({field:e.path.join("."),severity:"error",message:e.message,source:"schema-validation"}))},review:{headline:`${e.title} — input validation failed`,notes:[`${n.error.issues.length} field(s) need attention before this workflow can be completed.`],flaggedFields:n.error.issues.map(e=>({field:e.path.join("."),severity:"error",message:e.message,source:"schema-validation"}))},outputArtifacts:[],provenance:["workflow-registry"]}}}let eD=2025,eN=["1040","schedule-1","schedule-c","w2","1099-nec","1099-int"],eT=n.k5n(eN),eE=n.k5n(["w2","1099-nec","1099-int"]),eM=n.Ikc({name:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/),relationship:n.YjP().trim().min(1),childTaxCreditEligible:n.zMY(),eitcEligible:n.zMY().optional()}).strict(),eO=n.Ikc({firstName:n.YjP().trim().min(1),lastName:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/),address:n.Ikc({street1:n.YjP().trim().min(1),street2:n.YjP().trim().optional(),city:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),zipCode:n.YjP().trim().regex(/^\d{5}(?:-\d{4})?$/)}).strict()}).strict(),ej=n.Ikc({educatorExpenses:n.auy.number().default(0),hsaDeduction:n.auy.number().default(0),selfEmploymentTaxDeduction:n.auy.number().default(0),iraDeduction:n.auy.number().default(0),studentLoanInterest:n.auy.number().default(0)}).strict(),eY=n.Ikc({filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),wages:n.auy.number().default(0),taxableInterest:n.auy.number().default(0),ordinaryDividends:n.auy.number().default(0),scheduleCNet:n.auy.number().default(0),otherIncome:n.auy.number().default(0),adjustments:ej.default({educatorExpenses:0,hsaDeduction:0,selfEmploymentTaxDeduction:0,iraDeduction:0,studentLoanInterest:0}),useItemizedDeductions:n.zMY().default(!1),itemizedDeductions:n.auy.number().default(0),dependents:n.YOg(eM).default([]),federalWithheld:n.auy.number().min(0).default(0),estimatedPayments:n.auy.number().min(0).default(0)}).strict(),eL=n.Ikc({path:n.YjP().trim().min(1),type:eE.optional()}).strict(),eF=n.Ikc({formId:eT,taxYear:n.euz(eD).optional(),data:eY,documents:n.YOg(eL).optional()}).strict(),eZ=n.Ikc({taxYear:n.euz(eD).optional(),data:eY}).strict(),eR=n.Ikc({formId:eT,taxYear:n.euz(eD).optional(),data:eY}).strict(),eB=n.Ikc({formId:eT,taxYear:n.euz(eD).optional()}).strict(),eU=n.Ikc({path:n.YjP().trim().min(1),type:eE.optional()}).strict(),eq=n.YjP().trim().min(1),eG=n.Ikc({workflowId:eq}).strict(),eW=n.Ikc({workflowId:eq}).strict(),eH=n.Ikc({workflowId:eq,data:n.g1P(n.YjP(),n.L5J())}).strict(),eV=n.Ikc({workflowId:eq.optional(),bundle:n.g1P(n.YjP(),n.L5J())}).strict(),eJ=eV,eK=n.Ikc({workflowId:eq,data:n.g1P(n.YjP(),n.L5J())}).strict(),eQ=n.Ikc({bundle:n.g1P(n.YjP(),n.L5J()),field:n.YjP().trim().min(1)}).strict();function eX(){return eN.map(e=>({formId:e,taxYear:eD,meta:s.xS[e].meta}))}function e0(e){let t=s.xS[e],i=t.schema instanceof n.bvH?Object.entries(t.schema.shape).map(([e,t])=>(function e(t,i){let{schema:a,optional:r}=function e(t){return t instanceof n.IiU?{schema:e(t.unwrap()).schema,optional:!0}:t instanceof n.XiL?{schema:e(t.removeDefault()).schema,optional:!0}:{schema:t,optional:!1}}(i),o={name:t,kind:a.constructor.name.replace(/^Zod/,"").toLowerCase()||"value",optional:r};return void 0!==a.description&&(o.description=a.description),a instanceof n.bvH?(o.kind="object",o.children=Object.entries(a.shape).map(([t,i])=>e(t,i))):a instanceof n.naA&&(o.kind="array",o.children=[e(`${t}[]`,a.element)]),o})(e,t)):[];return{formId:e,taxYear:eD,meta:t.meta,fields:i}}function e1(){return Object.values(eP).map(e=>e.summary).filter(e=>!0)}function e2(){return[...new Set(Object.values(eP).map(e=>e.summary.domain))]}function e4(e){let t,i;return i=(t=eP[eC(e)]).inputSchema instanceof n.bvH?Object.entries(t.inputSchema.shape).map(([e,t])=>(function e(t,i){return i instanceof n.XiL?e(t,i.unwrap()):i instanceof n.IiU?{...e(t,i.unwrap()),optional:!0}:i instanceof n.bvH?{name:t,kind:"object",fields:Object.entries(i.shape).map(([t,i])=>e(t,i))}:i instanceof n.naA?{name:t,kind:"array",items:e(`${t}[]`,i.element)}:{name:t,kind:i.constructor.name.replace(/^Zod/,"").toLowerCase()}})(e,t)):[],{...t.summary,sections:t.sections,starterData:t.starterData,inputSchema:i}}function e5(e){let t=eC(e);return{workflowId:t,starterData:structuredClone(eP[eC(t)].starterData)}}function e3(e,t){return e$(e,t)}function e9(e,t){let i=e$(e,t);return{bundle:i,review:i.review,validation:i.validation}}function e6(e,t){let i;return(i=e.validation.flaggedFields.find(e=>e.field===t))?{found:!0,field:t,severity:i.severity,explanation:i.message,suggestedNextStep:"error"===i.severity?"Resolve the missing or contradictory data before relying on this packet.":"Review the underlying evidence with a human before finalizing the packet."}:{found:!1,field:t,explanation:"No flag was found for that field."}}function e8(e){return{filingStatus:e.filingStatus,wages:e.wages,taxableInterest:e.taxableInterest,ordinaryDividends:e.ordinaryDividends,scheduleCNet:e.scheduleCNet,otherIncome:e.otherIncome,adjustments:e.adjustments,useItemizedDeductions:e.useItemizedDeductions,itemizedDeductions:e.itemizedDeductions,dependents:e.dependents.map(e=>{let t={name:e.name,ssn:e.ssn,relationship:e.relationship,childTaxCreditEligible:e.childTaxCreditEligible};return void 0===e.eitcEligible?t:{...t,eitcEligible:e.eitcEligible}}),federalWithheld:e.federalWithheld,estimatedPayments:e.estimatedPayments}}function e7(e){return(0,o.xm)(e8(e))}async function te(e,t){let{readPdfDocument:n}=await i.e("907").then(i.bind(i,6942)),a=await n(e,t?{typeHint:t}:{});return{documentType:a.detectedType,confidence:a.confidence,extracted:"unknown"===a.detectedType?null:a.document,text:a.rawText,flaggedFields:a.flaggedFields}}function tt(e){let t,i=e7(e),n=(t=(0,a.b)({formId:"1040",taxYear:eD,filingStatus:e.filingStatus,taxpayer:eO.parse({firstName:"Taxpayer",lastName:"Example",ssn:"000-00-0000",address:{street1:"Unknown",city:"Unknown",state:"CA",zipCode:"00000"}}),dependents:e8(e).dependents,importedDocuments:[],taxInput:e8(e)}),(0,r.t)(t));return{headline:i.refund>0?"Refund due":i.amountOwed>0?"Balance due":"No balance due",notes:[`Gross income: $${i.grossIncome.toFixed(2)}`,`Taxable income: $${i.taxableIncome.toFixed(2)}`,`Federal tax: $${i.federalTax.toFixed(2)}`,`Refund: $${i.refund.toFixed(2)}`],flaggedFields:n.flaggedFields,checks:n.checks,calculation:i}}},4760(e,t,i){i.r(t),i.d(t,{default:()=>s,metadata:()=>o,schema:()=>r});var n=i(9314),a=i(5284);let r={workflowId:n.uG.shape.workflowId},o={name:"describe-workflow",description:"Describe a workflow schema, starter data, and guided sections."};function s(e){return(0,a.J)({...(0,n.Ut)(e.workflowId),flaggedFields:[]})}},2568(e,t,i){i.d(t,{q$:()=>T,iq:()=>C,tl:()=>k,xS:()=>E});var n=i(3301);let a=n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]).describe("Filing status"),r=n.euz(2025).describe("Tax year"),o=n.auy.number().finite().describe("Monetary amount in dollars"),s=o.describe("Signed monetary amount in dollars"),l=o.min(0).describe("Non-negative monetary amount in dollars");n.auy.number().finite().min(0).max(100).describe("Percentage value");let d=n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/,"Expected SSN in ###-##-#### format").describe("Social Security number"),c=n.YjP().trim().regex(/^\d{2}-\d{7}$/,"Expected EIN in ##-####### format").describe("Employer identification number"),u=n.YjP().trim().regex(/^\d{9}$/,"Expected 9-digit routing number").describe("Direct-deposit routing number"),p=n.YjP().trim().min(4).max(17).describe("Direct-deposit account number"),m=n.YjP().trim().regex(/^[A-Z]{2}$/,"Expected two-letter state code").describe("State code");n.YjP().trim().regex(/^\d{5}(?:-\d{4})?$/,"Expected ZIP code in ##### or #####-#### format").describe("ZIP code");let f=n.Ikc({street1:n.YjP().trim().describe("Street address line 1"),street2:n.YjP().trim().optional().describe("Street address line 2"),city:n.YjP().trim().describe("City"),state:m,zipCode:n.YjP().trim().describe("ZIP code")}).strict().describe("Mailing address"),h=n.Ikc({firstName:n.YjP().trim().describe("First name"),lastName:n.YjP().trim().describe("Last name"),ssn:d,address:f}).strict().describe("Person identity"),y=n.Ikc({name:n.YjP().trim().describe("Dependent name"),ssn:d,relationship:n.YjP().trim().describe("Relationship to taxpayer"),childTaxCreditEligible:n.zMY().describe("Child tax credit eligibility"),eitcEligible:n.zMY().optional().describe("Earned income credit eligibility")}).strict().describe("Dependent");n.zMY().describe("Boolean yes/no value");let g=n.Ikc({state:m,stateIdNumber:n.YjP().trim().min(1).optional().describe("State identification number"),stateIncome:s.optional().describe("State income amount"),stateTaxWithheld:l.optional().describe("State tax withheld"),localIncome:s.optional().describe("Local income amount"),localTaxWithheld:l.optional().describe("Local tax withheld")}).strict().describe("State and local tax information"),b=n.Ikc({code:n.YjP().trim().min(1).max(2).describe("W-2 box 12 code"),amount:l.describe("W-2 box 12 amount")}).strict().describe("W-2 box 12 entry"),v={advertising:l.optional().describe("Schedule C expense: advertising"),carAndTruck:l.optional().describe("Schedule C expense: car and truck"),commissionsAndFees:l.optional().describe("Schedule C expense: commissions and fees"),contractLabor:l.optional().describe("Schedule C expense: contract labor"),depletion:l.optional().describe("Schedule C expense: depletion"),depreciation:l.optional().describe("Schedule C expense: depreciation"),employeeBenefitPrograms:l.optional().describe("Schedule C expense: employee benefit programs"),insuranceOtherThanHealth:l.optional().describe("Schedule C expense: insurance other than health"),interestMortgage:l.optional().describe("Schedule C expense: interest mortgage"),interestOther:l.optional().describe("Schedule C expense: interest other"),legalAndProfessional:l.optional().describe("Schedule C expense: legal and professional"),officeExpense:l.optional().describe("Schedule C expense: office expense"),pensionAndProfitSharing:l.optional().describe("Schedule C expense: pension and profit sharing"),rentalOrLeaseVehicles:l.optional().describe("Schedule C expense: rental or lease vehicles"),rentalOrLeaseOtherBusinessProperty:l.optional().describe("Schedule C expense: rental or lease other business property"),repairsAndMaintenance:l.optional().describe("Schedule C expense: repairs and maintenance"),supplies:l.optional().describe("Schedule C expense: supplies"),taxesAndLicenses:l.optional().describe("Schedule C expense: taxes and licenses"),travel:l.optional().describe("Schedule C expense: travel"),meals:l.optional().describe("Schedule C expense: meals"),utilities:l.optional().describe("Schedule C expense: utilities"),wages:l.optional().describe("Schedule C expense: wages"),otherExpenses:l.optional().describe("Schedule C expense: other expenses")},w=n.Ikc(v).strict().describe("Schedule C expense breakdown"),k=n.Ikc({taxYear:r,filingStatus:a.describe("Filing status"),taxpayer:h.describe("Primary taxpayer"),spouse:h.optional().describe("Spouse identity for joint returns"),mailingAddress:f.describe("Mailing address"),dependents:n.YOg(y).default([]).describe("Dependents"),lines:n.Ikc({line1a:o.optional().describe("Line 1a - wages, salaries, tips"),line1b:o.optional().describe("Line 1b - taxable interest"),line1c:o.optional().describe("Line 1c - ordinary dividends"),line1d:o.optional().describe("Line 1d - IRA distributions"),line1e:o.optional().describe("Line 1e - pensions and annuities"),line1f:o.optional().describe("Line 1f - taxable social security benefits"),line1g:o.optional().describe("Line 1g - capital gain or loss"),line1h:o.optional().describe("Line 1h - other income"),line2a:o.optional().describe("Line 2a - tax-exempt interest"),line2b:o.optional().describe("Line 2b - taxable interest"),line3a:o.optional().describe("Line 3a - qualified dividends"),line3b:o.optional().describe("Line 3b - ordinary dividends"),line4a:o.optional().describe("Line 4a - IRA distributions"),line4b:o.optional().describe("Line 4b - taxable amount"),line5a:o.optional().describe("Line 5a - pensions and annuities"),line5b:o.optional().describe("Line 5b - taxable amount"),line6a:o.optional().describe("Line 6a - social security benefits"),line6b:o.optional().describe("Line 6b - taxable amount"),line7:o.optional().describe("Line 7 - capital gain or (loss)"),line8:o.optional().describe("Line 8 - other income from Schedule 1"),line9:o.optional().describe("Line 9 - total income"),line10:o.optional().describe("Line 10 - adjustments to income"),line11:o.optional().describe("Line 11 - adjusted gross income"),line12a:o.optional().describe("Line 12a - standard deduction"),line12b:o.optional().describe("Line 12b - itemized deductions"),line12c:o.optional().describe("Line 12c - qualified business income deduction"),line12d:o.optional().describe("Line 12d - add lines 12a through 12c"),line12e:o.optional().describe("Line 12e - deduction"),line12f:o.optional().describe("Line 12f - deduction worksheet"),line12g:o.optional().describe("Line 12g - deduction worksheet"),line12h:o.optional().describe("Line 12h - deduction worksheet"),line12z:o.optional().describe("Line 12z - total deduction"),line13:o.optional().describe("Line 13 - taxable income"),line14:o.optional().describe("Line 14 - tax"),line15:o.optional().describe("Line 15 - qualified business income deduction"),line16:o.optional().describe("Line 16 - total tax"),line17:o.optional().describe("Line 17 - amount from Schedule 2"),line18:o.optional().describe("Line 18 - other taxes"),line19:o.optional().describe("Line 19 - total tax"),line20:o.optional().describe("Line 20 - total payments"),line21:o.optional().describe("Line 21 - child tax credit and other credits"),line22:o.optional().describe("Line 22 - total tax after credits"),line23:o.optional().describe("Line 23 - other taxes"),line24:o.optional().describe("Line 24 - total tax"),line25a:l.optional().describe("Line 25a - federal income tax withheld from Form W-2"),line25b:l.optional().describe("Line 25b - federal income tax withheld from Form 1099"),line26:o.optional().describe("Line 26 - estimated tax payments"),line27:o.optional().describe("Line 27 - earned income credit"),line28:o.optional().describe("Line 28 - additional child tax credit"),line29:o.optional().describe("Line 29 - American opportunity credit"),line30:o.optional().describe("Line 30 - recovery rebate credit"),line31:o.optional().describe("Line 31 - amount from Schedule 3"),line32:o.optional().describe("Line 32 - total other payments and refundable credits"),line33:o.optional().describe("Line 33 - total payments"),line34:o.optional().describe("Line 34 - refund"),line35a:n.YjP().trim().optional().describe("Line 35a - routing number"),line35b:n.k5n(["checking","savings"]).optional().describe("Line 35b - account type"),line36:n.YjP().trim().optional().describe("Line 36 - account number"),line37:o.optional().describe("Line 37 - amount you owe")}).strict().describe("Form 1040 lines"),refundDirectDeposit:n.Ikc({routingNumber:u.optional().describe("Refund routing number"),accountNumber:p.optional().describe("Refund account number"),accountType:n.k5n(["checking","savings"]).optional().describe("Refund account type")}).strict().optional().describe("Refund direct deposit information"),signatures:n.Ikc({taxpayerSigned:n.zMY().optional().describe("Taxpayer signed return"),spouseSigned:n.zMY().optional().describe("Spouse signed return")}).strict().optional().describe("Signature indicators")}).strict().describe("Form 1040"),S=n.Ikc({taxYear:r,payer:n.Ikc({name:n.YjP().trim().min(1).describe("Payer name"),tin:c.optional().describe("Payer TIN"),address:h.shape.address.describe("Payer address")}).strict().describe("Payer information"),recipient:h.omit({address:!0}).extend({address:h.shape.address}).strict().describe("Recipient information"),boxes:n.Ikc({box1InterestIncome:l.optional().describe("Box 1 - interest income"),box2EarlyWithdrawalPenalty:l.optional().describe("Box 2 - early withdrawal penalty"),box3InterestOnUsSavingsBondsAndTreasuryObligations:l.optional().describe("Box 3 - interest on U.S. savings bonds and treasury obligations"),box4FederalIncomeTaxWithheld:l.optional().describe("Box 4 - federal income tax withheld"),box5InvestmentExpenses:l.optional().describe("Box 5 - investment expenses"),box6ForeignTaxPaid:l.optional().describe("Box 6 - foreign tax paid"),box7ForeignCountryOrUsPossession:n.YjP().trim().optional().describe("Box 7 - foreign country or U.S. possession"),box8TaxExemptInterest:l.optional().describe("Box 8 - tax-exempt interest"),box9SpecifiedPrivateActivityBondInterest:l.optional().describe("Box 9 - specified private activity bond interest"),box10MarketDiscount:l.optional().describe("Box 10 - market discount"),box11BondPremium:l.optional().describe("Box 11 - bond premium"),box12BondPremiumOnTaxExemptBond:l.optional().describe("Box 12 - bond premium on tax-exempt bond"),box13BondPremiumOnTreasuryObligations:l.optional().describe("Box 13 - bond premium on treasury obligations"),box14TaxExemptAndTaxCreditBondCusipNo:n.YjP().trim().optional().describe("Box 14 - tax-exempt and tax credit bond CUSIP number"),box15State:n.YOg(g).default([]).describe("State reporting information")}).strict().describe("1099-INT box data")}).strict().describe("1099-INT source document"),x=n.Ikc({taxYear:r,payer:n.Ikc({name:n.YjP().trim().min(1).describe("Payer name"),tin:c.optional().describe("Payer TIN"),address:h.shape.address.describe("Payer address")}).strict().describe("Payer information"),recipient:h.omit({address:!0}).extend({address:h.shape.address}).strict().describe("Recipient information"),boxes:n.Ikc({box1NonemployeeCompensation:l.optional().describe("Box 1 - nonemployee compensation"),box4FederalIncomeTaxWithheld:l.optional().describe("Box 4 - federal income tax withheld"),box5StateTaxWithheld:l.optional().describe("Box 5 - state tax withheld"),box6StateIncome:l.optional().describe("Box 6 - state income"),box7State:n.YOg(g).default([]).describe("State reporting information"),box1aDirectSales:n.zMY().optional().describe("Box 1a - direct sales indicator"),box2PayerMadeDirectSales:n.zMY().optional().describe("Box 2 - direct sales indicator"),box3PayerMadeStateWithholding:n.zMY().optional().describe("Box 3 - state withholding indicator"),box6FatcaFilingRequirement:n.zMY().optional().describe("Box 6 - FATCA filing requirement")}).strict().describe("1099-NEC box data")}).strict().describe("1099-NEC source document"),z=/^\d{4}-\d{2}-\d{2}$/,_=n.Ikc({description:n.YjP().trim().min(1).describe("(a) Description of property"),dateAcquired:n.YjP().trim().regex(z,"Expected date in YYYY-MM-DD format").describe("(b) Date acquired"),dateSold:n.YjP().trim().regex(z,"Expected date in YYYY-MM-DD format").describe("(c) Date sold or disposed of"),proceeds:l.describe("(d) Proceeds"),costBasis:l.describe("(e) Cost or other basis"),adjustments:o.optional().describe("(g) Amount of adjustment"),gainOrLoss:o.optional().describe("(h) Gain or (loss)")}).strict().describe("Form 8949 transaction entry"),I=n.Ikc({taxYear:r,part1ShortTerm:n.Ikc({checkboxCategory:n.k5n(["A","B","C"]).optional().describe("Check Box A, B, or C"),transactions:n.YOg(_).default([]).describe("Short-term transactions"),totalProceeds:l.optional().describe("Line 2(d) total proceeds"),totalCostBasis:l.optional().describe("Line 2(e) total cost basis"),totalAdjustments:o.optional().describe("Line 2(g) total adjustments"),totalGainOrLoss:o.optional().describe("Line 2(h) total gain or loss")}).strict().describe("Part I - Short-Term"),part2LongTerm:n.Ikc({checkboxCategory:n.k5n(["D","E","F"]).optional().describe("Check Box D, E, or F"),transactions:n.YOg(_).default([]).describe("Long-term transactions"),totalProceeds:l.optional().describe("Line 4(d) total proceeds"),totalCostBasis:l.optional().describe("Line 4(e) total cost basis"),totalAdjustments:o.optional().describe("Line 4(g) total adjustments"),totalGainOrLoss:o.optional().describe("Line 4(h) total gain or loss")}).strict().describe("Part II - Long-Term")}).strict().describe("Form 8949 (Sales and Other Dispositions of Capital Assets)"),P=n.Ikc({line1TaxableStateRefunds:o.optional().describe("Line 1 - taxable state refunds"),line2AlimonyReceived:o.optional().describe("Line 2 - alimony received"),line3BusinessIncomeOrLoss:o.optional().describe("Line 3 - business income or loss"),line4CapitalGainOrLoss:o.optional().describe("Line 4 - capital gain or loss"),line5RentalRealEstateRoyaltiesPartnershipsSCorporationsTrusts:o.optional().describe("Line 5 - rental real estate, royalties, partnerships, S corporations, trusts"),line6FarmIncomeOrLoss:o.optional().describe("Line 6 - farm income or loss"),line7UnemploymentCompensation:o.optional().describe("Line 7 - unemployment compensation"),line8OtherIncome:o.optional().describe("Line 8 - other income"),line9TotalOtherIncome:o.optional().describe("Line 9 - total other income"),line10TotalAdditionalIncome:o.optional().describe("Line 10 - total additional income")}).strict().describe("Schedule 1 Part I"),A=n.Ikc({line11EducatorExpenses:l.optional().describe("Line 11 - educator expenses"),line12CertainBusinessExpenses:l.optional().describe("Line 12 - certain business expenses"),line13HealthSavingsAccountDeduction:l.optional().describe("Line 13 - health savings account deduction"),line14MovingExpenses:l.optional().describe("Line 14 - moving expenses"),line15DeductiblePartOfSelfEmploymentTax:l.optional().describe("Line 15 - deductible part of self-employment tax"),line16SelfEmployedSEPSimpleAndQualifiedPlans:l.optional().describe("Line 16 - self-employed SEP, SIMPLE, and qualified plans"),line17SelfEmployedHealthInsuranceDeduction:l.optional().describe("Line 17 - self-employed health insurance deduction"),line18PenaltyOnEarlyWithdrawalOfSavings:l.optional().describe("Line 18 - penalty on early withdrawal of savings"),line19AlimonyPaid:l.optional().describe("Line 19 - alimony paid"),line20IraDeductions:l.optional().describe("Line 20 - IRA deduction"),line21StudentLoanInterestDeduction:l.optional().describe("Line 21 - student loan interest deduction"),line22Reserved:l.optional().describe("Line 22 - reserved"),line23Reserved:l.optional().describe("Line 23 - reserved"),line24ArcherMSADeduction:l.optional().describe("Line 24 - Archer MSA deduction"),line25Reserved:l.optional().describe("Line 25 - reserved"),line26TuitionAndFeesDeduction:l.optional().describe("Line 26 - tuition and fees deduction"),line27TotalAdjustments:l.optional().describe("Line 27 - total adjustments")}).strict().describe("Schedule 1 Part II"),C=n.Ikc({taxYear:r,filingStatus:a.optional().describe("Filing status for derived validation"),additionalIncome:P,adjustments:A}).strict().describe("Schedule 1"),$=n.Ikc({payerName:n.YjP().trim().min(1).describe("Payer name"),amount:l.describe("Interest amount")}).strict().describe("Interest source entry"),D=n.Ikc({payerName:n.YjP().trim().min(1).describe("Payer name"),amount:l.describe("Dividend amount")}).strict().describe("Dividend source entry"),N=n.Ikc({taxYear:r,filingStatus:a.optional().describe("Filing status"),part1Interest:n.Ikc({sources:n.YOg($).default([]).describe("Interest sources"),totalInterest:o.optional().describe("Line 4 - total interest")}).strict().describe("Part I - Interest"),part2OrdinaryDividends:n.Ikc({sources:n.YOg(D).default([]).describe("Dividend sources"),totalOrdinaryDividends:o.optional().describe("Line 6 - total ordinary dividends")}).strict().describe("Part II - Ordinary Dividends"),part3ForeignAccountsAndTrusts:n.Ikc({hasForeignAccount:n.zMY().default(!1).describe("Line 7a - foreign account"),foreignCountry:n.YjP().trim().optional().describe("Line 7b - foreign country"),hasForeignTrust:n.zMY().default(!1).describe("Line 8 - foreign trust")}).strict().describe("Part III - Foreign Accounts and Trusts")}).strict().describe("Schedule B (Interest and Ordinary Dividends)"),T=n.Ikc({taxYear:r,ownerName:n.YjP().trim().min(1).describe("Business owner name"),ownerSsn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/).describe("Business owner SSN"),businessName:n.YjP().trim().min(1).optional().describe("Business name"),ein:c.optional().describe("Business EIN"),principalBusinessOrProfession:n.YjP().trim().min(1).describe("Principal business or profession"),businessCode:n.YjP().trim().optional().describe("Principal business code"),accountingMethod:n.k5n(["cash","accrual","other"]).default("cash").describe("Accounting method"),materialParticipation:n.zMY().optional().describe("Material participation"),income:n.Ikc({grossReceiptsOrSales:l.optional().describe("Line 1 - gross receipts or sales"),returnsAndAllowances:l.optional().describe("Line 2 - returns and allowances"),otherIncome:l.optional().describe("Line 6 - other income")}).strict().describe("Schedule C income"),cogs:n.Ikc({inventoryAtBeginning:l.optional().describe("Line 35 - inventory at beginning"),purchasesLessItemsWithdrawnForPersonalUse:l.optional().describe("Line 36 - purchases"),costOfLabor:l.optional().describe("Line 37 - cost of labor"),materialsAndSupplies:l.optional().describe("Line 38 - materials and supplies"),otherCosts:l.optional().describe("Line 39 - other costs"),inventoryAtEnd:l.optional().describe("Line 41 - inventory at end")}).strict().describe("Cost of goods sold"),expenses:w.describe("Schedule C business expenses"),homeOfficeDeduction:l.optional().describe("Line 30 - home office deduction"),netProfitOrLoss:o.optional().describe("Line 31 - net profit or loss")}).strict().describe("Schedule C"),E={1040:{meta:{id:"1040",name:"Form 1040",taxYear:2025,version:"2025.1",kind:"return"},schema:k},"schedule-1":{meta:{id:"schedule-1",name:"Schedule 1",taxYear:2025,version:"2025.1",kind:"schedule"},schema:C},"schedule-b":{meta:{id:"schedule-b",name:"Schedule B",taxYear:2025,version:"2025.1",kind:"schedule"},schema:N},"schedule-c":{meta:{id:"schedule-c",name:"Schedule C",taxYear:2025,version:"2025.1",kind:"schedule"},schema:T},"schedule-d":{meta:{id:"schedule-d",name:"Schedule D",taxYear:2025,version:"2025.1",kind:"schedule"},schema:n.Ikc({taxYear:r,filingStatus:a.optional().describe("Filing status"),part1ShortTerm:n.Ikc({line1bForm8949BoxA:o.optional().describe("Line 1b - Form 8949 Box A totals"),line2Form8949BoxB:o.optional().describe("Line 2 - Form 8949 Box B totals"),line3Form8949BoxC:o.optional().describe("Line 3 - Form 8949 Box C totals"),line4ShortTermFromK1:o.optional().describe("Line 4 - Short-term gain/loss from Forms 6252, 4684, 6781, 8824"),line5NetShortTermFromScheduleK1:o.optional().describe("Line 5 - Net short-term from Schedule(s) K-1"),line6ShortTermCarryover:o.optional().describe("Line 6 - Short-term capital loss carryover"),line7NetShortTermGainOrLoss:o.optional().describe("Line 7 - Net short-term capital gain or (loss)")}).strict().describe("Part I - Short-Term Capital Gains and Losses"),part2LongTerm:n.Ikc({line8bForm8949BoxD:o.optional().describe("Line 8b - Form 8949 Box D totals"),line9Form8949BoxE:o.optional().describe("Line 9 - Form 8949 Box E totals"),line10Form8949BoxF:o.optional().describe("Line 10 - Form 8949 Box F totals"),line11OtherLongTermGainOrLoss:o.optional().describe("Line 11 - Gain from Form 4797"),line12NetLongTermFromScheduleK1:o.optional().describe("Line 12 - Net long-term from Schedule(s) K-1"),line13CapitalGainDistributions:o.optional().describe("Line 13 - Capital gain distributions"),line14LongTermCarryover:o.optional().describe("Line 14 - Long-term capital loss carryover"),line15NetLongTermGainOrLoss:o.optional().describe("Line 15 - Net long-term capital gain or (loss)")}).strict().describe("Part II - Long-Term Capital Gains and Losses"),part3Summary:n.Ikc({line16CombinedGainOrLoss:o.optional().describe("Line 16 - Combine lines 7 and 15"),line21CapitalGainOrLoss:o.optional().describe("Line 21 - Capital gain or (loss) to Form 1040 line 7")}).strict().describe("Part III - Summary")}).strict().describe("Schedule D (Capital Gains and Losses)")},"form-8949":{meta:{id:"form-8949",name:"Form 8949",taxYear:2025,version:"2025.1",kind:"schedule"},schema:I},w2:{meta:{id:"w2",name:"Form W-2",taxYear:2025,version:"2025.1",kind:"source-document"},schema:n.Ikc({taxYear:r,employer:n.Ikc({name:n.YjP().trim().min(1).describe("Employer name"),ein:c.optional().describe("Employer EIN"),address:n.Ikc({street1:n.YjP().trim().min(1).describe("Employer street address line 1"),street2:n.YjP().trim().optional().describe("Employer street address line 2"),city:n.YjP().trim().min(1).describe("Employer city"),state:n.YjP().trim().regex(/^[A-Z]{2}$/).describe("Employer state"),zipCode:n.YjP().trim().regex(/^\d{5}(?:-\d{4})?$/).describe("Employer ZIP code")}).strict().optional().describe("Employer address")}).strict().describe("Employer information"),employee:h.omit({address:!0}).extend({address:h.shape.address}).strict().describe("Employee information"),boxes:n.Ikc({box1WagesTipsOtherCompensation:o.optional().describe("Box 1 - wages, tips, other compensation"),box2FederalIncomeTaxWithheld:l.optional().describe("Box 2 - federal income tax withheld"),box3SocialSecurityWages:l.optional().describe("Box 3 - social security wages"),box4SocialSecurityTaxWithheld:l.optional().describe("Box 4 - social security tax withheld"),box5MedicareWagesAndTips:l.optional().describe("Box 5 - medicare wages and tips"),box6MedicareTaxWithheld:l.optional().describe("Box 6 - medicare tax withheld"),box7SocialSecurityTips:l.optional().describe("Box 7 - social security tips"),box8AllocatedTips:l.optional().describe("Box 8 - allocated tips"),box10DependentCareBenefits:l.optional().describe("Box 10 - dependent care benefits"),box11NonqualifiedPlans:l.optional().describe("Box 11 - nonqualified plans"),box12:n.YOg(b).default([]).describe("Box 12 entries"),box13StatutoryEmployee:n.zMY().optional().describe("Box 13 - statutory employee"),box13RetirementPlan:n.zMY().optional().describe("Box 13 - retirement plan"),box13ThirdPartySickPay:n.zMY().optional().describe("Box 13 - third-party sick pay"),box14Other:n.YOg(n.YjP().trim().min(1)).default([]).describe("Box 14 - other entries"),state:n.YOg(g).default([]).describe("State and local boxes 15-20")}).strict().describe("W-2 box data")}).strict().describe("W-2 source document")},"1099-nec":{meta:{id:"1099-nec",name:"Form 1099-NEC",taxYear:2025,version:"2025.1",kind:"source-document"},schema:x},"1099-int":{meta:{id:"1099-int",name:"Form 1099-INT",taxYear:2025,version:"2025.1",kind:"source-document"},schema:S}}},3301(e,t,i){let n,a,r;i.d(t,{XiL:()=>om,k5n:()=>r8,YjP:()=>ab,Ikc:()=>rF,L5J:()=>rC,g1P:()=>r0,zMY:()=>rf,bvH:()=>rL,IiU:()=>oo,naA:()=>rO,euz:()=>ot,YOg:()=>rj,auy:()=>p});var o,s,l={};i.r(l),i.d(l,{base64:()=>eD,base64url:()=>eN,bigint:()=>eR,boolean:()=>eq,browserEmail:()=>ez,cidrv4:()=>eC,cidrv6:()=>e$,cuid:()=>eo,cuid2:()=>es,date:()=>ej,datetime:()=>eF,domain:()=>eE,duration:()=>ep,e164:()=>eM,email:()=>ev,emoji:()=>e_,extendedDuration:()=>em,guid:()=>ef,hex:()=>eJ,hostname:()=>eT,html5Email:()=>ew,idnEmail:()=>ex,integer:()=>eB,ipv4:()=>eI,ipv6:()=>eP,ksuid:()=>ec,lowercase:()=>eH,mac:()=>eA,md5_base64:()=>e0,md5_base64url:()=>e1,md5_hex:()=>eX,nanoid:()=>eu,null:()=>eG,number:()=>eU,rfc5322Email:()=>ek,sha1_base64:()=>e4,sha1_base64url:()=>e5,sha1_hex:()=>e2,sha256_base64:()=>e9,sha256_base64url:()=>e6,sha256_hex:()=>e3,sha384_base64:()=>e7,sha384_base64url:()=>te,sha384_hex:()=>e8,sha512_base64:()=>ti,sha512_base64url:()=>tn,sha512_hex:()=>tt,string:()=>eZ,time:()=>eL,ulid:()=>el,undefined:()=>eW,unicodeEmail:()=>eS,uppercase:()=>eV,uuid:()=>eh,uuid4:()=>ey,uuid6:()=>eg,uuid7:()=>eb,xid:()=>ed});var d={};i.r(d),i.d(d,{endsWith:()=>nL,gt:()=>nk,gte:()=>nS,includes:()=>nj,length:()=>nT,lowercase:()=>nM,lt:()=>nv,lte:()=>nw,maxLength:()=>nD,maxSize:()=>nA,mime:()=>nZ,minLength:()=>nN,minSize:()=>nC,multipleOf:()=>nP,negative:()=>nz,nonnegative:()=>nI,nonpositive:()=>n_,normalize:()=>nB,overwrite:()=>nR,positive:()=>nx,property:()=>nF,regex:()=>nE,size:()=>n$,slugify:()=>nW,startsWith:()=>nY,toLowerCase:()=>nq,toUpperCase:()=>nG,trim:()=>nU,uppercase:()=>nO});var c={};i.r(c),i.d(c,{ZodISODate:()=>n3,ZodISODateTime:()=>n4,ZodISODuration:()=>n7,ZodISOTime:()=>n6,date:()=>n9,datetime:()=>n5,duration:()=>ae,time:()=>n8});var u={};i.r(u),i.d(u,{ZodAny:()=>rI,ZodArray:()=>rO,ZodBase64:()=>a2,ZodBase64URL:()=>a5,ZodBigInt:()=>rh,ZodBigIntFormat:()=>rg,ZodBoolean:()=>rm,ZodCIDRv4:()=>aQ,ZodCIDRv6:()=>a0,ZodCUID:()=>aO,ZodCUID2:()=>aY,ZodCatch:()=>ok,ZodCodec:()=>oP,ZodCustom:()=>oL,ZodCustomStringFormat:()=>re,ZodDate:()=>rE,ZodDefault:()=>om,ZodDiscriminatedUnion:()=>rW,ZodE164:()=>a9,ZodEmail:()=>aw,ZodEmoji:()=>aN,ZodEnum:()=>r6,ZodExactOptional:()=>ol,ZodFile:()=>oi,ZodFunction:()=>oj,ZodGUID:()=>aS,ZodIPv4:()=>aG,ZodIPv6:()=>aJ,ZodIntersection:()=>rV,ZodJWT:()=>a8,ZodKSUID:()=>aU,ZodLazy:()=>oT,ZodLiteral:()=>oe,ZodMAC:()=>aH,ZodMap:()=>r4,ZodNaN:()=>ox,ZodNanoID:()=>aE,ZodNever:()=>r$,ZodNonOptional:()=>og,ZodNull:()=>rz,ZodNullable:()=>oc,ZodNumber:()=>rr,ZodNumberFormat:()=>rs,ZodObject:()=>rL,ZodOptional:()=>oo,ZodPipe:()=>o_,ZodPrefault:()=>oh,ZodPromise:()=>oM,ZodReadonly:()=>oC,ZodRecord:()=>rX,ZodSet:()=>r3,ZodString:()=>ag,ZodStringFormat:()=>av,ZodSuccess:()=>ov,ZodSymbol:()=>rw,ZodTemplateLiteral:()=>oD,ZodTransform:()=>oa,ZodTuple:()=>rK,ZodType:()=>ah,ZodULID:()=>aF,ZodURL:()=>aC,ZodUUID:()=>az,ZodUndefined:()=>rS,ZodUnion:()=>rB,ZodUnknown:()=>rA,ZodVoid:()=>rN,ZodXID:()=>aR,ZodXor:()=>rq,_ZodString:()=>ay,_default:()=>of,_function:()=>oY,any:()=>rP,array:()=>rj,base64:()=>a4,base64url:()=>a3,bigint:()=>ry,boolean:()=>rf,catch:()=>oS,check:()=>oF,cidrv4:()=>aX,cidrv6:()=>a1,codec:()=>oA,cuid:()=>aj,cuid2:()=>aL,custom:()=>oZ,date:()=>rM,describe:()=>oU,discriminatedUnion:()=>rH,e164:()=>a6,email:()=>ak,emoji:()=>aT,enum:()=>r8,exactOptional:()=>od,file:()=>on,float32:()=>rd,float64:()=>rc,function:()=>oY,guid:()=>ax,hash:()=>ra,hex:()=>rn,hostname:()=>ri,httpUrl:()=>aD,instanceof:()=>oG,int:()=>rl,int32:()=>ru,int64:()=>rb,intersection:()=>rJ,ipv4:()=>aW,ipv6:()=>aK,json:()=>oH,jwt:()=>a7,keyof:()=>rY,ksuid:()=>aq,lazy:()=>oE,literal:()=>ot,looseObject:()=>rR,looseRecord:()=>r2,mac:()=>aV,map:()=>r5,meta:()=>oq,nan:()=>oz,nanoid:()=>aM,nativeEnum:()=>r7,never:()=>rD,nonoptional:()=>ob,null:()=>r_,nullable:()=>ou,nullish:()=>op,number:()=>ro,object:()=>rF,optional:()=>os,partialRecord:()=>r1,pipe:()=>oI,prefault:()=>oy,preprocess:()=>oV,promise:()=>oO,readonly:()=>o$,record:()=>r0,refine:()=>oR,set:()=>r9,strictObject:()=>rZ,string:()=>ab,stringFormat:()=>rt,stringbool:()=>oW,success:()=>ow,superRefine:()=>oB,symbol:()=>rk,templateLiteral:()=>oN,transform:()=>or,tuple:()=>rQ,uint32:()=>rp,uint64:()=>rv,ulid:()=>aZ,undefined:()=>rx,union:()=>rU,unknown:()=>rC,url:()=>a$,uuid:()=>a_,uuidv4:()=>aI,uuidv6:()=>aP,uuidv7:()=>aA,void:()=>rT,xid:()=>aB,xor:()=>rG});var p={};function m(e,t,i){function n(i,n){if(i._zod||Object.defineProperty(i,"_zod",{value:{def:n,constr:o,traits:new Set},enumerable:!1}),i._zod.traits.has(e))return;i._zod.traits.add(e),t(i,n);let a=o.prototype,r=Object.keys(a);for(let e=0;e<r.length;e++){let t=r[e];t in i||(i[t]=a[t].bind(i))}}let a=i?.Parent??Object;class r extends a{}function o(e){var t;let a=i?.Parent?new r:this;for(let i of(n(a,e),(t=a._zod).deferred??(t.deferred=[]),a._zod.deferred))i();return a}return Object.defineProperty(r,"name",{value:e}),Object.defineProperty(o,"init",{value:n}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>!!i?.Parent&&t instanceof i.Parent||t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}i.r(p),i.d(p,{bigint:()=>oX,boolean:()=>oQ,date:()=>o0,number:()=>oK,string:()=>oJ}),Object.freeze({status:"aborted"}),Symbol("zod_brand");class f extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class h extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}let y={};function g(e){return e&&Object.assign(y,e),y}function b(e){let t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,i])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function v(e,t="|"){return e.map(e=>L(e)).join(t)}function w(e,t){return"bigint"==typeof t?t.toString():t}function k(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function S(e){return null==e}function x(e){let t=+!!e.startsWith("^"),i=e.endsWith("$")?e.length-1:e.length;return e.slice(t,i)}let z=Symbol("evaluating");function _(e,t,i){let n;Object.defineProperty(e,t,{get(){if(n!==z)return void 0===n&&(n=z,n=i()),n},set(i){Object.defineProperty(e,t,{value:i})},configurable:!0})}function I(e,t,i){Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!0,configurable:!0})}function P(...e){let t={};for(let i of e)Object.assign(t,Object.getOwnPropertyDescriptors(i));return Object.defineProperties({},t)}function A(e){return JSON.stringify(e)}let C="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function $(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}let D=k(()=>{if("u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch(e){return!1}});function N(e){if(!1===$(e))return!1;let t=e.constructor;if(void 0===t||"function"!=typeof t)return!0;let i=t.prototype;return!1!==$(i)&&!1!==Object.prototype.hasOwnProperty.call(i,"isPrototypeOf")}function T(e){return N(e)?{...e}:Array.isArray(e)?[...e]:e}let E=new Set(["string","number","symbol"]),M=new Set(["string","number","bigint","boolean","symbol","undefined"]);function O(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function j(e,t,i){let n=new e._zod.constr(t??e._zod.def);return(!t||i?.parent)&&(n._zod.parent=e),n}function Y(e){if(!e)return{};if("string"==typeof e)return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");e.error=e.message}return(delete e.message,"string"==typeof e.error)?{...e,error:()=>e.error}:e}function L(e){return"bigint"==typeof e?e.toString()+"n":"string"==typeof e?`"${e}"`:`${e}`}let F={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Z={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function R(e,t=0){if(!0===e.aborted)return!0;for(let i=t;i<e.issues.length;i++)if(e.issues[i]?.continue!==!0)return!0;return!1}function B(e,t){return t.map(t=>(t.path??(t.path=[]),t.path.unshift(e),t))}function U(e){return"string"==typeof e?e:e?.message}function q(e,t,i){let n={...e,path:e.path??[]};return e.message||(n.message=U(e.inst?._zod.def?.error?.(e))??U(t?.error?.(e))??U(i.customError?.(e))??U(i.localeError?.(e))??"Invalid input"),delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function G(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function W(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function H(...e){let[t,i,n]=e;return"string"==typeof t?{message:t,code:"custom",input:i,inst:n}:{...t}}let V=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,w,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},J=m("$ZodError",V),K=m("$ZodError",V,{Parent:Error}),Q=e=>(t,i,n,a)=>{let r=n?Object.assign(n,{async:!1}):{async:!1},o=t._zod.run({value:i,issues:[]},r);if(o instanceof Promise)throw new f;if(o.issues.length){let t=new(a?.Err??e)(o.issues.map(e=>q(e,r,g())));throw C(t,a?.callee),t}return o.value},X=Q(K),ee=e=>async(t,i,n,a)=>{let r=n?Object.assign(n,{async:!0}):{async:!0},o=t._zod.run({value:i,issues:[]},r);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(a?.Err??e)(o.issues.map(e=>q(e,r,g())));throw C(t,a?.callee),t}return o.value},et=ee(K),ei=e=>(t,i,n)=>{let a=n?{...n,async:!1}:{async:!1},r=t._zod.run({value:i,issues:[]},a);if(r instanceof Promise)throw new f;return r.issues.length?{success:!1,error:new(e??J)(r.issues.map(e=>q(e,a,g())))}:{success:!0,data:r.value}},en=ei(K),ea=e=>async(t,i,n)=>{let a=n?Object.assign(n,{async:!0}):{async:!0},r=t._zod.run({value:i,issues:[]},a);return r instanceof Promise&&(r=await r),r.issues.length?{success:!1,error:new e(r.issues.map(e=>q(e,a,g())))}:{success:!0,data:r.value}},er=ea(K),eo=/^[cC][^\s-]{8,}$/,es=/^[0-9a-z]+$/,el=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ed=/^[0-9a-vA-V]{20}$/,ec=/^[A-Za-z0-9]{27}$/,eu=/^[a-zA-Z0-9_-]{21}$/,ep=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,em=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,ef=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,eh=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,ey=eh(4),eg=eh(6),eb=eh(7),ev=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,ew=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,ek=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,eS=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,ex=eS,ez=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function e_(){return RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")}let eI=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,eP=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,eA=e=>{let t=O(e??":");return RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},eC=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,e$=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,eD=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,eN=/^[A-Za-z0-9_-]*$/,eT=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,eE=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,eM=/^\+[1-9]\d{6,14}$/,eO="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ej=RegExp(`^${eO}$`);function eY(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function eL(e){return RegExp(`^${eY(e)}$`)}function eF(e){let t=eY({precision:e.precision}),i=["Z"];e.local&&i.push(""),e.offset&&i.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${i.join("|")})`;return RegExp(`^${eO}T(?:${n})$`)}let eZ=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return RegExp(`^${t}$`)},eR=/^-?\d+n?$/,eB=/^-?\d+$/,eU=/^-?\d+(?:\.\d+)?$/,eq=/^(?:true|false)$/i,eG=/^null$/i,eW=/^undefined$/i,eH=/^[^A-Z]*$/,eV=/^[^a-z]*$/,eJ=/^[0-9a-fA-F]*$/;function eK(e,t){return RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function eQ(e){return RegExp(`^[A-Za-z0-9_-]{${e}}$`)}let eX=/^[0-9a-fA-F]{32}$/,e0=eK(22,"=="),e1=eQ(22),e2=/^[0-9a-fA-F]{40}$/,e4=eK(27,"="),e5=eQ(27),e3=/^[0-9a-fA-F]{64}$/,e9=eK(43,"="),e6=eQ(43),e8=/^[0-9a-fA-F]{96}$/,e7=eK(64,""),te=eQ(64),tt=/^[0-9a-fA-F]{128}$/,ti=eK(86,"=="),tn=eQ(86),ta=m("$ZodCheck",(e,t)=>{var i;e._zod??(e._zod={}),e._zod.def=t,(i=e._zod).onattach??(i.onattach=[])}),tr={number:"number",bigint:"bigint",object:"date"},to=m("$ZodCheckLessThan",(e,t)=>{ta.init(e,t);let i=tr[typeof t.value];e._zod.onattach.push(e=>{let i=e._zod.bag,n=(t.inclusive?i.maximum:i.exclusiveMaximum)??1/0;t.value<n&&(t.inclusive?i.maximum=t.value:i.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:i,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ts=m("$ZodCheckGreaterThan",(e,t)=>{ta.init(e,t);let i=tr[typeof t.value];e._zod.onattach.push(e=>{let i=e._zod.bag,n=(t.inclusive?i.minimum:i.exclusiveMinimum)??-1/0;t.value>n&&(t.inclusive?i.minimum=t.value:i.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:i,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),tl=m("$ZodCheckMultipleOf",(e,t)=>{ta.init(e,t),e._zod.onattach.push(e=>{var i;(i=e._zod.bag).multipleOf??(i.multipleOf=t.value)}),e._zod.check=i=>{if(typeof i.value!=typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof i.value?i.value%t.value===BigInt(0):0===function(e,t){let i=(e.toString().split(".")[1]||"").length,n=t.toString(),a=(n.split(".")[1]||"").length;if(0===a&&/\d?e-\d?/.test(n)){let e=n.match(/\d?e-(\d?)/);e?.[1]&&(a=Number.parseInt(e[1]))}let r=i>a?i:a;return Number.parseInt(e.toFixed(r).replace(".",""))%Number.parseInt(t.toFixed(r).replace(".",""))/10**r}(i.value,t.value))||i.issues.push({origin:typeof i.value,code:"not_multiple_of",divisor:t.value,input:i.value,inst:e,continue:!t.abort})}}),td=m("$ZodCheckNumberFormat",(e,t)=>{ta.init(e,t),t.format=t.format||"float64";let i=t.format?.includes("int"),n=i?"int":"number",[a,r]=F[t.format];e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,n.minimum=a,n.maximum=r,i&&(n.pattern=eB)}),e._zod.check=o=>{let s=o.value;if(i){if(!Number.isInteger(s))return void o.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:s,inst:e});if(!Number.isSafeInteger(s))return void(s>0?o.issues.push({input:s,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}))}s<a&&o.issues.push({origin:"number",input:s,code:"too_small",minimum:a,inclusive:!0,inst:e,continue:!t.abort}),s>r&&o.issues.push({origin:"number",input:s,code:"too_big",maximum:r,inclusive:!0,inst:e,continue:!t.abort})}}),tc=m("$ZodCheckBigIntFormat",(e,t)=>{ta.init(e,t);let[i,n]=Z[t.format];e._zod.onattach.push(e=>{let a=e._zod.bag;a.format=t.format,a.minimum=i,a.maximum=n}),e._zod.check=a=>{let r=a.value;r<i&&a.issues.push({origin:"bigint",input:r,code:"too_small",minimum:i,inclusive:!0,inst:e,continue:!t.abort}),r>n&&a.issues.push({origin:"bigint",input:r,code:"too_big",maximum:n,inclusive:!0,inst:e,continue:!t.abort})}}),tu=m("$ZodCheckMaxSize",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!S(t)&&void 0!==t.size}),e._zod.onattach.push(e=>{let i=e._zod.bag.maximum??1/0;t.maximum<i&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=i=>{let n=i.value;n.size<=t.maximum||i.issues.push({origin:G(n),code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),tp=m("$ZodCheckMinSize",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!S(t)&&void 0!==t.size}),e._zod.onattach.push(e=>{let i=e._zod.bag.minimum??-1/0;t.minimum>i&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=i=>{let n=i.value;n.size>=t.minimum||i.issues.push({origin:G(n),code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),tm=m("$ZodCheckSizeEquals",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!S(t)&&void 0!==t.size}),e._zod.onattach.push(e=>{let i=e._zod.bag;i.minimum=t.size,i.maximum=t.size,i.size=t.size}),e._zod.check=i=>{let n=i.value,a=n.size;if(a===t.size)return;let r=a>t.size;i.issues.push({origin:G(n),...r?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!t.abort})}}),tf=m("$ZodCheckMaxLength",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!S(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{let i=e._zod.bag.maximum??1/0;t.maximum<i&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=i=>{let n=i.value;if(n.length<=t.maximum)return;let a=W(n);i.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),th=m("$ZodCheckMinLength",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!S(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{let i=e._zod.bag.minimum??-1/0;t.minimum>i&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=i=>{let n=i.value;if(n.length>=t.minimum)return;let a=W(n);i.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),ty=m("$ZodCheckLengthEquals",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!S(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{let i=e._zod.bag;i.minimum=t.length,i.maximum=t.length,i.length=t.length}),e._zod.check=i=>{let n=i.value,a=n.length;if(a===t.length)return;let r=W(n),o=a>t.length;i.issues.push({origin:r,...o?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!t.abort})}}),tg=m("$ZodCheckStringFormat",(e,t)=>{var i,n;ta.init(e,t),e._zod.onattach.push(e=>{let i=e._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(i=e._zod).check??(i.check=i=>{t.pattern.lastIndex=0,t.pattern.test(i.value)||i.issues.push({origin:"string",code:"invalid_format",format:t.format,input:i.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),tb=m("$ZodCheckRegex",(e,t)=>{tg.init(e,t),e._zod.check=i=>{t.pattern.lastIndex=0,t.pattern.test(i.value)||i.issues.push({origin:"string",code:"invalid_format",format:"regex",input:i.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),tv=m("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=eH),tg.init(e,t)}),tw=m("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=eV),tg.init(e,t)}),tk=m("$ZodCheckIncludes",(e,t)=>{ta.init(e,t);let i=O(t.includes),n=new RegExp("number"==typeof t.position?`^.{${t.position}}${i}`:i);t.pattern=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=i=>{i.value.includes(t.includes,t.position)||i.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:i.value,inst:e,continue:!t.abort})}}),tS=m("$ZodCheckStartsWith",(e,t)=>{ta.init(e,t);let i=RegExp(`^${O(t.prefix)}.*`);t.pattern??(t.pattern=i),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=i=>{i.value.startsWith(t.prefix)||i.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:i.value,inst:e,continue:!t.abort})}}),tx=m("$ZodCheckEndsWith",(e,t)=>{ta.init(e,t);let i=RegExp(`.*${O(t.suffix)}$`);t.pattern??(t.pattern=i),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=i=>{i.value.endsWith(t.suffix)||i.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:i.value,inst:e,continue:!t.abort})}});function tz(e,t,i){e.issues.length&&t.issues.push(...B(i,e.issues))}let t_=m("$ZodCheckProperty",(e,t)=>{ta.init(e,t),e._zod.check=e=>{let i=t.schema._zod.run({value:e.value[t.property],issues:[]},{});if(i instanceof Promise)return i.then(i=>tz(i,e,t.property));tz(i,e,t.property)}}),tI=m("$ZodCheckMimeType",(e,t)=>{ta.init(e,t);let i=new Set(t.mime);e._zod.onattach.push(e=>{e._zod.bag.mime=t.mime}),e._zod.check=n=>{i.has(n.value.type)||n.issues.push({code:"invalid_value",values:t.mime,input:n.value.type,inst:e,continue:!t.abort})}}),tP=m("$ZodCheckOverwrite",(e,t)=>{ta.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});class tA{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let t=e.split("\n").filter(e=>e),i=Math.min(...t.map(e=>e.length-e.trimStart().length));for(let e of t.map(e=>e.slice(i)).map(e=>" ".repeat(2*this.indent)+e))this.content.push(e)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}let tC={major:4,minor:3,patch:6},t$=m("$ZodType",(e,t)=>{var i;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=tC;let n=[...e._zod.def.checks??[]];for(let t of(e._zod.traits.has("$ZodCheck")&&n.unshift(e),n))for(let i of t._zod.onattach)i(e);if(0===n.length)(i=e._zod).deferred??(i.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,i)=>{let n,a=R(e);for(let r of t){if(r._zod.def.when){if(!r._zod.def.when(e))continue}else if(a)continue;let t=e.issues.length,o=r._zod.check(e);if(o instanceof Promise&&i?.async===!1)throw new f;if(n||o instanceof Promise)n=(n??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(a||(a=R(e,t)))});else{if(e.issues.length===t)continue;a||(a=R(e,t))}}return n?n.then(()=>e):e},i=(i,a,r)=>{if(R(i))return i.aborted=!0,i;let o=t(a,n,r);if(o instanceof Promise){if(!1===r.async)throw new f;return o.then(t=>e._zod.parse(t,r))}return e._zod.parse(o,r)};e._zod.run=(a,r)=>{if(r.skipChecks)return e._zod.parse(a,r);if("backward"===r.direction){let t=e._zod.parse({value:a.value,issues:[]},{...r,skipChecks:!0});return t instanceof Promise?t.then(e=>i(e,a,r)):i(t,a,r)}let o=e._zod.parse(a,r);if(o instanceof Promise){if(!1===r.async)throw new f;return o.then(e=>t(e,n,r))}return t(o,n,r)}}_(e,"~standard",()=>({validate:t=>{try{let i=en(e,t);return i.success?{value:i.data}:{issues:i.error?.issues}}catch(i){return er(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),tD=m("$ZodString",(e,t)=>{t$.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??eZ(e._zod.bag),e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=String(i.value)}catch(e){}return"string"==typeof i.value||i.issues.push({expected:"string",code:"invalid_type",input:i.value,inst:e}),i}}),tN=m("$ZodStringFormat",(e,t)=>{tg.init(e,t),tD.init(e,t)}),tT=m("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=ef),tN.init(e,t)}),tE=m("$ZodUUID",(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=eh(e))}else t.pattern??(t.pattern=eh());tN.init(e,t)}),tM=m("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=ev),tN.init(e,t)}),tO=m("$ZodURL",(e,t)=>{tN.init(e,t),e._zod.check=i=>{try{let n=i.value.trim(),a=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(a.hostname)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:i.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(a.protocol.endsWith(":")?a.protocol.slice(0,-1):a.protocol)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:i.value,inst:e,continue:!t.abort})),t.normalize?i.value=a.href:i.value=n;return}catch(n){i.issues.push({code:"invalid_format",format:"url",input:i.value,inst:e,continue:!t.abort})}}}),tj=m("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=e_()),tN.init(e,t)}),tY=m("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=eu),tN.init(e,t)}),tL=m("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=eo),tN.init(e,t)}),tF=m("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=es),tN.init(e,t)}),tZ=m("$ZodULID",(e,t)=>{t.pattern??(t.pattern=el),tN.init(e,t)}),tR=m("$ZodXID",(e,t)=>{t.pattern??(t.pattern=ed),tN.init(e,t)}),tB=m("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=ec),tN.init(e,t)}),tU=m("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=eF(t)),tN.init(e,t)}),tq=m("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=ej),tN.init(e,t)}),tG=m("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=eL(t)),tN.init(e,t)}),tW=m("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=ep),tN.init(e,t)}),tH=m("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=eI),tN.init(e,t),e._zod.bag.format="ipv4"}),tV=m("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=eP),tN.init(e,t),e._zod.bag.format="ipv6",e._zod.check=i=>{try{new URL(`http://[${i.value}]`)}catch{i.issues.push({code:"invalid_format",format:"ipv6",input:i.value,inst:e,continue:!t.abort})}}}),tJ=m("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=eA(t.delimiter)),tN.init(e,t),e._zod.bag.format="mac"}),tK=m("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=eC),tN.init(e,t)}),tQ=m("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=e$),tN.init(e,t),e._zod.check=i=>{let n=i.value.split("/");try{if(2!==n.length)throw Error();let[e,t]=n;if(!t)throw Error();let i=Number(t);if(`${i}`!==t||i<0||i>128)throw Error();new URL(`http://[${e}]`)}catch{i.issues.push({code:"invalid_format",format:"cidrv6",input:i.value,inst:e,continue:!t.abort})}}});function tX(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}let t0=m("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=eD),tN.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=i=>{tX(i.value)||i.issues.push({code:"invalid_format",format:"base64",input:i.value,inst:e,continue:!t.abort})}}),t1=m("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=eN),tN.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=i=>{!function(e){if(!eN.test(e))return!1;let t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return tX(t.padEnd(4*Math.ceil(t.length/4),"="))}(i.value)&&i.issues.push({code:"invalid_format",format:"base64url",input:i.value,inst:e,continue:!t.abort})}}),t2=m("$ZodE164",(e,t)=>{t.pattern??(t.pattern=eM),tN.init(e,t)}),t4=m("$ZodJWT",(e,t)=>{tN.init(e,t),e._zod.check=i=>{!function(e,t=null){try{let i=e.split(".");if(3!==i.length)return!1;let[n]=i;if(!n)return!1;let a=JSON.parse(atob(n));if("typ"in a&&a?.typ!=="JWT"||!a.alg||t&&(!("alg"in a)||a.alg!==t))return!1;return!0}catch{return!1}}(i.value,t.alg)&&i.issues.push({code:"invalid_format",format:"jwt",input:i.value,inst:e,continue:!t.abort})}}),t5=m("$ZodCustomStringFormat",(e,t)=>{tN.init(e,t),e._zod.check=i=>{t.fn(i.value)||i.issues.push({code:"invalid_format",format:t.format,input:i.value,inst:e,continue:!t.abort})}}),t3=m("$ZodNumber",(e,t)=>{t$.init(e,t),e._zod.pattern=e._zod.bag.pattern??eU,e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=Number(i.value)}catch(e){}let a=i.value;if("number"==typeof a&&!Number.isNaN(a)&&Number.isFinite(a))return i;let r="number"==typeof a?Number.isNaN(a)?"NaN":Number.isFinite(a)?void 0:"Infinity":void 0;return i.issues.push({expected:"number",code:"invalid_type",input:a,inst:e,...r?{received:r}:{}}),i}}),t9=m("$ZodNumberFormat",(e,t)=>{td.init(e,t),t3.init(e,t)}),t6=m("$ZodBoolean",(e,t)=>{t$.init(e,t),e._zod.pattern=eq,e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=!!i.value}catch(e){}let a=i.value;return"boolean"==typeof a||i.issues.push({expected:"boolean",code:"invalid_type",input:a,inst:e}),i}}),t8=m("$ZodBigInt",(e,t)=>{t$.init(e,t),e._zod.pattern=eR,e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=BigInt(i.value)}catch(e){}return"bigint"==typeof i.value||i.issues.push({expected:"bigint",code:"invalid_type",input:i.value,inst:e}),i}}),t7=m("$ZodBigIntFormat",(e,t)=>{tc.init(e,t),t8.init(e,t)}),ie=m("$ZodSymbol",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>{let n=t.value;return"symbol"==typeof n||t.issues.push({expected:"symbol",code:"invalid_type",input:n,inst:e}),t}}),it=m("$ZodUndefined",(e,t)=>{t$.init(e,t),e._zod.pattern=eW,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(t,i)=>{let n=t.value;return void 0===n||t.issues.push({expected:"undefined",code:"invalid_type",input:n,inst:e}),t}}),ii=m("$ZodNull",(e,t)=>{t$.init(e,t),e._zod.pattern=eG,e._zod.values=new Set([null]),e._zod.parse=(t,i)=>{let n=t.value;return null===n||t.issues.push({expected:"null",code:"invalid_type",input:n,inst:e}),t}}),ia=m("$ZodAny",(e,t)=>{t$.init(e,t),e._zod.parse=e=>e}),ir=m("$ZodUnknown",(e,t)=>{t$.init(e,t),e._zod.parse=e=>e}),io=m("$ZodNever",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)}),is=m("$ZodVoid",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>{let n=t.value;return void 0===n||t.issues.push({expected:"void",code:"invalid_type",input:n,inst:e}),t}}),il=m("$ZodDate",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=new Date(i.value)}catch(e){}let a=i.value,r=a instanceof Date;return r&&!Number.isNaN(a.getTime())||i.issues.push({expected:"date",code:"invalid_type",input:a,...r?{received:"Invalid Date"}:{},inst:e}),i}});function id(e,t,i){e.issues.length&&t.issues.push(...B(i,e.issues)),t.value[i]=e.value}let ic=m("$ZodArray",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!Array.isArray(a))return i.issues.push({expected:"array",code:"invalid_type",input:a,inst:e}),i;i.value=Array(a.length);let r=[];for(let e=0;e<a.length;e++){let o=a[e],s=t.element._zod.run({value:o,issues:[]},n);s instanceof Promise?r.push(s.then(t=>id(t,i,e))):id(s,i,e)}return r.length?Promise.all(r).then(()=>i):i}});function iu(e,t,i,n,a){if(e.issues.length){if(a&&!(i in n))return;t.issues.push(...B(i,e.issues))}void 0===e.value?i in n&&(t.value[i]=void 0):t.value[i]=e.value}function ip(e){var t;let i=Object.keys(e.shape);for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${t}": expected a Zod schema`);let n=Object.keys(t=e.shape).filter(e=>"optional"===t[e]._zod.optin&&"optional"===t[e]._zod.optout);return{...e,keys:i,keySet:new Set(i),numKeys:i.length,optionalKeys:new Set(n)}}function im(e,t,i,n,a,r){let o=[],s=a.keySet,l=a.catchall._zod,d=l.def.type,c="optional"===l.optout;for(let a in t){if(s.has(a))continue;if("never"===d){o.push(a);continue}let r=l.run({value:t[a],issues:[]},n);r instanceof Promise?e.push(r.then(e=>iu(e,i,a,t,c))):iu(r,i,a,t,c)}return(o.length&&i.issues.push({code:"unrecognized_keys",keys:o,input:t,inst:r}),e.length)?Promise.all(e).then(()=>i):i}let ih=m("$ZodObject",(e,t)=>{let i;t$.init(e,t);let n=Object.getOwnPropertyDescriptor(t,"shape");if(!n?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let i={...e};return Object.defineProperty(t,"shape",{value:i}),i}})}let a=k(()=>ip(t));_(e._zod,"propValues",()=>{let e=t.shape,i={};for(let t in e){let n=e[t]._zod;if(n.values)for(let e of(i[t]??(i[t]=new Set),n.values))i[t].add(e)}return i});let r=t.catchall;e._zod.parse=(t,n)=>{i??(i=a.value);let o=t.value;if(!$(o))return t.issues.push({expected:"object",code:"invalid_type",input:o,inst:e}),t;t.value={};let s=[],l=i.shape;for(let e of i.keys){let i=l[e],a="optional"===i._zod.optout,r=i._zod.run({value:o[e],issues:[]},n);r instanceof Promise?s.push(r.then(i=>iu(i,t,e,o,a))):iu(r,t,e,o,a)}return r?im(s,o,t,n,a.value,e):s.length?Promise.all(s).then(()=>t):t}}),iy=m("$ZodObjectJIT",(e,t)=>{let i,n;ih.init(e,t);let a=e._zod.parse,r=k(()=>ip(t)),o=!y.jitless,s=o&&D.value,l=t.catchall;e._zod.parse=(d,c)=>{n??(n=r.value);let u=d.value;return $(u)?o&&s&&c?.async===!1&&!0!==c.jitless?(i||(i=(e=>{let t=new tA(["shape","payload","ctx"]),i=r.value,n=e=>{let t=A(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");let a=Object.create(null),o=0;for(let e of i.keys)a[e]=`key_${o++}`;for(let r of(t.write("const newResult = {};"),i.keys)){let i=a[r],o=A(r),s=e[r],l=s?._zod?.optout==="optional";t.write(`const ${i} = ${n(r)};`),l?t.write(`
1
+ "use strict";exports.ids=["153"],exports.modules={975(e,t,i){i.d(t,{b:()=>o});var n=i(3353),a=i(2568);function r(e){return Number(e.toFixed(2))}function o(e){let t,i,o=(0,n.xm)(e.taxInput),s=r(e.importedDocuments.filter(e=>"w2"===e.type).reduce((e,t)=>"w2"===t.type||"federalWithheld"in t&&"number"==typeof t.federalWithheld?e+t.federalWithheld:e,0)),l=r(e.importedDocuments.filter(e=>"w2"!==e.type).reduce((e,t)=>"federalWithheld"in t&&"number"==typeof t.federalWithheld?e+t.federalWithheld:e,0)),d=r(Math.max(0,e.taxInput.federalWithheld-s-l)),u=o.tipIncomeDeduction||void 0,c=o.overtimePayDeduction||void 0,p=o.autoLoanInterestDeduction||void 0,m=a.iq.parse({taxYear:e.taxYear,filingStatus:e.filingStatus,additionalIncome:{line3BusinessIncomeOrLoss:e.taxInput.scheduleCNet||void 0,line8OtherIncome:e.taxInput.otherIncome||void 0,line10TotalAdditionalIncome:e.taxInput.scheduleCNet+e.taxInput.otherIncome||void 0},adjustments:{line11EducatorExpenses:e.taxInput.adjustments.educatorExpenses||void 0,line13HealthSavingsAccountDeduction:e.taxInput.adjustments.hsaDeduction||void 0,line15DeductiblePartOfSelfEmploymentTax:o.selfEmploymentTax>0?r(o.selfEmploymentTax/2):void 0,line20IraDeductions:e.taxInput.adjustments.iraDeduction||void 0,line21StudentLoanInterestDeduction:e.taxInput.adjustments.studentLoanInterest||void 0,line24ArcherMSADeduction:p,line25Reserved:u,line26TuitionAndFeesDeduction:c,line27TotalAdjustments:r(o.grossIncome-o.adjustedGrossIncome-(o.capitalGainsDetail?.capitalLossDeduction??0))||void 0}}),f=0!==e.taxInput.scheduleCNet?a.q$.parse({taxYear:e.taxYear,ownerName:`${e.taxpayer.firstName} ${e.taxpayer.lastName}`,ownerSsn:e.taxpayer.ssn,businessName:"Sole Proprietorship",principalBusinessOrProfession:"Self-employment",accountingMethod:"cash",income:{grossReceiptsOrSales:e.taxInput.scheduleCNet,otherIncome:e.taxInput.otherIncome||void 0},cogs:{},expenses:{},netProfitOrLoss:e.taxInput.scheduleCNet}):void 0,h=o.capitalGainsDetail;if(h){let n=h.totalNetGain,r=n>=0?n:-h.capitalLossDeduction;t=a.Jb.parse({taxYear:e.taxYear,filingStatus:e.filingStatus,part1ShortTerm:{line7NetShortTermGainOrLoss:h.netShortTerm||void 0},part2LongTerm:{line15NetLongTermGainOrLoss:h.netLongTerm||void 0},part3Summary:{line16CombinedGainOrLoss:n||void 0,line21CapitalGainOrLoss:r||void 0}}),i=0!==r?r:void 0}let y=r(o.federalTax+o.capitalGainsTax),g=a.tl.parse({taxYear:e.taxYear,filingStatus:e.filingStatus,taxpayer:e.taxpayer,spouse:e.spouse,mailingAddress:e.taxpayer.address,dependents:e.dependents,lines:{line1a:e.taxInput.wages||void 0,line2b:e.taxInput.taxableInterest||void 0,line3a:e.taxInput.capitalGains?.qualifiedDividends||void 0,line3b:e.taxInput.ordinaryDividends||void 0,line7:i,line8:m.additionalIncome.line10TotalAdditionalIncome,line9:r((e.taxInput.wages||0)+(e.taxInput.taxableInterest||0)+(e.taxInput.ordinaryDividends||0)+(i??0)+(m.additionalIncome.line10TotalAdditionalIncome??0)),line10:m.adjustments.line27TotalAdjustments,line11:o.adjustedGrossIncome,line12a:e.taxInput.useItemizedDeductions?void 0:o.deduction,line12b:e.taxInput.useItemizedDeductions?o.deduction:void 0,line12z:o.deduction,line13:o.taxableIncome,line14:y||o.federalTax,line16:y||o.federalTax,line17:o.selfEmploymentTax||void 0,line21:o.totalCredits||void 0,line24:o.totalTax,line25a:r(s+d)||void 0,line25b:l||void 0,line26:e.taxInput.estimatedPayments||void 0,line27:o.earnedIncomeCredit||void 0,line28:o.additionalChildTaxCredit||void 0,line33:o.totalPayments,line34:o.refund||void 0,line37:o.amountOwed||void 0}}),b={formId:e.formId,taxYear:e.taxYear,taxpayer:e.taxpayer,dependents:e.dependents,importedDocuments:e.importedDocuments,calculation:o,form1040:g,schedule1:m};return e.spouse&&(b.spouse=e.spouse),f&&(b.scheduleC=f),t&&(b.scheduleD=t),o.stateTax&&(b.stateTaxResult=o.stateTax),b}},5443(e,t,i){function n(e,t){let i=Math.max(0,e),n=0,a=0,r=[];for(let e of t){let t=e.upperBound??1/0,o=Math.min(i,t-a);if(o<=0)break;let s=l(o*e.rate);n+=s;let d={rate:e.rate,lowerBound:a,taxableAmount:l(o),taxAmount:s};void 0!==e.upperBound&&(d.upperBound=e.upperBound),r.push(d),i-=o,a=t}return{tax:l(n),breakdown:r}}function a(e,t){let i=l(Math.max(0,e)*t);return{tax:i,breakdown:[{rate:t,lowerBound:0,taxableAmount:l(Math.max(0,e)),taxAmount:i}]}}function r(e,t,i){let n=l(i.stateTax-i.stateCredits+i.localTax),a=l(Math.max(0,t.stateWithholding-n)),r=l(Math.max(0,n-t.stateWithholding));return{stateCode:e.stateCode,displayName:e.displayName,stateAgi:l(i.stateAgi),stateDeduction:l(i.stateDeduction),stateTaxableIncome:l(i.stateTaxableIncome),stateTax:l(i.stateTax),stateCredits:l(i.stateCredits),localTax:l(i.localTax),totalStateTax:l(n),stateWithholding:l(t.stateWithholding),stateRefund:a,stateOwed:r,effectiveRate:i.stateAgi>0?Number((n/i.stateAgi).toFixed(4)):0,breakdown:i.breakdown}}function o(e){let t=[];return t.push({id:`${e.stateCode.toLowerCase()}_taxable_income`,label:`${e.displayName} taxable income non-negative`,passed:e.stateTaxableIncome>=0,severity:"error",message:e.stateTaxableIncome>=0?"State taxable income is valid":"State taxable income is negative — review state adjustments"}),t.push({id:`${e.stateCode.toLowerCase()}_refund_owed_exclusive`,label:`${e.displayName} refund/owed exclusivity`,passed:0===e.stateRefund||0===e.stateOwed,severity:"error",message:0===e.stateRefund||0===e.stateOwed?"State refund and amount owed are mutually exclusive":"Cannot have both a state refund and amount owed"}),t}function s(e,t){return e[t]??e.single??0}function l(e){return Number(e.toFixed(2))}i.d(t,{Zp:()=>P,XH:()=>z});let d=new Set(["AK","FL","NV","NH","SD","TN","TX","WA","WY"]);function u(e){return d.has(e.toUpperCase())}let c={stateCode:"IL",displayName:"Illinois",taxType:"flat",standardDeduction:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},personalExemption:{single:2625,married_filing_jointly:5250,married_filing_separately:2625,head_of_household:2625},brackets:{single:[{rate:.0495}],married_filing_jointly:[{rate:.0495}],married_filing_separately:[{rate:.0495}],head_of_household:[{rate:.0495}]}},p={stateCode:"CA",displayName:"California",taxType:"progressive",standardDeduction:{single:5540,married_filing_jointly:11080,married_filing_separately:5540,head_of_household:11080},personalExemption:{single:144,married_filing_jointly:288,married_filing_separately:144,head_of_household:144},brackets:{single:[{upperBound:10756,rate:.01},{upperBound:25499,rate:.02},{upperBound:40245,rate:.04},{upperBound:55866,rate:.06},{upperBound:70606,rate:.08},{upperBound:360659,rate:.093},{upperBound:432787,rate:.103},{upperBound:721314,rate:.113},{upperBound:1e6,rate:.123},{rate:.133}],married_filing_jointly:[{upperBound:21512,rate:.01},{upperBound:50998,rate:.02},{upperBound:80490,rate:.04},{upperBound:111732,rate:.06},{upperBound:141212,rate:.08},{upperBound:721318,rate:.093},{upperBound:865574,rate:.103},{upperBound:1442628,rate:.113},{upperBound:2e6,rate:.123},{rate:.133}],married_filing_separately:[{upperBound:10756,rate:.01},{upperBound:25499,rate:.02},{upperBound:40245,rate:.04},{upperBound:55866,rate:.06},{upperBound:70606,rate:.08},{upperBound:360659,rate:.093},{upperBound:432787,rate:.103},{upperBound:721314,rate:.113},{upperBound:1e6,rate:.123},{rate:.133}],head_of_household:[{upperBound:21527,rate:.01},{upperBound:51e3,rate:.02},{upperBound:65744,rate:.04},{upperBound:81364,rate:.06},{upperBound:96107,rate:.08},{upperBound:490493,rate:.093},{upperBound:588593,rate:.103},{upperBound:980987,rate:.113},{upperBound:1e6,rate:.123},{rate:.133}]},specialRules:["Mental Health Services Tax: additional 1% on income over $1M","SDI (State Disability Insurance): 1.1% on first $153,164 of wages (employee-paid)","No deduction for state income tax paid (circular)","California does not conform to all federal tax provisions"]},m={stateCode:"NY",displayName:"New York",taxType:"progressive",standardDeduction:{single:8e3,married_filing_jointly:16050,married_filing_separately:8e3,head_of_household:11200},personalExemption:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},brackets:{single:[{upperBound:8500,rate:.04},{upperBound:11700,rate:.045},{upperBound:13900,rate:.0525},{upperBound:80650,rate:.0585},{upperBound:215400,rate:.0625},{upperBound:1077550,rate:.0685},{upperBound:5e6,rate:.0965},{upperBound:25e6,rate:.103},{rate:.109}],married_filing_jointly:[{upperBound:17150,rate:.04},{upperBound:23600,rate:.045},{upperBound:27900,rate:.0525},{upperBound:161550,rate:.0585},{upperBound:323200,rate:.0625},{upperBound:2155350,rate:.0685},{upperBound:5e6,rate:.0965},{upperBound:25e6,rate:.103},{rate:.109}],married_filing_separately:[{upperBound:8500,rate:.04},{upperBound:11700,rate:.045},{upperBound:13900,rate:.0525},{upperBound:80650,rate:.0585},{upperBound:215400,rate:.0625},{upperBound:1077550,rate:.0685},{upperBound:5e6,rate:.0965},{upperBound:25e6,rate:.103},{rate:.109}],head_of_household:[{upperBound:12800,rate:.04},{upperBound:17650,rate:.045},{upperBound:20900,rate:.0525},{upperBound:107650,rate:.0585},{upperBound:269300,rate:.0625},{upperBound:1616450,rate:.0685},{upperBound:5e6,rate:.0965},{upperBound:25e6,rate:.103},{rate:.109}]},specialRules:["NYC residents pay additional city income tax (3.078-3.876%)","Yonkers residents pay 16.75% surcharge on NY state tax","Metropolitan Commuter Transportation Mobility Tax for self-employed in MTA district","NY does not allow deduction for state/local income taxes paid"]},f={stateCode:"PA",displayName:"Pennsylvania",taxType:"flat",standardDeduction:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},personalExemption:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},brackets:{single:[{rate:.0307}],married_filing_jointly:[{rate:.0307}],married_filing_separately:[{rate:.0307}],head_of_household:[{rate:.0307}]},specialRules:["PA uses eight classes of income, each taxed at the flat rate","Retirement income (distributions from qualifying plans) is generally exempt","No standard deduction or personal exemption against taxable income","PA does not follow federal taxable income — uses its own income definition"]},h={stateCode:"NC",displayName:"North Carolina",taxType:"flat",standardDeduction:{single:12750,married_filing_jointly:25500,married_filing_separately:12750,head_of_household:19125},personalExemption:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},brackets:{single:[{rate:.045}],married_filing_jointly:[{rate:.045}],married_filing_separately:[{rate:.045}],head_of_household:[{rate:.045}]},specialRules:["NC tax base starts from federal AGI with NC-specific modifications","Flat rate of 4.5% for 2025 tax year","NC standard deduction is separate from federal standard deduction"]},y={stateCode:"MI",displayName:"Michigan",taxType:"flat",standardDeduction:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},personalExemption:{single:5600,married_filing_jointly:11200,married_filing_separately:5600,head_of_household:5600},brackets:{single:[{rate:.0425}],married_filing_jointly:[{rate:.0425}],married_filing_separately:[{rate:.0425}],head_of_household:[{rate:.0425}]},specialRules:["MI uses federal AGI as the starting point with MI modifications","Personal exemption of $5,600 per person (2025)","Detroit residents owe an additional 2.4% city income tax","Some other MI cities levy additional income taxes (typically 1-2%)"]},g={stateCode:"GA",displayName:"Georgia",taxType:"progressive",standardDeduction:{single:5400,married_filing_jointly:7100,married_filing_separately:3550,head_of_household:5400},personalExemption:{single:2700,married_filing_jointly:5400,married_filing_separately:2700,head_of_household:2700},brackets:{single:[{upperBound:750,rate:.01},{upperBound:2250,rate:.02},{upperBound:3750,rate:.03},{upperBound:5250,rate:.04},{upperBound:7e3,rate:.05},{rate:.0539}],married_filing_jointly:[{upperBound:1e3,rate:.01},{upperBound:3e3,rate:.02},{upperBound:5e3,rate:.03},{upperBound:7e3,rate:.04},{upperBound:1e4,rate:.05},{rate:.0539}],married_filing_separately:[{upperBound:750,rate:.01},{upperBound:2250,rate:.02},{upperBound:3750,rate:.03},{upperBound:5250,rate:.04},{upperBound:7e3,rate:.05},{rate:.0539}],head_of_household:[{upperBound:1e3,rate:.01},{upperBound:3e3,rate:.02},{upperBound:5e3,rate:.03},{upperBound:7e3,rate:.04},{upperBound:1e4,rate:.05},{rate:.0539}]},specialRules:["GA starts from federal AGI with Georgia-specific adjustments","Standard deduction and personal exemption are separate deductions","Top marginal rate of 5.39% applies to income above $7,000 (single)"]},b={stateCode:"VA",displayName:"Virginia",taxType:"progressive",standardDeduction:{single:8e3,married_filing_jointly:16e3,married_filing_separately:8e3,head_of_household:8e3},personalExemption:{single:930,married_filing_jointly:1860,married_filing_separately:930,head_of_household:930},brackets:{single:[{upperBound:3e3,rate:.02},{upperBound:5e3,rate:.03},{upperBound:17e3,rate:.05},{rate:.0575}],married_filing_jointly:[{upperBound:3e3,rate:.02},{upperBound:5e3,rate:.03},{upperBound:17e3,rate:.05},{rate:.0575}],married_filing_separately:[{upperBound:3e3,rate:.02},{upperBound:5e3,rate:.03},{upperBound:17e3,rate:.05},{rate:.0575}],head_of_household:[{upperBound:3e3,rate:.02},{upperBound:5e3,rate:.03},{upperBound:17e3,rate:.05},{rate:.0575}]},specialRules:["VA uses the same bracket thresholds for all filing statuses","Standard deduction: $8,000 single, $16,000 MFJ","Personal exemption: $930 per person","VA starts from federal AGI with Virginia-specific adjustments"]},v={stateCode:"NJ",displayName:"New Jersey",taxType:"progressive",standardDeduction:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},personalExemption:{single:1e3,married_filing_jointly:2e3,married_filing_separately:1e3,head_of_household:1e3},brackets:{single:[{upperBound:2e4,rate:.014},{upperBound:35e3,rate:.0175},{upperBound:4e4,rate:.035},{upperBound:75e3,rate:.05525},{upperBound:5e5,rate:.0637},{upperBound:1e6,rate:.0897},{rate:.1075}],married_filing_jointly:[{upperBound:2e4,rate:.014},{upperBound:5e4,rate:.0175},{upperBound:7e4,rate:.035},{upperBound:8e4,rate:.05525},{upperBound:15e4,rate:.0637},{upperBound:5e5,rate:.0897},{upperBound:1e6,rate:.1075},{rate:.1075}],married_filing_separately:[{upperBound:2e4,rate:.014},{upperBound:35e3,rate:.0175},{upperBound:4e4,rate:.035},{upperBound:75e3,rate:.05525},{upperBound:5e5,rate:.0637},{upperBound:1e6,rate:.0897},{rate:.1075}],head_of_household:[{upperBound:2e4,rate:.014},{upperBound:5e4,rate:.0175},{upperBound:7e4,rate:.035},{upperBound:8e4,rate:.05525},{upperBound:15e4,rate:.0637},{upperBound:5e5,rate:.0897},{upperBound:1e6,rate:.1075},{rate:.1075}]},specialRules:["NJ has no standard deduction — uses personal exemptions only","Personal exemption: $1,000 per person","NJ has its own gross income definition (does not start from federal AGI)","Bracket thresholds differ between single and joint filers","Top rate of 10.75% applies to income over $1M"]},w={stateCode:"OH",displayName:"Ohio",taxType:"progressive",standardDeduction:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},personalExemption:{single:0,married_filing_jointly:0,married_filing_separately:0,head_of_household:0},brackets:{single:[{upperBound:26050,rate:0},{upperBound:1e5,rate:.0275},{rate:.035}],married_filing_jointly:[{upperBound:26050,rate:0},{upperBound:1e5,rate:.0275},{rate:.035}],married_filing_separately:[{upperBound:26050,rate:0},{upperBound:1e5,rate:.0275},{rate:.035}],head_of_household:[{upperBound:26050,rate:0},{upperBound:1e5,rate:.0275},{rate:.035}]},specialRules:["First $26,050 of income is exempt (0% bracket)","No standard deduction or personal exemption — the 0% bracket serves this role","OH uses the same brackets for all filing statuses","Many OH cities levy additional municipal income tax (typically 1-3%)","OH starts from federal AGI with Ohio-specific adjustments"]},x=new Map;function k(e){x.set(e.stateCode.toUpperCase(),e)}function S(e){return x.get(e.toUpperCase())}function _(){return Array.from(x.values()).map(e=>({stateCode:e.stateCode,displayName:e.displayName,taxType:e.taxType}))}function I(e){return Number(e.toFixed(2))}k({stateCode:"IL",displayName:"Illinois",taxType:"flat",calculate(e){let t=e.federalAgi,i=s(c.personalExemption,e.filingStatus),n=Math.max(0,t-i),{tax:o,breakdown:l}=a(n,.0495);return r(c,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:n,stateTax:o,stateCredits:0,localTax:0,breakdown:l})},validate:o}),k({stateCode:"CA",displayName:"California",taxType:"progressive",calculate(e){let t=e.federalAgi,i=s(p.standardDeduction,e.filingStatus)+s(p.personalExemption,e.filingStatus),a=Math.max(0,t-i),{tax:o,breakdown:l}=n(a,p.brackets[e.filingStatus]??p.brackets.single),d=Number((.011*Math.min(e.wages,153164)).toFixed(2));return r(p,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:a,stateTax:o,stateCredits:0,localTax:d,breakdown:l})},validate:o}),k({stateCode:"NY",displayName:"New York",taxType:"progressive",calculate(e){let t=e.federalAgi,i=s(m.standardDeduction,e.filingStatus),a=Math.max(0,t-i),{tax:o,breakdown:l}=n(a,m.brackets[e.filingStatus]??m.brackets.single);return r(m,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:a,stateTax:o,stateCredits:0,localTax:0,breakdown:l})},validate:o}),k({stateCode:"PA",displayName:"Pennsylvania",taxType:"flat",calculate(e){let t=e.federalAgi,i=Math.max(0,t-0),{tax:n,breakdown:o}=a(i,.0307);return r(f,e,{stateAgi:t,stateDeduction:0,stateTaxableIncome:i,stateTax:n,stateCredits:0,localTax:0,breakdown:o})},validate:o}),k({stateCode:"NC",displayName:"North Carolina",taxType:"flat",calculate(e){let t=e.federalAgi,i=s(h.standardDeduction,e.filingStatus),n=Math.max(0,t-i),{tax:o,breakdown:l}=a(n,.045);return r(h,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:n,stateTax:o,stateCredits:0,localTax:0,breakdown:l})},validate:o}),k({stateCode:"MI",displayName:"Michigan",taxType:"flat",calculate(e){let t=e.federalAgi,i=s(y.personalExemption,e.filingStatus),n=Math.max(0,t-i),{tax:o,breakdown:l}=a(n,.0425);return r(y,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:n,stateTax:o,stateCredits:0,localTax:0,breakdown:l})},validate:o}),k({stateCode:"GA",displayName:"Georgia",taxType:"progressive",calculate(e){let t=e.federalAgi,i=s(g.standardDeduction,e.filingStatus)+s(g.personalExemption,e.filingStatus),a=Math.max(0,t-i),{tax:o,breakdown:l}=n(a,g.brackets[e.filingStatus]??g.brackets.single);return r(g,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:a,stateTax:o,stateCredits:0,localTax:0,breakdown:l})},validate:o}),k({stateCode:"VA",displayName:"Virginia",taxType:"progressive",calculate(e){let t=e.federalAgi,i=s(b.standardDeduction,e.filingStatus)+s(b.personalExemption,e.filingStatus),a=Math.max(0,t-i),{tax:o,breakdown:l}=n(a,b.brackets[e.filingStatus]??b.brackets.single);return r(b,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:a,stateTax:o,stateCredits:0,localTax:0,breakdown:l})},validate:o}),k({stateCode:"NJ",displayName:"New Jersey",taxType:"progressive",calculate(e){let t=e.federalAgi,i=s(v.personalExemption,e.filingStatus),a=Math.max(0,t-i),{tax:o,breakdown:l}=n(a,v.brackets[e.filingStatus]??v.brackets.single);return r(v,e,{stateAgi:t,stateDeduction:i,stateTaxableIncome:a,stateTax:o,stateCredits:0,localTax:0,breakdown:l})},validate:o}),k({stateCode:"OH",displayName:"Ohio",taxType:"progressive",calculate(e){let t=e.federalAgi,i=Math.max(0,t-0),{tax:a,breakdown:o}=n(i,w.brackets[e.filingStatus]??w.brackets.single);return r(w,e,{stateAgi:t,stateDeduction:0,stateTaxableIncome:i,stateTax:a,stateCredits:0,localTax:0,breakdown:o})},validate:o});let A={AL:"Alabama",AK:"Alaska",AZ:"Arizona",AR:"Arkansas",CA:"California",CO:"Colorado",CT:"Connecticut",DE:"Delaware",FL:"Florida",GA:"Georgia",HI:"Hawaii",ID:"Idaho",IL:"Illinois",IN:"Indiana",IA:"Iowa",KS:"Kansas",KY:"Kentucky",LA:"Louisiana",ME:"Maine",MD:"Maryland",MA:"Massachusetts",MI:"Michigan",MN:"Minnesota",MS:"Mississippi",MO:"Missouri",MT:"Montana",NE:"Nebraska",NV:"Nevada",NH:"New Hampshire",NJ:"New Jersey",NM:"New Mexico",NY:"New York",NC:"North Carolina",ND:"North Dakota",OH:"Ohio",OK:"Oklahoma",OR:"Oregon",PA:"Pennsylvania",RI:"Rhode Island",SC:"South Carolina",SD:"South Dakota",TN:"Tennessee",TX:"Texas",UT:"Utah",VT:"Vermont",VA:"Virginia",WA:"Washington",WV:"West Virginia",WI:"Wisconsin",WY:"Wyoming",DC:"District of Columbia"};function z(e){let t=e.state.toUpperCase(),i=A[t]??t;if(u(t))return{state:t,stateName:i,stateTaxableIncome:0,stateTax:0,stateCredits:0,stateEffectiveRate:0,stateWithheld:I(e.stateWithheld),stateEstimatedPayments:I(e.stateEstimatedPayments),stateRefund:I(e.stateWithheld+e.stateEstimatedPayments),stateOwed:0,brackets:[],notes:[`${i} does not levy a state income tax.`,..."NH"===t?["New Hampshire taxes interest and dividend income only (being phased out)."]:[],...e.stateWithheld>0?[`State withholding of $${e.stateWithheld.toFixed(2)} should be fully refunded.`]:[]],rawResult:null};let n=S(t);if(!n){let n=_().map(e=>e.stateCode).join(", ");return{state:t,stateName:i,stateTaxableIncome:0,stateTax:0,stateCredits:0,stateEffectiveRate:0,stateWithheld:I(e.stateWithheld),stateEstimatedPayments:I(e.stateEstimatedPayments),stateRefund:0,stateOwed:0,brackets:[],notes:[`State tax calculator not available for ${t}. Available states: ${n}`],rawResult:null}}let a=function(e){if(u(e.stateCode))return{stateCode:e.stateCode.toUpperCase(),displayName:`${e.stateCode.toUpperCase()} (no income tax)`,stateAgi:e.federalAgi,stateDeduction:0,stateTaxableIncome:0,stateTax:0,stateCredits:0,localTax:0,totalStateTax:0,stateWithholding:e.stateWithholding,stateRefund:e.stateWithholding,stateOwed:0,effectiveRate:0,breakdown:[]};let t=S(e.stateCode);return t?t.calculate(e):null}({stateCode:t,filingStatus:e.filingStatus,federalAgi:e.federalAGI,federalTaxableIncome:e.federalTaxableIncome,wages:e.wages,selfEmploymentIncome:0,interestIncome:0,dividendIncome:0,capitalGains:0,stateWithholding:e.stateWithheld+e.stateEstimatedPayments,residencyStatus:"full-year"});if(!a)return{state:t,stateName:i,stateTaxableIncome:0,stateTax:0,stateCredits:0,stateEffectiveRate:0,stateWithheld:I(e.stateWithheld),stateEstimatedPayments:I(e.stateEstimatedPayments),stateRefund:0,stateOwed:0,brackets:[],notes:[`Unexpected error calculating ${t} state tax.`],rawResult:null};let r=a.breakdown.map(e=>({rate:e.rate,amount:e.taxableAmount,tax:e.taxAmount})),o=[];return n.stateCode,a.localTax>0&&o.push(`Includes $${a.localTax.toFixed(2)} in local/ancillary taxes.`),a.stateCredits>0&&o.push(`Applied $${a.stateCredits.toFixed(2)} in state tax credits.`),{state:t,stateName:a.displayName,stateTaxableIncome:a.stateTaxableIncome,stateTax:a.totalStateTax,stateCredits:a.stateCredits,stateEffectiveRate:a.effectiveRate,stateWithheld:I(e.stateWithheld),stateEstimatedPayments:I(e.stateEstimatedPayments),stateRefund:a.stateRefund,stateOwed:a.stateOwed,brackets:r,notes:o,rawResult:a}}function P(){let e=_(),t=[];for(let i of e)t.push({stateCode:i.stateCode,stateName:i.displayName,taxType:i.taxType,hasCalculator:!0});for(let e of d)t.push({stateCode:e,stateName:A[e]??e,taxType:"none",hasCalculator:!0});return t.sort((e,t)=>e.stateCode.localeCompare(t.stateCode))}},3353(e,t,i){i.d(t,{xm:()=>w});let n={single:15750,married_filing_jointly:31500,married_filing_separately:15750,head_of_household:23625,qualifying_surviving_spouse:31500},a={single:[{upperBound:11925,rate:.1},{upperBound:48475,rate:.12},{upperBound:103350,rate:.22},{upperBound:197300,rate:.24},{upperBound:250525,rate:.32},{upperBound:626350,rate:.35},{rate:.37}],married_filing_jointly:[{upperBound:23850,rate:.1},{upperBound:96950,rate:.12},{upperBound:206700,rate:.22},{upperBound:394600,rate:.24},{upperBound:501050,rate:.32},{upperBound:751600,rate:.35},{rate:.37}],married_filing_separately:[{upperBound:11925,rate:.1},{upperBound:48475,rate:.12},{upperBound:103350,rate:.22},{upperBound:197300,rate:.24},{upperBound:250525,rate:.32},{upperBound:375800,rate:.35},{rate:.37}],head_of_household:[{upperBound:17e3,rate:.1},{upperBound:64850,rate:.12},{upperBound:103350,rate:.22},{upperBound:197300,rate:.24},{upperBound:250500,rate:.32},{upperBound:626350,rate:.35},{rate:.37}],qualifying_surviving_spouse:[{upperBound:23850,rate:.1},{upperBound:96950,rate:.12},{upperBound:206700,rate:.22},{upperBound:394600,rate:.24},{upperBound:501050,rate:.32},{upperBound:751600,rate:.35},{rate:.37}]},r={married_filing_jointly:4e5,single:2e5,married_filing_separately:2e5,head_of_household:2e5,qualifying_surviving_spouse:2e5},o={single:4e4,married_filing_jointly:4e4,married_filing_separately:2e4,head_of_household:4e4,qualifying_surviving_spouse:4e4},s={maxDeduction:25e3,agiThreshold:16e4},l={maxDeduction:1e4,agiThreshold:16e4},d={maxDeduction:1e4,agiThresholds:{single:1e5,married_filing_jointly:2e5,married_filing_separately:1e5,head_of_household:1e5,qualifying_surviving_spouse:2e5}},u={0:{qualifyingChildren:0,phaseInRate:.0765,phaseOutRate:.0765,earnedIncomeAmount:8490,maximumCredit:649,thresholdPhaseoutAmountMfJ:17730,thresholdPhaseoutAmountOther:10620,completedPhaseoutAmountMfJ:26214,completedPhaseoutAmountOther:19104},1:{qualifyingChildren:1,phaseInRate:.34,phaseOutRate:.1598,earnedIncomeAmount:12730,maximumCredit:4328,thresholdPhaseoutAmountMfJ:30470,thresholdPhaseoutAmountOther:23350,completedPhaseoutAmountMfJ:57554,completedPhaseoutAmountOther:50434},2:{qualifyingChildren:2,phaseInRate:.4,phaseOutRate:.2106,earnedIncomeAmount:17880,maximumCredit:7152,thresholdPhaseoutAmountMfJ:30470,thresholdPhaseoutAmountOther:23350,completedPhaseoutAmountMfJ:64430,completedPhaseoutAmountOther:57310},3:{qualifyingChildren:3,phaseInRate:.45,phaseOutRate:.2106,earnedIncomeAmount:17880,maximumCredit:8046,thresholdPhaseoutAmountMfJ:30470,thresholdPhaseoutAmountOther:23350,completedPhaseoutAmountMfJ:68675,completedPhaseoutAmountOther:61555}},c={single:[{rate:0,upperBound:48350},{rate:.15,upperBound:533400},{rate:.2}],married_filing_jointly:[{rate:0,upperBound:96700},{rate:.15,upperBound:600050},{rate:.2}],married_filing_separately:[{rate:0,upperBound:48350},{rate:.15,upperBound:300025},{rate:.2}],head_of_household:[{rate:0,upperBound:64750},{rate:.15,upperBound:566700},{rate:.2}],qualifying_surviving_spouse:[{rate:0,upperBound:96700},{rate:.15,upperBound:600050},{rate:.2}]},p={single:2e5,married_filing_jointly:25e4,married_filing_separately:125e3,head_of_household:2e5,qualifying_surviving_spouse:25e4},m={single:3e3,married_filing_jointly:3e3,married_filing_separately:1500,head_of_household:3e3,qualifying_surviving_spouse:3e3};function f(e){return Number(e.toFixed(2))}function h(e){return e<0?0:e}function y(e,t,i,n,a=0,r=0){let o,s=function(e,t){let i,n,a=e.shortTermGains-e.shortTermLosses-e.carryforwardLoss,r=e.longTermGains-e.longTermLosses;if(a<0&&r>0){let e=a+r;e>=0?(i=0,n=e):(i=e,n=0)}else if(r<0&&a>0){let e=a+r;e>=0?(i=e,n=0):(i=0,n=e)}else i=a,n=r;let o=i+n,s=0,l=0;return o<0&&(s=Math.min(m[t],Math.abs(o)),l=Math.abs(o)-s),{netShortTerm:f(i),netLongTerm:f(n),totalNetGain:f(o),capitalLossDeduction:f(s),carryforwardToNextYear:f(l)}}(e,t),{longTermCapitalGainsTax:l,qualifiedDividendsTax:d}=function(e,t,i,n){let a=h(i)+n;if(a<=0)return{longTermCapitalGainsTax:0,qualifiedDividendsTax:0};let r=c[e],o=h(t),s=a,l=0,d=0;for(let e of r){if(s<=0)break;let t=e.upperBound??1/0,i=h(t-Math.max(d,o));if(i>0){let t=Math.min(s,i);l+=t*e.rate,s-=t}d=t}if(l=f(l),a>0){let e=h(i)/a;return{longTermCapitalGainsTax:f(l*e),qualifiedDividendsTax:f(l*(1-e))}}return{longTermCapitalGainsTax:l,qualifiedDividendsTax:0}}(t,i,s.netLongTerm,e.qualifiedDividends),u=f(h(s.totalNetGain)+a+r+e.qualifiedDividends),g=(o=h(n-p[t]))<=0||u<=0?0:f(.038*Math.min(u,o));return{...s,qualifiedDividendsTax:d,longTermCapitalGainsTax:l,netInvestmentIncomeTax:g}}var g=i(5443);function b(e){return Number(e.toFixed(2))}function v(e){return e<0?0:e}function w(e){let t,i,c,p,m,f,h,w,x,k,S,_,I=function(e){if(e<=0)return 0;let t=.9235*e;return b(.124*Math.min(t,176100)+.029*t)}(e.scheduleCNet),A=e.adjustments.selfEmploymentTaxDeduction>0?e.adjustments.selfEmploymentTaxDeduction:b(I/2),z=b(e.adjustments.educatorExpenses+e.adjustments.hsaDeduction+A+e.adjustments.iraDeduction+e.adjustments.studentLoanInterest),P=e.capitalGains,C=void 0!==P&&(0!==P.shortTermGains||0!==P.shortTermLosses||0!==P.longTermGains||0!==P.longTermLosses||0!==P.qualifiedDividends||0!==P.carryforwardLoss),$=0,T=0;if(C&&P){let t=y(P,e.filingStatus,0,0);t.totalNetGain>0?$=t.totalNetGain:T=t.capitalLossDeduction}let D=b(e.wages+e.taxableInterest+e.ordinaryDividends+e.scheduleCNet+e.otherIncome+$),N=b(D-z-T),E=(c=e.tipIncome??0,p=e.overtimePay??0,m=e.autoLoanInterest??0,f=N<s.agiThreshold?Math.min(c,s.maxDeduction):0,h=N<l.agiThreshold?Math.min(p,l.maxDeduction):0,w=N<d.agiThresholds[e.filingStatus]?Math.min(m,d.maxDeduction):0,{tipIncomeDeduction:b(f),overtimePayDeduction:b(h),autoLoanInterestDeduction:b(w)}),M=b(E.tipIncomeDeduction+E.overtimePayDeduction+E.autoLoanInterestDeduction),O=b(z+M),j=b(D-O-T),L=e.useItemizedDeductions?0:(x=e.taxpayerAge??0,k=e.spouseAge??0,S="married_filing_jointly"===e.filingStatus||"married_filing_separately"===e.filingStatus||"qualifying_surviving_spouse"===e.filingStatus,_=0,S?(x>=65&&(_+=1600),k>=65&&(_+=1600)):x>=65&&(_+=2e3),_),B=e.saltDeduction??0,F=Math.min(B,o[e.filingStatus]),Y=B>0?b(e.itemizedDeductions-B+F):e.itemizedDeductions,R=b(e.useItemizedDeductions?Y:n[e.filingStatus]+L),Z=b(v(j-R)),G=Z,U=0,q=0;if(C&&P){let i=y(P,e.filingStatus,0,j,e.taxableInterest,e.ordinaryDividends);t=i;let n=v(i.netLongTerm)+P.qualifiedDividends;G=b(v(Z-n));let a=y(P,e.filingStatus,G,j,e.taxableInterest,e.ordinaryDividends);t=a,U=b(a.longTermCapitalGainsTax+a.qualifiedDividendsTax),q=a.netInvestmentIncomeTax}let W=function(e,t){let i=a[e],n=v(t),r=[],o=0,s=0,l=0;for(let e of i){let t=e.upperBound??n,i=Math.min(n,t)-o;if(i>0){let t=i*e.rate,n={rate:e.rate,lowerBound:o,taxableAmount:b(i),taxAmount:b(t)};void 0!==e.upperBound&&(n.upperBound=e.upperBound),r.push(n),s+=t,l=e.rate}if(o=t,void 0===e.upperBound||n<=t)break}return{tax:b(s),marginalRate:l,breakdown:r}}(e.filingStatus,G),V=function(e,t,i){let n=e.dependents.filter(e=>e.childTaxCreditEligible).length;if(0===n)return{totalChildTaxCredit:0,nonRefundableChildTaxCredit:0,additionalChildTaxCredit:0};let a=r[e.filingStatus],o=v(2200*n-(t>a?50*Math.ceil((t-a)/1e3):0)),s=Math.min(o,i),l=e.wages+v(e.scheduleCNet),d=.15*v(l-2500),u=Math.min(1900*n,v(o-s),d);return{totalChildTaxCredit:b(s+u),nonRefundableChildTaxCredit:b(s),additionalChildTaxCredit:b(u)}}(e,j,W.tax+U),H=function(e,t){if("married_filing_separately"===e.filingStatus)return 0;let i=u[Math.min(e.dependents.filter(e=>!!e.eitcEligible).length,3)],n=e.wages+v(e.scheduleCNet);if(n<=0)return 0;let a=Math.min(i.maximumCredit,n*i.phaseInRate),r=v(Math.max(n,t)-("married_filing_jointly"===e.filingStatus?i.thresholdPhaseoutAmountMfJ:i.thresholdPhaseoutAmountOther))*i.phaseOutRate;return b(v(a-r))}(e,j),J=b(V.totalChildTaxCredit+H),K=b(v(W.tax+U-V.nonRefundableChildTaxCredit)+I+q),X=b(e.federalWithheld+e.estimatedPayments+H+V.additionalChildTaxCredit),Q=b(v(X-K)),ee=b(v(K-X)),et=0===D?0:b(K/D);e.stateCode&&(i=(0,g.XH)({state:e.stateCode,federalAGI:j,federalTaxableIncome:Z,wages:e.wages,filingStatus:e.filingStatus,dependents:e.dependents.length,itemizedDeductions:e.itemizedDeductions,stateWithheld:e.stateWithheld??0,stateEstimatedPayments:e.stateEstimatedPayments??0,propertyTaxPaid:0,mortgageInterest:0,charitableContributions:0}));let ei={grossIncome:D,adjustedGrossIncome:j,deduction:R,taxableIncome:Z,federalTax:W.tax,selfEmploymentTax:I,capitalGainsTax:U,niitTax:q,totalTax:K,totalCredits:J,childTaxCredit:V.totalChildTaxCredit,earnedIncomeCredit:H,additionalChildTaxCredit:V.additionalChildTaxCredit,totalPayments:X,amountOwed:ee,refund:Q,effectiveRate:et,marginalRate:W.marginalRate,breakdown:W.breakdown,capitalGainsDetail:t,tipIncomeDeduction:E.tipIncomeDeduction,overtimePayDeduction:E.overtimePayDeduction,autoLoanInterestDeduction:E.autoLoanInterestDeduction,seniorStandardDeduction:L,saltDeductionApplied:F};return i&&(ei.stateTax=i),ei}},9955(e,t,i){function n(e){return Number(e.toFixed(2))}function a(e,t,i=.01){return Math.abs((e??0)-t)<=i}function r(e,t,i,n,a,o,s="error"){let l=i?`${t} matches.`:`${t} should be ${a.toFixed(2)} but was ${(o??0).toFixed(2)}.`,d={check:{id:e,label:t,passed:i,severity:s,message:l}};return i||(d.flag={field:n,severity:s,message:l,source:"validator"}),d}function o(e){let t=[],i=[],o=n((e.form1040.lines.line1a??0)+(e.form1040.lines.line2b??0)+(e.form1040.lines.line3b??0)+(e.form1040.lines.line7??0)+(e.form1040.lines.line8??0)),s=r("income-total","Form 1040 line 9 total income",a(e.form1040.lines.line9,o),"form1040.lines.line9",o,e.form1040.lines.line9);t.push(s.check),s.flag&&i.push(s.flag);let l=n((e.form1040.lines.line9??0)-(e.form1040.lines.line10??0)),d=r("agi","Form 1040 line 11 adjusted gross income",a(e.form1040.lines.line11,l),"form1040.lines.line11",l,e.form1040.lines.line11);t.push(d.check),d.flag&&i.push(d.flag);let u=n((e.form1040.lines.line12a??0)+(e.form1040.lines.line12b??0)),c=r("deduction-total","Form 1040 line 12z deduction",a(e.form1040.lines.line12z,u),"form1040.lines.line12z",u,e.form1040.lines.line12z);t.push(c.check),c.flag&&i.push(c.flag);let p=n(Math.max(0,(e.form1040.lines.line11??0)-(e.form1040.lines.line12z??0))),m=r("taxable-income","Form 1040 line 13 taxable income",a(e.form1040.lines.line13,p),"form1040.lines.line13",p,e.form1040.lines.line13);t.push(m.check),m.flag&&i.push(m.flag);let f=n(Math.max(0,(e.form1040.lines.line16??0)-(e.form1040.lines.line21??0))+(e.form1040.lines.line17??0)+(e.calculation.niitTax??0)),h=r("total-tax","Form 1040 line 24 total tax",a(e.form1040.lines.line24,f),"form1040.lines.line24",f,e.form1040.lines.line24);t.push(h.check),h.flag&&i.push(h.flag);let y=n((e.form1040.lines.line25a??0)+(e.form1040.lines.line25b??0)+(e.form1040.lines.line26??0)+(e.form1040.lines.line27??0)+(e.form1040.lines.line28??0)+(e.form1040.lines.line31??0)),g=r("payments-total","Form 1040 line 33 total payments",a(e.form1040.lines.line33,y),"form1040.lines.line33",y,e.form1040.lines.line33);t.push(g.check),g.flag&&i.push(g.flag);let b=(e.form1040.lines.line34??0)===0||(e.form1040.lines.line37??0)===0,v=b?"Refund and amount owed are mutually exclusive.":"A return cannot show both a refund and an amount owed.";if(t.push({id:"refund-exclusive",label:"Refund and amount owed exclusivity",passed:b,severity:"error",message:v}),b||(i.push({field:"form1040.lines.line34",severity:"error",message:v,source:"validator"}),i.push({field:"form1040.lines.line37",severity:"error",message:v,source:"validator"})),e.scheduleC){let n=r("schedule-c-net","Schedule C net profit consistency",a(e.schedule1.additionalIncome.line3BusinessIncomeOrLoss,e.scheduleC.netProfitOrLoss??0),"schedule1.additionalIncome.line3BusinessIncomeOrLoss",e.scheduleC.netProfitOrLoss??0,e.schedule1.additionalIncome.line3BusinessIncomeOrLoss,"warning");t.push(n.check),n.flag&&i.push(n.flag)}return{checks:t,flaggedFields:i}}i.d(t,{t:()=>o})},5284(e,t,i){i.d(t,{J:()=>n});function n(e){return{...e,structuredContent:{...e}}}},9206(e,t,i){i.d(t,{_3:()=>to,LE:()=>e1,mg:()=>eW,$N:()=>te,Ak:()=>eH,uq:()=>eQ,mW:()=>tt,AC:()=>ti,kO:()=>e2,fv:()=>e0,Lp:()=>e9,i3:()=>e8,vN:()=>eX,uG:()=>eK,RN:()=>eq,wg:()=>e3,n8:()=>eO,$d:()=>eV,dH:()=>tn,Ut:()=>e7,kV:()=>ta,xK:()=>e5,HX:()=>eU,op:()=>tr,IP:()=>e4,Dl:()=>e6});var n=i(3301),a=i(975),r=i(9955),o=i(3353),s=i(2568);function l(e){return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:2}).format(e)}function d(e){return e.replace(/[^\w]+/g,"-")}function u(e,t,i,n,a){return{id:e,label:t,passed:i,severity:n,message:a}}function c(e,t,i,n="workflow"){return{field:e,severity:t,message:i,source:n}}function p(e,t,i,n,a){return a?{id:e,label:t,required:i,status:"review",notes:a,source:"user-input"}:{id:e,label:t,required:i,status:n?"provided":"missing",source:"user-input"}}function m(e,t,i,n,a){let r=i.filter(e=>"provided"===e.status).length;return{headline:`${e}: ${t} (${r}/${i.length} evidence items ready)`,notes:a,flaggedFields:n}}function f(e,t){return[{kind:"bundle",label:"Workflow bundle JSON",format:"json",path:`${d(e)}-bundle.json`},{kind:"review",label:"Review PDF",format:"pdf",path:`${d(e)}-review.pdf`},{kind:"checklist",label:"Evidence checklist",format:"checklist",content:t}]}let h=n.YjP().trim().default("CA"),y=n.Ikc({street1:n.YjP().trim().default(""),street2:n.YjP().trim().optional(),city:n.YjP().trim().default(""),state:h,zipCode:n.YjP().trim().default("")}).strict(),g=n.Ikc({firstName:n.YjP().trim().default(""),lastName:n.YjP().trim().default(""),ssn:n.YjP().trim().default("000-00-0000"),address:y}).strict(),b=n.Ikc({name:n.YjP().trim().default(""),relationship:n.YjP().trim().default(""),age:n.auy.number().int().nonnegative().optional(),notes:n.YjP().trim().optional()}).strict(),v=n.Ikc({applicant:g,entityName:n.YjP().trim().min(1),state:h,locality:n.YjP().trim().min(1),industry:n.YjP().trim().min(1),needsProfessionalLicense:n.zMY().default(!1),hasZoningQuestions:n.zMY().default(!1),notes:n.YjP().trim().optional()}).strict(),w={"business/license-starter":{summary:{id:"business/license-starter",domain:"business",title:"Business license planner",summary:"Map local license, zoning, and entity-registration follow-up tasks for a new business.",status:"preview",audience:"business",tags:["business","license","zoning","registration"]},inputSchema:v,starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},entityName:"",state:"CA",locality:"",industry:"",needsProfessionalLicense:!1,hasZoningQuestions:!1},sections:[{id:"business",title:"Business setup",fields:[{key:"entityName",label:"Entity name",type:"text"},{key:"state",label:"State",type:"text"},{key:"locality",label:"City or county",type:"text"},{key:"industry",label:"Industry",type:"text"}]}],buildBundle(e){let t=[p("entity","Entity registration details",!0,!0),p("professional-license","Professional license checklist",e.needsProfessionalLicense,!e.needsProfessionalLicense),p("zoning","Zoning approval checklist",e.hasZoningQuestions,!e.hasZoningQuestions,e.hasZoningQuestions?"Review local zoning and occupancy requirements.":void 0)];return{workflowId:"business/license-starter",domain:"business",title:"Business license planner",summary:"Preview workflow for local business licensing planning.",applicant:e.applicant,household:[],evidence:t,answers:e,derived:{locality:e.locality,planningMode:"preview"},validation:{checks:[u("entity","Entity name provided",e.entityName.length>0,"error","Provide the business name.")],flaggedFields:[]},review:m("Business launch planning","preview workflow",t,[],[`Industry: ${e.industry}.`,`Locality: ${e.locality}, ${e.state}.`]),outputArtifacts:f("business-license-starter",t),provenance:["workflow-registry","business-planning-model"]}}}},x={"healthcare/aca-enrollment":{summary:{id:"healthcare/aca-enrollment",domain:"healthcare",title:"Healthcare enrollment planner",summary:"Organize household, income, and coverage evidence for marketplace enrollment review.",status:"active",audience:"household",tags:["healthcare","aca","marketplace","household","coverage"]},inputSchema:n.Ikc({applicant:g,household:n.YOg(b).default([]),stateOfResidence:h,annualHouseholdIncome:n.auy.number().nonnegative(),currentlyInsured:n.zMY().default(!1),qualifyingLifeEvent:n.zMY().default(!1),hasEmployerCoverageOffer:n.zMY().default(!1),needsDependentCoverage:n.zMY().default(!1),immigrationDocumentsAvailable:n.zMY().default(!0),incomeProofAvailable:n.zMY().default(!1),residenceProofAvailable:n.zMY().default(!1),preferredCoverageMonth:n.YjP().trim().min(1),notes:n.YjP().trim().optional()}).strict(),starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},household:[],stateOfResidence:"CA",annualHouseholdIncome:0,currentlyInsured:!1,qualifyingLifeEvent:!1,hasEmployerCoverageOffer:!1,needsDependentCoverage:!1,immigrationDocumentsAvailable:!0,incomeProofAvailable:!1,residenceProofAvailable:!1,preferredCoverageMonth:"January"},sections:[{id:"household",title:"Household",fields:[{key:"applicant.firstName",label:"Applicant first name",type:"text"},{key:"stateOfResidence",label:"State of residence",type:"text"},{key:"annualHouseholdIncome",label:"Annual household income",type:"currency"},{key:"preferredCoverageMonth",label:"Preferred coverage month",type:"text"}]},{id:"eligibility",title:"Eligibility",fields:[{key:"currentlyInsured",label:"Currently insured",type:"confirm"},{key:"qualifyingLifeEvent",label:"Qualifying life event",type:"confirm"},{key:"hasEmployerCoverageOffer",label:"Employer coverage offered",type:"confirm"},{key:"needsDependentCoverage",label:"Needs dependent coverage",type:"confirm"}]}],buildBundle(e){let t=e.household.length+1,i=e.annualHouseholdIncome/12,n=[p("income-proof","Income proof",!0,e.incomeProofAvailable),p("residence-proof","Residence proof",!0,e.residenceProofAvailable),p("immigration-docs","Immigration or citizenship documents",!0,e.immigrationDocumentsAvailable),p("employer-coverage","Employer coverage notice",e.hasEmployerCoverageOffer,!e.hasEmployerCoverageOffer,e.hasEmployerCoverageOffer?"Human review recommended to compare affordability and minimum value.":void 0)],a=[];!e.qualifyingLifeEvent&&e.currentlyInsured&&a.push(c("qualifyingLifeEvent","review","Outside open enrollment, a qualifying life event is usually needed to change coverage.")),e.hasEmployerCoverageOffer&&a.push(c("hasEmployerCoverageOffer","review","Employer-sponsored coverage may affect marketplace subsidies and needs a human check."));let r=[u("income-proof","Income proof available",e.incomeProofAvailable,"warning","Upload pay stubs or other income proof before submission review."),u("residence-proof","Residence proof available",e.residenceProofAvailable,"warning","Residence proof is often needed to complete enrollment review."),u("coverage-month","Coverage month selected",e.preferredCoverageMonth.trim().length>0,"error","Choose a target coverage month.")],o=n.filter(e=>"missing"===e.status).length;return{workflowId:"healthcare/aca-enrollment",domain:"healthcare",title:"Healthcare enrollment planner",summary:"Household-centric enrollment planner for marketplace review. PigeonGov does not file coverage applications for you.",applicant:e.applicant,household:e.household,evidence:n,answers:e,derived:{householdSize:t,monthlyIncome:i,coverageTrack:e.qualifyingLifeEvent?"special-enrollment-review":"open-enrollment-review"},validation:{checks:r,flaggedFields:a},review:m("Enrollment readiness",0===o?"ready for review":"missing documentation",n,a,[`Household size: ${t}.`,`Annual household income: ${l(e.annualHouseholdIncome)}.`,`Target effective month: ${e.preferredCoverageMonth}.`]),outputArtifacts:f("healthcare-aca-enrollment",n),provenance:["workflow-registry","healthcare-enrollment-model"]}}}},k=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),age:n.auy.number().int().nonnegative(),hasPartA:n.zMY().default(!1),hasPartB:n.zMY().default(!1),currentCoverage:n.YjP().trim().default("none"),annualIncome:n.auy.number().nonnegative(),filingStatus:n.k5n(["single","married_filing_jointly"])}).strict(),S=[{singleThreshold:103e3,mfjThreshold:206e3,surcharge:0},{singleThreshold:129e3,mfjThreshold:258e3,surcharge:70.9},{singleThreshold:161e3,mfjThreshold:322e3,surcharge:176.4},{singleThreshold:193e3,mfjThreshold:386e3,surcharge:281.9},{singleThreshold:5e5,mfjThreshold:75e4,surcharge:387.4},{singleThreshold:1/0,mfjThreshold:1/0,surcharge:419.3}],_={"healthcare/medicare-enrollment":{summary:{id:"healthcare/medicare-enrollment",domain:"healthcare",title:"Medicare enrollment planner",summary:"Assess Medicare eligibility, calculate IRMAA surcharges, and estimate late enrollment penalties.",status:"active",audience:"individual",tags:["medicare","healthcare","irmaa","enrollment","retirement"]},inputSchema:k,starterData:{applicantName:"",dob:"",age:0,hasPartA:!1,hasPartB:!1,currentCoverage:"none",annualIncome:0,filingStatus:"single"},sections:[{id:"eligibility",title:"Eligibility",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"age",label:"Current age",type:"number"},{key:"hasPartA",label:"Currently enrolled in Part A",type:"confirm"},{key:"hasPartB",label:"Currently enrolled in Part B",type:"confirm"}]},{id:"current-coverage",title:"Current Coverage",fields:[{key:"currentCoverage",label:"Current health coverage",type:"text",helpText:"Enter 'none' if uninsured"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual income (MAGI)",type:"currency"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"}]}]}],buildBundle:function(e){let t=e.age>=65,i=function(e,t){for(let i of S)if(e<=("single"===t?i.singleThreshold:i.mfjThreshold))return i.surcharge;return S[S.length-1].surcharge}(e.annualIncome,e.filingStatus),n=185+i,a="none"!==e.currentCoverage,r=!t||e.hasPartB||a?0:Math.max(0,e.age-65),o=.1*r*185,s=n+o,d=[p("ss-statement","Social Security statement",!0,t),p("current-insurance","Current insurance information",!0,a)],h=[];r>0&&h.push(c("lateEnrollment","warning",`Late enrollment penalty: ${l(o)}/month (${r} year(s) late at 10% penalty per year). This penalty is permanent.`)),i>0&&h.push(c("irmaa","review",`IRMAA surcharge of ${l(i)}/month applies based on income of ${l(e.annualIncome)}.`)),t||h.push(c("age","review",`Age ${e.age} — not yet eligible for Medicare (65+). Consider marketplace or employer coverage.`));let y=[u("age-eligible","Age 65 or older",t,"warning","Medicare eligibility begins at age 65."),u("part-b-enrolled","Part B enrollment",e.hasPartB,"warning","Part B covers outpatient care. Late enrollment incurs permanent penalties.")];return{workflowId:"healthcare/medicare-enrollment",domain:"healthcare",title:"Medicare enrollment planner",summary:"Medicare eligibility assessment with IRMAA calculation and late enrollment penalty estimation. PigeonGov does not enroll in Medicare.",applicant:void 0,household:[],evidence:d,answers:e,derived:{eligible:t,partBBasePremium:185,irmaaSurcharge:i,monthlyPremium:n,yearsLate:r,lateEnrollmentPenalty:o,totalMonthlyWithPenalty:s,hasCredibleCoverage:a},validation:{checks:y,flaggedFields:h},review:m("Medicare enrollment",t?`eligible — ${l(s)}/month total`:"not yet eligible",d,h,[`Applicant: ${e.applicantName}. Age: ${e.age}. DOB: ${e.dob}.`,`Eligibility: ${t?"eligible (65+)":"not yet eligible"}.`,`Part B base premium (2025): ${l(185)}/month.`,i>0?`IRMAA surcharge: ${l(i)}/month.`:"No IRMAA surcharge.",r>0?`Late enrollment penalty: ${l(o)}/month (${r} year(s) \xd7 10%).`:"",`Total estimated monthly premium: ${l(s)}.`,`Part A: ${e.hasPartA?"enrolled":"not enrolled"}. Part B: ${e.hasPartB?"enrolled":"not enrolled"}.`].filter(Boolean)),outputArtifacts:f("healthcare-medicare-enrollment",d),provenance:["workflow-registry"]}}}},I={"immigration/family-visa-intake":{summary:{id:"immigration/family-visa-intake",domain:"immigration",title:"Family visa packet intake",summary:"Build a household-centered family visa or adjustment packet checklist before attorney or human review.",status:"active",audience:"household",tags:["uscis","family","visa","packet","evidence"]},inputSchema:n.Ikc({applicant:g,beneficiary:n.Ikc({fullName:n.YjP().trim().min(1),relationship:n.YjP().trim().min(1),currentCountry:n.YjP().trim().min(1),currentlyInUnitedStates:n.zMY().default(!1)}).strict(),household:n.YOg(b).default([]),visaGoal:n.k5n(["family","fiance","employment","adjustment"]).default("family"),petitionerStatus:n.k5n(["uscitizen","permanent_resident","employer","other"]),hasPassportCopy:n.zMY().default(!1),hasBirthCertificate:n.zMY().default(!1),hasRelationshipEvidence:n.zMY().default(!1),hasFinancialSponsor:n.zMY().default(!1),priorVisaDenials:n.zMY().default(!1),needsTranslation:n.zMY().default(!1),workAuthorizationRequested:n.zMY().default(!1),notes:n.YjP().trim().optional()}).strict(),starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},beneficiary:{fullName:"",relationship:"spouse",currentCountry:"",currentlyInUnitedStates:!1},household:[],visaGoal:"family",petitionerStatus:"uscitizen",hasPassportCopy:!1,hasBirthCertificate:!1,hasRelationshipEvidence:!1,hasFinancialSponsor:!1,priorVisaDenials:!1,needsTranslation:!1,workAuthorizationRequested:!1},sections:[{id:"sponsor",title:"Petitioner",fields:[{key:"applicant.firstName",label:"Petitioner first name",type:"text"},{key:"applicant.lastName",label:"Petitioner last name",type:"text"},{key:"petitionerStatus",label:"Petitioner status",type:"select",options:[{label:"US citizen",value:"uscitizen"},{label:"Permanent resident",value:"permanent_resident"},{label:"Employer",value:"employer"},{label:"Other",value:"other"}]}]},{id:"beneficiary",title:"Beneficiary",fields:[{key:"beneficiary.fullName",label:"Beneficiary full name",type:"text"},{key:"beneficiary.relationship",label:"Relationship",type:"text"},{key:"beneficiary.currentCountry",label:"Current country",type:"text"},{key:"beneficiary.currentlyInUnitedStates",label:"Currently in the United States",type:"confirm"}]},{id:"evidence",title:"Evidence",fields:[{key:"hasPassportCopy",label:"Passport copy available",type:"confirm"},{key:"hasBirthCertificate",label:"Birth certificate available",type:"confirm"},{key:"hasRelationshipEvidence",label:"Relationship evidence available",type:"confirm"},{key:"hasFinancialSponsor",label:"Financial sponsor ready",type:"confirm"}]}],buildBundle(e){let t=[p("passport","Passport biographic page",!0,e.hasPassportCopy),p("birth","Birth certificate",!0,e.hasBirthCertificate),p("relationship","Relationship evidence",!0,e.hasRelationshipEvidence),p("financial","Financial sponsor package",!0,e.hasFinancialSponsor),p("translations","Certified translations",e.needsTranslation,!e.needsTranslation,e.needsTranslation?"Confirm each non-English civil document has a translation.":void 0)],i=[];e.priorVisaDenials&&i.push(c("priorVisaDenials","review","Prior denials usually require a human review of prior filings and refusal notices.")),e.hasFinancialSponsor||i.push(c("hasFinancialSponsor","warning","Most family visa packets need a support affidavit or equivalent sponsor evidence.")),e.hasRelationshipEvidence||i.push(c("hasRelationshipEvidence","error","Relationship evidence is missing for a family-based packet."));let n=[u("beneficiary-name","Beneficiary identity captured",e.beneficiary.fullName.trim().length>0,"error","Provide the beneficiary legal name."),u("relationship-evidence","Relationship evidence captured",e.hasRelationshipEvidence,"error","Relationship evidence is required for packet assembly."),u("passport-copy","Passport copy available",e.hasPassportCopy,"warning","Passport copy is recommended before packet review.")],a=t.filter(e=>"missing"===e.status).length;return{workflowId:"immigration/family-visa-intake",domain:"immigration",title:"Family visa packet intake",summary:"Packet planner for family visa and adjustment-style evidence assembly. PigeonGov does not submit to USCIS.",applicant:e.applicant,household:[{name:e.beneficiary.fullName,relationship:e.beneficiary.relationship},...e.household],evidence:t,answers:e,derived:{packetTrack:e.beneficiary.currentlyInUnitedStates?"adjustment-review":"consular-review",missingEvidenceCount:a,workAuthorizationRequested:e.workAuthorizationRequested},validation:{checks:n,flaggedFields:i},review:m("Visa packet readiness",0===a?"ready for human review":"needs more evidence",t,i,[`${e.beneficiary.fullName} is being reviewed for a ${e.visaGoal} packet.`,`Recommended track: ${e.beneficiary.currentlyInUnitedStates?"adjustment of status review":"consular packet review"}.`,`Missing evidence items: ${a}.`]),outputArtifacts:f("immigration-family-visa-intake",t),provenance:["workflow-registry","immigration-evidence-model"]}}}},A=n.Ikc({departure:n.YjP().trim().min(1),return:n.YjP().trim().min(1),destination:n.YjP().trim().min(1)}).strict(),z=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),greenCardDate:n.YjP().trim().min(1),residencePeriod:n.auy.number().int().nonnegative(),physicalPresenceDays:n.auy.number().int().nonnegative(),tripsAbroad:n.YOg(A).default([]),employmentHistory:n.YOg(n.YjP().trim().min(1)).default([]),hasGoodMoralCharacter:n.zMY().default(!0),englishProficiency:n.k5n(["fluent","basic","exempt"]),civicsReady:n.zMY().default(!1),maritalStatus:n.YjP().trim().min(1)}).strict(),P=n.Ikc({applicantName:n.YjP().trim().min(1),cardExpirationDate:n.YjP().trim().min(1),cardType:n.k5n(["10year","2year-conditional"]),reason:n.k5n(["expiring","lost","damaged","name-change"]),isConditional:n.zMY().default(!1),hasJointFiling:n.zMY().default(!1)}).strict(),C=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),lastApprovalDate:n.YjP().trim().min(1),expirationDate:n.YjP().trim().min(1),hasContinuousPresence:n.zMY().default(!0),hasConvictions:n.zMY().default(!1),advanceParoleHistory:n.zMY().default(!1)}).strict(),$=n.Ikc({applicantName:n.YjP().trim().min(1),category:n.k5n(["marriage","asylum","student-opt","student-cpt","ead-renewal"]),currentEadExpiration:n.YjP().trim().optional(),gapDays:n.auy.number().int().nonnegative().optional()}).strict(),T={marriage:"5-8 months",asylum:"3-5 months","student-opt":"3-5 months","student-cpt":"1-3 months","ead-renewal":"5-8 months"},D={marriage:"I-485 receipt notice",asylum:"Asylum approval or pending notice","student-opt":"I-20 with OPT recommendation","student-cpt":"I-20 with CPT authorization","ead-renewal":"Current/expired EAD card"},N={"immigration/naturalization":{summary:{id:"immigration/naturalization",domain:"immigration",title:"Naturalization eligibility review",summary:"Assess N-400 eligibility including physical presence, continuous residence, and civics/English readiness.",status:"active",audience:"individual",tags:["uscis","naturalization","n-400","citizenship","civics"]},inputSchema:z,starterData:{applicantName:"",dob:"",greenCardDate:"",residencePeriod:0,physicalPresenceDays:0,tripsAbroad:[],employmentHistory:[],hasGoodMoralCharacter:!0,englishProficiency:"fluent",civicsReady:!1,maritalStatus:""},sections:[{id:"eligibility",title:"Eligibility",description:"Core eligibility factors for N-400.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"greenCardDate",label:"Green card issue date",type:"date"},{key:"maritalStatus",label:"Marital status",type:"text"}]},{id:"residence",title:"Residence",description:"Continuous residence and statutory period.",fields:[{key:"residencePeriod",label:"Months of residence",type:"number"}]},{id:"physical-presence",title:"Physical Presence",description:"Physical presence in the US and trips abroad.",fields:[{key:"physicalPresenceDays",label:"Days physically present",type:"number"}]},{id:"background",title:"Background",description:"Moral character and background check.",fields:[{key:"hasGoodMoralCharacter",label:"Good moral character",type:"confirm"}]},{id:"english-civics",title:"English & Civics",description:"English proficiency and civics test readiness.",fields:[{key:"englishProficiency",label:"English proficiency",type:"select",options:[{label:"Fluent",value:"fluent"},{label:"Basic",value:"basic"},{label:"Exempt",value:"exempt"}]},{key:"civicsReady",label:"Civics test ready",type:"confirm"}]}],buildBundle(e){let t=function(e){let t=0,i=0,n=!1,a=!1,r=[];for(let o of e){let e=function(e,t){let i=new Date(e);return Math.max(0,Math.ceil((new Date(t).getTime()-i.getTime())/864e5))}(o.departure,o.return);t+=e,e>i&&(i=e),e>365?(a=!0,r.push(`Trip to ${o.destination} (${e} days) exceeds 1 year -- this resets the statutory period clock.`)):e>180&&(n=!0,r.push(`Trip to ${o.destination} (${e} days) exceeds 6 months -- may break continuous residence.`))}return{totalTripDays:t,longestTripDays:i,breaksContinuousResidence:n,resetsClock:a,tripWarnings:r}}(e.tripsAbroad),i=e.maritalStatus.toLowerCase().includes("married"),n=i?18:30,a=i?36:60,r=Math.floor((30*a-t.totalTripDays)/30),o=[p("green-card","Permanent resident card (green card)",!0,!0),p("passport","Current passport",!0,!0),p("tax-returns","Federal tax returns (last 5 years)",!0,e.employmentHistory.length>0),p("travel-records","Travel records and trip documentation",e.tripsAbroad.length>0,e.tripsAbroad.length>0),p("employment-records","Employment history records",!0,e.employmentHistory.length>0)],s=[];if(t.resetsClock)for(let e of t.tripWarnings.filter(e=>e.includes("resets")))s.push(c("tripsAbroad","error",e));if(t.breaksContinuousResidence)for(let e of t.tripWarnings.filter(e=>e.includes("break")))s.push(c("tripsAbroad","warning",e));e.hasGoodMoralCharacter||s.push(c("hasGoodMoralCharacter","review","Applicant indicated potential moral character concerns -- attorney review strongly recommended."));let d=[u("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant legal name."),u("physical-presence","Physical presence sufficient",r>=n,"error",`Must be physically present at least ${n} of ${a} months. Current: ~${r} months.`),u("continuous-residence","Continuous residence maintained",!t.breaksContinuousResidence&&!t.resetsClock,"warning","A trip exceeding 6 months may disrupt continuous residence."),u("civics-ready","Civics test readiness",e.civicsReady,"warning","Prepare for the civics and English test before the interview.")],h=t.resetsClock?"reset (trip > 1 year)":t.breaksContinuousResidence?"potentially broken (trip > 6 months)":"maintained",y=r>=n&&!t.resetsClock&&e.civicsReady?"appears eligible":"needs further review";return{workflowId:"immigration/naturalization",domain:"immigration",title:"Naturalization eligibility review",summary:"N-400 readiness assessment. PigeonGov does not submit applications to USCIS.",household:[],evidence:o,answers:e,derived:{track:i?"3-year marriage":"5-year standard",physicalPresenceMonths:r,requiredPresenceMonths:n,totalTripDays:t.totalTripDays,longestTripDays:t.longestTripDays,continuousResidence:h,fee:760},validation:{checks:d,flaggedFields:s},review:m("Naturalization readiness",y,o,s,[`Naturalization readiness: ${y}. Physical presence: ~${r}/${n} months. Continuous residence: ${h}.`,`Track: ${i?"3-year marriage":"5-year standard"}.`,`Filing fee: ${l(760)}.`]),outputArtifacts:f("immigration-naturalization",o),provenance:["workflow-registry","naturalization-eligibility-model"]}}},"immigration/green-card-renewal":{summary:{id:"immigration/green-card-renewal",domain:"immigration",title:"Green card renewal",summary:"Route to I-90 (10-year renewal) or I-751 (conditional removal) with fee calculation and evidence planning.",status:"active",audience:"individual",tags:["uscis","green-card","i-90","i-751","renewal"]},inputSchema:P,starterData:{applicantName:"",cardExpirationDate:"",cardType:"10year",reason:"expiring",isConditional:!1,hasJointFiling:!1},sections:[{id:"card-info",title:"Card Information",description:"Details about the current green card.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"cardExpirationDate",label:"Card expiration date",type:"date"},{key:"cardType",label:"Card type",type:"select",options:[{label:"10-year permanent",value:"10year"},{label:"2-year conditional",value:"2year-conditional"}]}]},{id:"renewal-type",title:"Renewal Type",description:"Reason for renewal and filing details.",fields:[{key:"reason",label:"Reason for renewal",type:"select",options:[{label:"Expiring",value:"expiring"},{label:"Lost",value:"lost"},{label:"Damaged",value:"damaged"},{label:"Name change",value:"name-change"}]},{key:"isConditional",label:"Conditional resident",type:"confirm"},{key:"hasJointFiling",label:"Joint filing with spouse",type:"confirm"}]}],buildBundle(e){let t="2year-conditional"===e.cardType||e.isConditional,i=t?"I-751":"I-90",n=t?595:540,a=[p("current-card-front","Current green card (front)",!0,!0),p("current-card-back","Current green card (back)",!0,!0),p("passport-photos","Passport-style photos",!0,!0)];t&&a.push(p("bona-fide-marriage","Evidence of bona fide marriage (joint accounts, leases, children, etc.)",!0,!1,"Conditional residents must demonstrate the marriage is genuine."));let r=[];if(t&&e.cardExpirationDate){let t=new Date(e.cardExpirationDate),i=new Date;i.setMonth(i.getMonth()-6),t<i&&r.push(c("cardExpirationDate","warning","Conditional card expired more than 6 months ago -- late filing may complicate the case."))}t&&!e.hasJointFiling&&r.push(c("hasJointFiling","review","I-751 without joint filing requires a waiver -- attorney review recommended."));let o=[u("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant name."),u("expiration-date","Expiration date provided",e.cardExpirationDate.trim().length>0,"error","Provide the card expiration date.")],s=a.filter(e=>"missing"===e.status).length;return{workflowId:"immigration/green-card-renewal",domain:"immigration",title:"Green card renewal",summary:`${i} filing organizer. PigeonGov does not submit forms to USCIS.`,household:[],evidence:a,answers:e,derived:{formRoute:i,fee:n,isConditional:t,needsWaiver:t&&!e.hasJointFiling},validation:{checks:o,flaggedFields:r},review:m("Green card renewal",0===s?"ready for review":"needs more evidence",a,r,[`Form: ${i}. Filing fee: ${l(n)}.`,`Card type: ${e.cardType}. Reason: ${e.reason}.`,t&&!e.hasJointFiling?"Waiver required: filing without joint petitioner.":""].filter(Boolean)),outputArtifacts:f("immigration-green-card-renewal",a),provenance:["workflow-registry","green-card-renewal-model"]}}},"immigration/daca-renewal":{summary:{id:"immigration/daca-renewal",domain:"immigration",title:"DACA renewal",summary:"Assess DACA renewal timing window, continuous presence, and background eligibility.",status:"active",audience:"individual",tags:["uscis","daca","renewal","ead","deferred-action"]},inputSchema:C,starterData:{applicantName:"",dob:"",lastApprovalDate:"",expirationDate:"",hasContinuousPresence:!0,hasConvictions:!1,advanceParoleHistory:!1},sections:[{id:"current-status",title:"Current Status",description:"Current DACA approval details.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"lastApprovalDate",label:"Last approval date",type:"date"},{key:"expirationDate",label:"Expiration date",type:"date"}]},{id:"eligibility-maintenance",title:"Eligibility Maintenance",description:"Continuous presence and eligibility factors.",fields:[{key:"hasContinuousPresence",label:"Continuous presence maintained",type:"confirm"}]},{id:"background",title:"Background",description:"Criminal history and travel records.",fields:[{key:"hasConvictions",label:"Any convictions",type:"confirm"},{key:"advanceParoleHistory",label:"Advance parole travel history",type:"confirm"}]}],buildBundle(e){let t,i="unknown";if(e.expirationDate){let n=new Date(e.expirationDate),a=new Date;(t=Math.ceil((n.getTime()-a.getTime())/864e5))<0?i="expired":t>150?i="too early (risk of rejection)":t>=120&&t<=150?i="optimal window":t<120&&(i="late (submit immediately)")}let n=[p("previous-ead","Previous EAD card",!0,!0),p("continuous-presence","Proof of continuous presence (utility bills, school records, etc.)",!0,e.hasContinuousPresence),p("school-work-records","School enrollment or employment records",!0,!1,"Gather recent school transcripts or pay stubs.")],a=[];void 0!==t&&t>150&&a.push(c("expirationDate","warning",`Submitting ${t} days before expiration -- USCIS may reject renewals filed more than 150 days early.`)),e.hasConvictions&&a.push(c("hasConvictions","review","Any criminal conviction must be reviewed by an attorney before filing a DACA renewal.")),e.advanceParoleHistory&&a.push(c("advanceParoleHistory","review","Advance parole travel history may affect re-entry eligibility -- attorney review recommended."));let r=[u("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant name."),u("continuous-presence","Continuous presence maintained",e.hasContinuousPresence,"error","Continuous presence is required for DACA renewal."),u("no-convictions","No disqualifying convictions",!e.hasConvictions,"warning","Convictions require careful legal review before filing.")];return n.filter(e=>"missing"===e.status).length,{workflowId:"immigration/daca-renewal",domain:"immigration",title:"DACA renewal",summary:"DACA renewal readiness assessment. PigeonGov does not submit applications to USCIS.",household:[],evidence:n,answers:e,derived:{fee:495,daysUntilExpiration:t,renewalWindowStatus:i,gapRisk:void 0!==t&&t<0},validation:{checks:r,flaggedFields:a},review:m("DACA renewal readiness","optimal window"!==i||e.hasConvictions?"needs review":"ready for filing",n,a,[`Renewal window: ${i}.`,void 0!==t?`Days until expiration: ${t}.`:"Expiration date not provided.",`Filing fee: ${l(495)} (biometrics included).`]),outputArtifacts:f("immigration-daca-renewal",n),provenance:["workflow-registry","daca-renewal-model"]}}},"immigration/work-authorization":{summary:{id:"immigration/work-authorization",domain:"immigration",title:"Work authorization (EAD)",summary:"Plan EAD application by category with evidence requirements, processing time estimates, and gap coverage strategy.",status:"active",audience:"individual",tags:["uscis","ead","work-permit","employment-authorization"]},inputSchema:$,starterData:{applicantName:"",category:"marriage"},sections:[{id:"category",title:"Category",description:"EAD application category.",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"category",label:"Authorization category",type:"select",options:[{label:"Marriage-based",value:"marriage"},{label:"Asylum",value:"asylum"},{label:"Student OPT",value:"student-opt"},{label:"Student CPT",value:"student-cpt"},{label:"EAD renewal",value:"ead-renewal"}]}]},{id:"current-status",title:"Current Status",description:"Current EAD details if applicable.",fields:[{key:"currentEadExpiration",label:"Current EAD expiration",type:"date"},{key:"gapDays",label:"Gap days in authorization",type:"number"}]},{id:"timeline",title:"Timeline",description:"Processing expectations and strategy.",fields:[]}],buildBundle(e){let t=T[e.category],i=D[e.category],n=[p("category-evidence",i,!0,!1,`Required for ${e.category} category EAD.`)];"marriage"===e.category?n.push(p("i-485-receipt","I-485 receipt notice",!0,!1)):"asylum"===e.category?n.push(p("asylum-notice","Asylum approval or pending notice",!0,!1)):("student-opt"===e.category||"student-cpt"===e.category)&&n.push(p("i-20","I-20 with school endorsement",!0,!1));let a=[],r=e.gapDays??0;r>0&&a.push(c("gapDays","warning",`${r} days of gap in work authorization -- unauthorized employment during a gap creates serious immigration consequences.`)),e.currentEadExpiration&&new Date(e.currentEadExpiration)<new Date&&a.push(c("currentEadExpiration","error","Current EAD has expired. Check whether an automatic extension applies under 8 CFR 274a.13(d)."));let o=[u("applicant-name","Applicant identified",e.applicantName.trim().length>0,"error","Provide the applicant name."),u("category-evidence","Category evidence identified",!0,"warning",`Gather ${i} before filing.`)],s=n.filter(e=>"missing"===e.status).length,l="No gap concerns.";if(r>0)l="File as early as possible. Check automatic extension eligibility for timely-filed renewals.";else if(e.currentEadExpiration){let t=new Date(e.currentEadExpiration),i=new Date,n=Math.ceil((t.getTime()-i.getTime())/864e5);n<90&&(l=`${n} days remaining on current EAD. File immediately to minimize gap risk.`)}return{workflowId:"immigration/work-authorization",domain:"immigration",title:"Work authorization (EAD)",summary:"EAD filing planner by category. PigeonGov does not submit forms to USCIS.",household:[],evidence:n,answers:e,derived:{category:e.category,processingEstimate:t,gapDays:r,gapStrategy:l},validation:{checks:o,flaggedFields:a},review:m("Work authorization readiness",0===s?"ready for filing":"needs evidence",n,a,[`Category: ${e.category}. Estimated processing: ${t}.`,l]),outputArtifacts:f("immigration-work-authorization",n),provenance:["workflow-registry","work-authorization-model"]}}}},E={"permits/local-permit-planner":{summary:{id:"permits/local-permit-planner",domain:"permits",title:"Local permit planner",summary:"Preview workflow for local permit scoping and evidence collection.",status:"preview",audience:"individual",tags:["permits","construction","local","planning"]},inputSchema:v,starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},entityName:"",state:"CA",locality:"",industry:"residential",needsProfessionalLicense:!1,hasZoningQuestions:!0},sections:[{id:"permit",title:"Permit basics",fields:[{key:"entityName",label:"Project or applicant name",type:"text"},{key:"locality",label:"City or county",type:"text"},{key:"industry",label:"Permit category",type:"text"}]}],buildBundle(e){let t=[p("site-plan","Site plan or project description",!0,!0),p("zoning","Zoning and occupancy questions",!0,!e.hasZoningQuestions,e.hasZoningQuestions?"Review local zoning office guidance before applying.":void 0)];return{workflowId:"permits/local-permit-planner",domain:"permits",title:"Local permit planner",summary:"Preview planner for local permit routing and document collection.",applicant:e.applicant,household:[],evidence:t,answers:e,derived:{locality:e.locality,planningMode:"preview"},validation:{checks:[u("locality","Locality provided",e.locality.length>0,"error","Provide the city or county.")],flaggedFields:[]},review:m("Permit planning","preview workflow",t,[],[`Permit area: ${e.locality}, ${e.state}.`,`Permit category: ${e.industry}.`]),outputArtifacts:f("permits-local-permit-planner",t),provenance:["workflow-registry","permit-planning-model"]}}}},M=n.Ikc({name:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/),relationship:n.YjP().trim().min(1),childTaxCreditEligible:n.zMY(),eitcEligible:n.zMY().optional()}).strict(),O={"tax/1040":{summary:{id:"tax/1040",domain:"tax",title:"Federal individual return",summary:"Form 1040 with Schedule 1 and Schedule C aware tax workflow for the 2025 filing season.",status:"active",audience:"household",tags:["irs","tax","refund","w2","schedule-c"],year:2025,legacyFormId:"1040"},inputSchema:n.Ikc({taxpayer:g,spouse:g.optional(),dependents:n.YOg(M).default([]),filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),wages:n.auy.number().default(0),taxableInterest:n.auy.number().default(0),ordinaryDividends:n.auy.number().default(0),scheduleCNet:n.auy.number().default(0),otherIncome:n.auy.number().default(0),adjustments:n.Ikc({educatorExpenses:n.auy.number().default(0),hsaDeduction:n.auy.number().default(0),selfEmploymentTaxDeduction:n.auy.number().default(0),iraDeduction:n.auy.number().default(0),studentLoanInterest:n.auy.number().default(0)}).strict().default({educatorExpenses:0,hsaDeduction:0,selfEmploymentTaxDeduction:0,iraDeduction:0,studentLoanInterest:0}),useItemizedDeductions:n.zMY().default(!1),itemizedDeductions:n.auy.number().default(0),federalWithheld:n.auy.number().default(0),estimatedPayments:n.auy.number().default(0),tipIncome:n.auy.number().default(0),overtimePay:n.auy.number().default(0),autoLoanInterest:n.auy.number().default(0),taxpayerAge:n.auy.number().default(0),spouseAge:n.auy.number().default(0),saltDeduction:n.auy.number().default(0),capitalGains:n.Ikc({shortTermGains:n.auy.number().default(0),shortTermLosses:n.auy.number().default(0),longTermGains:n.auy.number().default(0),longTermLosses:n.auy.number().default(0),qualifiedDividends:n.auy.number().default(0),carryforwardLoss:n.auy.number().default(0)}).strict().optional(),stateCode:n.YjP().trim().toUpperCase().optional(),stateWithheld:n.auy.number().default(0),stateEstimatedPayments:n.auy.number().default(0)}).strict(),starterData:{taxpayer:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},dependents:[],filingStatus:"single",wages:0,taxableInterest:0,ordinaryDividends:0,scheduleCNet:0,otherIncome:0,adjustments:{educatorExpenses:0,hsaDeduction:0,selfEmploymentTaxDeduction:0,iraDeduction:0,studentLoanInterest:0},useItemizedDeductions:!1,itemizedDeductions:0,federalWithheld:0,estimatedPayments:0,tipIncome:0,overtimePay:0,autoLoanInterest:0,taxpayerAge:0,spouseAge:0,saltDeduction:0,capitalGains:{shortTermGains:0,shortTermLosses:0,longTermGains:0,longTermLosses:0,qualifiedDividends:0,carryforwardLoss:0},stateCode:"",stateWithheld:0,stateEstimatedPayments:0},sections:[{id:"identity",title:"Identity",description:"Collect the taxpayer identity and filing status.",fields:[{key:"taxpayer.firstName",label:"First name",type:"text"},{key:"taxpayer.lastName",label:"Last name",type:"text"},{key:"taxpayer.ssn",label:"SSN",type:"text"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"},{label:"Married filing separately",value:"married_filing_separately"},{label:"Head of household",value:"head_of_household"},{label:"Qualifying surviving spouse",value:"qualifying_surviving_spouse"}]}]},{id:"income",title:"Income",fields:[{key:"wages",label:"W-2 wages",type:"currency"},{key:"federalWithheld",label:"Federal withholding",type:"currency"},{key:"scheduleCNet",label:"Schedule C net",type:"currency"},{key:"otherIncome",label:"Other income",type:"currency"}]},{id:"obbb-deductions",title:"OBBB Act Deductions",description:"New above-the-line deductions from the One Big Beautiful Bill Act.",fields:[{key:"tipIncome",label:"W-2 tip income",type:"currency",helpText:"Reported tips (up to $25,000 deductible if AGI < $160K)"},{key:"overtimePay",label:"Overtime pay",type:"currency",helpText:"W-2 overtime (up to $10,000 deductible if AGI < $160K)"},{key:"autoLoanInterest",label:"Auto loan interest (US vehicle)",type:"currency",helpText:"Interest on US-manufactured vehicle loan (up to $10,000)"},{key:"saltDeduction",label:"SALT deduction",type:"currency",helpText:"State and local taxes paid (capped at $40K MFJ / $20K MFS)"},{key:"taxpayerAge",label:"Taxpayer age",type:"number",helpText:"Age 65+ qualifies for additional standard deduction"},{key:"spouseAge",label:"Spouse age",type:"number",helpText:"For MFJ: spouse age 65+ adds $1,600 to standard deduction"}]},{id:"capital-gains",title:"Capital Gains",description:"Report capital gains, losses, and qualified dividends from investments.",fields:[{key:"capitalGains.shortTermGains",label:"Short-term capital gains",type:"currency",helpText:"Gains from assets held one year or less"},{key:"capitalGains.shortTermLosses",label:"Short-term capital losses",type:"currency",helpText:"Losses from assets held one year or less"},{key:"capitalGains.longTermGains",label:"Long-term capital gains",type:"currency",helpText:"Gains from assets held more than one year"},{key:"capitalGains.longTermLosses",label:"Long-term capital losses",type:"currency",helpText:"Losses from assets held more than one year"},{key:"capitalGains.qualifiedDividends",label:"Qualified dividends",type:"currency",helpText:"Dividends taxed at the lower long-term capital gains rate"},{key:"capitalGains.carryforwardLoss",label:"Capital loss carryforward",type:"currency",helpText:"Unused capital losses from prior years"}]},{id:"state-tax",title:"State Tax",description:"State income tax information.",fields:[{key:"stateCode",label:"State of residence",type:"text"},{key:"stateWithheld",label:"State tax withheld",type:"currency"},{key:"stateEstimatedPayments",label:"State estimated payments",type:"currency"}]}],buildBundle(e){let t=(0,o.xm)({filingStatus:e.filingStatus,wages:e.wages,taxableInterest:e.taxableInterest,ordinaryDividends:e.ordinaryDividends,scheduleCNet:e.scheduleCNet,otherIncome:e.otherIncome,adjustments:e.adjustments,useItemizedDeductions:e.useItemizedDeductions,itemizedDeductions:e.itemizedDeductions,dependents:e.dependents,federalWithheld:e.federalWithheld,estimatedPayments:e.estimatedPayments,tipIncome:e.tipIncome,overtimePay:e.overtimePay,autoLoanInterest:e.autoLoanInterest,taxpayerAge:e.taxpayerAge,spouseAge:e.spouseAge,saltDeduction:e.saltDeduction,capitalGains:e.capitalGains,...e.stateCode?{stateCode:e.stateCode}:{},...e.stateWithheld?{stateWithheld:e.stateWithheld}:{},...e.stateEstimatedPayments?{stateEstimatedPayments:e.stateEstimatedPayments}:{}}),i={formId:"1040",taxYear:2025,filingStatus:e.filingStatus,taxpayer:e.taxpayer,dependents:e.dependents,importedDocuments:e.federalWithheld>0?[{type:"w2",employerName:"Withholding input",wages:e.wages,federalWithheld:e.federalWithheld}]:[],taxInput:{filingStatus:e.filingStatus,wages:e.wages,taxableInterest:e.taxableInterest,ordinaryDividends:e.ordinaryDividends,scheduleCNet:e.scheduleCNet,otherIncome:e.otherIncome,adjustments:e.adjustments,useItemizedDeductions:e.useItemizedDeductions,itemizedDeductions:e.itemizedDeductions,dependents:e.dependents,federalWithheld:e.federalWithheld,estimatedPayments:e.estimatedPayments,tipIncome:e.tipIncome,overtimePay:e.overtimePay,autoLoanInterest:e.autoLoanInterest,taxpayerAge:e.taxpayerAge,spouseAge:e.spouseAge,saltDeduction:e.saltDeduction,capitalGains:e.capitalGains,...e.stateCode?{stateCode:e.stateCode}:{},...e.stateWithheld?{stateWithheld:e.stateWithheld}:{},...e.stateEstimatedPayments?{stateEstimatedPayments:e.stateEstimatedPayments}:{}},...e.spouse?{spouse:e.spouse}:{}},n=(0,a.b)(i),s=(0,r.t)(n);return{workflowId:"tax/1040",domain:"tax",title:"Federal individual return",summary:"Deterministic 2025 federal return bundle.",year:2025,legacyFormId:"1040",applicant:e.taxpayer,household:e.dependents.map(e=>({name:e.name,relationship:e.relationship})),evidence:[],answers:e,derived:{refund:t.refund,amountOwed:t.amountOwed,taxableIncome:t.taxableIncome},validation:{checks:s.checks,flaggedFields:s.flaggedFields},review:{headline:t.refund>0?`Refund expected: ${l(t.refund)}`:`Amount owed: ${l(t.amountOwed)}`,notes:[`Gross income ${l(t.grossIncome)}`,`Taxable income ${l(t.taxableIncome)}`,`Federal tax ${l(t.totalTax)}`,...t.stateTax?[`State tax (${t.stateTax.state}) ${l(t.stateTax.stateTax)}`,...t.stateTax.stateRefund>0?[`State refund ${l(t.stateTax.stateRefund)}`]:t.stateTax.stateOwed>0?[`State owed ${l(t.stateTax.stateOwed)}`]:[]]:[]],flaggedFields:s.flaggedFields},outputArtifacts:[{kind:"bundle",label:"1040 return bundle",format:"json",path:"1040-2025-filled.json"},{kind:"review",label:"Return review PDF",format:"pdf",path:"1040-2025-filled.pdf"}],provenance:["calculation-engine","field-mapper","validator"],filledForm:n,calculation:t}}}},j={"unemployment/claim-intake":{summary:{id:"unemployment/claim-intake",domain:"unemployment",title:"Unemployment claim intake",summary:"Organize claimant identity, separation facts, and wage evidence for state unemployment review.",status:"active",audience:"individual",tags:["unemployment","claim","wages","state","employment"]},inputSchema:n.Ikc({applicant:g,stateOfClaim:h,lastEmployerName:n.YjP().trim().min(1),lastDayWorked:n.YjP().trim().min(1),separationReason:n.k5n(["laid_off","hours_reduced","fired","quit","seasonal_end"]),wagesLast12Months:n.auy.number().nonnegative(),receivingSeverance:n.zMY().default(!1),availableForWork:n.zMY().default(!0),identityProofAvailable:n.zMY().default(!1),wageProofAvailable:n.zMY().default(!1),separationNoticeAvailable:n.zMY().default(!1),notes:n.YjP().trim().optional()}).strict(),starterData:{applicant:{firstName:"",lastName:"",ssn:"000-00-0000",address:{street1:"",city:"",state:"CA",zipCode:""}},stateOfClaim:"CA",lastEmployerName:"",lastDayWorked:"",separationReason:"laid_off",wagesLast12Months:0,receivingSeverance:!1,availableForWork:!0,identityProofAvailable:!1,wageProofAvailable:!1,separationNoticeAvailable:!1},sections:[{id:"claim",title:"Claim basics",fields:[{key:"applicant.firstName",label:"Claimant first name",type:"text"},{key:"stateOfClaim",label:"State of claim",type:"text"},{key:"lastEmployerName",label:"Last employer",type:"text"},{key:"lastDayWorked",label:"Last day worked",type:"date"}]},{id:"separation",title:"Separation facts",fields:[{key:"separationReason",label:"Separation reason",type:"select",options:[{label:"Laid off",value:"laid_off"},{label:"Hours reduced",value:"hours_reduced"},{label:"Fired",value:"fired"},{label:"Quit",value:"quit"},{label:"Seasonal end",value:"seasonal_end"}]},{key:"receivingSeverance",label:"Receiving severance",type:"confirm"},{key:"availableForWork",label:"Available for work",type:"confirm"},{key:"wagesLast12Months",label:"Wages in last 12 months",type:"currency"}]}],buildBundle(e){let t=[p("identity","Identity proof",!0,e.identityProofAvailable),p("wages","Wage proof",!0,e.wageProofAvailable),p("separation-notice","Separation notice or termination letter","hours_reduced"!==e.separationReason,e.separationNoticeAvailable)],i=[];e.availableForWork||i.push(c("availableForWork","error","Most unemployment programs require availability for suitable work.")),("quit"===e.separationReason||"fired"===e.separationReason)&&i.push(c("separationReason","review","Quit and fired claims often require a fact-specific human review before filing.")),e.receivingSeverance&&i.push(c("receivingSeverance","review","Severance may affect timing or state-specific eligibility calculations."));let n=[u("wage-proof","Wage proof available",e.wageProofAvailable,"warning","Collect wage statements or W-2s before claim review."),u("availability","Available for work",e.availableForWork,"error","Claimant must usually certify availability for work."),u("employer","Employer identified",e.lastEmployerName.trim().length>0,"error","Provide the last employer name.")],a=t.filter(e=>"missing"===e.status).length;return{workflowId:"unemployment/claim-intake",domain:"unemployment",title:"Unemployment claim intake",summary:"State claim intake organizer for identity, wage, and separation facts. PigeonGov does not submit the claim.",applicant:e.applicant,household:[],evidence:t,answers:e,derived:{monthlyAverageWages:e.wagesLast12Months/12,readinessState:0===a?"review-ready":"needs-evidence",separationTrack:e.separationReason},validation:{checks:n,flaggedFields:i},review:m("Claim readiness",0===a?"ready for state portal review":"needs more documents",t,i,[`State of claim: ${e.stateOfClaim}.`,`Last employer: ${e.lastEmployerName}.`,`Wages in last 12 months: ${l(e.wagesLast12Months)}.`]),outputArtifacts:f("unemployment-claim-intake",t),provenance:["workflow-registry","unemployment-claim-model"]}}}},L=n.Ikc({name:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/).default("000-00-0000"),citizenshipStatus:n.k5n(["us_citizen","eligible_noncitizen","other"])}).strict(),B=n.Ikc({income:n.auy.number().nonnegative(),assets:n.auy.number().nonnegative(),householdSize:n.auy.number().int().positive()}).strict(),F=n.Ikc({studentInfo:L,dependencyStatus:n.k5n(["dependent","independent"]),parentInfo:B.optional(),studentIncome:n.auy.number().nonnegative().default(0),studentAssets:n.auy.number().nonnegative().default(0),schoolCodes:n.YOg(n.YjP().trim().min(1)).default([]),filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),hasCompletedTaxReturn:n.zMY().default(!1)}).strict(),Y=n.Ikc({servicer:n.YjP().trim().min(1),balance:n.auy.number().nonnegative(),rate:n.auy.number().nonnegative(),type:n.k5n(["federal","private"]),originalAmount:n.auy.number().nonnegative()}).strict(),R=n.Ikc({loans:n.YOg(Y).min(1),annualIncome:n.auy.number().nonnegative(),filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),householdSize:n.auy.number().int().positive().default(1),employerType:n.k5n(["public","private","nonprofit"]),monthsOfQualifyingPayments:n.auy.number().int().nonnegative().default(0),currentPlan:n.k5n(["SAVE","PAYE","IBR","ICR","REPAYE","standard","none"]).default("none"),monthsInSaveForbearance:n.auy.number().int().nonnegative().default(0),isParentPlusLoan:n.zMY().default(!1),hasConsolidatedLoans:n.zMY().default(!1),monthsOfPSLFEmployment:n.auy.number().int().nonnegative().default(0)}).strict(),Z=n.Ikc({state:n.YjP().trim().regex(/^[A-Z]{2}$/),annualContribution:n.auy.number().nonnegative().default(0),beneficiaryAge:n.auy.number().int().nonnegative(),investmentTimeline:n.auy.number().int().positive(),currentBalance:n.auy.number().nonnegative().default(0)}).strict();function G(e){return 15650+5580*Math.max(0,e-1)}function U(e,t){return Math.max(0,e-1.5*G(t))}function q(e,t,i){if(e<=0)return 0;let n=t/12;return 0===n?e/i:e*n*Math.pow(1+n,i)/(Math.pow(1+n,i)-1)}let W={"education/fafsa":{summary:{id:"education/fafsa",domain:"education",title:"FAFSA readiness planner",summary:"Organise student identity, dependency status, and financial evidence for FAFSA filing.",status:"active",audience:"individual",tags:["fafsa","financial-aid","education","student"]},inputSchema:F,starterData:{studentInfo:{name:"",dob:"",ssn:"000-00-0000",citizenshipStatus:"us_citizen"},dependencyStatus:"dependent",studentIncome:0,studentAssets:0,schoolCodes:[],filingStatus:"single",hasCompletedTaxReturn:!1},sections:[{id:"student-identity",title:"Student Identity",fields:[{key:"studentInfo.name",label:"Student full name",type:"text"},{key:"studentInfo.dob",label:"Date of birth",type:"date"},{key:"studentInfo.ssn",label:"SSN",type:"text"},{key:"studentInfo.citizenshipStatus",label:"Citizenship status",type:"select",options:[{label:"US Citizen",value:"us_citizen"},{label:"Eligible non-citizen",value:"eligible_noncitizen"},{label:"Other",value:"other"}]}]},{id:"dependency-status",title:"Dependency Status",fields:[{key:"dependencyStatus",label:"Dependency status",type:"select",options:[{label:"Dependent",value:"dependent"},{label:"Independent",value:"independent"}]}]},{id:"financial-information",title:"Financial Information",fields:[{key:"studentIncome",label:"Student income",type:"currency"},{key:"studentAssets",label:"Student assets",type:"currency"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"},{label:"Head of household",value:"head_of_household"}]},{key:"hasCompletedTaxReturn",label:"Tax return completed",type:"confirm"}]},{id:"school-selection",title:"School Selection",fields:[{key:"schoolCodes",label:"School codes",type:"text",helpText:"Comma-separated federal school codes."}]}],buildBundle(e){let t=[p("tax-return","Federal tax return (IRS DRT preferred)",!0,e.hasCompletedTaxReturn),p("bank-statements","Bank statements for asset verification",!0,e.studentAssets>0),p("w2","W-2 forms",e.studentIncome>0,e.studentIncome>0),p("citizenship-proof","Birth certificate or citizenship proof",!0,"us_citizen"===e.studentInfo.citizenshipStatus,"other"===e.studentInfo.citizenshipStatus?"Non-eligible citizenship status may prevent FAFSA filing.":void 0)];"dependent"===e.dependencyStatus&&e.parentInfo&&t.push(p("parent-tax-return","Parent tax return",!0,e.hasCompletedTaxReturn),p("parent-bank-statements","Parent bank statements",!0,e.parentInfo.assets>0));let i=[],n=e.studentAssets+(e.parentInfo?.assets??0),a=e.studentIncome+(e.parentInfo?.income??0);n>5e4&&a<3e4&&i.push(c("studentAssets","review","High assets relative to low income may trigger verification — ensure documentation is thorough.")),"independent"===e.dependencyStatus&&e.studentIncome<1e4&&e.studentAssets<5e3&&i.push(c("dependencyStatus","review","Independent status with very low income/assets — school may request dependency override documentation.")),"other"===e.studentInfo.citizenshipStatus&&i.push(c("studentInfo.citizenshipStatus","error","Only US citizens and eligible non-citizens may file FAFSA."));let r=Math.max(-1500,Math.round(.22*a+.05*n-6e3)),o=[u("tax-return","Tax return available",e.hasCompletedTaxReturn,"warning","Complete your federal tax return before filing FAFSA for best accuracy."),u("school-codes","At least one school selected",e.schoolCodes.length>0,"error","Add at least one school code so aid can be sent."),u("citizenship","Eligible citizenship status","other"!==e.studentInfo.citizenshipStatus,"error","FAFSA requires US citizenship or eligible non-citizen status.")];return{workflowId:"education/fafsa",domain:"education",title:"FAFSA readiness planner",summary:"FAFSA readiness bundle. PigeonGov does not submit your FAFSA.",applicant:void 0,household:"dependent"===e.dependencyStatus&&e.parentInfo?[{name:"Parent/guardian",relationship:"parent",notes:`Household size: ${e.parentInfo.householdSize}`}]:[],evidence:t,answers:e,derived:{estimatedSAI:r,totalIncome:a,totalAssets:n,schoolCount:e.schoolCodes.length,dependencyStatus:e.dependencyStatus},validation:{checks:o,flaggedFields:i},review:m("FAFSA readiness",`estimated SAI: ${l(r)}`,t,i,[`${t.filter(e=>"provided"===e.status).length} evidence items provided, estimated SAI: ${l(r)}.`,`Schools selected: ${e.schoolCodes.length}.`,`Dependency status: ${e.dependencyStatus}.`]),outputArtifacts:f("education-fafsa",t),provenance:["workflow-registry"]}}},"education/student-loan-repayment":{summary:{id:"education/student-loan-repayment",domain:"education",title:"Student loan repayment planner",summary:"Compare IDR plans (SAVE, PAYE, IBR, ICR) and standard repayment across your federal loan portfolio.",status:"active",audience:"individual",tags:["student-loans","idr","pslf","repayment","education"]},inputSchema:R,starterData:{loans:[{servicer:"",balance:0,rate:.05,type:"federal",originalAmount:0}],annualIncome:0,filingStatus:"single",householdSize:1,employerType:"private",monthsOfQualifyingPayments:0,currentPlan:"none",monthsInSaveForbearance:0,isParentPlusLoan:!1,hasConsolidatedLoans:!1,monthsOfPSLFEmployment:0},sections:[{id:"loan-inventory",title:"Loan Inventory",fields:[{key:"loans",label:"Loan details",type:"textarea",helpText:"Enter each loan's servicer, balance, rate, and type."}]},{id:"income-employment",title:"Income & Employment",fields:[{key:"annualIncome",label:"Annual income",type:"currency"},{key:"filingStatus",label:"Filing status",type:"select",options:[{label:"Single",value:"single"},{label:"Married filing jointly",value:"married_filing_jointly"},{label:"Married filing separately",value:"married_filing_separately"}]},{key:"householdSize",label:"Household size",type:"number"},{key:"employerType",label:"Employer type",type:"select",options:[{label:"Public sector",value:"public"},{label:"Private sector",value:"private"},{label:"Non-profit",value:"nonprofit"}]},{key:"monthsOfQualifyingPayments",label:"Months of qualifying PSLF payments",type:"number"}]},{id:"save-transition",title:"SAVE Transition (2026 Crisis)",description:"SAVE/REPAYE ended March 10, 2026. 7.5M borrowers must transition by September 30, 2026.",fields:[{key:"currentPlan",label:"Current repayment plan",type:"select",options:[{label:"None / not enrolled",value:"none"},{label:"SAVE (ended)",value:"SAVE"},{label:"REPAYE (ended)",value:"REPAYE"},{label:"PAYE",value:"PAYE"},{label:"IBR",value:"IBR"},{label:"ICR",value:"ICR"},{label:"Standard",value:"standard"}]},{key:"monthsInSaveForbearance",label:"Months in SAVE forbearance (do NOT count toward forgiveness)",type:"number"},{key:"isParentPlusLoan",label:"Parent PLUS loan?",type:"confirm"},{key:"hasConsolidatedLoans",label:"Already consolidated into Direct Consolidation Loan?",type:"confirm"}]},{id:"pslf-tracking",title:"PSLF Tracking",description:"Public Service Loan Forgiveness — 120 qualifying payments required.",fields:[{key:"monthsOfPSLFEmployment",label:"Months of qualifying PSLF employment",type:"number"}]},{id:"repayment-goals",title:"Repayment Goals",description:"PigeonGov will compare repayment plans automatically, including the new RAP plan.",fields:[]}],buildBundle(e){let t,i,n,a,r,o,s,d,h,y,g,b=e.loans.filter(e=>"federal"===e.type),v=e.loans.filter(e=>"private"===e.type),w=e.loans.reduce((e,t)=>e+t.balance,0),x=b.reduce((e,t)=>e+t.balance,0),k=[p("loan-statements","Loan statements",!0,w>0),p("income-verification","Income verification (pay stubs / tax return)",!0,e.annualIncome>0),p("employer-certification","Employer certification for PSLF (ECF)","private"!==e.employerType,"private"!==e.employerType&&e.monthsOfQualifyingPayments>0,"private"!==e.employerType?"Submit ECF annually to track PSLF progress.":void 0)],S=[];v.length>0&&S.push(c("loans","warning",`${v.length} private loan(s) totalling ${l(v.reduce((e,t)=>e+t.balance,0))} are not eligible for IDR or PSLF.`));let _="public"===e.employerType||"nonprofit"===e.employerType;!_&&e.monthsOfQualifyingPayments>0&&S.push(c("employerType","warning","PSLF requires employment with a public-sector or non-profit employer. Current employer type does not qualify.")),("SAVE"===e.currentPlan||"REPAYE"===e.currentPlan)&&S.push(c("currentPlan","error","SAVE/REPAYE permanently ended March 10, 2026. You must select a new plan by September 30, 2026 or you will be placed on the standard plan.")),e.monthsInSaveForbearance>0&&S.push(c("monthsInSaveForbearance","warning",`${e.monthsInSaveForbearance} months in SAVE forbearance do NOT count toward IDR or PSLF forgiveness.`)),e.isParentPlusLoan&&!e.hasConsolidatedLoans&&S.push(c("isParentPlusLoan","error","URGENT: Consolidate Parent PLUS loans before July 1, 2026 to access IBR. After that date, only ICR (most expensive IDR plan) will be available.")),_&&"nonprofit"===e.employerType&&S.push(c("employerType","review","Under 2026 PSLF changes, forgiveness is denied if non-profit employer engages in politically targeted activities. Verify employer certification annually."));let I=(n=(i=(t=e.loans.filter(e=>"federal"===e.type)).reduce((e,t)=>e+t.balance,0))>0?t.reduce((e,t)=>e+t.rate*t.balance,0)/i:.05,a=U(e.annualIncome,e.householdSize)/12,r=[],o=q(i,n,120),r.push({name:"Standard",monthlyPayment:Math.round(100*o)/100,totalPaid:Math.round(120*o*100)/100,termMonths:120,eligible:i>0}),r.push({name:"SAVE",monthlyPayment:0,totalPaid:0,termMonths:0,eligible:!1,note:"SAVE/REPAYE permanently ended March 10, 2026 by court order. Borrowers must transition to another plan by September 30, 2026."}),s=Math.round(.1*a*100)/100,r.push({name:"PAYE",monthlyPayment:s,totalPaid:Math.round(240*s*100)/100,termMonths:240,eligible:i>0,note:"Capped at Standard payment amount."}),d=Math.round(.15*a*100)/100,r.push({name:"IBR (pre-2014)",monthlyPayment:d,totalPaid:Math.round(300*d*100)/100,termMonths:300,eligible:i>0,note:"15% of discretionary income. Forgiveness at 25 years."}),h=Math.round(.1*a*100)/100,r.push({name:"IBR (post-July 2014)",monthlyPayment:h,totalPaid:Math.round(240*h*100)/100,termMonths:240,eligible:i>0,note:"10% of discretionary income. Forgiveness at 20 years. Available for borrowers with no balance before July 1, 2014."}),y=Math.max(10,Math.round(.1*Math.max(0,e.annualIncome-2.25*G(e.householdSize))/12*100)/100),r.push({name:"RAP",monthlyPayment:y,totalPaid:Math.round(360*y*100)/100,termMonths:360,eligible:i>0,note:"New plan (2026). Minimum $10/month — no $0 option. Uses 225% FPL threshold. Unpaid interest capitalizes. Forgiveness at 30 years."}),g=Math.round(100*Math.min(Math.round(.2*a*100)/100,q(i,n,144)))/100,r.push({name:"ICR",monthlyPayment:g,totalPaid:Math.round(300*g*100)/100,termMonths:300,eligible:i>0,note:"Only IDR plan available for Parent PLUS (via consolidation)."}),r),A=I.filter(e=>e.eligible),z=A.length>0?A.reduce((e,t)=>t.monthlyPayment<e.monthlyPayment?t:e,A[0]):null,P=Math.min(e.monthsOfPSLFEmployment,e.monthsOfQualifyingPayments),C=_?Math.max(0,120-P):null,$=[u("federal-loans","Federal loans present",b.length>0,"warning","IDR plans are only available for federal student loans."),u("income-provided","Income information provided",e.annualIncome>0,"error","Income is required to calculate IDR payments.")];return{workflowId:"education/student-loan-repayment",domain:"education",title:"Student loan repayment planner",summary:"IDR comparison for federal student loans. PigeonGov does not change your repayment plan.",applicant:void 0,household:[],evidence:k,answers:e,derived:{plans:I,lowestPlan:z?.name??"N/A",lowestMonthlyPayment:z?.monthlyPayment??0,totalBalance:w,totalFederalBalance:x,pslf:_,pslMonthsRemaining:C,qualifyingPSLFPayments:_?P:0,monthsOfPSLFEmployment:e.monthsOfPSLFEmployment,discretionaryIncome:U(e.annualIncome,e.householdSize),fpl:G(e.householdSize),saveTransition:{currentPlan:e.currentPlan,monthsInSaveForbearance:e.monthsInSaveForbearance,isParentPlusLoan:e.isParentPlusLoan,hasConsolidatedLoans:e.hasConsolidatedLoans,consolidationDeadline:e.isParentPlusLoan&&!e.hasConsolidatedLoans?"2026-07-01":null,saveEnded:!0,transitionDeadline:"2026-09-30"}},validation:{checks:$,flaggedFields:S},review:m("Student loan repayment",z?`lowest monthly: ${z.name} at ${l(z.monthlyPayment)}/mo`:"no federal loans for IDR",k,S,[`Total balance: ${l(w)} (${l(x)} federal).`,z?`Lowest monthly payment: ${z.name} at ${l(z.monthlyPayment)}/month.`:"No eligible IDR plans.",`PSLF eligible: ${_?"yes":"no"}.${_&&null!==C?` ${C} qualifying months remaining.`:""}`,..."SAVE"===e.currentPlan||"REPAYE"===e.currentPlan?["SAVE/REPAYE ended March 10, 2026. Transition to a new plan by September 30, 2026."]:[],...e.monthsInSaveForbearance>0?[`${e.monthsInSaveForbearance} months in SAVE forbearance did NOT count toward forgiveness.`]:[],...e.isParentPlusLoan&&!e.hasConsolidatedLoans?["URGENT: Consolidate Parent PLUS loans before July 1, 2026 to preserve IBR access."]:[]]),outputArtifacts:f("education-student-loan-repayment",k),provenance:["workflow-registry"]}}},"education/529-planner":{summary:{id:"education/529-planner",domain:"education",title:"529 savings planner",summary:"Project 529 plan growth and explore state tax deduction benefits.",status:"active",audience:"household",tags:["529","education-savings","tax-deduction","investment"]},inputSchema:Z,starterData:{state:"CA",annualContribution:0,beneficiaryAge:0,investmentTimeline:18,currentBalance:0},sections:[{id:"plan-details",title:"Plan Details",fields:[{key:"state",label:"State",type:"text"},{key:"currentBalance",label:"Current 529 balance",type:"currency"},{key:"beneficiaryAge",label:"Beneficiary current age",type:"number"}]},{id:"contribution-planning",title:"Contribution Planning",fields:[{key:"annualContribution",label:"Annual contribution",type:"currency"},{key:"investmentTimeline",label:"Investment timeline (years)",type:"number"}]}],buildBundle(e){let t,i=Math.max(0,18-e.beneficiaryAge),n=Math.min(e.investmentTimeline,i),a=e.currentBalance;for(let t=0;t<n;t++)a=(a+e.annualContribution)*1.07;a=Math.round(100*a)/100;let r=new Set(["AZ","AR","CO","CT","GA","ID","IL","IN","IA","KS","LA","MD","MI","MN","MS","MO","MT","NE","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","UT","VA","VT","WV","WI","DC"]);t=new Set(["AK","FL","NV","NH","SD","TN","TX","WA","WY"]).has(e.state)?"No state income tax — no deduction benefit, but earnings still grow tax-free.":r.has(e.state)?"State offers a tax deduction or credit for 529 contributions.":"State may not offer a 529 tax deduction — verify with your state tax authority.";let o=e.currentBalance+e.annualContribution*n,s=a-o,d=[],c=[],p=[u("contribution","Annual contribution set",e.annualContribution>0,"warning","Set an annual contribution amount to see projections.")];return{workflowId:"education/529-planner",domain:"education",title:"529 savings planner",summary:"529 plan projection tool. PigeonGov does not manage investments.",applicant:void 0,household:[],evidence:d,answers:e,derived:{projectedBalance:a,projectionYears:n,totalContributions:o,estimatedGrowth:s,growthRate:.07,stateTaxBenefit:t},validation:{checks:p,flaggedFields:c},review:{headline:`529 planner: projected balance ${l(a)} in ${n} years`,notes:[`Current balance: ${l(e.currentBalance)}.`,`Annual contribution: ${l(e.annualContribution)}.`,`Projected balance at beneficiary age 18: ${l(a)}.`,`Estimated growth: ${l(s)}.`,t],flaggedFields:c},outputArtifacts:f("education-529-planner",d),provenance:["workflow-registry"]}}}},V=n.Ikc({passportNumber:n.YjP().trim().min(1),issueDate:n.YjP().trim().min(1),expirationDate:n.YjP().trim().min(1)}).strict(),H=n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),citizenshipProof:n.k5n(["birth_certificate","naturalization_certificate","previous_passport"]),isRenewal:n.zMY().default(!1),hasNameChange:n.zMY().default(!1),isMinor:n.zMY().default(!1),processingSpeed:n.k5n(["routine","expedited","urgent"]).default("routine"),currentPassportInfo:V.optional()}).strict(),J=n.Ikc({currentName:n.YjP().trim().min(1),newName:n.YjP().trim().min(1),reason:n.k5n(["marriage","divorce","personal","court-order"]),state:n.YjP().trim().regex(/^[A-Z]{2}$/),hasCourtOrder:n.zMY().default(!1),entitiesToUpdate:n.YOg(n.YjP().trim().min(1)).default(["SSA","DMV","Passport","Bank","Employer","Insurance","Voter Registration","Utilities"])}).strict(),K=n.Ikc({name:n.YjP().trim().min(1),address:n.Ikc({street1:n.YjP().trim().min(1),street2:n.YjP().trim().optional(),city:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),zipCode:n.YjP().trim().min(5)}).strict(),dob:n.YjP().trim().min(1),citizenshipConfirmed:n.zMY(),state:n.YjP().trim().regex(/^[A-Z]{2}$/),previousRegistration:n.zMY().default(!1),partyAffiliation:n.YjP().trim().optional()}).strict(),X=n.Ikc({name:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),hasIdentityDoc:n.zMY().default(!1),hasSsnDoc:n.zMY().default(!1),hasResidencyDocs:n.auy.number().int().nonnegative().default(0),hasCurrentLicense:n.zMY().default(!1)}).strict(),Q={summary:{id:"identity/passport",domain:"identity",title:"Passport application planner",summary:"Determine form routing (DS-11 vs DS-82), document requirements, fees, and processing times for US passport applications.",status:"active",audience:"individual",tags:["passport","ds-11","ds-82","state-department","identity"]},inputSchema:H,starterData:{applicantName:"",dob:"",citizenshipProof:"birth_certificate",isRenewal:!1,hasNameChange:!1,isMinor:!1,processingSpeed:"routine"},sections:[{id:"application-type",title:"Application Type",fields:[{key:"isRenewal",label:"Is this a renewal?",type:"confirm"},{key:"hasNameChange",label:"Name change since last passport?",type:"confirm"},{key:"isMinor",label:"Applicant under 16?",type:"confirm"},{key:"processingSpeed",label:"Processing speed",type:"select",options:[{label:"Routine (6-8 weeks)",value:"routine"},{label:"Expedited (2-3 weeks)",value:"expedited"},{label:"Urgent (same day / emergency)",value:"urgent"}]}]},{id:"applicant-information",title:"Applicant Information",fields:[{key:"applicantName",label:"Full legal name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"citizenshipProof",label:"Citizenship proof type",type:"select",options:[{label:"Birth certificate",value:"birth_certificate"},{label:"Naturalization certificate",value:"naturalization_certificate"},{label:"Previous passport",value:"previous_passport"}]}]},{id:"documentation",title:"Documentation",fields:[{key:"currentPassportInfo.passportNumber",label:"Current passport number (if renewal)",type:"text"},{key:"currentPassportInfo.expirationDate",label:"Current passport expiration date",type:"date"}]}],buildBundle(e){let t,i=e.isRenewal&&!e.hasNameChange&&!e.isMinor&&!!e.currentPassportInfo,n=i?"DS-82":"DS-11",a=0;i?t=130:(t=165,a=35);let r=0;("expedited"===e.processingSpeed||"urgent"===e.processingSpeed)&&(r=60);let o=t+a+r,s={routine:"6-8 weeks",expedited:"2-3 weeks",urgent:"Same day (at passport agency, by appointment only)"}[e.processingSpeed],d=[p("citizenship-proof","birth_certificate"===e.citizenshipProof?"US birth certificate":"naturalization_certificate"===e.citizenshipProof?"Certificate of naturalization":"Previous US passport",!0,!0),p("photo","Passport photo (2x2 inches)",!0,!1),p("current-passport","Current/most recent passport",e.isRenewal,!!e.currentPassportInfo,e.isRenewal&&!e.currentPassportInfo?"Renewal requires your most recent passport.":void 0)];e.hasNameChange&&d.push(p("name-change-doc","Name change documentation (court order, marriage certificate)",!0,!1));let h=[];e.isMinor&&h.push(c("isMinor","review","Minor passport applications require both parents' consent or sole custody documentation. Both parents must appear in person for DS-11.")),e.hasNameChange&&!i&&h.push(c("hasNameChange","warning","Name change requires DS-11 (new application) even if renewing. Court order or marriage/divorce certificate required."));let y=[u("applicant-name","Applicant name provided",e.applicantName.trim().length>0,"error","Full legal name is required."),u("dob","Date of birth provided",e.dob.trim().length>0,"error","Date of birth is required.")];return{workflowId:"identity/passport",domain:"identity",title:"Passport application planner",summary:"Passport application readiness bundle. PigeonGov does not submit passport applications.",applicant:void 0,household:[],evidence:d,answers:e,derived:{recommendedForm:n,canRenewByMail:i,applicationFee:t,executionFee:a,expediteFee:r,totalFees:o,estimatedProcessingTime:s},validation:{checks:y,flaggedFields:h},review:m("Passport application",`${n} — ${s}`,d,h,[`Recommended form: ${n} (${i?"renewal by mail":"in-person submission"}).`,`Total fees: ${l(o)} (application: ${l(t)}${a>0?`, execution: ${l(a)}`:""}${r>0?`, expedite: ${l(r)}`:""}).`,`Estimated processing time: ${s}.`]),outputArtifacts:f("identity-passport",d),provenance:["workflow-registry"]}}},ee=["SSA","DMV","Passport","Bank","Employer","Insurance","Voter Registration","Utilities"],et={"identity/passport":Q,"identity/name-change":{summary:{id:"identity/name-change",domain:"identity",title:"Name change planner",summary:"Plan your legal name change and track cascading updates across government agencies, financial institutions, and employers.",status:"active",audience:"individual",tags:["name-change","identity","court-order","ssa","dmv"]},inputSchema:J,starterData:{currentName:"",newName:"",reason:"marriage",state:"CA",hasCourtOrder:!1,entitiesToUpdate:[...ee]},sections:[{id:"name-change-details",title:"Name Change Details",fields:[{key:"currentName",label:"Current legal name",type:"text"},{key:"newName",label:"New legal name",type:"text"},{key:"reason",label:"Reason for name change",type:"select",options:[{label:"Marriage",value:"marriage"},{label:"Divorce",value:"divorce"},{label:"Personal preference",value:"personal"},{label:"Court order",value:"court-order"}]}]},{id:"state-requirements",title:"State Requirements",fields:[{key:"state",label:"State",type:"text"},{key:"hasCourtOrder",label:"Court order obtained",type:"confirm"}]},{id:"cascading-updates",title:"Cascading Updates",description:"Entities to update after name change is legally effective.",fields:[{key:"entitiesToUpdate",label:"Entities to update",type:"textarea",helpText:"Recommended order: SSA, DMV, Passport, Bank, Employer, Insurance, Voter Registration, Utilities."}]}],buildBundle(e){let t="personal"===e.reason||"court-order"===e.reason,i="marriage"===e.reason||"divorce"===e.reason||e.hasCourtOrder,n=[p("court-order","Court order for name change",t,e.hasCourtOrder),p("current-id","Current government ID",!0,!1),p("reason-proof","marriage"===e.reason?"Marriage certificate":"divorce"===e.reason?"Divorce decree":"Court order or supporting documentation",!0,i)],a=[],r=new Set(["AL","AZ","CA","FL","GA","IL","IN","KY","LA","MD","MI","MN","MS","MO","NJ","NY","NC","OH","OK","PA","SC","TN","TX","VA","WA","WI"]);t&&r.has(e.state)&&a.push(c("state","review",`${e.state} may require publication of name change petition in a local newspaper before the hearing. Check county court requirements.`)),t&&!e.hasCourtOrder&&a.push(c("hasCourtOrder","warning","A court order is required for this type of name change. File a petition with your county court."));let o=ee.filter(t=>e.entitiesToUpdate.includes(t)).map((e,t)=>({step:t+1,entity:e,status:"pending"})),s=[u("current-name","Current name provided",e.currentName.trim().length>0,"error","Current legal name is required."),u("new-name","New name provided",e.newName.trim().length>0,"error","New legal name is required."),u("reason-doc","Supporting documentation available",i,"warning","Obtain supporting documentation (marriage cert, divorce decree, or court order) before starting updates.")];return{workflowId:"identity/name-change",domain:"identity",title:"Name change planner",summary:"Name change planning bundle. PigeonGov does not file court petitions.",applicant:void 0,household:[],evidence:n,answers:e,derived:{needsCourtFiling:t,updateChecklist:o,entitiesToUpdateCount:e.entitiesToUpdate.length},validation:{checks:s,flaggedFields:a},review:m("Name change",`${e.currentName||"?"} to ${e.newName||"?"}`,n,a,[`Name change from ${e.currentName||"?"} to ${e.newName||"?"}.`,`${e.entitiesToUpdate.length} entities to update.`,`Court filing required: ${t?"yes":"no"}.`]),outputArtifacts:f("identity-name-change",n),provenance:["workflow-registry"]}}},"identity/voter-registration":{summary:{id:"identity/voter-registration",domain:"identity",title:"Voter registration guide",summary:"Check eligibility, determine registration method, and prepare documentation for voter registration.",status:"active",audience:"individual",tags:["voter","registration","election","identity","civic"]},inputSchema:K,starterData:{name:"",address:{street1:"",city:"",state:"CA",zipCode:""},dob:"",citizenshipConfirmed:!1,state:"CA",previousRegistration:!1},sections:[{id:"eligibility",title:"Eligibility",fields:[{key:"citizenshipConfirmed",label:"US citizen",type:"confirm"},{key:"dob",label:"Date of birth",type:"date"}]},{id:"registration-details",title:"Registration Details",fields:[{key:"name",label:"Full legal name",type:"text"},{key:"address.street1",label:"Street address",type:"text"},{key:"address.city",label:"City",type:"text"},{key:"state",label:"State",type:"text"},{key:"address.zipCode",label:"ZIP code",type:"text"},{key:"previousRegistration",label:"Previously registered in another state?",type:"confirm"},{key:"partyAffiliation",label:"Party affiliation (optional)",type:"text",helpText:"Some states require party affiliation to vote in primaries."}]}],buildBundle(e){let t,i=new Set(["AR","MS","MT","NH","SD","TX","WY"]),n=new Set(["CA","CO","CT","DC","HI","ID","IL","IA","ME","MD","MI","MN","MT","NV","NH","NM","NC","UT","VT","VA","WA","WI"]),a=!i.has(e.state),r=n.has(e.state);t=a?"Online registration available — visit your state's election website.":"Online registration not available — register by mail or in person.";let o=[p("identity-doc","Government-issued ID or last 4 of SSN",!0,!1),p("residency-proof","Proof of residency (varies by state)",!0,!1)],s=[];e.citizenshipConfirmed||s.push(c("citizenshipConfirmed","error","US citizenship is required to register to vote."));let l=[u("citizenship","US citizenship confirmed",e.citizenshipConfirmed,"error","You must be a US citizen to register to vote."),u("name-provided","Name provided",e.name.trim().length>0,"error","Legal name is required for registration."),u("address-provided","Address provided",e.address.street1.trim().length>0,"error","Residential address is required for registration.")];return{workflowId:"identity/voter-registration",domain:"identity",title:"Voter registration guide",summary:"Voter registration readiness bundle. PigeonGov does not register voters.",applicant:void 0,household:[],evidence:o,answers:e,derived:{hasOnlineRegistration:a,hasSameDayRegistration:r,registrationMethod:t,deadlineNote:r?"Same-day registration available — register at your polling place on Election Day.":"Register at least 30 days before Election Day (typical state deadline)."},validation:{checks:l,flaggedFields:s},review:m("Voter registration",e.citizenshipConfirmed?"eligible":"citizenship not confirmed",o,s,[t,r?"Same-day registration is available in your state.":"Register at least 30 days before Election Day."]),outputArtifacts:f("identity-voter-registration",o),provenance:["workflow-registry"]}}},"identity/real-id":{summary:{id:"identity/real-id",domain:"identity",title:"REAL ID readiness checker",summary:"Check document readiness for REAL ID-compliant driver's license or ID card.",status:"active",audience:"individual",tags:["real-id","dmv","identity","driver-license","tsa"]},inputSchema:X,starterData:{name:"",dob:"",state:"CA",hasIdentityDoc:!1,hasSsnDoc:!1,hasResidencyDocs:0,hasCurrentLicense:!1},sections:[{id:"document-checklist",title:"Document Checklist",description:"REAL ID requires four categories of documentation.",fields:[{key:"hasIdentityDoc",label:"Identity document (passport or birth certificate)",type:"confirm"},{key:"hasSsnDoc",label:"SSN document (card, W-2, or SSA-1099)",type:"confirm"},{key:"hasResidencyDocs",label:"Number of residency proofs (need 2: utility bill, bank statement, etc.)",type:"number"},{key:"hasCurrentLicense",label:"Current driver's license or state ID",type:"confirm"}]},{id:"current-status",title:"Current Status",fields:[{key:"name",label:"Full legal name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"state",label:"State",type:"text"}]}],buildBundle(e){let t=Math.min(e.hasResidencyDocs,2),i=[e.hasIdentityDoc,e.hasSsnDoc,t>=2,e.hasCurrentLicense].filter(Boolean).length,n=[p("identity-doc","Identity document (passport, birth certificate, or permanent resident card)",!0,e.hasIdentityDoc),p("ssn-doc","SSN document (Social Security card, W-2, or SSA-1099)",!0,e.hasSsnDoc),p("residency-1","Residency proof #1 (utility bill, bank statement, mortgage statement)",!0,t>=1),p("residency-2","Residency proof #2 (must be different from #1)",!0,t>=2),p("current-license","Current driver's license or state ID",!1,e.hasCurrentLicense)],a=[];t<2&&a.push(c("hasResidencyDocs","warning",`You have ${t} of 2 required residency proofs. Accepted: utility bills, bank statements, mortgage documents, rental agreements.`));let r=[u("identity-doc","Identity document",e.hasIdentityDoc,"error","A valid identity document is required."),u("ssn-doc","SSN document",e.hasSsnDoc,"error","A document showing your SSN is required."),u("residency","Two residency proofs",t>=2,"error","Two different proofs of residency are required.")];return{workflowId:"identity/real-id",domain:"identity",title:"REAL ID readiness checker",summary:"REAL ID document readiness bundle. PigeonGov does not issue IDs.",applicant:void 0,household:[],evidence:n,answers:e,derived:{docsVerified:i,totalRequired:4,ready:4===i,missingCategories:[...e.hasIdentityDoc?[]:["identity document"],...e.hasSsnDoc?[]:["SSN document"],...t<2?[`${2-t} more residency proof(s)`]:[]]},validation:{checks:r,flaggedFields:a},review:m("REAL ID readiness",`${i}/4 required documents verified`,n,a,[`REAL ID readiness: ${i}/4 required documents verified.`,4===i?"All required documents accounted for — schedule a DMV appointment.":"Gather missing documents before visiting the DMV."]),outputArtifacts:f("identity-real-id",n),provenance:["workflow-registry"]}}}},ei=n.Ikc({householdSize:n.auy.number().int().positive(),monthlyGrossIncome:n.auy.number().nonnegative(),monthlyNetIncome:n.auy.number().nonnegative(),state:h,citizenshipStatus:n.k5n(["us_citizen","permanent_resident","qualified_alien","other"]),receivingTanf:n.zMY().default(!1),receivingSsi:n.zMY().default(!1),hasAssets:n.zMY().default(!1),assetValue:n.auy.number().nonnegative().default(0),hasVehicle:n.zMY().default(!1)}).strict(),en=n.Ikc({householdSize:n.auy.number().int().positive(),annualIncome:n.auy.number().nonnegative(),state:h,county:n.YjP().trim().min(1),currentHousingCost:n.auy.number().nonnegative(),isDisabled:n.zMY().default(!1),isElderly:n.zMY().default(!1),isVeteran:n.zMY().default(!1)}).strict(),ea=n.Ikc({applicantCategory:n.k5n(["pregnant","postpartum","infant","child"]),applicantAge:n.auy.number().int().nonnegative().optional(),householdSize:n.auy.number().int().positive(),annualIncome:n.auy.number().nonnegative(),receivingMedicaid:n.zMY().default(!1),receivingSnap:n.zMY().default(!1),receivingTanf:n.zMY().default(!1)}).strict(),er=n.Ikc({householdSize:n.auy.number().int().positive(),annualIncome:n.auy.number().nonnegative(),state:h,heatingSource:n.YjP().trim().min(1),hasUtilityShutoffNotice:n.zMY().default(!1),season:n.k5n(["winter","summer"])}).strict(),eo=n.Ikc({householdSize:n.auy.number().int().positive(),monthlyIncome:n.auy.number().nonnegative(),state:h,isPregnant:n.zMY().default(!1),hasChildren:n.zMY().default(!1),isDisabled:n.zMY().default(!1),isElderly:n.zMY().default(!1),currentInsurance:n.YjP().trim().default("none")}).strict(),es=n.Ikc({applicantName:n.YjP().trim().min(1),disabilityOnsetDate:n.YjP().trim().min(1),lastWorkDate:n.YjP().trim().min(1),monthlyEarnings:n.auy.number().nonnegative(),medicalConditions:n.YOg(n.YjP().trim().min(1)).min(1),treatingPhysicians:n.YOg(n.YjP().trim().min(1)).min(1),hasBeenHospitalized:n.zMY().default(!1)}).strict(),el=n.Ikc({applicantName:n.YjP().trim().default(""),age:n.auy.number().int().nonnegative().default(0),isBlind:n.zMY().default(!1),isDisabled:n.zMY().default(!1),maritalStatus:n.k5n(["single","married"]).default("single"),countableAssets:n.auy.number().nonnegative().default(0),monthlyEarnedIncome:n.auy.number().nonnegative().default(0),monthlyUnearnedIncome:n.auy.number().nonnegative().default(0),state:h,receivingSSA:n.zMY().default(!1),livingArrangement:n.k5n(["own_household","others_household","institution"]).default("own_household")}).strict(),ed=n.Ikc({applicantName:n.YjP().trim().default(""),state:h,householdSize:n.auy.number().int().min(1).default(1),numberOfChildren:n.auy.number().int().nonnegative().default(0),youngestChildAge:n.auy.number().int().nonnegative().default(0),monthlyGrossIncome:n.auy.number().nonnegative().default(0),countableAssets:n.auy.number().nonnegative().default(0),monthsReceived:n.auy.number().int().nonnegative().default(0),isEmployed:n.zMY().default(!1),citizenshipStatus:n.k5n(["us_citizen","permanent_resident","qualified_alien","other"]).default("us_citizen")}).strict(),eu={1:15650,2:21150,3:26650,4:32150,5:37650,6:43150,7:48650,8:54150};function ec(e){return e<=0?eu[1]:e<=8?eu[e]:eu[8]+(e-8)*5500}let ep={1:292,2:536,3:768,4:975,5:1158,6:1390,7:1536,8:1756},em=new Set(["AL","FL","GA","KS","MS","SC","TN","TX","WI","WY"]),ef={CA:{individual:160,couple:407,label:"California SSP"},NY:{individual:87,couple:104,label:"New York SSI supplement"},MA:{individual:114,couple:172,label:"Massachusetts SSI supplement"},NJ:{individual:37,couple:51,label:"New Jersey SSI supplement"},CT:{individual:267,couple:381,label:"Connecticut SSI supplement"},PA:{individual:28,couple:44,label:"Pennsylvania SSI supplement"},VT:{individual:80,couple:123,label:"Vermont SSI supplement"},HI:{individual:12,couple:18,label:"Hawaii SSI supplement"},WA:{individual:47,couple:72,label:"Washington SSI supplement"},NV:{individual:14,couple:21,label:"Nevada SSI supplement"}},eh={CA:878,NY:789,MA:633,CT:698,NH:1086,WA:621,VT:699,MN:532,WI:653,MD:727},ey={CA:null,NY:2e3,TX:1e3,FL:2e3,OH:null,IL:null,VA:null,AL:2e3,LA:2e3,CO:null},eg={"benefits/snap":{summary:{id:"benefits/snap",domain:"benefits",title:"SNAP benefits eligibility",summary:"Assess SNAP (food stamps) eligibility using FPL-based income tests and estimate monthly benefits.",status:"active",audience:"household",tags:["snap","food-stamps","benefits","fpl","nutrition"]},inputSchema:ei,starterData:{householdSize:1,monthlyGrossIncome:0,monthlyNetIncome:0,state:"CA",citizenshipStatus:"us_citizen",receivingTanf:!1,receivingSsi:!1,hasAssets:!1,assetValue:0,hasVehicle:!1},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"},{key:"state",label:"State",type:"text"},{key:"citizenshipStatus",label:"Citizenship status",type:"select",options:[{label:"US citizen",value:"us_citizen"},{label:"Permanent resident",value:"permanent_resident"},{label:"Qualified alien",value:"qualified_alien"},{label:"Other",value:"other"}]}]},{id:"income",title:"Income",fields:[{key:"monthlyGrossIncome",label:"Monthly gross income",type:"currency"},{key:"monthlyNetIncome",label:"Monthly net income",type:"currency"}]},{id:"assets",title:"Assets",fields:[{key:"hasAssets",label:"Has countable assets",type:"confirm"},{key:"assetValue",label:"Total asset value",type:"currency"},{key:"hasVehicle",label:"Has vehicle",type:"confirm"}]},{id:"eligibility-factors",title:"Eligibility Factors",fields:[{key:"receivingTanf",label:"Currently receiving TANF",type:"confirm"},{key:"receivingSsi",label:"Currently receiving SSI",type:"confirm"}]}],buildBundle:function(e){var t;let i=ec(e.householdSize),n=e.receivingTanf||e.receivingSsi,a=1.3*i/12,r=i/12,o=n||e.monthlyGrossIncome<=a,s=n||e.monthlyNetIncome<=r,d=(t=e.householdSize)<=0?ep[1]:t<=8?ep[t]:ep[8]+(t-8)*220,h=Math.max(0,d-Math.round(.3*e.monthlyNetIncome)),y=[p("income-verification","Income verification (pay stubs, tax return)",!0,e.monthlyGrossIncome>0),p("identity","Government-issued photo ID",!0,!0),p("residency","Proof of state residency",!0,!0),p("citizenship","Citizenship or immigration status documentation",!0,"us_citizen"===e.citizenshipStatus)],g=[];n&&g.push(c("receivingTanf","review","Categorically eligible through TANF/SSI — income test may be waived.")),o||g.push(c("monthlyGrossIncome","error",`Gross income ${l(e.monthlyGrossIncome)} exceeds 130% FPL limit of ${l(a)}/month.`)),s||g.push(c("monthlyNetIncome","warning",`Net income ${l(e.monthlyNetIncome)} exceeds 100% FPL limit of ${l(r)}/month.`)),"other"===e.citizenshipStatus&&g.push(c("citizenshipStatus","error","SNAP generally requires US citizenship or qualified alien status."));let b=[u("gross-income","Gross income test (130% FPL)",o,"error",`Monthly gross income must be at or below ${l(a)}.`),u("net-income","Net income test (100% FPL)",s,"error",`Monthly net income must be at or below ${l(r)}.`),u("citizenship","Citizenship/immigration status","other"!==e.citizenshipStatus,"error","Applicant must be a US citizen or qualified alien.")],v=o&&s;return{workflowId:"benefits/snap",domain:"benefits",title:"SNAP benefits eligibility",summary:"SNAP (food stamps) eligibility assessment and benefit estimation. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:y,answers:e,derived:{fpl:i,grossIncomeLimit:a,netIncomeLimit:r,grossIncomeTest:o,netIncomeTest:s,categoricallyEligible:n,maxAllotment:d,estimatedMonthlyBenefit:h},validation:{checks:b,flaggedFields:g},review:m("SNAP eligibility",v?"likely eligible":"may not qualify",y,g,[`Household size: ${e.householdSize}. FPL: ${l(i)}.`,`Gross income test (130% FPL): ${o?"PASS":"FAIL"}.`,`Net income test (100% FPL): ${s?"PASS":"FAIL"}.`,n?"Categorically eligible via TANF/SSI.":"",`Estimated monthly benefit: ${l(h)}.`].filter(Boolean)),outputArtifacts:f("benefits-snap",y),provenance:["workflow-registry"]}}},"benefits/section8":{summary:{id:"benefits/section8",domain:"benefits",title:"Section 8 Housing Choice Voucher",summary:"Assess Section 8 housing voucher eligibility based on income and area median income limits.",status:"active",audience:"household",tags:["section-8","housing","voucher","hud","benefits"]},inputSchema:en,starterData:{householdSize:1,annualIncome:0,state:"CA",county:"",currentHousingCost:0,isDisabled:!1,isElderly:!1,isVeteran:!1},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"},{key:"state",label:"State",type:"text"},{key:"county",label:"County",type:"text"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual household income",type:"currency"}]},{id:"housing",title:"Housing",fields:[{key:"currentHousingCost",label:"Current monthly housing cost",type:"currency"},{key:"isDisabled",label:"Disabled household member",type:"confirm"},{key:"isElderly",label:"Elderly household member (62+)",type:"confirm"},{key:"isVeteran",label:"Veteran",type:"confirm"}]}],buildBundle:function(e){let t=e.annualIncome<=3e4,i=Math.max(0,e.currentHousingCost-Math.round(.3*e.annualIncome/12)),n=[p("income-verification","Income verification",!0,e.annualIncome>0),p("identity","Government-issued photo ID",!0,!0),p("lease","Current lease agreement",!1,!1)],a=[c("waitlist","review","Most areas have multi-year waitlists for Section 8 vouchers.")];t||a.push(c("annualIncome","warning",`Annual income ${l(e.annualIncome)} exceeds 50% AMI placeholder of ${l(3e4)}.`));let r=[u("income-limit","Income below 50% AMI",t,"warning",`Annual income should be at or below ${l(3e4)} (placeholder 50% AMI).`)],o=[];return e.isDisabled&&o.push("disabled"),e.isElderly&&o.push("elderly"),e.isVeteran&&o.push("veteran"),{workflowId:"benefits/section8",domain:"benefits",title:"Section 8 Housing Choice Voucher",summary:"Section 8 eligibility assessment and voucher estimation. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:n,answers:e,derived:{amiLimit:3e4,incomeEligible:t,estimatedMonthlyVoucher:i,preferenceFactors:o},validation:{checks:r,flaggedFields:a},review:m("Section 8 eligibility",t?"income eligible — waitlist likely":"income may exceed limit",n,a,[`Household size: ${e.householdSize}. County: ${e.county}, ${e.state}.`,`Annual income: ${l(e.annualIncome)}. 50% AMI limit: ${l(3e4)}.`,`Estimated voucher value: ${l(i)}/month.`,o.length>0?`Preference factors: ${o.join(", ")}.`:"No preference factors identified."]),outputArtifacts:f("benefits-section8",n),provenance:["workflow-registry"]}}},"benefits/wic":{summary:{id:"benefits/wic",domain:"benefits",title:"WIC program eligibility",summary:"Assess WIC eligibility for women, infants, and children based on income and program enrollment.",status:"active",audience:"household",tags:["wic","nutrition","women","infants","children","benefits"]},inputSchema:ea,starterData:{applicantCategory:"child",householdSize:1,annualIncome:0,receivingMedicaid:!1,receivingSnap:!1,receivingTanf:!1},sections:[{id:"category",title:"Category",fields:[{key:"applicantCategory",label:"Applicant category",type:"select",options:[{label:"Pregnant",value:"pregnant"},{label:"Postpartum",value:"postpartum"},{label:"Infant (under 1)",value:"infant"},{label:"Child (1-4)",value:"child"}]},{key:"applicantAge",label:"Applicant age (if child)",type:"number"}]},{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual household income",type:"currency"},{key:"receivingMedicaid",label:"Currently receiving Medicaid",type:"confirm"},{key:"receivingSnap",label:"Currently receiving SNAP",type:"confirm"},{key:"receivingTanf",label:"Currently receiving TANF",type:"confirm"}]}],buildBundle:function(e){let t=ec(e.householdSize),i=1.85*t,n=e.annualIncome<=i,a=e.receivingMedicaid||e.receivingSnap||e.receivingTanf,r=[p("identity","Proof of identity",!0,!0),p("income-or-program","Income documentation or proof of program enrollment",!0,n||a),p("medical-referral","Medical/nutritional referral",!0,!1)],o=[];"child"===e.applicantCategory&&void 0!==e.applicantAge&&e.applicantAge>=5&&o.push(c("applicantAge","error","WIC child participants must be under age 5.")),a&&o.push(c("adjunctiveEligibility","review","Adjunctively eligible through Medicaid, SNAP, or TANF — income documentation may not be required.")),n||a||o.push(c("annualIncome","warning",`Annual income ${l(e.annualIncome)} exceeds 185% FPL limit of ${l(i)}.`));let s="child"===e.applicantCategory&&void 0!==e.applicantAge&&e.applicantAge>=5,d=[u("income-eligibility","Income at or below 185% FPL (or adjunctive)",n||a,"error",`Household income must be at or below ${l(i)} (185% FPL) or enrolled in qualifying program.`),u("age-check","Child under age 5",!s,"error","WIC child participants must be under 5 years old.")],h=(n||a)&&!s;return{workflowId:"benefits/wic",domain:"benefits",title:"WIC program eligibility",summary:"WIC eligibility assessment for women, infants, and children. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:r,answers:e,derived:{fpl:t,incomeLimit185:i,incomeEligible:n,adjunctivelyEligible:a,eligible:h},validation:{checks:d,flaggedFields:o},review:m("WIC eligibility",h?"likely eligible":"may not qualify",r,o,[`Category: ${e.applicantCategory}. Household size: ${e.householdSize}.`,`Annual income: ${l(e.annualIncome)}. 185% FPL limit: ${l(i)}.`,a?"Adjunctively eligible via Medicaid/SNAP/TANF.":"",void 0!==e.applicantAge?`Applicant age: ${e.applicantAge}.`:""].filter(Boolean)),outputArtifacts:f("benefits-wic",r),provenance:["workflow-registry"]}}},"benefits/liheap":{summary:{id:"benefits/liheap",domain:"benefits",title:"LIHEAP energy assistance",summary:"Assess LIHEAP eligibility for home energy assistance based on income and utility needs.",status:"active",audience:"household",tags:["liheap","energy","utility","heating","cooling","benefits"]},inputSchema:er,starterData:{householdSize:1,annualIncome:0,state:"CA",heatingSource:"",hasUtilityShutoffNotice:!1,season:"winter"},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"},{key:"state",label:"State",type:"text"}]},{id:"income",title:"Income",fields:[{key:"annualIncome",label:"Annual household income",type:"currency"}]},{id:"utility",title:"Utility Information",fields:[{key:"heatingSource",label:"Primary heating source",type:"text"},{key:"hasUtilityShutoffNotice",label:"Has utility shutoff notice",type:"confirm"},{key:"season",label:"Assistance season",type:"select",options:[{label:"Winter (heating)",value:"winter"},{label:"Summer (cooling)",value:"summer"}]}]}],buildBundle:function(e){let t=ec(e.householdSize),i=1.5*t,n=e.annualIncome<=i,a=e.hasUtilityShutoffNotice?"crisis":"regular",r=[p("utility-bills","Recent utility bills",!0,!0),p("income-verification","Income verification",!0,e.annualIncome>0),p("identity","Government-issued photo ID",!0,!0)],o=[];e.hasUtilityShutoffNotice&&o.push(c("hasUtilityShutoffNotice","review","Utility shutoff notice present — crisis assistance may be available with expedited processing.")),n||o.push(c("annualIncome","warning",`Annual income ${l(e.annualIncome)} exceeds 150% FPL limit of ${l(i)}.`));let s=[u("income-eligibility","Income at or below 150% FPL",n,"error",`Household income must be at or below ${l(i)} (150% FPL).`)];return{workflowId:"benefits/liheap",domain:"benefits",title:"LIHEAP energy assistance",summary:"LIHEAP eligibility assessment for home energy assistance. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:r,answers:e,derived:{fpl:t,incomeLimit150:i,incomeEligible:n,benefitType:a,season:e.season},validation:{checks:s,flaggedFields:o},review:m("LIHEAP eligibility",n?"likely eligible":"may not qualify",r,o,[`Household size: ${e.householdSize}. State: ${e.state}.`,`Annual income: ${l(e.annualIncome)}. 150% FPL limit: ${l(i)}.`,`Heating source: ${e.heatingSource}. Season: ${e.season}.`,`Benefit type recommendation: ${a} assistance.`]),outputArtifacts:f("benefits-liheap",r),provenance:["workflow-registry"]}}},"benefits/medicaid":{summary:{id:"benefits/medicaid",domain:"benefits",title:"Medicaid eligibility assessment",summary:"MAGI-based Medicaid eligibility review with expansion state awareness and ACA marketplace guidance.",status:"active",audience:"household",tags:["medicaid","healthcare","fpl","magi","benefits","aca"]},inputSchema:eo,starterData:{householdSize:1,monthlyIncome:0,state:"CA",isPregnant:!1,hasChildren:!1,isDisabled:!1,isElderly:!1,currentInsurance:"none"},sections:[{id:"household",title:"Household",fields:[{key:"householdSize",label:"Household size",type:"number"}]},{id:"income",title:"Income",fields:[{key:"monthlyIncome",label:"Monthly household income",type:"currency"}]},{id:"health-status",title:"Health Status",fields:[{key:"isPregnant",label:"Currently pregnant",type:"confirm"},{key:"hasChildren",label:"Has dependent children",type:"confirm"},{key:"isDisabled",label:"Disabled",type:"confirm"},{key:"isElderly",label:"Age 65 or older",type:"confirm"},{key:"currentInsurance",label:"Current insurance",type:"text"}]},{id:"state",title:"State",fields:[{key:"state",label:"State of residence",type:"text"}]}],buildBundle:function(e){let t=ec(e.householdSize),i=12*e.monthlyIncome,n=Math.round(i/t*100),a=!em.has(e.state),r=a?138:100,o=n<=r,s=!o&&n<=400,d=[p("income-verification","Income verification",!0,e.monthlyIncome>0),p("identity","Government-issued photo ID",!0,!0),p("disability-docs","Disability documentation",e.isDisabled,e.isDisabled)],h=[];s&&h.push(c("incomeLevel","review",`Income at ${n}% FPL — above Medicaid limit but may qualify for ACA marketplace subsidies.`)),a||o||h.push(c("state","warning",`${e.state} has not expanded Medicaid. Eligibility is more limited for non-disabled adults without children.`));let y=[u("income-check","MAGI income within Medicaid limits",o,"warning",`Income at ${n}% FPL. Medicaid limit in ${e.state}: ~${r}% FPL.`)],g=o?"likely":"unlikely";return{workflowId:"benefits/medicaid",domain:"benefits",title:"Medicaid eligibility assessment",summary:"MAGI-based Medicaid eligibility review. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:d,answers:e,derived:{fpl:t,annualIncome:i,incomeAsPctFpl:n,isExpansionState:a,medicaidLimit:r,likelyEligible:o,suggestAca:s},validation:{checks:y,flaggedFields:h},review:m("Medicaid eligibility",`${g}. Income at ${n}% FPL`,d,h,[`Household size: ${e.householdSize}. State: ${e.state}.`,`Monthly income: ${l(e.monthlyIncome)}. Annual: ${l(i)}.`,`Income as % of FPL: ${n}%.`,`Expansion state: ${a?"yes":"no"}. Medicaid limit: ~${r}% FPL.`,`Medicaid eligibility: ${g}. Income at ${n}% FPL.`,s?"Consider ACA marketplace enrollment — subsidies may be available.":""].filter(Boolean)),outputArtifacts:f("benefits-medicaid",d),provenance:["workflow-registry"]}}},"benefits/ssdi-application":{summary:{id:"benefits/ssdi-application",domain:"benefits",title:"SSDI application intake",summary:"SSDI application intake with SGA screening, five-step evaluation overview, and evidence checklist.",status:"active",audience:"individual",tags:["ssdi","disability","ssa","benefits","social-security"]},inputSchema:es,starterData:{applicantName:"",disabilityOnsetDate:"",lastWorkDate:"",monthlyEarnings:0,medicalConditions:[],treatingPhysicians:[],hasBeenHospitalized:!1},sections:[{id:"work-history",title:"Work History",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"lastWorkDate",label:"Last date worked",type:"date"},{key:"monthlyEarnings",label:"Current monthly earnings",type:"currency"}]},{id:"disability-info",title:"Disability Information",fields:[{key:"disabilityOnsetDate",label:"Disability onset date",type:"date"},{key:"hasBeenHospitalized",label:"Has been hospitalized",type:"confirm"}]},{id:"medical-evidence",title:"Medical Evidence",description:"List all medical conditions and treating physicians.",fields:[]}],buildBundle:function(e){let t=e.monthlyEarnings>1620,i=[p("medical-records","Medical records for all conditions",!0,e.hasBeenHospitalized),p("work-history","Work history (SSA form)",!0,!0),p("physician-docs","Treating physician documentation",!0,e.treatingPhysicians.length>0)],n=[c("applicationOutlook","review","Most initial SSDI applications are denied — prepare for appeals process.")];t&&n.push(c("monthlyEarnings","error",`Current monthly earnings of ${l(e.monthlyEarnings)} exceed the 2025 SGA limit of ${l(1620)}.`));let a=[u("sga-check","Earnings below SGA",!t,"error",`Monthly earnings must be at or below ${l(1620)} (2025 SGA limit).`),u("medical-conditions","Medical conditions documented",e.medicalConditions.length>0,"error","At least one medical condition must be documented."),u("treating-physicians","Treating physicians identified",e.treatingPhysicians.length>0,"warning","At least one treating physician should be identified.")],r=[`Step 1 — SGA: ${t?"FAIL (earnings above SGA)":"PASS (earnings at or below SGA)"}`,`Step 2 — Severity: ${e.medicalConditions.length} condition(s) reported.`,"Step 3 — Listings: requires SSA medical review (not assessed here).","Step 4 — Past work: requires vocational analysis (not assessed here).","Step 5 — Other work: requires vocational analysis (not assessed here)."];return{workflowId:"benefits/ssdi-application",domain:"benefits",title:"SSDI application intake",summary:"SSDI application intake with SGA check and five-step evaluation summary. PigeonGov does not submit claims.",applicant:void 0,household:[],evidence:i,answers:e,derived:{sgaLimit:1620,aboveSga:t,conditionCount:e.medicalConditions.length,physicianCount:e.treatingPhysicians.length,fiveStepSummary:r},validation:{checks:a,flaggedFields:n},review:m("SSDI application",t?"SGA exceeded — likely ineligible":"SGA within limits — further review needed",i,n,[`Applicant: ${e.applicantName}.`,`Disability onset: ${e.disabilityOnsetDate}. Last worked: ${e.lastWorkDate}.`,`Monthly earnings: ${l(e.monthlyEarnings)}. SGA limit: ${l(1620)}.`,`Conditions: ${e.medicalConditions.join(", ")}.`,`Treating physicians: ${e.treatingPhysicians.join(", ")}.`,...r]),outputArtifacts:f("benefits-ssdi-application",i),provenance:["workflow-registry"]}}},"benefits/ssi":{summary:{id:"benefits/ssi",domain:"benefits",title:"SSI eligibility assessment",summary:"Supplemental Security Income eligibility with income exclusion calculations, asset testing, and state supplement information.",status:"active",audience:"individual",tags:["ssi","supplemental-security-income","disability","elderly","benefits","ssa"]},inputSchema:el,starterData:{applicantName:"",age:0,isBlind:!1,isDisabled:!1,maritalStatus:"single",countableAssets:0,monthlyEarnedIncome:0,monthlyUnearnedIncome:0,state:"CA",receivingSSA:!1,livingArrangement:"own_household"},sections:[{id:"applicant",title:"Applicant",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"age",label:"Age",type:"number"},{key:"maritalStatus",label:"Marital status",type:"select",options:[{label:"Single",value:"single"},{label:"Married",value:"married"}]},{key:"state",label:"State",type:"text"}]},{id:"disability",title:"Disability / Blindness",fields:[{key:"isDisabled",label:"Has a qualifying disability",type:"confirm"},{key:"isBlind",label:"Is legally blind",type:"confirm"}]},{id:"income",title:"Monthly Income",fields:[{key:"monthlyEarnedIncome",label:"Monthly earned income (wages)",type:"currency"},{key:"monthlyUnearnedIncome",label:"Monthly unearned income (SSA, pensions, etc.)",type:"currency"},{key:"receivingSSA",label:"Receiving other Social Security benefits",type:"confirm"}]},{id:"assets",title:"Assets",fields:[{key:"countableAssets",label:"Total countable assets",type:"currency",helpText:"Exclude primary home, one vehicle, burial funds up to $1,500"}]},{id:"living",title:"Living Arrangement",fields:[{key:"livingArrangement",label:"Living arrangement",type:"select",options:[{label:"Own household",value:"own_household"},{label:"Living in another's household",value:"others_household"},{label:"Institution (nursing home, etc.)",value:"institution"}]}]}],buildBundle:function(e){var t,i;let n,a,r="married"===e.maritalStatus,o=r?1450:967,s=r?3e3:2e3,d=e.age>=65||e.isBlind||e.isDisabled,h=e.countableAssets<=s,{countableEarned:y,countableUnearned:g,totalCountable:b}=(t=e.monthlyEarnedIncome,i=e.monthlyUnearnedIncome,n=Math.max(0,(t-65)/2),{countableEarned:n,countableUnearned:a=Math.max(0,i-20),totalCountable:n+a}),v=b<o,w=Math.max(0,Math.round(o-b)),x=ef[e.state.toUpperCase()],k=x?r?x.couple:x.individual:0,S=w+k,_="others_household"===e.livingArrangement?Math.round(o/3):"institution"===e.livingArrangement?Math.max(0,o-30):0,I=Math.max(0,S-_),A="CT"!==e.state.toUpperCase()&&"HI"!==e.state.toUpperCase()&&"MN"!==e.state.toUpperCase()&&"ND"!==e.state.toUpperCase()&&"OK"!==e.state.toUpperCase(),z=[p("identity","Government-issued photo ID",!0,!0),p("ssn-proof","Social Security card or SSN verification",!0,!0),p("medical-records","Medical records (if claiming disability)",e.isDisabled,e.isDisabled),p("vision-records","Vision exam records (if claiming blindness)",e.isBlind,e.isBlind),p("financial-statements","Bank statements and financial records",!0,e.countableAssets>0),p("income-proof","Income documentation (pay stubs, benefits letters)",!0,e.monthlyEarnedIncome>0||e.monthlyUnearnedIncome>0),p("living-arrangement","Proof of living arrangement (lease, mortgage, letter)",!0,"own_household"!==e.livingArrangement),p("birth-certificate","Birth certificate or proof of age",e.age>=65,e.age>=65)],P=[];d||P.push(c("categoricalEligibility","error","SSI requires age 65+, blindness, or disability. None of these criteria are met.")),h||P.push(c("countableAssets","error",`Countable assets of ${l(e.countableAssets)} exceed the ${l(s)} limit for ${r?"couples":"individuals"}.`)),v||P.push(c("income","error",`Countable income of ${l(b)}/month exceeds the FBR of ${l(o)}/month.`)),"institution"===e.livingArrangement&&P.push(c("livingArrangement","review","Institutional living reduces SSI to $30/month. Medicaid typically covers institutional care costs.")),"others_household"===e.livingArrangement&&P.push(c("livingArrangement","review","Living in another's household reduces SSI by one-third of the FBR.")),e.receivingSSA&&P.push(c("receivingSSA","review","Other SSA benefits (e.g. Social Security retirement) count as unearned income and reduce SSI dollar-for-dollar after the $20 exclusion.")),x&&P.push(c("stateSupplement","review",`${e.state.toUpperCase()} provides a state SSI supplement (${x.label}): approximately ${l(r?x.couple:x.individual)}/month.`)),A&&d&&h&&v&&P.push(c("medicaid","review","SSI recipients in most states are automatically eligible for Medicaid — no separate application needed."));let C=[u("categorical","Categorical eligibility (65+, blind, or disabled)",d,"error","Must be age 65+, blind, or disabled."),u("assets",`Assets under ${l(s)}`,h,"error",`Countable assets must be at or below ${l(s)}.`),u("income","Income below FBR",v,"error",`Countable income must be below the FBR of ${l(o)}/month.`)],$=d&&h&&v;return{workflowId:"benefits/ssi",domain:"benefits",title:"SSI eligibility assessment",summary:"Supplemental Security Income eligibility assessment with income exclusion calculations. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:z,answers:e,derived:{fbr:o,assetLimit:s,categoricallyEligible:d,assetsPass:h,incomePass:v,countableEarned:y,countableUnearned:g,totalCountable:b,estimatedFederalPayment:w,stateSupplement:k,livingReduction:_,estimatedMonthlyPayment:I,immediatelMedicaid:A},validation:{checks:C,flaggedFields:P},review:m("SSI eligibility",$?"likely eligible":"may not qualify",z,P,[`Applicant: ${e.applicantName||"(not provided)"}. Age: ${e.age}. Marital status: ${e.maritalStatus}.`,`Categorical eligibility: ${d?"PASS":"FAIL"} (${[e.age>=65?"age 65+":"",e.isBlind?"blind":"",e.isDisabled?"disabled":""].filter(Boolean).join(", ")||"none"}).`,`Asset test: ${h?"PASS":"FAIL"}. Assets: ${l(e.countableAssets)}. Limit: ${l(s)}.`,`Earned income: ${l(e.monthlyEarnedIncome)}/mo. Countable after exclusions: ${l(y)}/mo.`,`Unearned income: ${l(e.monthlyUnearnedIncome)}/mo. Countable after exclusions: ${l(g)}/mo.`,`Total countable income: ${l(b)}/mo. FBR: ${l(o)}/mo.`,`Estimated federal SSI payment: ${l(w)}/mo.`,x?`State supplement (${x.label}): ${l(k)}/mo.`:"",_>0?`Living arrangement reduction: -${l(_)}/mo.`:"",`Estimated total monthly payment: ${l(I)}/mo.`,A&&$?"Automatic Medicaid eligibility in this state.":""].filter(Boolean)),outputArtifacts:f("benefits-ssi",z),provenance:["workflow-registry"]}}},"benefits/tanf":{summary:{id:"benefits/tanf",domain:"benefits",title:"TANF cash assistance eligibility",summary:"TANF eligibility assessment with state-specific benefit estimation, time limit tracking, and cross-program triggers.",status:"active",audience:"household",tags:["tanf","cash-assistance","welfare","families","children","benefits"]},inputSchema:ed,starterData:{applicantName:"",state:"CA",householdSize:1,numberOfChildren:0,youngestChildAge:0,monthlyGrossIncome:0,countableAssets:0,monthsReceived:0,isEmployed:!1,citizenshipStatus:"us_citizen"},sections:[{id:"household",title:"Household",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"state",label:"State",type:"text"},{key:"householdSize",label:"Household size",type:"number"},{key:"numberOfChildren",label:"Number of children under 18",type:"number"},{key:"youngestChildAge",label:"Age of youngest child",type:"number"}]},{id:"income",title:"Income & Assets",fields:[{key:"monthlyGrossIncome",label:"Monthly gross income",type:"currency"},{key:"countableAssets",label:"Countable assets",type:"currency"},{key:"isEmployed",label:"Currently employed",type:"confirm"}]},{id:"history",title:"TANF History",fields:[{key:"monthsReceived",label:"Months of TANF already received",type:"number",helpText:"Federal lifetime limit is 60 months"}]},{id:"citizenship",title:"Citizenship",fields:[{key:"citizenshipStatus",label:"Citizenship status",type:"select",options:[{label:"US citizen",value:"us_citizen"},{label:"Permanent resident",value:"permanent_resident"},{label:"Qualified alien",value:"qualified_alien"},{label:"Other",value:"other"}]}]}],buildBundle:function(e){let t,i=ec(e.householdSize),n=e.numberOfChildren>0,a=i/12*.5,r=e.monthlyGrossIncome<=a,o=(t=e.state.toUpperCase())in ey?ey[t]:2e3,s=null===o||e.countableAssets<=o,d=Math.max(0,60-e.monthsReceived),h=d<=0,y="other"!==e.citizenshipStatus,g=eh[e.state.toUpperCase()]??492,b=Math.max(0,g-Math.round(.5*e.monthlyGrossIncome)),v=e.monthsReceived>=24&&e.youngestChildAge>=1,w=e.youngestChildAge<6?20:30,x=n&&r,k=n&&r,S=[p("identity","Government-issued photo ID",!0,!0),p("income-verification","Income verification (pay stubs, tax return)",!0,e.monthlyGrossIncome>0),p("children-proof","Birth certificates or custody documents for children",n,n),p("citizenship-docs","Citizenship or immigration status documentation",!0,"us_citizen"===e.citizenshipStatus),p("asset-docs","Bank statements and financial records",null!==o,e.countableAssets>0),p("residency","Proof of state residency",!0,!0),p("employment-docs","Employment verification or job search records",e.isEmployed||v,e.isEmployed)],_=[];n||_.push(c("numberOfChildren","error","TANF requires at least one dependent child under 18 in the household.")),r||_.push(c("monthlyGrossIncome","error",`Monthly income ${l(e.monthlyGrossIncome)} exceeds approximately 50% FPL threshold of ${l(a)}/month.`)),s||_.push(c("countableAssets","error",`Countable assets ${l(e.countableAssets)} exceed ${e.state.toUpperCase()} limit of ${l(o)}.`)),h?_.push(c("monthsReceived","error",`Federal 60-month lifetime limit exhausted (${e.monthsReceived} months received). Some states offer extensions.`)):d<=12&&_.push(c("monthsReceived","warning",`Only ${d} month(s) remaining of the 60-month federal lifetime limit.`)),"other"===e.citizenshipStatus&&_.push(c("citizenshipStatus","error","TANF generally requires US citizenship or qualified alien status (5-year waiting period for most qualified aliens).")),v&&_.push(c("workRequirement","review",`Work requirement applies: ${w} hours/week of work activity required after 24 months.`)),x&&_.push(c("snapEligibility","review","TANF receipt categorically qualifies your household for SNAP benefits.")),k&&_.push(c("medicaidEligibility","review","TANF families often qualify for Medicaid — check your state's automatic enrollment rules."));let I=[u("has-children","Has dependent children",n,"error","Must have at least one child under 18."),u("income-test","Income below ~50% FPL",r,"error",`Monthly income must be at or below ~${l(a)}.`),u("asset-test","Assets within state limit",s,"error",null!==o?`Assets must be at or below ${l(o)}.`:"No asset test in this state."),u("time-limit","Within 60-month federal limit",!h,"error",`${d} months remaining of 60-month limit.`),u("citizenship","Citizenship/immigration status",y,"error","Must be US citizen or qualified alien.")],A=n&&r&&s&&!h&&y;return{workflowId:"benefits/tanf",domain:"benefits",title:"TANF cash assistance eligibility",summary:"TANF eligibility assessment with state-specific benefit estimation. PigeonGov does not submit applications.",applicant:void 0,household:[],evidence:S,answers:e,derived:{fpl:i,incomeThreshold50:a,incomePass:r,hasChildren:n,assetsPass:s,stateAssetLimit:o,monthsRemaining:d,timeLimitExhausted:h,workRequirementApplies:v,workHoursNeeded:w,maxBenefit:g,estimatedMonthlyBenefit:b,triggersSNAP:x,triggersMedicaid:k},validation:{checks:I,flaggedFields:_},review:m("TANF eligibility",A?"likely eligible":"may not qualify",S,_,[`Applicant: ${e.applicantName||"(not provided)"}. State: ${e.state}. Household size: ${e.householdSize}.`,`Children: ${e.numberOfChildren}. Youngest child age: ${e.youngestChildAge}.`,`Monthly gross income: ${l(e.monthlyGrossIncome)}. ~50% FPL threshold: ${l(a)}.`,null!==o?`Assets: ${l(e.countableAssets)}. State limit: ${l(o)}.`:`Assets: ${l(e.countableAssets)}. ${e.state.toUpperCase()} has no asset test.`,`Federal time limit: ${e.monthsReceived}/60 months used. ${d} months remaining.`,`Estimated monthly benefit: ${l(b)} (state max: ${l(g)}).`,v?`Work requirement: ${w} hours/week after 24 months.`:"",x?"TANF receipt categorically qualifies for SNAP.":"",k?"TANF families often qualify for Medicaid.":""].filter(Boolean)),outputArtifacts:f("benefits-tanf",S),provenance:["workflow-registry"]}}}},eb=n.Ikc({name:n.YjP().trim().min(1),serviceConnected:n.zMY(),currentSeverity:n.k5n(["mild","moderate","severe"])}).strict(),ev={"veterans/disability-claim":{summary:{id:"veterans/disability-claim",domain:"veterans",title:"VA disability compensation claim",summary:"Build a VA disability claim with combined rating estimation using VA math and evidence checklist.",status:"active",audience:"individual",tags:["va","disability","veterans","compensation","rating"]},inputSchema:n.Ikc({veteranName:n.YjP().trim().min(1),serviceStartDate:n.YjP().trim().min(1),serviceEndDate:n.YjP().trim().min(1),dischargeType:n.YjP().trim().min(1),conditions:n.YOg(eb).min(1),hasBuddyStatements:n.zMY().default(!1),hasMedicalRecords:n.zMY().default(!1)}).strict(),starterData:{veteranName:"",serviceStartDate:"",serviceEndDate:"",dischargeType:"honorable",conditions:[],hasBuddyStatements:!1,hasMedicalRecords:!1},sections:[{id:"service-info",title:"Service Information",fields:[{key:"veteranName",label:"Veteran name",type:"text"},{key:"serviceStartDate",label:"Service start date",type:"date"},{key:"serviceEndDate",label:"Service end date",type:"date"},{key:"dischargeType",label:"Discharge type",type:"text"}]},{id:"conditions",title:"Conditions",description:"List all conditions being claimed for service connection.",fields:[{key:"hasMedicalRecords",label:"Medical records available",type:"confirm"},{key:"hasBuddyStatements",label:"Buddy statements available",type:"confirm"}]},{id:"evidence",title:"Evidence",fields:[]}],buildBundle:function(e){let t=e.conditions.filter(e=>e.serviceConnected).map(e=>(function(e){switch(e){case"mild":return 10;case"moderate":return 30;case"severe":return 50}})(e.currentSeverity)),i=function(e){if(0===e.length)return 0;let t=[...e].sort((e,t)=>t-e),i=100;for(let e of t)i*=1-e/100;return 10*Math.round((100-i)/10)}(t),n=e.dischargeType.toLowerCase().includes("dishonorable"),a=[p("dd214","DD-214 (Certificate of Release or Discharge)",!0,!0),p("service-medical","Service medical records",!0,e.hasMedicalRecords),p("va-medical","VA medical records",!0,e.hasMedicalRecords),p("buddy-statements","Buddy statements / lay evidence",!1,e.hasBuddyStatements),p("nexus-letters","Nexus letters (medical opinion linking condition to service)",!0,!1,"Nexus letters from physicians are strongly recommended for service connection claims.")],r=[];n&&r.push(c("dischargeType","error","Dishonorable discharge generally bars eligibility for VA disability compensation.")),e.hasMedicalRecords||r.push(c("hasMedicalRecords","warning","Missing medical records — obtain service treatment records and current medical evidence.")),r.push(c("nexusLetters","warning","Nexus letters linking conditions to service are critical for claim success."));let o=[u("discharge-type","Eligible discharge type",!n,"error","Dishonorable discharge bars VA benefits eligibility."),u("medical-records","Medical records available",e.hasMedicalRecords,"warning","Medical records are essential for disability evaluation."),u("conditions-documented","Conditions documented",e.conditions.length>0,"error","At least one condition must be claimed.")],s=e.conditions.filter(e=>e.serviceConnected).length;return{workflowId:"veterans/disability-claim",domain:"veterans",title:"VA disability compensation claim",summary:"VA disability claim intake with combined rating estimation. PigeonGov does not file VA claims.",applicant:void 0,household:[],evidence:a,answers:e,derived:{individualRatings:t,estimatedCombinedRating:i,serviceConnectedCount:s,totalConditions:e.conditions.length,isDishonorable:n},validation:{checks:o,flaggedFields:r},review:m("VA disability claim",n?"ineligible — dishonorable discharge":`${s} service-connected condition(s)`,a,r,[`Veteran: ${e.veteranName}. Service: ${e.serviceStartDate} to ${e.serviceEndDate}.`,`Discharge type: ${e.dischargeType}.`,`Disability claim for ${e.conditions.length} condition(s). ${s} service-connected.`,`Estimated combined rating: ${i}%.`,`Individual ratings: ${t.map(e=>`${e}%`).join(", ")||"none (no service-connected conditions)"}.`]),outputArtifacts:f("veterans-disability-claim",a),provenance:["workflow-registry"]}}},"veterans/gi-bill":{summary:{id:"veterans/gi-bill",domain:"veterans",title:"Post-9/11 GI Bill benefits",summary:"Estimate GI Bill entitlement, monthly housing allowance, and remaining benefits months.",status:"active",audience:"individual",tags:["va","gi-bill","education","veterans","housing-allowance"]},inputSchema:n.Ikc({veteranName:n.YjP().trim().min(1),serviceType:n.k5n(["active","reserve","guard"]),totalServiceMonths:n.auy.number().int().nonnegative(),postServiceMonths:n.auy.number().int().nonnegative(),schoolName:n.YjP().trim().min(1),programType:n.k5n(["undergraduate","graduate","vocational"]),zipCode:n.YjP().trim().min(5),monthsUsed:n.auy.number().int().nonnegative().default(0)}).strict(),starterData:{veteranName:"",serviceType:"active",totalServiceMonths:0,postServiceMonths:0,schoolName:"",programType:"undergraduate",zipCode:"",monthsUsed:0},sections:[{id:"service-info",title:"Service Information",fields:[{key:"veteranName",label:"Veteran name",type:"text"},{key:"serviceType",label:"Service type",type:"select",options:[{label:"Active duty",value:"active"},{label:"Reserve",value:"reserve"},{label:"National Guard",value:"guard"}]},{key:"totalServiceMonths",label:"Total months of service",type:"number"},{key:"postServiceMonths",label:"Months since separation",type:"number"}]},{id:"school-selection",title:"School Selection",fields:[{key:"schoolName",label:"School name",type:"text"},{key:"programType",label:"Program type",type:"select",options:[{label:"Undergraduate",value:"undergraduate"},{label:"Graduate",value:"graduate"},{label:"Vocational / trade",value:"vocational"}]},{key:"zipCode",label:"School ZIP code",type:"text"}]},{id:"benefits",title:"Benefits",fields:[{key:"monthsUsed",label:"Months of entitlement already used",type:"number"}]}],buildBundle:function(e){let t=Math.max(0,36-e.monthsUsed),i=Math.round(1e3/12),n=[p("dd214","DD-214 (Certificate of Release or Discharge)",!0,!0),p("school-acceptance","School acceptance letter",!0,!1)],a=[];t<=3&&a.push(c("monthsUsed","warning",`Only ${t} month(s) of GI Bill entitlement remaining.`)),"active"!==e.serviceType&&e.totalServiceMonths<36&&a.push(c("serviceType","review","Reserve/Guard members may receive partial benefits based on aggregate active duty time."));let r=[u("entitlement-remaining","Entitlement months remaining",t>0,"error","No GI Bill entitlement months remaining."),u("service-duration","Minimum service requirement",e.totalServiceMonths>=6,"warning","At least 6 months of qualifying service is typically required.")];return{workflowId:"veterans/gi-bill",domain:"veterans",title:"Post-9/11 GI Bill benefits",summary:"GI Bill benefit estimation including housing allowance and remaining entitlement. PigeonGov does not file VA education claims.",applicant:void 0,household:[],evidence:n,answers:e,derived:{maxEntitlementMonths:36,monthsRemaining:t,estimatedMonthlyHousingAllowance:1800,bookStipendAnnual:1e3,bookStipendMonthly:i,programType:e.programType},validation:{checks:r,flaggedFields:a},review:m("GI Bill benefits",`${t} months remaining`,n,a,[`Veteran: ${e.veteranName}. Service type: ${e.serviceType}.`,`Total service: ${e.totalServiceMonths} months. Post-service: ${e.postServiceMonths} months.`,`School: ${e.schoolName}. Program: ${e.programType}. ZIP: ${e.zipCode}.`,`GI Bill benefits: ${t} months remaining. Estimated monthly housing: ${l(1800)}.`,`Book stipend: ${l(1e3)}/year.`]),outputArtifacts:f("veterans-gi-bill",n),provenance:["workflow-registry"]}}},"veterans/va-healthcare":{summary:{id:"veterans/va-healthcare",domain:"veterans",title:"VA healthcare enrollment",summary:"Determine VA healthcare priority group and estimate copay obligations based on service and income.",status:"active",audience:"individual",tags:["va","healthcare","veterans","priority-group","enrollment"]},inputSchema:n.Ikc({veteranName:n.YjP().trim().min(1),disabilityRating:n.auy.number().int().nonnegative().default(0),annualIncome:n.auy.number().nonnegative(),hasServiceConnectedDisability:n.zMY().default(!1),receivingVaPension:n.zMY().default(!1),hasCombatService:n.zMY().default(!1)}).strict(),starterData:{veteranName:"",disabilityRating:0,annualIncome:0,hasServiceConnectedDisability:!1,receivingVaPension:!1,hasCombatService:!1},sections:[{id:"service-info",title:"Service Information",fields:[{key:"veteranName",label:"Veteran name",type:"text"},{key:"hasCombatService",label:"Has combat service",type:"confirm"}]},{id:"health-income",title:"Health & Income",fields:[{key:"disabilityRating",label:"VA disability rating (%)",type:"number"},{key:"hasServiceConnectedDisability",label:"Has service-connected disability",type:"confirm"},{key:"receivingVaPension",label:"Receiving VA pension",type:"confirm"},{key:"annualIncome",label:"Annual income",type:"currency"}]}],buildBundle:function(e){var t;let i=e.hasServiceConnectedDisability&&e.disabilityRating>=50?{group:1,label:"50%+ service-connected disability"}:e.hasServiceConnectedDisability&&e.disabilityRating>=30?{group:2,label:"30-40% service-connected disability"}:e.hasServiceConnectedDisability&&e.disabilityRating>=10?{group:3,label:"10-20% service-connected disability"}:e.hasCombatService?{group:4,label:"Combat veteran (enhanced enrollment for 10 years post-combat)"}:e.receivingVaPension||e.annualIncome<35e3?{group:5,label:"Low income or receiving VA pension"}:e.annualIncome<5e4?{group:6,label:"Below geographic means test threshold"}:e.annualIncome<8e4?{group:7,label:"Above means test, agrees to copay"}:{group:8,label:"Above means test, no service-connected disability"},n=(t=i.group)<=3?0:t<=5?15:50,a=[p("dd214","DD-214 (Certificate of Release or Discharge)",!0,!0),p("income-verification","Income verification",!0,e.annualIncome>0),p("disability-rating","Disability rating documentation",e.hasServiceConnectedDisability,e.hasServiceConnectedDisability)],r=[];i.group>=7&&r.push(c("priorityGroup","review",`Priority Group ${i.group} — enrollment may be subject to available resources and copay requirements.`));let o=[u("income-documented","Income documented",e.annualIncome>0,"warning","Income documentation helps determine priority group and copay obligations.")];return{workflowId:"veterans/va-healthcare",domain:"veterans",title:"VA healthcare enrollment",summary:"VA healthcare priority group determination and copay estimation. PigeonGov does not enroll veterans in VA healthcare.",applicant:void 0,household:[],evidence:a,answers:e,derived:{priorityGroup:i.group,priorityGroupLabel:i.label,copayPerVisit:n,hasServiceConnectedDisability:e.hasServiceConnectedDisability,disabilityRating:e.disabilityRating},validation:{checks:o,flaggedFields:r},review:m("VA Healthcare enrollment",`Priority Group ${i.group}`,a,r,[`Veteran: ${e.veteranName}. Disability rating: ${e.disabilityRating}%.`,`VA Healthcare: Priority Group ${i.group}. ${i.label}.`,`VA Healthcare: Priority Group ${i.group}. Copay: ${l(n)} per visit.`]),outputArtifacts:f("veterans-va-healthcare",a),provenance:["workflow-registry"]}}}},ew={"legal/small-claims":{summary:{id:"legal/small-claims",domain:"legal",title:"Small claims court filing",summary:"Prepare a small claims case with filing fee estimate, evidence checklist, and statute of limitations check.",status:"active",audience:"individual",tags:["legal","small-claims","court","filing","dispute"]},inputSchema:n.Ikc({plaintiffName:n.YjP().trim().min(1),defendantName:n.YjP().trim().min(1),state:h,claimAmount:n.auy.number().positive(),claimType:n.k5n(["money-owed","property-damage","contract","deposit","other"]),incidentDate:n.YjP().trim().min(1),hasEvidence:n.zMY().default(!1)}).strict(),starterData:{plaintiffName:"",defendantName:"",state:"CA",claimAmount:0,claimType:"money-owed",incidentDate:"",hasEvidence:!1},sections:[{id:"claim-details",title:"Claim Details",fields:[{key:"claimAmount",label:"Claim amount",type:"currency"},{key:"claimType",label:"Claim type",type:"select",options:[{label:"Money owed",value:"money-owed"},{label:"Property damage",value:"property-damage"},{label:"Contract dispute",value:"contract"},{label:"Security deposit",value:"deposit"},{label:"Other",value:"other"}]},{key:"incidentDate",label:"Incident date",type:"date"},{key:"state",label:"State",type:"text"}]},{id:"parties",title:"Parties",fields:[{key:"plaintiffName",label:"Plaintiff (your name)",type:"text"},{key:"defendantName",label:"Defendant name",type:"text"}]},{id:"evidence",title:"Evidence",fields:[{key:"hasEvidence",label:"Has supporting evidence",type:"confirm"}]}],buildBundle:function(e){var t;let i=(t=e.claimAmount)<=2500?30:t<=5e3?50:75,n=e.claimAmount>1e4,a=e.incidentDate?new Date(e.incidentDate):null,r=new Date,o=a?Math.floor((r.getTime()-a.getTime())/864e5):0,s=a?o/365.25:0,d=!!a&&s>2,h=[p("receipts","Receipts or invoices",!1,e.hasEvidence),p("contracts","Contracts or written agreements",!1,e.hasEvidence),p("photos","Photographs of damage or condition",!1,!1),p("correspondence","Correspondence (emails, texts, letters)",!1,!1),p("witness-info","Witness contact information",!1,!1)],y=[];n&&y.push(c("claimAmount","warning",`Claim of ${l(e.claimAmount)} exceeds typical small claims limit of ${l(1e4)}. Check ${e.state} specific limits ($5,000-$25,000 depending on state).`)),d&&y.push(c("incidentDate","warning",`Incident occurred ~${Math.round(10*s)/10} years ago. Many states have 2-3 year statutes of limitations for small claims. Verify ${e.state} statute.`));let g=[u("claim-amount","Claim within typical limits",!n,"warning",`Check ${e.state} small claims dollar limit.`),u("defendant-identified","Defendant identified",e.defendantName.trim().length>0,"error","Defendant must be identified to file a small claims case."),u("evidence-available","Some evidence available",e.hasEvidence,"warning","Gather supporting evidence before filing.")];return{workflowId:"legal/small-claims",domain:"legal",title:"Small claims court filing",summary:"Small claims case preparation with filing fee estimate and evidence checklist. PigeonGov does not file court documents.",applicant:void 0,household:[],evidence:h,answers:e,derived:{estimatedFilingFee:i,typicalDollarLimit:1e4,exceedsLimit:n,daysSinceIncident:o,yearsElapsed:Math.round(10*s)/10,possibleStatuteOfLimitationsConcern:d},validation:{checks:g,flaggedFields:y},review:m("Small claims case",n?"claim may exceed small claims limit":"within typical limits",h,y,[`${e.plaintiffName} v. ${e.defendantName}. State: ${e.state}.`,`Claim type: ${e.claimType}. Amount: ${l(e.claimAmount)}.`,`Incident date: ${e.incidentDate}. ~${Math.round(10*s)/10} years ago.`,`Estimated filing fee: ${l(i)}.`]),outputArtifacts:f("legal-small-claims",h),provenance:["workflow-registry"]}}},"legal/expungement":{summary:{id:"legal/expungement",domain:"legal",title:"Criminal record expungement",summary:"Assess expungement eligibility with waiting period estimation and documentation requirements.",status:"active",audience:"individual",tags:["legal","expungement","criminal-record","court"]},inputSchema:n.Ikc({applicantName:n.YjP().trim().min(1),state:h,offenseType:n.k5n(["misdemeanor","felony","infraction"]),offenseDate:n.YjP().trim().min(1),sentenceCompletionDate:n.YjP().trim().min(1),hasCompletedProbation:n.zMY().default(!1),subsequentOffenses:n.auy.number().int().nonnegative().default(0)}).strict(),starterData:{applicantName:"",state:"CA",offenseType:"misdemeanor",offenseDate:"",sentenceCompletionDate:"",hasCompletedProbation:!1,subsequentOffenses:0},sections:[{id:"offense-info",title:"Offense Information",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"state",label:"State",type:"text"},{key:"offenseType",label:"Offense type",type:"select",options:[{label:"Infraction",value:"infraction"},{label:"Misdemeanor",value:"misdemeanor"},{label:"Felony",value:"felony"}]},{key:"offenseDate",label:"Offense date",type:"date"}]},{id:"eligibility",title:"Eligibility",fields:[{key:"sentenceCompletionDate",label:"Sentence completion date",type:"date"},{key:"hasCompletedProbation",label:"Has completed probation",type:"confirm"},{key:"subsequentOffenses",label:"Number of subsequent offenses",type:"number"}]},{id:"documentation",title:"Documentation",description:"Gather court records and proof of sentence completion.",fields:[]}],buildBundle:function(e){let t=function(e){switch(e){case"infraction":return{years:1,label:"~1 year from completion (varies by state)"};case"misdemeanor":return{years:3,label:"~3 years from sentence completion (varies by state)"};case"felony":return{years:7,label:"~5-7 years from sentence completion (varies by state)"}}}(e.offenseType),i=e.sentenceCompletionDate?new Date(e.sentenceCompletionDate):null,n=new Date,a=i?(n.getTime()-i.getTime())/315576e5:0,r=!!i&&a>=t.years,o=e.subsequentOffenses>0,s=[p("court-records","Court records of original case",!0,!0),p("sentence-completion","Proof of sentence completion",!0,e.hasCompletedProbation),p("character-references","Character references",!1,!1)],l=[];"felony"===e.offenseType&&l.push(c("offenseType","review","Felony expungement has stricter requirements in most states. Some felonies are ineligible for expungement.")),o&&l.push(c("subsequentOffenses","warning",`${e.subsequentOffenses} subsequent offense(s) on record — may disqualify expungement in many jurisdictions.`)),r||l.push(c("sentenceCompletionDate","warning",`Waiting period may not be met. ~${Math.round(10*a)/10} years since completion; estimated requirement: ${t.years} years.`));let d=[u("probation-complete","Probation/sentence completed",e.hasCompletedProbation,"error","Sentence and probation must be fully completed before expungement."),u("waiting-period","Waiting period likely met",r,"warning",`Estimated waiting period: ${t.label}.`),u("subsequent-offenses","No subsequent offenses",!o,"warning","Subsequent offenses may disqualify expungement.")],h=r&&e.hasCompletedProbation&&!o?"potentially eligible":"eligibility uncertain — review factors above";return{workflowId:"legal/expungement",domain:"legal",title:"Criminal record expungement",summary:"Expungement eligibility assessment with waiting period estimate. PigeonGov does not file legal petitions.",applicant:void 0,household:[],evidence:s,answers:e,derived:{waitingPeriodYears:t.years,waitingPeriodLabel:t.label,yearsSinceCompletion:Math.round(10*a)/10,waitingPeriodMet:r,hasSubsequentOffenses:o,eligibilityAssessment:h},validation:{checks:d,flaggedFields:l},review:m("Expungement eligibility",h,s,l,[`Applicant: ${e.applicantName}. State: ${e.state}.`,`Offense type: ${e.offenseType}. Date: ${e.offenseDate}.`,`Sentence completed: ${e.sentenceCompletionDate}. Years since: ~${Math.round(10*a)/10}.`,`Estimated waiting period: ${t.label}.`,`Subsequent offenses: ${e.subsequentOffenses}.`,`Assessment: ${h}.`]),outputArtifacts:f("legal-expungement",s),provenance:["workflow-registry"]}}},"legal/child-support-modification":{summary:{id:"legal/child-support-modification",domain:"legal",title:"Child support modification petition",summary:"Assess whether changed circumstances meet the modification threshold for child support orders.",status:"active",audience:"individual",tags:["legal","child-support","modification","family-law"]},inputSchema:n.Ikc({petitionerName:n.YjP().trim().min(1),currentOrderAmount:n.auy.number().nonnegative(),currentIncome:n.auy.number().nonnegative(),previousIncome:n.auy.number().nonnegative(),reason:n.k5n(["income-change","custody-change","child-needs-change"]),state:h,numberOfChildren:n.auy.number().int().positive()}).strict(),starterData:{petitionerName:"",currentOrderAmount:0,currentIncome:0,previousIncome:0,reason:"income-change",state:"CA",numberOfChildren:1},sections:[{id:"current-order",title:"Current Order",fields:[{key:"petitionerName",label:"Petitioner name",type:"text"},{key:"currentOrderAmount",label:"Current monthly support amount",type:"currency"},{key:"numberOfChildren",label:"Number of children",type:"number"},{key:"state",label:"State",type:"text"}]},{id:"changed-circumstances",title:"Changed Circumstances",fields:[{key:"previousIncome",label:"Previous income (at time of order)",type:"currency"},{key:"currentIncome",label:"Current income",type:"currency"},{key:"reason",label:"Reason for modification",type:"select",options:[{label:"Income change",value:"income-change"},{label:"Custody change",value:"custody-change"},{label:"Child needs change",value:"child-needs-change"}]}]},{id:"documentation",title:"Documentation",description:"Gather the current order, income records, and proof of changed circumstances.",fields:[]}],buildBundle:function(e){let t=e.currentIncome-e.previousIncome,i=e.previousIncome>0?Math.round(100*Math.abs(t/e.previousIncome)):100,n=i>=15,a=[p("current-order","Current child support order",!0,!0),p("income-docs","Income documentation (pay stubs, tax returns)",!0,e.currentIncome>0),p("changed-circumstances","Proof of changed circumstances",!0,!1)],r=[];n||r.push(c("incomeChange","warning",`Income change of ${i}% may not meet the typical 15% threshold for modification in most states.`)),"child-needs-change"===e.reason&&r.push(c("reason","review","Child needs-based modifications may require medical or educational documentation."));let o=[u("income-change-threshold","Income change meets threshold",n,"warning","Most states require at least a 15% change in income for modification."),u("current-order","Current order documented",!0,"error","The current support order must be documented.")];return{workflowId:"legal/child-support-modification",domain:"legal",title:"Child support modification petition",summary:"Child support modification assessment with income change analysis. PigeonGov does not file legal petitions.",applicant:void 0,household:[],evidence:a,answers:e,derived:{incomeChangeAmount:t,incomeChangePct:i,modificationThreshold:15,meetsThreshold:n,incomeDirection:t>=0?"increase":"decrease"},validation:{checks:o,flaggedFields:r},review:m("Child support modification",n?"change likely meets threshold":"change may be below threshold",a,r,[`Petitioner: ${e.petitionerName}. State: ${e.state}.`,`Current order: ${l(e.currentOrderAmount)}/month. Children: ${e.numberOfChildren}.`,`Previous income: ${l(e.previousIncome)}. Current income: ${l(e.currentIncome)}.`,`Income change: ${i}% (${t>=0?"increase":"decrease"}). Threshold: 15%.`,`Reason: ${e.reason}.`]),outputArtifacts:f("legal-child-support-modification",a),provenance:["workflow-registry"]}}}},ex=n.Ikc({description:n.YjP().trim().min(1),estimatedValue:n.auy.number().nonnegative(),beneficiary:n.YjP().trim().min(1)}).strict(),ek=n.Ikc({name:n.YjP().trim().min(1),age:n.auy.number().int().nonnegative(),isMinor:n.zMY()}).strict(),eS=n.Ikc({name:n.YjP().trim().min(1),relationship:n.YjP().trim().min(1)}).strict(),e_=n.Ikc({testatorName:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),maritalStatus:n.k5n(["single","married","divorced","widowed"]),children:n.YOg(ek).default([]),assets:n.YOg(ex).default([]),executor:eS,alternateExecutor:eS.optional(),guardianForMinors:n.YjP().trim().optional()}).strict(),eI=n.Ikc({principalName:n.YjP().trim().min(1),agentName:n.YjP().trim().min(1),type:n.k5n(["durable","springing","healthcare","financial"]),state:n.YjP().trim().regex(/^[A-Z]{2}$/),powers:n.YOg(n.YjP().trim().min(1)).min(1),effectiveDate:n.YjP().trim().optional()}).strict(),eA=n.Ikc({lifeSupport:n.zMY(),feedingTube:n.zMY(),painManagement:n.zMY(),organDonation:n.zMY()}).strict(),ez=n.Ikc({name:n.YjP().trim().min(1),relationship:n.YjP().trim().min(1)}).strict(),eP=n.Ikc({principalName:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),preferences:eA,healthcareAgent:ez,alternateAgent:ez.optional()}).strict(),eC={"estate/basic-will":{summary:{id:"estate/basic-will",domain:"estate",title:"Basic will planner",summary:"Plan asset distribution, executor selection, and guardian designation for a basic last will and testament.",status:"active",audience:"individual",tags:["will","estate","executor","guardian","probate"]},inputSchema:e_,starterData:{testatorName:"",state:"CA",maritalStatus:"single",children:[],assets:[],executor:{name:"",relationship:""}},sections:[{id:"personal-information",title:"Personal Information",fields:[{key:"testatorName",label:"Your full legal name (testator)",type:"text"},{key:"state",label:"State of residence",type:"text"},{key:"maritalStatus",label:"Marital status",type:"select",options:[{label:"Single",value:"single"},{label:"Married",value:"married"},{label:"Divorced",value:"divorced"},{label:"Widowed",value:"widowed"}]}]},{id:"assets-beneficiaries",title:"Assets & Beneficiaries",description:"List each asset with its estimated value and intended beneficiary.",fields:[{key:"assets",label:"Assets",type:"textarea",helpText:"Enter each asset's description, estimated value, and beneficiary."}]},{id:"executor-guardian",title:"Executor & Guardian",fields:[{key:"executor.name",label:"Executor name",type:"text"},{key:"executor.relationship",label:"Executor relationship",type:"text"},{key:"alternateExecutor.name",label:"Alternate executor name (optional)",type:"text"},{key:"guardianForMinors",label:"Guardian for minor children (if applicable)",type:"text"}]},{id:"state-requirements",title:"State Requirements",description:"Witness and notarisation requirements vary by state.",fields:[]}],buildBundle(e){var t;let i,n,a=e.children.some(e=>e.isMinor),r=e.assets.reduce((e,t)=>e+t.estimatedValue,0),o=new Set(e.assets.map(e=>e.beneficiary)),s=(t=e.state,i=new Set(["VT"]),n=new Set(["LA","CO","IN","NH"]),{witnesses:i.has(t)?3:2,notarizationRecommended:n.has(t)}),d=[p("asset-docs","Asset documentation (titles, deeds, account statements)",!1,e.assets.length>0),p("current-will","Current will (if updating)",!1,!1)],h=[c("general","review","This is a planning tool, not a legal document. Consult an attorney to draft and execute your will.")];a&&!e.guardianForMinors&&h.push(c("guardianForMinors","warning","You have minor children but no guardian designated. Strongly recommended.")),r>5e5&&h.push(c("assets","review",`Estate value (${l(r)}) may benefit from trust planning or more sophisticated estate tools. Consult an estate attorney.`));let y=[u("testator-name","Testator name provided",e.testatorName.trim().length>0,"error","Your full legal name is required."),u("executor-named","Executor named",e.executor.name.trim().length>0,"error","An executor must be named to administer the estate."),u("assets-listed","At least one asset listed",e.assets.length>0,"warning","List your assets to plan distribution.")];return{workflowId:"estate/basic-will",domain:"estate",title:"Basic will planner",summary:"Will planning bundle. This is NOT a legal document — consult an attorney.",applicant:void 0,household:e.children.map(e=>({name:e.name,relationship:"child",age:e.age,notes:e.isMinor?"Minor":void 0})),evidence:d,answers:e,derived:{totalEstateValue:r,assetCount:e.assets.length,beneficiaryCount:o.size,hasMinorChildren:a,witnessesRequired:s.witnesses,notarizationRecommended:s.notarizationRecommended,hasAlternateExecutor:!!e.alternateExecutor,hasGuardian:!!e.guardianForMinors},validation:{checks:y,flaggedFields:h},review:m("Will plan",`${e.assets.length} assets, ${o.size} beneficiaries`,d,h,[`Will plan for ${e.testatorName||"?"}. ${e.assets.length} assets, ${o.size} beneficiaries.`,`Executor: ${e.executor.name||"?"}${e.alternateExecutor?` (alternate: ${e.alternateExecutor.name})`:""}.`,`State: ${e.state} — ${s.witnesses} witnesses required${s.notarizationRecommended?", notarisation recommended":""}.`,"Attorney review recommended."]),outputArtifacts:f("estate-basic-will",d),provenance:["workflow-registry"]}}},"estate/power-of-attorney":{summary:{id:"estate/power-of-attorney",domain:"estate",title:"Power of attorney planner",summary:"Select POA type, define granted powers, and understand state-specific requirements for durable, springing, healthcare, or financial powers of attorney.",status:"active",audience:"individual",tags:["poa","power-of-attorney","estate","durable","healthcare"]},inputSchema:eI,starterData:{principalName:"",agentName:"",type:"durable",state:"CA",powers:["financial management","property transactions","legal matters"]},sections:[{id:"principal-agent",title:"Principal & Agent",fields:[{key:"principalName",label:"Principal (you)",type:"text"},{key:"agentName",label:"Agent (person receiving authority)",type:"text"}]},{id:"powers",title:"Powers",fields:[{key:"powers",label:"Powers granted",type:"textarea",helpText:"List specific powers: financial management, property transactions, healthcare decisions, etc."}]},{id:"type-selection",title:"Type Selection",fields:[{key:"type",label:"POA type",type:"select",options:[{label:"Durable (survives incapacity)",value:"durable"},{label:"Springing (activates on condition)",value:"springing"},{label:"Healthcare",value:"healthcare"},{label:"Financial",value:"financial"}]},{key:"effectiveDate",label:"Effective date (optional — immediate if blank)",type:"date"},{key:"state",label:"State",type:"text"}]}],buildBundle(e){let t,i=[p("principal-id","Principal identity document",!0,!1),p("agent-id","Agent identity document",!0,!1)],n=[];"springing"===e.type&&n.push(c("type","warning","Springing POA may be harder to use in practice — the agent must prove the triggering condition (typically incapacity) has occurred, which can cause delays in emergencies.")),t=e.powers.some(e=>e.toLowerCase().includes("healthcare")||e.toLowerCase().includes("medical"))&&"healthcare"!==e.type?"Consider a separate healthcare POA / advance directive for medical decisions.":"durable"===e.type?"Durable POA is the most common choice — remains effective if you become incapacitated.":"healthcare"===e.type?"Healthcare POA grants authority for medical decisions. Consider pairing with an advance directive.":"financial"===e.type?"Financial POA is limited to financial and property matters.":"Springing POA activates only when a specified condition is met.";let a=[u("principal-name","Principal name provided",e.principalName.trim().length>0,"error","The principal's legal name is required."),u("agent-name","Agent name provided",e.agentName.trim().length>0,"error","The agent's legal name is required."),u("powers-defined","Powers defined",e.powers.length>0,"error","At least one power must be granted.")];return{workflowId:"estate/power-of-attorney",domain:"estate",title:"Power of attorney planner",summary:"POA planning bundle. This is NOT a legal document — consult an attorney.",applicant:void 0,household:[],evidence:i,answers:e,derived:{poaType:e.type,powersCount:e.powers.length,recommendedType:t,isImmediate:!e.effectiveDate,stateFormNote:`Check ${e.state} statutory form requirements — many states have specific POA forms.`},validation:{checks:a,flaggedFields:n},review:m("Power of attorney",`${e.type} POA — ${e.powers.length} powers`,i,n,[`${e.type.charAt(0).toUpperCase()+e.type.slice(1)} POA: ${e.principalName||"?"} grants authority to ${e.agentName||"?"}.`,`${e.powers.length} powers defined.`,t]),outputArtifacts:f("estate-power-of-attorney",i),provenance:["workflow-registry"]}}},"estate/advance-directive":{summary:{id:"estate/advance-directive",domain:"estate",title:"Advance directive planner",summary:"Document healthcare preferences, designate a healthcare agent, and create a distribution plan for your advance directive.",status:"active",audience:"individual",tags:["advance-directive","living-will","healthcare-proxy","estate","end-of-life"]},inputSchema:eP,starterData:{principalName:"",state:"CA",preferences:{lifeSupport:!1,feedingTube:!1,painManagement:!0,organDonation:!1},healthcareAgent:{name:"",relationship:""}},sections:[{id:"healthcare-preferences",title:"Healthcare Preferences",fields:[{key:"preferences.lifeSupport",label:"Accept life-sustaining treatment",type:"confirm"},{key:"preferences.feedingTube",label:"Accept artificial nutrition/hydration",type:"confirm"},{key:"preferences.painManagement",label:"Prioritise comfort/pain management",type:"confirm"},{key:"preferences.organDonation",label:"Organ donation",type:"confirm"}]},{id:"agent-selection",title:"Agent Selection",fields:[{key:"healthcareAgent.name",label:"Healthcare agent name",type:"text"},{key:"healthcareAgent.relationship",label:"Relationship",type:"text"},{key:"alternateAgent.name",label:"Alternate agent name (recommended)",type:"text"},{key:"alternateAgent.relationship",label:"Alternate agent relationship",type:"text"}]},{id:"distribution",title:"Distribution",description:"Who should receive copies of your advance directive.",fields:[]}],buildBundle(e){let t=[],i=[];e.alternateAgent||i.push(c("alternateAgent","review","No alternate healthcare agent designated. Consider naming one in case your primary agent is unavailable."));let n=[{recipient:"Primary care physician",distributed:!1},{recipient:"Hospital / healthcare system",distributed:!1},{recipient:`Healthcare agent: ${e.healthcareAgent.name||"?"}`,distributed:!1},...e.alternateAgent?[{recipient:`Alternate agent: ${e.alternateAgent.name}`,distributed:!1}]:[],{recipient:"Family members",distributed:!1},{recipient:"Attorney (if applicable)",distributed:!1}],a=[`Life support: ${e.preferences.lifeSupport?"accept":"decline"}.`,`Artificial nutrition/hydration: ${e.preferences.feedingTube?"accept":"decline"}.`,`Pain management priority: ${e.preferences.painManagement?"yes":"no"}.`,`Organ donation: ${e.preferences.organDonation?"yes":"no"}.`],r=[u("principal-name","Your name provided",e.principalName.trim().length>0,"error","Your legal name is required."),u("agent-name","Healthcare agent named",e.healthcareAgent.name.trim().length>0,"error","A healthcare agent must be designated.")];return{workflowId:"estate/advance-directive",domain:"estate",title:"Advance directive planner",summary:"Advance directive planning bundle. This is NOT a legal document — consult an attorney or use your state's statutory form.",applicant:void 0,household:[],evidence:t,answers:e,derived:{distributionChecklist:n,preferencesSummary:a,hasAlternateAgent:!!e.alternateAgent,stateFormNote:`Use ${e.state}'s statutory advance directive form for legal validity.`},validation:{checks:r,flaggedFields:i},review:{headline:`Advance directive for ${e.principalName||"?"}. Healthcare agent: ${e.healthcareAgent.name||"?"}. Key preferences documented.`,notes:[`Advance directive for ${e.principalName||"?"}.`,`Healthcare agent: ${e.healthcareAgent.name||"?"} (${e.healthcareAgent.relationship||"?"}).`,...a,`Distribute copies to ${n.length} recipients.`],flaggedFields:i},outputArtifacts:f("estate-advance-directive",t),provenance:["workflow-registry"]}}}},e$=n.Ikc({year:n.auy.number().int().positive(),earnings:n.auy.number().nonnegative()}).strict(),eT={"retirement/ssa-estimator":{summary:{id:"retirement/ssa-estimator",domain:"retirement",title:"Social Security retirement benefit estimator",summary:"Estimate Social Security retirement benefits at ages 62, 67, and 70 using simplified AIME/PIA calculation.",status:"active",audience:"individual",tags:["ssa","retirement","social-security","pia","aime","benefits"]},inputSchema:n.Ikc({applicantName:n.YjP().trim().min(1),dob:n.YjP().trim().min(1),earningsHistory:n.YOg(e$).min(1),currentAnnualEarnings:n.auy.number().nonnegative(),spouseName:n.YjP().trim().optional(),spouseDob:n.YjP().trim().optional(),spouseEarnings:n.auy.number().nonnegative().optional()}).strict(),starterData:{applicantName:"",dob:"",earningsHistory:[],currentAnnualEarnings:0},sections:[{id:"personal-info",title:"Personal Information",fields:[{key:"applicantName",label:"Applicant name",type:"text"},{key:"dob",label:"Date of birth",type:"date"},{key:"spouseName",label:"Spouse name (optional)",type:"text"},{key:"spouseDob",label:"Spouse date of birth (optional)",type:"date"}]},{id:"earnings-history",title:"Earnings History",description:"Enter annual earnings for as many years as available. More history produces better estimates.",fields:[{key:"currentAnnualEarnings",label:"Current annual earnings",type:"currency"},{key:"spouseEarnings",label:"Spouse annual earnings (optional)",type:"currency"}]},{id:"retirement-planning",title:"Retirement Planning",description:"Benefits are estimated at ages 62 (early), 67 (full retirement age), and 70 (delayed).",fields:[]}],buildBundle:function(e){let t,i=function(e,t){let i=[...e.map(e=>e.earnings),t].sort((e,t)=>t-e);for(;i.length<35;)i.push(0);return Math.round(i.slice(0,35).reduce((e,t)=>e+t,0)/420)}(e.earningsHistory,e.currentAnnualEarnings),n=Math.round(100*(i<=1174?.9*i:i<=7078?1056.6000000000001+(i-1174)*.32:2945.88+(i-7078)*.15))/100,a=Math.round(.7*n),r=Math.round(n),o=Math.round(1.24*n);e.spouseName&&void 0!==e.spouseEarnings&&(t=Math.round(.5*n));let s=r-a,d=60*a,h=67+Math.round((s>0?Math.round(d/s):0)/12),y=[p("ssa-statement","Social Security Administration statement",!0,e.earningsHistory.length>0),p("w2-history","W-2 history (last 10+ years)",!1,e.earningsHistory.length>=10)],g=[];e.earningsHistory.length<10&&g.push(c("earningsHistory","warning","Fewer than 10 years of earnings history provided — estimate accuracy is limited."));let b=[u("earnings-history","Sufficient earnings history",e.earningsHistory.length>=10,"warning","At least 10 years of earnings history is recommended for accurate estimation.")],v=[`Applicant: ${e.applicantName}. Date of birth: ${e.dob}.`,`AIME (Average Indexed Monthly Earnings): ${l(i)}.`,`PIA (Primary Insurance Amount): ${l(n)}.`,`Estimated monthly benefit: ${l(a)} at 62, ${l(r)} at 67, ${l(o)} at 70.`,`Break-even analysis: collecting at 62 vs 67 breaks even at approximately age ~${h}.`];return void 0!==t&&e.spouseName&&v.push(`Spousal benefit (${e.spouseName}): up to ${l(t)}/month (50% of worker PIA).`),{workflowId:"retirement/ssa-estimator",domain:"retirement",title:"Social Security retirement benefit estimator",summary:"Simplified SSA retirement benefit estimation using AIME/PIA formula. PigeonGov is not affiliated with SSA.",applicant:void 0,household:[],evidence:y,answers:e,derived:{aime:i,pia:n,benefitAt62:a,benefitAt67:r,benefitAt70:o,spousalBenefit:t,breakEvenAge:h,yearsOfEarnings:e.earningsHistory.length},validation:{checks:b,flaggedFields:g},review:m("SSA retirement estimate",`${l(a)} at 62 / ${l(r)} at 67 / ${l(o)} at 70`,y,g,v),outputArtifacts:f("retirement-ssa-estimator",y),provenance:["workflow-registry"]}}}},eD={...O,...I,...N,...x,..._,...j,...w,...E,...W,...et,...eg,...ev,...ew,...eC,...eT},eN={1040:"tax/1040","family-visa":"immigration/family-visa-intake","healthcare-enrollment":"healthcare/aca-enrollment","unemployment-claim":"unemployment/claim-intake"};function eE(e){if(e in eD)return e;let t=eN[e];if(t)return t;throw Error(`Unsupported workflow: ${e}`)}function eM(e,t){let i=eD[eE(e)],n=i.inputSchema.safeParse(t);if(n.success)return i.buildBundle(n.data);try{let e=i.buildBundle(t);for(let t of n.error.issues)e.validation.flaggedFields.push({field:t.path.join("."),severity:"error",message:t.message,source:"schema-validation"});return e}catch{let e=i.summary;return{workflowId:e.id,domain:e.domain,title:e.title,summary:e.summary,household:[],evidence:[],answers:"object"==typeof t&&null!==t?t:{},derived:{},validation:{checks:[],flaggedFields:n.error.issues.map(e=>({field:e.path.join("."),severity:"error",message:e.message,source:"schema-validation"}))},review:{headline:`${e.title} — input validation failed`,notes:[`${n.error.issues.length} field(s) need attention before this workflow can be completed.`],flaggedFields:n.error.issues.map(e=>({field:e.path.join("."),severity:"error",message:e.message,source:"schema-validation"}))},outputArtifacts:[],provenance:["workflow-registry"]}}}let eO=2025,ej=["1040","schedule-1","schedule-c","w2","1099-nec","1099-int"],eL=n.k5n(ej),eB=n.k5n(["w2","1099-nec","1099-int"]),eF=n.Ikc({name:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/),relationship:n.YjP().trim().min(1),childTaxCreditEligible:n.zMY(),eitcEligible:n.zMY().optional()}).strict(),eY=n.Ikc({firstName:n.YjP().trim().min(1),lastName:n.YjP().trim().min(1),ssn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/),address:n.Ikc({street1:n.YjP().trim().min(1),street2:n.YjP().trim().optional(),city:n.YjP().trim().min(1),state:n.YjP().trim().regex(/^[A-Z]{2}$/),zipCode:n.YjP().trim().regex(/^\d{5}(?:-\d{4})?$/)}).strict()}).strict(),eR=n.Ikc({educatorExpenses:n.auy.number().default(0),hsaDeduction:n.auy.number().default(0),selfEmploymentTaxDeduction:n.auy.number().default(0),iraDeduction:n.auy.number().default(0),studentLoanInterest:n.auy.number().default(0)}).strict(),eZ=n.Ikc({filingStatus:n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]),wages:n.auy.number().default(0),taxableInterest:n.auy.number().default(0),ordinaryDividends:n.auy.number().default(0),scheduleCNet:n.auy.number().default(0),otherIncome:n.auy.number().default(0),adjustments:eR.default({educatorExpenses:0,hsaDeduction:0,selfEmploymentTaxDeduction:0,iraDeduction:0,studentLoanInterest:0}),useItemizedDeductions:n.zMY().default(!1),itemizedDeductions:n.auy.number().default(0),dependents:n.YOg(eF).default([]),federalWithheld:n.auy.number().min(0).default(0),estimatedPayments:n.auy.number().min(0).default(0)}).strict(),eG=n.Ikc({path:n.YjP().trim().min(1),type:eB.optional()}).strict(),eU=n.Ikc({formId:eL,taxYear:n.euz(eO).optional(),data:eZ,documents:n.YOg(eG).optional()}).strict(),eq=n.Ikc({taxYear:n.euz(eO).optional(),data:eZ}).strict(),eW=n.Ikc({formId:eL,taxYear:n.euz(eO).optional(),data:eZ}).strict(),eV=n.Ikc({formId:eL,taxYear:n.euz(eO).optional()}).strict(),eH=n.Ikc({path:n.YjP().trim().min(1),type:eB.optional()}).strict(),eJ=n.YjP().trim().min(1),eK=n.Ikc({workflowId:eJ}).strict(),eX=n.Ikc({workflowId:eJ}).strict(),eQ=n.Ikc({workflowId:eJ,data:n.g1P(n.YjP(),n.L5J())}).strict(),e0=n.Ikc({workflowId:eJ.optional(),bundle:n.g1P(n.YjP(),n.L5J())}).strict(),e1=e0,e2=n.Ikc({workflowId:eJ,data:n.g1P(n.YjP(),n.L5J())}).strict(),e5=n.Ikc({bundle:n.g1P(n.YjP(),n.L5J()),field:n.YjP().trim().min(1)}).strict();function e4(){return ej.map(e=>({formId:e,taxYear:eO,meta:s.xS[e].meta}))}function e3(e){let t=s.xS[e],i=t.schema instanceof n.bvH?Object.entries(t.schema.shape).map(([e,t])=>(function e(t,i){let{schema:a,optional:r}=function e(t){return t instanceof n.IiU?{schema:e(t.unwrap()).schema,optional:!0}:t instanceof n.XiL?{schema:e(t.removeDefault()).schema,optional:!0}:{schema:t,optional:!1}}(i),o={name:t,kind:a.constructor.name.replace(/^Zod/,"").toLowerCase()||"value",optional:r};return void 0!==a.description&&(o.description=a.description),a instanceof n.bvH?(o.kind="object",o.children=Object.entries(a.shape).map(([t,i])=>e(t,i))):a instanceof n.naA&&(o.kind="array",o.children=[e(`${t}[]`,a.element)]),o})(e,t)):[];return{formId:e,taxYear:eO,meta:t.meta,fields:i}}function e6(){return Object.values(eD).map(e=>e.summary).filter(e=>!0)}function e9(){return[...new Set(Object.values(eD).map(e=>e.summary.domain))]}function e7(e){let t,i;return i=(t=eD[eE(e)]).inputSchema instanceof n.bvH?Object.entries(t.inputSchema.shape).map(([e,t])=>(function e(t,i){return i instanceof n.XiL?e(t,i.unwrap()):i instanceof n.IiU?{...e(t,i.unwrap()),optional:!0}:i instanceof n.bvH?{name:t,kind:"object",fields:Object.entries(i.shape).map(([t,i])=>e(t,i))}:i instanceof n.naA?{name:t,kind:"array",items:e(`${t}[]`,i.element)}:{name:t,kind:i.constructor.name.replace(/^Zod/,"").toLowerCase()}})(e,t)):[],{...t.summary,sections:t.sections,starterData:t.starterData,inputSchema:i}}function e8(e){let t=eE(e);return{workflowId:t,starterData:structuredClone(eD[eE(t)].starterData)}}function te(e,t){return eM(e,t)}function tt(e,t){let i=eM(e,t);return{bundle:i,review:i.review,validation:i.validation}}function ti(e,t){let i;return(i=e.validation.flaggedFields.find(e=>e.field===t))?{found:!0,field:t,severity:i.severity,explanation:i.message,suggestedNextStep:"error"===i.severity?"Resolve the missing or contradictory data before relying on this packet.":"Review the underlying evidence with a human before finalizing the packet."}:{found:!1,field:t,explanation:"No flag was found for that field."}}function tn(e){return{filingStatus:e.filingStatus,wages:e.wages,taxableInterest:e.taxableInterest,ordinaryDividends:e.ordinaryDividends,scheduleCNet:e.scheduleCNet,otherIncome:e.otherIncome,adjustments:e.adjustments,useItemizedDeductions:e.useItemizedDeductions,itemizedDeductions:e.itemizedDeductions,dependents:e.dependents.map(e=>{let t={name:e.name,ssn:e.ssn,relationship:e.relationship,childTaxCreditEligible:e.childTaxCreditEligible};return void 0===e.eitcEligible?t:{...t,eitcEligible:e.eitcEligible}}),federalWithheld:e.federalWithheld,estimatedPayments:e.estimatedPayments}}function ta(e){return(0,o.xm)(tn(e))}async function tr(e,t){let{readPdfDocument:n}=await i.e("907").then(i.bind(i,6942)),a=await n(e,t?{typeHint:t}:{});return{documentType:a.detectedType,confidence:a.confidence,extracted:"unknown"===a.detectedType?null:a.document,text:a.rawText,flaggedFields:a.flaggedFields}}function to(e){let t,i=ta(e),n=(t=(0,a.b)({formId:"1040",taxYear:eO,filingStatus:e.filingStatus,taxpayer:eY.parse({firstName:"Taxpayer",lastName:"Example",ssn:"000-00-0000",address:{street1:"Unknown",city:"Unknown",state:"CA",zipCode:"00000"}}),dependents:tn(e).dependents,importedDocuments:[],taxInput:tn(e)}),(0,r.t)(t));return{headline:i.refund>0?"Refund due":i.amountOwed>0?"Balance due":"No balance due",notes:[`Gross income: $${i.grossIncome.toFixed(2)}`,`Taxable income: $${i.taxableIncome.toFixed(2)}`,`Federal tax: $${i.federalTax.toFixed(2)}`,`Refund: $${i.refund.toFixed(2)}`],flaggedFields:n.flaggedFields,checks:n.checks,calculation:i}}},4760(e,t,i){i.r(t),i.d(t,{default:()=>s,metadata:()=>o,schema:()=>r});var n=i(9206),a=i(5284);let r={workflowId:n.uG.shape.workflowId},o={name:"describe-workflow",description:"Describe a workflow schema, starter data, and guided sections."};function s(e){return(0,a.J)({...(0,n.Ut)(e.workflowId),flaggedFields:[]})}},2568(e,t,i){i.d(t,{q$:()=>N,iq:()=>C,tl:()=>x,Jb:()=>E,xS:()=>M});var n=i(3301);let a=n.k5n(["single","married_filing_jointly","married_filing_separately","head_of_household","qualifying_surviving_spouse"]).describe("Filing status"),r=n.euz(2025).describe("Tax year"),o=n.auy.number().finite().describe("Monetary amount in dollars"),s=o.describe("Signed monetary amount in dollars"),l=o.min(0).describe("Non-negative monetary amount in dollars");n.auy.number().finite().min(0).max(100).describe("Percentage value");let d=n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/,"Expected SSN in ###-##-#### format").describe("Social Security number"),u=n.YjP().trim().regex(/^\d{2}-\d{7}$/,"Expected EIN in ##-####### format").describe("Employer identification number"),c=n.YjP().trim().regex(/^\d{9}$/,"Expected 9-digit routing number").describe("Direct-deposit routing number"),p=n.YjP().trim().min(4).max(17).describe("Direct-deposit account number"),m=n.YjP().trim().regex(/^[A-Z]{2}$/,"Expected two-letter state code").describe("State code");n.YjP().trim().regex(/^\d{5}(?:-\d{4})?$/,"Expected ZIP code in ##### or #####-#### format").describe("ZIP code");let f=n.Ikc({street1:n.YjP().trim().describe("Street address line 1"),street2:n.YjP().trim().optional().describe("Street address line 2"),city:n.YjP().trim().describe("City"),state:m,zipCode:n.YjP().trim().describe("ZIP code")}).strict().describe("Mailing address"),h=n.Ikc({firstName:n.YjP().trim().describe("First name"),lastName:n.YjP().trim().describe("Last name"),ssn:d,address:f}).strict().describe("Person identity"),y=n.Ikc({name:n.YjP().trim().describe("Dependent name"),ssn:d,relationship:n.YjP().trim().describe("Relationship to taxpayer"),childTaxCreditEligible:n.zMY().describe("Child tax credit eligibility"),eitcEligible:n.zMY().optional().describe("Earned income credit eligibility")}).strict().describe("Dependent");n.zMY().describe("Boolean yes/no value");let g=n.Ikc({state:m,stateIdNumber:n.YjP().trim().min(1).optional().describe("State identification number"),stateIncome:s.optional().describe("State income amount"),stateTaxWithheld:l.optional().describe("State tax withheld"),localIncome:s.optional().describe("Local income amount"),localTaxWithheld:l.optional().describe("Local tax withheld")}).strict().describe("State and local tax information"),b=n.Ikc({code:n.YjP().trim().min(1).max(2).describe("W-2 box 12 code"),amount:l.describe("W-2 box 12 amount")}).strict().describe("W-2 box 12 entry"),v={advertising:l.optional().describe("Schedule C expense: advertising"),carAndTruck:l.optional().describe("Schedule C expense: car and truck"),commissionsAndFees:l.optional().describe("Schedule C expense: commissions and fees"),contractLabor:l.optional().describe("Schedule C expense: contract labor"),depletion:l.optional().describe("Schedule C expense: depletion"),depreciation:l.optional().describe("Schedule C expense: depreciation"),employeeBenefitPrograms:l.optional().describe("Schedule C expense: employee benefit programs"),insuranceOtherThanHealth:l.optional().describe("Schedule C expense: insurance other than health"),interestMortgage:l.optional().describe("Schedule C expense: interest mortgage"),interestOther:l.optional().describe("Schedule C expense: interest other"),legalAndProfessional:l.optional().describe("Schedule C expense: legal and professional"),officeExpense:l.optional().describe("Schedule C expense: office expense"),pensionAndProfitSharing:l.optional().describe("Schedule C expense: pension and profit sharing"),rentalOrLeaseVehicles:l.optional().describe("Schedule C expense: rental or lease vehicles"),rentalOrLeaseOtherBusinessProperty:l.optional().describe("Schedule C expense: rental or lease other business property"),repairsAndMaintenance:l.optional().describe("Schedule C expense: repairs and maintenance"),supplies:l.optional().describe("Schedule C expense: supplies"),taxesAndLicenses:l.optional().describe("Schedule C expense: taxes and licenses"),travel:l.optional().describe("Schedule C expense: travel"),meals:l.optional().describe("Schedule C expense: meals"),utilities:l.optional().describe("Schedule C expense: utilities"),wages:l.optional().describe("Schedule C expense: wages"),otherExpenses:l.optional().describe("Schedule C expense: other expenses")},w=n.Ikc(v).strict().describe("Schedule C expense breakdown"),x=n.Ikc({taxYear:r,filingStatus:a.describe("Filing status"),taxpayer:h.describe("Primary taxpayer"),spouse:h.optional().describe("Spouse identity for joint returns"),mailingAddress:f.describe("Mailing address"),dependents:n.YOg(y).default([]).describe("Dependents"),lines:n.Ikc({line1a:o.optional().describe("Line 1a - wages, salaries, tips"),line1b:o.optional().describe("Line 1b - taxable interest"),line1c:o.optional().describe("Line 1c - ordinary dividends"),line1d:o.optional().describe("Line 1d - IRA distributions"),line1e:o.optional().describe("Line 1e - pensions and annuities"),line1f:o.optional().describe("Line 1f - taxable social security benefits"),line1g:o.optional().describe("Line 1g - capital gain or loss"),line1h:o.optional().describe("Line 1h - other income"),line2a:o.optional().describe("Line 2a - tax-exempt interest"),line2b:o.optional().describe("Line 2b - taxable interest"),line3a:o.optional().describe("Line 3a - qualified dividends"),line3b:o.optional().describe("Line 3b - ordinary dividends"),line4a:o.optional().describe("Line 4a - IRA distributions"),line4b:o.optional().describe("Line 4b - taxable amount"),line5a:o.optional().describe("Line 5a - pensions and annuities"),line5b:o.optional().describe("Line 5b - taxable amount"),line6a:o.optional().describe("Line 6a - social security benefits"),line6b:o.optional().describe("Line 6b - taxable amount"),line7:o.optional().describe("Line 7 - capital gain or (loss)"),line8:o.optional().describe("Line 8 - other income from Schedule 1"),line9:o.optional().describe("Line 9 - total income"),line10:o.optional().describe("Line 10 - adjustments to income"),line11:o.optional().describe("Line 11 - adjusted gross income"),line12a:o.optional().describe("Line 12a - standard deduction"),line12b:o.optional().describe("Line 12b - itemized deductions"),line12c:o.optional().describe("Line 12c - qualified business income deduction"),line12d:o.optional().describe("Line 12d - add lines 12a through 12c"),line12e:o.optional().describe("Line 12e - deduction"),line12f:o.optional().describe("Line 12f - deduction worksheet"),line12g:o.optional().describe("Line 12g - deduction worksheet"),line12h:o.optional().describe("Line 12h - deduction worksheet"),line12z:o.optional().describe("Line 12z - total deduction"),line13:o.optional().describe("Line 13 - taxable income"),line14:o.optional().describe("Line 14 - tax"),line15:o.optional().describe("Line 15 - qualified business income deduction"),line16:o.optional().describe("Line 16 - total tax"),line17:o.optional().describe("Line 17 - amount from Schedule 2"),line18:o.optional().describe("Line 18 - other taxes"),line19:o.optional().describe("Line 19 - total tax"),line20:o.optional().describe("Line 20 - total payments"),line21:o.optional().describe("Line 21 - child tax credit and other credits"),line22:o.optional().describe("Line 22 - total tax after credits"),line23:o.optional().describe("Line 23 - other taxes"),line24:o.optional().describe("Line 24 - total tax"),line25a:l.optional().describe("Line 25a - federal income tax withheld from Form W-2"),line25b:l.optional().describe("Line 25b - federal income tax withheld from Form 1099"),line26:o.optional().describe("Line 26 - estimated tax payments"),line27:o.optional().describe("Line 27 - earned income credit"),line28:o.optional().describe("Line 28 - additional child tax credit"),line29:o.optional().describe("Line 29 - American opportunity credit"),line30:o.optional().describe("Line 30 - recovery rebate credit"),line31:o.optional().describe("Line 31 - amount from Schedule 3"),line32:o.optional().describe("Line 32 - total other payments and refundable credits"),line33:o.optional().describe("Line 33 - total payments"),line34:o.optional().describe("Line 34 - refund"),line35a:n.YjP().trim().optional().describe("Line 35a - routing number"),line35b:n.k5n(["checking","savings"]).optional().describe("Line 35b - account type"),line36:n.YjP().trim().optional().describe("Line 36 - account number"),line37:o.optional().describe("Line 37 - amount you owe")}).strict().describe("Form 1040 lines"),refundDirectDeposit:n.Ikc({routingNumber:c.optional().describe("Refund routing number"),accountNumber:p.optional().describe("Refund account number"),accountType:n.k5n(["checking","savings"]).optional().describe("Refund account type")}).strict().optional().describe("Refund direct deposit information"),signatures:n.Ikc({taxpayerSigned:n.zMY().optional().describe("Taxpayer signed return"),spouseSigned:n.zMY().optional().describe("Spouse signed return")}).strict().optional().describe("Signature indicators")}).strict().describe("Form 1040"),k=n.Ikc({taxYear:r,payer:n.Ikc({name:n.YjP().trim().min(1).describe("Payer name"),tin:u.optional().describe("Payer TIN"),address:h.shape.address.describe("Payer address")}).strict().describe("Payer information"),recipient:h.omit({address:!0}).extend({address:h.shape.address}).strict().describe("Recipient information"),boxes:n.Ikc({box1InterestIncome:l.optional().describe("Box 1 - interest income"),box2EarlyWithdrawalPenalty:l.optional().describe("Box 2 - early withdrawal penalty"),box3InterestOnUsSavingsBondsAndTreasuryObligations:l.optional().describe("Box 3 - interest on U.S. savings bonds and treasury obligations"),box4FederalIncomeTaxWithheld:l.optional().describe("Box 4 - federal income tax withheld"),box5InvestmentExpenses:l.optional().describe("Box 5 - investment expenses"),box6ForeignTaxPaid:l.optional().describe("Box 6 - foreign tax paid"),box7ForeignCountryOrUsPossession:n.YjP().trim().optional().describe("Box 7 - foreign country or U.S. possession"),box8TaxExemptInterest:l.optional().describe("Box 8 - tax-exempt interest"),box9SpecifiedPrivateActivityBondInterest:l.optional().describe("Box 9 - specified private activity bond interest"),box10MarketDiscount:l.optional().describe("Box 10 - market discount"),box11BondPremium:l.optional().describe("Box 11 - bond premium"),box12BondPremiumOnTaxExemptBond:l.optional().describe("Box 12 - bond premium on tax-exempt bond"),box13BondPremiumOnTreasuryObligations:l.optional().describe("Box 13 - bond premium on treasury obligations"),box14TaxExemptAndTaxCreditBondCusipNo:n.YjP().trim().optional().describe("Box 14 - tax-exempt and tax credit bond CUSIP number"),box15State:n.YOg(g).default([]).describe("State reporting information")}).strict().describe("1099-INT box data")}).strict().describe("1099-INT source document"),S=n.Ikc({taxYear:r,payer:n.Ikc({name:n.YjP().trim().min(1).describe("Payer name"),tin:u.optional().describe("Payer TIN"),address:h.shape.address.describe("Payer address")}).strict().describe("Payer information"),recipient:h.omit({address:!0}).extend({address:h.shape.address}).strict().describe("Recipient information"),boxes:n.Ikc({box1NonemployeeCompensation:l.optional().describe("Box 1 - nonemployee compensation"),box4FederalIncomeTaxWithheld:l.optional().describe("Box 4 - federal income tax withheld"),box5StateTaxWithheld:l.optional().describe("Box 5 - state tax withheld"),box6StateIncome:l.optional().describe("Box 6 - state income"),box7State:n.YOg(g).default([]).describe("State reporting information"),box1aDirectSales:n.zMY().optional().describe("Box 1a - direct sales indicator"),box2PayerMadeDirectSales:n.zMY().optional().describe("Box 2 - direct sales indicator"),box3PayerMadeStateWithholding:n.zMY().optional().describe("Box 3 - state withholding indicator"),box6FatcaFilingRequirement:n.zMY().optional().describe("Box 6 - FATCA filing requirement")}).strict().describe("1099-NEC box data")}).strict().describe("1099-NEC source document"),_=/^\d{4}-\d{2}-\d{2}$/,I=n.Ikc({description:n.YjP().trim().min(1).describe("(a) Description of property"),dateAcquired:n.YjP().trim().regex(_,"Expected date in YYYY-MM-DD format").describe("(b) Date acquired"),dateSold:n.YjP().trim().regex(_,"Expected date in YYYY-MM-DD format").describe("(c) Date sold or disposed of"),proceeds:l.describe("(d) Proceeds"),costBasis:l.describe("(e) Cost or other basis"),adjustments:o.optional().describe("(g) Amount of adjustment"),gainOrLoss:o.optional().describe("(h) Gain or (loss)")}).strict().describe("Form 8949 transaction entry"),A=n.Ikc({taxYear:r,part1ShortTerm:n.Ikc({checkboxCategory:n.k5n(["A","B","C"]).optional().describe("Check Box A, B, or C"),transactions:n.YOg(I).default([]).describe("Short-term transactions"),totalProceeds:l.optional().describe("Line 2(d) total proceeds"),totalCostBasis:l.optional().describe("Line 2(e) total cost basis"),totalAdjustments:o.optional().describe("Line 2(g) total adjustments"),totalGainOrLoss:o.optional().describe("Line 2(h) total gain or loss")}).strict().describe("Part I - Short-Term"),part2LongTerm:n.Ikc({checkboxCategory:n.k5n(["D","E","F"]).optional().describe("Check Box D, E, or F"),transactions:n.YOg(I).default([]).describe("Long-term transactions"),totalProceeds:l.optional().describe("Line 4(d) total proceeds"),totalCostBasis:l.optional().describe("Line 4(e) total cost basis"),totalAdjustments:o.optional().describe("Line 4(g) total adjustments"),totalGainOrLoss:o.optional().describe("Line 4(h) total gain or loss")}).strict().describe("Part II - Long-Term")}).strict().describe("Form 8949 (Sales and Other Dispositions of Capital Assets)"),z=n.Ikc({line1TaxableStateRefunds:o.optional().describe("Line 1 - taxable state refunds"),line2AlimonyReceived:o.optional().describe("Line 2 - alimony received"),line3BusinessIncomeOrLoss:o.optional().describe("Line 3 - business income or loss"),line4CapitalGainOrLoss:o.optional().describe("Line 4 - capital gain or loss"),line5RentalRealEstateRoyaltiesPartnershipsSCorporationsTrusts:o.optional().describe("Line 5 - rental real estate, royalties, partnerships, S corporations, trusts"),line6FarmIncomeOrLoss:o.optional().describe("Line 6 - farm income or loss"),line7UnemploymentCompensation:o.optional().describe("Line 7 - unemployment compensation"),line8OtherIncome:o.optional().describe("Line 8 - other income"),line9TotalOtherIncome:o.optional().describe("Line 9 - total other income"),line10TotalAdditionalIncome:o.optional().describe("Line 10 - total additional income")}).strict().describe("Schedule 1 Part I"),P=n.Ikc({line11EducatorExpenses:l.optional().describe("Line 11 - educator expenses"),line12CertainBusinessExpenses:l.optional().describe("Line 12 - certain business expenses"),line13HealthSavingsAccountDeduction:l.optional().describe("Line 13 - health savings account deduction"),line14MovingExpenses:l.optional().describe("Line 14 - moving expenses"),line15DeductiblePartOfSelfEmploymentTax:l.optional().describe("Line 15 - deductible part of self-employment tax"),line16SelfEmployedSEPSimpleAndQualifiedPlans:l.optional().describe("Line 16 - self-employed SEP, SIMPLE, and qualified plans"),line17SelfEmployedHealthInsuranceDeduction:l.optional().describe("Line 17 - self-employed health insurance deduction"),line18PenaltyOnEarlyWithdrawalOfSavings:l.optional().describe("Line 18 - penalty on early withdrawal of savings"),line19AlimonyPaid:l.optional().describe("Line 19 - alimony paid"),line20IraDeductions:l.optional().describe("Line 20 - IRA deduction"),line21StudentLoanInterestDeduction:l.optional().describe("Line 21 - student loan interest deduction"),line22Reserved:l.optional().describe("Line 22 - reserved"),line23Reserved:l.optional().describe("Line 23 - reserved"),line24ArcherMSADeduction:l.optional().describe("Line 24 - Archer MSA deduction"),line25Reserved:l.optional().describe("Line 25 - reserved"),line26TuitionAndFeesDeduction:l.optional().describe("Line 26 - tuition and fees deduction"),line27TotalAdjustments:l.optional().describe("Line 27 - total adjustments")}).strict().describe("Schedule 1 Part II"),C=n.Ikc({taxYear:r,filingStatus:a.optional().describe("Filing status for derived validation"),additionalIncome:z,adjustments:P}).strict().describe("Schedule 1"),$=n.Ikc({payerName:n.YjP().trim().min(1).describe("Payer name"),amount:l.describe("Interest amount")}).strict().describe("Interest source entry"),T=n.Ikc({payerName:n.YjP().trim().min(1).describe("Payer name"),amount:l.describe("Dividend amount")}).strict().describe("Dividend source entry"),D=n.Ikc({taxYear:r,filingStatus:a.optional().describe("Filing status"),part1Interest:n.Ikc({sources:n.YOg($).default([]).describe("Interest sources"),totalInterest:o.optional().describe("Line 4 - total interest")}).strict().describe("Part I - Interest"),part2OrdinaryDividends:n.Ikc({sources:n.YOg(T).default([]).describe("Dividend sources"),totalOrdinaryDividends:o.optional().describe("Line 6 - total ordinary dividends")}).strict().describe("Part II - Ordinary Dividends"),part3ForeignAccountsAndTrusts:n.Ikc({hasForeignAccount:n.zMY().default(!1).describe("Line 7a - foreign account"),foreignCountry:n.YjP().trim().optional().describe("Line 7b - foreign country"),hasForeignTrust:n.zMY().default(!1).describe("Line 8 - foreign trust")}).strict().describe("Part III - Foreign Accounts and Trusts")}).strict().describe("Schedule B (Interest and Ordinary Dividends)"),N=n.Ikc({taxYear:r,ownerName:n.YjP().trim().min(1).describe("Business owner name"),ownerSsn:n.YjP().trim().regex(/^\d{3}-\d{2}-\d{4}$/).describe("Business owner SSN"),businessName:n.YjP().trim().min(1).optional().describe("Business name"),ein:u.optional().describe("Business EIN"),principalBusinessOrProfession:n.YjP().trim().min(1).describe("Principal business or profession"),businessCode:n.YjP().trim().optional().describe("Principal business code"),accountingMethod:n.k5n(["cash","accrual","other"]).default("cash").describe("Accounting method"),materialParticipation:n.zMY().optional().describe("Material participation"),income:n.Ikc({grossReceiptsOrSales:l.optional().describe("Line 1 - gross receipts or sales"),returnsAndAllowances:l.optional().describe("Line 2 - returns and allowances"),otherIncome:l.optional().describe("Line 6 - other income")}).strict().describe("Schedule C income"),cogs:n.Ikc({inventoryAtBeginning:l.optional().describe("Line 35 - inventory at beginning"),purchasesLessItemsWithdrawnForPersonalUse:l.optional().describe("Line 36 - purchases"),costOfLabor:l.optional().describe("Line 37 - cost of labor"),materialsAndSupplies:l.optional().describe("Line 38 - materials and supplies"),otherCosts:l.optional().describe("Line 39 - other costs"),inventoryAtEnd:l.optional().describe("Line 41 - inventory at end")}).strict().describe("Cost of goods sold"),expenses:w.describe("Schedule C business expenses"),homeOfficeDeduction:l.optional().describe("Line 30 - home office deduction"),netProfitOrLoss:o.optional().describe("Line 31 - net profit or loss")}).strict().describe("Schedule C"),E=n.Ikc({taxYear:r,filingStatus:a.optional().describe("Filing status"),part1ShortTerm:n.Ikc({line1bForm8949BoxA:o.optional().describe("Line 1b - Form 8949 Box A totals"),line2Form8949BoxB:o.optional().describe("Line 2 - Form 8949 Box B totals"),line3Form8949BoxC:o.optional().describe("Line 3 - Form 8949 Box C totals"),line4ShortTermFromK1:o.optional().describe("Line 4 - Short-term gain/loss from Forms 6252, 4684, 6781, 8824"),line5NetShortTermFromScheduleK1:o.optional().describe("Line 5 - Net short-term from Schedule(s) K-1"),line6ShortTermCarryover:o.optional().describe("Line 6 - Short-term capital loss carryover"),line7NetShortTermGainOrLoss:o.optional().describe("Line 7 - Net short-term capital gain or (loss)")}).strict().describe("Part I - Short-Term Capital Gains and Losses"),part2LongTerm:n.Ikc({line8bForm8949BoxD:o.optional().describe("Line 8b - Form 8949 Box D totals"),line9Form8949BoxE:o.optional().describe("Line 9 - Form 8949 Box E totals"),line10Form8949BoxF:o.optional().describe("Line 10 - Form 8949 Box F totals"),line11OtherLongTermGainOrLoss:o.optional().describe("Line 11 - Gain from Form 4797"),line12NetLongTermFromScheduleK1:o.optional().describe("Line 12 - Net long-term from Schedule(s) K-1"),line13CapitalGainDistributions:o.optional().describe("Line 13 - Capital gain distributions"),line14LongTermCarryover:o.optional().describe("Line 14 - Long-term capital loss carryover"),line15NetLongTermGainOrLoss:o.optional().describe("Line 15 - Net long-term capital gain or (loss)")}).strict().describe("Part II - Long-Term Capital Gains and Losses"),part3Summary:n.Ikc({line16CombinedGainOrLoss:o.optional().describe("Line 16 - Combine lines 7 and 15"),line21CapitalGainOrLoss:o.optional().describe("Line 21 - Capital gain or (loss) to Form 1040 line 7")}).strict().describe("Part III - Summary")}).strict().describe("Schedule D (Capital Gains and Losses)"),M={1040:{meta:{id:"1040",name:"Form 1040",taxYear:2025,version:"2025.1",kind:"return"},schema:x},"schedule-1":{meta:{id:"schedule-1",name:"Schedule 1",taxYear:2025,version:"2025.1",kind:"schedule"},schema:C},"schedule-b":{meta:{id:"schedule-b",name:"Schedule B",taxYear:2025,version:"2025.1",kind:"schedule"},schema:D},"schedule-c":{meta:{id:"schedule-c",name:"Schedule C",taxYear:2025,version:"2025.1",kind:"schedule"},schema:N},"schedule-d":{meta:{id:"schedule-d",name:"Schedule D",taxYear:2025,version:"2025.1",kind:"schedule"},schema:E},"form-8949":{meta:{id:"form-8949",name:"Form 8949",taxYear:2025,version:"2025.1",kind:"schedule"},schema:A},w2:{meta:{id:"w2",name:"Form W-2",taxYear:2025,version:"2025.1",kind:"source-document"},schema:n.Ikc({taxYear:r,employer:n.Ikc({name:n.YjP().trim().min(1).describe("Employer name"),ein:u.optional().describe("Employer EIN"),address:n.Ikc({street1:n.YjP().trim().min(1).describe("Employer street address line 1"),street2:n.YjP().trim().optional().describe("Employer street address line 2"),city:n.YjP().trim().min(1).describe("Employer city"),state:n.YjP().trim().regex(/^[A-Z]{2}$/).describe("Employer state"),zipCode:n.YjP().trim().regex(/^\d{5}(?:-\d{4})?$/).describe("Employer ZIP code")}).strict().optional().describe("Employer address")}).strict().describe("Employer information"),employee:h.omit({address:!0}).extend({address:h.shape.address}).strict().describe("Employee information"),boxes:n.Ikc({box1WagesTipsOtherCompensation:o.optional().describe("Box 1 - wages, tips, other compensation"),box2FederalIncomeTaxWithheld:l.optional().describe("Box 2 - federal income tax withheld"),box3SocialSecurityWages:l.optional().describe("Box 3 - social security wages"),box4SocialSecurityTaxWithheld:l.optional().describe("Box 4 - social security tax withheld"),box5MedicareWagesAndTips:l.optional().describe("Box 5 - medicare wages and tips"),box6MedicareTaxWithheld:l.optional().describe("Box 6 - medicare tax withheld"),box7SocialSecurityTips:l.optional().describe("Box 7 - social security tips"),box8AllocatedTips:l.optional().describe("Box 8 - allocated tips"),box10DependentCareBenefits:l.optional().describe("Box 10 - dependent care benefits"),box11NonqualifiedPlans:l.optional().describe("Box 11 - nonqualified plans"),box12:n.YOg(b).default([]).describe("Box 12 entries"),box13StatutoryEmployee:n.zMY().optional().describe("Box 13 - statutory employee"),box13RetirementPlan:n.zMY().optional().describe("Box 13 - retirement plan"),box13ThirdPartySickPay:n.zMY().optional().describe("Box 13 - third-party sick pay"),box14Other:n.YOg(n.YjP().trim().min(1)).default([]).describe("Box 14 - other entries"),state:n.YOg(g).default([]).describe("State and local boxes 15-20")}).strict().describe("W-2 box data")}).strict().describe("W-2 source document")},"1099-nec":{meta:{id:"1099-nec",name:"Form 1099-NEC",taxYear:2025,version:"2025.1",kind:"source-document"},schema:S},"1099-int":{meta:{id:"1099-int",name:"Form 1099-INT",taxYear:2025,version:"2025.1",kind:"source-document"},schema:k}}},3301(e,t,i){let n,a,r;i.d(t,{XiL:()=>om,k5n:()=>r7,YjP:()=>ab,Ikc:()=>rF,L5J:()=>rC,g1P:()=>r0,zMY:()=>rf,bvH:()=>rB,IiU:()=>oo,naA:()=>rO,euz:()=>ot,YOg:()=>rj,auy:()=>p});var o,s,l={};i.r(l),i.d(l,{base64:()=>eT,base64url:()=>eD,bigint:()=>eR,boolean:()=>eU,browserEmail:()=>e_,cidrv4:()=>eC,cidrv6:()=>e$,cuid:()=>eo,cuid2:()=>es,date:()=>ej,datetime:()=>eF,domain:()=>eE,duration:()=>ep,e164:()=>eM,email:()=>ev,emoji:()=>eI,extendedDuration:()=>em,guid:()=>ef,hex:()=>eJ,hostname:()=>eN,html5Email:()=>ew,idnEmail:()=>eS,integer:()=>eZ,ipv4:()=>eA,ipv6:()=>ez,ksuid:()=>eu,lowercase:()=>eV,mac:()=>eP,md5_base64:()=>e0,md5_base64url:()=>e1,md5_hex:()=>eQ,nanoid:()=>ec,null:()=>eq,number:()=>eG,rfc5322Email:()=>ex,sha1_base64:()=>e5,sha1_base64url:()=>e4,sha1_hex:()=>e2,sha256_base64:()=>e6,sha256_base64url:()=>e9,sha256_hex:()=>e3,sha384_base64:()=>e8,sha384_base64url:()=>te,sha384_hex:()=>e7,sha512_base64:()=>ti,sha512_base64url:()=>tn,sha512_hex:()=>tt,string:()=>eY,time:()=>eB,ulid:()=>el,undefined:()=>eW,unicodeEmail:()=>ek,uppercase:()=>eH,uuid:()=>eh,uuid4:()=>ey,uuid6:()=>eg,uuid7:()=>eb,xid:()=>ed});var d={};i.r(d),i.d(d,{endsWith:()=>nB,gt:()=>nx,gte:()=>nk,includes:()=>nj,length:()=>nN,lowercase:()=>nM,lt:()=>nv,lte:()=>nw,maxLength:()=>nT,maxSize:()=>nP,mime:()=>nY,minLength:()=>nD,minSize:()=>nC,multipleOf:()=>nz,negative:()=>n_,nonnegative:()=>nA,nonpositive:()=>nI,normalize:()=>nZ,overwrite:()=>nR,positive:()=>nS,property:()=>nF,regex:()=>nE,size:()=>n$,slugify:()=>nW,startsWith:()=>nL,toLowerCase:()=>nU,toUpperCase:()=>nq,trim:()=>nG,uppercase:()=>nO});var u={};i.r(u),i.d(u,{ZodISODate:()=>n3,ZodISODateTime:()=>n5,ZodISODuration:()=>n8,ZodISOTime:()=>n9,date:()=>n6,datetime:()=>n4,duration:()=>ae,time:()=>n7});var c={};i.r(c),i.d(c,{ZodAny:()=>rA,ZodArray:()=>rO,ZodBase64:()=>a2,ZodBase64URL:()=>a4,ZodBigInt:()=>rh,ZodBigIntFormat:()=>rg,ZodBoolean:()=>rm,ZodCIDRv4:()=>aX,ZodCIDRv6:()=>a0,ZodCUID:()=>aO,ZodCUID2:()=>aL,ZodCatch:()=>ox,ZodCodec:()=>oz,ZodCustom:()=>oB,ZodCustomStringFormat:()=>re,ZodDate:()=>rE,ZodDefault:()=>om,ZodDiscriminatedUnion:()=>rW,ZodE164:()=>a6,ZodEmail:()=>aw,ZodEmoji:()=>aD,ZodEnum:()=>r9,ZodExactOptional:()=>ol,ZodFile:()=>oi,ZodFunction:()=>oj,ZodGUID:()=>ak,ZodIPv4:()=>aq,ZodIPv6:()=>aJ,ZodIntersection:()=>rH,ZodJWT:()=>a7,ZodKSUID:()=>aG,ZodLazy:()=>oN,ZodLiteral:()=>oe,ZodMAC:()=>aV,ZodMap:()=>r5,ZodNaN:()=>oS,ZodNanoID:()=>aE,ZodNever:()=>r$,ZodNonOptional:()=>og,ZodNull:()=>r_,ZodNullable:()=>ou,ZodNumber:()=>rr,ZodNumberFormat:()=>rs,ZodObject:()=>rB,ZodOptional:()=>oo,ZodPipe:()=>oI,ZodPrefault:()=>oh,ZodPromise:()=>oM,ZodReadonly:()=>oC,ZodRecord:()=>rQ,ZodSet:()=>r3,ZodString:()=>ag,ZodStringFormat:()=>av,ZodSuccess:()=>ov,ZodSymbol:()=>rw,ZodTemplateLiteral:()=>oT,ZodTransform:()=>oa,ZodTuple:()=>rK,ZodType:()=>ah,ZodULID:()=>aF,ZodURL:()=>aC,ZodUUID:()=>a_,ZodUndefined:()=>rk,ZodUnion:()=>rZ,ZodUnknown:()=>rP,ZodVoid:()=>rD,ZodXID:()=>aR,ZodXor:()=>rU,_ZodString:()=>ay,_default:()=>of,_function:()=>oL,any:()=>rz,array:()=>rj,base64:()=>a5,base64url:()=>a3,bigint:()=>ry,boolean:()=>rf,catch:()=>ok,check:()=>oF,cidrv4:()=>aQ,cidrv6:()=>a1,codec:()=>oP,cuid:()=>aj,cuid2:()=>aB,custom:()=>oY,date:()=>rM,describe:()=>oG,discriminatedUnion:()=>rV,e164:()=>a9,email:()=>ax,emoji:()=>aN,enum:()=>r7,exactOptional:()=>od,file:()=>on,float32:()=>rd,float64:()=>ru,function:()=>oL,guid:()=>aS,hash:()=>ra,hex:()=>rn,hostname:()=>ri,httpUrl:()=>aT,instanceof:()=>oq,int:()=>rl,int32:()=>rc,int64:()=>rb,intersection:()=>rJ,ipv4:()=>aW,ipv6:()=>aK,json:()=>oV,jwt:()=>a8,keyof:()=>rL,ksuid:()=>aU,lazy:()=>oE,literal:()=>ot,looseObject:()=>rR,looseRecord:()=>r2,mac:()=>aH,map:()=>r4,meta:()=>oU,nan:()=>o_,nanoid:()=>aM,nativeEnum:()=>r8,never:()=>rT,nonoptional:()=>ob,null:()=>rI,nullable:()=>oc,nullish:()=>op,number:()=>ro,object:()=>rF,optional:()=>os,partialRecord:()=>r1,pipe:()=>oA,prefault:()=>oy,preprocess:()=>oH,promise:()=>oO,readonly:()=>o$,record:()=>r0,refine:()=>oR,set:()=>r6,strictObject:()=>rY,string:()=>ab,stringFormat:()=>rt,stringbool:()=>oW,success:()=>ow,superRefine:()=>oZ,symbol:()=>rx,templateLiteral:()=>oD,transform:()=>or,tuple:()=>rX,uint32:()=>rp,uint64:()=>rv,ulid:()=>aY,undefined:()=>rS,union:()=>rG,unknown:()=>rC,url:()=>a$,uuid:()=>aI,uuidv4:()=>aA,uuidv6:()=>az,uuidv7:()=>aP,void:()=>rN,xid:()=>aZ,xor:()=>rq});var p={};function m(e,t,i){function n(i,n){if(i._zod||Object.defineProperty(i,"_zod",{value:{def:n,constr:o,traits:new Set},enumerable:!1}),i._zod.traits.has(e))return;i._zod.traits.add(e),t(i,n);let a=o.prototype,r=Object.keys(a);for(let e=0;e<r.length;e++){let t=r[e];t in i||(i[t]=a[t].bind(i))}}let a=i?.Parent??Object;class r extends a{}function o(e){var t;let a=i?.Parent?new r:this;for(let i of(n(a,e),(t=a._zod).deferred??(t.deferred=[]),a._zod.deferred))i();return a}return Object.defineProperty(r,"name",{value:e}),Object.defineProperty(o,"init",{value:n}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>!!i?.Parent&&t instanceof i.Parent||t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}i.r(p),i.d(p,{bigint:()=>oQ,boolean:()=>oX,date:()=>o0,number:()=>oK,string:()=>oJ}),Object.freeze({status:"aborted"}),Symbol("zod_brand");class f extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class h extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}let y={};function g(e){return e&&Object.assign(y,e),y}function b(e){let t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,i])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function v(e,t="|"){return e.map(e=>B(e)).join(t)}function w(e,t){return"bigint"==typeof t?t.toString():t}function x(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function k(e){return null==e}function S(e){let t=+!!e.startsWith("^"),i=e.endsWith("$")?e.length-1:e.length;return e.slice(t,i)}let _=Symbol("evaluating");function I(e,t,i){let n;Object.defineProperty(e,t,{get(){if(n!==_)return void 0===n&&(n=_,n=i()),n},set(i){Object.defineProperty(e,t,{value:i})},configurable:!0})}function A(e,t,i){Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!0,configurable:!0})}function z(...e){let t={};for(let i of e)Object.assign(t,Object.getOwnPropertyDescriptors(i));return Object.defineProperties({},t)}function P(e){return JSON.stringify(e)}let C="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function $(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}let T=x(()=>{if("u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch(e){return!1}});function D(e){if(!1===$(e))return!1;let t=e.constructor;if(void 0===t||"function"!=typeof t)return!0;let i=t.prototype;return!1!==$(i)&&!1!==Object.prototype.hasOwnProperty.call(i,"isPrototypeOf")}function N(e){return D(e)?{...e}:Array.isArray(e)?[...e]:e}let E=new Set(["string","number","symbol"]),M=new Set(["string","number","bigint","boolean","symbol","undefined"]);function O(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function j(e,t,i){let n=new e._zod.constr(t??e._zod.def);return(!t||i?.parent)&&(n._zod.parent=e),n}function L(e){if(!e)return{};if("string"==typeof e)return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");e.error=e.message}return(delete e.message,"string"==typeof e.error)?{...e,error:()=>e.error}:e}function B(e){return"bigint"==typeof e?e.toString()+"n":"string"==typeof e?`"${e}"`:`${e}`}let F={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Y={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function R(e,t=0){if(!0===e.aborted)return!0;for(let i=t;i<e.issues.length;i++)if(e.issues[i]?.continue!==!0)return!0;return!1}function Z(e,t){return t.map(t=>(t.path??(t.path=[]),t.path.unshift(e),t))}function G(e){return"string"==typeof e?e:e?.message}function U(e,t,i){let n={...e,path:e.path??[]};return e.message||(n.message=G(e.inst?._zod.def?.error?.(e))??G(t?.error?.(e))??G(i.customError?.(e))??G(i.localeError?.(e))??"Invalid input"),delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function q(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function W(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function V(...e){let[t,i,n]=e;return"string"==typeof t?{message:t,code:"custom",input:i,inst:n}:{...t}}let H=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,w,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},J=m("$ZodError",H),K=m("$ZodError",H,{Parent:Error}),X=e=>(t,i,n,a)=>{let r=n?Object.assign(n,{async:!1}):{async:!1},o=t._zod.run({value:i,issues:[]},r);if(o instanceof Promise)throw new f;if(o.issues.length){let t=new(a?.Err??e)(o.issues.map(e=>U(e,r,g())));throw C(t,a?.callee),t}return o.value},Q=X(K),ee=e=>async(t,i,n,a)=>{let r=n?Object.assign(n,{async:!0}):{async:!0},o=t._zod.run({value:i,issues:[]},r);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(a?.Err??e)(o.issues.map(e=>U(e,r,g())));throw C(t,a?.callee),t}return o.value},et=ee(K),ei=e=>(t,i,n)=>{let a=n?{...n,async:!1}:{async:!1},r=t._zod.run({value:i,issues:[]},a);if(r instanceof Promise)throw new f;return r.issues.length?{success:!1,error:new(e??J)(r.issues.map(e=>U(e,a,g())))}:{success:!0,data:r.value}},en=ei(K),ea=e=>async(t,i,n)=>{let a=n?Object.assign(n,{async:!0}):{async:!0},r=t._zod.run({value:i,issues:[]},a);return r instanceof Promise&&(r=await r),r.issues.length?{success:!1,error:new e(r.issues.map(e=>U(e,a,g())))}:{success:!0,data:r.value}},er=ea(K),eo=/^[cC][^\s-]{8,}$/,es=/^[0-9a-z]+$/,el=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ed=/^[0-9a-vA-V]{20}$/,eu=/^[A-Za-z0-9]{27}$/,ec=/^[a-zA-Z0-9_-]{21}$/,ep=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,em=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,ef=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,eh=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,ey=eh(4),eg=eh(6),eb=eh(7),ev=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,ew=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,ex=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,ek=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,eS=ek,e_=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function eI(){return RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")}let eA=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ez=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,eP=e=>{let t=O(e??":");return RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},eC=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,e$=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,eT=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,eD=/^[A-Za-z0-9_-]*$/,eN=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,eE=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,eM=/^\+[1-9]\d{6,14}$/,eO="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ej=RegExp(`^${eO}$`);function eL(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function eB(e){return RegExp(`^${eL(e)}$`)}function eF(e){let t=eL({precision:e.precision}),i=["Z"];e.local&&i.push(""),e.offset&&i.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${i.join("|")})`;return RegExp(`^${eO}T(?:${n})$`)}let eY=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return RegExp(`^${t}$`)},eR=/^-?\d+n?$/,eZ=/^-?\d+$/,eG=/^-?\d+(?:\.\d+)?$/,eU=/^(?:true|false)$/i,eq=/^null$/i,eW=/^undefined$/i,eV=/^[^A-Z]*$/,eH=/^[^a-z]*$/,eJ=/^[0-9a-fA-F]*$/;function eK(e,t){return RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function eX(e){return RegExp(`^[A-Za-z0-9_-]{${e}}$`)}let eQ=/^[0-9a-fA-F]{32}$/,e0=eK(22,"=="),e1=eX(22),e2=/^[0-9a-fA-F]{40}$/,e5=eK(27,"="),e4=eX(27),e3=/^[0-9a-fA-F]{64}$/,e6=eK(43,"="),e9=eX(43),e7=/^[0-9a-fA-F]{96}$/,e8=eK(64,""),te=eX(64),tt=/^[0-9a-fA-F]{128}$/,ti=eK(86,"=="),tn=eX(86),ta=m("$ZodCheck",(e,t)=>{var i;e._zod??(e._zod={}),e._zod.def=t,(i=e._zod).onattach??(i.onattach=[])}),tr={number:"number",bigint:"bigint",object:"date"},to=m("$ZodCheckLessThan",(e,t)=>{ta.init(e,t);let i=tr[typeof t.value];e._zod.onattach.push(e=>{let i=e._zod.bag,n=(t.inclusive?i.maximum:i.exclusiveMaximum)??1/0;t.value<n&&(t.inclusive?i.maximum=t.value:i.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:i,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ts=m("$ZodCheckGreaterThan",(e,t)=>{ta.init(e,t);let i=tr[typeof t.value];e._zod.onattach.push(e=>{let i=e._zod.bag,n=(t.inclusive?i.minimum:i.exclusiveMinimum)??-1/0;t.value>n&&(t.inclusive?i.minimum=t.value:i.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:i,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),tl=m("$ZodCheckMultipleOf",(e,t)=>{ta.init(e,t),e._zod.onattach.push(e=>{var i;(i=e._zod.bag).multipleOf??(i.multipleOf=t.value)}),e._zod.check=i=>{if(typeof i.value!=typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof i.value?i.value%t.value===BigInt(0):0===function(e,t){let i=(e.toString().split(".")[1]||"").length,n=t.toString(),a=(n.split(".")[1]||"").length;if(0===a&&/\d?e-\d?/.test(n)){let e=n.match(/\d?e-(\d?)/);e?.[1]&&(a=Number.parseInt(e[1]))}let r=i>a?i:a;return Number.parseInt(e.toFixed(r).replace(".",""))%Number.parseInt(t.toFixed(r).replace(".",""))/10**r}(i.value,t.value))||i.issues.push({origin:typeof i.value,code:"not_multiple_of",divisor:t.value,input:i.value,inst:e,continue:!t.abort})}}),td=m("$ZodCheckNumberFormat",(e,t)=>{ta.init(e,t),t.format=t.format||"float64";let i=t.format?.includes("int"),n=i?"int":"number",[a,r]=F[t.format];e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,n.minimum=a,n.maximum=r,i&&(n.pattern=eZ)}),e._zod.check=o=>{let s=o.value;if(i){if(!Number.isInteger(s))return void o.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:s,inst:e});if(!Number.isSafeInteger(s))return void(s>0?o.issues.push({input:s,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}))}s<a&&o.issues.push({origin:"number",input:s,code:"too_small",minimum:a,inclusive:!0,inst:e,continue:!t.abort}),s>r&&o.issues.push({origin:"number",input:s,code:"too_big",maximum:r,inclusive:!0,inst:e,continue:!t.abort})}}),tu=m("$ZodCheckBigIntFormat",(e,t)=>{ta.init(e,t);let[i,n]=Y[t.format];e._zod.onattach.push(e=>{let a=e._zod.bag;a.format=t.format,a.minimum=i,a.maximum=n}),e._zod.check=a=>{let r=a.value;r<i&&a.issues.push({origin:"bigint",input:r,code:"too_small",minimum:i,inclusive:!0,inst:e,continue:!t.abort}),r>n&&a.issues.push({origin:"bigint",input:r,code:"too_big",maximum:n,inclusive:!0,inst:e,continue:!t.abort})}}),tc=m("$ZodCheckMaxSize",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!k(t)&&void 0!==t.size}),e._zod.onattach.push(e=>{let i=e._zod.bag.maximum??1/0;t.maximum<i&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=i=>{let n=i.value;n.size<=t.maximum||i.issues.push({origin:q(n),code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),tp=m("$ZodCheckMinSize",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!k(t)&&void 0!==t.size}),e._zod.onattach.push(e=>{let i=e._zod.bag.minimum??-1/0;t.minimum>i&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=i=>{let n=i.value;n.size>=t.minimum||i.issues.push({origin:q(n),code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),tm=m("$ZodCheckSizeEquals",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!k(t)&&void 0!==t.size}),e._zod.onattach.push(e=>{let i=e._zod.bag;i.minimum=t.size,i.maximum=t.size,i.size=t.size}),e._zod.check=i=>{let n=i.value,a=n.size;if(a===t.size)return;let r=a>t.size;i.issues.push({origin:q(n),...r?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!t.abort})}}),tf=m("$ZodCheckMaxLength",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!k(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{let i=e._zod.bag.maximum??1/0;t.maximum<i&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=i=>{let n=i.value;if(n.length<=t.maximum)return;let a=W(n);i.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),th=m("$ZodCheckMinLength",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!k(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{let i=e._zod.bag.minimum??-1/0;t.minimum>i&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=i=>{let n=i.value;if(n.length>=t.minimum)return;let a=W(n);i.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),ty=m("$ZodCheckLengthEquals",(e,t)=>{var i;ta.init(e,t),(i=e._zod.def).when??(i.when=e=>{let t=e.value;return!k(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{let i=e._zod.bag;i.minimum=t.length,i.maximum=t.length,i.length=t.length}),e._zod.check=i=>{let n=i.value,a=n.length;if(a===t.length)return;let r=W(n),o=a>t.length;i.issues.push({origin:r,...o?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!t.abort})}}),tg=m("$ZodCheckStringFormat",(e,t)=>{var i,n;ta.init(e,t),e._zod.onattach.push(e=>{let i=e._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(i=e._zod).check??(i.check=i=>{t.pattern.lastIndex=0,t.pattern.test(i.value)||i.issues.push({origin:"string",code:"invalid_format",format:t.format,input:i.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),tb=m("$ZodCheckRegex",(e,t)=>{tg.init(e,t),e._zod.check=i=>{t.pattern.lastIndex=0,t.pattern.test(i.value)||i.issues.push({origin:"string",code:"invalid_format",format:"regex",input:i.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),tv=m("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=eV),tg.init(e,t)}),tw=m("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=eH),tg.init(e,t)}),tx=m("$ZodCheckIncludes",(e,t)=>{ta.init(e,t);let i=O(t.includes),n=new RegExp("number"==typeof t.position?`^.{${t.position}}${i}`:i);t.pattern=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=i=>{i.value.includes(t.includes,t.position)||i.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:i.value,inst:e,continue:!t.abort})}}),tk=m("$ZodCheckStartsWith",(e,t)=>{ta.init(e,t);let i=RegExp(`^${O(t.prefix)}.*`);t.pattern??(t.pattern=i),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=i=>{i.value.startsWith(t.prefix)||i.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:i.value,inst:e,continue:!t.abort})}}),tS=m("$ZodCheckEndsWith",(e,t)=>{ta.init(e,t);let i=RegExp(`.*${O(t.suffix)}$`);t.pattern??(t.pattern=i),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=i=>{i.value.endsWith(t.suffix)||i.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:i.value,inst:e,continue:!t.abort})}});function t_(e,t,i){e.issues.length&&t.issues.push(...Z(i,e.issues))}let tI=m("$ZodCheckProperty",(e,t)=>{ta.init(e,t),e._zod.check=e=>{let i=t.schema._zod.run({value:e.value[t.property],issues:[]},{});if(i instanceof Promise)return i.then(i=>t_(i,e,t.property));t_(i,e,t.property)}}),tA=m("$ZodCheckMimeType",(e,t)=>{ta.init(e,t);let i=new Set(t.mime);e._zod.onattach.push(e=>{e._zod.bag.mime=t.mime}),e._zod.check=n=>{i.has(n.value.type)||n.issues.push({code:"invalid_value",values:t.mime,input:n.value.type,inst:e,continue:!t.abort})}}),tz=m("$ZodCheckOverwrite",(e,t)=>{ta.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});class tP{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let t=e.split("\n").filter(e=>e),i=Math.min(...t.map(e=>e.length-e.trimStart().length));for(let e of t.map(e=>e.slice(i)).map(e=>" ".repeat(2*this.indent)+e))this.content.push(e)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}let tC={major:4,minor:3,patch:6},t$=m("$ZodType",(e,t)=>{var i;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=tC;let n=[...e._zod.def.checks??[]];for(let t of(e._zod.traits.has("$ZodCheck")&&n.unshift(e),n))for(let i of t._zod.onattach)i(e);if(0===n.length)(i=e._zod).deferred??(i.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,i)=>{let n,a=R(e);for(let r of t){if(r._zod.def.when){if(!r._zod.def.when(e))continue}else if(a)continue;let t=e.issues.length,o=r._zod.check(e);if(o instanceof Promise&&i?.async===!1)throw new f;if(n||o instanceof Promise)n=(n??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(a||(a=R(e,t)))});else{if(e.issues.length===t)continue;a||(a=R(e,t))}}return n?n.then(()=>e):e},i=(i,a,r)=>{if(R(i))return i.aborted=!0,i;let o=t(a,n,r);if(o instanceof Promise){if(!1===r.async)throw new f;return o.then(t=>e._zod.parse(t,r))}return e._zod.parse(o,r)};e._zod.run=(a,r)=>{if(r.skipChecks)return e._zod.parse(a,r);if("backward"===r.direction){let t=e._zod.parse({value:a.value,issues:[]},{...r,skipChecks:!0});return t instanceof Promise?t.then(e=>i(e,a,r)):i(t,a,r)}let o=e._zod.parse(a,r);if(o instanceof Promise){if(!1===r.async)throw new f;return o.then(e=>t(e,n,r))}return t(o,n,r)}}I(e,"~standard",()=>({validate:t=>{try{let i=en(e,t);return i.success?{value:i.data}:{issues:i.error?.issues}}catch(i){return er(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),tT=m("$ZodString",(e,t)=>{t$.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??eY(e._zod.bag),e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=String(i.value)}catch(e){}return"string"==typeof i.value||i.issues.push({expected:"string",code:"invalid_type",input:i.value,inst:e}),i}}),tD=m("$ZodStringFormat",(e,t)=>{tg.init(e,t),tT.init(e,t)}),tN=m("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=ef),tD.init(e,t)}),tE=m("$ZodUUID",(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=eh(e))}else t.pattern??(t.pattern=eh());tD.init(e,t)}),tM=m("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=ev),tD.init(e,t)}),tO=m("$ZodURL",(e,t)=>{tD.init(e,t),e._zod.check=i=>{try{let n=i.value.trim(),a=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(a.hostname)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:i.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(a.protocol.endsWith(":")?a.protocol.slice(0,-1):a.protocol)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:i.value,inst:e,continue:!t.abort})),t.normalize?i.value=a.href:i.value=n;return}catch(n){i.issues.push({code:"invalid_format",format:"url",input:i.value,inst:e,continue:!t.abort})}}}),tj=m("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=eI()),tD.init(e,t)}),tL=m("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=ec),tD.init(e,t)}),tB=m("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=eo),tD.init(e,t)}),tF=m("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=es),tD.init(e,t)}),tY=m("$ZodULID",(e,t)=>{t.pattern??(t.pattern=el),tD.init(e,t)}),tR=m("$ZodXID",(e,t)=>{t.pattern??(t.pattern=ed),tD.init(e,t)}),tZ=m("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=eu),tD.init(e,t)}),tG=m("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=eF(t)),tD.init(e,t)}),tU=m("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=ej),tD.init(e,t)}),tq=m("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=eB(t)),tD.init(e,t)}),tW=m("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=ep),tD.init(e,t)}),tV=m("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=eA),tD.init(e,t),e._zod.bag.format="ipv4"}),tH=m("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=ez),tD.init(e,t),e._zod.bag.format="ipv6",e._zod.check=i=>{try{new URL(`http://[${i.value}]`)}catch{i.issues.push({code:"invalid_format",format:"ipv6",input:i.value,inst:e,continue:!t.abort})}}}),tJ=m("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=eP(t.delimiter)),tD.init(e,t),e._zod.bag.format="mac"}),tK=m("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=eC),tD.init(e,t)}),tX=m("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=e$),tD.init(e,t),e._zod.check=i=>{let n=i.value.split("/");try{if(2!==n.length)throw Error();let[e,t]=n;if(!t)throw Error();let i=Number(t);if(`${i}`!==t||i<0||i>128)throw Error();new URL(`http://[${e}]`)}catch{i.issues.push({code:"invalid_format",format:"cidrv6",input:i.value,inst:e,continue:!t.abort})}}});function tQ(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}let t0=m("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=eT),tD.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=i=>{tQ(i.value)||i.issues.push({code:"invalid_format",format:"base64",input:i.value,inst:e,continue:!t.abort})}}),t1=m("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=eD),tD.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=i=>{!function(e){if(!eD.test(e))return!1;let t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return tQ(t.padEnd(4*Math.ceil(t.length/4),"="))}(i.value)&&i.issues.push({code:"invalid_format",format:"base64url",input:i.value,inst:e,continue:!t.abort})}}),t2=m("$ZodE164",(e,t)=>{t.pattern??(t.pattern=eM),tD.init(e,t)}),t5=m("$ZodJWT",(e,t)=>{tD.init(e,t),e._zod.check=i=>{!function(e,t=null){try{let i=e.split(".");if(3!==i.length)return!1;let[n]=i;if(!n)return!1;let a=JSON.parse(atob(n));if("typ"in a&&a?.typ!=="JWT"||!a.alg||t&&(!("alg"in a)||a.alg!==t))return!1;return!0}catch{return!1}}(i.value,t.alg)&&i.issues.push({code:"invalid_format",format:"jwt",input:i.value,inst:e,continue:!t.abort})}}),t4=m("$ZodCustomStringFormat",(e,t)=>{tD.init(e,t),e._zod.check=i=>{t.fn(i.value)||i.issues.push({code:"invalid_format",format:t.format,input:i.value,inst:e,continue:!t.abort})}}),t3=m("$ZodNumber",(e,t)=>{t$.init(e,t),e._zod.pattern=e._zod.bag.pattern??eG,e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=Number(i.value)}catch(e){}let a=i.value;if("number"==typeof a&&!Number.isNaN(a)&&Number.isFinite(a))return i;let r="number"==typeof a?Number.isNaN(a)?"NaN":Number.isFinite(a)?void 0:"Infinity":void 0;return i.issues.push({expected:"number",code:"invalid_type",input:a,inst:e,...r?{received:r}:{}}),i}}),t6=m("$ZodNumberFormat",(e,t)=>{td.init(e,t),t3.init(e,t)}),t9=m("$ZodBoolean",(e,t)=>{t$.init(e,t),e._zod.pattern=eU,e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=!!i.value}catch(e){}let a=i.value;return"boolean"==typeof a||i.issues.push({expected:"boolean",code:"invalid_type",input:a,inst:e}),i}}),t7=m("$ZodBigInt",(e,t)=>{t$.init(e,t),e._zod.pattern=eR,e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=BigInt(i.value)}catch(e){}return"bigint"==typeof i.value||i.issues.push({expected:"bigint",code:"invalid_type",input:i.value,inst:e}),i}}),t8=m("$ZodBigIntFormat",(e,t)=>{tu.init(e,t),t7.init(e,t)}),ie=m("$ZodSymbol",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>{let n=t.value;return"symbol"==typeof n||t.issues.push({expected:"symbol",code:"invalid_type",input:n,inst:e}),t}}),it=m("$ZodUndefined",(e,t)=>{t$.init(e,t),e._zod.pattern=eW,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(t,i)=>{let n=t.value;return void 0===n||t.issues.push({expected:"undefined",code:"invalid_type",input:n,inst:e}),t}}),ii=m("$ZodNull",(e,t)=>{t$.init(e,t),e._zod.pattern=eq,e._zod.values=new Set([null]),e._zod.parse=(t,i)=>{let n=t.value;return null===n||t.issues.push({expected:"null",code:"invalid_type",input:n,inst:e}),t}}),ia=m("$ZodAny",(e,t)=>{t$.init(e,t),e._zod.parse=e=>e}),ir=m("$ZodUnknown",(e,t)=>{t$.init(e,t),e._zod.parse=e=>e}),io=m("$ZodNever",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)}),is=m("$ZodVoid",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>{let n=t.value;return void 0===n||t.issues.push({expected:"void",code:"invalid_type",input:n,inst:e}),t}}),il=m("$ZodDate",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{if(t.coerce)try{i.value=new Date(i.value)}catch(e){}let a=i.value,r=a instanceof Date;return r&&!Number.isNaN(a.getTime())||i.issues.push({expected:"date",code:"invalid_type",input:a,...r?{received:"Invalid Date"}:{},inst:e}),i}});function id(e,t,i){e.issues.length&&t.issues.push(...Z(i,e.issues)),t.value[i]=e.value}let iu=m("$ZodArray",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!Array.isArray(a))return i.issues.push({expected:"array",code:"invalid_type",input:a,inst:e}),i;i.value=Array(a.length);let r=[];for(let e=0;e<a.length;e++){let o=a[e],s=t.element._zod.run({value:o,issues:[]},n);s instanceof Promise?r.push(s.then(t=>id(t,i,e))):id(s,i,e)}return r.length?Promise.all(r).then(()=>i):i}});function ic(e,t,i,n,a){if(e.issues.length){if(a&&!(i in n))return;t.issues.push(...Z(i,e.issues))}void 0===e.value?i in n&&(t.value[i]=void 0):t.value[i]=e.value}function ip(e){var t;let i=Object.keys(e.shape);for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${t}": expected a Zod schema`);let n=Object.keys(t=e.shape).filter(e=>"optional"===t[e]._zod.optin&&"optional"===t[e]._zod.optout);return{...e,keys:i,keySet:new Set(i),numKeys:i.length,optionalKeys:new Set(n)}}function im(e,t,i,n,a,r){let o=[],s=a.keySet,l=a.catchall._zod,d=l.def.type,u="optional"===l.optout;for(let a in t){if(s.has(a))continue;if("never"===d){o.push(a);continue}let r=l.run({value:t[a],issues:[]},n);r instanceof Promise?e.push(r.then(e=>ic(e,i,a,t,u))):ic(r,i,a,t,u)}return(o.length&&i.issues.push({code:"unrecognized_keys",keys:o,input:t,inst:r}),e.length)?Promise.all(e).then(()=>i):i}let ih=m("$ZodObject",(e,t)=>{let i;t$.init(e,t);let n=Object.getOwnPropertyDescriptor(t,"shape");if(!n?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let i={...e};return Object.defineProperty(t,"shape",{value:i}),i}})}let a=x(()=>ip(t));I(e._zod,"propValues",()=>{let e=t.shape,i={};for(let t in e){let n=e[t]._zod;if(n.values)for(let e of(i[t]??(i[t]=new Set),n.values))i[t].add(e)}return i});let r=t.catchall;e._zod.parse=(t,n)=>{i??(i=a.value);let o=t.value;if(!$(o))return t.issues.push({expected:"object",code:"invalid_type",input:o,inst:e}),t;t.value={};let s=[],l=i.shape;for(let e of i.keys){let i=l[e],a="optional"===i._zod.optout,r=i._zod.run({value:o[e],issues:[]},n);r instanceof Promise?s.push(r.then(i=>ic(i,t,e,o,a))):ic(r,t,e,o,a)}return r?im(s,o,t,n,a.value,e):s.length?Promise.all(s).then(()=>t):t}}),iy=m("$ZodObjectJIT",(e,t)=>{let i,n;ih.init(e,t);let a=e._zod.parse,r=x(()=>ip(t)),o=!y.jitless,s=o&&T.value,l=t.catchall;e._zod.parse=(d,u)=>{n??(n=r.value);let c=d.value;return $(c)?o&&s&&u?.async===!1&&!0!==u.jitless?(i||(i=(e=>{let t=new tP(["shape","payload","ctx"]),i=r.value,n=e=>{let t=P(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");let a=Object.create(null),o=0;for(let e of i.keys)a[e]=`key_${o++}`;for(let r of(t.write("const newResult = {};"),i.keys)){let i=a[r],o=P(r),s=e[r],l=s?._zod?.optout==="optional";t.write(`const ${i} = ${n(r)};`),l?t.write(`
2
2
  if (${i}.issues.length) {
3
3
  if (${o} in input) {
4
4
  payload.issues = payload.issues.concat(${i}.issues.map(iss => ({
@@ -32,6 +32,6 @@
32
32
  newResult[${o}] = ${i}.value;
33
33
  }
34
34
 
35
- `)}t.write("payload.value = newResult;"),t.write("return payload;");let s=t.compile();return(t,i)=>s(e,t,i)})(t.shape)),d=i(d,c),l)?im([],u,d,c,n,e):d:a(d,c):(d.issues.push({expected:"object",code:"invalid_type",input:u,inst:e}),d)}});function ig(e,t,i,n){for(let i of e)if(0===i.issues.length)return t.value=i.value,t;let a=e.filter(e=>!R(e));return 1===a.length?(t.value=a[0].value,a[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:i,errors:e.map(e=>e.issues.map(e=>q(e,n,g())))}),t)}let ib=m("$ZodUnion",(e,t)=>{t$.init(e,t),_(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),_(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),_(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),_(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>x(e.source)).join("|")})$`)}});let i=1===t.options.length,n=t.options[0]._zod.run;e._zod.parse=(a,r)=>{if(i)return n(a,r);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:a.value,issues:[]},r);if(t instanceof Promise)s.push(t),o=!0;else{if(0===t.issues.length)return t;s.push(t)}}return o?Promise.all(s).then(t=>ig(t,a,e,r)):ig(s,a,e,r)}});function iv(e,t,i,n){let a=e.filter(e=>0===e.issues.length);return 1===a.length?t.value=a[0].value:0===a.length?t.issues.push({code:"invalid_union",input:t.value,inst:i,errors:e.map(e=>e.issues.map(e=>q(e,n,g())))}):t.issues.push({code:"invalid_union",input:t.value,inst:i,errors:[],inclusive:!1}),t}let iw=m("$ZodXor",(e,t)=>{ib.init(e,t),t.inclusive=!1;let i=1===t.options.length,n=t.options[0]._zod.run;e._zod.parse=(a,r)=>{if(i)return n(a,r);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:a.value,issues:[]},r);t instanceof Promise?(s.push(t),o=!0):s.push(t)}return o?Promise.all(s).then(t=>iv(t,a,e,r)):iv(s,a,e,r)}}),ik=m("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ib.init(e,t);let i=e._zod.parse;_(e._zod,"propValues",()=>{let e={};for(let i of t.options){let n=i._zod.propValues;if(!n||0===Object.keys(n).length)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let[t,i]of Object.entries(n))for(let n of(e[t]||(e[t]=new Set),i))e[t].add(n)}return e});let n=k(()=>{let e=t.options,i=new Map;for(let n of e){let e=n._zod.propValues?.[t.discriminator];if(!e||0===e.size)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let t of e){if(i.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);i.set(t,n)}}return i});e._zod.parse=(a,r)=>{let o=a.value;if(!$(o))return a.issues.push({code:"invalid_type",expected:"object",input:o,inst:e}),a;let s=n.value.get(o?.[t.discriminator]);return s?s._zod.run(a,r):t.unionFallback?i(a,r):(a.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),a)}}),iS=m("$ZodIntersection",(e,t)=>{t$.init(e,t),e._zod.parse=(e,i)=>{let n=e.value,a=t.left._zod.run({value:n,issues:[]},i),r=t.right._zod.run({value:n,issues:[]},i);return a instanceof Promise||r instanceof Promise?Promise.all([a,r]).then(([t,i])=>ix(e,t,i)):ix(e,a,r)}});function ix(e,t,i){let n,a=new Map;for(let i of t.issues)if("unrecognized_keys"===i.code)for(let e of(n??(n=i),i.keys))a.has(e)||a.set(e,{}),a.get(e).l=!0;else e.issues.push(i);for(let t of i.issues)if("unrecognized_keys"===t.code)for(let e of t.keys)a.has(e)||a.set(e,{}),a.get(e).r=!0;else e.issues.push(t);let r=[...a].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(r.length&&n&&e.issues.push({...n,keys:r}),R(e))return e;let o=function e(t,i){if(t===i||t instanceof Date&&i instanceof Date&&+t==+i)return{valid:!0,data:t};if(N(t)&&N(i)){let n=Object.keys(i),a=Object.keys(t).filter(e=>-1!==n.indexOf(e)),r={...t,...i};for(let n of a){let a=e(t[n],i[n]);if(!a.valid)return{valid:!1,mergeErrorPath:[n,...a.mergeErrorPath]};r[n]=a.data}return{valid:!0,data:r}}if(Array.isArray(t)&&Array.isArray(i)){if(t.length!==i.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let a=0;a<t.length;a++){let r=e(t[a],i[a]);if(!r.valid)return{valid:!1,mergeErrorPath:[a,...r.mergeErrorPath]};n.push(r.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}(t.value,i.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}let iz=m("$ZodTuple",(e,t)=>{t$.init(e,t);let i=t.items;e._zod.parse=(n,a)=>{let r=n.value;if(!Array.isArray(r))return n.issues.push({input:r,inst:e,expected:"tuple",code:"invalid_type"}),n;n.value=[];let o=[],s=[...i].reverse().findIndex(e=>"optional"!==e._zod.optin),l=-1===s?0:i.length-s;if(!t.rest){let t=r.length>i.length,a=r.length<l-1;if(t||a)return n.issues.push({...t?{code:"too_big",maximum:i.length,inclusive:!0}:{code:"too_small",minimum:i.length},input:r,inst:e,origin:"array"}),n}let d=-1;for(let e of i){if(++d>=r.length&&d>=l)continue;let t=e._zod.run({value:r[d],issues:[]},a);t instanceof Promise?o.push(t.then(e=>i_(e,n,d))):i_(t,n,d)}if(t.rest)for(let e of r.slice(i.length)){d++;let i=t.rest._zod.run({value:e,issues:[]},a);i instanceof Promise?o.push(i.then(e=>i_(e,n,d))):i_(i,n,d)}return o.length?Promise.all(o).then(()=>n):n}});function i_(e,t,i){e.issues.length&&t.issues.push(...B(i,e.issues)),t.value[i]=e.value}let iI=m("$ZodRecord",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!N(a))return i.issues.push({expected:"record",code:"invalid_type",input:a,inst:e}),i;let r=[],o=t.keyType._zod.values;if(o){let s;i.value={};let l=new Set;for(let e of o)if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){l.add("number"==typeof e?e.toString():e);let o=t.valueType._zod.run({value:a[e],issues:[]},n);o instanceof Promise?r.push(o.then(t=>{t.issues.length&&i.issues.push(...B(e,t.issues)),i.value[e]=t.value})):(o.issues.length&&i.issues.push(...B(e,o.issues)),i.value[e]=o.value)}for(let e in a)l.has(e)||(s=s??[]).push(e);s&&s.length>0&&i.issues.push({code:"unrecognized_keys",input:a,inst:e,keys:s})}else for(let o of(i.value={},Reflect.ownKeys(a))){if("__proto__"===o)continue;let s=t.keyType._zod.run({value:o,issues:[]},n);if(s instanceof Promise)throw Error("Async schemas not supported in object keys currently");if("string"==typeof o&&eU.test(o)&&s.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},n);if(e instanceof Promise)throw Error("Async schemas not supported in object keys currently");0===e.issues.length&&(s=e)}if(s.issues.length){"loose"===t.mode?i.value[o]=a[o]:i.issues.push({code:"invalid_key",origin:"record",issues:s.issues.map(e=>q(e,n,g())),input:o,path:[o],inst:e});continue}let l=t.valueType._zod.run({value:a[o],issues:[]},n);l instanceof Promise?r.push(l.then(e=>{e.issues.length&&i.issues.push(...B(o,e.issues)),i.value[s.value]=e.value})):(l.issues.length&&i.issues.push(...B(o,l.issues)),i.value[s.value]=l.value)}return r.length?Promise.all(r).then(()=>i):i}}),iP=m("$ZodMap",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!(a instanceof Map))return i.issues.push({expected:"map",code:"invalid_type",input:a,inst:e}),i;let r=[];for(let[o,s]of(i.value=new Map,a)){let l=t.keyType._zod.run({value:o,issues:[]},n),d=t.valueType._zod.run({value:s,issues:[]},n);l instanceof Promise||d instanceof Promise?r.push(Promise.all([l,d]).then(([t,r])=>{iA(t,r,i,o,a,e,n)})):iA(l,d,i,o,a,e,n)}return r.length?Promise.all(r).then(()=>i):i}});function iA(e,t,i,n,a,r,o){e.issues.length&&(E.has(typeof n)?i.issues.push(...B(n,e.issues)):i.issues.push({code:"invalid_key",origin:"map",input:a,inst:r,issues:e.issues.map(e=>q(e,o,g()))})),t.issues.length&&(E.has(typeof n)?i.issues.push(...B(n,t.issues)):i.issues.push({origin:"map",code:"invalid_element",input:a,inst:r,key:n,issues:t.issues.map(e=>q(e,o,g()))})),i.value.set(e.value,t.value)}let iC=m("$ZodSet",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!(a instanceof Set))return i.issues.push({input:a,inst:e,expected:"set",code:"invalid_type"}),i;let r=[];for(let e of(i.value=new Set,a)){let a=t.valueType._zod.run({value:e,issues:[]},n);a instanceof Promise?r.push(a.then(e=>i$(e,i))):i$(a,i)}return r.length?Promise.all(r).then(()=>i):i}});function i$(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}let iD=m("$ZodEnum",(e,t)=>{t$.init(e,t);let i=b(t.entries),n=new Set(i);e._zod.values=n,e._zod.pattern=RegExp(`^(${i.filter(e=>E.has(typeof e)).map(e=>"string"==typeof e?O(e):e.toString()).join("|")})$`),e._zod.parse=(t,a)=>{let r=t.value;return n.has(r)||t.issues.push({code:"invalid_value",values:i,input:r,inst:e}),t}}),iN=m("$ZodLiteral",(e,t)=>{if(t$.init(e,t),0===t.values.length)throw Error("Cannot create literal schema with no valid values");let i=new Set(t.values);e._zod.values=i,e._zod.pattern=RegExp(`^(${t.values.map(e=>"string"==typeof e?O(e):e?O(e.toString()):String(e)).join("|")})$`),e._zod.parse=(n,a)=>{let r=n.value;return i.has(r)||n.issues.push({code:"invalid_value",values:t.values,input:r,inst:e}),n}}),iT=m("$ZodFile",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>{let n=t.value;return n instanceof File||t.issues.push({expected:"file",code:"invalid_type",input:n,inst:e}),t}}),iE=m("$ZodTransform",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{if("backward"===n.direction)throw new h(e.constructor.name);let a=t.transform(i.value,i);if(n.async)return(a instanceof Promise?a:Promise.resolve(a)).then(e=>(i.value=e,i));if(a instanceof Promise)throw new f;return i.value=a,i}});function iM(e,t){return e.issues.length&&void 0===t?{issues:[],value:void 0}:e}let iO=m("$ZodOptional",(e,t)=>{t$.init(e,t),e._zod.optin="optional",e._zod.optout="optional",_(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),_(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${x(e.source)})?$`):void 0}),e._zod.parse=(e,i)=>{if("optional"===t.innerType._zod.optin){let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(t=>iM(t,e.value)):iM(n,e.value)}return void 0===e.value?e:t.innerType._zod.run(e,i)}}),ij=m("$ZodExactOptional",(e,t)=>{iO.init(e,t),_(e._zod,"values",()=>t.innerType._zod.values),_(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,i)=>t.innerType._zod.run(e,i)}),iY=m("$ZodNullable",(e,t)=>{t$.init(e,t),_(e._zod,"optin",()=>t.innerType._zod.optin),_(e._zod,"optout",()=>t.innerType._zod.optout),_(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${x(e.source)}|null)$`):void 0}),_(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,i)=>null===e.value?e:t.innerType._zod.run(e,i)}),iL=m("$ZodDefault",(e,t)=>{t$.init(e,t),e._zod.optin="optional",_(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,i)=>{if("backward"===i.direction)return t.innerType._zod.run(e,i);if(void 0===e.value)return e.value=t.defaultValue,e;let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(e=>iF(e,t)):iF(n,t)}});function iF(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}let iZ=m("$ZodPrefault",(e,t)=>{t$.init(e,t),e._zod.optin="optional",_(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,i)=>("backward"===i.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,i))}),iR=m("$ZodNonOptional",(e,t)=>{t$.init(e,t),_(e._zod,"values",()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(i,n)=>{let a=t.innerType._zod.run(i,n);return a instanceof Promise?a.then(t=>iB(t,e)):iB(a,e)}});function iB(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}let iU=m("$ZodSuccess",(e,t)=>{t$.init(e,t),e._zod.parse=(e,i)=>{if("backward"===i.direction)throw new h("ZodSuccess");let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(t=>(e.value=0===t.issues.length,e)):(e.value=0===n.issues.length,e)}}),iq=m("$ZodCatch",(e,t)=>{t$.init(e,t),_(e._zod,"optin",()=>t.innerType._zod.optin),_(e._zod,"optout",()=>t.innerType._zod.optout),_(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,i)=>{if("backward"===i.direction)return t.innerType._zod.run(e,i);let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(n=>(e.value=n.value,n.issues.length&&(e.value=t.catchValue({...e,error:{issues:n.issues.map(e=>q(e,i,g()))},input:e.value}),e.issues=[]),e)):(e.value=n.value,n.issues.length&&(e.value=t.catchValue({...e,error:{issues:n.issues.map(e=>q(e,i,g()))},input:e.value}),e.issues=[]),e)}}),iG=m("$ZodNaN",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>("number"==typeof t.value&&Number.isNaN(t.value)||t.issues.push({input:t.value,inst:e,expected:"nan",code:"invalid_type"}),t)}),iW=m("$ZodPipe",(e,t)=>{t$.init(e,t),_(e._zod,"values",()=>t.in._zod.values),_(e._zod,"optin",()=>t.in._zod.optin),_(e._zod,"optout",()=>t.out._zod.optout),_(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,i)=>{if("backward"===i.direction){let n=t.out._zod.run(e,i);return n instanceof Promise?n.then(e=>iH(e,t.in,i)):iH(n,t.in,i)}let n=t.in._zod.run(e,i);return n instanceof Promise?n.then(e=>iH(e,t.out,i)):iH(n,t.out,i)}});function iH(e,t,i){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},i)}let iV=m("$ZodCodec",(e,t)=>{t$.init(e,t),_(e._zod,"values",()=>t.in._zod.values),_(e._zod,"optin",()=>t.in._zod.optin),_(e._zod,"optout",()=>t.out._zod.optout),_(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,i)=>{if("forward"===(i.direction||"forward")){let n=t.in._zod.run(e,i);return n instanceof Promise?n.then(e=>iJ(e,t,i)):iJ(n,t,i)}{let n=t.out._zod.run(e,i);return n instanceof Promise?n.then(e=>iJ(e,t,i)):iJ(n,t,i)}}});function iJ(e,t,i){if(e.issues.length)return e.aborted=!0,e;if("forward"===(i.direction||"forward")){let n=t.transform(e.value,e);return n instanceof Promise?n.then(n=>iK(e,n,t.out,i)):iK(e,n,t.out,i)}{let n=t.reverseTransform(e.value,e);return n instanceof Promise?n.then(n=>iK(e,n,t.in,i)):iK(e,n,t.in,i)}}function iK(e,t,i,n){return e.issues.length?(e.aborted=!0,e):i._zod.run({value:t,issues:e.issues},n)}let iQ=m("$ZodReadonly",(e,t)=>{t$.init(e,t),_(e._zod,"propValues",()=>t.innerType._zod.propValues),_(e._zod,"values",()=>t.innerType._zod.values),_(e._zod,"optin",()=>t.innerType?._zod?.optin),_(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,i)=>{if("backward"===i.direction)return t.innerType._zod.run(e,i);let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(iX):iX(n)}});function iX(e){return e.value=Object.freeze(e.value),e}let i0=m("$ZodTemplateLiteral",(e,t)=>{t$.init(e,t);let i=[];for(let e of t.parts)if("object"==typeof e&&null!==e){if(!e._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...e._zod.traits].shift()}`);let t=e._zod.pattern instanceof RegExp?e._zod.pattern.source:e._zod.pattern;if(!t)throw Error(`Invalid template literal part: ${e._zod.traits}`);let n=+!!t.startsWith("^"),a=t.endsWith("$")?t.length-1:t.length;i.push(t.slice(n,a))}else if(null===e||M.has(typeof e))i.push(O(`${e}`));else throw Error(`Invalid template literal part: ${e}`);e._zod.pattern=RegExp(`^${i.join("")}$`),e._zod.parse=(i,n)=>("string"!=typeof i.value?i.issues.push({input:i.value,inst:e,expected:"string",code:"invalid_type"}):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(i.value)||i.issues.push({input:i.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source})),i)}),i1=m("$ZodFunction",(e,t)=>(t$.init(e,t),e._def=t,e._zod.def=t,e.implement=t=>{if("function"!=typeof t)throw Error("implement() must be called with a function");return function(...i){let n=Reflect.apply(t,this,e._def.input?X(e._def.input,i):i);return e._def.output?X(e._def.output,n):n}},e.implementAsync=t=>{if("function"!=typeof t)throw Error("implementAsync() must be called with a function");return async function(...i){let n=e._def.input?await et(e._def.input,i):i,a=await Reflect.apply(t,this,n);return e._def.output?await et(e._def.output,a):a}},e._zod.parse=(t,i)=>("function"!=typeof t.value?t.issues.push({code:"invalid_type",expected:"function",input:t.value,inst:e}):e._def.output&&"promise"===e._def.output._zod.def.type?t.value=e.implementAsync(t.value):t.value=e.implement(t.value),t),e.input=(...t)=>{let i=e.constructor;return new i(Array.isArray(t[0])?{type:"function",input:new iz({type:"tuple",items:t[0],rest:t[1]}),output:e._def.output}:{type:"function",input:t[0],output:e._def.output})},e.output=t=>new e.constructor({type:"function",input:e._def.input,output:t}),e)),i2=m("$ZodPromise",(e,t)=>{t$.init(e,t),e._zod.parse=(e,i)=>Promise.resolve(e.value).then(e=>t.innerType._zod.run({value:e,issues:[]},i))}),i4=m("$ZodLazy",(e,t)=>{t$.init(e,t),_(e._zod,"innerType",()=>t.getter()),_(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),_(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),_(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),_(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(t,i)=>e._zod.innerType._zod.run(t,i)}),i5=m("$ZodCustom",(e,t)=>{ta.init(e,t),t$.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=i=>{let n=i.value,a=t.fn(n);if(a instanceof Promise)return a.then(t=>i3(t,i,n,e));i3(a,i,n,e)}});function i3(e,t,i,n){if(!e){let e={code:"custom",input:i,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(e.params=n._zod.def.params),t.issues.push(H(e))}}Symbol("ZodOutput"),Symbol("ZodInput");(o=globalThis).__zod_globalRegistry??(o.__zod_globalRegistry=new class e{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let i=t[0];return this._map.set(e,i),i&&"object"==typeof i&&"id"in i&&this._idmap.set(i.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let i={...this.get(t)??{}};delete i.id;let n={...i,...this._map.get(e)};return Object.keys(n).length?n:void 0}return this._map.get(e)}has(e){return this._map.has(e)}});let i9=globalThis.__zod_globalRegistry;function i6(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...Y(t)})}function i8(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...Y(t)})}function i7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...Y(t)})}function ne(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...Y(t)})}function nt(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...Y(t)})}function ni(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...Y(t)})}function nn(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...Y(t)})}function na(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...Y(t)})}function nr(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...Y(t)})}function no(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...Y(t)})}function ns(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...Y(t)})}function nl(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...Y(t)})}function nd(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...Y(t)})}function nc(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...Y(t)})}function nu(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...Y(t)})}function np(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...Y(t)})}function nm(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...Y(t)})}function nf(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...Y(t)})}function nh(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...Y(t)})}function ny(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...Y(t)})}function ng(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...Y(t)})}function nb(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...Y(t)})}function nv(e,t){return new to({check:"less_than",...Y(t),value:e,inclusive:!1})}function nw(e,t){return new to({check:"less_than",...Y(t),value:e,inclusive:!0})}function nk(e,t){return new ts({check:"greater_than",...Y(t),value:e,inclusive:!1})}function nS(e,t){return new ts({check:"greater_than",...Y(t),value:e,inclusive:!0})}function nx(e){return nk(0,e)}function nz(e){return nv(0,e)}function n_(e){return nw(0,e)}function nI(e){return nS(0,e)}function nP(e,t){return new tl({check:"multiple_of",...Y(t),value:e})}function nA(e,t){return new tu({check:"max_size",...Y(t),maximum:e})}function nC(e,t){return new tp({check:"min_size",...Y(t),minimum:e})}function n$(e,t){return new tm({check:"size_equals",...Y(t),size:e})}function nD(e,t){return new tf({check:"max_length",...Y(t),maximum:e})}function nN(e,t){return new th({check:"min_length",...Y(t),minimum:e})}function nT(e,t){return new ty({check:"length_equals",...Y(t),length:e})}function nE(e,t){return new tb({check:"string_format",format:"regex",...Y(t),pattern:e})}function nM(e){return new tv({check:"string_format",format:"lowercase",...Y(e)})}function nO(e){return new tw({check:"string_format",format:"uppercase",...Y(e)})}function nj(e,t){return new tk({check:"string_format",format:"includes",...Y(t),includes:e})}function nY(e,t){return new tS({check:"string_format",format:"starts_with",...Y(t),prefix:e})}function nL(e,t){return new tx({check:"string_format",format:"ends_with",...Y(t),suffix:e})}function nF(e,t,i){return new t_({check:"property",property:e,schema:t,...Y(i)})}function nZ(e,t){return new tI({check:"mime_type",mime:e,...Y(t)})}function nR(e){return new tP({check:"overwrite",tx:e})}function nB(e){return nR(t=>t.normalize(e))}function nU(){return nR(e=>e.trim())}function nq(){return nR(e=>e.toLowerCase())}function nG(){return nR(e=>e.toUpperCase())}function nW(){return nR(e=>e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,""))}function nH(e,t,i,n={}){let a=Y(n),r={...Y(n),check:"string_format",type:"string",format:t,fn:"function"==typeof i?i:e=>i.test(e),...a};return i instanceof RegExp&&(r.pattern=i),new e(r)}function nV(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??i9,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function nJ(e,t,i={path:[],schemaPath:[]}){var n;let a=e._zod.def,r=t.seen.get(e);if(r)return r.count++,i.schemaPath.includes(e)&&(r.cycle=i.path),r.schema;let o={schema:{},count:1,cycle:void 0,path:i.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let n={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,n);else{let i=o.schema,r=t.processors[a.type];if(!r)throw Error(`[toJSONSchema]: Non-representable type encountered: ${a.type}`);r(e,t,i,n)}let r=e._zod.parent;r&&(o.ref||(o.ref=r),nJ(r,t,n),t.seen.get(r).isParent=!0)}let l=t.metadataRegistry.get(e);return l&&Object.assign(o.schema,l),"input"===t.io&&function e(t,i){let n=i??{seen:new Set};if(n.seen.has(t))return!1;n.seen.add(t);let a=t._zod.def;if("transform"===a.type)return!0;if("array"===a.type)return e(a.element,n);if("set"===a.type)return e(a.valueType,n);if("lazy"===a.type)return e(a.getter(),n);if("promise"===a.type||"optional"===a.type||"nonoptional"===a.type||"nullable"===a.type||"readonly"===a.type||"default"===a.type||"prefault"===a.type)return e(a.innerType,n);if("intersection"===a.type)return e(a.left,n)||e(a.right,n);if("record"===a.type||"map"===a.type)return e(a.keyType,n)||e(a.valueType,n);if("pipe"===a.type)return e(a.in,n)||e(a.out,n);if("object"===a.type){for(let t in a.shape)if(e(a.shape[t],n))return!0;return!1}if("union"===a.type){for(let t of a.options)if(e(t,n))return!0;return!1}if("tuple"===a.type){for(let t of a.items)if(e(t,n))return!0;if(a.rest&&e(a.rest,n))return!0}return!1}(e)&&(delete o.schema.examples,delete o.schema.default),"input"===t.io&&o.schema._prefault&&((n=o.schema).default??(n.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function nK(e,t){let i=e.seen.get(t);if(!i)throw Error("Unprocessed schema. This is a bug in Zod.");let n=new Map;for(let t of e.seen.entries()){let i=e.metadataRegistry.get(t[0])?.id;if(i){let e=n.get(i);if(e&&e!==t[0])throw Error(`Duplicate schema id "${i}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(i,t[0])}}let a=t=>{if(t[1].schema.$ref)return;let n=t[1],{ref:a,defId:r}=(t=>{let n="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){let i=e.external.registry.get(t[0])?.id,a=e.external.uri??(e=>e);if(i)return{ref:a(i)};let r=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=r,{defId:r,ref:`${a("__shared")}#/${n}/${r}`}}if(t[1]===i)return{ref:"#"};let a=`#/${n}/`,r=t[1].schema.id??`__schema${e.counter++}`;return{defId:r,ref:a+r}})(t);n.def={...n.schema},r&&(n.defId=r);let o=n.schema;for(let e in o)delete o[e];o.$ref=a};if("throw"===e.cycles)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>
35
+ `)}t.write("payload.value = newResult;"),t.write("return payload;");let s=t.compile();return(t,i)=>s(e,t,i)})(t.shape)),d=i(d,u),l)?im([],c,d,u,n,e):d:a(d,u):(d.issues.push({expected:"object",code:"invalid_type",input:c,inst:e}),d)}});function ig(e,t,i,n){for(let i of e)if(0===i.issues.length)return t.value=i.value,t;let a=e.filter(e=>!R(e));return 1===a.length?(t.value=a[0].value,a[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:i,errors:e.map(e=>e.issues.map(e=>U(e,n,g())))}),t)}let ib=m("$ZodUnion",(e,t)=>{t$.init(e,t),I(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),I(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),I(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),I(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>S(e.source)).join("|")})$`)}});let i=1===t.options.length,n=t.options[0]._zod.run;e._zod.parse=(a,r)=>{if(i)return n(a,r);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:a.value,issues:[]},r);if(t instanceof Promise)s.push(t),o=!0;else{if(0===t.issues.length)return t;s.push(t)}}return o?Promise.all(s).then(t=>ig(t,a,e,r)):ig(s,a,e,r)}});function iv(e,t,i,n){let a=e.filter(e=>0===e.issues.length);return 1===a.length?t.value=a[0].value:0===a.length?t.issues.push({code:"invalid_union",input:t.value,inst:i,errors:e.map(e=>e.issues.map(e=>U(e,n,g())))}):t.issues.push({code:"invalid_union",input:t.value,inst:i,errors:[],inclusive:!1}),t}let iw=m("$ZodXor",(e,t)=>{ib.init(e,t),t.inclusive=!1;let i=1===t.options.length,n=t.options[0]._zod.run;e._zod.parse=(a,r)=>{if(i)return n(a,r);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:a.value,issues:[]},r);t instanceof Promise?(s.push(t),o=!0):s.push(t)}return o?Promise.all(s).then(t=>iv(t,a,e,r)):iv(s,a,e,r)}}),ix=m("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ib.init(e,t);let i=e._zod.parse;I(e._zod,"propValues",()=>{let e={};for(let i of t.options){let n=i._zod.propValues;if(!n||0===Object.keys(n).length)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let[t,i]of Object.entries(n))for(let n of(e[t]||(e[t]=new Set),i))e[t].add(n)}return e});let n=x(()=>{let e=t.options,i=new Map;for(let n of e){let e=n._zod.propValues?.[t.discriminator];if(!e||0===e.size)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let t of e){if(i.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);i.set(t,n)}}return i});e._zod.parse=(a,r)=>{let o=a.value;if(!$(o))return a.issues.push({code:"invalid_type",expected:"object",input:o,inst:e}),a;let s=n.value.get(o?.[t.discriminator]);return s?s._zod.run(a,r):t.unionFallback?i(a,r):(a.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),a)}}),ik=m("$ZodIntersection",(e,t)=>{t$.init(e,t),e._zod.parse=(e,i)=>{let n=e.value,a=t.left._zod.run({value:n,issues:[]},i),r=t.right._zod.run({value:n,issues:[]},i);return a instanceof Promise||r instanceof Promise?Promise.all([a,r]).then(([t,i])=>iS(e,t,i)):iS(e,a,r)}});function iS(e,t,i){let n,a=new Map;for(let i of t.issues)if("unrecognized_keys"===i.code)for(let e of(n??(n=i),i.keys))a.has(e)||a.set(e,{}),a.get(e).l=!0;else e.issues.push(i);for(let t of i.issues)if("unrecognized_keys"===t.code)for(let e of t.keys)a.has(e)||a.set(e,{}),a.get(e).r=!0;else e.issues.push(t);let r=[...a].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(r.length&&n&&e.issues.push({...n,keys:r}),R(e))return e;let o=function e(t,i){if(t===i||t instanceof Date&&i instanceof Date&&+t==+i)return{valid:!0,data:t};if(D(t)&&D(i)){let n=Object.keys(i),a=Object.keys(t).filter(e=>-1!==n.indexOf(e)),r={...t,...i};for(let n of a){let a=e(t[n],i[n]);if(!a.valid)return{valid:!1,mergeErrorPath:[n,...a.mergeErrorPath]};r[n]=a.data}return{valid:!0,data:r}}if(Array.isArray(t)&&Array.isArray(i)){if(t.length!==i.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let a=0;a<t.length;a++){let r=e(t[a],i[a]);if(!r.valid)return{valid:!1,mergeErrorPath:[a,...r.mergeErrorPath]};n.push(r.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}(t.value,i.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}let i_=m("$ZodTuple",(e,t)=>{t$.init(e,t);let i=t.items;e._zod.parse=(n,a)=>{let r=n.value;if(!Array.isArray(r))return n.issues.push({input:r,inst:e,expected:"tuple",code:"invalid_type"}),n;n.value=[];let o=[],s=[...i].reverse().findIndex(e=>"optional"!==e._zod.optin),l=-1===s?0:i.length-s;if(!t.rest){let t=r.length>i.length,a=r.length<l-1;if(t||a)return n.issues.push({...t?{code:"too_big",maximum:i.length,inclusive:!0}:{code:"too_small",minimum:i.length},input:r,inst:e,origin:"array"}),n}let d=-1;for(let e of i){if(++d>=r.length&&d>=l)continue;let t=e._zod.run({value:r[d],issues:[]},a);t instanceof Promise?o.push(t.then(e=>iI(e,n,d))):iI(t,n,d)}if(t.rest)for(let e of r.slice(i.length)){d++;let i=t.rest._zod.run({value:e,issues:[]},a);i instanceof Promise?o.push(i.then(e=>iI(e,n,d))):iI(i,n,d)}return o.length?Promise.all(o).then(()=>n):n}});function iI(e,t,i){e.issues.length&&t.issues.push(...Z(i,e.issues)),t.value[i]=e.value}let iA=m("$ZodRecord",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!D(a))return i.issues.push({expected:"record",code:"invalid_type",input:a,inst:e}),i;let r=[],o=t.keyType._zod.values;if(o){let s;i.value={};let l=new Set;for(let e of o)if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){l.add("number"==typeof e?e.toString():e);let o=t.valueType._zod.run({value:a[e],issues:[]},n);o instanceof Promise?r.push(o.then(t=>{t.issues.length&&i.issues.push(...Z(e,t.issues)),i.value[e]=t.value})):(o.issues.length&&i.issues.push(...Z(e,o.issues)),i.value[e]=o.value)}for(let e in a)l.has(e)||(s=s??[]).push(e);s&&s.length>0&&i.issues.push({code:"unrecognized_keys",input:a,inst:e,keys:s})}else for(let o of(i.value={},Reflect.ownKeys(a))){if("__proto__"===o)continue;let s=t.keyType._zod.run({value:o,issues:[]},n);if(s instanceof Promise)throw Error("Async schemas not supported in object keys currently");if("string"==typeof o&&eG.test(o)&&s.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},n);if(e instanceof Promise)throw Error("Async schemas not supported in object keys currently");0===e.issues.length&&(s=e)}if(s.issues.length){"loose"===t.mode?i.value[o]=a[o]:i.issues.push({code:"invalid_key",origin:"record",issues:s.issues.map(e=>U(e,n,g())),input:o,path:[o],inst:e});continue}let l=t.valueType._zod.run({value:a[o],issues:[]},n);l instanceof Promise?r.push(l.then(e=>{e.issues.length&&i.issues.push(...Z(o,e.issues)),i.value[s.value]=e.value})):(l.issues.length&&i.issues.push(...Z(o,l.issues)),i.value[s.value]=l.value)}return r.length?Promise.all(r).then(()=>i):i}}),iz=m("$ZodMap",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!(a instanceof Map))return i.issues.push({expected:"map",code:"invalid_type",input:a,inst:e}),i;let r=[];for(let[o,s]of(i.value=new Map,a)){let l=t.keyType._zod.run({value:o,issues:[]},n),d=t.valueType._zod.run({value:s,issues:[]},n);l instanceof Promise||d instanceof Promise?r.push(Promise.all([l,d]).then(([t,r])=>{iP(t,r,i,o,a,e,n)})):iP(l,d,i,o,a,e,n)}return r.length?Promise.all(r).then(()=>i):i}});function iP(e,t,i,n,a,r,o){e.issues.length&&(E.has(typeof n)?i.issues.push(...Z(n,e.issues)):i.issues.push({code:"invalid_key",origin:"map",input:a,inst:r,issues:e.issues.map(e=>U(e,o,g()))})),t.issues.length&&(E.has(typeof n)?i.issues.push(...Z(n,t.issues)):i.issues.push({origin:"map",code:"invalid_element",input:a,inst:r,key:n,issues:t.issues.map(e=>U(e,o,g()))})),i.value.set(e.value,t.value)}let iC=m("$ZodSet",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{let a=i.value;if(!(a instanceof Set))return i.issues.push({input:a,inst:e,expected:"set",code:"invalid_type"}),i;let r=[];for(let e of(i.value=new Set,a)){let a=t.valueType._zod.run({value:e,issues:[]},n);a instanceof Promise?r.push(a.then(e=>i$(e,i))):i$(a,i)}return r.length?Promise.all(r).then(()=>i):i}});function i$(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}let iT=m("$ZodEnum",(e,t)=>{t$.init(e,t);let i=b(t.entries),n=new Set(i);e._zod.values=n,e._zod.pattern=RegExp(`^(${i.filter(e=>E.has(typeof e)).map(e=>"string"==typeof e?O(e):e.toString()).join("|")})$`),e._zod.parse=(t,a)=>{let r=t.value;return n.has(r)||t.issues.push({code:"invalid_value",values:i,input:r,inst:e}),t}}),iD=m("$ZodLiteral",(e,t)=>{if(t$.init(e,t),0===t.values.length)throw Error("Cannot create literal schema with no valid values");let i=new Set(t.values);e._zod.values=i,e._zod.pattern=RegExp(`^(${t.values.map(e=>"string"==typeof e?O(e):e?O(e.toString()):String(e)).join("|")})$`),e._zod.parse=(n,a)=>{let r=n.value;return i.has(r)||n.issues.push({code:"invalid_value",values:t.values,input:r,inst:e}),n}}),iN=m("$ZodFile",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>{let n=t.value;return n instanceof File||t.issues.push({expected:"file",code:"invalid_type",input:n,inst:e}),t}}),iE=m("$ZodTransform",(e,t)=>{t$.init(e,t),e._zod.parse=(i,n)=>{if("backward"===n.direction)throw new h(e.constructor.name);let a=t.transform(i.value,i);if(n.async)return(a instanceof Promise?a:Promise.resolve(a)).then(e=>(i.value=e,i));if(a instanceof Promise)throw new f;return i.value=a,i}});function iM(e,t){return e.issues.length&&void 0===t?{issues:[],value:void 0}:e}let iO=m("$ZodOptional",(e,t)=>{t$.init(e,t),e._zod.optin="optional",e._zod.optout="optional",I(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),I(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${S(e.source)})?$`):void 0}),e._zod.parse=(e,i)=>{if("optional"===t.innerType._zod.optin){let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(t=>iM(t,e.value)):iM(n,e.value)}return void 0===e.value?e:t.innerType._zod.run(e,i)}}),ij=m("$ZodExactOptional",(e,t)=>{iO.init(e,t),I(e._zod,"values",()=>t.innerType._zod.values),I(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,i)=>t.innerType._zod.run(e,i)}),iL=m("$ZodNullable",(e,t)=>{t$.init(e,t),I(e._zod,"optin",()=>t.innerType._zod.optin),I(e._zod,"optout",()=>t.innerType._zod.optout),I(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${S(e.source)}|null)$`):void 0}),I(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,i)=>null===e.value?e:t.innerType._zod.run(e,i)}),iB=m("$ZodDefault",(e,t)=>{t$.init(e,t),e._zod.optin="optional",I(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,i)=>{if("backward"===i.direction)return t.innerType._zod.run(e,i);if(void 0===e.value)return e.value=t.defaultValue,e;let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(e=>iF(e,t)):iF(n,t)}});function iF(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}let iY=m("$ZodPrefault",(e,t)=>{t$.init(e,t),e._zod.optin="optional",I(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,i)=>("backward"===i.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,i))}),iR=m("$ZodNonOptional",(e,t)=>{t$.init(e,t),I(e._zod,"values",()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(i,n)=>{let a=t.innerType._zod.run(i,n);return a instanceof Promise?a.then(t=>iZ(t,e)):iZ(a,e)}});function iZ(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}let iG=m("$ZodSuccess",(e,t)=>{t$.init(e,t),e._zod.parse=(e,i)=>{if("backward"===i.direction)throw new h("ZodSuccess");let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(t=>(e.value=0===t.issues.length,e)):(e.value=0===n.issues.length,e)}}),iU=m("$ZodCatch",(e,t)=>{t$.init(e,t),I(e._zod,"optin",()=>t.innerType._zod.optin),I(e._zod,"optout",()=>t.innerType._zod.optout),I(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,i)=>{if("backward"===i.direction)return t.innerType._zod.run(e,i);let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(n=>(e.value=n.value,n.issues.length&&(e.value=t.catchValue({...e,error:{issues:n.issues.map(e=>U(e,i,g()))},input:e.value}),e.issues=[]),e)):(e.value=n.value,n.issues.length&&(e.value=t.catchValue({...e,error:{issues:n.issues.map(e=>U(e,i,g()))},input:e.value}),e.issues=[]),e)}}),iq=m("$ZodNaN",(e,t)=>{t$.init(e,t),e._zod.parse=(t,i)=>("number"==typeof t.value&&Number.isNaN(t.value)||t.issues.push({input:t.value,inst:e,expected:"nan",code:"invalid_type"}),t)}),iW=m("$ZodPipe",(e,t)=>{t$.init(e,t),I(e._zod,"values",()=>t.in._zod.values),I(e._zod,"optin",()=>t.in._zod.optin),I(e._zod,"optout",()=>t.out._zod.optout),I(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,i)=>{if("backward"===i.direction){let n=t.out._zod.run(e,i);return n instanceof Promise?n.then(e=>iV(e,t.in,i)):iV(n,t.in,i)}let n=t.in._zod.run(e,i);return n instanceof Promise?n.then(e=>iV(e,t.out,i)):iV(n,t.out,i)}});function iV(e,t,i){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},i)}let iH=m("$ZodCodec",(e,t)=>{t$.init(e,t),I(e._zod,"values",()=>t.in._zod.values),I(e._zod,"optin",()=>t.in._zod.optin),I(e._zod,"optout",()=>t.out._zod.optout),I(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,i)=>{if("forward"===(i.direction||"forward")){let n=t.in._zod.run(e,i);return n instanceof Promise?n.then(e=>iJ(e,t,i)):iJ(n,t,i)}{let n=t.out._zod.run(e,i);return n instanceof Promise?n.then(e=>iJ(e,t,i)):iJ(n,t,i)}}});function iJ(e,t,i){if(e.issues.length)return e.aborted=!0,e;if("forward"===(i.direction||"forward")){let n=t.transform(e.value,e);return n instanceof Promise?n.then(n=>iK(e,n,t.out,i)):iK(e,n,t.out,i)}{let n=t.reverseTransform(e.value,e);return n instanceof Promise?n.then(n=>iK(e,n,t.in,i)):iK(e,n,t.in,i)}}function iK(e,t,i,n){return e.issues.length?(e.aborted=!0,e):i._zod.run({value:t,issues:e.issues},n)}let iX=m("$ZodReadonly",(e,t)=>{t$.init(e,t),I(e._zod,"propValues",()=>t.innerType._zod.propValues),I(e._zod,"values",()=>t.innerType._zod.values),I(e._zod,"optin",()=>t.innerType?._zod?.optin),I(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,i)=>{if("backward"===i.direction)return t.innerType._zod.run(e,i);let n=t.innerType._zod.run(e,i);return n instanceof Promise?n.then(iQ):iQ(n)}});function iQ(e){return e.value=Object.freeze(e.value),e}let i0=m("$ZodTemplateLiteral",(e,t)=>{t$.init(e,t);let i=[];for(let e of t.parts)if("object"==typeof e&&null!==e){if(!e._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...e._zod.traits].shift()}`);let t=e._zod.pattern instanceof RegExp?e._zod.pattern.source:e._zod.pattern;if(!t)throw Error(`Invalid template literal part: ${e._zod.traits}`);let n=+!!t.startsWith("^"),a=t.endsWith("$")?t.length-1:t.length;i.push(t.slice(n,a))}else if(null===e||M.has(typeof e))i.push(O(`${e}`));else throw Error(`Invalid template literal part: ${e}`);e._zod.pattern=RegExp(`^${i.join("")}$`),e._zod.parse=(i,n)=>("string"!=typeof i.value?i.issues.push({input:i.value,inst:e,expected:"string",code:"invalid_type"}):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(i.value)||i.issues.push({input:i.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source})),i)}),i1=m("$ZodFunction",(e,t)=>(t$.init(e,t),e._def=t,e._zod.def=t,e.implement=t=>{if("function"!=typeof t)throw Error("implement() must be called with a function");return function(...i){let n=Reflect.apply(t,this,e._def.input?Q(e._def.input,i):i);return e._def.output?Q(e._def.output,n):n}},e.implementAsync=t=>{if("function"!=typeof t)throw Error("implementAsync() must be called with a function");return async function(...i){let n=e._def.input?await et(e._def.input,i):i,a=await Reflect.apply(t,this,n);return e._def.output?await et(e._def.output,a):a}},e._zod.parse=(t,i)=>("function"!=typeof t.value?t.issues.push({code:"invalid_type",expected:"function",input:t.value,inst:e}):e._def.output&&"promise"===e._def.output._zod.def.type?t.value=e.implementAsync(t.value):t.value=e.implement(t.value),t),e.input=(...t)=>{let i=e.constructor;return new i(Array.isArray(t[0])?{type:"function",input:new i_({type:"tuple",items:t[0],rest:t[1]}),output:e._def.output}:{type:"function",input:t[0],output:e._def.output})},e.output=t=>new e.constructor({type:"function",input:e._def.input,output:t}),e)),i2=m("$ZodPromise",(e,t)=>{t$.init(e,t),e._zod.parse=(e,i)=>Promise.resolve(e.value).then(e=>t.innerType._zod.run({value:e,issues:[]},i))}),i5=m("$ZodLazy",(e,t)=>{t$.init(e,t),I(e._zod,"innerType",()=>t.getter()),I(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),I(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),I(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),I(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(t,i)=>e._zod.innerType._zod.run(t,i)}),i4=m("$ZodCustom",(e,t)=>{ta.init(e,t),t$.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=i=>{let n=i.value,a=t.fn(n);if(a instanceof Promise)return a.then(t=>i3(t,i,n,e));i3(a,i,n,e)}});function i3(e,t,i,n){if(!e){let e={code:"custom",input:i,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(e.params=n._zod.def.params),t.issues.push(V(e))}}Symbol("ZodOutput"),Symbol("ZodInput");(o=globalThis).__zod_globalRegistry??(o.__zod_globalRegistry=new class e{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let i=t[0];return this._map.set(e,i),i&&"object"==typeof i&&"id"in i&&this._idmap.set(i.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let i={...this.get(t)??{}};delete i.id;let n={...i,...this._map.get(e)};return Object.keys(n).length?n:void 0}return this._map.get(e)}has(e){return this._map.has(e)}});let i6=globalThis.__zod_globalRegistry;function i9(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...L(t)})}function i7(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...L(t)})}function i8(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...L(t)})}function ne(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...L(t)})}function nt(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...L(t)})}function ni(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...L(t)})}function nn(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...L(t)})}function na(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...L(t)})}function nr(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...L(t)})}function no(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...L(t)})}function ns(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...L(t)})}function nl(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...L(t)})}function nd(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...L(t)})}function nu(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...L(t)})}function nc(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...L(t)})}function np(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...L(t)})}function nm(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...L(t)})}function nf(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...L(t)})}function nh(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...L(t)})}function ny(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...L(t)})}function ng(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...L(t)})}function nb(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...L(t)})}function nv(e,t){return new to({check:"less_than",...L(t),value:e,inclusive:!1})}function nw(e,t){return new to({check:"less_than",...L(t),value:e,inclusive:!0})}function nx(e,t){return new ts({check:"greater_than",...L(t),value:e,inclusive:!1})}function nk(e,t){return new ts({check:"greater_than",...L(t),value:e,inclusive:!0})}function nS(e){return nx(0,e)}function n_(e){return nv(0,e)}function nI(e){return nw(0,e)}function nA(e){return nk(0,e)}function nz(e,t){return new tl({check:"multiple_of",...L(t),value:e})}function nP(e,t){return new tc({check:"max_size",...L(t),maximum:e})}function nC(e,t){return new tp({check:"min_size",...L(t),minimum:e})}function n$(e,t){return new tm({check:"size_equals",...L(t),size:e})}function nT(e,t){return new tf({check:"max_length",...L(t),maximum:e})}function nD(e,t){return new th({check:"min_length",...L(t),minimum:e})}function nN(e,t){return new ty({check:"length_equals",...L(t),length:e})}function nE(e,t){return new tb({check:"string_format",format:"regex",...L(t),pattern:e})}function nM(e){return new tv({check:"string_format",format:"lowercase",...L(e)})}function nO(e){return new tw({check:"string_format",format:"uppercase",...L(e)})}function nj(e,t){return new tx({check:"string_format",format:"includes",...L(t),includes:e})}function nL(e,t){return new tk({check:"string_format",format:"starts_with",...L(t),prefix:e})}function nB(e,t){return new tS({check:"string_format",format:"ends_with",...L(t),suffix:e})}function nF(e,t,i){return new tI({check:"property",property:e,schema:t,...L(i)})}function nY(e,t){return new tA({check:"mime_type",mime:e,...L(t)})}function nR(e){return new tz({check:"overwrite",tx:e})}function nZ(e){return nR(t=>t.normalize(e))}function nG(){return nR(e=>e.trim())}function nU(){return nR(e=>e.toLowerCase())}function nq(){return nR(e=>e.toUpperCase())}function nW(){return nR(e=>e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,""))}function nV(e,t,i,n={}){let a=L(n),r={...L(n),check:"string_format",type:"string",format:t,fn:"function"==typeof i?i:e=>i.test(e),...a};return i instanceof RegExp&&(r.pattern=i),new e(r)}function nH(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??i6,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function nJ(e,t,i={path:[],schemaPath:[]}){var n;let a=e._zod.def,r=t.seen.get(e);if(r)return r.count++,i.schemaPath.includes(e)&&(r.cycle=i.path),r.schema;let o={schema:{},count:1,cycle:void 0,path:i.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let n={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,n);else{let i=o.schema,r=t.processors[a.type];if(!r)throw Error(`[toJSONSchema]: Non-representable type encountered: ${a.type}`);r(e,t,i,n)}let r=e._zod.parent;r&&(o.ref||(o.ref=r),nJ(r,t,n),t.seen.get(r).isParent=!0)}let l=t.metadataRegistry.get(e);return l&&Object.assign(o.schema,l),"input"===t.io&&function e(t,i){let n=i??{seen:new Set};if(n.seen.has(t))return!1;n.seen.add(t);let a=t._zod.def;if("transform"===a.type)return!0;if("array"===a.type)return e(a.element,n);if("set"===a.type)return e(a.valueType,n);if("lazy"===a.type)return e(a.getter(),n);if("promise"===a.type||"optional"===a.type||"nonoptional"===a.type||"nullable"===a.type||"readonly"===a.type||"default"===a.type||"prefault"===a.type)return e(a.innerType,n);if("intersection"===a.type)return e(a.left,n)||e(a.right,n);if("record"===a.type||"map"===a.type)return e(a.keyType,n)||e(a.valueType,n);if("pipe"===a.type)return e(a.in,n)||e(a.out,n);if("object"===a.type){for(let t in a.shape)if(e(a.shape[t],n))return!0;return!1}if("union"===a.type){for(let t of a.options)if(e(t,n))return!0;return!1}if("tuple"===a.type){for(let t of a.items)if(e(t,n))return!0;if(a.rest&&e(a.rest,n))return!0}return!1}(e)&&(delete o.schema.examples,delete o.schema.default),"input"===t.io&&o.schema._prefault&&((n=o.schema).default??(n.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function nK(e,t){let i=e.seen.get(t);if(!i)throw Error("Unprocessed schema. This is a bug in Zod.");let n=new Map;for(let t of e.seen.entries()){let i=e.metadataRegistry.get(t[0])?.id;if(i){let e=n.get(i);if(e&&e!==t[0])throw Error(`Duplicate schema id "${i}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(i,t[0])}}let a=t=>{if(t[1].schema.$ref)return;let n=t[1],{ref:a,defId:r}=(t=>{let n="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){let i=e.external.registry.get(t[0])?.id,a=e.external.uri??(e=>e);if(i)return{ref:a(i)};let r=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=r,{defId:r,ref:`${a("__shared")}#/${n}/${r}`}}if(t[1]===i)return{ref:"#"};let a=`#/${n}/`,r=t[1].schema.id??`__schema${e.counter++}`;return{defId:r,ref:a+r}})(t);n.def={...n.schema},r&&(n.defId=r);let o=n.schema;for(let e in o)delete o[e];o.$ref=a};if("throw"===e.cycles)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>
36
36
 
37
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let n=i[1];if(t===i[0]){a(i);continue}if(e.external){let n=e.external.registry.get(i[0])?.id;if(t!==i[0]&&n){a(i);continue}}if(e.metadataRegistry.get(i[0])?.id||n.cycle||n.count>1&&"ref"===e.reused){a(i);continue}}}function nQ(e,t){let i=e.seen.get(t);if(!i)throw Error("Unprocessed schema. This is a bug in Zod.");let n=t=>{let i=e.seen.get(t);if(null===i.ref)return;let a=i.def??i.schema,r={...a},o=i.ref;if(i.ref=null,o){n(o);let i=e.seen.get(o),s=i.schema;if(s.$ref&&("draft-07"===e.target||"draft-04"===e.target||"openapi-3.0"===e.target)?(a.allOf=a.allOf??[],a.allOf.push(s)):Object.assign(a,s),Object.assign(a,r),t._zod.parent===o)for(let e in a)"$ref"!==e&&"allOf"!==e&&(e in r||delete a[e]);if(s.$ref&&i.def)for(let e in a)"$ref"!==e&&"allOf"!==e&&e in i.def&&JSON.stringify(a[e])===JSON.stringify(i.def[e])&&delete a[e]}let s=t._zod.parent;if(s&&s!==o){n(s);let t=e.seen.get(s);if(t?.schema.$ref&&(a.$ref=t.schema.$ref,t.def))for(let e in a)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(a[e])===JSON.stringify(t.def[e])&&delete a[e]}e.override({zodSchema:t,jsonSchema:a,path:i.path??[]})};for(let t of[...e.seen.entries()].reverse())n(t[0]);let a={};if("draft-2020-12"===e.target?a.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?a.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?a.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw Error("Schema is missing an `id` property");a.$id=e.external.uri(i)}Object.assign(a,i.def??i.schema);let r=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(r[e.defId]=e.def)}e.external||Object.keys(r).length>0&&("draft-2020-12"===e.target?a.$defs=r:a.definitions=r);try{let i=JSON.parse(JSON.stringify(a));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:nX(t,"input",e.processors),output:nX(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch(e){throw Error("Error converting schema to JSON.")}}let nX=(e,t,i={})=>n=>{let{libraryOptions:a,target:r}=n??{},o=nV({...a??{},target:r,io:t,processors:i});return nJ(e,o),nK(o,e),nQ(o,e)},n0={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},n1=(e,t,i,n)=>{let a=e._zod.def,r=!1===a.inclusive,o=a.options.map((e,i)=>nJ(e,t,{...n,path:[...n.path,r?"oneOf":"anyOf",i]}));r?i.oneOf=o:i.anyOf=o},n2=(e,t,i,n)=>{let a=e._zod.def;nJ(a.innerType,t,n),t.seen.get(e).ref=a.innerType},n4=m("ZodISODateTime",(e,t)=>{tU.init(e,t),av.init(e,t)});function n5(e){return new n4({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...Y(e)})}let n3=m("ZodISODate",(e,t)=>{tq.init(e,t),av.init(e,t)});function n9(e){return new n3({type:"string",format:"date",check:"string_format",...Y(e)})}let n6=m("ZodISOTime",(e,t)=>{tG.init(e,t),av.init(e,t)});function n8(e){return new n6({type:"string",format:"time",check:"string_format",precision:null,...Y(e)})}let n7=m("ZodISODuration",(e,t)=>{tW.init(e,t),av.init(e,t)});function ae(e){return new n7({type:"string",format:"duration",check:"string_format",...Y(e)})}let at=(e,t)=>{J.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>(function(e,t=e=>e.message){let i={_errors:[]},n=e=>{for(let a of e.issues)if("invalid_union"===a.code&&a.errors.length)a.errors.map(e=>n({issues:e}));else if("invalid_key"===a.code)n({issues:a.issues});else if("invalid_element"===a.code)n({issues:a.issues});else if(0===a.path.length)i._errors.push(t(a));else{let e=i,n=0;for(;n<a.path.length;){let i=a.path[n];n===a.path.length-1?(e[i]=e[i]||{_errors:[]},e[i]._errors.push(t(a))):e[i]=e[i]||{_errors:[]},e=e[i],n++}}};return n(e),i})(e,t)},flatten:{value:t=>(function(e,t=e=>e.message){let i={},n=[];for(let a of e.issues)a.path.length>0?(i[a.path[0]]=i[a.path[0]]||[],i[a.path[0]].push(t(a))):n.push(t(a));return{formErrors:n,fieldErrors:i}})(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,w,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,w,2)}},isEmpty:{get:()=>0===e.issues.length}})};m("ZodError",at);let ai=m("ZodError",at,{Parent:Error}),an=Q(ai),aa=ee(ai),ar=ei(ai),ao=ea(ai),as=(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return Q(ai)(e,t,n)},al=(e,t,i)=>Q(ai)(e,t,i),ad=async(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return ee(ai)(e,t,n)},ac=async(e,t,i)=>ee(ai)(e,t,i),au=(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return ei(ai)(e,t,n)},ap=(e,t,i)=>ei(ai)(e,t,i),am=async(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return ea(ai)(e,t,n)},af=async(e,t,i)=>ea(ai)(e,t,i),ah=m("ZodType",(e,t)=>(t$.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:nX(e,"input"),output:nX(e,"output")}}),e.toJSONSchema=((e,t={})=>i=>{let n=nV({...i,processors:t});return nJ(e,n),nK(n,e),nQ(n,e)})(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...i)=>e.clone(P(t,{checks:[...t.checks??[],...i.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,i)=>j(e,t,i),e.brand=()=>e,e.register=(t,i)=>(t.add(e,i),e),e.parse=(t,i)=>an(e,t,i,{callee:e.parse}),e.safeParse=(t,i)=>ar(e,t,i),e.parseAsync=async(t,i)=>aa(e,t,i,{callee:e.parseAsync}),e.safeParseAsync=async(t,i)=>ao(e,t,i),e.spa=e.safeParseAsync,e.encode=(t,i)=>as(e,t,i),e.decode=(t,i)=>al(e,t,i),e.encodeAsync=async(t,i)=>ad(e,t,i),e.decodeAsync=async(t,i)=>ac(e,t,i),e.safeEncode=(t,i)=>au(e,t,i),e.safeDecode=(t,i)=>ap(e,t,i),e.safeEncodeAsync=async(t,i)=>am(e,t,i),e.safeDecodeAsync=async(t,i)=>af(e,t,i),e.refine=(t,i)=>e.check(oR(t,i)),e.superRefine=t=>e.check(oB(t)),e.overwrite=t=>e.check(nR(t)),e.optional=()=>os(e),e.exactOptional=()=>od(e),e.nullable=()=>ou(e),e.nullish=()=>os(ou(e)),e.nonoptional=t=>ob(e,t),e.array=()=>rj(e),e.or=t=>rU([e,t]),e.and=t=>rJ(e,t),e.transform=t=>oI(e,or(t)),e.default=t=>of(e,t),e.prefault=t=>oy(e,t),e.catch=t=>oS(e,t),e.pipe=t=>oI(e,t),e.readonly=()=>o$(e),e.describe=t=>{let i=e.clone();return i9.add(i,{description:t}),i},Object.defineProperty(e,"description",{get:()=>i9.get(e)?.description,configurable:!0}),e.meta=(...t)=>{if(0===t.length)return i9.get(e);let i=e.clone();return i9.add(i,t[0]),i},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),ay=m("_ZodString",(e,t)=>{tD.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i)=>{i.type="string";let{minimum:n,maximum:a,format:r,patterns:o,contentEncoding:s}=e._zod.bag;if("number"==typeof n&&(i.minLength=n),"number"==typeof a&&(i.maxLength=a),r&&(i.format=n0[r]??r,""===i.format&&delete i.format,"time"===r&&delete i.format),s&&(i.contentEncoding=s),o&&o.size>0){let e=[...o];1===e.length?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}})(e,t,i);let i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...t)=>e.check(nE(...t)),e.includes=(...t)=>e.check(nj(...t)),e.startsWith=(...t)=>e.check(nY(...t)),e.endsWith=(...t)=>e.check(nL(...t)),e.min=(...t)=>e.check(nN(...t)),e.max=(...t)=>e.check(nD(...t)),e.length=(...t)=>e.check(nT(...t)),e.nonempty=(...t)=>e.check(nN(1,...t)),e.lowercase=t=>e.check(nM(t)),e.uppercase=t=>e.check(nO(t)),e.trim=()=>e.check(nU()),e.normalize=(...t)=>e.check(nB(...t)),e.toLowerCase=()=>e.check(nq()),e.toUpperCase=()=>e.check(nG()),e.slugify=()=>e.check(nW())}),ag=m("ZodString",(e,t)=>{tD.init(e,t),ay.init(e,t),e.email=t=>e.check(i6(aw,t)),e.url=t=>e.check(nn(aC,t)),e.jwt=t=>e.check(nb(a8,t)),e.emoji=t=>e.check(na(aN,t)),e.guid=t=>e.check(i8(aS,t)),e.uuid=t=>e.check(i7(az,t)),e.uuidv4=t=>e.check(ne(az,t)),e.uuidv6=t=>e.check(nt(az,t)),e.uuidv7=t=>e.check(ni(az,t)),e.nanoid=t=>e.check(nr(aE,t)),e.guid=t=>e.check(i8(aS,t)),e.cuid=t=>e.check(no(aO,t)),e.cuid2=t=>e.check(ns(aY,t)),e.ulid=t=>e.check(nl(aF,t)),e.base64=t=>e.check(nh(a2,t)),e.base64url=t=>e.check(ny(a5,t)),e.xid=t=>e.check(nd(aR,t)),e.ksuid=t=>e.check(nc(aU,t)),e.ipv4=t=>e.check(nu(aG,t)),e.ipv6=t=>e.check(np(aJ,t)),e.cidrv4=t=>e.check(nm(aQ,t)),e.cidrv6=t=>e.check(nf(a0,t)),e.e164=t=>e.check(ng(a9,t)),e.datetime=t=>e.check(n5(t)),e.date=t=>e.check(n9(t)),e.time=t=>e.check(n8(t)),e.duration=t=>e.check(ae(t))});function ab(e){return new ag({type:"string",...Y(e)})}let av=m("ZodStringFormat",(e,t)=>{tN.init(e,t),ay.init(e,t)}),aw=m("ZodEmail",(e,t)=>{tM.init(e,t),av.init(e,t)});function ak(e){return i6(aw,e)}let aS=m("ZodGUID",(e,t)=>{tT.init(e,t),av.init(e,t)});function ax(e){return i8(aS,e)}let az=m("ZodUUID",(e,t)=>{tE.init(e,t),av.init(e,t)});function a_(e){return i7(az,e)}function aI(e){return ne(az,e)}function aP(e){return nt(az,e)}function aA(e){return ni(az,e)}let aC=m("ZodURL",(e,t)=>{tO.init(e,t),av.init(e,t)});function a$(e){return nn(aC,e)}function aD(e){return nn(aC,{protocol:/^https?$/,hostname:eE,...Y(e)})}let aN=m("ZodEmoji",(e,t)=>{tj.init(e,t),av.init(e,t)});function aT(e){return na(aN,e)}let aE=m("ZodNanoID",(e,t)=>{tY.init(e,t),av.init(e,t)});function aM(e){return nr(aE,e)}let aO=m("ZodCUID",(e,t)=>{tL.init(e,t),av.init(e,t)});function aj(e){return no(aO,e)}let aY=m("ZodCUID2",(e,t)=>{tF.init(e,t),av.init(e,t)});function aL(e){return ns(aY,e)}let aF=m("ZodULID",(e,t)=>{tZ.init(e,t),av.init(e,t)});function aZ(e){return nl(aF,e)}let aR=m("ZodXID",(e,t)=>{tR.init(e,t),av.init(e,t)});function aB(e){return nd(aR,e)}let aU=m("ZodKSUID",(e,t)=>{tB.init(e,t),av.init(e,t)});function aq(e){return nc(aU,e)}let aG=m("ZodIPv4",(e,t)=>{tH.init(e,t),av.init(e,t)});function aW(e){return nu(aG,e)}let aH=m("ZodMAC",(e,t)=>{tJ.init(e,t),av.init(e,t)});function aV(e){return new aH({type:"string",format:"mac",check:"string_format",abort:!1,...Y(e)})}let aJ=m("ZodIPv6",(e,t)=>{tV.init(e,t),av.init(e,t)});function aK(e){return np(aJ,e)}let aQ=m("ZodCIDRv4",(e,t)=>{tK.init(e,t),av.init(e,t)});function aX(e){return nm(aQ,e)}let a0=m("ZodCIDRv6",(e,t)=>{tQ.init(e,t),av.init(e,t)});function a1(e){return nf(a0,e)}let a2=m("ZodBase64",(e,t)=>{t0.init(e,t),av.init(e,t)});function a4(e){return nh(a2,e)}let a5=m("ZodBase64URL",(e,t)=>{t1.init(e,t),av.init(e,t)});function a3(e){return ny(a5,e)}let a9=m("ZodE164",(e,t)=>{t2.init(e,t),av.init(e,t)});function a6(e){return ng(a9,e)}let a8=m("ZodJWT",(e,t)=>{t4.init(e,t),av.init(e,t)});function a7(e){return nb(a8,e)}let re=m("ZodCustomStringFormat",(e,t)=>{t5.init(e,t),av.init(e,t)});function rt(e,t,i={}){return nH(re,e,t,i)}function ri(e){return nH(re,"hostname",eT,e)}function rn(e){return nH(re,"hex",eJ,e)}function ra(e,t){let i=t?.enc??"hex",n=`${e}_${i}`,a=l[n];if(!a)throw Error(`Unrecognized hash format: ${n}`);return nH(re,n,a,t)}let rr=m("ZodNumber",(e,t)=>{t3.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i)=>{let{minimum:n,maximum:a,format:r,multipleOf:o,exclusiveMaximum:s,exclusiveMinimum:l}=e._zod.bag;"string"==typeof r&&r.includes("int")?i.type="integer":i.type="number","number"==typeof l&&("draft-04"===t.target||"openapi-3.0"===t.target?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l),"number"==typeof n&&(i.minimum=n,"number"==typeof l&&"draft-04"!==t.target&&(l>=n?delete i.minimum:delete i.exclusiveMinimum)),"number"==typeof s&&("draft-04"===t.target||"openapi-3.0"===t.target?(i.maximum=s,i.exclusiveMaximum=!0):i.exclusiveMaximum=s),"number"==typeof a&&(i.maximum=a,"number"==typeof s&&"draft-04"!==t.target&&(s<=a?delete i.maximum:delete i.exclusiveMaximum)),"number"==typeof o&&(i.multipleOf=o)})(e,t,i),e.gt=(t,i)=>e.check(nk(t,i)),e.gte=(t,i)=>e.check(nS(t,i)),e.min=(t,i)=>e.check(nS(t,i)),e.lt=(t,i)=>e.check(nv(t,i)),e.lte=(t,i)=>e.check(nw(t,i)),e.max=(t,i)=>e.check(nw(t,i)),e.int=t=>e.check(rl(t)),e.safe=t=>e.check(rl(t)),e.positive=t=>e.check(nk(0,t)),e.nonnegative=t=>e.check(nS(0,t)),e.negative=t=>e.check(nv(0,t)),e.nonpositive=t=>e.check(nw(0,t)),e.multipleOf=(t,i)=>e.check(nP(t,i)),e.step=(t,i)=>e.check(nP(t,i)),e.finite=()=>e;let i=e._zod.bag;e.minValue=Math.max(i.minimum??-1/0,i.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(i.maximum??1/0,i.exclusiveMaximum??1/0)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function ro(e){return new rr({type:"number",checks:[],...Y(e)})}let rs=m("ZodNumberFormat",(e,t)=>{t9.init(e,t),rr.init(e,t)});function rl(e){return new rs({type:"number",check:"number_format",abort:!1,format:"safeint",...Y(e)})}function rd(e){return new rs({type:"number",check:"number_format",abort:!1,format:"float32",...Y(e)})}function rc(e){return new rs({type:"number",check:"number_format",abort:!1,format:"float64",...Y(e)})}function ru(e){return new rs({type:"number",check:"number_format",abort:!1,format:"int32",...Y(e)})}function rp(e){return new rs({type:"number",check:"number_format",abort:!1,format:"uint32",...Y(e)})}let rm=m("ZodBoolean",(e,t)=>{t6.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{t.type="boolean"}});function rf(e){return new rm({type:"boolean",...Y(e)})}let rh=m("ZodBigInt",(e,t)=>{t8.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("BigInt cannot be represented in JSON Schema")})(e),e.gte=(t,i)=>e.check(nS(t,i)),e.min=(t,i)=>e.check(nS(t,i)),e.gt=(t,i)=>e.check(nk(t,i)),e.gte=(t,i)=>e.check(nS(t,i)),e.min=(t,i)=>e.check(nS(t,i)),e.lt=(t,i)=>e.check(nv(t,i)),e.lte=(t,i)=>e.check(nw(t,i)),e.max=(t,i)=>e.check(nw(t,i)),e.positive=t=>e.check(nk(BigInt(0),t)),e.negative=t=>e.check(nv(BigInt(0),t)),e.nonpositive=t=>e.check(nw(BigInt(0),t)),e.nonnegative=t=>e.check(nS(BigInt(0),t)),e.multipleOf=(t,i)=>e.check(nP(t,i));let i=e._zod.bag;e.minValue=i.minimum??null,e.maxValue=i.maximum??null,e.format=i.format??null});function ry(e){return new rh({type:"bigint",...Y(e)})}let rg=m("ZodBigIntFormat",(e,t)=>{t7.init(e,t),rh.init(e,t)});function rb(e){return new rg({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...Y(e)})}function rv(e){return new rg({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...Y(e)})}let rw=m("ZodSymbol",(e,t)=>{ie.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Symbols cannot be represented in JSON Schema")})(e)});function rk(e){return new rw({type:"symbol",...Y(e)})}let rS=m("ZodUndefined",(e,t)=>{it.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Undefined cannot be represented in JSON Schema")})(e)});function rx(e){return new rS({type:"undefined",...Y(e)})}let rz=m("ZodNull",(e,t)=>{ii.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{"openapi-3.0"===e.target?(t.type="string",t.nullable=!0,t.enum=[null]):t.type="null"}});function r_(e){return new rz({type:"null",...Y(e)})}let rI=m("ZodAny",(e,t)=>{ia.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>void 0});function rP(){return new rI({type:"any"})}let rA=m("ZodUnknown",(e,t)=>{ir.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>void 0});function rC(){return new rA({type:"unknown"})}let r$=m("ZodNever",(e,t)=>{io.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{t.not={}}});function rD(e){return new r$({type:"never",...Y(e)})}let rN=m("ZodVoid",(e,t)=>{is.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Void cannot be represented in JSON Schema")})(e)});function rT(e){return new rN({type:"void",...Y(e)})}let rE=m("ZodDate",(e,t)=>{il.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Date cannot be represented in JSON Schema")})(e),e.min=(t,i)=>e.check(nS(t,i)),e.max=(t,i)=>e.check(nw(t,i));let i=e._zod.bag;e.minDate=i.minimum?new Date(i.minimum):null,e.maxDate=i.maximum?new Date(i.maximum):null});function rM(e){return new rE({type:"date",...Y(e)})}let rO=m("ZodArray",(e,t)=>{ic.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def,{minimum:r,maximum:o}=e._zod.bag;"number"==typeof r&&(i.minItems=r),"number"==typeof o&&(i.maxItems=o),i.type="array",i.items=nJ(a.element,t,{...n,path:[...n.path,"items"]})})(e,t,i,n),e.element=t.element,e.min=(t,i)=>e.check(nN(t,i)),e.nonempty=t=>e.check(nN(1,t)),e.max=(t,i)=>e.check(nD(t,i)),e.length=(t,i)=>e.check(nT(t,i)),e.unwrap=()=>e.element});function rj(e,t){return new rO({type:"array",element:e,...Y(t)})}function rY(e){return r8(Object.keys(e._zod.def.shape))}let rL=m("ZodObject",(e,t)=>{iy.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def;i.type="object",i.properties={};let r=a.shape;for(let e in r)i.properties[e]=nJ(r[e],t,{...n,path:[...n.path,"properties",e]});let o=new Set([...new Set(Object.keys(r))].filter(e=>{let i=a.shape[e]._zod;return"input"===t.io?void 0===i.optin:void 0===i.optout}));o.size>0&&(i.required=Array.from(o)),a.catchall?._zod.def.type==="never"?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=nJ(a.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):"output"===t.io&&(i.additionalProperties=!1)})(e,t,i,n),_(e,"shape",()=>t.shape),e.keyof=()=>r8(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:rC()}),e.loose=()=>e.clone({...e._zod.def,catchall:rC()}),e.strict=()=>e.clone({...e._zod.def,catchall:rD()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>(function(e,t){if(!N(t))throw Error("Invalid input to extend: expected a plain object");let i=e._zod.def.checks;if(i&&i.length>0){let i=e._zod.def.shape;for(let e in t)if(void 0!==Object.getOwnPropertyDescriptor(i,e))throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let n=P(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t};return I(this,"shape",i),i}});return j(e,n)})(e,t),e.safeExtend=t=>(function(e,t){if(!N(t))throw Error("Invalid input to safeExtend: expected a plain object");let i=P(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t};return I(this,"shape",i),i}});return j(e,i)})(e,t),e.merge=t=>{let i;return i=P(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t._zod.def.shape};return I(this,"shape",i),i},get catchall(){return t._zod.def.catchall},checks:[]}),j(e,i)},e.pick=t=>(function(e,t){let i=e._zod.def,n=i.checks;if(n&&n.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let a=P(e._zod.def,{get shape(){let e={};for(let n in t){if(!(n in i.shape))throw Error(`Unrecognized key: "${n}"`);t[n]&&(e[n]=i.shape[n])}return I(this,"shape",e),e},checks:[]});return j(e,a)})(e,t),e.omit=t=>(function(e,t){let i=e._zod.def,n=i.checks;if(n&&n.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let a=P(e._zod.def,{get shape(){let n={...e._zod.def.shape};for(let e in t){if(!(e in i.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete n[e]}return I(this,"shape",n),n},checks:[]});return j(e,a)})(e,t),e.partial=(...t)=>(function(e,t,i){let n=t._zod.def.checks;if(n&&n.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let a=P(t._zod.def,{get shape(){let n=t._zod.def.shape,a={...n};if(i)for(let t in i){if(!(t in n))throw Error(`Unrecognized key: "${t}"`);i[t]&&(a[t]=e?new e({type:"optional",innerType:n[t]}):n[t])}else for(let t in n)a[t]=e?new e({type:"optional",innerType:n[t]}):n[t];return I(this,"shape",a),a},checks:[]});return j(t,a)})(oo,e,t[0]),e.required=(...t)=>{var i;let n;return i=t[0],n=P(e._zod.def,{get shape(){let t=e._zod.def.shape,n={...t};if(i)for(let e in i){if(!(e in n))throw Error(`Unrecognized key: "${e}"`);i[e]&&(n[e]=new og({type:"nonoptional",innerType:t[e]}))}else for(let e in t)n[e]=new og({type:"nonoptional",innerType:t[e]});return I(this,"shape",n),n}}),j(e,n)}});function rF(e,t){return new rL({type:"object",shape:e??{},...Y(t)})}function rZ(e,t){return new rL({type:"object",shape:e,catchall:rD(),...Y(t)})}function rR(e,t){return new rL({type:"object",shape:e,catchall:rC(),...Y(t)})}let rB=m("ZodUnion",(e,t)=>{ib.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n1(e,t,i,n),e.options=t.options});function rU(e,t){return new rB({type:"union",options:e,...Y(t)})}let rq=m("ZodXor",(e,t)=>{rB.init(e,t),iw.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n1(e,t,i,n),e.options=t.options});function rG(e,t){return new rq({type:"union",options:e,inclusive:!1,...Y(t)})}let rW=m("ZodDiscriminatedUnion",(e,t)=>{rB.init(e,t),ik.init(e,t)});function rH(e,t,i){return new rW({type:"union",options:t,discriminator:e,...Y(i)})}let rV=m("ZodIntersection",(e,t)=>{iS.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a,r,o,s;return r=nJ((a=e._zod.def).left,t,{...n,path:[...n.path,"allOf",0]}),o=nJ(a.right,t,{...n,path:[...n.path,"allOf",1]}),void(i.allOf=[...(s=e=>"allOf"in e&&1===Object.keys(e).length)(r)?r.allOf:[r],...s(o)?o.allOf:[o]])}});function rJ(e,t){return new rV({type:"intersection",left:e,right:t})}let rK=m("ZodTuple",(e,t)=>{iz.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def;i.type="array";let r="draft-2020-12"===t.target?"prefixItems":"items",o="draft-2020-12"===t.target||"openapi-3.0"===t.target?"items":"additionalItems",s=a.items.map((e,i)=>nJ(e,t,{...n,path:[...n.path,r,i]})),l=a.rest?nJ(a.rest,t,{...n,path:[...n.path,o,..."openapi-3.0"===t.target?[a.items.length]:[]]}):null;"draft-2020-12"===t.target?(i.prefixItems=s,l&&(i.items=l)):"openapi-3.0"===t.target?(i.items={anyOf:s},l&&i.items.anyOf.push(l),i.minItems=s.length,l||(i.maxItems=s.length)):(i.items=s,l&&(i.additionalItems=l));let{minimum:d,maximum:c}=e._zod.bag;"number"==typeof d&&(i.minItems=d),"number"==typeof c&&(i.maxItems=c)})(e,t,i,n),e.rest=t=>e.clone({...e._zod.def,rest:t})});function rQ(e,t,i){let n=t instanceof t$,a=n?i:t;return new rK({type:"tuple",items:e,rest:n?t:null,...Y(a)})}let rX=m("ZodRecord",(e,t)=>{iI.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def;i.type="object";let r=a.keyType,o=r._zod.bag,s=o?.patterns;if("loose"===a.mode&&s&&s.size>0){let e=nJ(a.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});for(let t of(i.patternProperties={},s))i.patternProperties[t.source]=e}else("draft-07"===t.target||"draft-2020-12"===t.target)&&(i.propertyNames=nJ(a.keyType,t,{...n,path:[...n.path,"propertyNames"]})),i.additionalProperties=nJ(a.valueType,t,{...n,path:[...n.path,"additionalProperties"]});let l=r._zod.values;if(l){let e=[...l].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(i.required=e)}})(e,t,i,n),e.keyType=t.keyType,e.valueType=t.valueType});function r0(e,t,i){return new rX({type:"record",keyType:e,valueType:t,...Y(i)})}function r1(e,t,i){let n=j(e);return n._zod.values=void 0,new rX({type:"record",keyType:n,valueType:t,...Y(i)})}function r2(e,t,i){return new rX({type:"record",keyType:e,valueType:t,mode:"loose",...Y(i)})}let r4=m("ZodMap",(e,t)=>{iP.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Map cannot be represented in JSON Schema")})(e),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...t)=>e.check(nC(...t)),e.nonempty=t=>e.check(nC(1,t)),e.max=(...t)=>e.check(nA(...t)),e.size=(...t)=>e.check(n$(...t))});function r5(e,t,i){return new r4({type:"map",keyType:e,valueType:t,...Y(i)})}let r3=m("ZodSet",(e,t)=>{iC.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Set cannot be represented in JSON Schema")})(e),e.min=(...t)=>e.check(nC(...t)),e.nonempty=t=>e.check(nC(1,t)),e.max=(...t)=>e.check(nA(...t)),e.size=(...t)=>e.check(n$(...t))});function r9(e,t){return new r3({type:"set",valueType:e,...Y(t)})}let r6=m("ZodEnum",(e,t)=>{iD.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;(a=b(e._zod.def.entries)).every(e=>"number"==typeof e)&&(i.type="number"),a.every(e=>"string"==typeof e)&&(i.type="string"),i.enum=a},e.enum=t.entries,e.options=Object.values(t.entries);let i=new Set(Object.keys(t.entries));e.extract=(e,n)=>{let a={};for(let n of e)if(i.has(n))a[n]=t.entries[n];else throw Error(`Key ${n} not found in enum`);return new r6({...t,checks:[],...Y(n),entries:a})},e.exclude=(e,n)=>{let a={...t.entries};for(let t of e)if(i.has(t))delete a[t];else throw Error(`Key ${t} not found in enum`);return new r6({...t,checks:[],...Y(n),entries:a})}});function r8(e,t){return new r6({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...Y(t)})}function r7(e,t){return new r6({type:"enum",entries:e,...Y(t)})}let oe=m("ZodLiteral",(e,t)=>{iN.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i)=>{let n=e._zod.def,a=[];for(let e of n.values)if(void 0===e){if("throw"===t.unrepresentable)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if("bigint"==typeof e)if("throw"===t.unrepresentable)throw Error("BigInt literals cannot be represented in JSON Schema");else a.push(Number(e));else a.push(e);if(0===a.length);else if(1===a.length){let e=a[0];i.type=null===e?"null":typeof e,"draft-04"===t.target||"openapi-3.0"===t.target?i.enum=[e]:i.const=e}else a.every(e=>"number"==typeof e)&&(i.type="number"),a.every(e=>"string"==typeof e)&&(i.type="string"),a.every(e=>"boolean"==typeof e)&&(i.type="boolean"),a.every(e=>null===e)&&(i.type="null"),i.enum=a})(e,t,i),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function ot(e,t){return new oe({type:"literal",values:Array.isArray(e)?e:[e],...Y(t)})}let oi=m("ZodFile",(e,t)=>{iT.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t)=>{let i={type:"string",format:"binary",contentEncoding:"binary"},{minimum:n,maximum:a,mime:r}=e._zod.bag;void 0!==n&&(i.minLength=n),void 0!==a&&(i.maxLength=a),r?1===r.length?(i.contentMediaType=r[0],Object.assign(t,i)):(Object.assign(t,i),t.anyOf=r.map(e=>({contentMediaType:e}))):Object.assign(t,i)})(e,i),e.min=(t,i)=>e.check(nC(t,i)),e.max=(t,i)=>e.check(nA(t,i)),e.mime=(t,i)=>e.check(nZ(Array.isArray(t)?t:[t],i))});function on(e){return new oi({type:"file",...Y(e)})}let oa=m("ZodTransform",(e,t)=>{iE.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Transforms cannot be represented in JSON Schema")})(e),e._zod.parse=(i,n)=>{if("backward"===n.direction)throw new h(e.constructor.name);i.addIssue=n=>{"string"==typeof n?i.issues.push(H(n,i.value,t)):(n.fatal&&(n.continue=!1),n.code??(n.code="custom"),n.input??(n.input=i.value),n.inst??(n.inst=e),i.issues.push(H(n)))};let a=t.transform(i.value,i);return a instanceof Promise?a.then(e=>(i.value=e,i)):(i.value=a,i)}});function or(e){return new oa({type:"transform",transform:e})}let oo=m("ZodOptional",(e,t)=>{iO.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n2(e,t,i,n),e.unwrap=()=>e._zod.def.innerType});function os(e){return new oo({type:"optional",innerType:e})}let ol=m("ZodExactOptional",(e,t)=>{ij.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n2(e,t,i,n),e.unwrap=()=>e._zod.def.innerType});function od(e){return new ol({type:"optional",innerType:e})}let oc=m("ZodNullable",(e,t)=>{iY.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a,r,o;return r=nJ((a=e._zod.def).innerType,t,n),o=t.seen.get(e),void("openapi-3.0"===t.target?(o.ref=a.innerType,i.nullable=!0):i.anyOf=[r,{type:"null"}])},e.unwrap=()=>e._zod.def.innerType});function ou(e){return new oc({type:"nullable",innerType:e})}function op(e){return os(ou(e))}let om=m("ZodDefault",(e,t)=>{iL.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType,i.default=JSON.parse(JSON.stringify(a.defaultValue))},e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function of(e,t){return new om({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():T(t)}})}let oh=m("ZodPrefault",(e,t)=>{iZ.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType,"input"===t.io&&(i._prefault=JSON.parse(JSON.stringify(a.defaultValue)))},e.unwrap=()=>e._zod.def.innerType});function oy(e,t){return new oh({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():T(t)}})}let og=m("ZodNonOptional",(e,t)=>{iR.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType},e.unwrap=()=>e._zod.def.innerType});function ob(e,t){return new og({type:"nonoptional",innerType:e,...Y(t)})}let ov=m("ZodSuccess",(e,t)=>{iU.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{t.type="boolean"},e.unwrap=()=>e._zod.def.innerType});function ow(e){return new ov({type:"success",innerType:e})}let ok=m("ZodCatch",(e,t)=>{iq.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a,r=e._zod.def;nJ(r.innerType,t,n),t.seen.get(e).ref=r.innerType;try{a=r.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}i.default=a})(e,t,i,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function oS(e,t){return new ok({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})}let ox=m("ZodNaN",(e,t)=>{iG.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("NaN cannot be represented in JSON Schema")})(e)});function oz(e){return new ox({type:"nan",...Y(e)})}let o_=m("ZodPipe",(e,t)=>{iW.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a,r;return a=e._zod.def,void(nJ(r="input"===t.io?"transform"===a.in._zod.def.type?a.out:a.in:a.out,t,n),t.seen.get(e).ref=r)},e.in=t.in,e.out=t.out});function oI(e,t){return new o_({type:"pipe",in:e,out:t})}let oP=m("ZodCodec",(e,t)=>{o_.init(e,t),iV.init(e,t)});function oA(e,t,i){return new oP({type:"pipe",in:e,out:t,transform:i.decode,reverseTransform:i.encode})}let oC=m("ZodReadonly",(e,t)=>{iQ.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType,i.readOnly=!0},e.unwrap=()=>e._zod.def.innerType});function o$(e){return new oC({type:"readonly",innerType:e})}let oD=m("ZodTemplateLiteral",(e,t)=>{i0.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t)=>{let i=e._zod.pattern;if(!i)throw Error("Pattern not found in template literal");t.type="string",t.pattern=i.source})(e,i)});function oN(e,t){return new oD({type:"template_literal",parts:e,...Y(t)})}let oT=m("ZodLazy",(e,t)=>{i4.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ(a=e._zod.innerType,t,n),t.seen.get(e).ref=a},e.unwrap=()=>e._zod.def.getter()});function oE(e){return new oT({type:"lazy",getter:e})}let oM=m("ZodPromise",(e,t)=>{i2.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType},e.unwrap=()=>e._zod.def.innerType});function oO(e){return new oM({type:"promise",innerType:e})}let oj=m("ZodFunction",(e,t)=>{i1.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Function types cannot be represented in JSON Schema")})(e)});function oY(e){return new oj({type:"function",input:Array.isArray(e?.input)?rQ(e?.input):e?.input??rj(rC()),output:e?.output??rC()})}let oL=m("ZodCustom",(e,t)=>{i5.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Custom types cannot be represented in JSON Schema")})(e)});function oF(e){let t=new ta({check:"custom"});return t._zod.check=e,t}function oZ(e,t){var i;let n;return i=e??(()=>!0),(n=Y(t)).abort??(n.abort=!0),new oL({type:"custom",check:"custom",fn:i,...n})}function oR(e,t={}){return new oL({type:"custom",check:"custom",fn:e,...Y(t)})}function oB(e){var t;let i,n;return t=t=>(t.addIssue=e=>{"string"==typeof e?t.issues.push(H(e,t.value,i._zod.def)):(e.fatal&&(e.continue=!1),e.code??(e.code="custom"),e.input??(e.input=t.value),e.inst??(e.inst=i),e.continue??(e.continue=!i._zod.def.abort),t.issues.push(H(e)))},e(t.value,t)),(n=new ta({check:"custom",...Y(void 0)}))._zod.check=t,i=n}let oU=function(e){let t=new ta({check:"describe"});return t._zod.onattach=[t=>{let i=i9.get(t)??{};i9.add(t,{...i,description:e})}],t._zod.check=()=>{},t},oq=function(e){let t=new ta({check:"meta"});return t._zod.onattach=[t=>{let i=i9.get(t)??{};i9.add(t,{...i,...e})}],t._zod.check=()=>{},t};function oG(e,t={}){let i=new oL({type:"custom",check:"custom",fn:t=>t instanceof e,abort:!0,...Y(t)});return i._zod.bag.Class=e,i._zod.check=t=>{t.value instanceof e||t.issues.push({code:"invalid_type",expected:e.name,input:t.value,inst:i,path:[...i._zod.def.path??[]]})},i}let oW=(...e)=>(function(e,t){let i=Y(t),n=i.truthy??["true","1","yes","on","y","enabled"],a=i.falsy??["false","0","no","off","n","disabled"];"sensitive"!==i.case&&(n=n.map(e=>"string"==typeof e?e.toLowerCase():e),a=a.map(e=>"string"==typeof e?e.toLowerCase():e));let r=new Set(n),o=new Set(a),s=e.Codec??iV,l=e.Boolean??t6,d=new s({type:"pipe",in:new(e.String??tD)({type:"string",error:i.error}),out:new l({type:"boolean",error:i.error}),transform:(e,t)=>{let n=e;return"sensitive"!==i.case&&(n=n.toLowerCase()),!!r.has(n)||!o.has(n)&&(t.issues.push({code:"invalid_value",expected:"stringbool",values:[...r,...o],input:t.value,inst:d,continue:!1}),{})},reverseTransform:(e,t)=>!0===e?n[0]||"true":a[0]||"false",error:i.error});return d})({Codec:oP,Boolean:rm,String:ag},...e);function oH(e){let t=oE(()=>rU([ab(e),ro(),rf(),r_(),rj(t),r0(ab(),t)]));return t}function oV(e,t){return oI(or(e),t)}function oJ(e){return new ag({type:"string",coerce:!0,...Y(e)})}function oK(e){return new rr({type:"number",coerce:!0,checks:[],...Y(e)})}function oQ(e){return new rm({type:"boolean",coerce:!0,...Y(e)})}function oX(e){return new rh({type:"bigint",coerce:!0,...Y(e)})}function o0(e){return new rE({type:"date",coerce:!0,...Y(e)})}s||(s={}),g({localeError:(n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}},a={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},r={nan:"NaN"},e=>{switch(e.code){case"invalid_type":{let t=r[e.expected]??e.expected,i=function(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":if(null===e)return"null";if(Array.isArray(e))return"array";if(e&&Object.getPrototypeOf(e)!==Object.prototype&&"constructor"in e&&e.constructor)return e.constructor.name}return t}(e.input),n=r[i]??i;return`Invalid input: expected ${t}, received ${n}`}case"invalid_value":if(1===e.values.length)return`Invalid input: expected ${L(e.values[0])}`;return`Invalid option: expected one of ${v(e.values,"|")}`;case"too_big":{let t=e.inclusive?"<=":"<",i=n[e.origin]??null;if(i)return`Too big: expected ${e.origin??"value"} to have ${t}${e.maximum.toString()} ${i.unit??"elements"}`;return`Too big: expected ${e.origin??"value"} to be ${t}${e.maximum.toString()}`}case"too_small":{let t=e.inclusive?">=":">",i=n[e.origin]??null;if(i)return`Too small: expected ${e.origin} to have ${t}${e.minimum.toString()} ${i.unit}`;return`Too small: expected ${e.origin} to be ${t}${e.minimum.toString()}`}case"invalid_format":if("starts_with"===e.format)return`Invalid string: must start with "${e.prefix}"`;if("ends_with"===e.format)return`Invalid string: must end with "${e.suffix}"`;if("includes"===e.format)return`Invalid string: must include "${e.includes}"`;if("regex"===e.format)return`Invalid string: must match pattern ${e.pattern}`;return`Invalid ${a[e.format]??e.format}`;case"not_multiple_of":return`Invalid number: must be a multiple of ${e.divisor}`;case"unrecognized_keys":return`Unrecognized key${e.keys.length>1?"s":""}: ${v(e.keys,", ")}`;case"invalid_key":return`Invalid key in ${e.origin}`;case"invalid_union":default:return"Invalid input";case"invalid_element":return`Invalid value in ${e.origin}`}})})}};
37
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let n=i[1];if(t===i[0]){a(i);continue}if(e.external){let n=e.external.registry.get(i[0])?.id;if(t!==i[0]&&n){a(i);continue}}if(e.metadataRegistry.get(i[0])?.id||n.cycle||n.count>1&&"ref"===e.reused){a(i);continue}}}function nX(e,t){let i=e.seen.get(t);if(!i)throw Error("Unprocessed schema. This is a bug in Zod.");let n=t=>{let i=e.seen.get(t);if(null===i.ref)return;let a=i.def??i.schema,r={...a},o=i.ref;if(i.ref=null,o){n(o);let i=e.seen.get(o),s=i.schema;if(s.$ref&&("draft-07"===e.target||"draft-04"===e.target||"openapi-3.0"===e.target)?(a.allOf=a.allOf??[],a.allOf.push(s)):Object.assign(a,s),Object.assign(a,r),t._zod.parent===o)for(let e in a)"$ref"!==e&&"allOf"!==e&&(e in r||delete a[e]);if(s.$ref&&i.def)for(let e in a)"$ref"!==e&&"allOf"!==e&&e in i.def&&JSON.stringify(a[e])===JSON.stringify(i.def[e])&&delete a[e]}let s=t._zod.parent;if(s&&s!==o){n(s);let t=e.seen.get(s);if(t?.schema.$ref&&(a.$ref=t.schema.$ref,t.def))for(let e in a)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(a[e])===JSON.stringify(t.def[e])&&delete a[e]}e.override({zodSchema:t,jsonSchema:a,path:i.path??[]})};for(let t of[...e.seen.entries()].reverse())n(t[0]);let a={};if("draft-2020-12"===e.target?a.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?a.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?a.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw Error("Schema is missing an `id` property");a.$id=e.external.uri(i)}Object.assign(a,i.def??i.schema);let r=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(r[e.defId]=e.def)}e.external||Object.keys(r).length>0&&("draft-2020-12"===e.target?a.$defs=r:a.definitions=r);try{let i=JSON.parse(JSON.stringify(a));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:nQ(t,"input",e.processors),output:nQ(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch(e){throw Error("Error converting schema to JSON.")}}let nQ=(e,t,i={})=>n=>{let{libraryOptions:a,target:r}=n??{},o=nH({...a??{},target:r,io:t,processors:i});return nJ(e,o),nK(o,e),nX(o,e)},n0={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},n1=(e,t,i,n)=>{let a=e._zod.def,r=!1===a.inclusive,o=a.options.map((e,i)=>nJ(e,t,{...n,path:[...n.path,r?"oneOf":"anyOf",i]}));r?i.oneOf=o:i.anyOf=o},n2=(e,t,i,n)=>{let a=e._zod.def;nJ(a.innerType,t,n),t.seen.get(e).ref=a.innerType},n5=m("ZodISODateTime",(e,t)=>{tG.init(e,t),av.init(e,t)});function n4(e){return new n5({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...L(e)})}let n3=m("ZodISODate",(e,t)=>{tU.init(e,t),av.init(e,t)});function n6(e){return new n3({type:"string",format:"date",check:"string_format",...L(e)})}let n9=m("ZodISOTime",(e,t)=>{tq.init(e,t),av.init(e,t)});function n7(e){return new n9({type:"string",format:"time",check:"string_format",precision:null,...L(e)})}let n8=m("ZodISODuration",(e,t)=>{tW.init(e,t),av.init(e,t)});function ae(e){return new n8({type:"string",format:"duration",check:"string_format",...L(e)})}let at=(e,t)=>{J.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>(function(e,t=e=>e.message){let i={_errors:[]},n=e=>{for(let a of e.issues)if("invalid_union"===a.code&&a.errors.length)a.errors.map(e=>n({issues:e}));else if("invalid_key"===a.code)n({issues:a.issues});else if("invalid_element"===a.code)n({issues:a.issues});else if(0===a.path.length)i._errors.push(t(a));else{let e=i,n=0;for(;n<a.path.length;){let i=a.path[n];n===a.path.length-1?(e[i]=e[i]||{_errors:[]},e[i]._errors.push(t(a))):e[i]=e[i]||{_errors:[]},e=e[i],n++}}};return n(e),i})(e,t)},flatten:{value:t=>(function(e,t=e=>e.message){let i={},n=[];for(let a of e.issues)a.path.length>0?(i[a.path[0]]=i[a.path[0]]||[],i[a.path[0]].push(t(a))):n.push(t(a));return{formErrors:n,fieldErrors:i}})(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,w,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,w,2)}},isEmpty:{get:()=>0===e.issues.length}})};m("ZodError",at);let ai=m("ZodError",at,{Parent:Error}),an=X(ai),aa=ee(ai),ar=ei(ai),ao=ea(ai),as=(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return X(ai)(e,t,n)},al=(e,t,i)=>X(ai)(e,t,i),ad=async(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return ee(ai)(e,t,n)},au=async(e,t,i)=>ee(ai)(e,t,i),ac=(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return ei(ai)(e,t,n)},ap=(e,t,i)=>ei(ai)(e,t,i),am=async(e,t,i)=>{let n=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return ea(ai)(e,t,n)},af=async(e,t,i)=>ea(ai)(e,t,i),ah=m("ZodType",(e,t)=>(t$.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:nQ(e,"input"),output:nQ(e,"output")}}),e.toJSONSchema=((e,t={})=>i=>{let n=nH({...i,processors:t});return nJ(e,n),nK(n,e),nX(n,e)})(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...i)=>e.clone(z(t,{checks:[...t.checks??[],...i.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,i)=>j(e,t,i),e.brand=()=>e,e.register=(t,i)=>(t.add(e,i),e),e.parse=(t,i)=>an(e,t,i,{callee:e.parse}),e.safeParse=(t,i)=>ar(e,t,i),e.parseAsync=async(t,i)=>aa(e,t,i,{callee:e.parseAsync}),e.safeParseAsync=async(t,i)=>ao(e,t,i),e.spa=e.safeParseAsync,e.encode=(t,i)=>as(e,t,i),e.decode=(t,i)=>al(e,t,i),e.encodeAsync=async(t,i)=>ad(e,t,i),e.decodeAsync=async(t,i)=>au(e,t,i),e.safeEncode=(t,i)=>ac(e,t,i),e.safeDecode=(t,i)=>ap(e,t,i),e.safeEncodeAsync=async(t,i)=>am(e,t,i),e.safeDecodeAsync=async(t,i)=>af(e,t,i),e.refine=(t,i)=>e.check(oR(t,i)),e.superRefine=t=>e.check(oZ(t)),e.overwrite=t=>e.check(nR(t)),e.optional=()=>os(e),e.exactOptional=()=>od(e),e.nullable=()=>oc(e),e.nullish=()=>os(oc(e)),e.nonoptional=t=>ob(e,t),e.array=()=>rj(e),e.or=t=>rG([e,t]),e.and=t=>rJ(e,t),e.transform=t=>oA(e,or(t)),e.default=t=>of(e,t),e.prefault=t=>oy(e,t),e.catch=t=>ok(e,t),e.pipe=t=>oA(e,t),e.readonly=()=>o$(e),e.describe=t=>{let i=e.clone();return i6.add(i,{description:t}),i},Object.defineProperty(e,"description",{get:()=>i6.get(e)?.description,configurable:!0}),e.meta=(...t)=>{if(0===t.length)return i6.get(e);let i=e.clone();return i6.add(i,t[0]),i},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),ay=m("_ZodString",(e,t)=>{tT.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i)=>{i.type="string";let{minimum:n,maximum:a,format:r,patterns:o,contentEncoding:s}=e._zod.bag;if("number"==typeof n&&(i.minLength=n),"number"==typeof a&&(i.maxLength=a),r&&(i.format=n0[r]??r,""===i.format&&delete i.format,"time"===r&&delete i.format),s&&(i.contentEncoding=s),o&&o.size>0){let e=[...o];1===e.length?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}})(e,t,i);let i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...t)=>e.check(nE(...t)),e.includes=(...t)=>e.check(nj(...t)),e.startsWith=(...t)=>e.check(nL(...t)),e.endsWith=(...t)=>e.check(nB(...t)),e.min=(...t)=>e.check(nD(...t)),e.max=(...t)=>e.check(nT(...t)),e.length=(...t)=>e.check(nN(...t)),e.nonempty=(...t)=>e.check(nD(1,...t)),e.lowercase=t=>e.check(nM(t)),e.uppercase=t=>e.check(nO(t)),e.trim=()=>e.check(nG()),e.normalize=(...t)=>e.check(nZ(...t)),e.toLowerCase=()=>e.check(nU()),e.toUpperCase=()=>e.check(nq()),e.slugify=()=>e.check(nW())}),ag=m("ZodString",(e,t)=>{tT.init(e,t),ay.init(e,t),e.email=t=>e.check(i9(aw,t)),e.url=t=>e.check(nn(aC,t)),e.jwt=t=>e.check(nb(a7,t)),e.emoji=t=>e.check(na(aD,t)),e.guid=t=>e.check(i7(ak,t)),e.uuid=t=>e.check(i8(a_,t)),e.uuidv4=t=>e.check(ne(a_,t)),e.uuidv6=t=>e.check(nt(a_,t)),e.uuidv7=t=>e.check(ni(a_,t)),e.nanoid=t=>e.check(nr(aE,t)),e.guid=t=>e.check(i7(ak,t)),e.cuid=t=>e.check(no(aO,t)),e.cuid2=t=>e.check(ns(aL,t)),e.ulid=t=>e.check(nl(aF,t)),e.base64=t=>e.check(nh(a2,t)),e.base64url=t=>e.check(ny(a4,t)),e.xid=t=>e.check(nd(aR,t)),e.ksuid=t=>e.check(nu(aG,t)),e.ipv4=t=>e.check(nc(aq,t)),e.ipv6=t=>e.check(np(aJ,t)),e.cidrv4=t=>e.check(nm(aX,t)),e.cidrv6=t=>e.check(nf(a0,t)),e.e164=t=>e.check(ng(a6,t)),e.datetime=t=>e.check(n4(t)),e.date=t=>e.check(n6(t)),e.time=t=>e.check(n7(t)),e.duration=t=>e.check(ae(t))});function ab(e){return new ag({type:"string",...L(e)})}let av=m("ZodStringFormat",(e,t)=>{tD.init(e,t),ay.init(e,t)}),aw=m("ZodEmail",(e,t)=>{tM.init(e,t),av.init(e,t)});function ax(e){return i9(aw,e)}let ak=m("ZodGUID",(e,t)=>{tN.init(e,t),av.init(e,t)});function aS(e){return i7(ak,e)}let a_=m("ZodUUID",(e,t)=>{tE.init(e,t),av.init(e,t)});function aI(e){return i8(a_,e)}function aA(e){return ne(a_,e)}function az(e){return nt(a_,e)}function aP(e){return ni(a_,e)}let aC=m("ZodURL",(e,t)=>{tO.init(e,t),av.init(e,t)});function a$(e){return nn(aC,e)}function aT(e){return nn(aC,{protocol:/^https?$/,hostname:eE,...L(e)})}let aD=m("ZodEmoji",(e,t)=>{tj.init(e,t),av.init(e,t)});function aN(e){return na(aD,e)}let aE=m("ZodNanoID",(e,t)=>{tL.init(e,t),av.init(e,t)});function aM(e){return nr(aE,e)}let aO=m("ZodCUID",(e,t)=>{tB.init(e,t),av.init(e,t)});function aj(e){return no(aO,e)}let aL=m("ZodCUID2",(e,t)=>{tF.init(e,t),av.init(e,t)});function aB(e){return ns(aL,e)}let aF=m("ZodULID",(e,t)=>{tY.init(e,t),av.init(e,t)});function aY(e){return nl(aF,e)}let aR=m("ZodXID",(e,t)=>{tR.init(e,t),av.init(e,t)});function aZ(e){return nd(aR,e)}let aG=m("ZodKSUID",(e,t)=>{tZ.init(e,t),av.init(e,t)});function aU(e){return nu(aG,e)}let aq=m("ZodIPv4",(e,t)=>{tV.init(e,t),av.init(e,t)});function aW(e){return nc(aq,e)}let aV=m("ZodMAC",(e,t)=>{tJ.init(e,t),av.init(e,t)});function aH(e){return new aV({type:"string",format:"mac",check:"string_format",abort:!1,...L(e)})}let aJ=m("ZodIPv6",(e,t)=>{tH.init(e,t),av.init(e,t)});function aK(e){return np(aJ,e)}let aX=m("ZodCIDRv4",(e,t)=>{tK.init(e,t),av.init(e,t)});function aQ(e){return nm(aX,e)}let a0=m("ZodCIDRv6",(e,t)=>{tX.init(e,t),av.init(e,t)});function a1(e){return nf(a0,e)}let a2=m("ZodBase64",(e,t)=>{t0.init(e,t),av.init(e,t)});function a5(e){return nh(a2,e)}let a4=m("ZodBase64URL",(e,t)=>{t1.init(e,t),av.init(e,t)});function a3(e){return ny(a4,e)}let a6=m("ZodE164",(e,t)=>{t2.init(e,t),av.init(e,t)});function a9(e){return ng(a6,e)}let a7=m("ZodJWT",(e,t)=>{t5.init(e,t),av.init(e,t)});function a8(e){return nb(a7,e)}let re=m("ZodCustomStringFormat",(e,t)=>{t4.init(e,t),av.init(e,t)});function rt(e,t,i={}){return nV(re,e,t,i)}function ri(e){return nV(re,"hostname",eN,e)}function rn(e){return nV(re,"hex",eJ,e)}function ra(e,t){let i=t?.enc??"hex",n=`${e}_${i}`,a=l[n];if(!a)throw Error(`Unrecognized hash format: ${n}`);return nV(re,n,a,t)}let rr=m("ZodNumber",(e,t)=>{t3.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i)=>{let{minimum:n,maximum:a,format:r,multipleOf:o,exclusiveMaximum:s,exclusiveMinimum:l}=e._zod.bag;"string"==typeof r&&r.includes("int")?i.type="integer":i.type="number","number"==typeof l&&("draft-04"===t.target||"openapi-3.0"===t.target?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l),"number"==typeof n&&(i.minimum=n,"number"==typeof l&&"draft-04"!==t.target&&(l>=n?delete i.minimum:delete i.exclusiveMinimum)),"number"==typeof s&&("draft-04"===t.target||"openapi-3.0"===t.target?(i.maximum=s,i.exclusiveMaximum=!0):i.exclusiveMaximum=s),"number"==typeof a&&(i.maximum=a,"number"==typeof s&&"draft-04"!==t.target&&(s<=a?delete i.maximum:delete i.exclusiveMaximum)),"number"==typeof o&&(i.multipleOf=o)})(e,t,i),e.gt=(t,i)=>e.check(nx(t,i)),e.gte=(t,i)=>e.check(nk(t,i)),e.min=(t,i)=>e.check(nk(t,i)),e.lt=(t,i)=>e.check(nv(t,i)),e.lte=(t,i)=>e.check(nw(t,i)),e.max=(t,i)=>e.check(nw(t,i)),e.int=t=>e.check(rl(t)),e.safe=t=>e.check(rl(t)),e.positive=t=>e.check(nx(0,t)),e.nonnegative=t=>e.check(nk(0,t)),e.negative=t=>e.check(nv(0,t)),e.nonpositive=t=>e.check(nw(0,t)),e.multipleOf=(t,i)=>e.check(nz(t,i)),e.step=(t,i)=>e.check(nz(t,i)),e.finite=()=>e;let i=e._zod.bag;e.minValue=Math.max(i.minimum??-1/0,i.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(i.maximum??1/0,i.exclusiveMaximum??1/0)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function ro(e){return new rr({type:"number",checks:[],...L(e)})}let rs=m("ZodNumberFormat",(e,t)=>{t6.init(e,t),rr.init(e,t)});function rl(e){return new rs({type:"number",check:"number_format",abort:!1,format:"safeint",...L(e)})}function rd(e){return new rs({type:"number",check:"number_format",abort:!1,format:"float32",...L(e)})}function ru(e){return new rs({type:"number",check:"number_format",abort:!1,format:"float64",...L(e)})}function rc(e){return new rs({type:"number",check:"number_format",abort:!1,format:"int32",...L(e)})}function rp(e){return new rs({type:"number",check:"number_format",abort:!1,format:"uint32",...L(e)})}let rm=m("ZodBoolean",(e,t)=>{t9.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{t.type="boolean"}});function rf(e){return new rm({type:"boolean",...L(e)})}let rh=m("ZodBigInt",(e,t)=>{t7.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("BigInt cannot be represented in JSON Schema")})(e),e.gte=(t,i)=>e.check(nk(t,i)),e.min=(t,i)=>e.check(nk(t,i)),e.gt=(t,i)=>e.check(nx(t,i)),e.gte=(t,i)=>e.check(nk(t,i)),e.min=(t,i)=>e.check(nk(t,i)),e.lt=(t,i)=>e.check(nv(t,i)),e.lte=(t,i)=>e.check(nw(t,i)),e.max=(t,i)=>e.check(nw(t,i)),e.positive=t=>e.check(nx(BigInt(0),t)),e.negative=t=>e.check(nv(BigInt(0),t)),e.nonpositive=t=>e.check(nw(BigInt(0),t)),e.nonnegative=t=>e.check(nk(BigInt(0),t)),e.multipleOf=(t,i)=>e.check(nz(t,i));let i=e._zod.bag;e.minValue=i.minimum??null,e.maxValue=i.maximum??null,e.format=i.format??null});function ry(e){return new rh({type:"bigint",...L(e)})}let rg=m("ZodBigIntFormat",(e,t)=>{t8.init(e,t),rh.init(e,t)});function rb(e){return new rg({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...L(e)})}function rv(e){return new rg({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...L(e)})}let rw=m("ZodSymbol",(e,t)=>{ie.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Symbols cannot be represented in JSON Schema")})(e)});function rx(e){return new rw({type:"symbol",...L(e)})}let rk=m("ZodUndefined",(e,t)=>{it.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Undefined cannot be represented in JSON Schema")})(e)});function rS(e){return new rk({type:"undefined",...L(e)})}let r_=m("ZodNull",(e,t)=>{ii.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{"openapi-3.0"===e.target?(t.type="string",t.nullable=!0,t.enum=[null]):t.type="null"}});function rI(e){return new r_({type:"null",...L(e)})}let rA=m("ZodAny",(e,t)=>{ia.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>void 0});function rz(){return new rA({type:"any"})}let rP=m("ZodUnknown",(e,t)=>{ir.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>void 0});function rC(){return new rP({type:"unknown"})}let r$=m("ZodNever",(e,t)=>{io.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{t.not={}}});function rT(e){return new r$({type:"never",...L(e)})}let rD=m("ZodVoid",(e,t)=>{is.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Void cannot be represented in JSON Schema")})(e)});function rN(e){return new rD({type:"void",...L(e)})}let rE=m("ZodDate",(e,t)=>{il.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Date cannot be represented in JSON Schema")})(e),e.min=(t,i)=>e.check(nk(t,i)),e.max=(t,i)=>e.check(nw(t,i));let i=e._zod.bag;e.minDate=i.minimum?new Date(i.minimum):null,e.maxDate=i.maximum?new Date(i.maximum):null});function rM(e){return new rE({type:"date",...L(e)})}let rO=m("ZodArray",(e,t)=>{iu.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def,{minimum:r,maximum:o}=e._zod.bag;"number"==typeof r&&(i.minItems=r),"number"==typeof o&&(i.maxItems=o),i.type="array",i.items=nJ(a.element,t,{...n,path:[...n.path,"items"]})})(e,t,i,n),e.element=t.element,e.min=(t,i)=>e.check(nD(t,i)),e.nonempty=t=>e.check(nD(1,t)),e.max=(t,i)=>e.check(nT(t,i)),e.length=(t,i)=>e.check(nN(t,i)),e.unwrap=()=>e.element});function rj(e,t){return new rO({type:"array",element:e,...L(t)})}function rL(e){return r7(Object.keys(e._zod.def.shape))}let rB=m("ZodObject",(e,t)=>{iy.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def;i.type="object",i.properties={};let r=a.shape;for(let e in r)i.properties[e]=nJ(r[e],t,{...n,path:[...n.path,"properties",e]});let o=new Set([...new Set(Object.keys(r))].filter(e=>{let i=a.shape[e]._zod;return"input"===t.io?void 0===i.optin:void 0===i.optout}));o.size>0&&(i.required=Array.from(o)),a.catchall?._zod.def.type==="never"?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=nJ(a.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):"output"===t.io&&(i.additionalProperties=!1)})(e,t,i,n),I(e,"shape",()=>t.shape),e.keyof=()=>r7(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:rC()}),e.loose=()=>e.clone({...e._zod.def,catchall:rC()}),e.strict=()=>e.clone({...e._zod.def,catchall:rT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>(function(e,t){if(!D(t))throw Error("Invalid input to extend: expected a plain object");let i=e._zod.def.checks;if(i&&i.length>0){let i=e._zod.def.shape;for(let e in t)if(void 0!==Object.getOwnPropertyDescriptor(i,e))throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let n=z(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t};return A(this,"shape",i),i}});return j(e,n)})(e,t),e.safeExtend=t=>(function(e,t){if(!D(t))throw Error("Invalid input to safeExtend: expected a plain object");let i=z(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t};return A(this,"shape",i),i}});return j(e,i)})(e,t),e.merge=t=>{let i;return i=z(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t._zod.def.shape};return A(this,"shape",i),i},get catchall(){return t._zod.def.catchall},checks:[]}),j(e,i)},e.pick=t=>(function(e,t){let i=e._zod.def,n=i.checks;if(n&&n.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let a=z(e._zod.def,{get shape(){let e={};for(let n in t){if(!(n in i.shape))throw Error(`Unrecognized key: "${n}"`);t[n]&&(e[n]=i.shape[n])}return A(this,"shape",e),e},checks:[]});return j(e,a)})(e,t),e.omit=t=>(function(e,t){let i=e._zod.def,n=i.checks;if(n&&n.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let a=z(e._zod.def,{get shape(){let n={...e._zod.def.shape};for(let e in t){if(!(e in i.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete n[e]}return A(this,"shape",n),n},checks:[]});return j(e,a)})(e,t),e.partial=(...t)=>(function(e,t,i){let n=t._zod.def.checks;if(n&&n.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let a=z(t._zod.def,{get shape(){let n=t._zod.def.shape,a={...n};if(i)for(let t in i){if(!(t in n))throw Error(`Unrecognized key: "${t}"`);i[t]&&(a[t]=e?new e({type:"optional",innerType:n[t]}):n[t])}else for(let t in n)a[t]=e?new e({type:"optional",innerType:n[t]}):n[t];return A(this,"shape",a),a},checks:[]});return j(t,a)})(oo,e,t[0]),e.required=(...t)=>{var i;let n;return i=t[0],n=z(e._zod.def,{get shape(){let t=e._zod.def.shape,n={...t};if(i)for(let e in i){if(!(e in n))throw Error(`Unrecognized key: "${e}"`);i[e]&&(n[e]=new og({type:"nonoptional",innerType:t[e]}))}else for(let e in t)n[e]=new og({type:"nonoptional",innerType:t[e]});return A(this,"shape",n),n}}),j(e,n)}});function rF(e,t){return new rB({type:"object",shape:e??{},...L(t)})}function rY(e,t){return new rB({type:"object",shape:e,catchall:rT(),...L(t)})}function rR(e,t){return new rB({type:"object",shape:e,catchall:rC(),...L(t)})}let rZ=m("ZodUnion",(e,t)=>{ib.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n1(e,t,i,n),e.options=t.options});function rG(e,t){return new rZ({type:"union",options:e,...L(t)})}let rU=m("ZodXor",(e,t)=>{rZ.init(e,t),iw.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n1(e,t,i,n),e.options=t.options});function rq(e,t){return new rU({type:"union",options:e,inclusive:!1,...L(t)})}let rW=m("ZodDiscriminatedUnion",(e,t)=>{rZ.init(e,t),ix.init(e,t)});function rV(e,t,i){return new rW({type:"union",options:t,discriminator:e,...L(i)})}let rH=m("ZodIntersection",(e,t)=>{ik.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a,r,o,s;return r=nJ((a=e._zod.def).left,t,{...n,path:[...n.path,"allOf",0]}),o=nJ(a.right,t,{...n,path:[...n.path,"allOf",1]}),void(i.allOf=[...(s=e=>"allOf"in e&&1===Object.keys(e).length)(r)?r.allOf:[r],...s(o)?o.allOf:[o]])}});function rJ(e,t){return new rH({type:"intersection",left:e,right:t})}let rK=m("ZodTuple",(e,t)=>{i_.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def;i.type="array";let r="draft-2020-12"===t.target?"prefixItems":"items",o="draft-2020-12"===t.target||"openapi-3.0"===t.target?"items":"additionalItems",s=a.items.map((e,i)=>nJ(e,t,{...n,path:[...n.path,r,i]})),l=a.rest?nJ(a.rest,t,{...n,path:[...n.path,o,..."openapi-3.0"===t.target?[a.items.length]:[]]}):null;"draft-2020-12"===t.target?(i.prefixItems=s,l&&(i.items=l)):"openapi-3.0"===t.target?(i.items={anyOf:s},l&&i.items.anyOf.push(l),i.minItems=s.length,l||(i.maxItems=s.length)):(i.items=s,l&&(i.additionalItems=l));let{minimum:d,maximum:u}=e._zod.bag;"number"==typeof d&&(i.minItems=d),"number"==typeof u&&(i.maxItems=u)})(e,t,i,n),e.rest=t=>e.clone({...e._zod.def,rest:t})});function rX(e,t,i){let n=t instanceof t$,a=n?i:t;return new rK({type:"tuple",items:e,rest:n?t:null,...L(a)})}let rQ=m("ZodRecord",(e,t)=>{iA.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a=e._zod.def;i.type="object";let r=a.keyType,o=r._zod.bag,s=o?.patterns;if("loose"===a.mode&&s&&s.size>0){let e=nJ(a.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});for(let t of(i.patternProperties={},s))i.patternProperties[t.source]=e}else("draft-07"===t.target||"draft-2020-12"===t.target)&&(i.propertyNames=nJ(a.keyType,t,{...n,path:[...n.path,"propertyNames"]})),i.additionalProperties=nJ(a.valueType,t,{...n,path:[...n.path,"additionalProperties"]});let l=r._zod.values;if(l){let e=[...l].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(i.required=e)}})(e,t,i,n),e.keyType=t.keyType,e.valueType=t.valueType});function r0(e,t,i){return new rQ({type:"record",keyType:e,valueType:t,...L(i)})}function r1(e,t,i){let n=j(e);return n._zod.values=void 0,new rQ({type:"record",keyType:n,valueType:t,...L(i)})}function r2(e,t,i){return new rQ({type:"record",keyType:e,valueType:t,mode:"loose",...L(i)})}let r5=m("ZodMap",(e,t)=>{iz.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Map cannot be represented in JSON Schema")})(e),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...t)=>e.check(nC(...t)),e.nonempty=t=>e.check(nC(1,t)),e.max=(...t)=>e.check(nP(...t)),e.size=(...t)=>e.check(n$(...t))});function r4(e,t,i){return new r5({type:"map",keyType:e,valueType:t,...L(i)})}let r3=m("ZodSet",(e,t)=>{iC.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Set cannot be represented in JSON Schema")})(e),e.min=(...t)=>e.check(nC(...t)),e.nonempty=t=>e.check(nC(1,t)),e.max=(...t)=>e.check(nP(...t)),e.size=(...t)=>e.check(n$(...t))});function r6(e,t){return new r3({type:"set",valueType:e,...L(t)})}let r9=m("ZodEnum",(e,t)=>{iT.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;(a=b(e._zod.def.entries)).every(e=>"number"==typeof e)&&(i.type="number"),a.every(e=>"string"==typeof e)&&(i.type="string"),i.enum=a},e.enum=t.entries,e.options=Object.values(t.entries);let i=new Set(Object.keys(t.entries));e.extract=(e,n)=>{let a={};for(let n of e)if(i.has(n))a[n]=t.entries[n];else throw Error(`Key ${n} not found in enum`);return new r9({...t,checks:[],...L(n),entries:a})},e.exclude=(e,n)=>{let a={...t.entries};for(let t of e)if(i.has(t))delete a[t];else throw Error(`Key ${t} not found in enum`);return new r9({...t,checks:[],...L(n),entries:a})}});function r7(e,t){return new r9({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...L(t)})}function r8(e,t){return new r9({type:"enum",entries:e,...L(t)})}let oe=m("ZodLiteral",(e,t)=>{iD.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i)=>{let n=e._zod.def,a=[];for(let e of n.values)if(void 0===e){if("throw"===t.unrepresentable)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if("bigint"==typeof e)if("throw"===t.unrepresentable)throw Error("BigInt literals cannot be represented in JSON Schema");else a.push(Number(e));else a.push(e);if(0===a.length);else if(1===a.length){let e=a[0];i.type=null===e?"null":typeof e,"draft-04"===t.target||"openapi-3.0"===t.target?i.enum=[e]:i.const=e}else a.every(e=>"number"==typeof e)&&(i.type="number"),a.every(e=>"string"==typeof e)&&(i.type="string"),a.every(e=>"boolean"==typeof e)&&(i.type="boolean"),a.every(e=>null===e)&&(i.type="null"),i.enum=a})(e,t,i),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function ot(e,t){return new oe({type:"literal",values:Array.isArray(e)?e:[e],...L(t)})}let oi=m("ZodFile",(e,t)=>{iN.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t)=>{let i={type:"string",format:"binary",contentEncoding:"binary"},{minimum:n,maximum:a,mime:r}=e._zod.bag;void 0!==n&&(i.minLength=n),void 0!==a&&(i.maxLength=a),r?1===r.length?(i.contentMediaType=r[0],Object.assign(t,i)):(Object.assign(t,i),t.anyOf=r.map(e=>({contentMediaType:e}))):Object.assign(t,i)})(e,i),e.min=(t,i)=>e.check(nC(t,i)),e.max=(t,i)=>e.check(nP(t,i)),e.mime=(t,i)=>e.check(nY(Array.isArray(t)?t:[t],i))});function on(e){return new oi({type:"file",...L(e)})}let oa=m("ZodTransform",(e,t)=>{iE.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Transforms cannot be represented in JSON Schema")})(e),e._zod.parse=(i,n)=>{if("backward"===n.direction)throw new h(e.constructor.name);i.addIssue=n=>{"string"==typeof n?i.issues.push(V(n,i.value,t)):(n.fatal&&(n.continue=!1),n.code??(n.code="custom"),n.input??(n.input=i.value),n.inst??(n.inst=e),i.issues.push(V(n)))};let a=t.transform(i.value,i);return a instanceof Promise?a.then(e=>(i.value=e,i)):(i.value=a,i)}});function or(e){return new oa({type:"transform",transform:e})}let oo=m("ZodOptional",(e,t)=>{iO.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n2(e,t,i,n),e.unwrap=()=>e._zod.def.innerType});function os(e){return new oo({type:"optional",innerType:e})}let ol=m("ZodExactOptional",(e,t)=>{ij.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>n2(e,t,i,n),e.unwrap=()=>e._zod.def.innerType});function od(e){return new ol({type:"optional",innerType:e})}let ou=m("ZodNullable",(e,t)=>{iL.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a,r,o;return r=nJ((a=e._zod.def).innerType,t,n),o=t.seen.get(e),void("openapi-3.0"===t.target?(o.ref=a.innerType,i.nullable=!0):i.anyOf=[r,{type:"null"}])},e.unwrap=()=>e._zod.def.innerType});function oc(e){return new ou({type:"nullable",innerType:e})}function op(e){return os(oc(e))}let om=m("ZodDefault",(e,t)=>{iB.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType,i.default=JSON.parse(JSON.stringify(a.defaultValue))},e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function of(e,t){return new om({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():N(t)}})}let oh=m("ZodPrefault",(e,t)=>{iY.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType,"input"===t.io&&(i._prefault=JSON.parse(JSON.stringify(a.defaultValue)))},e.unwrap=()=>e._zod.def.innerType});function oy(e,t){return new oh({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():N(t)}})}let og=m("ZodNonOptional",(e,t)=>{iR.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType},e.unwrap=()=>e._zod.def.innerType});function ob(e,t){return new og({type:"nonoptional",innerType:e,...L(t)})}let ov=m("ZodSuccess",(e,t)=>{iG.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>{t.type="boolean"},e.unwrap=()=>e._zod.def.innerType});function ow(e){return new ov({type:"success",innerType:e})}let ox=m("ZodCatch",(e,t)=>{iU.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t,i,n)=>{let a,r=e._zod.def;nJ(r.innerType,t,n),t.seen.get(e).ref=r.innerType;try{a=r.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}i.default=a})(e,t,i,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ok(e,t){return new ox({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})}let oS=m("ZodNaN",(e,t)=>{iq.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("NaN cannot be represented in JSON Schema")})(e)});function o_(e){return new oS({type:"nan",...L(e)})}let oI=m("ZodPipe",(e,t)=>{iW.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a,r;return a=e._zod.def,void(nJ(r="input"===t.io?"transform"===a.in._zod.def.type?a.out:a.in:a.out,t,n),t.seen.get(e).ref=r)},e.in=t.in,e.out=t.out});function oA(e,t){return new oI({type:"pipe",in:e,out:t})}let oz=m("ZodCodec",(e,t)=>{oI.init(e,t),iH.init(e,t)});function oP(e,t,i){return new oz({type:"pipe",in:e,out:t,transform:i.decode,reverseTransform:i.encode})}let oC=m("ZodReadonly",(e,t)=>{iX.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType,i.readOnly=!0},e.unwrap=()=>e._zod.def.innerType});function o$(e){return new oC({type:"readonly",innerType:e})}let oT=m("ZodTemplateLiteral",(e,t)=>{i0.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>((e,t)=>{let i=e._zod.pattern;if(!i)throw Error("Pattern not found in template literal");t.type="string",t.pattern=i.source})(e,i)});function oD(e,t){return new oT({type:"template_literal",parts:e,...L(t)})}let oN=m("ZodLazy",(e,t)=>{i5.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ(a=e._zod.innerType,t,n),t.seen.get(e).ref=a},e.unwrap=()=>e._zod.def.getter()});function oE(e){return new oN({type:"lazy",getter:e})}let oM=m("ZodPromise",(e,t)=>{i2.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(t,i,n)=>{let a;nJ((a=e._zod.def).innerType,t,n),t.seen.get(e).ref=a.innerType},e.unwrap=()=>e._zod.def.innerType});function oO(e){return new oM({type:"promise",innerType:e})}let oj=m("ZodFunction",(e,t)=>{i1.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Function types cannot be represented in JSON Schema")})(e)});function oL(e){return new oj({type:"function",input:Array.isArray(e?.input)?rX(e?.input):e?.input??rj(rC()),output:e?.output??rC()})}let oB=m("ZodCustom",(e,t)=>{i4.init(e,t),ah.init(e,t),e._zod.processJSONSchema=(e,t,i)=>(e=>{if("throw"===e.unrepresentable)throw Error("Custom types cannot be represented in JSON Schema")})(e)});function oF(e){let t=new ta({check:"custom"});return t._zod.check=e,t}function oY(e,t){var i;let n;return i=e??(()=>!0),(n=L(t)).abort??(n.abort=!0),new oB({type:"custom",check:"custom",fn:i,...n})}function oR(e,t={}){return new oB({type:"custom",check:"custom",fn:e,...L(t)})}function oZ(e){var t;let i,n;return t=t=>(t.addIssue=e=>{"string"==typeof e?t.issues.push(V(e,t.value,i._zod.def)):(e.fatal&&(e.continue=!1),e.code??(e.code="custom"),e.input??(e.input=t.value),e.inst??(e.inst=i),e.continue??(e.continue=!i._zod.def.abort),t.issues.push(V(e)))},e(t.value,t)),(n=new ta({check:"custom",...L(void 0)}))._zod.check=t,i=n}let oG=function(e){let t=new ta({check:"describe"});return t._zod.onattach=[t=>{let i=i6.get(t)??{};i6.add(t,{...i,description:e})}],t._zod.check=()=>{},t},oU=function(e){let t=new ta({check:"meta"});return t._zod.onattach=[t=>{let i=i6.get(t)??{};i6.add(t,{...i,...e})}],t._zod.check=()=>{},t};function oq(e,t={}){let i=new oB({type:"custom",check:"custom",fn:t=>t instanceof e,abort:!0,...L(t)});return i._zod.bag.Class=e,i._zod.check=t=>{t.value instanceof e||t.issues.push({code:"invalid_type",expected:e.name,input:t.value,inst:i,path:[...i._zod.def.path??[]]})},i}let oW=(...e)=>(function(e,t){let i=L(t),n=i.truthy??["true","1","yes","on","y","enabled"],a=i.falsy??["false","0","no","off","n","disabled"];"sensitive"!==i.case&&(n=n.map(e=>"string"==typeof e?e.toLowerCase():e),a=a.map(e=>"string"==typeof e?e.toLowerCase():e));let r=new Set(n),o=new Set(a),s=e.Codec??iH,l=e.Boolean??t9,d=new s({type:"pipe",in:new(e.String??tT)({type:"string",error:i.error}),out:new l({type:"boolean",error:i.error}),transform:(e,t)=>{let n=e;return"sensitive"!==i.case&&(n=n.toLowerCase()),!!r.has(n)||!o.has(n)&&(t.issues.push({code:"invalid_value",expected:"stringbool",values:[...r,...o],input:t.value,inst:d,continue:!1}),{})},reverseTransform:(e,t)=>!0===e?n[0]||"true":a[0]||"false",error:i.error});return d})({Codec:oz,Boolean:rm,String:ag},...e);function oV(e){let t=oE(()=>rG([ab(e),ro(),rf(),rI(),rj(t),r0(ab(),t)]));return t}function oH(e,t){return oA(or(e),t)}function oJ(e){return new ag({type:"string",coerce:!0,...L(e)})}function oK(e){return new rr({type:"number",coerce:!0,checks:[],...L(e)})}function oX(e){return new rm({type:"boolean",coerce:!0,...L(e)})}function oQ(e){return new rh({type:"bigint",coerce:!0,...L(e)})}function o0(e){return new rE({type:"date",coerce:!0,...L(e)})}s||(s={}),g({localeError:(n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}},a={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},r={nan:"NaN"},e=>{switch(e.code){case"invalid_type":{let t=r[e.expected]??e.expected,i=function(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":if(null===e)return"null";if(Array.isArray(e))return"array";if(e&&Object.getPrototypeOf(e)!==Object.prototype&&"constructor"in e&&e.constructor)return e.constructor.name}return t}(e.input),n=r[i]??i;return`Invalid input: expected ${t}, received ${n}`}case"invalid_value":if(1===e.values.length)return`Invalid input: expected ${B(e.values[0])}`;return`Invalid option: expected one of ${v(e.values,"|")}`;case"too_big":{let t=e.inclusive?"<=":"<",i=n[e.origin]??null;if(i)return`Too big: expected ${e.origin??"value"} to have ${t}${e.maximum.toString()} ${i.unit??"elements"}`;return`Too big: expected ${e.origin??"value"} to be ${t}${e.maximum.toString()}`}case"too_small":{let t=e.inclusive?">=":">",i=n[e.origin]??null;if(i)return`Too small: expected ${e.origin} to have ${t}${e.minimum.toString()} ${i.unit}`;return`Too small: expected ${e.origin} to be ${t}${e.minimum.toString()}`}case"invalid_format":if("starts_with"===e.format)return`Invalid string: must start with "${e.prefix}"`;if("ends_with"===e.format)return`Invalid string: must end with "${e.suffix}"`;if("includes"===e.format)return`Invalid string: must include "${e.includes}"`;if("regex"===e.format)return`Invalid string: must match pattern ${e.pattern}`;return`Invalid ${a[e.format]??e.format}`;case"not_multiple_of":return`Invalid number: must be a multiple of ${e.divisor}`;case"unrecognized_keys":return`Unrecognized key${e.keys.length>1?"s":""}: ${v(e.keys,", ")}`;case"invalid_key":return`Invalid key in ${e.origin}`;case"invalid_union":default:return"Invalid input";case"invalid_element":return`Invalid value in ${e.origin}`}})})}};