pigeongov 0.3.2 → 0.3.3

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 (58) hide show
  1. package/dist/153.js +1 -1
  2. package/dist/159.js +1 -1
  3. package/dist/190.js +1 -1
  4. package/dist/229.js +1 -1
  5. package/dist/262.js +3 -3
  6. package/dist/328.js +1 -1
  7. package/dist/48.js +1 -1
  8. package/dist/50.js +1 -1
  9. package/dist/520.js +1 -1
  10. package/dist/671.js +1 -1
  11. package/dist/691.js +1 -1
  12. package/dist/720.js +1 -1
  13. package/dist/766.js +1 -1
  14. package/dist/785.js +1 -1
  15. package/dist/809.js +1 -1
  16. package/dist/952.js +1 -1
  17. package/dist/http.js +1 -1
  18. package/dist/mcp/153.js +1 -1
  19. package/dist/mcp/159.js +1 -1
  20. package/dist/mcp/190.js +1 -1
  21. package/dist/mcp/229.js +1 -1
  22. package/dist/mcp/262.js +3 -3
  23. package/dist/mcp/328.js +1 -1
  24. package/dist/mcp/48.js +1 -1
  25. package/dist/mcp/50.js +1 -1
  26. package/dist/mcp/520.js +1 -1
  27. package/dist/mcp/671.js +1 -1
  28. package/dist/mcp/691.js +1 -1
  29. package/dist/mcp/720.js +1 -1
  30. package/dist/mcp/766.js +1 -1
  31. package/dist/mcp/785.js +1 -1
  32. package/dist/mcp/809.js +1 -1
  33. package/dist/mcp/952.js +1 -1
  34. package/dist/mcp/http.js +2 -2
  35. package/dist/mcp/stdio.js +1 -1
  36. package/dist/src/advisory/cliff/calculator.js +7 -7
  37. package/dist/src/advisory/cliff/calculator.js.map +1 -1
  38. package/dist/src/advisory/cliff/programs.d.ts +4 -3
  39. package/dist/src/advisory/cliff/programs.js +16 -2
  40. package/dist/src/advisory/cliff/programs.js.map +1 -1
  41. package/dist/src/cli/commands/cliff.js +12 -5
  42. package/dist/src/cli/commands/cliff.js.map +1 -1
  43. package/dist/src/cli/commands/cost.js +8 -9
  44. package/dist/src/cli/commands/cost.js.map +1 -1
  45. package/dist/src/cli/commands/fill.js +4 -1
  46. package/dist/src/cli/commands/fill.js.map +1 -1
  47. package/dist/src/cli/commands/scaffold.js +12 -1
  48. package/dist/src/cli/commands/scaffold.js.map +1 -1
  49. package/dist/src/cli/commands/screen.js +8 -3
  50. package/dist/src/cli/commands/screen.js.map +1 -1
  51. package/dist/src/cli/commands/start.js +15 -2
  52. package/dist/src/cli/commands/start.js.map +1 -1
  53. package/dist/src/cli/index.js +1 -1
  54. package/dist/src/workflows/domains/legal.js +11 -7
  55. package/dist/src/workflows/domains/legal.js.map +1 -1
  56. package/dist/xmcp.config.js +4 -0
  57. package/dist/xmcp.config.js.map +1 -1
  58. package/package.json +1 -1
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=new Date(e.incidentDate),r=Math.floor((new Date().getTime()-a.getTime())/864e5),o=r/365.25,s=o>2,d=[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)],h=[];n&&h.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).`)),s&&h.push(u("incidentDate","warning",`Incident occurred ~${Math.round(10*o)/10} years ago. Many states have 2-3 year statutes of limitations for small claims. Verify ${e.state} statute.`));let y=[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:d,answers:e,derived:{estimatedFilingFee:i,typicalDollarLimit:1e4,exceedsLimit:n,daysSinceIncident:r,yearsElapsed:Math.round(10*o)/10,possibleStatuteOfLimitationsConcern:s},validation:{checks:y,flaggedFields:h},review:m("Small claims case",n?"claim may exceed small claims limit":"within typical limits",d,h,[`${e.plaintiffName} v. ${e.defendantName}. State: ${e.state}.`,`Claim type: ${e.claimType}. Amount: ${l(e.claimAmount)}.`,`Incident date: ${e.incidentDate}. ~${Math.round(10*o)/10} years ago.`,`Estimated filing fee: ${l(i)}.`]),outputArtifacts:f("legal-small-claims",d),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=new Date(e.sentenceCompletionDate),n=(new Date().getTime()-i.getTime())/315576e5,a=n>=t.years,r=e.subsequentOffenses>0,o=[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)],s=[];"felony"===e.offenseType&&s.push(u("offenseType","review","Felony expungement has stricter requirements in most states. Some felonies are ineligible for expungement.")),r&&s.push(u("subsequentOffenses","warning",`${e.subsequentOffenses} subsequent offense(s) on record — may disqualify expungement in many jurisdictions.`)),a||s.push(u("sentenceCompletionDate","warning",`Waiting period may not be met. ~${Math.round(10*n)/10} years since completion; estimated requirement: ${t.years} years.`));let l=[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",a,"warning",`Estimated waiting period: ${t.label}.`),c("subsequent-offenses","No subsequent offenses",!r,"warning","Subsequent offenses may disqualify expungement.")],d=a&&e.hasCompletedProbation&&!r?"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:o,answers:e,derived:{waitingPeriodYears:t.years,waitingPeriodLabel:t.label,yearsSinceCompletion:Math.round(10*n)/10,waitingPeriodMet:a,hasSubsequentOffenses:r,eligibilityAssessment:d},validation:{checks:l,flaggedFields:s},review:m("Expungement eligibility",d,o,s,[`Applicant: ${e.applicantName}. State: ${e.state}.`,`Offense type: ${e.offenseType}. Date: ${e.offenseDate}.`,`Sentence completed: ${e.sentenceCompletionDate}. Years since: ~${Math.round(10*n)/10}.`,`Estimated waiting period: ${t.label}.`,`Subsequent offenses: ${e.subsequentOffenses}.`,`Assessment: ${d}.`]),outputArtifacts:f("legal-expungement",o),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(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(`
2
2
  if (${i}.issues.length) {
3
3
  if (${o} in input) {
4
4
  payload.issues = payload.issues.concat(${i}.issues.map(iss => ({