mcp-zenskar 2.2.1 → 2.2.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.
@@ -3453,6 +3453,40 @@
3453
3453
  "name": "pricing",
3454
3454
  "description": "Inline pricing configuration object. Either this or pricing_id must be provided.",
3455
3455
  "type": "object",
3456
+ "schema": {
3457
+ "type": "object",
3458
+ "additionalProperties": true,
3459
+ "properties": {
3460
+ "payment_terms": {
3461
+ "type": "array",
3462
+ "items": {
3463
+ "type": "object",
3464
+ "additionalProperties": true,
3465
+ "required": ["payment_term_type", "due_days"],
3466
+ "properties": {
3467
+ "payment_term_type": {
3468
+ "type": "string",
3469
+ "enum": ["on_approval", "on_creation"]
3470
+ },
3471
+ "due_days": {
3472
+ "type": "integer",
3473
+ "minimum": 1
3474
+ },
3475
+ "label": {
3476
+ "type": "string"
3477
+ },
3478
+ "payment_term_mode": {
3479
+ "type": "string",
3480
+ "enum": ["relative", "absolute"]
3481
+ },
3482
+ "last_day_of_month": {
3483
+ "type": "boolean"
3484
+ }
3485
+ }
3486
+ }
3487
+ }
3488
+ }
3489
+ },
3456
3490
  "required": false,
3457
3491
  "position": "body"
3458
3492
  },
@@ -3835,12 +3869,7 @@
3835
3869
  "type": "string",
3836
3870
  "required": false,
3837
3871
  "position": "body",
3838
- "enum": [
3839
- "bank_transfer",
3840
- "check",
3841
- "cash",
3842
- "card"
3843
- ]
3872
+ "enum": ["bank_transfer", "check", "cash", "card"]
3844
3873
  },
3845
3874
  {
3846
3875
  "name": "type",
@@ -3849,10 +3878,7 @@
3849
3878
  "required": false,
3850
3879
  "position": "body",
3851
3880
  "default": "payment",
3852
- "enum": [
3853
- "payment",
3854
- "tax_withheld"
3855
- ]
3881
+ "enum": ["payment", "tax_withheld"]
3856
3882
  },
3857
3883
  {
3858
3884
  "name": "status",
package/dist/server.mjs CHANGED
@@ -75,25 +75,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
75
75
  `);if(e===-1)return null;let t=this._buffer.toString(`utf8`,0,e).replace(/\r$/,``);return this._buffer=this._buffer.subarray(e+1),Tm(t)}clear(){this._buffer=void 0}};function Tm(e){return hl.parse(JSON.parse(e))}function Em(e){return JSON.stringify(e)+`
76
76
  `}var Dm=class{constructor(e=c.stdin,t=c.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new wm,this._started=!1,this._ondata=e=>{this._readBuffer.append(e),this.processReadBuffer()},this._onerror=e=>{this.onerror?.(e)}}async start(){if(this._started)throw Error(`StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.`);this._started=!0,this._stdin.on(`data`,this._ondata),this._stdin.on(`error`,this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off(`data`,this._ondata),this._stdin.off(`error`,this._onerror),this._stdin.listenerCount(`data`)===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(t=>{let n=Em(e);this._stdout.write(n)?t():this._stdout.once(`drain`,t)})}};const Om=[];for(let e=0;e<256;++e)Om.push((e+256).toString(16).slice(1));function km(e,t=0){return(Om[e[t+0]]+Om[e[t+1]]+Om[e[t+2]]+Om[e[t+3]]+`-`+Om[e[t+4]]+Om[e[t+5]]+`-`+Om[e[t+6]]+Om[e[t+7]]+`-`+Om[e[t+8]]+Om[e[t+9]]+`-`+Om[e[t+10]]+Om[e[t+11]]+Om[e[t+12]]+Om[e[t+13]]+Om[e[t+14]]+Om[e[t+15]]).toLowerCase()}const Am=new Uint8Array(16);function jm(){return crypto.getRandomValues(Am)}function Mm(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():Nm(e,t,n)}function Nm(e,t,n){e||={};let r=e.random??e.rng?.()??jm();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return km(r)}var Pm=class{constructor(){this.maxResponseLength=2e6}processResponse(e,t){try{let t=typeof e==`string`?e:JSON.stringify(e,null,2);return t.length>this.maxResponseLength&&(t=t.substring(0,this.maxResponseLength)+`
77
77
 
78
- [Response truncated due to length]`),t}catch(e){return console.error(`Response processing error:`,e),`Error processing response`}}};function Fm(e){return!e||typeof e!=`string`?``:e.replace(/[_-]+/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase()).trim()}const Im=new Set([`getInvoiceSummary`,`getCustomerBalance`,`getPaymentStatus`]),Lm={listCustomers:{shape:`customer-table`,noun:`customer`,toPayload:Bm,threshold:0},listInvoices:{shape:`invoice-table`,noun:`invoice`,toPayload:Vm,threshold:0},getInvoiceLineItems:{shape:`invoice-line-items`,noun:`line item`,toPayload:Um,threshold:0},listAllPayments:{shape:`payment-table`,noun:`payment`,toPayload:Jm,threshold:0},listCreditNotes:{shape:`credit-note-table`,noun:`credit note`,toPayload:Xm,threshold:0},listContracts:{shape:`contract-table`,noun:`contract`,toPayload:Qm,threshold:0},getCustomerById:{shape:`customer-detail`,noun:`customer`,toPayload:eh,threshold:0},getInvoiceById:{shape:`invoice-detail`,noun:`invoice`,toPayload:th,threshold:0},getContractById:{shape:`contract-detail`,noun:`contract`,toPayload:nh,threshold:0},getCreditNoteById:{shape:`credit-note-detail`,noun:`credit note`,toPayload:sh,threshold:0},listProducts:{shape:`product-table`,noun:`product`,toPayload:ch,threshold:0},listPlans:{shape:`plan-table`,noun:`plan`,toPayload:uh,threshold:0},listJournalEntries:{shape:`journal-table`,noun:`journal entry`,toPayload:fh,threshold:0},listJobs:{shape:`job-table`,noun:`job`,toPayload:mh,threshold:0},listContacts:{shape:`contact-table`,noun:`contact`,toPayload:gh,threshold:0},listRawMetrics:{shape:`raw-metric-table`,noun:`raw metric`,toPayload:vh,threshold:0},listAggregates:{shape:`aggregate-table`,noun:`aggregate`,toPayload:bh,threshold:0},listCustomerAddresses:{shape:`address-list`,noun:`address`,toPayload:Sh,threshold:0},listPaymentMethods:{shape:`payment-method-list`,noun:`payment method`,toPayload:wh,threshold:0},listBusinessEntities:{shape:`entity-table`,noun:`business entity`,toPayload:Eh,threshold:0},listEntitlements:{shape:`entitlement-table`,noun:`entitlement`,toPayload:Oh,threshold:0},getInvoicePreviewHtml:{shape:`invoice-preview`,noun:`invoice preview`,toPayload:Ph,threshold:0}},Rm=Object.freeze([`app`]);function zm(e){return`ui://zenskar/app.html`}function Bm(e,t){let n=Q(e),r=Ah(n,[`customers`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search_name_external_id||t.search)||void 0;return{customers:r.map(qm),total:i,cursor:{next:o,prev:s},scope:c}}function Q(e){return e&&typeof e==`object`&&e.api_response&&typeof e.api_response==`object`?e.api_response:e||{}}function Vm(e,t){let n=Q(e),r=Ah(n,[`invoices`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??n.next??null,s=a.prev??n.previous??null;return{invoices:r.map(Hm),total:i,cursor:{next:o,prev:s},scope:t&&(t.customer__customer_name__ilike||t.invoice_number__like||t.status)||void 0,default_currency:`USD`}}function Hm(e){if(!e||typeof e!=`object`)return{id:``,invoice_number:null,customer_id:null,customer_name:null,status:null,invoice_total:null,amount_due:null,due_date:null,invoice_period_begin:null,invoice_period_end:null,external_id:null,created_at:null,payment_url:null};let t=e.invoice_period||{},n=e.customer&&typeof e.customer==`object`?e.customer:null;return{id:String(e.id||e.invoice_id||``),invoice_number:e.invoice_number??null,customer_id:n?.id??e.customer_id??null,customer_name:n?.customer_name??n?.name??null,status:e.status??null,invoice_total:Nh(e.net_invoice_total??e.invoice_total),amount_due:Nh(e.amount_due),due_date:e.due_date??e.promise_due_date??null,invoice_period_begin:t.begin_date??e.period_begin_date??null,invoice_period_end:t.end_date_exclusive??e.period_end_date??null,external_id:e.external_id??null,created_at:e.created_at??null,payment_url:e.payment_url??null}}function Um(e,t){let n=Q(e),r=Array.isArray(n.lines)?n.lines:Array.isArray(n)?n:[],i=Nh(n.total),a=Wm(r)||`USD`;return{invoice_id:t&&t.invoiceId?String(t.invoiceId):void 0,total:i,currency:a,lines:r.map(Gm)}}function Wm(e){for(let t of e){if(t&&t.subtotal&&t.subtotal.unit)return t.subtotal.unit;if(t&&t.features&&t.features[0]&&t.features[0].currency)return t.features[0].currency}return null}function Gm(e){return!e||typeof e!=`object`?{name:``,description:null,pricing_model:null,subtotal:{value:null,unit:null},quantity:{value:null,unit:null},price:null,service_start_date:null,service_end_date:null,is_billed:null}:{name:e.name??e.description??``,description:e.description??null,pricing_model:e.pricing_model??null,subtotal:Km(e.subtotal),quantity:Km(e.quantity),price:e.price?Km(e.price):null,service_start_date:e.service_start_date??e.billing_period_start??null,service_end_date:e.service_end_date??e.billing_period_end??null,is_billed:typeof e.is_billed==`boolean`?e.is_billed:null,line_item_type:e.line_item_type??null,is_adjustment:typeof e.is_adjustment==`boolean`?e.is_adjustment:null,adjustment_type:e.adjustment_type??null}}function Km(e){return e?{value:Nh(e.value),unit:e.unit??null,display:e.display??null}:{value:null,unit:null,display:null}}function qm(e){return!e||typeof e!=`object`?{id:``,name:null,external_id:null,email:null}:{id:String(e.id||e.customer_id||``),name:e.customer_name??e.name??null,external_id:e.external_id??null,email:e.email??e.primary_email??null,created_at:e.created_at??e.created??null}}function Jm(e,t){let n=Q(e),r=Ah(n,[`payments`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search||t.customer_id||t.type||t.payment_method)||void 0;return{payments:r.map(Ym),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0,default_currency:`USD`}}function Ym(e){if(!e||typeof e!=`object`)return{id:``,external_id:null,customer_id:null,customer_name:null,invoice_id:null,invoice_name:null,amount:null,currency:null,payment_method:null,type:null,status:null,description:null,payment_date:null,created_at:null};let t=((Array.isArray(e.payment_parts)?e.payment_parts:[]).find(e=>e&&e.invoice_id)||{}).invoice_id||e.invoice_id||null,n=e.customer&&typeof e.customer==`object`?e.customer:null,r=e.invoice&&typeof e.invoice==`object`?e.invoice:null;return{id:String(e.id||e.payment_id||``),external_id:e.external_id??null,customer_id:n?.id??e.customer_id??null,customer_name:n?.customer_name??n?.name??null,invoice_id:r?.id??t,invoice_name:r?.name??r?.invoice_number??null,amount:Nh(e.amount??e.value),currency:e.currency_code??e.currency??null,payment_method:e.payment_method??null,type:e.type??null,status:e.status??null,description:e.description??e.notes??null,payment_date:e.payment_date??e.received_at??e.processed_at??null,created_at:e.created_at??null}}function Xm(e,t){let n=Q(e),r=Ah(n,[`credit_notes`,`creditNotes`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.customer_id||t.invoice_id||t.status)||void 0;return{credit_notes:r.map(Zm),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0,default_currency:`USD`}}function Zm(e){if(!e||typeof e!=`object`)return{id:``,credit_note_number:null,customer_id:null,customer_name:null,invoice_id:null,invoice_name:null,status:null,amount:null,currency:null,repayment_method:null,created_at:null};let t=e.customer&&typeof e.customer==`object`?e.customer:null,n=e.invoice&&typeof e.invoice==`object`?e.invoice:null;return{id:String(e.id||e.credit_note_id||``),credit_note_number:e.credit_note_number??null,customer_id:t?.id??e.customer_id??null,customer_name:t?.customer_name??t?.name??null,invoice_id:n?.id??e.invoice_id??null,invoice_name:n?.name??n?.invoice_number??null,status:e.status??null,amount:Nh(e.amount??e.total??e.value),currency:e.currency_code??e.currency??null,repayment_method:e.repayment_method??null,created_at:e.created_at??null}}function Qm(e,t){let n=Q(e),r=Ah(n,[`contracts`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.customer_id||t.name__ilike||t.status)||void 0;return{contracts:r.map($m),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0}}function $m(e){if(!e||typeof e!=`object`)return{id:``,customer_id:null,customer_name:null,name:null,status:null,currency:null,start_date:null,end_date:null,created_at:null};let t=e.customer&&typeof e.customer==`object`?e.customer:null;return{id:String(e.id||e.contract_id||``),customer_id:t?.id??e.customer_id??null,customer_name:t?.customer_name??t?.name??null,name:e.name??e.contract_name??null,status:e.status??e.state??null,currency:e.currency??e.currency_code??null,start_date:e.start_date??null,end_date:e.end_date??null,created_at:e.created_at??null}}function eh(e){let t=Q(e),n=t.customer??t,r=qm(n),i=n.business_entity,a=n.default_payment_method,o=Array.isArray(n.contacts)?n.contacts:[],s=Array.isArray(n.tax_info)?n.tax_info:[];return{customer:{...r,phone:n.phone_number??n.phone??n.primary_phone??null,business_entity_id:n.business_entity_id??null,business_entity_name:(i&&typeof i==`object`?i.name:null)??null,address:n.address??null,ship_to_address:n.ship_to_address??null,communications_enabled:typeof n.communications_enabled==`boolean`?n.communications_enabled:null,auto_charge_enabled:typeof n.auto_charge_enabled==`boolean`?n.auto_charge_enabled:null,custom_data:n.custom_data??null,tax_info:s.length?s.map(e=>({country_code:e.country_code??null,tax_code:e.tax_code??null,tax_id:e.tax_id??null})):null,contacts:o.length?o.map(e=>({name:[e.first_name??``,e.last_name??``].filter(Boolean).join(` `)||null,email:e.email??null,send_invoice:typeof e.send_invoice==`boolean`?e.send_invoice:null,send_contract:typeof e.send_contract==`boolean`?e.send_contract:null})):null,default_payment_method:a&&typeof a==`object`?{type:a.type??null,brand:(a.details&&a.details.brand)??a.brand??null,last4:(a.details&&a.details.last4)??a.last4??null,connector_name:a.connector_name??null}:null,updated_at:n.updated_at??null}}}function th(e){let t=Q(e),n=t.invoice??t,r=Hm(n),i=n.customer,a=n.contract;return{invoice:{...r,paid_amount:Nh(n.paid_amount??(r.invoice_total!=null&&r.amount_due!=null?r.invoice_total-r.amount_due:null)),currency:n.currency_code??n.currency??null,business_entity_id:n.business_entity_id??null,notes:n.notes??null,custom_data:n.custom_data??n.custom_attributes??null,customer_name:(i&&typeof i==`object`?i.name:null)??null,contract_id:n.contract_id??(a&&typeof a==`object`?a.id:null)??null,contract_name:(a&&typeof a==`object`?a.name:null)??null,invoice_pdf:n.invoice_pdf??null,approved_at:n.approved_at??null,paid_at:n.paid_at??null,sent_at:n.sent_at??null}}}function nh(e){let t=Q(e),n=t.contract??t,r=$m(n),i=Array.isArray(n.phases)?n.phases:[],a=n.customer,o=Array.isArray(n.tags)?n.tags:[];return{contract:{...r,description:n.description??null,custom_attributes:n.custom_attributes??null,renewal_policy:n.renewal_policy??null,anchor_date:n.anchor_date??null,plan_id:n.plan_id??null,customer_name:(a&&typeof a==`object`?a.customer_name??a.name:null)??null,contract_type:n.contract_type??null,tags:o.length?o:null,contract_link:n.contract_link??null},phases:i.map(rh)}}function rh(e){if(!e||typeof e!=`object`)return{id:null,name:null,start_date:null,end_date:null,pricing_summary:null,product_count:null,pricings:[]};let t=Array.isArray(e.products)?e.products:[],n=Array.isArray(e.pricings)?e.pricings:t;return{id:e.id??null,name:e.name??e.phase_name??null,start_date:e.start_date??null,end_date:e.end_date??null,pricing_summary:e.pricing_summary??null,product_count:n.length||Nh(e.product_count),pricings:n.map(ah)}}function ih(e){return!e||!Array.isArray(e.prices)||!Array.isArray(e.dimensions)||e.prices.length===0?null:e.prices.map((t,n)=>({dimension:e.dimensions[n]?.name??null,display_alias:Array.isArray(e.display_alias)?e.display_alias[n]??null:null,price:typeof t==`number`?t:null}))}function ah(e){if(!e||typeof e!=`object`)return{product_name:null,pricing_model:null};let t=e.pricing??{},n=e.pricing_data??t.pricing_data??e,r=t.quantity??e.quantity??{},i=t.billing_period??e.billing_period??{},a=e.product??{};return{id:e.id??null,product_name:a.name??e.name??e.product_name??null,product_type:a.type??null,description:e.description??t.description??a.description??null,pricing_model:n.pricing_type??e.pricing_model??null,currency:n.currency??null,unit_amount:n.unit_amount??null,tiers:Array.isArray(n.tiers)?n.tiers:null,package_size:n.package_size??null,matrix:ih(n),quantity_type:r.type??null,quantity_value:r.quantity??null,quantity_unit:r.unit??null,meter_name:r.aggregate?.name??r.aggregate_name??null,billing_cadence:i.cadence??null,billing_timing:e.billing_timing??t.billing_timing??null,is_recurring:typeof t.is_recurring==`boolean`?t.is_recurring:typeof e.is_recurring==`boolean`?e.is_recurring:null,start_date:e.start_date??null,end_date:e.end_date??null,features:oh(t)}}function oh(e){let t=[],n=t=>Array.isArray(e[t])?e[t]:[];for(let e of n(`discounts`)){let n=e.type===`percentage`;t.push({type:`Discount`,label:e.label??null,summary:`${e.unit_amount??`?`}${n?`%`:` (Fixed)`}`})}for(let e of n(`taxes`)){let n=e.type===`avalara`;t.push({type:`Tax`,label:e.label??null,summary:n?`Avalara - ${e.code??`?`}`:`${e.unit_amount??`?`}%`})}for(let e of n(`free_units`))t.push({type:`Free Units`,label:e.label??null,summary:`${e.unit_amount??`?`} units`});for(let e of n(`commitments`)){let n=e.type?Fm(e.type):`Commitment`;t.push({type:`Commitment`,label:e.label??null,summary:`${n}: ${e.unit_amount??`?`}`})}for(let e of n(`grants`)){let n=e.trigger_event?Fm(e.trigger_event):``,r=e.expires_at?`, expires ${Fm(e.expires_at)}`:``,i=e.entitlement?.name?` → ${e.entitlement.name}`:``;t.push({type:`Grant`,label:e.label??null,summary:`${e.unit_amount??`?`} units on ${n}${r}${i}`})}for(let e of n(`consumptions`)){let n=e.entitlement?.name??`Entitlement`,r=e.trigger_event?Fm(e.trigger_event):``;t.push({type:`Consumption`,label:e.label??null,summary:`${n} (${Fm(e.type??``)}) on ${r}`})}for(let e of n(`service_fees`)){let n=e.type===`percentage`;t.push({type:`Service Fee`,label:e.label??null,summary:`${e.unit_amount??`?`}${n?`%`:` (Fixed)`}`})}for(let e of n(`payment_terms`)){let n=e.due_days==null?``:`Due in ${e.due_days} days`;t.push({type:`Payment Terms`,label:e.label??null,summary:n||`Custom`})}return t.length>0?t:null}function sh(e){let t=Q(e),n=t.credit_note??t.creditNote??t,r=Zm(n),i=n.customer,a=n.invoice;return{credit_note:{...r,line_items_url:n.line_items_url??null,credits_returned:Nh(n.credits_returned),custom_data:n.custom_data??null,customer_name:(i&&typeof i==`object`?i.name:null)??null,invoice_number:(a&&typeof a==`object`?a.invoice_number??a.name:null)??null}}}function ch(e,t){let n=Q(e),r=Ah(n,[`products`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.name__ilike||void 0;return{products:r.map(lh),total:i,cursor:{next:o,prev:s},scope:c}}function lh(e){return!e||typeof e!=`object`?{id:``,name:null,sku:null,description:null,product_type:null,is_active:null,created_at:null}:{id:String(e.id||e.product_id||``),name:e.name??e.product_name??null,sku:e.sku??null,description:e.description??null,product_type:e.product_type??e.type??null,is_active:typeof e.is_active==`boolean`?e.is_active:null,created_at:e.created_at??null}}function uh(e,t){let n=Q(e),r=Ah(n,[`plans`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.name__ilike||t.status)||void 0;return{plans:r.map(dh),total:i,cursor:{next:o,prev:s},scope:c}}function dh(e){return!e||typeof e!=`object`?{id:``,name:null,description:null,status:null,plan_version:null,created_at:null}:{id:String(e.id||e.plan_id||``),name:e.name??e.plan_name??null,description:e.description??null,status:e.status??e.state??null,plan_version:Nh(e.plan_version),created_at:e.created_at??null}}function fh(e,t){let n=Q(e),r=Ah(n,[`entries`,`journal_entries`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.search_query||void 0;return{entries:r.map(ph),total:i,cursor:{next:o,prev:s},scope:c,default_currency:`USD`}}function ph(e){if(!e||typeof e!=`object`)return{id:``,posted_at:null,event:null,description:null,status_type:null,currency:null,total_debit:null,total_credit:null,line_count:null,created_at:null};let t=Array.isArray(e.journal_lines)?e.journal_lines:[],n=0,r=0;for(let e of t)Number.isFinite(e?.debits)&&(n+=e.debits),Number.isFinite(e?.credits)&&(r+=e.credits);return{id:String(e.id||e.journal_entry_id||``),posted_at:e.posted_at??null,event:e.event??null,description:e.description??null,status_type:e.status_type??null,currency:e.currency??e.currency_code??null,total_debit:t.length?n:null,total_credit:t.length?r:null,line_count:t.length||null,created_at:e.created_at??null}}function mh(e,t){let n=Q(e),r=Ah(n,[`jobs`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.search||void 0,l={};for(let e of r){let t=e&&e.status||`unknown`;l[t]=(l[t]||0)+1}return{jobs:r.map(hh),total:i,cursor:{next:o,prev:s},scope:c,status_counts:l}}function hh(e){return!e||typeof e!=`object`?{id:``,name:null,description:null,job_type:null,resource:null,status:null,created_at:null}:{id:String(e.id||e.job_id||``),name:e.name??null,description:e.description??null,job_type:e.job_type??e.type??null,resource:e.resource??null,status:e.status??null,created_at:e.created_at??null}}function gh(e,t){let n=Q(e),r=Ah(n,[`contacts`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.customer_id||void 0;return{contacts:r.map(_h),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0}}function _h(e){if(!e||typeof e!=`object`)return{id:``,name:null,email:null,customer_id:null,send_invoice:null,send_contract:null};let t=[e.first_name??``,e.last_name??``].filter(Boolean).join(` `).trim(),n=e.customer,r=typeof n==`string`?n:(n&&typeof n==`object`?n.id:null)??e.customer_id??null;return{id:String(e.id||e.contact_id||``),name:e.name??(t||null),email:e.email??e.primary_email??null,customer_id:r??null,send_invoice:typeof e.send_invoice==`boolean`?e.send_invoice:null,send_contract:typeof e.send_contract==`boolean`?e.send_contract:null}}function vh(e,t){let n=Q(e),r=Ah(n,[`raw_metrics`,`rawmetrics`,`rawMetrics`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search||t.name__ilike)||void 0;return{raw_metrics:r.map(yh),total:i,cursor:{next:o,prev:s},scope:c}}function yh(e){return!e||typeof e!=`object`?{id:``,name:null,api_slug:null,usage_upload_enabled:null,created_at:null}:{id:String(e.id||e.raw_metric_id||``),name:e.name??null,api_slug:e.api_slug??null,usage_upload_enabled:typeof e.usage_upload_enabled==`boolean`?e.usage_upload_enabled:null,created_at:e.created_at??null}}function bh(e,t){let n=Q(e),r=Ah(n,[`aggregates`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.name__ilike||t.datasource)||void 0;return{aggregates:r.map(xh),total:i,cursor:{next:o,prev:s},scope:c}}function xh(e){return!e||typeof e!=`object`?{id:``,name:null,datasource:null,created_at:null}:{id:String(e.id||e.aggregate_id||``),name:e.name??null,datasource:e.datasource??e.data_source??e.raw_metric_name??null,created_at:e.created_at??null}}function Sh(e,t){let n=Ah(Q(e),[`addresses`,`data`,`results`]);return{customer_id:t&&t.customerId?String(t.customerId):void 0,addresses:n.map(Ch),total:n.length}}function Ch(e){return!e||typeof e!=`object`?{id:``,label:null,line1:null,line2:null,city:null,state:null,zip_code:null,country:null,is_primary:null}:{id:String(e.id||``),label:e.label??e.name??e.address_type??null,line1:e.line1??e.address_line_1??null,line2:e.line2??e.address_line_2??null,line3:e.line3??null,city:e.city??null,state:e.state??null,zip_code:e.zipCode??e.zip_code??e.postal_code??null,country:e.country??e.country_code??null,validation_status:e.validation_status??null,is_primary:typeof e.is_primary==`boolean`?e.is_primary:typeof e.primary==`boolean`?e.primary:null}}function wh(e,t){let n=Ah(Q(e),[`payment_methods`,`paymentMethods`,`data`,`results`]);return{customer_id:t&&t.customerId?String(t.customerId):void 0,payment_methods:n.map(Th),total:n.length}}function Th(e){if(!e||typeof e!=`object`)return{id:``,type:null,brand:null,last4:null,exp_month:null,exp_year:null,is_default:null,created_at:null};let t=e.card||e.details||{};return{id:String(e.id||``),type:e.type??e.payment_method_type??null,brand:t.brand??e.brand??null,last4:t.last4??e.last4??null,exp_month:Nh(t.exp_month??e.exp_month),exp_year:Nh(t.exp_year??e.exp_year),is_default:typeof e.is_default==`boolean`?e.is_default:typeof e.default==`boolean`?e.default:null,created_at:e.created_at??null,connector_name:e.connector_name??null,status:e.status??null}}function Eh(e,t){let n=Q(e),r=Ah(n,[`business_entities`,`businessEntities`,`entities`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null;return{entities:r.map(Dh),total:i,cursor:{next:o,prev:s}}}function Dh(e){return!e||typeof e!=`object`?{id:``,name:null,email:null,phone_number:null,country:null,is_default:null}:{id:String(e.id||e.business_entity_id||``),name:e.name??e.business_entity_name??null,email:e.email??null,phone_number:e.phone_number??null,country:(e.address&&e.address.country)??e.country??null,is_default:typeof e.is_default==`boolean`?e.is_default:null}}function Oh(e,t){let n=Q(e),r=Ah(n,[`entitlements`,`data`,`results`]),i=Mh(n,[`total`,`count`,`total_count`])??r.length,a=jh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search||t.name__ilike)||void 0;return{entitlements:r.map(kh),total:i,cursor:{next:o,prev:s},scope:c}}function kh(e){return!e||typeof e!=`object`?{id:``,name:null,entitlement_type:null,units:null,is_active:null,product_name:null,created_at:null}:{id:String(e.id||e.entitlement_id||``),name:e.name??null,entitlement_type:e.entitlement_type??null,units:e.units??null,is_active:typeof e.is_active==`boolean`?e.is_active:null,product_name:(e.product&&(e.product.name??e.product.product_name))??null,created_at:e.created_at??null}}function Ah(e,t){if(Array.isArray(e))return e;for(let n of t)if(e&&Array.isArray(e[n]))return e[n];return[]}function jh(e,t){for(let n of t)if(e&&e[n]&&typeof e[n]==`object`)return e[n];return null}function Mh(e,t){for(let n of t)if(e&&Number.isFinite(e[n]))return e[n];return null}function Nh(e){return Number.isFinite(e)?e:null}function Ph(e,t){let n=Q(e);return{html:n.html??(typeof n==`string`?n:``),invoice_id:t&&t.invoiceId?String(t.invoiceId):void 0}}function Fh(e){if(Im.has(e))return{mode:`text-only`};let t=Lm[e];return t?{mode:`ui`,...t}:{mode:`unmapped`}}const Ih=a(s(import.meta.url)),Lh=[o(Ih,`..`,`..`,`..`,`dist`,`ui`),o(Ih,`ui`)];function Rh(e){for(let t of Lh){let i=o(t,`${e}.html`);if(n(i))return r(i,`utf8`)}return`<!doctype html><html><body style="font-family:sans-serif;padding:16px;">UI bundle missing: ${e}.html. Run <code>pnpm run build:ui</code>.</body></html>`}function zh(){let e=new Set,t=t=>{if(t)try{e.add(new URL(t).origin)}catch{}};return t(process.env.ZENSKAR_MCP_PUBLIC_BASE_URL||process.env.MCP_PUBLIC_BASE_URL),t(process.env.ZENSKAR_API_BASE_URL),t(process.env.ZENSKAR_APP_BASE_URL),Array.from(e)}function Bh(){let e={prefersBorder:!0},t=zh();return t.length>0&&(e.csp={connectDomains:t,resourceDomains:t}),e}function Vh(e){for(let t of Rm){let n=zm(t);e.registerResource(`zenskar-app`,n,{},async()=>({contents:[{uri:n,mimeType:`text/html;profile=mcp-app`,text:Rh(t),_meta:{"openai/widgetPrefersBorder":!0,ui:Bh()}}]}))}}const Hh=[`claude-code`,`cline`,`roo-code`,`continue`,`codex`,`windsurf`,`zed`,`aider`,`copilot`,`gemini-cli`],Uh=[`claude-desktop`,`claude-ai`,`chatgpt`,`mcp-inspector`,`toon`,`cursor`];let Wh=null,Gh=null;function Kh(e){Wh=e?String(e).toLowerCase().trim():null}function qh(e){Gh=e}function Jh(){if(Wh==null&&Gh){let e=Gh();e&&Kh(e)}return Wh}function Yh(e){let t=(e??Wh??``).toLowerCase().trim();return t?Hh.some(e=>t.includes(e))?`coding-agent`:Uh.some(e=>t.includes(e))?`widget-host`:`default`:`default`}const Xh={comma:`,`,tab:` `,pipe:`|`}.comma;function Zh(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/\t/g,`\\t`)}function Qh(e){return e===`true`||e===`false`||e===`null`}function $h(e){if(e===null)return null;if(typeof e==`object`&&e&&`toJSON`in e&&typeof e.toJSON==`function`){let t=e.toJSON();if(t!==e)return $h(t)}if(typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e==`bigint`)return e>=-(2**53-1)&&e<=2**53-1?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map($h);if(e instanceof Set)return Array.from(e).map($h);if(e instanceof Map)return Object.fromEntries(Array.from(e,([e,t])=>[String(e),$h(t)]));if(ig(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=$h(e[n]));return t}return null}function eg(e){return e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}function tg(e){return Array.isArray(e)}function ng(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function rg(e){return Object.keys(e).length===0}function ig(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function ag(e){return e.length===0||e.every(e=>eg(e))}function og(e){return e.length===0||e.every(e=>tg(e))}function sg(e){return e.length===0||e.every(e=>ng(e))}const cg=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,lg=/^0\d+$/;function ug(e){return/^[A-Z_][\w.]*$/i.test(e)}function dg(e){return/^[A-Z_]\w*$/i.test(e)}function fg(e,t=Xh){return!(!e||e!==e.trim()||Qh(e)||pg(e)||e.includes(`:`)||e.includes(`"`)||e.includes(`\\`)||/[[\]{}]/.test(e)||/[\n\r\t]/.test(e)||e.includes(t)||e.startsWith(`-`))}function pg(e){return cg.test(e)||lg.test(e)}function mg(e,t,n,r,i,a,o){if(r.keyFolding!==`safe`||!ng(t))return;let{segments:s,tail:c,leafValue:l}=hg(e,t,o??r.flattenDepth);if(s.length<2||!s.every(e=>dg(e)))return;let u=gg(s),d=a?`${a}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:s.length}}function hg(e,t,n){let r=[e],i=t;for(;r.length<n&&ng(i);){let e=Object.keys(i);if(e.length!==1)break;let t=e[0],n=i[t];r.push(t),i=n}return!ng(i)||rg(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function gg(e){return e.join(`.`)}function _g(e,t){return e===null?`null`:typeof e==`boolean`||typeof e==`number`?String(e):vg(e,t)}function vg(e,t=Xh){return fg(e,t)?e:`"${Zh(e)}"`}function yg(e){return ug(e)?e:`"${Zh(e)}"`}function bg(e,t=Xh){return e.map(e=>_g(e,t)).join(t)}function xg(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??`,`,a=``;if(n!=null&&(a+=yg(n)),a+=`[${e}${i===Xh?``:i}]`,r){let e=r.map(e=>yg(e));a+=`{${e.join(i)}}`}return a+=`:`,a}function*Sg(e,t,n){if(eg(e)){let n=_g(e,t.delimiter);n!==``&&(yield n);return}tg(e)?yield*Tg(void 0,e,n,t):ng(e)&&(yield*Cg(e,n,t))}function*Cg(e,t,n,r,i,a){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(e=>e.includes(`.`))));let s=a??n.flattenDepth;for(let[a,c]of Object.entries(e))yield*wg(a,c,t,n,o,r,i,s)}function*wg(e,t,n,r,i,a,o,s){let c=o?`${o}.${e}`:e,l=s??r.flattenDepth;if(r.keyFolding===`safe`&&i){let s=mg(e,t,i,r,a,o,l);if(s){let{foldedKey:e,remainder:t,leafValue:i,segmentCount:c}=s,u=yg(e);if(t===void 0){if(eg(i)){yield Fg(n,`${u}: ${_g(i,r.delimiter)}`,r.indent);return}else if(tg(i)){yield*Tg(e,i,n,r);return}else if(ng(i)&&rg(i)){yield Fg(n,`${u}:`,r.indent);return}}if(ng(t)){yield Fg(n,`${u}:`,r.indent);let i=l-c,s=o?`${o}.${e}`:e;yield*Cg(t,n+1,r,a,s,i);return}}}let u=yg(e);eg(t)?yield Fg(n,`${u}: ${_g(t,r.delimiter)}`,r.indent):tg(t)?yield*Tg(e,t,n,r):ng(t)&&(yield Fg(n,`${u}:`,r.indent),rg(t)||(yield*Cg(t,n+1,r,a,c,l)))}function*Tg(e,t,n,r){if(t.length===0){yield Fg(n,xg(0,{key:e,delimiter:r.delimiter}),r.indent);return}if(ag(t)){yield Fg(n,Dg(t,r.delimiter,e),r.indent);return}if(og(t)&&t.every(e=>ag(e))){yield*Eg(e,t,n,r);return}if(sg(t)){let i=kg(t);i?yield*Og(e,t,i,n,r):yield*Mg(e,t,n,r);return}yield*Mg(e,t,n,r)}function*Eg(e,t,n,r){yield Fg(n,xg(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let e of t)if(ag(e)){let t=Dg(e,r.delimiter);yield Ig(n+1,t,r.indent)}}function Dg(e,t,n){let r=xg(e.length,{key:n,delimiter:t}),i=bg(e,t);return e.length===0?r:`${r} ${i}`}function*Og(e,t,n,r,i){yield Fg(r,xg(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*jg(t,n,r+1,i)}function kg(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Ag(e,n))return n}function Ag(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let e of t)if(!(e in n)||!eg(n[e]))return!1}return!0}function*jg(e,t,n,r){for(let i of e)yield Fg(n,bg(t.map(e=>i[e]),r.delimiter),r.indent)}function*Mg(e,t,n,r){yield Fg(n,xg(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let e of t)yield*Pg(e,n+1,r)}function*Ng(e,t,n){if(rg(e)){yield Fg(t,`-`,n.indent);return}let r=Object.entries(e),[i,a]=r[0],o=r.slice(1);if(tg(a)&&sg(a)){let e=kg(a);if(e){yield Ig(t,xg(a.length,{key:i,fields:e,delimiter:n.delimiter}),n.indent),yield*jg(a,e,t+2,n),o.length>0&&(yield*Cg(Object.fromEntries(o),t+1,n));return}}let s=yg(i);if(eg(a))yield Ig(t,`${s}: ${_g(a,n.delimiter)}`,n.indent);else if(tg(a))if(a.length===0)yield Ig(t,`${s}${xg(0,{delimiter:n.delimiter})}`,n.indent);else if(ag(a))yield Ig(t,`${s}${Dg(a,n.delimiter)}`,n.indent);else{yield Ig(t,`${s}${xg(a.length,{delimiter:n.delimiter})}`,n.indent);for(let e of a)yield*Pg(e,t+2,n)}else ng(a)&&(yield Ig(t,`${s}:`,n.indent),rg(a)||(yield*Cg(a,t+2,n)));o.length>0&&(yield*Cg(Object.fromEntries(o),t+1,n))}function*Pg(e,t,n){if(eg(e))yield Ig(t,_g(e,n.delimiter),n.indent);else if(tg(e))if(ag(e))yield Ig(t,Dg(e,n.delimiter),n.indent);else{yield Ig(t,xg(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Pg(r,t+1,n)}else ng(e)&&(yield*Ng(e,t,n))}function Fg(e,t,n){return` `.repeat(n*e)+t}function Ig(e,t,n){return Fg(e,`- `+t,n)}function Lg(e,t){let n=t(``,e,[]);return Rg(n===void 0?e:$h(n),t,[])}function Rg(e,t,n){return ng(e)?zg(e,t,n):tg(e)?Bg(e,t,n):e}function zg(e,t,n){let r={};for(let[i,a]of Object.entries(e)){let e=[...n,i],o=t(i,a,e);o!==void 0&&(r[i]=Rg($h(o),t,e))}return r}function Bg(e,t,n){let r=[];for(let i=0;i<e.length;i++){let a=e[i],o=[...n,i],s=t(String(i),a,o);if(s===void 0)continue;let c=$h(s);r.push(Rg(c,t,o))}return r}function Vg(e,t){return Array.from(Hg(e,t)).join(`
79
- `)}function Hg(e,t){let n=$h(e),r=Ug(t);return Sg(r.replacer?Lg(n,r.replacer):n,r,0)}function Ug(e){return{indent:e?.indent??2,delimiter:e?.delimiter??Xh,keyFolding:e?.keyFolding??`off`,flattenDepth:e?.flattenDepth??1/0,replacer:e?.replacer}}function Wg(e){return typeof e==`string`?e:Vg(e)}function Gg(){let e=process.env.ZENSKAR_MCP_UI_ENABLED;return e==null||e===``?!0:!/^(0|false|no|off)$/i.test(String(e).trim())}function Kg(){let e=process.env.ZENSKAR_MCP_UI_DISABLED_TOOLS;return e?new Set(String(e).split(`,`).map(e=>e.trim()).filter(Boolean)):new Set}const qg=process.env.ZENSKAR_MCP_UI_DEBUG===`true`||process.env.MCP_DEBUG===`true`;function Jg(...e){qg&&console.error(`[ui-wrap]`,...e)}function Yg(e,t,n,r){if(!Gg())return Jg(e,`skipped: ZENSKAR_MCP_UI_ENABLED explicitly disabled`),Zg(n);let i=Fh(e);if(i.mode!==`ui`)return Jg(e,`skipped: not in registry, mode=`,i.mode),Zg(n);if(Kg().has(e))return Jg(e,`skipped: in ZENSKAR_MCP_UI_DISABLED_TOOLS`),Zg(n);let a;try{a=i.toPayload(t,r)}catch(t){return Jg(e,`toPayload threw:`,t.message),Zg(n)}let o=Xg(a);if(o<(i.threshold??0))return Jg(e,`below threshold:`,o,`<`,i.threshold),Zg(n);let s=Yh(Jh());return Jg(e,`OK shape=`,i.shape,`items=`,o,`client=`,s),s===`coding-agent`?Zg(n):s===`widget-host`?{content:[{type:`text`,text:(o<=1&&i.shape.includes(`detail`)?`Full detail rendered in widget above — user already sees every field. Do not summarize or restate. Only respond if user asks a specific question. Reference data below for follow-ups.`:`Data rendered in table widget above. Use values below for follow-up questions — do not restate rows.`)+`
80
- `+Wg(a)}],structuredContent:a}:Zg(n)}function Xg(e){if(!e||typeof e!=`object`)return 0;for(let t of[`customers`,`invoices`,`lines`,`payments`,`credit_notes`,`contracts`,`transactions`,`rows`,`items`,`data`,`addresses`,`payment_methods`,`products`,`plans`,`entries`,`jobs`,`contacts`,`raw_metrics`,`aggregates`,`entities`])if(Array.isArray(e[t]))return e[t].length;if(Number.isFinite(e.total))return e.total;for(let t of[`customer`,`invoice`,`contract`,`credit_note`])if(e[t]&&typeof e[t]==`object`)return 1;return+!!e.html}function Zg(e){return{content:[{type:`text`,text:e}]}}const Qg=s(import.meta.url),$g=i.dirname(Qg),e_={logUsage:async()=>{}},t_=(e,t)=>({valid:!0,adjustedArgs:t,warnings:[],errors:[]}),n_=()=>({message:`Limits validation unavailable`,severity:`info`,suggestions:[]}),$={debug:(e,t)=>{if(process.env.MCP_DEBUG===`true`){let n=new Date().toISOString();console.error(`[${n}] [MCP-DEBUG] ${e}`,t?JSON.stringify(t,null,2):``)}},info:(e,t)=>{let n=new Date().toISOString();console.error(`[${n}] [MCP-INFO] ${e}`,t?JSON.stringify(t,null,2):``)},error:(e,t)=>{let n=new Date().toISOString();console.error(`[${n}] [MCP-ERROR] ${e}`,t?JSON.stringify(t,null,2):``)},warn:(e,t)=>{let n=new Date().toISOString();console.error(`[${n}] [MCP-WARN] ${e}`,t?JSON.stringify(t,null,2):``)}},r_=i.join($g,`mcp-config.json`);let i_;try{i_=JSON.parse(t.readFileSync(r_,`utf8`))}catch(e){console.error(`Failed to load MCP config:`,e.message),console.error(`Please ensure mcp-config.json exists in the project root`),process.exit(1)}const a_=new mm({name:i_.server?.name||`zenskar-api-server`,version:`1.0.0`});qh(()=>{let e=a_.server.getClientVersion();return e&&e.name?e.name:null});const o_=new Pm;function s_(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t={...e};return typeof t.timestamp==`string`&&(t.timestamp=c_(t.timestamp)),t.data&&typeof t.data==`object`&&!Array.isArray(t.data)&&(t.data={...t.data},[`DateTime64`,`DateTime`,`DateTime32`].forEach(e=>{typeof t.data[e]==`string`&&(t.data[e]=c_(t.data[e]))})),t}function c_(e){return typeof e==`string`?e.replace(`T`,` `).replace(`t`,` `).replace(/Z$/i,``).trim():e}function l_(e){if(typeof e!=`string`)return e;let t=e.trim();if(!t)return e;switch(t.toLowerCase()){case`boolean`:return`Bool`;case`string`:return`String`;case`int`:case`int64`:return`Int64`;case`float`:case`float64`:case`double`:return`Float64`;case`date`:case`date32`:return`Date32`;case`datetime`:case`datetime64`:return`DateTime64`;case`uuid`:return`UUID`;default:return t}}function u_(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t={...e};if(t.customer_id&&=l_(t.customer_id),t.timestamp&&=l_(t.timestamp),t.data&&typeof t.data==`object`&&!Array.isArray(t.data)){let e={};Object.entries(t.data).forEach(([t,n])=>{e[t]=l_(n)}),t.data=e}return t}function d_(e){return e?Array.isArray(e)?e:Array.isArray(e.results)?e.results:e.api_response===void 0?[]:d_(e.api_response):[]}function f_(e){return!e||typeof e!=`string`?`Uncategorized`:e.trim()||`Uncategorized`}function p_(e){let t=Number(e);return Number.isFinite(t)?t/100:null}function m_(e,t){let n=f_(t);return e===`getBalanceSheet`&&n===`Liabilities`?`Liabilities & Equity`:n}function h_(e,t){return(e===`getBalanceSheet`?{Assets:1,Liabilities:2,Equity:3}:{Income:1,Revenue:1,"Cost of Goods Sold":2,Expense:3,Expenses:3,"Other Income":4,"Other Expense":5,"Other Expenses":5})[t]||999}function g_(e){return`${e?.interval_start||`unknown_start`}__${e?.interval_end||`unknown_end`}`}function __(e){return Object.values(e).sort((e,t)=>String(e.interval_start).localeCompare(String(t.interval_start)))}function v_(e,t,n){let r=new Map,i=new Map;t.forEach(t=>{let a=m_(e,t.account_category),o=g_(t),s=r.get(o)||{key:o,interval_start:t.interval_start||null,interval_end:t.interval_end||null};r.set(o,s),i.has(a)||i.set(a,{category:a,accounts:new Map,totals_by_period:{},total_balance:0,total_debits:0,total_credits:0});let c=i.get(a),l=t.account_id||`unknown_account`,u=n.get(l)||{};c.accounts.has(l)||c.accounts.set(l,{account_id:l,account_name:t.account_name||u.name||l,account_description:t.account_description||u.description||null,account_category:a,parent_path:t.account_parent_path||u.parent_path||null,balance_normality:t.balance_normality||u.balance_normality||null,periods:{},total_balance:0,total_debits:0,total_credits:0});let d=c.accounts.get(l);d.periods[o]={interval_start:t.interval_start||null,interval_end:t.interval_end||null,balance:t.balance??0,display_balance:p_(t.balance??0),debits:t.debits??0,display_debits:p_(t.debits??0),credits:t.credits??0,display_credits:p_(t.credits??0)},d.total_balance+=Number(t.balance||0),d.total_debits+=Number(t.debits||0),d.total_credits+=Number(t.credits||0);let f=c.totals_by_period[o]||{interval_start:t.interval_start||null,interval_end:t.interval_end||null,balance:0,debits:0,credits:0,display_balance:0,display_debits:0,display_credits:0};f.balance+=Number(t.balance||0),f.debits+=Number(t.debits||0),f.credits+=Number(t.credits||0),f.display_balance=p_(f.balance),f.display_debits=p_(f.debits),f.display_credits=p_(f.credits),c.totals_by_period[o]=f,c.total_balance+=Number(t.balance||0),c.total_debits+=Number(t.debits||0),c.total_credits+=Number(t.credits||0)});let a=Array.from(i.values()).sort((t,n)=>{let r=h_(e,t.category)-h_(e,n.category);return r===0?t.category.localeCompare(n.category):r}).map(e=>({category:e.category,accounts:Array.from(e.accounts.values()).sort((e,t)=>e.account_name.localeCompare(t.account_name)).map(e=>({...e,periods:__(e.periods)})),totals_by_period:__(e.totals_by_period),total_balance:e.total_balance,display_total_balance:p_(e.total_balance),total_debits:e.total_debits,display_total_debits:p_(e.total_debits),total_credits:e.total_credits,display_total_credits:p_(e.total_credits)}));return{report_type:e===`getBalanceSheet`?`balance_sheet`:`income_statement`,periods:Array.from(r.values()).sort((e,t)=>String(e.interval_start).localeCompare(String(t.interval_start))),sections:a}}function y_(e){if(!e)return``;let t=e.account_category||``;return t===`Liabilities`?`Liabilities & Equity`:t}function b_(e){let t=[...e].map(e=>({...e,account_category:y_(e)})).sort((e,t)=>{let n=y_(e).localeCompare(y_(t));return n===0?String(e.name||``).localeCompare(String(t.name||``)):n}),n=new Map;t.forEach(e=>{let t=y_(e)||`Uncategorized`;n.has(t)||n.set(t,[]),n.get(t).push(e)}),[`Assets`,`Liabilities & Equity`,`Equity`,`Income`,`Expenses`].forEach(e=>{n.has(e)||n.set(e,[])});let r=Array.from(n.entries()).sort((e,t)=>e[0].localeCompare(t[0])).map(([e,t])=>({id:e,name:e,description:e,account_category:e,is_parent:!0,parent_path:null,children:t.map(t=>({...t,parent_path:t.parent_path||e}))})),i=r.find(e=>e.name===`Liabilities & Equity`);return i&&(i.children.some(e=>e.name===`Equity`)||(i.children.push({id:`Equity`,name:`Equity`,description:`Equity`,account_category:`Liabilities & Equity`,balance_normality:`credit`,is_parent:!0,parent_path:`Liabilities & Equity`,custom_data:{default_account:!1},children:[]}),i.children.push({id:`Equity:Retained Earnings`,name:`Retained Earnings`,description:`Retained Earnings`,account_category:`Liabilities & Equity`,balance_normality:`credit`,is_parent:!1,parent_path:`Equity`,custom_data:{default_account:!1}}))),r}function x_(e){if(!e||!Array.isArray(e.results))return e;let t=e.results.reduce((e,t)=>{let n=t.status||`unknown`;return e[n]=(e[n]||0)+1,e},{});return{...e,summary:{total_count:e.total_count??e.results.length,returned_count:e.results.length,page_status_counts:t,has_more:!!e.next,note:e.next?`Showing ${e.results.length} jobs from the current page. Use the cursor to continue through the remaining jobs.`:`Showing ${e.results.length} jobs from the current page.`}}}function S_(e){if(!e||!Array.isArray(e.results))return e;let t=[...e.results].sort((e,t)=>{let n=f_(e.account_category),r=f_(t.account_category),i=n.localeCompare(r);return i===0?String(e.name||``).localeCompare(String(t.name||``)):i}),n=t.reduce((e,t)=>{let n=f_(t.account_category);return e[n]=e[n]||[],e[n].push(t),e},{});return{...e,results:t,grouped_view:n}}async function C_(e,t){let n=await fetch(e,{method:`GET`,headers:t}),r=await n.text();if(!n.ok)throw Error(`Supplemental fetch failed: ${n.status} ${n.statusText}\nResponse: ${r}`);try{return JSON.parse(r)}catch{throw Error(`Supplemental fetch returned non-JSON response: ${r}`)}}async function w_(e,t,n){let r=e.rawMetricId,i=await C_(`${n}/rawmetric/${encodeURIComponent(r)}`,t);if(!i?.api_slug)throw Error(`Unable to resolve api_slug for raw metric ${r}`);let a={...t,apiversion:`20240301`},o={limit:e.limit??20,offset:e.offset??0,order_by:e.order_by??[{column:`timestamp`,type:`DESC`}],aggregate_operation:e.aggregate_operation??null,customer_mapping:null,end_date_mapping:null,start_date_mapping:null,table_name:`raw_metric_${i.api_slug}`,visual_query:{groups:[{filters:Array.isArray(e.filters)?e.filters:[],logic:`AND`}],logic:`AND`}},s=await fetch(`${n}/aggregate/visualquery/preview`,{method:`POST`,headers:a,body:JSON.stringify(o)}),c=await s.text();if(!s.ok)throw Error(`API request failed: ${s.status} ${s.statusText}\nResponse: ${c}`);try{return JSON.parse(c)}catch{return c}}async function T_(e,t,n,r){if(!t||!Array.isArray(t.results))return t;try{let i=d_(await C_(`${r}/accounting_new/chart_of_accounts`,n)),a=new Map(i.filter(e=>e&&e.id).map(e=>[e.id,e])),o=t.results.map(t=>{let n=a.get(t.account_id)||{};return{...t,account_name:n.name||t.account_id||null,account_description:n.description||null,account_category:m_(e,n.account_category),account_parent_path:n.parent_path||null,balance_normality:n.balance_normality||null,display_balance:p_(t.balance??0),display_debits:p_(t.debits??0),display_credits:p_(t.credits??0)}}),s=v_(e,o,a);if(e===`getBalanceSheet`){let e=new URLSearchParams;n.apiversion&&e.set(`apiversion`,n.apiversion);let t=await C_(`${r}/accounting_new/income_statement/v2`,n),i=Array.isArray(t?.results)?t.results:[],a={};i.forEach(e=>{let t=g_(e),n=a[t]||{interval_start:e.interval_start||null,interval_end:e.interval_end||null,balance:0,debits:0,credits:0};n.balance+=Number(e.balance||0),n.debits+=Number(e.debits||0),n.credits+=Number(e.credits||0),a[t]=n});let o=__(Object.fromEntries(Object.entries(a).map(([e,t])=>[e,{...t,display_balance:p_(t.balance),display_debits:p_(t.debits),display_credits:p_(t.credits)}]))),c={account_id:`Equity:Retained Earnings`,account_name:`Retained Earnings (Derived)`,account_description:`Derived from the companion income statement for MCP presentation.`,account_category:`Liabilities & Equity`,parent_path:`Equity`,balance_normality:`credit`,periods:o,total_balance:o.reduce((e,t)=>e+Number(t.balance||0),0),display_total_balance:p_(o.reduce((e,t)=>e+Number(t.balance||0),0)),total_debits:o.reduce((e,t)=>e+Number(t.debits||0),0),display_total_debits:p_(o.reduce((e,t)=>e+Number(t.debits||0),0)),total_credits:o.reduce((e,t)=>e+Number(t.credits||0),0),display_total_credits:p_(o.reduce((e,t)=>e+Number(t.credits||0),0))},l=s.sections.find(e=>e.category===`Liabilities & Equity`);l||(l={category:`Liabilities & Equity`,accounts:[],totals_by_period:[],total_balance:0,display_total_balance:0,total_debits:0,display_total_debits:0,total_credits:0,display_total_credits:0},s.sections.push(l)),l.accounts.push(c)}return{...t,results:o,statement_view:s}}catch(n){return $.warn(`[${e}] Failed to enrich accounting report output; returning raw report`,{error:n.message}),t}}function E_(e){let t={};return e.forEach(e=>{let n;n=e.type===`integer`||e.type===`number`?R():e.type===`boolean`?$s():e.type===`object`?U(rc()):e.type===`array`?B(rc()):e.type===`datetime`?H([I(),R()]):I(),e.default!==void 0&&(n=n.default(e.default)),e.required||(n=n.optional()),e.description&&(n=n.describe(e.description)),t[e.name]=n}),t.__userContext=V({userId:I().optional(),authorization:I().optional(),organization:I().optional(),apiKey:I().optional(),headers:V({}).optional(),approval:V({approved:$s(),token:I().optional(),modifiedArguments:U(rc()).optional(),originalArguments:U(rc()).optional(),toolName:I().optional()}).optional()}).optional().describe(`Internal user context for multi-tenant authentication and approval workflow`),t}async function D_(e,t){let n=Date.now();if(e.name===`getCurrentDateTime`){let e=new Date;return{currentDate:e.toISOString().split(`T`)[0],currentDateTime:e.toISOString(),timestamp:e.getTime(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,humanReadable:e.toLocaleString()}}$.debug(`[${e.name}] Raw args received:`,{argKeys:Object.keys(t),argValues:JSON.stringify(t,null,2)});let r=t.__userContext,i={...t};delete i.__userContext,$.debug(`[${e.name}] User context received:`,r?{hasUserId:!!r.userId,hasAuthorization:!!r.authorization,hasOrganization:!!r.organization,authPrefix:r.authorization?r.authorization.substring(0,20)+`...`:`none`}:`NO USER CONTEXT`);let a=e.requestTemplate?.url||`/`,o=e.requestTemplate?.method||`GET`,s=a.startsWith(`http://`)||a.startsWith(`https://`);$.debug(`[${e.name}] Executing ${o} request with args:`,JSON.stringify(i,null,2)),r&&$.debug(`[${e.name}] Using user context:`,{hasApiKey:!!r.apiKey,hasOrganization:!!r.organization,userId:r.userId}),e.args&&e.args.forEach(e=>{e.position===`path`&&i[e.name]!==void 0&&(a=a.replace(`{${e.name}}`,encodeURIComponent(i[e.name])))});let c=new URLSearchParams;e.args&&e.args.forEach(e=>{e.position===`query`&&i[e.name]!==void 0&&i[e.name]!==null&&i[e.name]!==``&&(typeof i[e.name]==`boolean`?c.append(e.name,i[e.name].toString()):Array.isArray(i[e.name])?i[e.name].forEach(t=>{c.append(e.name,t)}):c.append(e.name,i[e.name]))}),Object.keys(i).forEach(t=>{if(!c.has(t)&&i[t]!==void 0&&i[t]!==null&&i[t]!==``){let n=e.args?.some(e=>e.position===`path`&&e.name===t),r=e.args?.some(e=>e.position===`body`&&e.name===t);!n&&!r&&(typeof i[t]==`boolean`?c.append(t,i[t].toString()):Array.isArray(i[t])?i[t].forEach(e=>{c.append(t,e)}):c.append(t,i[t]))}}),c.toString()&&(a+=`?`+c.toString());let l=null;if(o!==`GET`&&o!==`DELETE`&&e.args){let t=e=>{if(typeof e==`number`)return Number.isFinite(e)?Math.floor(e):e;if(typeof e==`string`){let t=Date.parse(e);return Number.isFinite(t)?Math.floor(t/1e3):e}return e},n={};if(e.args.forEach(r=>{if(r.position===`body`&&i[r.name]!==void 0){if(r.type===`datetime`){n[r.name]=t(i[r.name]);return}if(e.name===`ingestRawMetricEvent`&&r.name===`event`){let e=s_(i[r.name]);e&&typeof e==`object`&&!Array.isArray(e)?Object.entries(e).forEach(([e,t])=>{t!==void 0&&(n[e]=t)}):n[r.name]=e}else n[r.name]=i[r.name]}}),e.name===`createCustomer`||e.name===`updateCustomer`){let t=(t,r)=>{let i={[`${t}line1`]:`line1`,[`${t}line2`]:`line2`,[`${t}line3`]:`line3`,[`${t}city`]:`city`,[`${t}state`]:`state`,[`${t}zipCode`]:`zipCode`,[`${t}country`]:`country`,[`${t}country_code`]:`country_code`},a={},o=!1;Object.entries(i).forEach(([e,t])=>{n[e]!==void 0&&(a[t]=n[e],delete n[e],o=!0)}),o&&(n[r]=a,$.debug(`[${e.name}] Transformed flat ${t}* fields into ${r} object`))};t(`address_`,`address`),t(`ship_to_`,`ship_to_address`)}if(e.name===`createBusinessEntity`&&((t,r)=>{let i={[`${t}line1`]:`line1`,[`${t}line2`]:`line2`,[`${t}line3`]:`line3`,[`${t}city`]:`city`,[`${t}state`]:`state`,[`${t}zipCode`]:`zipCode`,[`${t}country`]:`country`},a={},o=!1;Object.entries(i).forEach(([e,t])=>{n[e]!==void 0&&(a[t]=n[e],delete n[e],o=!0)}),o&&(n[r]=a,$.debug(`[${e.name}] Transformed flat ${t}* fields into ${r} object`))})(`address_`,`address`),e.name===`getInvoicePreviewHtml`&&!i.orgId){let e=r?.organization||process.env.ZENSKAR_ORGANIZATION;e&&(i.orgId=e)}if(e.name===`extractContractFromRaw`&&!n.organization_id){let t=r?.organization||process.env.ZENSKAR_ORGANIZATION;t&&(n.organization_id=t,$.debug(`[${e.name}] Auto-populated organization_id: ${t}`))}e.name===`createRawMetric`&&(n.connector||=i.connector||`push_to_zenskar`,n.api_type||=i.api_type||`PUSH`,n.dataschema||={customer_id:`string`,timestamp:`timestamp`,data:{usage_amount:`decimal`,feature_id:`string`}},n.dataschema&&=u_(n.dataschema),n.column_order=[`timestamp`]),Object.keys(n).length>0?l=JSON.stringify(n):(o===`PATCH`||o===`POST`||o===`PUT`)&&(l=`{}`)}let u={"Content-Type":`application/json`,"User-Agent":`Zenskar-MCP-Server/1.0.0`,apiversion:`20230501`},d=r?.organization||process.env.ZENSKAR_ORGANIZATION,f=r?.authorization||r?.headers?.authorization||r?.headers?.Authorization||process.env.ZENSKAR_AUTH_TOKEN,p=r?.apiKey||r?.headers?.[`x-api-key`]||process.env.ZENSKAR_API_KEY||process.env.ZENSKAR_AUTH_TOKEN;if(d)u.organisation=d;else throw $.error(`[${e.name}] SECURITY ERROR: No organization ID provided`),Error(`Organization ID is required for API access. Set ZENSKAR_ORGANIZATION env var or provide in user context.`);if(f&&f.startsWith(`eyJ`))u.Authorization=f.startsWith(`Bearer `)?f:`Bearer ${f}`;else if(p)u[`x-api-key`]=p;else throw $.error(`[${e.name}] SECURITY ERROR: No authorization provided`),Error(`Authorization is required. Set ZENSKAR_AUTH_TOKEN (JWT) or ZENSKAR_API_KEY env var.`);if(r?.headers){let e=new Set(Object.keys(u).map(e=>e.toLowerCase())),t=new Set([`__proto__`,`prototype`,`constructor`]);Object.keys(r.headers).forEach(n=>{t.has(n)||Object.prototype.hasOwnProperty.call(r.headers,n)&&r.headers[n]&&!e.has(n.toLowerCase())&&(u[n]=r.headers[n])})}$.debug(`[${e.name}] Using headers:`,{hasOrganization:!!u.organisation,hasAuthorization:!!u.Authorization,hasApiKey:!!u[`x-api-key`],source:r?.organization?`userContext`:`env`}),e.requestTemplate?.headers&&(Array.isArray(e.requestTemplate.headers)?e.requestTemplate.headers.forEach(e=>{u[e.key]=e.value}):Object.keys(e.requestTemplate.headers).forEach(t=>{u[t]=e.requestTemplate.headers[t]}));let m;if(s)m=a,$.debug(`[${e.name}] Using absolute URL: ${m}`);else{let t=process.env.ZENSKAR_API_BASE_URL||`https://api.zenskar.com`;m=t+a,$.debug(`[${e.name}] Using relative URL with base: ${t} + ${a} = ${m}`)}$.debug(`[${e.name}] Making ${o} request to: ${m}`),$.info(`[${e.name}] MULTI-TENANT SECURITY CHECK - Headers being sent:`,{organization:u.organisation||`MISSING`,hasAuth:!!u.Authorization,authPrefix:u.Authorization?u.Authorization.substring(0,30)+`...`:`NONE`,allHeaders:JSON.stringify(u,null,2)});try{if(e.name===`getRawMetricLogs`){let t=await w_(i,u,process.env.ZENSKAR_API_BASE_URL||`https://api.zenskar.com`);return $.debug(`[${e.name}] Successfully processed frontend-style usage-event logs`),t}let t=await fetch(m,{method:o,headers:u,body:l}),r=await t.text(),a=Date.now()-n;if($.info(`[${e.name}] Response received in ${a}ms - Status: ${t.status}, Size: ${r.length} chars`),$.info(`[${e.name}] Raw response body:`,r),!t.ok){$.error(`[${e.name}] API Error Response:`,r);let n=`API request failed: ${t.status} ${t.statusText}\nResponse: ${r}`;throw Error(n)}let s;try{s=JSON.parse(r)}catch{$.debug(`[${e.name}] Failed to parse JSON response, returning as text`),s=r}if(e.name===`getInvoicePreviewHtml`)if(typeof s==`string`)try{let e=Buffer.from(s,`base64`).toString(`utf8`);s=e.includes(`<`)?{html:e}:{html:s}}catch{s={html:s}}else s={html:``};if(e.name===`getBalanceSheet`||e.name===`getIncomeStatement`){let t=process.env.ZENSKAR_API_BASE_URL||`https://api.zenskar.com`;s=await T_(e.name,s,u,t)}return e.name===`listJobs`&&(s=x_(s)),e.name===`listAccounts`&&(s=S_(s)),e.name===`getChartOfAccounts`&&Array.isArray(s)&&(s={raw_accounts:s,chart_view:b_(s)}),e.responseTemplate?.prependBody&&(s={template_info:e.responseTemplate.prependBody,api_response:s}),$.debug(`[${e.name}] Successfully processed response`),s}catch(t){throw $.error(`[${e.name}] Network error:`,t),Error(`Network error: ${t.message}`)}}const O_=300*1e3,k_=process.env.APPROVAL_HMAC_SECRET,A_=!!k_,j_=new Map,M_=new Map;function N_(e){if(e==null)return e;if(typeof structuredClone==`function`)try{return structuredClone(e)}catch{}return JSON.parse(JSON.stringify(e))}function P_(e){let t=e?N_(e):{};return delete t.__userContext,t}function F_(t){return e.createHmac(`sha256`,k_).update(t).digest(`base64url`)}function I_(t,n){let r=Date.now(),i=r+O_,a=P_(n);if(A_){let n={toolName:t,args:a,issuedAt:r,expiresAt:i,nonce:e.randomBytes(12).toString(`base64url`)},o=Buffer.from(JSON.stringify(n),`utf8`).toString(`base64url`);return`v1.${o}.${F_(o)}`}let o=Mm();return j_.set(o,{toolName:t,issuedAt:r,expiresAt:i,args:a}),o}function L_(t,n){if(!t||typeof t!=`string`)return null;if(A_){let r=t.split(`.`);if(r.length!==3)return null;let[i,a,o]=r;if(i!==`v1`)return null;let s=F_(a),c=Buffer.from(o,`base64url`),l=Buffer.from(s,`base64url`);if(c.length!==l.length||!e.timingSafeEqual(c,l))return null;let u;try{u=JSON.parse(Buffer.from(a,`base64url`).toString(`utf8`))}catch{return null}return u.toolName!==n||typeof u.expiresAt!=`number`||u.expiresAt<Date.now()||M_.has(t)?null:(M_.set(t,u.expiresAt),u)}let r=j_.get(t);return!r||(j_.delete(t),r.toolName!==n)||r.expiresAt<Date.now()?null:r}setInterval(()=>{let e=Date.now();for(let[t,n]of j_)n.expiresAt<e&&j_.delete(t);for(let[t,n]of M_)n<e&&M_.delete(t)},6e4).unref();function R_(e,t){return(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0)(e.modifiedArguments)?{args:e.modifiedArguments,source:`modifiedArguments`}:{args:t.args,source:`tokenSnapshot`}}function z_(e,t){let n=e.__userContext;Object.keys(e).forEach(t=>{t!==`__userContext`&&delete e[t]}),Object.assign(e,t),e.__userContext=n}function B_(e,t){if(!e.needsApproval)return!1;let n=t.__userContext,r=n&&n.approval;if(r&&r.approved===!0){let n=L_(r.token,e.name);if(n){let{args:i,source:a}=R_(r,n);return $.info(`[${e.name}] Approval token verified; arg source=${a}`),z_(t,i),$.info(`[${e.name}] Restored arguments for approved execution:`,Object.keys(i)),!1}$.warn(`[${e.name}] Approval received without valid token (got: ${r.token?`expired/mismatched`:`missing`}); requiring re-approval`)}return typeof e.needsApproval==`function`?e.needsApproval(t):e.needsApproval===!0}function V_(e,t){t.__userContext;let n={...t};delete n.__userContext;let r=I_(e.name,t);return{type:`approval_required`,toolName:e.name,toolDescription:e.description,arguments:n,approvalToken:r,approvalTokenExpiresInSeconds:Math.floor(O_/1e3),approvalConfig:e.approvalConfig||{title:`Approve ${e.name}`,description:`This action requires your approval: ${e.description}`,warningText:`Please review the parameters carefully before proceeding.`,confirmText:`Approve`,cancelText:`Cancel`},fields:(e.args||[]).map(t=>({name:t.name,label:t.description||t.name,type:U_(t.type),required:t.required||!1,value:n[t.name],sensitive:e.approvalConfig?.sensitiveFields?.includes(t.name)||!1}))}}function H_(e,t){let n=[];if(e===`createProductPricing`){let e=t.pricing_data;!e||typeof e!=`object`?n.push(`'pricing_data' is required and must be an object containing 'pricing_type' and 'currency'.`):(e.pricing_type||n.push(`'pricing_data.pricing_type' is required (e.g. 'per_unit', 'flat_fee', 'tiered', 'volume', 'percent', 'package').`),e.currency||n.push(`'pricing_data.currency' is required (ISO 4217, e.g. 'USD').`));let r=t.quantity;!r||typeof r!=`object`?n.push(`'quantity' is required and must be an object: {type:'fixed'|'metered', quantity?, unit?, aggregate_id?}. Without it the UI shows 0 for billing_metric.`):(r.type!==`fixed`&&r.type!==`metered`&&n.push(`'quantity.type' must be exactly 'fixed' or 'metered'.`),r.type===`fixed`&&(r.quantity==null||!r.unit)&&n.push(`'quantity.type'='fixed' requires both 'quantity' (number) and 'unit' (label string).`),r.type===`metered`&&!r.aggregate_id&&n.push(`'quantity.type'='metered' requires 'aggregate_id' (UUID of the billable metric).`));let i=t.billing_period;!i||typeof i!=`object`?n.push(`'billing_period' is required and must be an object: {cadence:'P1M'|'P3M'|'P1Y'|..., offset:'P0D'|...}. Without it the UI renders 'Undefined- Every Undefined Undefined'.`):(i.cadence||n.push(`'billing_period.cadence' is required (ISO-8601 duration: 'P1M'=monthly, 'P3M'=quarterly, 'P1Y'=yearly).`),i.offset||n.push(`'billing_period.offset' is required (ISO-8601 duration, 'P0D' for no offset).`))}if(e===`createPlan`){(!t.schedule||typeof t.schedule!=`object`||!t.schedule.duration)&&n.push(`'schedule' is required and must include 'duration' (ISO-8601, e.g. 'P1Y').`),t.status||n.push(`'status' is required: 'draft' | 'active' | 'archived'.`);let e=t.phases;!Array.isArray(e)||e.length===0?n.push(`'phases' must be a non-empty array. A plan with no phases is unusable in PlansV2 — include at least one phase with name, schedule, order, and either features or pricings.`):e.forEach((e,t)=>{if(!e||typeof e!=`object`){n.push(`'phases[${t}]' must be an object.`);return}e.name||n.push(`'phases[${t}].name' is required.`),(!e.schedule||!e.schedule.duration)&&n.push(`'phases[${t}].schedule.duration' is required (ISO-8601).`),typeof e.order!=`number`&&n.push(`'phases[${t}].order' is required (integer, 0-indexed).`),!e.features&&(!Array.isArray(e.pricings)||e.pricings.length===0)&&n.push(`'phases[${t}]' has neither 'features' nor non-empty 'pricings' — phase will be empty in the UI.`)})}if(e===`generateInvoice`){let e=e=>{if(typeof e==`number`)return Number.isInteger(e)?e:null;if(typeof e==`string`){let t=Date.parse(e);return Number.isFinite(t)?Math.floor(t/1e3):null}return null},r=e(t.from_date),i=e(t.to_date);r===null&&n.push(`'from_date' must be either an integer UNIX timestamp (seconds) or an ISO-8601 datetime string. Copy from getContractBillingCycles.start_date.`),i===null&&n.push(`'to_date' must be either an integer UNIX timestamp (seconds) or an ISO-8601 datetime string. Copy from getContractBillingCycles.end_date.`),r!==null&&i!==null&&i<=r&&n.push(`'to_date' must be strictly greater than 'from_date'.`),e(t.bill_for_date)===null&&n.push(`'bill_for_date' is REQUIRED (UNIX seconds or ISO-8601 string). Without it the API returns a $0 invoice. Copy from getContractBillingCycles.bill_for_date — do NOT compute.`),(!Number.isInteger(t.billing_cycle_start_day)||t.billing_cycle_start_day<1||t.billing_cycle_start_day>31)&&n.push(`'billing_cycle_start_day' is REQUIRED and must be an integer 1-31. Copy from getContractBillingCycles.billing_cycle_start_day.`)}return e===`pauseContract`&&(t.start_date||n.push(`'start_date' is required (ISO 8601).`),t.unpause_extension_policy||n.push(`'unpause_extension_policy' is required: 'extend' or 'overlap'.`)),{valid:n.length===0,errors:n}}function U_(e){switch(e){case`string`:return`text`;case`integer`:case`number`:return`number`;case`boolean`:return`checkbox`;default:return`text`}}Vh(a_),i_.tools&&i_.tools.length>0&&i_.tools.forEach(e=>{$.info(`Registering tool: ${e.name}`);let t=E_(e.args||[]),n=Fh(e.name),r=n.mode===`ui`?(()=>{let e=zm(n.shape);return{"openai/outputTemplate":e,"ui/resourceUri":e,ui:{resourceUri:e}}})():void 0;a_.registerTool(e.name,{title:e.name,description:e.description,inputSchema:t,...r?{_meta:r}:{}},async t=>{let n=Date.now(),r=`success`,i=null,a=0,o=0,s=null,c=null;try{$.debug(`[${e.name}] Tool execution started`),$.info(`[${e.name}] Raw args received:`,{argKeys:Object.keys(t),hasUserContextInArgs:!!t.__userContext,userContextInArgs:t.__userContext,approvedInArgs:t.__userContext?.approved});let l=H_(e.name,t);if(!l.valid){$.error(`[${e.name}] Tool execution blocked due to invalid arguments (pre-approval):`,l.errors),r=`blocked`,i=`invalid_args: ${l.errors.join(`; `)}`;let t={type:`invalid_arguments`,toolName:e.name,errors:l.errors};return{content:[{type:`text`,text:JSON.stringify(t,null,2)},{type:`text`,text:`ACTION_NOT_EXECUTED — INVALID_ARGUMENTS\n\nTool '${e.name}' was NOT executed because the supplied arguments are invalid or incomplete:\n\n`+l.errors.map((e,t)=>`${t+1}. ${e}`).join(`
78
+ [Response truncated due to length]`),t}catch(e){return console.error(`Response processing error:`,e),`Error processing response`}}};function Fm(e){if(!e||typeof e!=`object`||Array.isArray(e))return rc();if(Array.isArray(e.enum)&&e.enum.length>0){let t=e.enum.filter(e=>typeof e==`string`);if(t.length===e.enum.length&&t.length>0)return _c(t)}let t,n=Array.isArray(e.type)?e.type[0]:e.type;if(n===`integer`||n===`number`)t=n===`integer`?R().int():R(),typeof e.minimum==`number`&&(t=t.min(e.minimum)),typeof e.maximum==`number`&&(t=t.max(e.maximum));else if(n===`boolean`)t=$s();else if(n===`array`)t=B(Fm(e.items));else if(n===`object`){let n=new Set(Array.isArray(e.required)?e.required:[]),r=e.properties||{},i={};Object.entries(r).forEach(([e,t])=>{let r=Fm(t);n.has(e)||(r=r.optional()),i[e]=r}),t=e.additionalProperties===!1?V(i):V(i).passthrough()}else t=I();return e.description&&(t=t.describe(e.description)),t}function Im(e){let t={};return e.forEach(e=>{let n;n=e.schema?Fm(e.schema):e.type===`integer`||e.type===`number`?R():e.type===`boolean`?$s():e.type===`object`?U(rc()):e.type===`array`?B(rc()):e.type===`datetime`?H([I(),R()]):I(),e.default!==void 0&&(n=n.default(e.default)),e.required||(n=n.optional()),e.description&&(n=n.describe(e.description)),t[e.name]=n}),t.__userContext=V({userId:I().optional(),authorization:I().optional(),organization:I().optional(),apiKey:I().optional(),headers:V({}).optional(),approval:V({approved:$s(),token:I().optional(),modifiedArguments:U(rc()).optional(),originalArguments:U(rc()).optional(),toolName:I().optional()}).optional()}).optional().describe(`Internal user context for multi-tenant authentication and approval workflow`),t}function Lm(e){return!e||typeof e!=`string`?``:e.replace(/[_-]+/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase()).trim()}const Rm=new Set([`getInvoiceSummary`,`getCustomerBalance`,`getPaymentStatus`]),zm={listCustomers:{shape:`customer-table`,noun:`customer`,toPayload:Hm,threshold:0},listInvoices:{shape:`invoice-table`,noun:`invoice`,toPayload:Um,threshold:0},getInvoiceLineItems:{shape:`invoice-line-items`,noun:`line item`,toPayload:Gm,threshold:0},listAllPayments:{shape:`payment-table`,noun:`payment`,toPayload:Xm,threshold:0},listCreditNotes:{shape:`credit-note-table`,noun:`credit note`,toPayload:Qm,threshold:0},listContracts:{shape:`contract-table`,noun:`contract`,toPayload:eh,threshold:0},getCustomerById:{shape:`customer-detail`,noun:`customer`,toPayload:nh,threshold:0},getInvoiceById:{shape:`invoice-detail`,noun:`invoice`,toPayload:rh,threshold:0},getContractById:{shape:`contract-detail`,noun:`contract`,toPayload:ih,threshold:0},getCreditNoteById:{shape:`credit-note-detail`,noun:`credit note`,toPayload:lh,threshold:0},listProducts:{shape:`product-table`,noun:`product`,toPayload:uh,threshold:0},listPlans:{shape:`plan-table`,noun:`plan`,toPayload:fh,threshold:0},listJournalEntries:{shape:`journal-table`,noun:`journal entry`,toPayload:mh,threshold:0},listJobs:{shape:`job-table`,noun:`job`,toPayload:gh,threshold:0},listContacts:{shape:`contact-table`,noun:`contact`,toPayload:vh,threshold:0},listRawMetrics:{shape:`raw-metric-table`,noun:`raw metric`,toPayload:bh,threshold:0},listAggregates:{shape:`aggregate-table`,noun:`aggregate`,toPayload:Sh,threshold:0},listCustomerAddresses:{shape:`address-list`,noun:`address`,toPayload:wh,threshold:0},listPaymentMethods:{shape:`payment-method-list`,noun:`payment method`,toPayload:Eh,threshold:0},listBusinessEntities:{shape:`entity-table`,noun:`business entity`,toPayload:Oh,threshold:0},listEntitlements:{shape:`entitlement-table`,noun:`entitlement`,toPayload:Ah,threshold:0},getInvoicePreviewHtml:{shape:`invoice-preview`,noun:`invoice preview`,toPayload:Ih,threshold:0}},Bm=Object.freeze([`app`]);function Vm(e){return`ui://zenskar/app.html`}function Hm(e,t){let n=Q(e),r=Mh(n,[`customers`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search_name_external_id||t.search)||void 0;return{customers:r.map(Ym),total:i,cursor:{next:o,prev:s},scope:c}}function Q(e){return e&&typeof e==`object`&&e.api_response&&typeof e.api_response==`object`?e.api_response:e||{}}function Um(e,t){let n=Q(e),r=Mh(n,[`invoices`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??n.next??null,s=a.prev??n.previous??null;return{invoices:r.map(Wm),total:i,cursor:{next:o,prev:s},scope:t&&(t.customer__customer_name__ilike||t.invoice_number__like||t.status)||void 0,default_currency:`USD`}}function Wm(e){if(!e||typeof e!=`object`)return{id:``,invoice_number:null,customer_id:null,customer_name:null,status:null,invoice_total:null,amount_due:null,due_date:null,invoice_period_begin:null,invoice_period_end:null,external_id:null,created_at:null,payment_url:null};let t=e.invoice_period||{},n=e.customer&&typeof e.customer==`object`?e.customer:null;return{id:String(e.id||e.invoice_id||``),invoice_number:e.invoice_number??null,customer_id:n?.id??e.customer_id??null,customer_name:n?.customer_name??n?.name??null,status:e.status??null,invoice_total:Fh(e.net_invoice_total??e.invoice_total),amount_due:Fh(e.amount_due),due_date:e.due_date??e.promise_due_date??null,invoice_period_begin:t.begin_date??e.period_begin_date??null,invoice_period_end:t.end_date_exclusive??e.period_end_date??null,external_id:e.external_id??null,created_at:e.created_at??null,payment_url:e.payment_url??null}}function Gm(e,t){let n=Q(e),r=Array.isArray(n.lines)?n.lines:Array.isArray(n)?n:[],i=Fh(n.total),a=Km(r)||`USD`;return{invoice_id:t&&t.invoiceId?String(t.invoiceId):void 0,total:i,currency:a,lines:r.map(qm)}}function Km(e){for(let t of e){if(t&&t.subtotal&&t.subtotal.unit)return t.subtotal.unit;if(t&&t.features&&t.features[0]&&t.features[0].currency)return t.features[0].currency}return null}function qm(e){return!e||typeof e!=`object`?{name:``,description:null,pricing_model:null,subtotal:{value:null,unit:null},quantity:{value:null,unit:null},price:null,service_start_date:null,service_end_date:null,is_billed:null}:{name:e.name??e.description??``,description:e.description??null,pricing_model:e.pricing_model??null,subtotal:Jm(e.subtotal),quantity:Jm(e.quantity),price:e.price?Jm(e.price):null,service_start_date:e.service_start_date??e.billing_period_start??null,service_end_date:e.service_end_date??e.billing_period_end??null,is_billed:typeof e.is_billed==`boolean`?e.is_billed:null,line_item_type:e.line_item_type??null,is_adjustment:typeof e.is_adjustment==`boolean`?e.is_adjustment:null,adjustment_type:e.adjustment_type??null}}function Jm(e){return e?{value:Fh(e.value),unit:e.unit??null,display:e.display??null}:{value:null,unit:null,display:null}}function Ym(e){return!e||typeof e!=`object`?{id:``,name:null,external_id:null,email:null}:{id:String(e.id||e.customer_id||``),name:e.customer_name??e.name??null,external_id:e.external_id??null,email:e.email??e.primary_email??null,created_at:e.created_at??e.created??null}}function Xm(e,t){let n=Q(e),r=Mh(n,[`payments`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search||t.customer_id||t.type||t.payment_method)||void 0;return{payments:r.map(Zm),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0,default_currency:`USD`}}function Zm(e){if(!e||typeof e!=`object`)return{id:``,external_id:null,customer_id:null,customer_name:null,invoice_id:null,invoice_name:null,amount:null,currency:null,payment_method:null,type:null,status:null,description:null,payment_date:null,created_at:null};let t=((Array.isArray(e.payment_parts)?e.payment_parts:[]).find(e=>e&&e.invoice_id)||{}).invoice_id||e.invoice_id||null,n=e.customer&&typeof e.customer==`object`?e.customer:null,r=e.invoice&&typeof e.invoice==`object`?e.invoice:null;return{id:String(e.id||e.payment_id||``),external_id:e.external_id??null,customer_id:n?.id??e.customer_id??null,customer_name:n?.customer_name??n?.name??null,invoice_id:r?.id??t,invoice_name:r?.name??r?.invoice_number??null,amount:Fh(e.amount??e.value),currency:e.currency_code??e.currency??null,payment_method:e.payment_method??null,type:e.type??null,status:e.status??null,description:e.description??e.notes??null,payment_date:e.payment_date??e.received_at??e.processed_at??null,created_at:e.created_at??null}}function Qm(e,t){let n=Q(e),r=Mh(n,[`credit_notes`,`creditNotes`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.customer_id||t.invoice_id||t.status)||void 0;return{credit_notes:r.map($m),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0,default_currency:`USD`}}function $m(e){if(!e||typeof e!=`object`)return{id:``,credit_note_number:null,customer_id:null,customer_name:null,invoice_id:null,invoice_name:null,status:null,amount:null,currency:null,repayment_method:null,created_at:null};let t=e.customer&&typeof e.customer==`object`?e.customer:null,n=e.invoice&&typeof e.invoice==`object`?e.invoice:null;return{id:String(e.id||e.credit_note_id||``),credit_note_number:e.credit_note_number??null,customer_id:t?.id??e.customer_id??null,customer_name:t?.customer_name??t?.name??null,invoice_id:n?.id??e.invoice_id??null,invoice_name:n?.name??n?.invoice_number??null,status:e.status??null,amount:Fh(e.amount??e.total??e.value),currency:e.currency_code??e.currency??null,repayment_method:e.repayment_method??null,created_at:e.created_at??null}}function eh(e,t){let n=Q(e),r=Mh(n,[`contracts`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.customer_id||t.name__ilike||t.status)||void 0;return{contracts:r.map(th),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0}}function th(e){if(!e||typeof e!=`object`)return{id:``,customer_id:null,customer_name:null,name:null,status:null,currency:null,start_date:null,end_date:null,created_at:null};let t=e.customer&&typeof e.customer==`object`?e.customer:null;return{id:String(e.id||e.contract_id||``),customer_id:t?.id??e.customer_id??null,customer_name:t?.customer_name??t?.name??null,name:e.name??e.contract_name??null,status:e.status??e.state??null,currency:e.currency??e.currency_code??null,start_date:e.start_date??null,end_date:e.end_date??null,created_at:e.created_at??null}}function nh(e){let t=Q(e),n=t.customer??t,r=Ym(n),i=n.business_entity,a=n.default_payment_method,o=Array.isArray(n.contacts)?n.contacts:[],s=Array.isArray(n.tax_info)?n.tax_info:[];return{customer:{...r,phone:n.phone_number??n.phone??n.primary_phone??null,business_entity_id:n.business_entity_id??null,business_entity_name:(i&&typeof i==`object`?i.name:null)??null,address:n.address??null,ship_to_address:n.ship_to_address??null,communications_enabled:typeof n.communications_enabled==`boolean`?n.communications_enabled:null,auto_charge_enabled:typeof n.auto_charge_enabled==`boolean`?n.auto_charge_enabled:null,custom_data:n.custom_data??null,tax_info:s.length?s.map(e=>({country_code:e.country_code??null,tax_code:e.tax_code??null,tax_id:e.tax_id??null})):null,contacts:o.length?o.map(e=>({name:[e.first_name??``,e.last_name??``].filter(Boolean).join(` `)||null,email:e.email??null,send_invoice:typeof e.send_invoice==`boolean`?e.send_invoice:null,send_contract:typeof e.send_contract==`boolean`?e.send_contract:null})):null,default_payment_method:a&&typeof a==`object`?{type:a.type??null,brand:(a.details&&a.details.brand)??a.brand??null,last4:(a.details&&a.details.last4)??a.last4??null,connector_name:a.connector_name??null}:null,updated_at:n.updated_at??null}}}function rh(e){let t=Q(e),n=t.invoice??t,r=Wm(n),i=n.customer,a=n.contract;return{invoice:{...r,paid_amount:Fh(n.paid_amount??(r.invoice_total!=null&&r.amount_due!=null?r.invoice_total-r.amount_due:null)),currency:n.currency_code??n.currency??null,business_entity_id:n.business_entity_id??null,notes:n.notes??null,custom_data:n.custom_data??n.custom_attributes??null,customer_name:(i&&typeof i==`object`?i.name:null)??null,contract_id:n.contract_id??(a&&typeof a==`object`?a.id:null)??null,contract_name:(a&&typeof a==`object`?a.name:null)??null,invoice_pdf:n.invoice_pdf??null,approved_at:n.approved_at??null,paid_at:n.paid_at??null,sent_at:n.sent_at??null}}}function ih(e){let t=Q(e),n=t.contract??t,r=th(n),i=Array.isArray(n.phases)?n.phases:[],a=n.customer,o=Array.isArray(n.tags)?n.tags:[];return{contract:{...r,description:n.description??null,custom_attributes:n.custom_attributes??null,renewal_policy:n.renewal_policy??null,anchor_date:n.anchor_date??null,plan_id:n.plan_id??null,customer_name:(a&&typeof a==`object`?a.customer_name??a.name:null)??null,contract_type:n.contract_type??null,tags:o.length?o:null,contract_link:n.contract_link??null},phases:i.map(ah)}}function ah(e){if(!e||typeof e!=`object`)return{id:null,name:null,start_date:null,end_date:null,pricing_summary:null,product_count:null,pricings:[]};let t=Array.isArray(e.products)?e.products:[],n=Array.isArray(e.pricings)?e.pricings:t;return{id:e.id??null,name:e.name??e.phase_name??null,start_date:e.start_date??null,end_date:e.end_date??null,pricing_summary:e.pricing_summary??null,product_count:n.length||Fh(e.product_count),pricings:n.map(sh)}}function oh(e){return!e||!Array.isArray(e.prices)||!Array.isArray(e.dimensions)||e.prices.length===0?null:e.prices.map((t,n)=>({dimension:e.dimensions[n]?.name??null,display_alias:Array.isArray(e.display_alias)?e.display_alias[n]??null:null,price:typeof t==`number`?t:null}))}function sh(e){if(!e||typeof e!=`object`)return{product_name:null,pricing_model:null};let t=e.pricing??{},n=e.pricing_data??t.pricing_data??e,r=t.quantity??e.quantity??{},i=t.billing_period??e.billing_period??{},a=e.product??{};return{id:e.id??null,product_name:a.name??e.name??e.product_name??null,product_type:a.type??null,description:e.description??t.description??a.description??null,pricing_model:n.pricing_type??e.pricing_model??null,currency:n.currency??null,unit_amount:n.unit_amount??null,tiers:Array.isArray(n.tiers)?n.tiers:null,package_size:n.package_size??null,matrix:oh(n),quantity_type:r.type??null,quantity_value:r.quantity??null,quantity_unit:r.unit??null,meter_name:r.aggregate?.name??r.aggregate_name??null,billing_cadence:i.cadence??null,billing_timing:e.billing_timing??t.billing_timing??null,is_recurring:typeof t.is_recurring==`boolean`?t.is_recurring:typeof e.is_recurring==`boolean`?e.is_recurring:null,start_date:e.start_date??null,end_date:e.end_date??null,features:ch(t)}}function ch(e){let t=[],n=t=>Array.isArray(e[t])?e[t]:[];for(let e of n(`discounts`)){let n=e.type===`percentage`;t.push({type:`Discount`,label:e.label??null,summary:`${e.unit_amount??`?`}${n?`%`:` (Fixed)`}`})}for(let e of n(`taxes`)){let n=e.type===`avalara`;t.push({type:`Tax`,label:e.label??null,summary:n?`Avalara - ${e.code??`?`}`:`${e.unit_amount??`?`}%`})}for(let e of n(`free_units`))t.push({type:`Free Units`,label:e.label??null,summary:`${e.unit_amount??`?`} units`});for(let e of n(`commitments`)){let n=e.type?Lm(e.type):`Commitment`;t.push({type:`Commitment`,label:e.label??null,summary:`${n}: ${e.unit_amount??`?`}`})}for(let e of n(`grants`)){let n=e.trigger_event?Lm(e.trigger_event):``,r=e.expires_at?`, expires ${Lm(e.expires_at)}`:``,i=e.entitlement?.name?` → ${e.entitlement.name}`:``;t.push({type:`Grant`,label:e.label??null,summary:`${e.unit_amount??`?`} units on ${n}${r}${i}`})}for(let e of n(`consumptions`)){let n=e.entitlement?.name??`Entitlement`,r=e.trigger_event?Lm(e.trigger_event):``;t.push({type:`Consumption`,label:e.label??null,summary:`${n} (${Lm(e.type??``)}) on ${r}`})}for(let e of n(`service_fees`)){let n=e.type===`percentage`;t.push({type:`Service Fee`,label:e.label??null,summary:`${e.unit_amount??`?`}${n?`%`:` (Fixed)`}`})}for(let e of n(`payment_terms`)){let n=e.due_days==null?``:`Due in ${e.due_days} days`;t.push({type:`Payment Terms`,label:e.label??null,summary:n||`Custom`})}return t.length>0?t:null}function lh(e){let t=Q(e),n=t.credit_note??t.creditNote??t,r=$m(n),i=n.customer,a=n.invoice;return{credit_note:{...r,line_items_url:n.line_items_url??null,credits_returned:Fh(n.credits_returned),custom_data:n.custom_data??null,customer_name:(i&&typeof i==`object`?i.name:null)??null,invoice_number:(a&&typeof a==`object`?a.invoice_number??a.name:null)??null}}}function uh(e,t){let n=Q(e),r=Mh(n,[`products`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.name__ilike||void 0;return{products:r.map(dh),total:i,cursor:{next:o,prev:s},scope:c}}function dh(e){return!e||typeof e!=`object`?{id:``,name:null,sku:null,description:null,product_type:null,is_active:null,created_at:null}:{id:String(e.id||e.product_id||``),name:e.name??e.product_name??null,sku:e.sku??null,description:e.description??null,product_type:e.product_type??e.type??null,is_active:typeof e.is_active==`boolean`?e.is_active:null,created_at:e.created_at??null}}function fh(e,t){let n=Q(e),r=Mh(n,[`plans`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.name__ilike||t.status)||void 0;return{plans:r.map(ph),total:i,cursor:{next:o,prev:s},scope:c}}function ph(e){return!e||typeof e!=`object`?{id:``,name:null,description:null,status:null,plan_version:null,created_at:null}:{id:String(e.id||e.plan_id||``),name:e.name??e.plan_name??null,description:e.description??null,status:e.status??e.state??null,plan_version:Fh(e.plan_version),created_at:e.created_at??null}}function mh(e,t){let n=Q(e),r=Mh(n,[`entries`,`journal_entries`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.search_query||void 0;return{entries:r.map(hh),total:i,cursor:{next:o,prev:s},scope:c,default_currency:`USD`}}function hh(e){if(!e||typeof e!=`object`)return{id:``,posted_at:null,event:null,description:null,status_type:null,currency:null,total_debit:null,total_credit:null,line_count:null,created_at:null};let t=Array.isArray(e.journal_lines)?e.journal_lines:[],n=0,r=0;for(let e of t)Number.isFinite(e?.debits)&&(n+=e.debits),Number.isFinite(e?.credits)&&(r+=e.credits);return{id:String(e.id||e.journal_entry_id||``),posted_at:e.posted_at??null,event:e.event??null,description:e.description??null,status_type:e.status_type??null,currency:e.currency??e.currency_code??null,total_debit:t.length?n:null,total_credit:t.length?r:null,line_count:t.length||null,created_at:e.created_at??null}}function gh(e,t){let n=Q(e),r=Mh(n,[`jobs`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.search||void 0,l={};for(let e of r){let t=e&&e.status||`unknown`;l[t]=(l[t]||0)+1}return{jobs:r.map(_h),total:i,cursor:{next:o,prev:s},scope:c,status_counts:l}}function _h(e){return!e||typeof e!=`object`?{id:``,name:null,description:null,job_type:null,resource:null,status:null,created_at:null}:{id:String(e.id||e.job_id||``),name:e.name??null,description:e.description??null,job_type:e.job_type??e.type??null,resource:e.resource??null,status:e.status??null,created_at:e.created_at??null}}function vh(e,t){let n=Q(e),r=Mh(n,[`contacts`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&t.customer_id||void 0;return{contacts:r.map(yh),total:i,cursor:{next:o,prev:s},scope:c?String(c):void 0}}function yh(e){if(!e||typeof e!=`object`)return{id:``,name:null,email:null,customer_id:null,send_invoice:null,send_contract:null};let t=[e.first_name??``,e.last_name??``].filter(Boolean).join(` `).trim(),n=e.customer,r=typeof n==`string`?n:(n&&typeof n==`object`?n.id:null)??e.customer_id??null;return{id:String(e.id||e.contact_id||``),name:e.name??(t||null),email:e.email??e.primary_email??null,customer_id:r??null,send_invoice:typeof e.send_invoice==`boolean`?e.send_invoice:null,send_contract:typeof e.send_contract==`boolean`?e.send_contract:null}}function bh(e,t){let n=Q(e),r=Mh(n,[`raw_metrics`,`rawmetrics`,`rawMetrics`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search||t.name__ilike)||void 0;return{raw_metrics:r.map(xh),total:i,cursor:{next:o,prev:s},scope:c}}function xh(e){return!e||typeof e!=`object`?{id:``,name:null,api_slug:null,usage_upload_enabled:null,created_at:null}:{id:String(e.id||e.raw_metric_id||``),name:e.name??null,api_slug:e.api_slug??null,usage_upload_enabled:typeof e.usage_upload_enabled==`boolean`?e.usage_upload_enabled:null,created_at:e.created_at??null}}function Sh(e,t){let n=Q(e),r=Mh(n,[`aggregates`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.name__ilike||t.datasource)||void 0;return{aggregates:r.map(Ch),total:i,cursor:{next:o,prev:s},scope:c}}function Ch(e){return!e||typeof e!=`object`?{id:``,name:null,datasource:null,created_at:null}:{id:String(e.id||e.aggregate_id||``),name:e.name??null,datasource:e.datasource??e.data_source??e.raw_metric_name??null,created_at:e.created_at??null}}function wh(e,t){let n=Mh(Q(e),[`addresses`,`data`,`results`]);return{customer_id:t&&t.customerId?String(t.customerId):void 0,addresses:n.map(Th),total:n.length}}function Th(e){return!e||typeof e!=`object`?{id:``,label:null,line1:null,line2:null,city:null,state:null,zip_code:null,country:null,is_primary:null}:{id:String(e.id||``),label:e.label??e.name??e.address_type??null,line1:e.line1??e.address_line_1??null,line2:e.line2??e.address_line_2??null,line3:e.line3??null,city:e.city??null,state:e.state??null,zip_code:e.zipCode??e.zip_code??e.postal_code??null,country:e.country??e.country_code??null,validation_status:e.validation_status??null,is_primary:typeof e.is_primary==`boolean`?e.is_primary:typeof e.primary==`boolean`?e.primary:null}}function Eh(e,t){let n=Mh(Q(e),[`payment_methods`,`paymentMethods`,`data`,`results`]);return{customer_id:t&&t.customerId?String(t.customerId):void 0,payment_methods:n.map(Dh),total:n.length}}function Dh(e){if(!e||typeof e!=`object`)return{id:``,type:null,brand:null,last4:null,exp_month:null,exp_year:null,is_default:null,created_at:null};let t=e.card||e.details||{};return{id:String(e.id||``),type:e.type??e.payment_method_type??null,brand:t.brand??e.brand??null,last4:t.last4??e.last4??null,exp_month:Fh(t.exp_month??e.exp_month),exp_year:Fh(t.exp_year??e.exp_year),is_default:typeof e.is_default==`boolean`?e.is_default:typeof e.default==`boolean`?e.default:null,created_at:e.created_at??null,connector_name:e.connector_name??null,status:e.status??null}}function Oh(e,t){let n=Q(e),r=Mh(n,[`business_entities`,`businessEntities`,`entities`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null;return{entities:r.map(kh),total:i,cursor:{next:o,prev:s}}}function kh(e){return!e||typeof e!=`object`?{id:``,name:null,email:null,phone_number:null,country:null,is_default:null}:{id:String(e.id||e.business_entity_id||``),name:e.name??e.business_entity_name??null,email:e.email??null,phone_number:e.phone_number??null,country:(e.address&&e.address.country)??e.country??null,is_default:typeof e.is_default==`boolean`?e.is_default:null}}function Ah(e,t){let n=Q(e),r=Mh(n,[`entitlements`,`data`,`results`]),i=Ph(n,[`total`,`count`,`total_count`])??r.length,a=Nh(n,[`cursor`,`pagination`])||{},o=a.next??a.next_cursor??n.next??null,s=a.prev??a.prev_cursor??n.previous??null,c=t&&(t.search||t.name__ilike)||void 0;return{entitlements:r.map(jh),total:i,cursor:{next:o,prev:s},scope:c}}function jh(e){return!e||typeof e!=`object`?{id:``,name:null,entitlement_type:null,units:null,is_active:null,product_name:null,created_at:null}:{id:String(e.id||e.entitlement_id||``),name:e.name??null,entitlement_type:e.entitlement_type??null,units:e.units??null,is_active:typeof e.is_active==`boolean`?e.is_active:null,product_name:(e.product&&(e.product.name??e.product.product_name))??null,created_at:e.created_at??null}}function Mh(e,t){if(Array.isArray(e))return e;for(let n of t)if(e&&Array.isArray(e[n]))return e[n];return[]}function Nh(e,t){for(let n of t)if(e&&e[n]&&typeof e[n]==`object`)return e[n];return null}function Ph(e,t){for(let n of t)if(e&&Number.isFinite(e[n]))return e[n];return null}function Fh(e){return Number.isFinite(e)?e:null}function Ih(e,t){let n=Q(e);return{html:n.html??(typeof n==`string`?n:``),invoice_id:t&&t.invoiceId?String(t.invoiceId):void 0}}function Lh(e){if(Rm.has(e))return{mode:`text-only`};let t=zm[e];return t?{mode:`ui`,...t}:{mode:`unmapped`}}const Rh=a(s(import.meta.url)),zh=[o(Rh,`..`,`..`,`..`,`dist`,`ui`),o(Rh,`ui`)];function Bh(e){for(let t of zh){let i=o(t,`${e}.html`);if(n(i))return r(i,`utf8`)}return`<!doctype html><html><body style="font-family:sans-serif;padding:16px;">UI bundle missing: ${e}.html. Run <code>pnpm run build:ui</code>.</body></html>`}function Vh(){let e=new Set,t=t=>{if(t)try{e.add(new URL(t).origin)}catch{}};return t(process.env.ZENSKAR_MCP_PUBLIC_BASE_URL||process.env.MCP_PUBLIC_BASE_URL),t(process.env.ZENSKAR_API_BASE_URL),t(process.env.ZENSKAR_APP_BASE_URL),Array.from(e)}function Hh(){let e={prefersBorder:!0},t=Vh();return t.length>0&&(e.csp={connectDomains:t,resourceDomains:t}),e}function Uh(e){for(let t of Bm){let n=Vm(t);e.registerResource(`zenskar-app`,n,{},async()=>({contents:[{uri:n,mimeType:`text/html;profile=mcp-app`,text:Bh(t),_meta:{"openai/widgetPrefersBorder":!0,ui:Hh()}}]}))}}const Wh=[`claude-code`,`cline`,`roo-code`,`continue`,`codex`,`windsurf`,`zed`,`aider`,`copilot`,`gemini-cli`],Gh=[`claude-desktop`,`claude-ai`,`chatgpt`,`mcp-inspector`,`toon`,`cursor`];let Kh=null,qh=null;function Jh(e){Kh=e?String(e).toLowerCase().trim():null}function Yh(e){qh=e}function Xh(){if(Kh==null&&qh){let e=qh();e&&Jh(e)}return Kh}function Zh(e){let t=(e??Kh??``).toLowerCase().trim();return t?Wh.some(e=>t.includes(e))?`coding-agent`:Gh.some(e=>t.includes(e))?`widget-host`:`default`:`default`}const Qh={comma:`,`,tab:` `,pipe:`|`}.comma;function $h(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/\t/g,`\\t`)}function eg(e){return e===`true`||e===`false`||e===`null`}function tg(e){if(e===null)return null;if(typeof e==`object`&&e&&`toJSON`in e&&typeof e.toJSON==`function`){let t=e.toJSON();if(t!==e)return tg(t)}if(typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e==`bigint`)return e>=-(2**53-1)&&e<=2**53-1?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(tg);if(e instanceof Set)return Array.from(e).map(tg);if(e instanceof Map)return Object.fromEntries(Array.from(e,([e,t])=>[String(e),tg(t)]));if(og(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=tg(e[n]));return t}return null}function ng(e){return e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}function rg(e){return Array.isArray(e)}function ig(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ag(e){return Object.keys(e).length===0}function og(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function sg(e){return e.length===0||e.every(e=>ng(e))}function cg(e){return e.length===0||e.every(e=>rg(e))}function lg(e){return e.length===0||e.every(e=>ig(e))}const ug=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,dg=/^0\d+$/;function fg(e){return/^[A-Z_][\w.]*$/i.test(e)}function pg(e){return/^[A-Z_]\w*$/i.test(e)}function mg(e,t=Qh){return!(!e||e!==e.trim()||eg(e)||hg(e)||e.includes(`:`)||e.includes(`"`)||e.includes(`\\`)||/[[\]{}]/.test(e)||/[\n\r\t]/.test(e)||e.includes(t)||e.startsWith(`-`))}function hg(e){return ug.test(e)||dg.test(e)}function gg(e,t,n,r,i,a,o){if(r.keyFolding!==`safe`||!ig(t))return;let{segments:s,tail:c,leafValue:l}=_g(e,t,o??r.flattenDepth);if(s.length<2||!s.every(e=>pg(e)))return;let u=vg(s),d=a?`${a}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:s.length}}function _g(e,t,n){let r=[e],i=t;for(;r.length<n&&ig(i);){let e=Object.keys(i);if(e.length!==1)break;let t=e[0],n=i[t];r.push(t),i=n}return!ig(i)||ag(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function vg(e){return e.join(`.`)}function yg(e,t){return e===null?`null`:typeof e==`boolean`||typeof e==`number`?String(e):bg(e,t)}function bg(e,t=Qh){return mg(e,t)?e:`"${$h(e)}"`}function xg(e){return fg(e)?e:`"${$h(e)}"`}function Sg(e,t=Qh){return e.map(e=>yg(e,t)).join(t)}function Cg(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??`,`,a=``;if(n!=null&&(a+=xg(n)),a+=`[${e}${i===Qh?``:i}]`,r){let e=r.map(e=>xg(e));a+=`{${e.join(i)}}`}return a+=`:`,a}function*wg(e,t,n){if(ng(e)){let n=yg(e,t.delimiter);n!==``&&(yield n);return}rg(e)?yield*Dg(void 0,e,n,t):ig(e)&&(yield*Tg(e,n,t))}function*Tg(e,t,n,r,i,a){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(e=>e.includes(`.`))));let s=a??n.flattenDepth;for(let[a,c]of Object.entries(e))yield*Eg(a,c,t,n,o,r,i,s)}function*Eg(e,t,n,r,i,a,o,s){let c=o?`${o}.${e}`:e,l=s??r.flattenDepth;if(r.keyFolding===`safe`&&i){let s=gg(e,t,i,r,a,o,l);if(s){let{foldedKey:e,remainder:t,leafValue:i,segmentCount:c}=s,u=xg(e);if(t===void 0){if(ng(i)){yield Lg(n,`${u}: ${yg(i,r.delimiter)}`,r.indent);return}else if(rg(i)){yield*Dg(e,i,n,r);return}else if(ig(i)&&ag(i)){yield Lg(n,`${u}:`,r.indent);return}}if(ig(t)){yield Lg(n,`${u}:`,r.indent);let i=l-c,s=o?`${o}.${e}`:e;yield*Tg(t,n+1,r,a,s,i);return}}}let u=xg(e);ng(t)?yield Lg(n,`${u}: ${yg(t,r.delimiter)}`,r.indent):rg(t)?yield*Dg(e,t,n,r):ig(t)&&(yield Lg(n,`${u}:`,r.indent),ag(t)||(yield*Tg(t,n+1,r,a,c,l)))}function*Dg(e,t,n,r){if(t.length===0){yield Lg(n,Cg(0,{key:e,delimiter:r.delimiter}),r.indent);return}if(sg(t)){yield Lg(n,kg(t,r.delimiter,e),r.indent);return}if(cg(t)&&t.every(e=>sg(e))){yield*Og(e,t,n,r);return}if(lg(t)){let i=jg(t);i?yield*Ag(e,t,i,n,r):yield*Pg(e,t,n,r);return}yield*Pg(e,t,n,r)}function*Og(e,t,n,r){yield Lg(n,Cg(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let e of t)if(sg(e)){let t=kg(e,r.delimiter);yield Rg(n+1,t,r.indent)}}function kg(e,t,n){let r=Cg(e.length,{key:n,delimiter:t}),i=Sg(e,t);return e.length===0?r:`${r} ${i}`}function*Ag(e,t,n,r,i){yield Lg(r,Cg(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*Ng(t,n,r+1,i)}function jg(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Mg(e,n))return n}function Mg(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let e of t)if(!(e in n)||!ng(n[e]))return!1}return!0}function*Ng(e,t,n,r){for(let i of e)yield Lg(n,Sg(t.map(e=>i[e]),r.delimiter),r.indent)}function*Pg(e,t,n,r){yield Lg(n,Cg(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let e of t)yield*Ig(e,n+1,r)}function*Fg(e,t,n){if(ag(e)){yield Lg(t,`-`,n.indent);return}let r=Object.entries(e),[i,a]=r[0],o=r.slice(1);if(rg(a)&&lg(a)){let e=jg(a);if(e){yield Rg(t,Cg(a.length,{key:i,fields:e,delimiter:n.delimiter}),n.indent),yield*Ng(a,e,t+2,n),o.length>0&&(yield*Tg(Object.fromEntries(o),t+1,n));return}}let s=xg(i);if(ng(a))yield Rg(t,`${s}: ${yg(a,n.delimiter)}`,n.indent);else if(rg(a))if(a.length===0)yield Rg(t,`${s}${Cg(0,{delimiter:n.delimiter})}`,n.indent);else if(sg(a))yield Rg(t,`${s}${kg(a,n.delimiter)}`,n.indent);else{yield Rg(t,`${s}${Cg(a.length,{delimiter:n.delimiter})}`,n.indent);for(let e of a)yield*Ig(e,t+2,n)}else ig(a)&&(yield Rg(t,`${s}:`,n.indent),ag(a)||(yield*Tg(a,t+2,n)));o.length>0&&(yield*Tg(Object.fromEntries(o),t+1,n))}function*Ig(e,t,n){if(ng(e))yield Rg(t,yg(e,n.delimiter),n.indent);else if(rg(e))if(sg(e))yield Rg(t,kg(e,n.delimiter),n.indent);else{yield Rg(t,Cg(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Ig(r,t+1,n)}else ig(e)&&(yield*Fg(e,t,n))}function Lg(e,t,n){return` `.repeat(n*e)+t}function Rg(e,t,n){return Lg(e,`- `+t,n)}function zg(e,t){let n=t(``,e,[]);return Bg(n===void 0?e:tg(n),t,[])}function Bg(e,t,n){return ig(e)?Vg(e,t,n):rg(e)?Hg(e,t,n):e}function Vg(e,t,n){let r={};for(let[i,a]of Object.entries(e)){let e=[...n,i],o=t(i,a,e);o!==void 0&&(r[i]=Bg(tg(o),t,e))}return r}function Hg(e,t,n){let r=[];for(let i=0;i<e.length;i++){let a=e[i],o=[...n,i],s=t(String(i),a,o);if(s===void 0)continue;let c=tg(s);r.push(Bg(c,t,o))}return r}function Ug(e,t){return Array.from(Wg(e,t)).join(`
79
+ `)}function Wg(e,t){let n=tg(e),r=Gg(t);return wg(r.replacer?zg(n,r.replacer):n,r,0)}function Gg(e){return{indent:e?.indent??2,delimiter:e?.delimiter??Qh,keyFolding:e?.keyFolding??`off`,flattenDepth:e?.flattenDepth??1/0,replacer:e?.replacer}}function Kg(e){return typeof e==`string`?e:Ug(e)}function qg(){let e=process.env.ZENSKAR_MCP_UI_ENABLED;return e==null||e===``?!0:!/^(0|false|no|off)$/i.test(String(e).trim())}function Jg(){let e=process.env.ZENSKAR_MCP_UI_DISABLED_TOOLS;return e?new Set(String(e).split(`,`).map(e=>e.trim()).filter(Boolean)):new Set}const Yg=process.env.ZENSKAR_MCP_UI_DEBUG===`true`||process.env.MCP_DEBUG===`true`;function Xg(...e){Yg&&console.error(`[ui-wrap]`,...e)}function Zg(e,t,n,r){if(!qg())return Xg(e,`skipped: ZENSKAR_MCP_UI_ENABLED explicitly disabled`),$g(n);let i=Lh(e);if(i.mode!==`ui`)return Xg(e,`skipped: not in registry, mode=`,i.mode),$g(n);if(Jg().has(e))return Xg(e,`skipped: in ZENSKAR_MCP_UI_DISABLED_TOOLS`),$g(n);let a;try{a=i.toPayload(t,r)}catch(t){return Xg(e,`toPayload threw:`,t.message),$g(n)}let o=Qg(a);if(o<(i.threshold??0))return Xg(e,`below threshold:`,o,`<`,i.threshold),$g(n);let s=Zh(Xh());return Xg(e,`OK shape=`,i.shape,`items=`,o,`client=`,s),s===`coding-agent`?$g(n):s===`widget-host`?{content:[{type:`text`,text:(o<=1&&i.shape.includes(`detail`)?`Full detail rendered in widget above — user already sees every field. Do not summarize or restate. Only respond if user asks a specific question. Reference data below for follow-ups.`:`Data rendered in table widget above. Use values below for follow-up questions — do not restate rows.`)+`
80
+ `+Kg(a)}],structuredContent:a}:$g(n)}function Qg(e){if(!e||typeof e!=`object`)return 0;for(let t of[`customers`,`invoices`,`lines`,`payments`,`credit_notes`,`contracts`,`transactions`,`rows`,`items`,`data`,`addresses`,`payment_methods`,`products`,`plans`,`entries`,`jobs`,`contacts`,`raw_metrics`,`aggregates`,`entities`])if(Array.isArray(e[t]))return e[t].length;if(Number.isFinite(e.total))return e.total;for(let t of[`customer`,`invoice`,`contract`,`credit_note`])if(e[t]&&typeof e[t]==`object`)return 1;return+!!e.html}function $g(e){return{content:[{type:`text`,text:e}]}}const e_=s(import.meta.url),t_=i.dirname(e_),n_={logUsage:async()=>{}},r_=(e,t)=>({valid:!0,adjustedArgs:t,warnings:[],errors:[]}),i_=()=>({message:`Limits validation unavailable`,severity:`info`,suggestions:[]}),$={debug:(e,t)=>{if(process.env.MCP_DEBUG===`true`){let n=new Date().toISOString();console.error(`[${n}] [MCP-DEBUG] ${e}`,t?JSON.stringify(t,null,2):``)}},info:(e,t)=>{let n=new Date().toISOString();console.error(`[${n}] [MCP-INFO] ${e}`,t?JSON.stringify(t,null,2):``)},error:(e,t)=>{let n=new Date().toISOString();console.error(`[${n}] [MCP-ERROR] ${e}`,t?JSON.stringify(t,null,2):``)},warn:(e,t)=>{let n=new Date().toISOString();console.error(`[${n}] [MCP-WARN] ${e}`,t?JSON.stringify(t,null,2):``)}},a_=i.join(t_,`mcp-config.json`);let o_;try{o_=JSON.parse(t.readFileSync(a_,`utf8`))}catch(e){console.error(`Failed to load MCP config:`,e.message),console.error(`Please ensure mcp-config.json exists in the project root`),process.exit(1)}const s_=new mm({name:o_.server?.name||`zenskar-api-server`,version:`1.0.0`});Yh(()=>{let e=s_.server.getClientVersion();return e&&e.name?e.name:null});const c_=new Pm;function l_(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t={...e};return typeof t.timestamp==`string`&&(t.timestamp=u_(t.timestamp)),t.data&&typeof t.data==`object`&&!Array.isArray(t.data)&&(t.data={...t.data},[`DateTime64`,`DateTime`,`DateTime32`].forEach(e=>{typeof t.data[e]==`string`&&(t.data[e]=u_(t.data[e]))})),t}function u_(e){return typeof e==`string`?e.replace(`T`,` `).replace(`t`,` `).replace(/Z$/i,``).trim():e}function d_(e){if(typeof e!=`string`)return e;let t=e.trim();if(!t)return e;switch(t.toLowerCase()){case`boolean`:return`Bool`;case`string`:return`String`;case`int`:case`int64`:return`Int64`;case`float`:case`float64`:case`double`:return`Float64`;case`date`:case`date32`:return`Date32`;case`datetime`:case`datetime64`:return`DateTime64`;case`uuid`:return`UUID`;default:return t}}function f_(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t={...e};if(t.customer_id&&=d_(t.customer_id),t.timestamp&&=d_(t.timestamp),t.data&&typeof t.data==`object`&&!Array.isArray(t.data)){let e={};Object.entries(t.data).forEach(([t,n])=>{e[t]=d_(n)}),t.data=e}return t}function p_(e){return e?Array.isArray(e)?e:Array.isArray(e.results)?e.results:e.api_response===void 0?[]:p_(e.api_response):[]}function m_(e){return!e||typeof e!=`string`?`Uncategorized`:e.trim()||`Uncategorized`}function h_(e){let t=Number(e);return Number.isFinite(t)?t/100:null}function g_(e,t){let n=m_(t);return e===`getBalanceSheet`&&n===`Liabilities`?`Liabilities & Equity`:n}function __(e,t){return(e===`getBalanceSheet`?{Assets:1,Liabilities:2,Equity:3}:{Income:1,Revenue:1,"Cost of Goods Sold":2,Expense:3,Expenses:3,"Other Income":4,"Other Expense":5,"Other Expenses":5})[t]||999}function v_(e){return`${e?.interval_start||`unknown_start`}__${e?.interval_end||`unknown_end`}`}function y_(e){return Object.values(e).sort((e,t)=>String(e.interval_start).localeCompare(String(t.interval_start)))}function b_(e,t,n){let r=new Map,i=new Map;t.forEach(t=>{let a=g_(e,t.account_category),o=v_(t),s=r.get(o)||{key:o,interval_start:t.interval_start||null,interval_end:t.interval_end||null};r.set(o,s),i.has(a)||i.set(a,{category:a,accounts:new Map,totals_by_period:{},total_balance:0,total_debits:0,total_credits:0});let c=i.get(a),l=t.account_id||`unknown_account`,u=n.get(l)||{};c.accounts.has(l)||c.accounts.set(l,{account_id:l,account_name:t.account_name||u.name||l,account_description:t.account_description||u.description||null,account_category:a,parent_path:t.account_parent_path||u.parent_path||null,balance_normality:t.balance_normality||u.balance_normality||null,periods:{},total_balance:0,total_debits:0,total_credits:0});let d=c.accounts.get(l);d.periods[o]={interval_start:t.interval_start||null,interval_end:t.interval_end||null,balance:t.balance??0,display_balance:h_(t.balance??0),debits:t.debits??0,display_debits:h_(t.debits??0),credits:t.credits??0,display_credits:h_(t.credits??0)},d.total_balance+=Number(t.balance||0),d.total_debits+=Number(t.debits||0),d.total_credits+=Number(t.credits||0);let f=c.totals_by_period[o]||{interval_start:t.interval_start||null,interval_end:t.interval_end||null,balance:0,debits:0,credits:0,display_balance:0,display_debits:0,display_credits:0};f.balance+=Number(t.balance||0),f.debits+=Number(t.debits||0),f.credits+=Number(t.credits||0),f.display_balance=h_(f.balance),f.display_debits=h_(f.debits),f.display_credits=h_(f.credits),c.totals_by_period[o]=f,c.total_balance+=Number(t.balance||0),c.total_debits+=Number(t.debits||0),c.total_credits+=Number(t.credits||0)});let a=Array.from(i.values()).sort((t,n)=>{let r=__(e,t.category)-__(e,n.category);return r===0?t.category.localeCompare(n.category):r}).map(e=>({category:e.category,accounts:Array.from(e.accounts.values()).sort((e,t)=>e.account_name.localeCompare(t.account_name)).map(e=>({...e,periods:y_(e.periods)})),totals_by_period:y_(e.totals_by_period),total_balance:e.total_balance,display_total_balance:h_(e.total_balance),total_debits:e.total_debits,display_total_debits:h_(e.total_debits),total_credits:e.total_credits,display_total_credits:h_(e.total_credits)}));return{report_type:e===`getBalanceSheet`?`balance_sheet`:`income_statement`,periods:Array.from(r.values()).sort((e,t)=>String(e.interval_start).localeCompare(String(t.interval_start))),sections:a}}function x_(e){if(!e)return``;let t=e.account_category||``;return t===`Liabilities`?`Liabilities & Equity`:t}function S_(e){let t=[...e].map(e=>({...e,account_category:x_(e)})).sort((e,t)=>{let n=x_(e).localeCompare(x_(t));return n===0?String(e.name||``).localeCompare(String(t.name||``)):n}),n=new Map;t.forEach(e=>{let t=x_(e)||`Uncategorized`;n.has(t)||n.set(t,[]),n.get(t).push(e)}),[`Assets`,`Liabilities & Equity`,`Equity`,`Income`,`Expenses`].forEach(e=>{n.has(e)||n.set(e,[])});let r=Array.from(n.entries()).sort((e,t)=>e[0].localeCompare(t[0])).map(([e,t])=>({id:e,name:e,description:e,account_category:e,is_parent:!0,parent_path:null,children:t.map(t=>({...t,parent_path:t.parent_path||e}))})),i=r.find(e=>e.name===`Liabilities & Equity`);return i&&(i.children.some(e=>e.name===`Equity`)||(i.children.push({id:`Equity`,name:`Equity`,description:`Equity`,account_category:`Liabilities & Equity`,balance_normality:`credit`,is_parent:!0,parent_path:`Liabilities & Equity`,custom_data:{default_account:!1},children:[]}),i.children.push({id:`Equity:Retained Earnings`,name:`Retained Earnings`,description:`Retained Earnings`,account_category:`Liabilities & Equity`,balance_normality:`credit`,is_parent:!1,parent_path:`Equity`,custom_data:{default_account:!1}}))),r}function C_(e){if(!e||!Array.isArray(e.results))return e;let t=e.results.reduce((e,t)=>{let n=t.status||`unknown`;return e[n]=(e[n]||0)+1,e},{});return{...e,summary:{total_count:e.total_count??e.results.length,returned_count:e.results.length,page_status_counts:t,has_more:!!e.next,note:e.next?`Showing ${e.results.length} jobs from the current page. Use the cursor to continue through the remaining jobs.`:`Showing ${e.results.length} jobs from the current page.`}}}function w_(e){if(!e||!Array.isArray(e.results))return e;let t=[...e.results].sort((e,t)=>{let n=m_(e.account_category),r=m_(t.account_category),i=n.localeCompare(r);return i===0?String(e.name||``).localeCompare(String(t.name||``)):i}),n=t.reduce((e,t)=>{let n=m_(t.account_category);return e[n]=e[n]||[],e[n].push(t),e},{});return{...e,results:t,grouped_view:n}}async function T_(e,t){let n=await fetch(e,{method:`GET`,headers:t}),r=await n.text();if(!n.ok)throw Error(`Supplemental fetch failed: ${n.status} ${n.statusText}\nResponse: ${r}`);try{return JSON.parse(r)}catch{throw Error(`Supplemental fetch returned non-JSON response: ${r}`)}}async function E_(e,t,n){let r=e.rawMetricId,i=await T_(`${n}/rawmetric/${encodeURIComponent(r)}`,t);if(!i?.api_slug)throw Error(`Unable to resolve api_slug for raw metric ${r}`);let a={...t,apiversion:`20240301`},o={limit:e.limit??20,offset:e.offset??0,order_by:e.order_by??[{column:`timestamp`,type:`DESC`}],aggregate_operation:e.aggregate_operation??null,customer_mapping:null,end_date_mapping:null,start_date_mapping:null,table_name:`raw_metric_${i.api_slug}`,visual_query:{groups:[{filters:Array.isArray(e.filters)?e.filters:[],logic:`AND`}],logic:`AND`}},s=await fetch(`${n}/aggregate/visualquery/preview`,{method:`POST`,headers:a,body:JSON.stringify(o)}),c=await s.text();if(!s.ok)throw Error(`API request failed: ${s.status} ${s.statusText}\nResponse: ${c}`);try{return JSON.parse(c)}catch{return c}}async function D_(e,t,n,r){if(!t||!Array.isArray(t.results))return t;try{let i=p_(await T_(`${r}/accounting_new/chart_of_accounts`,n)),a=new Map(i.filter(e=>e&&e.id).map(e=>[e.id,e])),o=t.results.map(t=>{let n=a.get(t.account_id)||{};return{...t,account_name:n.name||t.account_id||null,account_description:n.description||null,account_category:g_(e,n.account_category),account_parent_path:n.parent_path||null,balance_normality:n.balance_normality||null,display_balance:h_(t.balance??0),display_debits:h_(t.debits??0),display_credits:h_(t.credits??0)}}),s=b_(e,o,a);if(e===`getBalanceSheet`){let e=new URLSearchParams;n.apiversion&&e.set(`apiversion`,n.apiversion);let t=await T_(`${r}/accounting_new/income_statement/v2`,n),i=Array.isArray(t?.results)?t.results:[],a={};i.forEach(e=>{let t=v_(e),n=a[t]||{interval_start:e.interval_start||null,interval_end:e.interval_end||null,balance:0,debits:0,credits:0};n.balance+=Number(e.balance||0),n.debits+=Number(e.debits||0),n.credits+=Number(e.credits||0),a[t]=n});let o=y_(Object.fromEntries(Object.entries(a).map(([e,t])=>[e,{...t,display_balance:h_(t.balance),display_debits:h_(t.debits),display_credits:h_(t.credits)}]))),c={account_id:`Equity:Retained Earnings`,account_name:`Retained Earnings (Derived)`,account_description:`Derived from the companion income statement for MCP presentation.`,account_category:`Liabilities & Equity`,parent_path:`Equity`,balance_normality:`credit`,periods:o,total_balance:o.reduce((e,t)=>e+Number(t.balance||0),0),display_total_balance:h_(o.reduce((e,t)=>e+Number(t.balance||0),0)),total_debits:o.reduce((e,t)=>e+Number(t.debits||0),0),display_total_debits:h_(o.reduce((e,t)=>e+Number(t.debits||0),0)),total_credits:o.reduce((e,t)=>e+Number(t.credits||0),0),display_total_credits:h_(o.reduce((e,t)=>e+Number(t.credits||0),0))},l=s.sections.find(e=>e.category===`Liabilities & Equity`);l||(l={category:`Liabilities & Equity`,accounts:[],totals_by_period:[],total_balance:0,display_total_balance:0,total_debits:0,display_total_debits:0,total_credits:0,display_total_credits:0},s.sections.push(l)),l.accounts.push(c)}return{...t,results:o,statement_view:s}}catch(n){return $.warn(`[${e}] Failed to enrich accounting report output; returning raw report`,{error:n.message}),t}}async function O_(e,t){let n=Date.now();if(e.name===`getCurrentDateTime`){let e=new Date;return{currentDate:e.toISOString().split(`T`)[0],currentDateTime:e.toISOString(),timestamp:e.getTime(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,humanReadable:e.toLocaleString()}}$.debug(`[${e.name}] Raw args received:`,{argKeys:Object.keys(t),argValues:JSON.stringify(t,null,2)});let r=t.__userContext,i={...t};delete i.__userContext,$.debug(`[${e.name}] User context received:`,r?{hasUserId:!!r.userId,hasAuthorization:!!r.authorization,hasOrganization:!!r.organization,authPrefix:r.authorization?r.authorization.substring(0,20)+`...`:`none`}:`NO USER CONTEXT`);let a=e.requestTemplate?.url||`/`,o=e.requestTemplate?.method||`GET`,s=a.startsWith(`http://`)||a.startsWith(`https://`);$.debug(`[${e.name}] Executing ${o} request with args:`,JSON.stringify(i,null,2)),r&&$.debug(`[${e.name}] Using user context:`,{hasApiKey:!!r.apiKey,hasOrganization:!!r.organization,userId:r.userId}),e.args&&e.args.forEach(e=>{e.position===`path`&&i[e.name]!==void 0&&(a=a.replace(`{${e.name}}`,encodeURIComponent(i[e.name])))});let c=new URLSearchParams;e.args&&e.args.forEach(e=>{e.position===`query`&&i[e.name]!==void 0&&i[e.name]!==null&&i[e.name]!==``&&(typeof i[e.name]==`boolean`?c.append(e.name,i[e.name].toString()):Array.isArray(i[e.name])?i[e.name].forEach(t=>{c.append(e.name,t)}):c.append(e.name,i[e.name]))}),Object.keys(i).forEach(t=>{if(!c.has(t)&&i[t]!==void 0&&i[t]!==null&&i[t]!==``){let n=e.args?.some(e=>e.position===`path`&&e.name===t),r=e.args?.some(e=>e.position===`body`&&e.name===t);!n&&!r&&(typeof i[t]==`boolean`?c.append(t,i[t].toString()):Array.isArray(i[t])?i[t].forEach(e=>{c.append(t,e)}):c.append(t,i[t]))}}),c.toString()&&(a+=`?`+c.toString());let l=null;if(o!==`GET`&&o!==`DELETE`&&e.args){let t=e=>{if(typeof e==`number`)return Number.isFinite(e)?Math.floor(e):e;if(typeof e==`string`){let t=Date.parse(e);return Number.isFinite(t)?Math.floor(t/1e3):e}return e},n={};if(e.args.forEach(r=>{if(r.position===`body`&&i[r.name]!==void 0){if(r.type===`datetime`){n[r.name]=t(i[r.name]);return}if(e.name===`ingestRawMetricEvent`&&r.name===`event`){let e=l_(i[r.name]);e&&typeof e==`object`&&!Array.isArray(e)?Object.entries(e).forEach(([e,t])=>{t!==void 0&&(n[e]=t)}):n[r.name]=e}else n[r.name]=i[r.name]}}),e.name===`createCustomer`||e.name===`updateCustomer`){let t=(t,r)=>{let i={[`${t}line1`]:`line1`,[`${t}line2`]:`line2`,[`${t}line3`]:`line3`,[`${t}city`]:`city`,[`${t}state`]:`state`,[`${t}zipCode`]:`zipCode`,[`${t}country`]:`country`,[`${t}country_code`]:`country_code`},a={},o=!1;Object.entries(i).forEach(([e,t])=>{n[e]!==void 0&&(a[t]=n[e],delete n[e],o=!0)}),o&&(n[r]=a,$.debug(`[${e.name}] Transformed flat ${t}* fields into ${r} object`))};t(`address_`,`address`),t(`ship_to_`,`ship_to_address`)}if(e.name===`createBusinessEntity`&&((t,r)=>{let i={[`${t}line1`]:`line1`,[`${t}line2`]:`line2`,[`${t}line3`]:`line3`,[`${t}city`]:`city`,[`${t}state`]:`state`,[`${t}zipCode`]:`zipCode`,[`${t}country`]:`country`},a={},o=!1;Object.entries(i).forEach(([e,t])=>{n[e]!==void 0&&(a[t]=n[e],delete n[e],o=!0)}),o&&(n[r]=a,$.debug(`[${e.name}] Transformed flat ${t}* fields into ${r} object`))})(`address_`,`address`),e.name===`getInvoicePreviewHtml`&&!i.orgId){let e=r?.organization||process.env.ZENSKAR_ORGANIZATION;e&&(i.orgId=e)}if(e.name===`extractContractFromRaw`&&!n.organization_id){let t=r?.organization||process.env.ZENSKAR_ORGANIZATION;t&&(n.organization_id=t,$.debug(`[${e.name}] Auto-populated organization_id: ${t}`))}e.name===`createRawMetric`&&(n.connector||=i.connector||`push_to_zenskar`,n.api_type||=i.api_type||`PUSH`,n.dataschema||={customer_id:`string`,timestamp:`timestamp`,data:{usage_amount:`decimal`,feature_id:`string`}},n.dataschema&&=f_(n.dataschema),n.column_order=[`timestamp`]),Object.keys(n).length>0?l=JSON.stringify(n):(o===`PATCH`||o===`POST`||o===`PUT`)&&(l=`{}`)}let u={"Content-Type":`application/json`,"User-Agent":`Zenskar-MCP-Server/1.0.0`,apiversion:`20230501`},d=r?.organization||process.env.ZENSKAR_ORGANIZATION,f=r?.authorization||r?.headers?.authorization||r?.headers?.Authorization||process.env.ZENSKAR_AUTH_TOKEN,p=r?.apiKey||r?.headers?.[`x-api-key`]||process.env.ZENSKAR_API_KEY||process.env.ZENSKAR_AUTH_TOKEN;if(d)u.organisation=d;else throw $.error(`[${e.name}] SECURITY ERROR: No organization ID provided`),Error(`Organization ID is required for API access. Set ZENSKAR_ORGANIZATION env var or provide in user context.`);if(f&&f.startsWith(`eyJ`))u.Authorization=f.startsWith(`Bearer `)?f:`Bearer ${f}`;else if(p)u[`x-api-key`]=p;else throw $.error(`[${e.name}] SECURITY ERROR: No authorization provided`),Error(`Authorization is required. Set ZENSKAR_AUTH_TOKEN (JWT) or ZENSKAR_API_KEY env var.`);if(r?.headers){let e=new Set(Object.keys(u).map(e=>e.toLowerCase())),t=new Set([`__proto__`,`prototype`,`constructor`]);Object.keys(r.headers).forEach(n=>{t.has(n)||Object.prototype.hasOwnProperty.call(r.headers,n)&&r.headers[n]&&!e.has(n.toLowerCase())&&(u[n]=r.headers[n])})}$.debug(`[${e.name}] Using headers:`,{hasOrganization:!!u.organisation,hasAuthorization:!!u.Authorization,hasApiKey:!!u[`x-api-key`],source:r?.organization?`userContext`:`env`}),e.requestTemplate?.headers&&(Array.isArray(e.requestTemplate.headers)?e.requestTemplate.headers.forEach(e=>{u[e.key]=e.value}):Object.keys(e.requestTemplate.headers).forEach(t=>{u[t]=e.requestTemplate.headers[t]}));let m;if(s)m=a,$.debug(`[${e.name}] Using absolute URL: ${m}`);else{let t=process.env.ZENSKAR_API_BASE_URL||`https://api.zenskar.com`;m=t+a,$.debug(`[${e.name}] Using relative URL with base: ${t} + ${a} = ${m}`)}$.debug(`[${e.name}] Making ${o} request to: ${m}`),$.info(`[${e.name}] MULTI-TENANT SECURITY CHECK - Headers being sent:`,{organization:u.organisation||`MISSING`,hasAuth:!!u.Authorization,authPrefix:u.Authorization?u.Authorization.substring(0,30)+`...`:`NONE`,allHeaders:JSON.stringify(u,null,2)});try{if(e.name===`getRawMetricLogs`){let t=await E_(i,u,process.env.ZENSKAR_API_BASE_URL||`https://api.zenskar.com`);return $.debug(`[${e.name}] Successfully processed frontend-style usage-event logs`),t}let t=await fetch(m,{method:o,headers:u,body:l}),r=await t.text(),a=Date.now()-n;if($.info(`[${e.name}] Response received in ${a}ms - Status: ${t.status}, Size: ${r.length} chars`),$.info(`[${e.name}] Raw response body:`,r),!t.ok){$.error(`[${e.name}] API Error Response:`,r);let n=`API request failed: ${t.status} ${t.statusText}\nResponse: ${r}`;throw Error(n)}let s;try{s=JSON.parse(r)}catch{$.debug(`[${e.name}] Failed to parse JSON response, returning as text`),s=r}if(e.name===`getInvoicePreviewHtml`)if(typeof s==`string`)try{let e=Buffer.from(s,`base64`).toString(`utf8`);s=e.includes(`<`)?{html:e}:{html:s}}catch{s={html:s}}else s={html:``};if(e.name===`getBalanceSheet`||e.name===`getIncomeStatement`){let t=process.env.ZENSKAR_API_BASE_URL||`https://api.zenskar.com`;s=await D_(e.name,s,u,t)}return e.name===`listJobs`&&(s=C_(s)),e.name===`listAccounts`&&(s=w_(s)),e.name===`getChartOfAccounts`&&Array.isArray(s)&&(s={raw_accounts:s,chart_view:S_(s)}),e.responseTemplate?.prependBody&&(s={template_info:e.responseTemplate.prependBody,api_response:s}),$.debug(`[${e.name}] Successfully processed response`),s}catch(t){throw $.error(`[${e.name}] Network error:`,t),Error(`Network error: ${t.message}`)}}const k_=300*1e3,A_=process.env.APPROVAL_HMAC_SECRET,j_=!!A_,M_=new Map,N_=new Map;function P_(e){if(e==null)return e;if(typeof structuredClone==`function`)try{return structuredClone(e)}catch{}return JSON.parse(JSON.stringify(e))}function F_(e){let t=e?P_(e):{};return delete t.__userContext,t}function I_(t){return e.createHmac(`sha256`,A_).update(t).digest(`base64url`)}function L_(t,n){let r=Date.now(),i=r+k_,a=F_(n);if(j_){let n={toolName:t,args:a,issuedAt:r,expiresAt:i,nonce:e.randomBytes(12).toString(`base64url`)},o=Buffer.from(JSON.stringify(n),`utf8`).toString(`base64url`);return`v1.${o}.${I_(o)}`}let o=Mm();return M_.set(o,{toolName:t,issuedAt:r,expiresAt:i,args:a}),o}function R_(t,n){if(!t||typeof t!=`string`)return null;if(j_){let r=t.split(`.`);if(r.length!==3)return null;let[i,a,o]=r;if(i!==`v1`)return null;let s=I_(a),c=Buffer.from(o,`base64url`),l=Buffer.from(s,`base64url`);if(c.length!==l.length||!e.timingSafeEqual(c,l))return null;let u;try{u=JSON.parse(Buffer.from(a,`base64url`).toString(`utf8`))}catch{return null}return u.toolName!==n||typeof u.expiresAt!=`number`||u.expiresAt<Date.now()||N_.has(t)?null:(N_.set(t,u.expiresAt),u)}let r=M_.get(t);return!r||(M_.delete(t),r.toolName!==n)||r.expiresAt<Date.now()?null:r}setInterval(()=>{let e=Date.now();for(let[t,n]of M_)n.expiresAt<e&&M_.delete(t);for(let[t,n]of N_)n<e&&N_.delete(t)},6e4).unref();function z_(e,t){return(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0)(e.modifiedArguments)?{args:e.modifiedArguments,source:`modifiedArguments`}:{args:t.args,source:`tokenSnapshot`}}function B_(e,t){let n=e.__userContext;Object.keys(e).forEach(t=>{t!==`__userContext`&&delete e[t]}),Object.assign(e,t),e.__userContext=n}function V_(e,t){if(!e.needsApproval)return!1;let n=t.__userContext,r=n&&n.approval;if(r&&r.approved===!0){let n=R_(r.token,e.name);if(n){let{args:i,source:a}=z_(r,n);return $.info(`[${e.name}] Approval token verified; arg source=${a}`),B_(t,i),$.info(`[${e.name}] Restored arguments for approved execution:`,Object.keys(i)),!1}$.warn(`[${e.name}] Approval received without valid token (got: ${r.token?`expired/mismatched`:`missing`}); requiring re-approval`)}return typeof e.needsApproval==`function`?e.needsApproval(t):e.needsApproval===!0}function H_(e,t){t.__userContext;let n={...t};delete n.__userContext;let r=L_(e.name,t);return{type:`approval_required`,toolName:e.name,toolDescription:e.description,arguments:n,approvalToken:r,approvalTokenExpiresInSeconds:Math.floor(k_/1e3),approvalConfig:e.approvalConfig||{title:`Approve ${e.name}`,description:`This action requires your approval: ${e.description}`,warningText:`Please review the parameters carefully before proceeding.`,confirmText:`Approve`,cancelText:`Cancel`},fields:(e.args||[]).map(t=>({name:t.name,label:t.description||t.name,type:W_(t.type),required:t.required||!1,value:n[t.name],sensitive:e.approvalConfig?.sensitiveFields?.includes(t.name)||!1}))}}function U_(e,t){let n=[];if(e===`createProductPricing`){let e=t.pricing_data;!e||typeof e!=`object`?n.push(`'pricing_data' is required and must be an object containing 'pricing_type' and 'currency'.`):(e.pricing_type||n.push(`'pricing_data.pricing_type' is required (e.g. 'per_unit', 'flat_fee', 'tiered', 'volume', 'percent', 'package').`),e.currency||n.push(`'pricing_data.currency' is required (ISO 4217, e.g. 'USD').`));let r=t.quantity;!r||typeof r!=`object`?n.push(`'quantity' is required and must be an object: {type:'fixed'|'metered', quantity?, unit?, aggregate_id?}. Without it the UI shows 0 for billing_metric.`):(r.type!==`fixed`&&r.type!==`metered`&&n.push(`'quantity.type' must be exactly 'fixed' or 'metered'.`),r.type===`fixed`&&(r.quantity==null||!r.unit)&&n.push(`'quantity.type'='fixed' requires both 'quantity' (number) and 'unit' (label string).`),r.type===`metered`&&!r.aggregate_id&&n.push(`'quantity.type'='metered' requires 'aggregate_id' (UUID of the billable metric).`));let i=t.billing_period;!i||typeof i!=`object`?n.push(`'billing_period' is required and must be an object: {cadence:'P1M'|'P3M'|'P1Y'|..., offset:'P0D'|...}. Without it the UI renders 'Undefined- Every Undefined Undefined'.`):(i.cadence||n.push(`'billing_period.cadence' is required (ISO-8601 duration: 'P1M'=monthly, 'P3M'=quarterly, 'P1Y'=yearly).`),i.offset||n.push(`'billing_period.offset' is required (ISO-8601 duration, 'P0D' for no offset).`))}if(e===`createPlan`){(!t.schedule||typeof t.schedule!=`object`||!t.schedule.duration)&&n.push(`'schedule' is required and must include 'duration' (ISO-8601, e.g. 'P1Y').`),t.status||n.push(`'status' is required: 'draft' | 'active' | 'archived'.`);let e=t.phases;!Array.isArray(e)||e.length===0?n.push(`'phases' must be a non-empty array. A plan with no phases is unusable in PlansV2 — include at least one phase with name, schedule, order, and either features or pricings.`):e.forEach((e,t)=>{if(!e||typeof e!=`object`){n.push(`'phases[${t}]' must be an object.`);return}e.name||n.push(`'phases[${t}].name' is required.`),(!e.schedule||!e.schedule.duration)&&n.push(`'phases[${t}].schedule.duration' is required (ISO-8601).`),typeof e.order!=`number`&&n.push(`'phases[${t}].order' is required (integer, 0-indexed).`),!e.features&&(!Array.isArray(e.pricings)||e.pricings.length===0)&&n.push(`'phases[${t}]' has neither 'features' nor non-empty 'pricings' — phase will be empty in the UI.`)})}if(e===`generateInvoice`){let e=e=>{if(typeof e==`number`)return Number.isInteger(e)?e:null;if(typeof e==`string`){let t=Date.parse(e);return Number.isFinite(t)?Math.floor(t/1e3):null}return null},r=e(t.from_date),i=e(t.to_date);r===null&&n.push(`'from_date' must be either an integer UNIX timestamp (seconds) or an ISO-8601 datetime string. Copy from getContractBillingCycles.start_date.`),i===null&&n.push(`'to_date' must be either an integer UNIX timestamp (seconds) or an ISO-8601 datetime string. Copy from getContractBillingCycles.end_date.`),r!==null&&i!==null&&i<=r&&n.push(`'to_date' must be strictly greater than 'from_date'.`),e(t.bill_for_date)===null&&n.push(`'bill_for_date' is REQUIRED (UNIX seconds or ISO-8601 string). Without it the API returns a $0 invoice. Copy from getContractBillingCycles.bill_for_date — do NOT compute.`),(!Number.isInteger(t.billing_cycle_start_day)||t.billing_cycle_start_day<1||t.billing_cycle_start_day>31)&&n.push(`'billing_cycle_start_day' is REQUIRED and must be an integer 1-31. Copy from getContractBillingCycles.billing_cycle_start_day.`)}return e===`pauseContract`&&(t.start_date||n.push(`'start_date' is required (ISO 8601).`),t.unpause_extension_policy||n.push(`'unpause_extension_policy' is required: 'extend' or 'overlap'.`)),{valid:n.length===0,errors:n}}function W_(e){switch(e){case`string`:return`text`;case`integer`:case`number`:return`number`;case`boolean`:return`checkbox`;default:return`text`}}Uh(s_),o_.tools&&o_.tools.length>0&&o_.tools.forEach(e=>{$.info(`Registering tool: ${e.name}`);let t=Im(e.args||[]),n=Lh(e.name),r=n.mode===`ui`?(()=>{let e=Vm(n.shape);return{"openai/outputTemplate":e,"ui/resourceUri":e,ui:{resourceUri:e}}})():void 0;s_.registerTool(e.name,{title:e.name,description:e.description,inputSchema:t,...r?{_meta:r}:{}},async t=>{let n=Date.now(),r=`success`,i=null,a=0,o=0,s=null,c=null;try{$.debug(`[${e.name}] Tool execution started`),$.info(`[${e.name}] Raw args received:`,{argKeys:Object.keys(t),hasUserContextInArgs:!!t.__userContext,userContextInArgs:t.__userContext,approvedInArgs:t.__userContext?.approved});let l=U_(e.name,t);if(!l.valid){$.error(`[${e.name}] Tool execution blocked due to invalid arguments (pre-approval):`,l.errors),r=`blocked`,i=`invalid_args: ${l.errors.join(`; `)}`;let t={type:`invalid_arguments`,toolName:e.name,errors:l.errors};return{content:[{type:`text`,text:JSON.stringify(t,null,2)},{type:`text`,text:`ACTION_NOT_EXECUTED — INVALID_ARGUMENTS\n\nTool '${e.name}' was NOT executed because the supplied arguments are invalid or incomplete:\n\n`+l.errors.map((e,t)=>`${t+1}. ${e}`).join(`
81
81
  `)+`
82
82
 
83
- Fix the arguments and call again. Do NOT report success to the user.`}],isError:!0}}let u=B_(e,t),d=t.__userContext;if($.info(`[${e.name}] Approval check:`,{needsApproval:u,hasUserContext:!!d,userContextKeys:d?Object.keys(d):[],hasApprovalBlock:!!(d&&d.approval),hasToken:!!(d&&d.approval&&d.approval.token)}),u){$.info(`[${e.name}] Tool requires approval, generating approval request`);let n=V_(e,t);return{content:[{type:`text`,text:JSON.stringify(n,null,2)},{type:`text`,text:`ACTION_NOT_EXECUTED — APPROVAL_REQUIRED\n\nTool '${e.name}' was NOT executed. The host must render an approval dialog from the JSON payload above and re-invoke this tool with __userContext.approval = {approved: true, token: '<approvalToken from payload>'} to actually perform the action. The token is single-use and expires in ${Math.floor(O_/1e3)}s. Do NOT fabricate the token. Do NOT report success to the user; surface the dialog instead.`}],isApprovalRequired:!0,approvalRequest:n}}let f=H_(e.name,t);if(!f.valid)return $.error(`[${e.name}] Approved arguments failed validation:`,f.errors),r=`blocked`,i=`invalid_args_post_approval: ${f.errors.join(`; `)}`,{content:[{type:`text`,text:JSON.stringify({type:`invalid_arguments`,toolName:e.name,errors:f.errors},null,2)},{type:`text`,text:`ACTION_NOT_EXECUTED — INVALID_ARGUMENTS
83
+ Fix the arguments and call again. Do NOT report success to the user.`}],isError:!0}}let u=V_(e,t),d=t.__userContext;if($.info(`[${e.name}] Approval check:`,{needsApproval:u,hasUserContext:!!d,userContextKeys:d?Object.keys(d):[],hasApprovalBlock:!!(d&&d.approval),hasToken:!!(d&&d.approval&&d.approval.token)}),u){$.info(`[${e.name}] Tool requires approval, generating approval request`);let n=H_(e,t);return{content:[{type:`text`,text:JSON.stringify(n,null,2)},{type:`text`,text:`ACTION_NOT_EXECUTED — APPROVAL_REQUIRED\n\nTool '${e.name}' was NOT executed. The host must render an approval dialog from the JSON payload above and re-invoke this tool with __userContext.approval = {approved: true, token: '<approvalToken from payload>'} to actually perform the action. The token is single-use and expires in ${Math.floor(k_/1e3)}s. Do NOT fabricate the token. Do NOT report success to the user; surface the dialog instead.`}],isApprovalRequired:!0,approvalRequest:n}}let f=U_(e.name,t);if(!f.valid)return $.error(`[${e.name}] Approved arguments failed validation:`,f.errors),r=`blocked`,i=`invalid_args_post_approval: ${f.errors.join(`; `)}`,{content:[{type:`text`,text:JSON.stringify({type:`invalid_arguments`,toolName:e.name,errors:f.errors},null,2)},{type:`text`,text:`ACTION_NOT_EXECUTED — INVALID_ARGUMENTS
84
84
 
85
85
  Approved arguments failed validation. The user-edited values from the approval dialog do not satisfy the tool schema:
86
86
 
87
87
  `+f.errors.map((e,t)=>`${t+1}. ${e}`).join(`
88
88
  `)+`
89
89
 
90
- Re-issue the call with corrected arguments; a new approval gate will be required.`}],isError:!0};let p=d?.userId||`unknown`,m=d?.chatId||null,h=JSON.stringify(t);a=Math.ceil(h.length/4);let g=t_(e.name,t);if(!g.valid){e.name,$.error(`[${e.name}] Tool execution blocked due to limits:`,g.errors),r=`blocked`,i=g.errors.join(`; `),o=200;try{await e_.logUsage({userId:p,chatId:m,tool:e.name,requestTokens:a,responseTokens:o,totalTokens:a+o,status:r,reason:i,limitRequested:t.limit,limitApplied:null})}catch(t){$.error(`[${e.name}] Failed to log token usage:`,t)}return{content:[{type:`text`,text:`I'm sorry, but this request is too large to process efficiently. To get better results, please try:
90
+ Re-issue the call with corrected arguments; a new approval gate will be required.`}],isError:!0};let p=d?.userId||`unknown`,m=d?.chatId||null,h=JSON.stringify(t);a=Math.ceil(h.length/4);let g=r_(e.name,t);if(!g.valid){e.name,$.error(`[${e.name}] Tool execution blocked due to limits:`,g.errors),r=`blocked`,i=g.errors.join(`; `),o=200;try{await n_.logUsage({userId:p,chatId:m,tool:e.name,requestTokens:a,responseTokens:o,totalTokens:a+o,status:r,reason:i,limitRequested:t.limit,limitApplied:null})}catch(t){$.error(`[${e.name}] Failed to log token usage:`,t)}return{content:[{type:`text`,text:`I'm sorry, but this request is too large to process efficiently. To get better results, please try:
91
91
 
92
92
  • Using smaller numbers when asking for lists (try 10-20 items instead of larger amounts)
93
93
  • Being more specific with your search criteria
94
94
  • Breaking your request into smaller parts
95
95
 
96
- For example, instead of asking for all customers, try asking for "customers created this month" or "customers from a specific region."`}],isError:!0}}let _=g.adjustedArgs;t.limit&&_.limit&&t.limit!==_.limit&&(s=t.limit,c=_.limit);let v=n_(e.name,_);$.info(`[${e.name}] Token usage assessment:`,{estimatedTokens:v.message,severity:v.severity,suggestions:v.suggestions,originalArgs:JSON.stringify(t),adjustedArgs:JSON.stringify(_)});let y=await D_(e,_),b=o_.processResponse(y,e.name),x=Date.now()-n;$.info(`[${e.name}] Tool execution completed in ${x}ms`);let S=typeof b==`string`?b:JSON.stringify(b,null,2);(g.warnings.length>0||v.severity===`warning`)&&(r=`truncated`,i=`Response optimized due to size limits`,S+=`
96
+ For example, instead of asking for all customers, try asking for "customers created this month" or "customers from a specific region."`}],isError:!0}}let _=g.adjustedArgs;t.limit&&_.limit&&t.limit!==_.limit&&(s=t.limit,c=_.limit);let v=i_(e.name,_);$.info(`[${e.name}] Token usage assessment:`,{estimatedTokens:v.message,severity:v.severity,suggestions:v.suggestions,originalArgs:JSON.stringify(t),adjustedArgs:JSON.stringify(_)});let y=await O_(e,_),b=c_.processResponse(y,e.name),x=Date.now()-n;$.info(`[${e.name}] Tool execution completed in ${x}ms`);let S=typeof b==`string`?b:JSON.stringify(b,null,2);(g.warnings.length>0||v.severity===`warning`)&&(r=`truncated`,i=`Response optimized due to size limits`,S+=`
97
97
 
98
98
  ---
99
99
  **📋 Response Summary:**
@@ -103,8 +103,8 @@ Your request returned a large amount of data, so I've shown you a summary with t
103
103
  • Data from a particular time period
104
104
  • Filtered results based on status or category
105
105
 
106
- This helps ensure faster and more focused results.`),o=Math.ceil(S.length/4);try{await e_.logUsage({userId:p,chatId:m,tool:e.name,requestTokens:a,responseTokens:o,totalTokens:a+o,status:r,reason:i,limitRequested:s,limitApplied:c})}catch(t){$.error(`[${e.name}] Failed to log token usage:`,t)}return Yg(e.name,y,S,_)}catch(r){let i=Date.now()-n;$.error(`[${e.name}] Tool execution failed after ${i}ms:`,r);let l=t.__userContext,u=l?.userId||`unknown`,d=l?.chatId||null,f=`Error executing ${e.name}: ${r.message}\n\nThis might be due to:\n- Invalid parameters\n- API rate limiting\n- Network connectivity issues\n- Authentication problems\n- Token usage limits exceeded\n\nPlease check the parameters and try again with smaller limits if needed.`;o=Math.ceil(f.length/4);try{await e_.logUsage({userId:u,chatId:d,tool:e.name,requestTokens:a,responseTokens:o,totalTokens:a+o,status:`blocked`,reason:`Execution failed: ${r.message}`,limitRequested:s,limitApplied:c})}catch(t){$.error(`[${e.name}] Failed to log token usage:`,t)}return{content:[{type:`text`,text:f}],isError:!0}}})});async function W_(){let e=new Dm;await a_.connect(e),console.error(`Zenskar Intelligent MCP Server running on stdio`),console.error(`Loaded ${i_.tools?.length||0} tools from config`),console.error(`Response optimization: Advanced processor with config-driven optimizations enabled`),i_.tools?.length>0&&(console.error(`
107
- Available tools:`),i_.tools.forEach(e=>{console.error(` • ${e.name}: ${e.description}`)})),console.error(`
106
+ This helps ensure faster and more focused results.`),o=Math.ceil(S.length/4);try{await n_.logUsage({userId:p,chatId:m,tool:e.name,requestTokens:a,responseTokens:o,totalTokens:a+o,status:r,reason:i,limitRequested:s,limitApplied:c})}catch(t){$.error(`[${e.name}] Failed to log token usage:`,t)}return Zg(e.name,y,S,_)}catch(r){let i=Date.now()-n;$.error(`[${e.name}] Tool execution failed after ${i}ms:`,r);let l=t.__userContext,u=l?.userId||`unknown`,d=l?.chatId||null,f=`Error executing ${e.name}: ${r.message}\n\nThis might be due to:\n- Invalid parameters\n- API rate limiting\n- Network connectivity issues\n- Authentication problems\n- Token usage limits exceeded\n\nPlease check the parameters and try again with smaller limits if needed.`;o=Math.ceil(f.length/4);try{await n_.logUsage({userId:u,chatId:d,tool:e.name,requestTokens:a,responseTokens:o,totalTokens:a+o,status:`blocked`,reason:`Execution failed: ${r.message}`,limitRequested:s,limitApplied:c})}catch(t){$.error(`[${e.name}] Failed to log token usage:`,t)}return{content:[{type:`text`,text:f}],isError:!0}}})});async function G_(){let e=new Dm;await s_.connect(e),console.error(`Zenskar Intelligent MCP Server running on stdio`),console.error(`Loaded ${o_.tools?.length||0} tools from config`),console.error(`Response optimization: Advanced processor with config-driven optimizations enabled`),o_.tools?.length>0&&(console.error(`
107
+ Available tools:`),o_.tools.forEach(e=>{console.error(` • ${e.name}: ${e.description}`)})),console.error(`
108
108
  Server ready to handle requests`)}process.on(`SIGINT`,()=>{console.error(`
109
109
  Received SIGINT, shutting down gracefully...`),process.exit(0)}),process.on(`SIGTERM`,()=>{console.error(`
110
- Received SIGTERM, shutting down gracefully...`),process.exit(0)}),W_().catch(e=>{console.error(`Server failed to start:`,e),process.exit(1)});export{};
110
+ Received SIGTERM, shutting down gracefully...`),process.exit(0)}),G_().catch(e=>{console.error(`Server failed to start:`,e),process.exit(1)});export{};
package/dist/ui/app.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>app</title>
7
- <script type="module" crossorigin>(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m={},h=[],g=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_=Array.isArray;function v(e,t){for(var n in t)e[n]=t[n];return e}function y(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function b(t,n,r){var i,a,o,s={};for(o in n)o==`key`?i=n[o]:o==`ref`?a=n[o]:s[o]=n[o];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):r),typeof t==`function`&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return x(t,s,i,a,null)}function x(e,r,i,a,o){var s={type:e,props:r,key:i,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++n,__i:-1,__u:0};return o==null&&t.vnode!=null&&t.vnode(s),s}function S(e){return e.children}function C(e,t){this.props=e,this.context=t}function w(e,t){if(t==null)return e.__?w(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?w(e):null}function T(e){if(e.__P&&e.__d){var n=e.__v,r=n.__e,i=[],a=[],o=v({},n);o.__v=n.__v+1,t.vnode&&t.vnode(o),ae(e.__P,o,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,i,r??w(n),!!(32&n.__u),a),o.__v=n.__v,o.__.__k[o.__i]=o,se(i,o,a),n.__e=n.__=null,o.__e!=r&&E(o)}}function E(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),E(e)}function D(e){(!e.__d&&(e.__d=!0)&&r.push(e)&&!O.__r++||i!=t.debounceRendering)&&((i=t.debounceRendering)||a)(O)}function O(){try{for(var e,t=1;r.length;)r.length>t&&r.sort(o),e=r.shift(),t=r.length,T(e)}finally{r.length=O.__r=0}}function ee(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,g,_,v,y,b=r&&r.__k||h,x=t.length;for(c=te(n,t,b,c,x),d=0;d<x;d++)(p=n.__k[d])!=null&&(f=p.__i!=-1&&b[p.__i]||m,p.__i=d,v=ae(e,p,f,i,a,o,s,c,l,u),g=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&ue(f.ref,null,p),u.push(p.ref,p.__c||g,p)),_==null&&g!=null&&(_=g),(y=!!(4&p.__u))||f.__k===p.__k?(c=k(p,c,e,y),y&&f.__e&&(f.__e=null)):typeof p.type==`function`&&v!==void 0?c=v:g&&(c=g.nextSibling),p.__u&=-7);return n.__e=_,c}function te(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=x(null,o,null,null,null):_(o)?o=e.__k[a]=x(S,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,s=null,(l=o.__i=j(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=w(s)),de(s,s));return r}function k(e,t,n,r){var i,a;if(typeof e.type==`function`){for(i=e.__k,a=0;i&&a<i.length;a++)i[a]&&(i[a].__=e,t=k(i[a],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=w(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function A(e,t){return t||=[],e==null||typeof e==`boolean`||(_(e)?e.some(function(e){A(e,t)}):t.push(e)),t}function j(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function ne(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||g.test(t)?n:n+`px`}function re(e,t,n,r,i){var a,o;n:if(t==`style`)if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||ne(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||ne(e.style,t,n[t])}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(u,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n[l]=r[l]:(n[l]=d,e.addEventListener(t,a?p:f,a)):e.removeEventListener(t,a?p:f,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function ie(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n[c]==null)n[c]=d++;else if(n[c]<r[l])return;return r(t.event?t.event(n):n)}}}function ae(e,n,r,i,a,o,s,c,l,u){var d,f,p,m,g,b,x,w,T,E,D,O,te,k,A,j=n.type;if(n.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),o=[c=n.__e=r.__e]),(d=t.__b)&&d(n);n:if(typeof j==`function`)try{if(w=n.props,T=j.prototype&&j.prototype.render,E=(d=j.contextType)&&i[d.__c],D=d?E?E.props.value:d.__:i,r.__c?x=(f=n.__c=r.__c).__=f.__E:(T?n.__c=f=new j(w,D):(n.__c=f=new C(w,D),f.constructor=j,f.render=fe),E&&E.sub(f),f.state||={},f.__n=i,p=f.__d=!0,f.__h=[],f._sb=[]),T&&f.__s==null&&(f.__s=f.state),T&&j.getDerivedStateFromProps!=null&&(f.__s==f.state&&(f.__s=v({},f.__s)),v(f.__s,j.getDerivedStateFromProps(w,f.__s))),m=f.props,g=f.state,f.__v=n,p)T&&j.getDerivedStateFromProps==null&&f.componentWillMount!=null&&f.componentWillMount(),T&&f.componentDidMount!=null&&f.__h.push(f.componentDidMount);else{if(T&&j.getDerivedStateFromProps==null&&w!==m&&f.componentWillReceiveProps!=null&&f.componentWillReceiveProps(w,D),n.__v==r.__v||!f.__e&&f.shouldComponentUpdate!=null&&!1===f.shouldComponentUpdate(w,f.__s,D)){n.__v!=r.__v&&(f.props=w,f.state=f.__s,f.__d=!1),n.__e=r.__e,n.__k=r.__k,n.__k.some(function(e){e&&(e.__=n)}),h.push.apply(f.__h,f._sb),f._sb=[],f.__h.length&&s.push(f);break n}f.componentWillUpdate!=null&&f.componentWillUpdate(w,f.__s,D),T&&f.componentDidUpdate!=null&&f.__h.push(function(){f.componentDidUpdate(m,g,b)})}if(f.context=D,f.props=w,f.__P=e,f.__e=!1,O=t.__r,te=0,T)f.state=f.__s,f.__d=!1,O&&O(n),d=f.render(f.props,f.state,f.context),h.push.apply(f.__h,f._sb),f._sb=[];else do f.__d=!1,O&&O(n),d=f.render(f.props,f.state,f.context),f.state=f.__s;while(f.__d&&++te<25);f.state=f.__s,f.getChildContext!=null&&(i=v(v({},i),f.getChildContext())),T&&!p&&f.getSnapshotBeforeUpdate!=null&&(b=f.getSnapshotBeforeUpdate(m,g)),k=d!=null&&d.type===S&&d.key==null?ce(d.props.children):d,c=ee(e,_(k)?k:[k],n,r,i,a,o,s,c,l,u),f.base=n.__e,n.__u&=-161,f.__h.length&&s.push(f),x&&(f.__E=f.__=null)}catch(e){if(n.__v=null,l||o!=null)if(e.then){for(n.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,n.__e=c}else{for(A=o.length;A--;)y(o[A]);oe(n)}else n.__e=r.__e,n.__k=r.__k,e.then||oe(n);t.__e(e,n,r)}else o==null&&n.__v==r.__v?(n.__k=r.__k,n.__e=r.__e):c=n.__e=le(r.__e,n,r,i,a,o,s,l,u);return(d=t.diffed)&&d(n),128&n.__u?void 0:c}function oe(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(oe))}function se(e,n,r){for(var i=0;i<r.length;i++)ue(r[i],r[++i],r[++i]);t.__c&&t.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){t.__e(e,n.__v)}})}function ce(e){return typeof e!=`object`||!e||e.__b>0?e:_(e)?e.map(ce):e.constructor===void 0?v({},e):null}function le(n,r,i,a,o,s,c,l,u){var d,f,p,h,g,v,b,x=i.props||m,S=r.props,C=r.type;if(C==`svg`?o=`http://www.w3.org/2000/svg`:C==`math`?o=`http://www.w3.org/1998/Math/MathML`:o||=`http://www.w3.org/1999/xhtml`,s!=null){for(d=0;d<s.length;d++)if((g=s[d])&&`setAttribute`in g==!!C&&(C?g.localName==C:g.nodeType==3)){n=g,s[d]=null;break}}if(n==null){if(C==null)return document.createTextNode(S);n=document.createElementNS(o,C,S.is&&S),l&&=(t.__m&&t.__m(r,s),!1),s=null}if(C==null)x===S||l&&n.data==S||(n.data=S);else{if(s=C==`textarea`&&S.defaultValue!=null?null:s&&e.call(n.childNodes),!l&&s!=null)for(x={},d=0;d<n.attributes.length;d++)x[(g=n.attributes[d]).name]=g.value;for(d in x)g=x[d],d==`dangerouslySetInnerHTML`?p=g:d==`children`||d in S||d==`value`&&`defaultValue`in S||d==`checked`&&`defaultChecked`in S||re(n,d,null,g,o);for(d in S)g=S[d],d==`children`?h=g:d==`dangerouslySetInnerHTML`?f=g:d==`value`?v=g:d==`checked`?b=g:l&&typeof g!=`function`||x[d]===g||re(n,d,g,x[d],o);if(f)l||p&&(f.__html==p.__html||f.__html==n.innerHTML)||(n.innerHTML=f.__html),r.__k=[];else if(p&&(n.innerHTML=``),ee(r.type==`template`?n.content:n,_(h)?h:[h],r,i,a,C==`foreignObject`?`http://www.w3.org/1999/xhtml`:o,s,c,s?s[0]:i.__k&&w(i,0),l,u),s!=null)for(d=s.length;d--;)y(s[d]);l&&C!=`textarea`||(d=`value`,C==`progress`&&v==null?n.removeAttribute(`value`):v!=null&&(v!==n[d]||C==`progress`&&!v||C==`option`&&v!=x[d])&&re(n,d,v,x[d],o),d=`checked`,b!=null&&b!=n[d]&&re(n,d,b,x[d],o))}return n}function ue(e,n,r){try{if(typeof e==`function`){var i=typeof e.__u==`function`;i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(e){t.__e(e,r)}}function de(e,n,r){var i,a;if(t.unmount&&t.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||ue(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){t.__e(e,n)}i.base=i.__P=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&de(i[a],n,r||typeof e.type!=`function`);r||y(e.__e),e.__c=e.__=e.__e=void 0}function fe(e,t,n){return this.constructor(e,n)}function pe(n,r,i){var a,o,s,c;r==document&&(r=document.documentElement),t.__&&t.__(n,r),o=(a=typeof i==`function`)?null:i&&i.__k||r.__k,s=[],c=[],ae(r,n=(!a&&i||r).__k=b(S,null,[n]),o||m,m,r.namespaceURI,!a&&i?[i]:o?null:r.firstChild?e.call(r.childNodes):null,s,!a&&i?i:o?o.__e:r.firstChild,a,c),se(s,n,c)}e=h.slice,t={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},n=0,C.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=v({},this.state);typeof e==`function`&&(e=e(v({},n),this.props)),e&&v(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),D(this))},C.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),D(this))},C.prototype.render=S,r=[],a=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,o=function(e,t){return e.__v.__b-t.__v.__b},O.__r=0,s=Math.random().toString(8),c=`__d`+s,l=`__a`+s,u=/(PointerCapture)$|Capture$/i,d=0,f=ie(!1),p=ie(!0);var M,N,me,he,ge=0,_e=[],P=t,ve=P.__b,ye=P.__r,be=P.diffed,xe=P.__c,Se=P.unmount,Ce=P.__;function we(e,t){P.__h&&P.__h(N,e,ge||t),ge=0;var n=N.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function F(e){return ge=1,Te(Pe,e)}function Te(e,t,n){var r=we(M++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Pe(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=N,!N.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter(function(e){return e.__c});if(i.every(function(e){return!e.__N}))return!a||a.call(this,e,t,n);var o=r.__c.props!==e;return i.some(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a&&a.call(this,e,t,n)||o};N.__f=!0;var a=N.shouldComponentUpdate,o=N.componentWillUpdate;N.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},N.shouldComponentUpdate=i}return r.__N||r.__}function Ee(e,t){var n=we(M++,3);!P.__s&&Ne(n.__H,t)&&(n.__=e,n.u=t,N.__H.__h.push(n))}function De(e){return ge=5,I(function(){return{current:e}},[])}function I(e,t){var n=we(M++,7);return Ne(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Oe(){for(var e;e=_e.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(je),t.__h.some(Me),t.__h=[]}catch(n){t.__h=[],P.__e(n,e.__v)}}}P.__b=function(e){N=null,ve&&ve(e)},P.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ce&&Ce(e,t)},P.__r=function(e){ye&&ye(e),M=0;var t=(N=e.__c).__H;t&&(me===N?(t.__h=[],N.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(je),t.__h.some(Me),t.__h=[],M=0)),me=N},P.diffed=function(e){be&&be(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_e.push(t)!==1&&he===P.requestAnimationFrame||((he=P.requestAnimationFrame)||Ae)(Oe)),t.__H.__.some(function(e){e.u&&(e.__H=e.u),e.u=void 0})),me=N=null},P.__c=function(e,t){t.some(function(e){try{e.__h.some(je),e.__h=e.__h.filter(function(e){return!e.__||Me(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],P.__e(n,e.__v)}}),xe&&xe(e,t)},P.unmount=function(e){Se&&Se(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{je(e)}catch(e){t=e}}),n.__H=void 0,t&&P.__e(t,n.__v))};var ke=typeof requestAnimationFrame==`function`;function Ae(e){var t,n=function(){clearTimeout(r),ke&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);ke&&(t=requestAnimationFrame(n))}function je(e){var t=N,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),N=t}function Me(e){var t=N;e.__c=e.__(),N=t}function Ne(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function Pe(e,t){return typeof t==`function`?t(e):t}function Fe(e,t){for(var n in t)e[n]=t[n];return e}function Ie(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function Le(e,t){this.props=e,this.context=t}(Le.prototype=new C).isPureReactComponent=!0,Le.prototype.shouldComponentUpdate=function(e,t){return Ie(this.props,e)||Ie(this.state,t)};var Re=t.__b;t.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Re&&Re(e)},typeof Symbol<`u`&&Symbol.for;var ze=t.__e;t.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}ze(e,t,n,r)};var Be=t.unmount;function Ve(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=Fe({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return Ve(e,t,n)})),e}function He(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return He(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Ue(){this.__u=0,this.o=null,this.__b=null}function We(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function Ge(){this.i=null,this.l=null}t.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Be&&Be(e)},(Ue.prototype=new C).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=We(r.__v),a=!1,o=function(){a||r.__z||(a=!0,n.__R=null,i?i(c):c())};n.__R=o;var s=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=He(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=s,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},Ue.prototype.componentWillUnmount=function(){this.o=[]},Ue.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=Ve(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&b(S,null,e.fallback);return i&&(i.__u&=-33),[b(S,null,t.__a?null:e.children),i]};var Ke=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!==`t`||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};(Ge.prototype=new C).__a=function(e){var t=this,n=We(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),Ke(t,e,r)):i()};n?n(a):a()}},Ge.prototype.render=function(e){this.i=null,this.l=new Map;var t=A(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},Ge.prototype.componentDidUpdate=Ge.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Ke(e,n,t)})};var qe=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,Je=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ye=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Xe=/[A-Z0-9]/g,Ze=typeof document<`u`,Qe=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};function $e(e,t,n){return t.__k??(t.textContent=``),pe(e,t),typeof n==`function`&&n(),e?e.__c:null}C.prototype.isReactComponent=!0,[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(C.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var et=t.event;t.event=function(e){return et&&(e=et(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var tt={configurable:!0,get:function(){return this.class}},nt=t.vnode;t.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)==-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||Ze&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||Qe(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:Ye.test(a)&&(a=s):s=a=`oninput`:i&&Je.test(a)?a=a.replace(Xe,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&(r.multiple&&Array.isArray(r.value)&&(r.value=A(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),r.defaultValue!=null&&(r.value=A(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,`className`,tt)):t.className&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=qe,nt&&nt(e)};var rt=t.__r;t.__r=function(e){rt&&rt(e),e.__c};var it=t.diffed;t.diffed=function(e){it&&it(e);var t=e.props,n=e.__e;n!=null&&e.type===`textarea`&&`value`in t&&t.value!==n.value&&(n.value=t.value==null?``:t.value)};function at(e){return!!e.__k&&(pe(null,e),!0)}function ot(e){return{render:function(t){$e(t,e)},unmount:function(){at(e)}}}var L=new Map,st=1,ct=new Set;typeof window<`u`&&window.addEventListener(`message`,e=>{let t=e.data;if(!t||typeof t!=`object`||t.jsonrpc!==`2.0`)return;let n=t;if(n.id!=null&&L.has(n.id)){let e=L.get(n.id);L.delete(n.id),n.error?e.reject(n.error):e.resolve(n.result);return}if(n.method){let e={jsonrpc:`2.0`,method:n.method,params:n.params};ct.forEach(t=>{try{t(e)}catch{}})}});function lt(e,t,n=3e4){if(typeof window>`u`||!window.parent)return Promise.reject(Error(`no host`));let r=st++;return new Promise((i,a)=>{let o=setTimeout(()=>{L.has(r)&&(L.delete(r),a(Error(`callHost timeout: ${e}`)))},n);L.set(r,{resolve:e=>{clearTimeout(o),i(e)},reject:e=>{clearTimeout(o),a(e)}}),window.parent.postMessage({jsonrpc:`2.0`,id:r,method:e,params:t},`*`)})}function ut(e,t){typeof window>`u`||!window.parent||window.parent.postMessage({jsonrpc:`2.0`,method:e,params:t},`*`)}var dt=`https://app.zenskar.com`;function ft(e){let t=`${dt}${e.startsWith(`/`)?e:`/${e}`}`;lt(`ui/open-link`,{url:t}).catch(()=>{try{window.open(t,`_blank`,`noopener,noreferrer`)}catch{ut(`ui/message`,{text:`Open: ${t}`})}})}function pt(e,t){let n=n=>{n.method===e&&t(n.params)};return ct.add(n),()=>ct.delete(n)}var mt=0;Array.isArray;function R(e,n,r,i,a,o){n||={};var s,c,l=n;if(`ref`in l)for(c in l={},n)c==`ref`?s=n[c]:l[c]=n[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--mt,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return t.vnode&&t.vnode(u),u}function z({children:e}){return R(`span`,{className:`text-muted-foreground`,children:e})}var ht=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function gt(e){if(!e)return null;let t=e.replace(` `,`T`);/^\d{4}-\d{2}-\d{2}$/.test(t)?t+=`T00:00:00Z`:/[zZ]|[+-]\d{2}:?\d{2}$/.test(t)||(t+=`Z`);let n=new Date(t);return Number.isNaN(n.getTime())?null:n}function _t(e){return e<10?`0`+e:String(e)}function B(e){let t=gt(e);return t?`${ht[t.getUTCMonth()]} ${_t(t.getUTCDate())}, ${t.getUTCFullYear()}`:R(z,{children:`—`})}function V(e){let t=gt(e);if(!t)return R(z,{children:`—`});let n=t.getUTCHours(),r=n>=12?`PM`:`AM`,i=n%12||12;return`${ht[t.getUTCMonth()]} ${_t(t.getUTCDate())}, ${t.getUTCFullYear()} ${_t(i)}:${_t(t.getUTCMinutes())} ${r}`}function vt(e,t=new Date){let n=gt(e);return n?Math.floor((t.getTime()-n.getTime())/864e5):null}function H(e,t=`USD`){if(e==null||!Number.isFinite(e))return R(z,{children:`—`});let n=e/100;try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t,maximumFractionDigits:2}).format(n)}catch{return`${t} ${n.toLocaleString()}`}}function yt(e){return e?e.display?e.display:e.value==null?R(z,{children:`—`}):H(e.value,e.unit||`USD`):R(z,{children:`—`})}function U(e,t=8){return e?e.length<=t?e:e.slice(0,t)+`…`:R(z,{children:`—`})}var bt=`bg-secondary/20 text-secondary ring-1 ring-secondary/30`,xt=`bg-primary/20 text-primary ring-1 ring-primary/30`,St=`bg-destructive/20 text-destructive ring-1 ring-destructive/30`,W=`bg-muted text-muted-foreground ring-1 ring-border`,Ct=`bg-accent text-accent-foreground ring-1 ring-border`,wt=`bg-secondary/12 text-secondary ring-1 ring-secondary/20`,Tt={paid:bt,approved:bt,active:bt,success:bt,posted:bt,upcoming:xt,partially_paid:xt,in_progress:xt,paused:xt,failed:St,disputed:St,draft:W,void:W,voided:W,expired:W,archived:W,issued:wt,scheduled:wt,refunded:Ct},Et=W;function G({status:e}){if(!e)return R(z,{children:`—`});let t=Tt[e.toLowerCase()]||Et,n=Dt(e);return R(`span`,{className:`inline-block whitespace-nowrap rounded-md px-2 py-0.5 text-xs ${t}`,children:n})}function Dt(e){let t=e.replace(/_/g,` `);return t.charAt(0).toUpperCase()+t.slice(1)}function Ot({payload:e}){let t=e.addresses||[];return R(`div`,{className:`space-y-3`,children:[R(`header`,{className:`flex items-baseline justify-between gap-3`,children:R(`h2`,{className:`m-0 text-lg font-semibold`,children:[`Addresses`,` `,R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[`(`,t.length,`)`]}),e.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:[` `,`· `,e.customer_id]}):null]})}),t.length===0?R(`div`,{className:`text-muted-foreground border-border rounded-md border py-8 text-center`,children:`No addresses on file.`}):R(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:t.map((e,t)=>R(kt,{addr:e},e.id||t))})]})}function kt({addr:e}){return R(`article`,{className:`space-y-1 rounded-md border p-3 ${e.is_primary?`border-ring ring-ring ring-1`:`border-border`}`,children:[R(`header`,{className:`flex items-baseline justify-between gap-2`,children:[R(`div`,{className:`text-sm font-medium`,children:e.label||R(z,{children:`Untitled`})}),e.is_primary?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`primary`}):null]}),R(`div`,{className:`text-sm`,children:[e.line1?R(`div`,{children:e.line1}):null,e.line2?R(`div`,{children:e.line2}):null,e.line3?R(`div`,{children:e.line3}):null,R(`div`,{children:[e.city,e.state,e.zip_code].filter(Boolean).join(`, `)||R(z,{children:`—`})}),e.country?R(`div`,{className:`text-muted-foreground mt-0.5 text-xs uppercase`,children:e.country}):null,e.validation_status?R(`span`,{className:`mt-1 inline-block rounded-full px-2 py-0.5 text-[10px] ring-1 ${e.validation_status===`valid`?`bg-secondary/20 text-secondary ring-secondary/30`:`bg-muted text-muted-foreground ring-border`}`,children:e.validation_status}):null]})]})}function K({title:e,count:t,scope:n,rightHint:r,columns:i,rows:a,sortKey:o,sortDir:s,onSort:c,emptyMessage:l=`Nothing to show.`,showIndex:u=!0,rowKey:d,rowClassName:f,hoverRows:p=!0}){let m=i.length+ +!!u,h=r===void 0&&c?`click headers to sort`:r;return R(`div`,{className:`space-y-3`,children:[R(`header`,{className:`flex items-baseline justify-between gap-3`,children:[R(`h2`,{className:`m-0 text-lg font-semibold`,children:[e,t==null?null:R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[` `,`(`,t.toLocaleString(),`)`]}),n?R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[` `,`· `,n]}):null]}),h==null?null:R(`span`,{className:`text-muted-foreground text-xs`,children:h})]}),R(`div`,{className:`border-border overflow-auto rounded-md border`,children:R(`table`,{className:`w-full text-sm`,children:[R(`thead`,{className:`bg-muted text-muted-foreground border-b-2 border-border text-xs tracking-wide uppercase`,children:R(`tr`,{children:[u?R(At,{children:`#`}):null,i.map(e=>R(At,{align:e.align,sortable:e.sortable,active:e.sortable&&o===e.key,dir:s,onClick:e.sortable&&c?()=>c(e.key):void 0,children:e.header},e.key))]})}),R(`tbody`,{children:a.length===0?R(`tr`,{children:R(`td`,{colSpan:m,className:`text-muted-foreground py-8 text-center`,children:l})}):a.map((e,t)=>R(`tr`,{className:`border-border border-t ${p?`hover:bg-muted/60`:``} ${f?f(e,t):``}`.trim().replace(/\s+/g,` `),children:[u?R(`td`,{className:`text-muted-foreground px-3 py-2 tabular-nums`,children:t+1}):null,i.map(n=>R(`td`,{className:`px-3 py-2 ${n.align===`right`?`text-right tabular-nums`:``} ${n.className??``}`.trim(),children:n.render(e,t)},n.key))]},d?d(e,t):t))})]})})]})}function At({children:e,sortable:t,active:n,dir:r,onClick:i,align:a=`left`}){return R(`th`,{className:[`px-3 py-2 font-semibold`,a===`right`?`text-right`:`text-left`,t?`cursor-pointer select-none hover:text-foreground`:``,n?`text-foreground`:``].filter(Boolean).join(` `),onClick:i,children:[e,t&&n?r===`asc`?` ↑`:` ↓`:null]})}function q({href:e,label:t=`View`}){return R(`button`,{type:`button`,className:`text-secondary hover:text-secondary/80 text-xs underline`,onClick:()=>ft(e),children:t})}function J(e,t,n){let r=n===`asc`?1:-1;return[...e].sort((e,n)=>{let i=t(e),a=t(n);return i==null&&a==null?0:i==null?1:a==null?-1:i<a?-1*r:i>a?1*r:0})}function jt({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.aggregates,e=>t===`name`?e.name:e.created_at,r),[e.aggregates,t,r]);return R(K,{title:`Aggregates`,count:e.total,scope:e.scope,rightHint:`aka billable metrics`,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/meters/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No aggregates match.`,rowKey:(e,t)=>e.id||t})}function Mt({payload:e}){let[t,n]=F(`name`),[r,i]=F(`asc`),a=I(()=>J(e.contacts,e=>t===`name`?e.name:e.email,r),[e.contacts,t,r]);return R(K,{title:`Contacts`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`email`,header:`Email`,sortable:!0,className:`text-secondary`,render:e=>e.email||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-secondary font-mono text-xs`,render:e=>U(e.customer_id,10)},{key:`send_invoice`,header:`Send Invoice`,className:`text-xs`,render:e=>e.send_invoice==null?R(z,{children:`—`}):e.send_invoice?`yes`:`no`},{key:`send_contract`,header:`Send Contract`,className:`text-xs`,render:e=>e.send_contract==null?R(z,{children:`—`}):e.send_contract?`yes`:`no`},{key:`view`,header:`View`,render:e=>R(q,{href:`/contacts/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`asc`))},emptyMessage:`No contacts match.`,rightHint:null,rowKey:(e,t)=>e.id||t})}var Nt=`text-muted-foreground text-[11px] tracking-wide uppercase`;function Y({label:e,value:t,tone:n}){return R(`div`,{children:[R(`div`,{className:Nt,children:e}),R(`div`,{className:n===`warn`?`text-2xl font-bold tabular-nums text-destructive`:`text-2xl font-bold tabular-nums`,children:t})]})}function X({title:e,children:t}){return R(`section`,{className:`space-y-1`,children:[R(`div`,{className:Nt,children:e}),t]})}function Z({label:e,children:t}){return R(`div`,{children:[R(`div`,{className:Nt,children:e}),R(`div`,{className:`text-sm`,children:t})]})}function Pt({payload:e}){let t=e.contract,n=e.phases||[],r=new Date;return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:[R(`div`,{children:[R(`h2`,{className:`m-0 flex min-w-0 items-center gap-2 text-lg font-semibold`,children:[R(`span`,{className:`min-w-0 truncate`,children:t.name||R(z,{children:`—`})}),t.status?R(G,{status:t.status}):null]}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]}),R(`div`,{className:`flex gap-2`,children:t.contract_link?R(`a`,{href:t.contract_link,target:`_blank`,rel:`noreferrer`,className:`border-border bg-accent text-accent-foreground hover:bg-primary hover:text-primary-foreground rounded border px-3 py-1 text-xs transition-colors`,children:`Open`}):null})]}),R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:[R(Z,{label:`Customer`,children:t.customer_name?R(`div`,{children:[R(`div`,{className:`truncate text-sm`,children:t.customer_name}),t.customer_id?R(`div`,{className:`text-muted-foreground font-mono text-xs break-all`,children:t.customer_id}):null]}):t.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.customer_id}):R(z,{children:`—`})}),R(Z,{label:`Currency`,children:t.currency?R(`span`,{className:`font-mono text-xs`,children:t.currency}):R(z,{children:`—`})}),R(Z,{label:`Type`,children:t.contract_type||R(z,{children:`—`})}),R(Z,{label:`Term`,children:t.start_date&&t.end_date?R(`span`,{className:`text-sm`,children:[t.start_date.slice(0,10),` → `,t.end_date.slice(0,10)]}):R(z,{children:`—`})}),R(Z,{label:`Anchor Date`,children:B(t.anchor_date)}),R(Z,{label:`Renewal Policy`,children:t.renewal_policy||R(z,{children:`—`})}),R(Z,{label:`Plan`,children:t.plan_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.plan_id}):R(z,{children:`—`})}),R(Z,{label:`Created`,children:B(t.created_at)})]}),t.description?R(X,{title:`Description`,children:R(`div`,{className:`text-sm`,children:t.description})}):null,t.tags&&t.tags.length>0?R(X,{title:`Tags`,children:R(`div`,{className:`flex flex-wrap gap-2`,children:t.tags.map((e,t)=>R(`span`,{className:`bg-muted text-muted-foreground rounded-full px-2 py-0.5 text-xs`,children:e},t))})}):null,n.length>0?R(X,{title:`Phases (${n.length})`,children:R(`div`,{className:`space-y-2`,children:n.map((e,t)=>R(Ft,{phase:e,index:t,today:r},e.id||t))})}):null,t.custom_attributes&&Object.keys(t.custom_attributes).length>0?R(X,{title:`Custom Attributes`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_attributes).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`line-clamp-2 break-all font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function Ft({phase:e,index:t,today:n}){let r=e.start_date?new Date(e.start_date):null,i=e.end_date?new Date(e.end_date):null,a=r&&i&&r<=n&&n<=i,o=a?`ring-2 ring-ring`:``,s=e.pricings||[];return R(`div`,{className:`border-border rounded-md border p-3 ${o}`,children:[R(`div`,{className:`flex items-baseline justify-between gap-2`,children:[R(`div`,{className:`min-w-0 text-sm font-medium`,children:[R(`span`,{className:`text-muted-foreground mr-2`,children:[`#`,t+1]}),R(`span`,{className:`wrap-break-word`,children:e.name||R(z,{children:`Untitled phase`})}),a?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 ml-2 rounded-full px-2 py-0.5 text-xs ring-1`,children:`current`}):null]}),R(`div`,{className:`text-muted-foreground text-xs whitespace-nowrap`,children:[e.start_date?e.start_date.slice(0,10):`—`,` →`,` `,e.end_date?e.end_date.slice(0,10):`—`]})]}),s.length>0?R(`div`,{className:`mt-2 space-y-2`,children:s.map((e,t)=>R(Lt,{p:e},e.id||t))}):R(`div`,{className:`mt-1 grid grid-cols-2 gap-2 text-xs sm:grid-cols-3`,children:[R(`div`,{children:[R(`span`,{className:`text-muted-foreground`,children:`Products:`}),` `,R(`span`,{className:`tabular-nums`,children:e.product_count??`—`})]}),e.pricing_summary?R(`div`,{className:`text-muted-foreground col-span-full sm:col-span-2`,children:e.pricing_summary}):null]})]})}function It(e){let t=e.match(/P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?/);if(!t)return e;let n=Number(t[1]||0),r=Number(t[2]||0),i=Number(t[3]||0),a=Number(t[4]||0),o=[];return n&&o.push(`${n} year${n>1?`s`:``}`),r&&o.push(`${r} month${r>1?`s`:``}`),i&&o.push(`${i} week${i>1?`s`:``}`),a&&o.push(`${a} day${a>1?`s`:``}`),o.join(` `)||e}function Q(e,t){if(Array.isArray(e)||e==null||!Number.isFinite(e))return`—`;try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t||`USD`,maximumFractionDigits:2}).format(e)}catch{return`${t||`USD`} ${e}`}}function Lt({p:e}){e.currency;let t=e.features&&e.features.length>0;return R(`div`,{className:`border-border rounded-md border bg-card px-3 py-2.5`,children:R(`div`,{className:`flex w-full flex-col gap-2.5`,children:[R(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:R(`div`,{className:`flex min-w-0 items-center gap-2`,children:[R(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:e.product_name||R(z,{children:`Unnamed product`})}),e.product_type?R(`span`,{className:`bg-accent text-accent-foreground rounded px-1.5 py-0.5 text-xs font-medium uppercase`,children:e.product_type}):null]})}),e.description?R(`div`,{className:`text-muted-foreground line-clamp-3 text-xs leading-relaxed`,children:e.description}):null,R(`hr`,{className:`border-border m-0`}),R(`div`,{className:`flex flex-wrap gap-x-6 gap-y-2.5`,children:[R(zt,{p:e}),e.pricing_model===`flat_fee`?null:R($,{label:e.quantity_type===`metered`?`Billable Metric${e.quantity_unit?` (${e.quantity_unit})`:``}`:`Quantity`,children:e.quantity_type===`fixed`&&e.quantity_value!=null?R(`span`,{children:[e.quantity_value,e.quantity_unit?` ${e.quantity_unit}`:``]}):e.quantity_type===`metered`?R(`span`,{className:`truncate`,children:e.meter_name||R(z,{children:`No metric`})}):R(z,{children:`—`})}),e.billing_cadence?R($,{label:`Billing Cadence (${e.is_recurring?`Recurring`:`One Time`})`,children:[e.billing_timing?`${e.billing_timing} - `:``,`Every`,` `,It(e.billing_cadence)]}):null,e.start_date?R($,{label:`Product Period`,children:[e.start_date.slice(0,10),` →`,` `,e.end_date?e.end_date.slice(0,10):`Forever`]}):null]}),t?R(Ht,{features:e.features}):null]})})}function $({label:e,children:t}){return R(`div`,{className:`min-w-0`,children:[R(`div`,{className:`text-muted-foreground text-xs font-medium`,children:e}),R(`div`,{className:`text-xs`,children:t})]})}function Rt(e){return e?e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()):`Unknown`}function zt({p:e}){let t=e.currency,n=t?` (${t})`:``;switch(e.pricing_model){case`flat_fee`:return R($,{label:`Flat Fee${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})});case`per_unit`:case`per_unit_pricing`:return R($,{label:`Per Unit Price${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})});case`percent`:case`percent_pricing`:return R($,{label:`Percent Pricing${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:e.unit_amount==null?`—`:`${e.unit_amount}%`})});case`package`:case`package_pricing`:return R(`div`,{className:`flex flex-wrap gap-x-6 gap-y-2.5`,children:[R($,{label:`Package Price${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})}),e.package_size?R($,{label:`Package Size`,children:R(`span`,{children:e.package_size})}):null]});case`volume`:case`volume_pricing`:case`tiered`:case`tiered_pricing`:case`step`:case`step_pricing`:return R(`div`,{className:`w-full`,children:[R(`div`,{className:`text-muted-foreground mb-1 text-xs font-medium`,children:[Rt(e.pricing_model),` Price`,n]}),R(Bt,{tiers:e.tiers,currency:t})]});case`volume_with_flat_fee`:case`tiered_with_flat_fee`:return R(`div`,{className:`w-full`,children:[R(`div`,{className:`text-muted-foreground mb-1 text-xs font-medium`,children:[Rt(e.pricing_model),` Price`,n]}),R(Bt,{tiers:e.tiers,currency:t,showFlatFee:!0})]});case`matrix`:case`matrix_pricing`:return R(`div`,{className:`w-full`,children:[R(`div`,{className:`text-muted-foreground mb-1 text-xs font-medium`,children:[`Matrix Pricing`,n]}),R(Vt,{matrix:e.matrix,currency:t}),e.unit_amount==null?null:R(`div`,{className:`text-muted-foreground mt-1.5 text-xs`,children:[`Default price:`,` `,R(`span`,{className:`font-semibold`,children:Q(e.unit_amount,t)})]})]});case`custom`:case`custom_pricing`:return R($,{label:`Custom Pricing`,children:R(`span`,{className:`text-muted-foreground`,children:`Custom script`})});default:return e.unit_amount==null?R(z,{children:`—`}):R($,{label:`Price${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})})}}function Bt({tiers:e,currency:t,showFlatFee:n}){return!e||e.length===0?R(`span`,{className:`text-muted-foreground text-xs`,children:`No tiers`}):R(`div`,{className:`max-h-48 overflow-auto`,children:R(`table`,{className:`w-full text-xs`,children:[R(`caption`,{className:`sr-only`,children:`Pricing tiers`}),R(`thead`,{children:R(`tr`,{className:`text-muted-foreground border-border border-b text-left`,children:[R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Min`}),R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Max`}),R(`th`,{scope:`col`,className:`py-0.5 pr-2 text-right font-medium`,children:`Unit Price`}),n?R(`th`,{scope:`col`,className:`py-0.5 text-right font-medium`,children:`Flat Fee`}):null]})}),R(`tbody`,{children:e.map((e,r)=>R(`tr`,{className:`border-border/50 border-b last:border-0`,children:[R(`td`,{className:`py-0.5 pr-2 tabular-nums`,children:e.min_quantity??0}),R(`td`,{className:`py-0.5 pr-2 tabular-nums`,children:e.max_quantity??`∞`}),R(`td`,{className:`py-0.5 pr-2 text-right tabular-nums`,children:Q(e.unit_amount,t)}),n?R(`td`,{className:`py-0.5 text-right tabular-nums`,children:e.flat_fee==null?`—`:Q(e.flat_fee,t)}):null]},r))})]})})}function Vt({matrix:e,currency:t}){return!e||e.length===0?R(`span`,{className:`text-muted-foreground text-xs`,children:`Matrix pricing (no data)`}):R(`div`,{className:`max-h-48 overflow-auto`,children:R(`table`,{className:`w-full text-xs`,children:[R(`caption`,{className:`sr-only`,children:`Matrix pricing dimensions`}),R(`thead`,{children:R(`tr`,{className:`text-muted-foreground border-border border-b text-left`,children:[R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Dimension`}),R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Alias`}),R(`th`,{scope:`col`,className:`py-0.5 text-right font-medium`,children:`Price`})]})}),R(`tbody`,{children:e.map((e,n)=>R(`tr`,{className:`border-border/50 border-b last:border-0`,children:[R(`td`,{className:`py-0.5 pr-2`,children:e.dimension??`—`}),R(`td`,{className:`py-0.5 pr-2`,children:e.display_alias??`—`}),R(`td`,{className:`py-0.5 text-right tabular-nums`,children:Q(e.price,t)})]},n))})]})})}function Ht({features:e}){let t=new Map;for(let n of e){let e=t.get(n.type)||[];e.push(n),t.set(n.type,e)}return R(`div`,{className:`mt-1 space-y-2`,children:[R(`div`,{className:`text-muted-foreground text-xs font-medium uppercase`,children:`Features`}),Array.from(t.entries()).map(([e,t])=>R(`div`,{className:`flex flex-wrap items-start gap-2`,children:[R(`span`,{className:`bg-muted text-muted-foreground shrink-0 rounded px-1.5 py-0.5 text-xs`,children:e}),R(`div`,{className:`flex flex-col gap-0.5`,children:t.map((e,t)=>R(`div`,{className:`text-muted-foreground break-words text-xs`,children:[e.label?R(`span`,{className:`mr-2 font-medium`,children:e.label}):null,e.summary]},t))})]},e))]})}function Ut({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.contracts,e=>{switch(t){case`name`:return e.name;case`start_date`:return e.start_date;case`end_date`:return e.end_date;case`created_at`:return e.created_at??null}},r),[e.contracts,t,r]);return R(K,{title:`Contracts`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`currency`,header:`Currency`,className:`font-mono text-xs`,render:e=>e.currency||R(z,{children:`—`})},{key:`start_date`,header:`Start`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.start_date)},{key:`end_date`,header:`End`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.end_date)},{key:`days_left`,header:`Days Left`,align:`right`,render:e=>{let t=e.end_date?-1*(vt(e.end_date)??0):null;if(t==null)return R(z,{children:`—`});let n=t<0;return R(`span`,{className:n?`text-destructive font-medium`:!n&&t<=30?`text-primary font-medium`:`text-muted-foreground`,children:n?`${Math.abs(t)}d ago`:`${t}d`})}},{key:`view`,header:`View`,render:e=>R(q,{href:`/contractsv2/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No contracts match.`,rowKey:(e,t)=>e.id||t})}function Wt({payload:e}){let t=e.credit_note,n=t.currency||`USD`;return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:R(`div`,{children:[R(`h2`,{className:`m-0 flex items-center gap-2 text-lg font-semibold`,children:[R(`span`,{className:`font-mono`,children:t.credit_note_number||t.id}),t.status?R(G,{status:t.status}):null]}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]})}),R(`div`,{className:`border-border grid grid-cols-2 gap-3 rounded-md border p-3 sm:grid-cols-4`,children:[R(Y,{label:`Amount`,value:t.amount==null?R(z,{children:`—`}):H(t.amount,n)}),R(Y,{label:`Currency`,value:n}),R(Y,{label:`Credits Returned`,value:t.credits_returned==null?R(z,{children:`—`}):t.credits_returned.toLocaleString()}),R(Y,{label:`Created`,value:B(t.created_at)})]}),R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:[R(Z,{label:`Customer`,children:t.customer_name?R(`div`,{children:[R(`div`,{className:`text-sm`,children:t.customer_name}),t.customer_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.customer_id}):null]}):t.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.customer_id}):R(z,{children:`—`})}),R(Z,{label:`Invoice`,children:t.invoice_number?R(`div`,{children:[R(`div`,{className:`font-mono text-sm`,children:t.invoice_number}),t.invoice_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.invoice_id}):null]}):t.invoice_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.invoice_id}):R(z,{children:`—`})}),R(Z,{label:`Repayment Method`,children:t.repayment_method||R(z,{children:`—`})})]}),t.custom_data&&Object.keys(t.custom_data).length>0?R(X,{title:`Custom Data`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_data).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function Gt({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=e.default_currency||`USD`,o=I(()=>J(e.credit_notes,e=>{switch(t){case`amount`:return e.amount;case`created_at`:return e.created_at;case`status`:return e.status}},r),[e.credit_notes,t,r]);return R(K,{title:`Credit Notes`,count:e.total,scope:e.scope,columns:[{key:`number`,header:`Number`,className:`font-mono text-xs`,render:e=>e.credit_note_number||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`invoice`,header:`Invoice`,className:`text-xs`,render:e=>e.invoice_name?e.invoice_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.invoice_id,10)})},{key:`status`,header:`Status`,sortable:!0,render:e=>R(G,{status:e.status})},{key:`amount`,header:`Amount`,sortable:!0,align:`right`,className:`text-destructive`,render:e=>H(e.amount,e.currency||a)},{key:`repayment`,header:`Repayment`,className:`text-xs`,render:e=>e.repayment_method||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)}],rows:o,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},emptyMessage:`No credit notes match.`,rowKey:(e,t)=>e.id||t,hoverRows:!1})}function Kt({payload:e}){let t=e.customer,n=t.address||{},r=[n.line1,n.line2,n.city,n.state,n.zipCode||n.zip_code,n.country].filter(Boolean).join(`, `),i=t.ship_to_address||{},a=[i.line1,i.line2,i.city,i.state,i.zipCode||i.zip_code,i.country].filter(Boolean).join(`, `);return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:R(`div`,{children:[R(`h2`,{className:`m-0 flex items-center gap-2 text-lg font-semibold`,children:t.name||R(z,{children:`—`})}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]})}),R(qt,{children:[R(Z,{label:`External ID`,children:t.external_id?R(`span`,{className:`font-mono text-xs`,children:t.external_id}):R(z,{children:`—`})}),R(Z,{label:`Email`,children:t.email||R(z,{children:`—`})}),R(Z,{label:`Phone`,children:t.phone||R(z,{children:`—`})}),R(Z,{label:`Business Entity`,children:t.business_entity_name?R(`div`,{children:[R(`div`,{children:t.business_entity_name}),t.business_entity_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.business_entity_id}):null]}):t.business_entity_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.business_entity_id}):R(z,{children:`—`})}),R(Z,{label:`Created`,children:B(t.created_at)}),R(Z,{label:`Updated`,children:B(t.updated_at)})]}),r?R(X,{title:`Primary Address`,children:R(`div`,{className:`text-sm`,children:r})}):null,a&&a!==r?R(X,{title:`Ship-to Address`,children:R(`div`,{className:`text-sm`,children:a})}):null,t.communications_enabled!=null||t.auto_charge_enabled!=null?R(X,{title:`Settings`,children:R(`div`,{className:`flex flex-wrap gap-3 text-sm`,children:[R(Jt,{label:`Communications`,on:t.communications_enabled??null}),R(Jt,{label:`Auto-charge`,on:t.auto_charge_enabled??null})]})}):null,t.default_payment_method?R(X,{title:`Payment Method`,children:R(`div`,{className:`flex items-center gap-2 text-sm`,children:[R(`span`,{className:`bg-muted rounded px-2 py-0.5 text-xs`,children:(t.default_payment_method.type||`unknown`).replace(/_/g,` `)}),t.default_payment_method.brand?R(`span`,{children:t.default_payment_method.brand}):null,t.default_payment_method.last4?R(`span`,{className:`font-mono`,children:[`•••• `,t.default_payment_method.last4]}):null,t.default_payment_method.connector_name?R(`span`,{className:`text-muted-foreground text-xs`,children:[`via `,t.default_payment_method.connector_name]}):null]})}):null,t.tax_info&&t.tax_info.length>0?R(X,{title:`Tax Info`,children:R(`div`,{className:`space-y-1`,children:t.tax_info.map((e,t)=>R(`div`,{className:`flex gap-3 text-sm`,children:[e.tax_code?R(`span`,{className:`bg-muted rounded px-2 py-0.5 text-xs`,children:e.tax_code}):null,e.tax_id?R(`span`,{className:`font-mono text-xs`,children:e.tax_id}):null,e.country_code?R(`span`,{className:`text-muted-foreground text-xs`,children:e.country_code}):null]},t))})}):null,t.contacts&&t.contacts.length>0?R(X,{title:`Contacts (${t.contacts.length})`,children:R(`div`,{className:`space-y-2`,children:t.contacts.map((e,t)=>R(`div`,{className:`border-border flex items-center justify-between rounded border px-3 py-2`,children:[R(`div`,{children:[R(`div`,{className:`text-sm font-medium`,children:e.name||R(z,{children:`—`})}),e.email?R(`div`,{className:`text-muted-foreground text-xs`,children:e.email}):null]}),R(`div`,{className:`flex gap-2`,children:[e.send_invoice?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`invoice`}):null,e.send_contract?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`contract`}):null]})]},t))})}):null,t.custom_data&&Object.keys(t.custom_data).length>0?R(X,{title:`Custom Data`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_data).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function qt({children:e}){return R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:e})}function Jt({label:e,on:t}){return t===null?null:R(`span`,{className:`rounded-full px-2 py-0.5 text-xs ${t?`bg-secondary/20 text-secondary ring-1 ring-secondary/30`:`bg-muted text-muted-foreground ring-1 ring-border`}`,children:[e,`: `,t?`on`:`off`]})}function Yt({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.customers,e=>t===`name`?e.name:e.created_at??null,r),[e.customers,t,r]);return R(K,{title:`Customers`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`external_id`,header:`External ID`,className:`font-mono text-xs`,render:e=>e.external_id||R(z,{children:`—`})},{key:`email`,header:`Email`,className:`text-secondary`,render:e=>e.email||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/customers/${e.id}/view`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No customers match.`,rowKey:(e,t)=>e.id||t})}function Xt({payload:e}){return R(K,{title:`Entitlements`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Entitlement`,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`entitlement_type`,header:`Type`,className:`text-xs`,render:e=>e.entitlement_type||R(z,{children:`—`})},{key:`units`,header:`Units`,className:`font-mono text-xs`,render:e=>e.units||R(z,{children:`—`})},{key:`product_name`,header:`Product`,className:`text-xs`,render:e=>e.product_name||R(z,{children:`—`})},{key:`is_active`,header:`Status`,className:`text-xs`,render:e=>e.is_active==null?R(z,{children:`—`}):e.is_active?`active`:`inactive`},{key:`created_at`,header:`Created`,className:`whitespace-nowrap`,render:e=>B(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/entitlements/${e.id}/edit`})}],rows:e.entitlements,emptyMessage:`No entitlements match.`,rowKey:(e,t)=>e.id||t})}function Zt({payload:e}){return R(K,{title:`Business Entities`,count:e.total,columns:[{key:`name`,header:`Name`,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`email`,header:`Email`,className:`text-secondary text-xs`,render:e=>e.email||R(z,{children:`—`})},{key:`phone`,header:`Phone`,className:`font-mono text-xs`,render:e=>e.phone_number||R(z,{children:`—`})},{key:`country`,header:`Country`,className:`text-xs`,render:e=>e.country||R(z,{children:`—`})},{key:`default`,header:`Default`,className:`text-xs`,render:e=>e.is_default==null?R(z,{children:`—`}):e.is_default?`yes`:`no`},{key:`view`,header:`View`,render:e=>R(q,{href:`/settings/tax-configuration/entity/${e.id}`})}],rows:e.entities,emptyMessage:`No business entities to show.`,rightHint:null,rowKey:(e,t)=>e.id||t})}function Qt({payload:e}){let t=e.invoice,n=t.currency||`USD`,r=t.due_date&&t.amount_due&&t.amount_due>0?vt(t.due_date):null,i=r!=null&&r>0;return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:[R(`div`,{children:[R(`h2`,{className:`m-0 flex items-center gap-2 text-lg font-semibold`,children:[R(`span`,{className:`font-mono`,children:t.invoice_number||t.id}),t.status?R(G,{status:t.status}):null,i?R(`span`,{className:`bg-destructive/20 text-destructive ring-destructive/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:[r,`d overdue`]}):null]}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]}),R(`div`,{className:`flex gap-2`,children:[t.invoice_pdf?R($t,{href:t.invoice_pdf,children:`PDF`}):null,t.payment_url?R($t,{href:t.payment_url,children:`Payment link`}):null]})]}),R(`div`,{className:`border-border grid grid-cols-2 gap-3 rounded-md border p-3 sm:grid-cols-4`,children:[R(Y,{label:`Total`,value:H(t.invoice_total,n)}),R(Y,{label:`Paid`,value:H(t.paid_amount,n)}),R(Y,{label:`Due`,value:H(t.amount_due,n),tone:i?`warn`:void 0}),R(Y,{label:`Period`,value:t.invoice_period_begin&&t.invoice_period_end?R(`span`,{className:`text-sm`,children:[t.invoice_period_begin.slice(0,10),` →`,` `,t.invoice_period_end.slice(0,10)]}):R(z,{children:`—`})})]}),R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:[R(Z,{label:`Customer`,children:t.customer_name?R(`div`,{children:[R(`div`,{className:`text-sm`,children:t.customer_name}),t.customer_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.customer_id}):null]}):t.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.customer_id}):R(z,{children:`—`})}),R(Z,{label:`Business Entity`,children:t.business_entity_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.business_entity_id}):R(z,{children:`—`})}),R(Z,{label:`Contract`,children:t.contract_name?R(`div`,{children:[R(`div`,{className:`text-sm`,children:t.contract_name}),t.contract_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.contract_id}):null]}):t.contract_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.contract_id}):R(z,{children:`—`})}),R(Z,{label:`External ID`,children:t.external_id?R(`span`,{className:`font-mono text-xs`,children:t.external_id}):R(z,{children:`—`})}),R(Z,{label:`Created`,children:V(t.created_at)}),R(Z,{label:`Due Date`,children:B(t.due_date)}),R(Z,{label:`Currency`,children:n})]}),t.notes?R(X,{title:`Notes`,children:R(`div`,{className:`max-w-prose text-sm`,children:t.notes})}):null,t.approved_at||t.sent_at||t.paid_at?R(X,{title:`Timeline`,children:R(`div`,{className:`flex flex-wrap gap-4 text-sm`,children:[t.sent_at?R(`div`,{children:[R(`span`,{className:`text-muted-foreground text-xs`,children:`Sent `}),R(`span`,{className:`tabular-nums`,children:V(t.sent_at)})]}):null,t.approved_at?R(`div`,{children:[R(`span`,{className:`text-muted-foreground text-xs`,children:`Approved `}),R(`span`,{className:`tabular-nums`,children:V(t.approved_at)})]}):null,t.paid_at?R(`div`,{children:[R(`span`,{className:`text-muted-foreground text-xs`,children:`Paid `}),R(`span`,{className:`tabular-nums`,children:V(t.paid_at)})]}):null]})}):null,t.custom_data&&Object.keys(t.custom_data).length>0?R(X,{title:`Custom Data`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_data).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function $t({children:e,href:t}){return R(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`border-border bg-accent text-accent-foreground hover:bg-primary hover:text-primary-foreground rounded border px-3 py-1 text-xs transition-colors`,children:e})}function en({payload:e}){let t=De(null),[n,r]=F(400),[i,a]=F(!1);return Ee(()=>{if(!(!t.current||!i))try{let e=t.current.contentDocument;if(e?.documentElement){let t=e.documentElement.scrollHeight;t>0&&r(Math.min(t+16,2e3))}}catch{}},[i,e.html]),e.html?R(`div`,{className:`space-y-2`,children:[e.invoice_id?R(`header`,{className:`flex items-baseline gap-2`,children:[R(`h2`,{className:`m-0 text-lg font-semibold`,children:`Invoice Preview`}),R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:e.invoice_id})]}):null,R(`div`,{className:`border-border overflow-hidden rounded-md border`,children:R(`iframe`,{ref:t,title:`Invoice preview`,srcDoc:e.html,onLoad:()=>a(!0),style:{width:`100%`,height:`${n}px`,border:`none`,background:`#fff`},sandbox:`allow-same-origin`})})]}):R(`div`,{className:`text-muted-foreground border-border rounded-md border py-8 text-center`,children:`No preview generated for this invoice yet.`})}function tn({payload:e}){let t=e.currency||`USD`,n=e.lines||[];return R(K,{title:R(S,{children:[`Line Items`,` `,R(`span`,{className:`text-muted-foreground font-normal`,children:[`(`,n.length,`)`]}),e.invoice_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:[` `,`· `,e.invoice_id]}):null]}),rightHint:e.total==null?null:R(`span`,{className:`text-sm`,children:[`Total:`,` `,R(`span`,{className:`font-medium tabular-nums`,children:H(e.total,t)})]}),columns:[{key:`type`,header:`Type`,className:`text-muted-foreground text-xs`,render:e=>R(`div`,{className:`flex items-center gap-1`,children:[e.line_item_type?e.line_item_type.replace(/_/g,` `):R(z,{children:`—`}),e.is_adjustment?R(`span`,{className:`bg-warning/15 text-warning ring-warning/30 rounded-full px-1.5 py-0.5 text-[10px] ring-1`,children:e.adjustment_type||`adj`}):null]})},{key:`item`,header:`Item`,render:e=>R(S,{children:[R(`div`,{className:`font-medium`,children:e.name||R(z,{children:`—`})}),e.description?R(`div`,{className:`text-muted-foreground text-xs`,children:e.description}):null]})},{key:`pricing_model`,header:`Pricing Model`,className:`text-muted-foreground text-xs`,render:e=>e.pricing_model||R(z,{children:`—`})},{key:`qty`,header:`Qty`,align:`right`,render:e=>e.quantity?.display||(e.quantity?.value??R(z,{children:`—`}))},{key:`price`,header:`Price`,align:`right`,render:e=>e.price?yt(e.price):R(z,{children:`—`})},{key:`subtotal`,header:`Subtotal`,align:`right`,render:e=>R(`span`,{className:e.subtotal?.value!=null&&e.subtotal.value<0?`text-destructive`:``,children:yt(e.subtotal)})},{key:`period`,header:`Service Period`,className:`text-xs whitespace-nowrap`,render:e=>e.service_start_date&&e.service_end_date?R(S,{children:[B(e.service_start_date),` → `,B(e.service_end_date)]}):R(z,{children:`—`})},{key:`billed`,header:`Billed`,className:`text-xs`,render:e=>e.is_billed===!0?`✓`:e.is_billed===!1?`—`:R(z,{children:`?`})}],rows:n,emptyMessage:`No line items on this invoice.`,hoverRows:!1})}function nn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=e.default_currency||`USD`,o=I(()=>J(e.invoices,e=>{switch(t){case`invoice_number`:return e.invoice_number;case`invoice_total`:return e.invoice_total;case`amount_due`:return e.amount_due;case`due_date`:return e.due_date;case`created_at`:return e.created_at}},r),[e.invoices,t,r]),s=e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},c=e=>{if(!e.due_date||!e.amount_due||e.amount_due<=0)return null;let t=vt(e.due_date);return t!=null&&t>0?t:null};return R(K,{title:`Invoices`,count:e.total,scope:e.scope,columns:[{key:`invoice_number`,header:`Invoice`,sortable:!0,className:`font-mono text-xs`,render:e=>e.invoice_number||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`period`,header:`Period`,className:`text-xs whitespace-nowrap`,render:e=>e.invoice_period_begin&&e.invoice_period_end?`${e.invoice_period_begin.slice(0,10)} → ${e.invoice_period_end.slice(0,10)}`:R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`invoice_total`,header:`Total`,sortable:!0,align:`right`,render:e=>H(e.invoice_total,a)},{key:`amount_due`,header:`Due`,sortable:!0,align:`right`,render:e=>R(`span`,{className:c(e)==null?``:`text-destructive font-medium`,children:H(e.amount_due,a)})},{key:`due_date`,header:`Due Date`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.due_date)},{key:`overdue`,header:`Overdue`,align:`right`,render:e=>{let t=c(e);return t==null?R(`span`,{className:`text-muted-foreground`,children:R(z,{children:`—`})}):R(`span`,{className:`text-destructive font-medium`,children:[t,`d`]})}},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/invoices/${e.id}/view`})}],rows:o,sortKey:t,sortDir:r,onSort:s,emptyMessage:`No invoices match.`,rowKey:(e,t)=>e.id||t})}function rn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.jobs,e=>{switch(t){case`name`:return e.name;case`created_at`:return e.created_at;case`status`:return e.status}},r),[e.jobs,t,r]),o=e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},s=e.status_counts||{},c=R(`div`,{className:`flex flex-wrap gap-1.5 text-xs`,children:Object.entries(s).map(([e,t])=>R(`span`,{className:`bg-muted rounded-full px-2 py-0.5`,children:[e,`: `,R(`span`,{className:`font-medium tabular-nums`,children:t})]},e))});return R(K,{title:`Jobs`,count:e.total,rightHint:c,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`type`,header:`Type`,className:`text-xs`,render:e=>e.job_type||R(z,{children:`—`})},{key:`resource`,header:`Resource`,className:`text-xs`,render:e=>e.resource||R(z,{children:`—`})},{key:`status`,header:`Status`,sortable:!0,render:e=>R(G,{status:e.status})},{key:`description`,header:`Description`,className:`text-muted-foreground max-w-xs truncate text-xs`,render:e=>e.description||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`text-xs whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/jobs/${e.id}/view`})}],rows:a,sortKey:t,sortDir:r,onSort:o,emptyMessage:`No jobs match.`,rowKey:(e,t)=>e.id||t})}function an({payload:e}){let t=e.default_currency||`USD`,n=e.entries,r=I(()=>{let e=0,t=0;for(let r of n)Number.isFinite(r.total_debit)&&(e+=r.total_debit),Number.isFinite(r.total_credit)&&(t+=r.total_credit);return{d:e,c:t}},[n]),i=R(S,{children:[`Σ debit `,H(r.d,t),` · Σ credit `,H(r.c,t)]});return R(K,{title:`Journal Entries`,count:e.total,scope:e.scope,rightHint:i,columns:[{key:`posted_at`,header:`Posted`,className:`whitespace-nowrap`,render:e=>V(e.posted_at)},{key:`event`,header:`Event`,className:`text-xs`,render:e=>e.event||R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status_type})},{key:`lines`,header:`Lines`,align:`right`,render:e=>e.line_count??R(z,{children:`—`})},{key:`total_debit`,header:`Σ Debit`,align:`right`,render:e=>e.total_debit==null?R(z,{children:`—`}):H(e.total_debit,e.currency||t)},{key:`total_credit`,header:`Σ Credit`,align:`right`,render:e=>e.total_credit==null?R(z,{children:`—`}):H(e.total_credit,e.currency||t)},{key:`description`,header:`Description`,className:`text-muted-foreground max-w-xs truncate text-xs`,render:e=>e.description||R(z,{children:`—`})}],rows:n,emptyMessage:`No entries match.`,rowKey:(e,t)=>e.id||t,hoverRows:!1})}function on({payload:e}){let t=e.payment_methods||[];return R(`div`,{className:`space-y-3`,children:[R(`header`,{className:`flex items-baseline justify-between gap-3`,children:R(`h2`,{className:`m-0 text-lg font-semibold`,children:[`Payment Methods`,` `,R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[`(`,t.length,`)`]}),e.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:[` `,`· `,e.customer_id]}):null]})}),t.length===0?R(`div`,{className:`text-muted-foreground border-border rounded-md border py-8 text-center`,children:`No payment methods saved.`}):R(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:t.map((e,t)=>R(sn,{method:e},e.id||t))})]})}function sn({method:e}){let t=(e.type||``).toLowerCase().includes(`card`);return R(`article`,{className:`space-y-1 rounded-md border p-3 ${e.is_default?`border-ring ring-ring ring-1`:`border-border`}`,children:[R(`header`,{className:`flex items-baseline justify-between gap-2`,children:[R(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[R(`span`,{className:`bg-muted rounded px-2 py-0.5 text-xs`,children:(e.type||`unknown`).replace(/_/g,` `)}),e.brand?R(`span`,{className:`text-muted-foreground`,children:e.brand}):null,e.connector_name?R(`span`,{className:`text-muted-foreground text-xs`,children:[`via `,e.connector_name]}):null]}),e.is_default?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`default`}):null]}),R(`div`,{className:`font-mono text-sm`,children:e.last4?`•••• ${e.last4}`:R(z,{children:`—`})}),R(`div`,{className:`text-muted-foreground flex gap-3 text-xs`,children:[e.status?R(`span`,{className:`rounded-full px-2 py-0.5 text-xs ring-1 ${e.status===`valid`?`bg-secondary/20 text-secondary ring-secondary/30`:`bg-destructive/20 text-destructive ring-destructive/30`}`,children:e.status}):null,t&&e.exp_month&&e.exp_year?R(`span`,{children:[`exp `,String(e.exp_month).padStart(2,`0`),`/`,String(e.exp_year).slice(-2)]}):null,e.created_at?R(`span`,{children:[`added `,B(e.created_at)]}):null]})]})}var cn={payment:`bg-secondary/20 text-secondary ring-1 ring-secondary/30`,refund:`bg-accent text-accent-foreground ring-1 ring-border`,payment_reversal:`bg-destructive/20 text-destructive ring-1 ring-destructive/30`,authorization:`bg-primary/20 text-primary ring-1 ring-primary/30`,tax_withheld:`bg-muted text-muted-foreground ring-1 ring-border`},ln=`bg-muted text-muted-foreground ring-1 ring-border`;function un({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=e.default_currency||`USD`,o=I(()=>J(e.payments,e=>{switch(t){case`amount`:return e.amount;case`payment_date`:return e.payment_date;case`created_at`:return e.created_at;case`type`:return e.type}},r),[e.payments,t,r]);return R(K,{title:`Payments`,count:e.total,scope:e.scope,columns:[{key:`external_id`,header:`External ID`,className:`font-mono text-xs`,render:e=>e.external_id||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`invoice`,header:`Invoice`,className:`text-xs`,render:e=>e.invoice_name?e.invoice_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.invoice_id,10)})},{key:`type`,header:`Type`,sortable:!0,render:e=>e.type?R(`span`,{className:`inline-block rounded-full px-2 py-0.5 text-xs ${cn[e.type]||ln}`,children:e.type}):R(z,{children:`—`})},{key:`method`,header:`Method`,className:`text-xs`,render:e=>e.payment_method||R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`amount`,header:`Amount`,sortable:!0,align:`right`,render:e=>{let t=e.amount!=null&&e.amount<0,n=e.type===`refund`||e.type===`payment_reversal`;return R(`span`,{className:t||n?`text-destructive`:``,children:H(e.amount,e.currency||a)})}},{key:`payment_date`,header:`Date`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.payment_date)},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)}],rows:o,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},emptyMessage:`No payments match.`,rowKey:(e,t)=>e.id||t,hoverRows:!1})}function dn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.plans,e=>t===`name`?e.name:e.created_at,r),[e.plans,t,r]);return R(K,{title:`Plans`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`description`,header:`Description`,className:`text-muted-foreground text-xs`,render:e=>e.description||R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`plan_version`,header:`Version`,align:`right`,render:e=>e.plan_version??R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/plansv2/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No plans match.`,rowKey:(e,t)=>e.id||t})}function fn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.products,e=>t===`name`?e.name:e.created_at,r),[e.products,t,r]);return R(K,{title:`Products`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`sku`,header:`SKU`,className:`font-mono text-xs`,render:e=>e.sku||R(z,{children:`—`})},{key:`type`,header:`Type`,className:`text-xs`,render:e=>e.product_type||R(z,{children:`—`})},{key:`active`,header:`Active`,className:`text-xs`,render:e=>e.is_active==null?R(z,{children:`—`}):e.is_active?`yes`:`no`},{key:`description`,header:`Description`,className:`text-muted-foreground text-xs`,render:e=>e.description||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/products/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No products match.`,rowKey:(e,t)=>e.id||t})}function pn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.raw_metrics,e=>t===`name`?e.name:e.created_at,r),[e.raw_metrics,t,r]);return R(K,{title:`Raw Metrics`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`api_slug`,header:`API Slug`,className:`font-mono text-xs`,render:e=>e.api_slug||R(z,{children:`—`})},{key:`upload`,header:`Upload Enabled`,className:`text-xs`,render:e=>e.usage_upload_enabled==null?R(z,{children:`—`}):e.usage_upload_enabled?`yes`:`no`},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/meters/raw-metrics/${e.id}/view`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No raw metrics match.`,rowKey:(e,t)=>e.id||t})}var mn={name:`Zenskar`,version:`1.0.0`},hn=`2026-01-26`,gn={listCustomers:{fallback:{customers:[],total:0},marker:`customer-table:mounted`,render:e=>R(Yt,{payload:e})},listInvoices:{fallback:{invoices:[],total:0},marker:`invoice-table:mounted`,render:e=>R(nn,{payload:e})},getInvoiceLineItems:{fallback:{lines:[]},marker:`invoice-line-items:mounted`,render:e=>R(tn,{payload:e})},listAllPayments:{fallback:{payments:[],total:0},marker:`payment-table:mounted`,render:e=>R(un,{payload:e})},listCreditNotes:{fallback:{credit_notes:[],total:0},marker:`credit-note-table:mounted`,render:e=>R(Gt,{payload:e})},listContracts:{fallback:{contracts:[],total:0},marker:`contract-table:mounted`,render:e=>R(Ut,{payload:e})},getCustomerById:{fallback:{customer:{id:``}},marker:`customer-detail:mounted`,render:e=>R(Kt,{payload:e})},getInvoiceById:{fallback:{invoice:{id:``}},marker:`invoice-detail:mounted`,render:e=>R(Qt,{payload:e})},getContractById:{fallback:{contract:{id:``},phases:[]},marker:`contract-detail:mounted`,render:e=>R(Pt,{payload:e})},getCreditNoteById:{fallback:{credit_note:{id:``}},marker:`credit-note-detail:mounted`,render:e=>R(Wt,{payload:e})},listProducts:{fallback:{products:[],total:0},marker:`product-table:mounted`,render:e=>R(fn,{payload:e})},listPlans:{fallback:{plans:[],total:0},marker:`plan-table:mounted`,render:e=>R(dn,{payload:e})},listJournalEntries:{fallback:{entries:[],total:0},marker:`journal-table:mounted`,render:e=>R(an,{payload:e})},listJobs:{fallback:{jobs:[],total:0},marker:`job-table:mounted`,render:e=>R(rn,{payload:e})},listContacts:{fallback:{contacts:[],total:0},marker:`contact-table:mounted`,render:e=>R(Mt,{payload:e})},listRawMetrics:{fallback:{raw_metrics:[],total:0},marker:`raw-metric-table:mounted`,render:e=>R(pn,{payload:e})},listAggregates:{fallback:{aggregates:[],total:0},marker:`aggregate-table:mounted`,render:e=>R(jt,{payload:e})},listCustomerAddresses:{fallback:{addresses:[]},marker:`address-list:mounted`,render:e=>R(Ot,{payload:e})},listPaymentMethods:{fallback:{payment_methods:[]},marker:`payment-method-list:mounted`,render:e=>R(on,{payload:e})},listBusinessEntities:{fallback:{entities:[]},marker:`entity-table:mounted`,render:e=>R(Zt,{payload:e})},listEntitlements:{fallback:{entitlements:[],total:0},marker:`entitlement-table:mounted`,render:e=>R(Xt,{payload:e})},getInvoicePreviewHtml:{fallback:{html:``},marker:`invoice-preview:mounted`,render:e=>R(en,{payload:e})}};function _n(){return typeof window>`u`?null:window.openai??null}function vn(){let e=_n(),[t,n]=F(e?.toolInput?.toolName??null),[r,i]=F(e?.toolOutput??null),a=De(null);if(Ee(()=>{let e=pt(`ui/notifications/tool-result`,e=>{let t=e;t&&Object.prototype.hasOwnProperty.call(t,`structuredContent`)&&i(t.structuredContent??null)}),t=pt(`ui/notifications/host-context-changed`,e=>{let t=e?.toolInfo?.tool?.name;typeof t==`string`&&n(t)});return lt(`ui/initialize`,{appCapabilities:{},appInfo:mn,protocolVersion:hn}).then(e=>{let t=e?.hostContext?.toolInfo?.tool?.name;typeof t==`string`&&n(t),ut(`ui/notifications/initialized`)}).catch(()=>{}),()=>{e(),t()}},[]),Ee(()=>{let e=e=>{let t=e?.detail?.globals;t&&(t.toolInput?.toolName&&n(t.toolInput.toolName),Object.prototype.hasOwnProperty.call(t,`toolOutput`)&&i(t.toolOutput??null))};return window.addEventListener(`openai:set_globals`,e,{passive:!0}),()=>{window.removeEventListener(`openai:set_globals`,e)}},[]),Ee(()=>{if(r===null||!t)return;let e=gn[t];if(e?.marker&&ut(`ui/message`,{hidden:!0,marker:e.marker}),!a.current)return;let n=()=>{let e=a.current.getBoundingClientRect();ut(`ui/notifications/size-changed`,{width:Math.round(e.width),height:Math.round(e.height)})};n();let i=new ResizeObserver(n);return i.observe(a.current),()=>i.disconnect()},[r,t]),!t||!gn[t])return R(`div`,{"data-app-loading":!0,style:{visibility:`hidden`,minHeight:1}});let o=gn[t];if(r===null&&!e?.toolOutput)return R(`div`,{"data-app-loading":!0,style:{visibility:`hidden`,minHeight:1}});let s=r??o.fallback;return R(`div`,{ref:a,className:`text-foreground bg-background p-4 font-sans text-[14px]`,children:o.render(s)})}var yn=document.getElementById(`root`);yn&&ot(yn).render(R(S,{children:R(vn,{})}));</script>
7
+ <script type="module" crossorigin>(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m={},h=[],g=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_=Array.isArray;function v(e,t){for(var n in t)e[n]=t[n];return e}function y(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function b(t,n,r){var i,a,o,s={};for(o in n)o==`key`?i=n[o]:o==`ref`?a=n[o]:s[o]=n[o];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):r),typeof t==`function`&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return x(t,s,i,a,null)}function x(e,r,i,a,o){var s={type:e,props:r,key:i,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++n,__i:-1,__u:0};return o==null&&t.vnode!=null&&t.vnode(s),s}function S(e){return e.children}function C(e,t){this.props=e,this.context=t}function w(e,t){if(t==null)return e.__?w(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?w(e):null}function T(e){if(e.__P&&e.__d){var n=e.__v,r=n.__e,i=[],a=[],o=v({},n);o.__v=n.__v+1,t.vnode&&t.vnode(o),ae(e.__P,o,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,i,r??w(n),!!(32&n.__u),a),o.__v=n.__v,o.__.__k[o.__i]=o,se(i,o,a),n.__e=n.__=null,o.__e!=r&&E(o)}}function E(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),E(e)}function D(e){(!e.__d&&(e.__d=!0)&&r.push(e)&&!O.__r++||i!=t.debounceRendering)&&((i=t.debounceRendering)||a)(O)}function O(){try{for(var e,t=1;r.length;)r.length>t&&r.sort(o),e=r.shift(),t=r.length,T(e)}finally{r.length=O.__r=0}}function ee(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,g,_,v,y,b=r&&r.__k||h,x=t.length;for(c=te(n,t,b,c,x),d=0;d<x;d++)(p=n.__k[d])!=null&&(f=p.__i!=-1&&b[p.__i]||m,p.__i=d,v=ae(e,p,f,i,a,o,s,c,l,u),g=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&ue(f.ref,null,p),u.push(p.ref,p.__c||g,p)),_==null&&g!=null&&(_=g),(y=!!(4&p.__u))||f.__k===p.__k?(c=k(p,c,e,y),y&&f.__e&&(f.__e=null)):typeof p.type==`function`&&v!==void 0?c=v:g&&(c=g.nextSibling),p.__u&=-7);return n.__e=_,c}function te(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=x(null,o,null,null,null):_(o)?o=e.__k[a]=x(S,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,s=null,(l=o.__i=j(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=w(s)),de(s,s));return r}function k(e,t,n,r){var i,a;if(typeof e.type==`function`){for(i=e.__k,a=0;i&&a<i.length;a++)i[a]&&(i[a].__=e,t=k(i[a],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=w(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function A(e,t){return t||=[],e==null||typeof e==`boolean`||(_(e)?e.some(function(e){A(e,t)}):t.push(e)),t}function j(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function ne(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||g.test(t)?n:n+`px`}function re(e,t,n,r,i){var a,o;n:if(t==`style`)if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||ne(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||ne(e.style,t,n[t])}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(u,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n[l]=r[l]:(n[l]=d,e.addEventListener(t,a?p:f,a)):e.removeEventListener(t,a?p:f,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function ie(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n[c]==null)n[c]=d++;else if(n[c]<r[l])return;return r(t.event?t.event(n):n)}}}function ae(e,n,r,i,a,o,s,c,l,u){var d,f,p,m,g,b,x,w,T,E,D,O,te,k,A,j=n.type;if(n.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),o=[c=n.__e=r.__e]),(d=t.__b)&&d(n);n:if(typeof j==`function`)try{if(w=n.props,T=j.prototype&&j.prototype.render,E=(d=j.contextType)&&i[d.__c],D=d?E?E.props.value:d.__:i,r.__c?x=(f=n.__c=r.__c).__=f.__E:(T?n.__c=f=new j(w,D):(n.__c=f=new C(w,D),f.constructor=j,f.render=fe),E&&E.sub(f),f.state||={},f.__n=i,p=f.__d=!0,f.__h=[],f._sb=[]),T&&f.__s==null&&(f.__s=f.state),T&&j.getDerivedStateFromProps!=null&&(f.__s==f.state&&(f.__s=v({},f.__s)),v(f.__s,j.getDerivedStateFromProps(w,f.__s))),m=f.props,g=f.state,f.__v=n,p)T&&j.getDerivedStateFromProps==null&&f.componentWillMount!=null&&f.componentWillMount(),T&&f.componentDidMount!=null&&f.__h.push(f.componentDidMount);else{if(T&&j.getDerivedStateFromProps==null&&w!==m&&f.componentWillReceiveProps!=null&&f.componentWillReceiveProps(w,D),n.__v==r.__v||!f.__e&&f.shouldComponentUpdate!=null&&!1===f.shouldComponentUpdate(w,f.__s,D)){n.__v!=r.__v&&(f.props=w,f.state=f.__s,f.__d=!1),n.__e=r.__e,n.__k=r.__k,n.__k.some(function(e){e&&(e.__=n)}),h.push.apply(f.__h,f._sb),f._sb=[],f.__h.length&&s.push(f);break n}f.componentWillUpdate!=null&&f.componentWillUpdate(w,f.__s,D),T&&f.componentDidUpdate!=null&&f.__h.push(function(){f.componentDidUpdate(m,g,b)})}if(f.context=D,f.props=w,f.__P=e,f.__e=!1,O=t.__r,te=0,T)f.state=f.__s,f.__d=!1,O&&O(n),d=f.render(f.props,f.state,f.context),h.push.apply(f.__h,f._sb),f._sb=[];else do f.__d=!1,O&&O(n),d=f.render(f.props,f.state,f.context),f.state=f.__s;while(f.__d&&++te<25);f.state=f.__s,f.getChildContext!=null&&(i=v(v({},i),f.getChildContext())),T&&!p&&f.getSnapshotBeforeUpdate!=null&&(b=f.getSnapshotBeforeUpdate(m,g)),k=d!=null&&d.type===S&&d.key==null?ce(d.props.children):d,c=ee(e,_(k)?k:[k],n,r,i,a,o,s,c,l,u),f.base=n.__e,n.__u&=-161,f.__h.length&&s.push(f),x&&(f.__E=f.__=null)}catch(e){if(n.__v=null,l||o!=null)if(e.then){for(n.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o[o.indexOf(c)]=null,n.__e=c}else{for(A=o.length;A--;)y(o[A]);oe(n)}else n.__e=r.__e,n.__k=r.__k,e.then||oe(n);t.__e(e,n,r)}else o==null&&n.__v==r.__v?(n.__k=r.__k,n.__e=r.__e):c=n.__e=le(r.__e,n,r,i,a,o,s,l,u);return(d=t.diffed)&&d(n),128&n.__u?void 0:c}function oe(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(oe))}function se(e,n,r){for(var i=0;i<r.length;i++)ue(r[i],r[++i],r[++i]);t.__c&&t.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){t.__e(e,n.__v)}})}function ce(e){return typeof e!=`object`||!e||e.__b>0?e:_(e)?e.map(ce):e.constructor===void 0?v({},e):null}function le(n,r,i,a,o,s,c,l,u){var d,f,p,h,g,v,b,x=i.props||m,S=r.props,C=r.type;if(C==`svg`?o=`http://www.w3.org/2000/svg`:C==`math`?o=`http://www.w3.org/1998/Math/MathML`:o||=`http://www.w3.org/1999/xhtml`,s!=null){for(d=0;d<s.length;d++)if((g=s[d])&&`setAttribute`in g==!!C&&(C?g.localName==C:g.nodeType==3)){n=g,s[d]=null;break}}if(n==null){if(C==null)return document.createTextNode(S);n=document.createElementNS(o,C,S.is&&S),l&&=(t.__m&&t.__m(r,s),!1),s=null}if(C==null)x===S||l&&n.data==S||(n.data=S);else{if(s=C==`textarea`&&S.defaultValue!=null?null:s&&e.call(n.childNodes),!l&&s!=null)for(x={},d=0;d<n.attributes.length;d++)x[(g=n.attributes[d]).name]=g.value;for(d in x)g=x[d],d==`dangerouslySetInnerHTML`?p=g:d==`children`||d in S||d==`value`&&`defaultValue`in S||d==`checked`&&`defaultChecked`in S||re(n,d,null,g,o);for(d in S)g=S[d],d==`children`?h=g:d==`dangerouslySetInnerHTML`?f=g:d==`value`?v=g:d==`checked`?b=g:l&&typeof g!=`function`||x[d]===g||re(n,d,g,x[d],o);if(f)l||p&&(f.__html==p.__html||f.__html==n.innerHTML)||(n.innerHTML=f.__html),r.__k=[];else if(p&&(n.innerHTML=``),ee(r.type==`template`?n.content:n,_(h)?h:[h],r,i,a,C==`foreignObject`?`http://www.w3.org/1999/xhtml`:o,s,c,s?s[0]:i.__k&&w(i,0),l,u),s!=null)for(d=s.length;d--;)y(s[d]);l&&C!=`textarea`||(d=`value`,C==`progress`&&v==null?n.removeAttribute(`value`):v!=null&&(v!==n[d]||C==`progress`&&!v||C==`option`&&v!=x[d])&&re(n,d,v,x[d],o),d=`checked`,b!=null&&b!=n[d]&&re(n,d,b,x[d],o))}return n}function ue(e,n,r){try{if(typeof e==`function`){var i=typeof e.__u==`function`;i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(e){t.__e(e,r)}}function de(e,n,r){var i,a;if(t.unmount&&t.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||ue(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){t.__e(e,n)}i.base=i.__P=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&de(i[a],n,r||typeof e.type!=`function`);r||y(e.__e),e.__c=e.__=e.__e=void 0}function fe(e,t,n){return this.constructor(e,n)}function pe(n,r,i){var a,o,s,c;r==document&&(r=document.documentElement),t.__&&t.__(n,r),o=(a=typeof i==`function`)?null:i&&i.__k||r.__k,s=[],c=[],ae(r,n=(!a&&i||r).__k=b(S,null,[n]),o||m,m,r.namespaceURI,!a&&i?[i]:o?null:r.firstChild?e.call(r.childNodes):null,s,!a&&i?i:o?o.__e:r.firstChild,a,c),se(s,n,c)}e=h.slice,t={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},n=0,C.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=v({},this.state);typeof e==`function`&&(e=e(v({},n),this.props)),e&&v(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),D(this))},C.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),D(this))},C.prototype.render=S,r=[],a=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,o=function(e,t){return e.__v.__b-t.__v.__b},O.__r=0,s=Math.random().toString(8),c=`__d`+s,l=`__a`+s,u=/(PointerCapture)$|Capture$/i,d=0,f=ie(!1),p=ie(!0);var M,N,me,he,ge=0,_e=[],P=t,ve=P.__b,ye=P.__r,be=P.diffed,xe=P.__c,Se=P.unmount,Ce=P.__;function we(e,t){P.__h&&P.__h(N,e,ge||t),ge=0;var n=N.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function F(e){return ge=1,Te(Pe,e)}function Te(e,t,n){var r=we(M++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Pe(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=N,!N.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter(function(e){return e.__c});if(i.every(function(e){return!e.__N}))return!a||a.call(this,e,t,n);var o=r.__c.props!==e;return i.some(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a&&a.call(this,e,t,n)||o};N.__f=!0;var a=N.shouldComponentUpdate,o=N.componentWillUpdate;N.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},N.shouldComponentUpdate=i}return r.__N||r.__}function Ee(e,t){var n=we(M++,3);!P.__s&&Ne(n.__H,t)&&(n.__=e,n.u=t,N.__H.__h.push(n))}function De(e){return ge=5,I(function(){return{current:e}},[])}function I(e,t){var n=we(M++,7);return Ne(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Oe(){for(var e;e=_e.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(je),t.__h.some(Me),t.__h=[]}catch(n){t.__h=[],P.__e(n,e.__v)}}}P.__b=function(e){N=null,ve&&ve(e)},P.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ce&&Ce(e,t)},P.__r=function(e){ye&&ye(e),M=0;var t=(N=e.__c).__H;t&&(me===N?(t.__h=[],N.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(je),t.__h.some(Me),t.__h=[],M=0)),me=N},P.diffed=function(e){be&&be(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_e.push(t)!==1&&he===P.requestAnimationFrame||((he=P.requestAnimationFrame)||Ae)(Oe)),t.__H.__.some(function(e){e.u&&(e.__H=e.u),e.u=void 0})),me=N=null},P.__c=function(e,t){t.some(function(e){try{e.__h.some(je),e.__h=e.__h.filter(function(e){return!e.__||Me(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],P.__e(n,e.__v)}}),xe&&xe(e,t)},P.unmount=function(e){Se&&Se(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{je(e)}catch(e){t=e}}),n.__H=void 0,t&&P.__e(t,n.__v))};var ke=typeof requestAnimationFrame==`function`;function Ae(e){var t,n=function(){clearTimeout(r),ke&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);ke&&(t=requestAnimationFrame(n))}function je(e){var t=N,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),N=t}function Me(e){var t=N;e.__c=e.__(),N=t}function Ne(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function Pe(e,t){return typeof t==`function`?t(e):t}function Fe(e,t){for(var n in t)e[n]=t[n];return e}function Ie(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function Le(e,t){this.props=e,this.context=t}(Le.prototype=new C).isPureReactComponent=!0,Le.prototype.shouldComponentUpdate=function(e,t){return Ie(this.props,e)||Ie(this.state,t)};var Re=t.__b;t.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Re&&Re(e)},typeof Symbol<`u`&&Symbol.for;var ze=t.__e;t.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}ze(e,t,n,r)};var Be=t.unmount;function Ve(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=Fe({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return Ve(e,t,n)})),e}function He(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return He(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Ue(){this.__u=0,this.o=null,this.__b=null}function We(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function Ge(){this.i=null,this.l=null}t.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Be&&Be(e)},(Ue.prototype=new C).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=We(r.__v),a=!1,o=function(){a||r.__z||(a=!0,n.__R=null,i?i(c):c())};n.__R=o;var s=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=He(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=s,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},Ue.prototype.componentWillUnmount=function(){this.o=[]},Ue.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=Ve(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&b(S,null,e.fallback);return i&&(i.__u&=-33),[b(S,null,t.__a?null:e.children),i]};var Ke=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!==`t`||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};(Ge.prototype=new C).__a=function(e){var t=this,n=We(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),Ke(t,e,r)):i()};n?n(a):a()}},Ge.prototype.render=function(e){this.i=null,this.l=new Map;var t=A(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},Ge.prototype.componentDidUpdate=Ge.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Ke(e,n,t)})};var qe=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,Je=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ye=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Xe=/[A-Z0-9]/g,Ze=typeof document<`u`,Qe=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};function $e(e,t,n){return t.__k??(t.textContent=``),pe(e,t),typeof n==`function`&&n(),e?e.__c:null}C.prototype.isReactComponent=!0,[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(C.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var et=t.event;t.event=function(e){return et&&(e=et(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var tt={configurable:!0,get:function(){return this.class}},nt=t.vnode;t.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)==-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||Ze&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||Qe(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:Ye.test(a)&&(a=s):s=a=`oninput`:i&&Je.test(a)?a=a.replace(Xe,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&(r.multiple&&Array.isArray(r.value)&&(r.value=A(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),r.defaultValue!=null&&(r.value=A(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,`className`,tt)):t.className&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=qe,nt&&nt(e)};var rt=t.__r;t.__r=function(e){rt&&rt(e),e.__c};var it=t.diffed;t.diffed=function(e){it&&it(e);var t=e.props,n=e.__e;n!=null&&e.type===`textarea`&&`value`in t&&t.value!==n.value&&(n.value=t.value==null?``:t.value)};function at(e){return!!e.__k&&(pe(null,e),!0)}function ot(e){return{render:function(t){$e(t,e)},unmount:function(){at(e)}}}var L=new Map,st=1,ct=new Set;typeof window<`u`&&window.addEventListener(`message`,e=>{let t=e.data;if(!t||typeof t!=`object`||t.jsonrpc!==`2.0`)return;let n=t;if(n.id!=null&&L.has(n.id)){let e=L.get(n.id);L.delete(n.id),n.error?e.reject(n.error):e.resolve(n.result);return}if(n.method){let e={jsonrpc:`2.0`,method:n.method,params:n.params};ct.forEach(t=>{try{t(e)}catch{}})}});function lt(e,t,n=3e4){if(typeof window>`u`||!window.parent)return Promise.reject(Error(`no host`));let r=st++;return new Promise((i,a)=>{let o=setTimeout(()=>{L.has(r)&&(L.delete(r),a(Error(`callHost timeout: ${e}`)))},n);L.set(r,{resolve:e=>{clearTimeout(o),i(e)},reject:e=>{clearTimeout(o),a(e)}}),window.parent.postMessage({jsonrpc:`2.0`,id:r,method:e,params:t},`*`)})}function ut(e,t){typeof window>`u`||!window.parent||window.parent.postMessage({jsonrpc:`2.0`,method:e,params:t},`*`)}var dt=`https://app.zenskar.com`;function ft(e){let t=`${dt}${e.startsWith(`/`)?e:`/${e}`}`;lt(`ui/open-link`,{url:t}).catch(()=>{try{window.open(t,`_blank`,`noopener,noreferrer`)}catch{ut(`ui/message`,{text:`Open: ${t}`})}})}function pt(e,t){let n=n=>{n.method===e&&t(n.params)};return ct.add(n),()=>ct.delete(n)}var mt=0;Array.isArray;function R(e,n,r,i,a,o){n||={};var s,c,l=n;if(`ref`in l)for(c in l={},n)c==`ref`?s=n[c]:l[c]=n[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--mt,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return t.vnode&&t.vnode(u),u}function z({children:e}){return R(`span`,{className:`text-muted-foreground`,children:e})}var ht=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function gt(e){if(!e)return null;let t=e.replace(` `,`T`);/^\d{4}-\d{2}-\d{2}$/.test(t)?t+=`T00:00:00Z`:/[zZ]|[+-]\d{2}:?\d{2}$/.test(t)||(t+=`Z`);let n=new Date(t);return Number.isNaN(n.getTime())?null:n}function _t(e){return e<10?`0`+e:String(e)}function B(e){let t=gt(e);return t?`${ht[t.getUTCMonth()]} ${_t(t.getUTCDate())}, ${t.getUTCFullYear()}`:R(z,{children:`—`})}function V(e){let t=gt(e);if(!t)return R(z,{children:`—`});let n=t.getUTCHours(),r=n>=12?`PM`:`AM`,i=n%12||12;return`${ht[t.getUTCMonth()]} ${_t(t.getUTCDate())}, ${t.getUTCFullYear()} ${_t(i)}:${_t(t.getUTCMinutes())} ${r}`}function vt(e,t=new Date){let n=gt(e);return n?Math.floor((t.getTime()-n.getTime())/864e5):null}function H(e,t=`USD`){if(e==null||!Number.isFinite(e))return R(z,{children:`—`});let n=e/100;try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t,maximumFractionDigits:2}).format(n)}catch{return`${t} ${n.toLocaleString()}`}}function yt(e){return e?e.display?e.display:e.value==null?R(z,{children:`—`}):H(e.value,e.unit||`USD`):R(z,{children:`—`})}function U(e,t=8){return e?e.length<=t?e:e.slice(0,t)+`…`:R(z,{children:`—`})}var bt=`bg-secondary/20 text-secondary ring-1 ring-secondary/30`,xt=`bg-primary/20 text-primary ring-1 ring-primary/30`,St=`bg-destructive/20 text-destructive ring-1 ring-destructive/30`,W=`bg-muted text-muted-foreground ring-1 ring-border`,Ct=`bg-accent text-accent-foreground ring-1 ring-border`,wt=`bg-secondary/12 text-secondary ring-1 ring-secondary/20`,Tt={paid:bt,approved:bt,active:bt,success:bt,posted:bt,upcoming:xt,partially_paid:xt,in_progress:xt,paused:xt,failed:St,disputed:St,draft:W,void:W,voided:W,expired:W,archived:W,issued:wt,scheduled:wt,refunded:Ct},Et=W;function G({status:e}){if(!e)return R(z,{children:`—`});let t=Tt[e.toLowerCase()]||Et,n=Dt(e);return R(`span`,{className:`inline-block whitespace-nowrap rounded-md px-2 py-0.5 text-xs ${t}`,children:n})}function Dt(e){let t=e.replace(/_/g,` `);return t.charAt(0).toUpperCase()+t.slice(1)}function Ot({payload:e}){let t=e.addresses||[];return R(`div`,{className:`space-y-3`,children:[R(`header`,{className:`flex items-baseline justify-between gap-3`,children:R(`h2`,{className:`m-0 text-lg font-semibold`,children:[`Addresses`,` `,R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[`(`,t.length,`)`]}),e.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:[` `,`· `,e.customer_id]}):null]})}),t.length===0?R(`div`,{className:`text-muted-foreground border-border rounded-md border py-8 text-center`,children:`No addresses on file.`}):R(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:t.map((e,t)=>R(kt,{addr:e},e.id||t))})]})}function kt({addr:e}){return R(`article`,{className:`space-y-1 rounded-md border p-3 ${e.is_primary?`border-ring ring-ring ring-1`:`border-border`}`,children:[R(`header`,{className:`flex items-baseline justify-between gap-2`,children:[R(`div`,{className:`text-sm font-medium`,children:e.label||R(z,{children:`Untitled`})}),e.is_primary?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`primary`}):null]}),R(`div`,{className:`text-sm`,children:[e.line1?R(`div`,{children:e.line1}):null,e.line2?R(`div`,{children:e.line2}):null,e.line3?R(`div`,{children:e.line3}):null,R(`div`,{children:[e.city,e.state,e.zip_code].filter(Boolean).join(`, `)||R(z,{children:`—`})}),e.country?R(`div`,{className:`text-muted-foreground mt-0.5 text-xs uppercase`,children:e.country}):null,e.validation_status?R(`span`,{className:`mt-1 inline-block rounded-full px-2 py-0.5 text-[10px] ring-1 ${e.validation_status===`valid`?`bg-secondary/20 text-secondary ring-secondary/30`:`bg-muted text-muted-foreground ring-border`}`,children:e.validation_status}):null]})]})}function K({title:e,count:t,scope:n,rightHint:r,columns:i,rows:a,sortKey:o,sortDir:s,onSort:c,emptyMessage:l=`Nothing to show.`,showIndex:u=!0,rowKey:d,rowClassName:f,hoverRows:p=!0}){let m=i.length+ +!!u,h=r===void 0&&c?`click headers to sort`:r;return R(`div`,{className:`space-y-3`,children:[R(`header`,{className:`flex items-baseline justify-between gap-3`,children:[R(`h2`,{className:`m-0 text-lg font-semibold`,children:[e,t==null?null:R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[` `,`(`,t.toLocaleString(),`)`]}),n?R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[` `,`· `,n]}):null]}),h==null?null:R(`span`,{className:`text-muted-foreground text-xs`,children:h})]}),R(`div`,{className:`border-border overflow-auto rounded-md border`,children:R(`table`,{className:`w-full text-sm`,children:[R(`thead`,{className:`bg-muted text-muted-foreground border-b-2 border-border text-xs tracking-wide uppercase`,children:R(`tr`,{children:[u?R(At,{children:`#`}):null,i.map(e=>R(At,{align:e.align,sortable:e.sortable,active:e.sortable&&o===e.key,dir:s,onClick:e.sortable&&c?()=>c(e.key):void 0,children:e.header},e.key))]})}),R(`tbody`,{children:a.length===0?R(`tr`,{children:R(`td`,{colSpan:m,className:`text-muted-foreground py-8 text-center`,children:l})}):a.map((e,t)=>R(`tr`,{className:`border-border border-t ${p?`hover:bg-muted/60`:``} ${f?f(e,t):``}`.trim().replace(/\s+/g,` `),children:[u?R(`td`,{className:`text-muted-foreground px-3 py-2 tabular-nums`,children:t+1}):null,i.map(n=>R(`td`,{className:`px-3 py-2 ${n.align===`right`?`text-right tabular-nums`:``} ${n.className??``}`.trim(),children:n.render(e,t)},n.key))]},d?d(e,t):t))})]})})]})}function At({children:e,sortable:t,active:n,dir:r,onClick:i,align:a=`left`}){return R(`th`,{className:[`px-3 py-2 font-semibold`,a===`right`?`text-right`:`text-left`,t?`cursor-pointer select-none hover:text-foreground`:``,n?`text-foreground`:``].filter(Boolean).join(` `),onClick:i,children:[e,t&&n?r===`asc`?` ↑`:` ↓`:null]})}function q({href:e,label:t=`View`}){return R(`button`,{type:`button`,className:`text-secondary hover:text-secondary/80 text-xs underline`,onClick:()=>ft(e),children:t})}function J(e,t,n){let r=n===`asc`?1:-1;return[...e].sort((e,n)=>{let i=t(e),a=t(n);return i==null&&a==null?0:i==null?1:a==null?-1:i<a?-1*r:i>a?1*r:0})}function jt({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.aggregates,e=>t===`name`?e.name:e.created_at,r),[e.aggregates,t,r]);return R(K,{title:`Aggregates`,count:e.total,scope:e.scope,rightHint:`aka billable metrics`,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/meters/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No aggregates match.`,rowKey:(e,t)=>e.id||t})}function Mt({payload:e}){let[t,n]=F(`name`),[r,i]=F(`asc`),a=I(()=>J(e.contacts,e=>t===`name`?e.name:e.email,r),[e.contacts,t,r]);return R(K,{title:`Contacts`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`email`,header:`Email`,sortable:!0,className:`text-secondary`,render:e=>e.email||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-secondary font-mono text-xs`,render:e=>U(e.customer_id,10)},{key:`send_invoice`,header:`Send Invoice`,className:`text-xs`,render:e=>e.send_invoice==null?R(z,{children:`—`}):e.send_invoice?`yes`:`no`},{key:`send_contract`,header:`Send Contract`,className:`text-xs`,render:e=>e.send_contract==null?R(z,{children:`—`}):e.send_contract?`yes`:`no`},{key:`view`,header:`View`,render:e=>R(q,{href:`/contacts/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`asc`))},emptyMessage:`No contacts match.`,rightHint:null,rowKey:(e,t)=>e.id||t})}var Nt=`text-muted-foreground text-[11px] tracking-wide uppercase`;function Y({label:e,value:t,tone:n}){return R(`div`,{children:[R(`div`,{className:Nt,children:e}),R(`div`,{className:n===`warn`?`text-2xl font-bold tabular-nums text-destructive`:`text-2xl font-bold tabular-nums`,children:t})]})}function X({title:e,children:t}){return R(`section`,{className:`space-y-1`,children:[R(`div`,{className:Nt,children:e}),t]})}function Z({label:e,children:t}){return R(`div`,{children:[R(`div`,{className:Nt,children:e}),R(`div`,{className:`text-sm`,children:t})]})}function Pt({payload:e}){let t=e.contract,n=e.phases||[],r=new Date;return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:[R(`div`,{children:[R(`h2`,{className:`m-0 flex min-w-0 items-center gap-2 text-lg font-semibold`,children:[R(`span`,{className:`min-w-0 truncate`,children:t.name||R(z,{children:`—`})}),t.status?R(G,{status:t.status}):null]}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]}),R(`div`,{className:`flex gap-2`,children:t.contract_link?R(`a`,{href:t.contract_link,target:`_blank`,rel:`noreferrer`,className:`border-border bg-accent text-accent-foreground hover:bg-primary hover:text-primary-foreground rounded border px-3 py-1 text-xs transition-colors`,children:`Open`}):null})]}),R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:[R(Z,{label:`Customer`,children:t.customer_name?R(`div`,{children:[R(`div`,{className:`truncate text-sm`,children:t.customer_name}),t.customer_id?R(`div`,{className:`text-muted-foreground font-mono text-xs break-all`,children:t.customer_id}):null]}):t.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.customer_id}):R(z,{children:`—`})}),R(Z,{label:`Currency`,children:t.currency?R(`span`,{className:`font-mono text-xs`,children:t.currency}):R(z,{children:`—`})}),R(Z,{label:`Type`,children:t.contract_type||R(z,{children:`—`})}),R(Z,{label:`Term`,children:t.start_date&&t.end_date?R(`span`,{className:`text-sm`,children:[t.start_date.slice(0,10),` → `,t.end_date.slice(0,10)]}):R(z,{children:`—`})}),R(Z,{label:`Anchor Date`,children:B(t.anchor_date)}),R(Z,{label:`Renewal Policy`,children:t.renewal_policy||R(z,{children:`—`})}),R(Z,{label:`Plan`,children:t.plan_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.plan_id}):R(z,{children:`—`})}),R(Z,{label:`Created`,children:B(t.created_at)})]}),t.description?R(X,{title:`Description`,children:R(`div`,{className:`text-sm`,children:t.description})}):null,t.tags&&t.tags.length>0?R(X,{title:`Tags`,children:R(`div`,{className:`flex flex-wrap gap-2`,children:t.tags.map((e,t)=>R(`span`,{className:`bg-muted text-muted-foreground rounded-full px-2 py-0.5 text-xs`,children:e},t))})}):null,n.length>0?R(X,{title:`Phases (${n.length})`,children:R(`div`,{className:`space-y-2`,children:n.map((e,t)=>R(Ft,{phase:e,index:t,today:r},e.id||t))})}):null,t.custom_attributes&&Object.keys(t.custom_attributes).length>0?R(X,{title:`Custom Attributes`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_attributes).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`line-clamp-2 break-all font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function Ft({phase:e,index:t,today:n}){let r=e.start_date?new Date(e.start_date):null,i=e.end_date?new Date(e.end_date):null,a=r&&i&&r<=n&&n<=i,o=a?`ring-2 ring-ring`:``,s=e.pricings||[];return R(`div`,{className:`border-border rounded-md border p-3 ${o}`,children:[R(`div`,{className:`flex items-baseline justify-between gap-2`,children:[R(`div`,{className:`min-w-0 text-sm font-medium`,children:[R(`span`,{className:`text-muted-foreground mr-2`,children:[`#`,t+1]}),R(`span`,{className:`wrap-break-word`,children:e.name||R(z,{children:`Untitled phase`})}),a?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 ml-2 rounded-full px-2 py-0.5 text-xs ring-1`,children:`current`}):null]}),R(`div`,{className:`text-muted-foreground text-xs whitespace-nowrap`,children:[e.start_date?e.start_date.slice(0,10):`—`,` →`,` `,e.end_date?e.end_date.slice(0,10):`—`]})]}),s.length>0?R(`div`,{className:`mt-2 space-y-2`,children:s.map((e,t)=>R(Lt,{p:e},e.id||t))}):R(`div`,{className:`mt-1 grid grid-cols-2 gap-2 text-xs sm:grid-cols-3`,children:[R(`div`,{children:[R(`span`,{className:`text-muted-foreground`,children:`Products:`}),` `,R(`span`,{className:`tabular-nums`,children:e.product_count??`—`})]}),e.pricing_summary?R(`div`,{className:`text-muted-foreground col-span-full sm:col-span-2`,children:e.pricing_summary}):null]})]})}function It(e){let t=e.match(/P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?/);if(!t)return e;let n=Number(t[1]||0),r=Number(t[2]||0),i=Number(t[3]||0),a=Number(t[4]||0),o=[];return n&&o.push(`${n} year${n>1?`s`:``}`),r&&o.push(`${r} month${r>1?`s`:``}`),i&&o.push(`${i} week${i>1?`s`:``}`),a&&o.push(`${a} day${a>1?`s`:``}`),o.join(` `)||e}function Q(e,t){if(Array.isArray(e)||e==null||!Number.isFinite(e))return`—`;try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t||`USD`,maximumFractionDigits:2}).format(e)}catch{return`${t||`USD`} ${e}`}}function Lt({p:e}){e.currency;let t=e.features&&e.features.length>0;return R(`div`,{className:`border-border rounded-md border bg-card px-3 py-2.5`,children:R(`div`,{className:`flex w-full flex-col gap-2.5`,children:[R(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:R(`div`,{className:`flex min-w-0 items-center gap-2`,children:[R(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:e.product_name||R(z,{children:`Unnamed product`})}),e.product_type?R(`span`,{className:`bg-accent text-accent-foreground rounded px-1.5 py-0.5 text-xs font-medium uppercase`,children:e.product_type}):null]})}),e.description?R(`div`,{className:`text-muted-foreground line-clamp-3 text-xs leading-relaxed`,children:e.description}):null,R(`hr`,{className:`border-border m-0`}),R(`div`,{className:`flex flex-wrap gap-x-6 gap-y-2.5`,children:[R(zt,{p:e}),e.pricing_model===`flat_fee`?null:R($,{label:e.quantity_type===`metered`?`Billable Metric${e.quantity_unit?` (${e.quantity_unit})`:``}`:`Quantity`,children:e.quantity_type===`fixed`&&e.quantity_value!=null?R(`span`,{children:[e.quantity_value,e.quantity_unit?` ${e.quantity_unit}`:``]}):e.quantity_type===`metered`?R(`span`,{className:`truncate`,children:e.meter_name||R(z,{children:`No metric`})}):R(z,{children:`—`})}),e.billing_cadence?R($,{label:`Billing Cadence (${e.is_recurring?`Recurring`:`One Time`})`,children:[e.billing_timing?`${e.billing_timing} - `:``,`Every`,` `,It(e.billing_cadence)]}):null,e.start_date?R($,{label:`Product Period`,children:[e.start_date.slice(0,10),` →`,` `,e.end_date?e.end_date.slice(0,10):`Forever`]}):null]}),t?R(Ht,{features:e.features}):null]})})}function $({label:e,children:t}){return R(`div`,{className:`min-w-0`,children:[R(`div`,{className:`text-muted-foreground text-xs font-medium`,children:e}),R(`div`,{className:`text-xs`,children:t})]})}function Rt(e){return e?e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()):`Unknown`}function zt({p:e}){let t=e.currency,n=t?` (${t})`:``;switch(e.pricing_model){case`flat_fee`:return R($,{label:`Flat Fee${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})});case`per_unit`:case`per_unit_pricing`:return R($,{label:`Per Unit Price${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})});case`percent`:case`percent_pricing`:return R($,{label:`Percent Pricing${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:e.unit_amount==null?`—`:`${e.unit_amount}%`})});case`package`:case`package_pricing`:return R(`div`,{className:`flex flex-wrap gap-x-6 gap-y-2.5`,children:[R($,{label:`Package Price${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})}),e.package_size?R($,{label:`Package Size`,children:R(`span`,{children:e.package_size})}):null]});case`volume`:case`volume_pricing`:case`tiered`:case`tiered_pricing`:case`step`:case`step_pricing`:return R(`div`,{className:`w-full`,children:[R(`div`,{className:`text-muted-foreground mb-1 text-xs font-medium`,children:[Rt(e.pricing_model),` Price`,n]}),R(Bt,{tiers:e.tiers,currency:t})]});case`volume_with_flat_fee`:case`tiered_with_flat_fee`:return R(`div`,{className:`w-full`,children:[R(`div`,{className:`text-muted-foreground mb-1 text-xs font-medium`,children:[Rt(e.pricing_model),` Price`,n]}),R(Bt,{tiers:e.tiers,currency:t,showFlatFee:!0})]});case`matrix`:case`matrix_pricing`:return R(`div`,{className:`w-full`,children:[R(`div`,{className:`text-muted-foreground mb-1 text-xs font-medium`,children:[`Matrix Pricing`,n]}),R(Vt,{matrix:e.matrix,currency:t}),e.unit_amount==null?null:R(`div`,{className:`text-muted-foreground mt-1.5 text-xs`,children:[`Default price:`,` `,R(`span`,{className:`font-semibold`,children:Q(e.unit_amount,t)})]})]});case`custom`:case`custom_pricing`:return R($,{label:`Custom Pricing`,children:R(`span`,{className:`text-muted-foreground`,children:`Custom script`})});default:return e.unit_amount==null?R(z,{children:`—`}):R($,{label:`Price${n}`,children:R(`span`,{className:`font-semibold tabular-nums`,children:Q(e.unit_amount,t)})})}}function Bt({tiers:e,currency:t,showFlatFee:n}){return!e||e.length===0?R(`span`,{className:`text-muted-foreground text-xs`,children:`No tiers`}):R(`div`,{className:`max-h-48 overflow-auto`,children:R(`table`,{className:`w-full text-xs`,children:[R(`caption`,{className:`sr-only`,children:`Pricing tiers`}),R(`thead`,{children:R(`tr`,{className:`text-muted-foreground border-border border-b text-left`,children:[R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Min`}),R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Max`}),R(`th`,{scope:`col`,className:`py-0.5 pr-2 text-right font-medium`,children:`Unit Price`}),n?R(`th`,{scope:`col`,className:`py-0.5 text-right font-medium`,children:`Flat Fee`}):null]})}),R(`tbody`,{children:e.map((e,r)=>R(`tr`,{className:`border-border/50 border-b last:border-0`,children:[R(`td`,{className:`py-0.5 pr-2 tabular-nums`,children:e.min_quantity??0}),R(`td`,{className:`py-0.5 pr-2 tabular-nums`,children:e.max_quantity??`∞`}),R(`td`,{className:`py-0.5 pr-2 text-right tabular-nums`,children:Q(e.unit_amount,t)}),n?R(`td`,{className:`py-0.5 text-right tabular-nums`,children:e.flat_fee==null?`—`:Q(e.flat_fee,t)}):null]},r))})]})})}function Vt({matrix:e,currency:t}){return!e||e.length===0?R(`span`,{className:`text-muted-foreground text-xs`,children:`Matrix pricing (no data)`}):R(`div`,{className:`max-h-48 overflow-auto`,children:R(`table`,{className:`w-full text-xs`,children:[R(`caption`,{className:`sr-only`,children:`Matrix pricing dimensions`}),R(`thead`,{children:R(`tr`,{className:`text-muted-foreground border-border border-b text-left`,children:[R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Dimension`}),R(`th`,{scope:`col`,className:`py-0.5 pr-2 font-medium`,children:`Alias`}),R(`th`,{scope:`col`,className:`py-0.5 text-right font-medium`,children:`Price`})]})}),R(`tbody`,{children:e.map((e,n)=>R(`tr`,{className:`border-border/50 border-b last:border-0`,children:[R(`td`,{className:`py-0.5 pr-2`,children:e.dimension??`—`}),R(`td`,{className:`py-0.5 pr-2`,children:e.display_alias??`—`}),R(`td`,{className:`py-0.5 text-right tabular-nums`,children:Q(e.price,t)})]},n))})]})})}function Ht({features:e}){let t=new Map;for(let n of e){let e=t.get(n.type)||[];e.push(n),t.set(n.type,e)}return R(`div`,{className:`mt-1 space-y-2`,children:[R(`div`,{className:`text-muted-foreground text-xs font-medium uppercase`,children:`Features`}),Array.from(t.entries()).map(([e,t])=>R(`div`,{className:`flex flex-wrap items-start gap-2`,children:[R(`span`,{className:`bg-muted text-muted-foreground shrink-0 rounded px-1.5 py-0.5 text-xs`,children:e}),R(`div`,{className:`flex flex-col gap-0.5`,children:t.map((e,t)=>R(`div`,{className:`text-muted-foreground break-words text-xs`,children:[e.label?R(`span`,{className:`mr-2 font-medium`,children:e.label}):null,e.summary]},t))})]},e))]})}function Ut({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.contracts,e=>{switch(t){case`name`:return e.name;case`start_date`:return e.start_date;case`end_date`:return e.end_date;case`created_at`:return e.created_at??null}},r),[e.contracts,t,r]);return R(K,{title:`Contracts`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`currency`,header:`Currency`,className:`font-mono text-xs`,render:e=>e.currency||R(z,{children:`—`})},{key:`start_date`,header:`Start`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.start_date)},{key:`end_date`,header:`End`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.end_date)},{key:`days_left`,header:`Days Left`,align:`right`,render:e=>{let t=e.end_date?-1*(vt(e.end_date)??0):null;if(t==null)return R(z,{children:`—`});let n=t<0;return R(`span`,{className:n?`text-destructive font-medium`:!n&&t<=30?`text-primary font-medium`:`text-muted-foreground`,children:n?`${Math.abs(t)}d ago`:`${t}d`})}},{key:`view`,header:`View`,render:e=>R(q,{href:`/contractsv2/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No contracts match.`,rowKey:(e,t)=>e.id||t})}function Wt({payload:e}){let t=e.credit_note,n=t.currency||`USD`;return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:R(`div`,{children:[R(`h2`,{className:`m-0 flex items-center gap-2 text-lg font-semibold`,children:[R(`span`,{className:`font-mono`,children:t.credit_note_number||t.id}),t.status?R(G,{status:t.status}):null]}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]})}),R(`div`,{className:`border-border grid grid-cols-2 gap-3 rounded-md border p-3 sm:grid-cols-4`,children:[R(Y,{label:`Amount`,value:t.amount==null?R(z,{children:`—`}):H(t.amount,n)}),R(Y,{label:`Currency`,value:n}),R(Y,{label:`Credits Returned`,value:t.credits_returned==null?R(z,{children:`—`}):t.credits_returned.toLocaleString()}),R(Y,{label:`Created`,value:B(t.created_at)})]}),R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:[R(Z,{label:`Customer`,children:t.customer_name?R(`div`,{children:[R(`div`,{className:`text-sm`,children:t.customer_name}),t.customer_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.customer_id}):null]}):t.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.customer_id}):R(z,{children:`—`})}),R(Z,{label:`Invoice`,children:t.invoice_number?R(`div`,{children:[R(`div`,{className:`font-mono text-sm`,children:t.invoice_number}),t.invoice_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.invoice_id}):null]}):t.invoice_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.invoice_id}):R(z,{children:`—`})}),R(Z,{label:`Repayment Method`,children:t.repayment_method||R(z,{children:`—`})})]}),t.custom_data&&Object.keys(t.custom_data).length>0?R(X,{title:`Custom Data`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_data).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function Gt({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=e.default_currency||`USD`,o=I(()=>J(e.credit_notes,e=>{switch(t){case`amount`:return e.amount;case`created_at`:return e.created_at;case`status`:return e.status}},r),[e.credit_notes,t,r]);return R(K,{title:`Credit Notes`,count:e.total,scope:e.scope,columns:[{key:`number`,header:`Number`,className:`font-mono text-xs`,render:e=>e.credit_note_number||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`invoice`,header:`Invoice`,className:`text-xs`,render:e=>e.invoice_name?e.invoice_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.invoice_id,10)})},{key:`status`,header:`Status`,sortable:!0,render:e=>R(G,{status:e.status})},{key:`amount`,header:`Amount`,sortable:!0,align:`right`,className:`text-destructive`,render:e=>H(e.amount,e.currency||a)},{key:`repayment`,header:`Repayment`,className:`text-xs`,render:e=>e.repayment_method||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)}],rows:o,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},emptyMessage:`No credit notes match.`,rowKey:(e,t)=>e.id||t,hoverRows:!1})}function Kt({payload:e}){let t=e.customer,n=t.address||{},r=[n.line1,n.line2,n.city,n.state,n.zipCode||n.zip_code,n.country].filter(Boolean).join(`, `),i=t.ship_to_address||{},a=[i.line1,i.line2,i.city,i.state,i.zipCode||i.zip_code,i.country].filter(Boolean).join(`, `);return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:R(`div`,{children:[R(`h2`,{className:`m-0 flex items-center gap-2 text-lg font-semibold`,children:t.name||R(z,{children:`—`})}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]})}),R(qt,{children:[R(Z,{label:`External ID`,children:t.external_id?R(`span`,{className:`font-mono text-xs`,children:t.external_id}):R(z,{children:`—`})}),R(Z,{label:`Email`,children:t.email||R(z,{children:`—`})}),R(Z,{label:`Phone`,children:t.phone||R(z,{children:`—`})}),R(Z,{label:`Business Entity`,children:t.business_entity_name?R(`div`,{children:[R(`div`,{children:t.business_entity_name}),t.business_entity_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.business_entity_id}):null]}):t.business_entity_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.business_entity_id}):R(z,{children:`—`})}),R(Z,{label:`Created`,children:B(t.created_at)}),R(Z,{label:`Updated`,children:B(t.updated_at)})]}),r?R(X,{title:`Primary Address`,children:R(`div`,{className:`text-sm`,children:r})}):null,a&&a!==r?R(X,{title:`Ship-to Address`,children:R(`div`,{className:`text-sm`,children:a})}):null,t.communications_enabled!=null||t.auto_charge_enabled!=null?R(X,{title:`Settings`,children:R(`div`,{className:`flex flex-wrap gap-3 text-sm`,children:[R(Jt,{label:`Communications`,on:t.communications_enabled??null}),R(Jt,{label:`Auto-charge`,on:t.auto_charge_enabled??null})]})}):null,t.default_payment_method?R(X,{title:`Payment Method`,children:R(`div`,{className:`flex items-center gap-2 text-sm`,children:[R(`span`,{className:`bg-muted rounded px-2 py-0.5 text-xs`,children:(t.default_payment_method.type||`unknown`).replace(/_/g,` `)}),t.default_payment_method.brand?R(`span`,{children:t.default_payment_method.brand}):null,t.default_payment_method.last4?R(`span`,{className:`font-mono`,children:[`•••• `,t.default_payment_method.last4]}):null,t.default_payment_method.connector_name?R(`span`,{className:`text-muted-foreground text-xs`,children:[`via `,t.default_payment_method.connector_name]}):null]})}):null,t.tax_info&&t.tax_info.length>0?R(X,{title:`Tax Info`,children:R(`div`,{className:`space-y-1`,children:t.tax_info.map((e,t)=>R(`div`,{className:`flex gap-3 text-sm`,children:[e.tax_code?R(`span`,{className:`bg-muted rounded px-2 py-0.5 text-xs`,children:e.tax_code}):null,e.tax_id?R(`span`,{className:`font-mono text-xs`,children:e.tax_id}):null,e.country_code?R(`span`,{className:`text-muted-foreground text-xs`,children:e.country_code}):null]},t))})}):null,t.contacts&&t.contacts.length>0?R(X,{title:`Contacts (${t.contacts.length})`,children:R(`div`,{className:`space-y-2`,children:t.contacts.map((e,t)=>R(`div`,{className:`border-border flex items-center justify-between rounded border px-3 py-2`,children:[R(`div`,{children:[R(`div`,{className:`text-sm font-medium`,children:e.name||R(z,{children:`—`})}),e.email?R(`div`,{className:`text-muted-foreground text-xs`,children:e.email}):null]}),R(`div`,{className:`flex gap-2`,children:[e.send_invoice?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`invoice`}):null,e.send_contract?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`contract`}):null]})]},t))})}):null,t.custom_data&&Object.keys(t.custom_data).length>0?R(X,{title:`Custom Data`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_data).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function qt({children:e}){return R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:e})}function Jt({label:e,on:t}){return t===null?null:R(`span`,{className:`rounded-full px-2 py-0.5 text-xs ${t?`bg-secondary/20 text-secondary ring-1 ring-secondary/30`:`bg-muted text-muted-foreground ring-1 ring-border`}`,children:[e,`: `,t?`on`:`off`]})}function Yt({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.customers,e=>t===`name`?e.name:e.created_at??null,r),[e.customers,t,r]);return R(K,{title:`Customers`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`external_id`,header:`External ID`,className:`font-mono text-xs`,render:e=>e.external_id||R(z,{children:`—`})},{key:`email`,header:`Email`,className:`text-secondary`,render:e=>e.email||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/customers/${e.id}/view`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No customers match.`,rowKey:(e,t)=>e.id||t})}function Xt({payload:e}){return R(K,{title:`Entitlements`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Entitlement`,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`entitlement_type`,header:`Type`,className:`text-xs`,render:e=>e.entitlement_type||R(z,{children:`—`})},{key:`units`,header:`Units`,className:`font-mono text-xs`,render:e=>e.units||R(z,{children:`—`})},{key:`product_name`,header:`Product`,className:`text-xs`,render:e=>e.product_name||R(z,{children:`—`})},{key:`is_active`,header:`Status`,className:`text-xs`,render:e=>e.is_active==null?R(z,{children:`—`}):e.is_active?`active`:`inactive`},{key:`created_at`,header:`Created`,className:`whitespace-nowrap`,render:e=>B(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/entitlements/${e.id}/edit`})}],rows:e.entitlements,emptyMessage:`No entitlements match.`,rowKey:(e,t)=>e.id||t})}function Zt({payload:e}){return R(K,{title:`Business Entities`,count:e.total,columns:[{key:`name`,header:`Name`,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`email`,header:`Email`,className:`text-secondary text-xs`,render:e=>e.email||R(z,{children:`—`})},{key:`phone`,header:`Phone`,className:`font-mono text-xs`,render:e=>e.phone_number||R(z,{children:`—`})},{key:`country`,header:`Country`,className:`text-xs`,render:e=>e.country||R(z,{children:`—`})},{key:`default`,header:`Default`,className:`text-xs`,render:e=>e.is_default==null?R(z,{children:`—`}):e.is_default?`yes`:`no`},{key:`view`,header:`View`,render:e=>R(q,{href:`/settings/tax-configuration/entity/${e.id}`})}],rows:e.entities,emptyMessage:`No business entities to show.`,rightHint:null,rowKey:(e,t)=>e.id||t})}function Qt({payload:e}){let t=e.invoice,n=t.currency||`USD`,r=t.due_date&&t.amount_due&&t.amount_due>0?vt(t.due_date):null,i=r!=null&&r>0;return R(`div`,{className:`space-y-4`,children:[R(`header`,{className:`flex items-start justify-between gap-3`,children:[R(`div`,{children:[R(`h2`,{className:`m-0 flex items-center gap-2 text-lg font-semibold`,children:[R(`span`,{className:`font-mono`,children:t.invoice_number||t.id}),t.status?R(G,{status:t.status}):null,i?R(`span`,{className:`bg-destructive/20 text-destructive ring-destructive/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:[r,`d overdue`]}):null]}),R(`div`,{className:`text-secondary mt-0.5 font-mono text-xs`,children:t.id})]}),R(`div`,{className:`flex gap-2`,children:[t.invoice_pdf?R(en,{href:t.invoice_pdf,children:`PDF`}):null,t.payment_url?R(en,{href:t.payment_url,children:`Payment link`}):null]})]}),R(`div`,{className:`border-border grid grid-cols-2 gap-3 rounded-md border p-3 sm:grid-cols-4`,children:[R(Y,{label:`Total`,value:$t(t.invoice_total,n)}),R(Y,{label:`Paid`,value:$t(t.paid_amount,n)}),R(Y,{label:`Due`,value:$t(t.amount_due,n),tone:i?`warn`:void 0}),R(Y,{label:`Period`,value:t.invoice_period_begin&&t.invoice_period_end?R(`span`,{className:`text-sm`,children:[t.invoice_period_begin.slice(0,10),` →`,` `,t.invoice_period_end.slice(0,10)]}):R(z,{children:`—`})})]}),R(`div`,{className:`border-border grid grid-cols-1 gap-3 rounded-md border p-3 sm:grid-cols-2`,children:[R(Z,{label:`Customer`,children:t.customer_name?R(`div`,{children:[R(`div`,{className:`text-sm`,children:t.customer_name}),t.customer_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.customer_id}):null]}):t.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.customer_id}):R(z,{children:`—`})}),R(Z,{label:`Business Entity`,children:t.business_entity_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.business_entity_id}):R(z,{children:`—`})}),R(Z,{label:`Contract`,children:t.contract_name?R(`div`,{children:[R(`div`,{className:`text-sm`,children:t.contract_name}),t.contract_id?R(`div`,{className:`text-muted-foreground font-mono text-[11px] break-all`,children:t.contract_id}):null]}):t.contract_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:t.contract_id}):R(z,{children:`—`})}),R(Z,{label:`External ID`,children:t.external_id?R(`span`,{className:`font-mono text-xs`,children:t.external_id}):R(z,{children:`—`})}),R(Z,{label:`Created`,children:V(t.created_at)}),R(Z,{label:`Due Date`,children:B(t.due_date)}),R(Z,{label:`Currency`,children:n})]}),t.notes?R(X,{title:`Notes`,children:R(`div`,{className:`max-w-prose text-sm`,children:t.notes})}):null,t.approved_at||t.sent_at||t.paid_at?R(X,{title:`Timeline`,children:R(`div`,{className:`flex flex-wrap gap-4 text-sm`,children:[t.sent_at?R(`div`,{children:[R(`span`,{className:`text-muted-foreground text-xs`,children:`Sent `}),R(`span`,{className:`tabular-nums`,children:V(t.sent_at)})]}):null,t.approved_at?R(`div`,{children:[R(`span`,{className:`text-muted-foreground text-xs`,children:`Approved `}),R(`span`,{className:`tabular-nums`,children:V(t.approved_at)})]}):null,t.paid_at?R(`div`,{children:[R(`span`,{className:`text-muted-foreground text-xs`,children:`Paid `}),R(`span`,{className:`tabular-nums`,children:V(t.paid_at)})]}):null]})}):null,t.custom_data&&Object.keys(t.custom_data).length>0?R(X,{title:`Custom Data`,children:R(`div`,{className:`grid grid-cols-2 gap-2 text-xs`,children:Object.entries(t.custom_data).map(([e,t])=>R(`div`,{className:`border-border rounded border px-2 py-1`,children:[R(`div`,{className:`text-muted-foreground`,children:e}),R(`div`,{className:`font-mono`,children:typeof t==`object`?JSON.stringify(t):String(t??``)})]},e))})}):null]})}function $t(e,t=`USD`){if(e==null||!Number.isFinite(e))return R(z,{children:`—`});try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t,maximumFractionDigits:2}).format(e)}catch{return`${t} ${e.toLocaleString()}`}}function en({children:e,href:t}){return R(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`border-border bg-accent text-accent-foreground hover:bg-primary hover:text-primary-foreground rounded border px-3 py-1 text-xs transition-colors`,children:e})}function tn({payload:e}){let t=De(null),[n,r]=F(400),[i,a]=F(!1);return Ee(()=>{if(!(!t.current||!i))try{let e=t.current.contentDocument;if(e?.documentElement){let t=e.documentElement.scrollHeight;t>0&&r(Math.min(t+16,2e3))}}catch{}},[i,e.html]),e.html?R(`div`,{className:`space-y-2`,children:[e.invoice_id?R(`header`,{className:`flex items-baseline gap-2`,children:[R(`h2`,{className:`m-0 text-lg font-semibold`,children:`Invoice Preview`}),R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:e.invoice_id})]}):null,R(`div`,{className:`border-border overflow-hidden rounded-md border`,children:R(`iframe`,{ref:t,title:`Invoice preview`,srcDoc:e.html,onLoad:()=>a(!0),style:{width:`100%`,height:`${n}px`,border:`none`,background:`#fff`},sandbox:`allow-same-origin`})})]}):R(`div`,{className:`text-muted-foreground border-border rounded-md border py-8 text-center`,children:`No preview generated for this invoice yet.`})}function nn({payload:e}){let t=e.currency||`USD`,n=e.lines||[];return R(K,{title:R(S,{children:[`Line Items`,` `,R(`span`,{className:`text-muted-foreground font-normal`,children:[`(`,n.length,`)`]}),e.invoice_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:[` `,`· `,e.invoice_id]}):null]}),rightHint:e.total==null?null:R(`span`,{className:`text-sm`,children:[`Total:`,` `,R(`span`,{className:`font-medium tabular-nums`,children:H(e.total,t)})]}),columns:[{key:`type`,header:`Type`,className:`text-muted-foreground text-xs`,render:e=>R(`div`,{className:`flex items-center gap-1`,children:[e.line_item_type?e.line_item_type.replace(/_/g,` `):R(z,{children:`—`}),e.is_adjustment?R(`span`,{className:`bg-warning/15 text-warning ring-warning/30 rounded-full px-1.5 py-0.5 text-[10px] ring-1`,children:e.adjustment_type||`adj`}):null]})},{key:`item`,header:`Item`,render:e=>R(S,{children:[R(`div`,{className:`font-medium`,children:e.name||R(z,{children:`—`})}),e.description?R(`div`,{className:`text-muted-foreground text-xs`,children:e.description}):null]})},{key:`pricing_model`,header:`Pricing Model`,className:`text-muted-foreground text-xs`,render:e=>e.pricing_model||R(z,{children:`—`})},{key:`qty`,header:`Qty`,align:`right`,render:e=>e.quantity?.display||(e.quantity?.value??R(z,{children:`—`}))},{key:`price`,header:`Price`,align:`right`,render:e=>e.price?yt(e.price):R(z,{children:`—`})},{key:`subtotal`,header:`Subtotal`,align:`right`,render:e=>R(`span`,{className:e.subtotal?.value!=null&&e.subtotal.value<0?`text-destructive`:``,children:yt(e.subtotal)})},{key:`period`,header:`Service Period`,className:`text-xs whitespace-nowrap`,render:e=>e.service_start_date&&e.service_end_date?R(S,{children:[B(e.service_start_date),` → `,B(e.service_end_date)]}):R(z,{children:`—`})},{key:`billed`,header:`Billed`,className:`text-xs`,render:e=>e.is_billed===!0?`✓`:e.is_billed===!1?`—`:R(z,{children:`?`})}],rows:n,emptyMessage:`No line items on this invoice.`,hoverRows:!1})}function rn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=e.default_currency||`USD`,o=I(()=>J(e.invoices,e=>{switch(t){case`invoice_number`:return e.invoice_number;case`invoice_total`:return e.invoice_total;case`amount_due`:return e.amount_due;case`due_date`:return e.due_date;case`created_at`:return e.created_at}},r),[e.invoices,t,r]),s=e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},c=e=>{if(!e.due_date||!e.amount_due||e.amount_due<=0)return null;let t=vt(e.due_date);return t!=null&&t>0?t:null};return R(K,{title:`Invoices`,count:e.total,scope:e.scope,columns:[{key:`invoice_number`,header:`Invoice`,sortable:!0,className:`font-mono text-xs`,render:e=>e.invoice_number||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`period`,header:`Period`,className:`text-xs whitespace-nowrap`,render:e=>e.invoice_period_begin&&e.invoice_period_end?`${e.invoice_period_begin.slice(0,10)} → ${e.invoice_period_end.slice(0,10)}`:R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`invoice_total`,header:`Total`,sortable:!0,align:`right`,render:e=>H(e.invoice_total,a)},{key:`amount_due`,header:`Due`,sortable:!0,align:`right`,render:e=>R(`span`,{className:c(e)==null?``:`text-destructive font-medium`,children:H(e.amount_due,a)})},{key:`due_date`,header:`Due Date`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.due_date)},{key:`overdue`,header:`Overdue`,align:`right`,render:e=>{let t=c(e);return t==null?R(`span`,{className:`text-muted-foreground`,children:R(z,{children:`—`})}):R(`span`,{className:`text-destructive font-medium`,children:[t,`d`]})}},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/invoices/${e.id}/view`})}],rows:o,sortKey:t,sortDir:r,onSort:s,emptyMessage:`No invoices match.`,rowKey:(e,t)=>e.id||t})}function an({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.jobs,e=>{switch(t){case`name`:return e.name;case`created_at`:return e.created_at;case`status`:return e.status}},r),[e.jobs,t,r]),o=e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},s=e.status_counts||{},c=R(`div`,{className:`flex flex-wrap gap-1.5 text-xs`,children:Object.entries(s).map(([e,t])=>R(`span`,{className:`bg-muted rounded-full px-2 py-0.5`,children:[e,`: `,R(`span`,{className:`font-medium tabular-nums`,children:t})]},e))});return R(K,{title:`Jobs`,count:e.total,rightHint:c,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`type`,header:`Type`,className:`text-xs`,render:e=>e.job_type||R(z,{children:`—`})},{key:`resource`,header:`Resource`,className:`text-xs`,render:e=>e.resource||R(z,{children:`—`})},{key:`status`,header:`Status`,sortable:!0,render:e=>R(G,{status:e.status})},{key:`description`,header:`Description`,className:`text-muted-foreground max-w-xs truncate text-xs`,render:e=>e.description||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`text-xs whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/jobs/${e.id}/view`})}],rows:a,sortKey:t,sortDir:r,onSort:o,emptyMessage:`No jobs match.`,rowKey:(e,t)=>e.id||t})}function on({payload:e}){let t=e.default_currency||`USD`,n=e.entries,r=I(()=>{let e=0,t=0;for(let r of n)Number.isFinite(r.total_debit)&&(e+=r.total_debit),Number.isFinite(r.total_credit)&&(t+=r.total_credit);return{d:e,c:t}},[n]),i=R(S,{children:[`Σ debit `,H(r.d,t),` · Σ credit `,H(r.c,t)]});return R(K,{title:`Journal Entries`,count:e.total,scope:e.scope,rightHint:i,columns:[{key:`posted_at`,header:`Posted`,className:`whitespace-nowrap`,render:e=>V(e.posted_at)},{key:`event`,header:`Event`,className:`text-xs`,render:e=>e.event||R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status_type})},{key:`lines`,header:`Lines`,align:`right`,render:e=>e.line_count??R(z,{children:`—`})},{key:`total_debit`,header:`Σ Debit`,align:`right`,render:e=>e.total_debit==null?R(z,{children:`—`}):H(e.total_debit,e.currency||t)},{key:`total_credit`,header:`Σ Credit`,align:`right`,render:e=>e.total_credit==null?R(z,{children:`—`}):H(e.total_credit,e.currency||t)},{key:`description`,header:`Description`,className:`text-muted-foreground max-w-xs truncate text-xs`,render:e=>e.description||R(z,{children:`—`})}],rows:n,emptyMessage:`No entries match.`,rowKey:(e,t)=>e.id||t,hoverRows:!1})}function sn({payload:e}){let t=e.payment_methods||[];return R(`div`,{className:`space-y-3`,children:[R(`header`,{className:`flex items-baseline justify-between gap-3`,children:R(`h2`,{className:`m-0 text-lg font-semibold`,children:[`Payment Methods`,` `,R(`span`,{className:`text-muted-foreground text-sm font-normal`,children:[`(`,t.length,`)`]}),e.customer_id?R(`span`,{className:`text-secondary font-mono text-xs break-all`,children:[` `,`· `,e.customer_id]}):null]})}),t.length===0?R(`div`,{className:`text-muted-foreground border-border rounded-md border py-8 text-center`,children:`No payment methods saved.`}):R(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:t.map((e,t)=>R(cn,{method:e},e.id||t))})]})}function cn({method:e}){let t=(e.type||``).toLowerCase().includes(`card`);return R(`article`,{className:`space-y-1 rounded-md border p-3 ${e.is_default?`border-ring ring-ring ring-1`:`border-border`}`,children:[R(`header`,{className:`flex items-baseline justify-between gap-2`,children:[R(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[R(`span`,{className:`bg-muted rounded px-2 py-0.5 text-xs`,children:(e.type||`unknown`).replace(/_/g,` `)}),e.brand?R(`span`,{className:`text-muted-foreground`,children:e.brand}):null,e.connector_name?R(`span`,{className:`text-muted-foreground text-xs`,children:[`via `,e.connector_name]}):null]}),e.is_default?R(`span`,{className:`bg-secondary/20 text-secondary ring-secondary/30 rounded-full px-2 py-0.5 text-xs ring-1`,children:`default`}):null]}),R(`div`,{className:`font-mono text-sm`,children:e.last4?`•••• ${e.last4}`:R(z,{children:`—`})}),R(`div`,{className:`text-muted-foreground flex gap-3 text-xs`,children:[e.status?R(`span`,{className:`rounded-full px-2 py-0.5 text-xs ring-1 ${e.status===`valid`?`bg-secondary/20 text-secondary ring-secondary/30`:`bg-destructive/20 text-destructive ring-destructive/30`}`,children:e.status}):null,t&&e.exp_month&&e.exp_year?R(`span`,{children:[`exp `,String(e.exp_month).padStart(2,`0`),`/`,String(e.exp_year).slice(-2)]}):null,e.created_at?R(`span`,{children:[`added `,B(e.created_at)]}):null]})]})}var ln={payment:`bg-secondary/20 text-secondary ring-1 ring-secondary/30`,refund:`bg-accent text-accent-foreground ring-1 ring-border`,payment_reversal:`bg-destructive/20 text-destructive ring-1 ring-destructive/30`,authorization:`bg-primary/20 text-primary ring-1 ring-primary/30`,tax_withheld:`bg-muted text-muted-foreground ring-1 ring-border`},un=`bg-muted text-muted-foreground ring-1 ring-border`;function dn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=e.default_currency||`USD`,o=I(()=>J(e.payments,e=>{switch(t){case`amount`:return e.amount;case`payment_date`:return e.payment_date;case`created_at`:return e.created_at;case`type`:return e.type}},r),[e.payments,t,r]);return R(K,{title:`Payments`,count:e.total,scope:e.scope,columns:[{key:`external_id`,header:`External ID`,className:`font-mono text-xs`,render:e=>e.external_id||R(z,{children:`—`})},{key:`customer`,header:`Customer`,className:`text-xs`,render:e=>e.customer_name?e.customer_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.customer_id,10)})},{key:`invoice`,header:`Invoice`,className:`text-xs`,render:e=>e.invoice_name?e.invoice_name:R(`span`,{className:`text-secondary font-mono`,children:U(e.invoice_id,10)})},{key:`type`,header:`Type`,sortable:!0,render:e=>e.type?R(`span`,{className:`inline-block rounded-full px-2 py-0.5 text-xs ${ln[e.type]||un}`,children:e.type}):R(z,{children:`—`})},{key:`method`,header:`Method`,className:`text-xs`,render:e=>e.payment_method||R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`amount`,header:`Amount`,sortable:!0,align:`right`,render:e=>{let t=e.amount!=null&&e.amount<0,n=e.type===`refund`||e.type===`payment_reversal`;return R(`span`,{className:t||n?`text-destructive`:``,children:H(e.amount,e.currency||a)})}},{key:`payment_date`,header:`Date`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.payment_date)},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)}],rows:o,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(`desc`))},emptyMessage:`No payments match.`,rowKey:(e,t)=>e.id||t,hoverRows:!1})}function fn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.plans,e=>t===`name`?e.name:e.created_at,r),[e.plans,t,r]);return R(K,{title:`Plans`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`description`,header:`Description`,className:`text-muted-foreground text-xs`,render:e=>e.description||R(z,{children:`—`})},{key:`status`,header:`Status`,render:e=>R(G,{status:e.status})},{key:`plan_version`,header:`Version`,align:`right`,render:e=>e.plan_version??R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/plansv2/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No plans match.`,rowKey:(e,t)=>e.id||t})}function pn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.products,e=>t===`name`?e.name:e.created_at,r),[e.products,t,r]);return R(K,{title:`Products`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`sku`,header:`SKU`,className:`font-mono text-xs`,render:e=>e.sku||R(z,{children:`—`})},{key:`type`,header:`Type`,className:`text-xs`,render:e=>e.product_type||R(z,{children:`—`})},{key:`active`,header:`Active`,className:`text-xs`,render:e=>e.is_active==null?R(z,{children:`—`}):e.is_active?`yes`:`no`},{key:`description`,header:`Description`,className:`text-muted-foreground text-xs`,render:e=>e.description||R(z,{children:`—`})},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>V(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/products/${e.id}/edit`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No products match.`,rowKey:(e,t)=>e.id||t})}function mn({payload:e}){let[t,n]=F(`created_at`),[r,i]=F(`desc`),a=I(()=>J(e.raw_metrics,e=>t===`name`?e.name:e.created_at,r),[e.raw_metrics,t,r]);return R(K,{title:`Raw Metrics`,count:e.total,scope:e.scope,columns:[{key:`name`,header:`Name`,sortable:!0,className:`font-medium`,render:e=>e.name||R(z,{children:`—`})},{key:`api_slug`,header:`API Slug`,className:`font-mono text-xs`,render:e=>e.api_slug||R(z,{children:`—`})},{key:`upload`,header:`Upload Enabled`,className:`text-xs`,render:e=>e.usage_upload_enabled==null?R(z,{children:`—`}):e.usage_upload_enabled?`yes`:`no`},{key:`created_at`,header:`Created`,sortable:!0,className:`whitespace-nowrap`,render:e=>B(e.created_at)},{key:`view`,header:`View`,render:e=>R(q,{href:`/meters/raw-metrics/${e.id}/view`})}],rows:a,sortKey:t,sortDir:r,onSort:e=>{e===t?i(e=>e===`asc`?`desc`:`asc`):(n(e),i(e===`name`?`asc`:`desc`))},emptyMessage:`No raw metrics match.`,rowKey:(e,t)=>e.id||t})}var hn={name:`Zenskar`,version:`1.0.0`},gn=`2026-01-26`,_n={listCustomers:{fallback:{customers:[],total:0},marker:`customer-table:mounted`,render:e=>R(Yt,{payload:e})},listInvoices:{fallback:{invoices:[],total:0},marker:`invoice-table:mounted`,render:e=>R(rn,{payload:e})},getInvoiceLineItems:{fallback:{lines:[]},marker:`invoice-line-items:mounted`,render:e=>R(nn,{payload:e})},listAllPayments:{fallback:{payments:[],total:0},marker:`payment-table:mounted`,render:e=>R(dn,{payload:e})},listCreditNotes:{fallback:{credit_notes:[],total:0},marker:`credit-note-table:mounted`,render:e=>R(Gt,{payload:e})},listContracts:{fallback:{contracts:[],total:0},marker:`contract-table:mounted`,render:e=>R(Ut,{payload:e})},getCustomerById:{fallback:{customer:{id:``}},marker:`customer-detail:mounted`,render:e=>R(Kt,{payload:e})},getInvoiceById:{fallback:{invoice:{id:``}},marker:`invoice-detail:mounted`,render:e=>R(Qt,{payload:e})},getContractById:{fallback:{contract:{id:``},phases:[]},marker:`contract-detail:mounted`,render:e=>R(Pt,{payload:e})},getCreditNoteById:{fallback:{credit_note:{id:``}},marker:`credit-note-detail:mounted`,render:e=>R(Wt,{payload:e})},listProducts:{fallback:{products:[],total:0},marker:`product-table:mounted`,render:e=>R(pn,{payload:e})},listPlans:{fallback:{plans:[],total:0},marker:`plan-table:mounted`,render:e=>R(fn,{payload:e})},listJournalEntries:{fallback:{entries:[],total:0},marker:`journal-table:mounted`,render:e=>R(on,{payload:e})},listJobs:{fallback:{jobs:[],total:0},marker:`job-table:mounted`,render:e=>R(an,{payload:e})},listContacts:{fallback:{contacts:[],total:0},marker:`contact-table:mounted`,render:e=>R(Mt,{payload:e})},listRawMetrics:{fallback:{raw_metrics:[],total:0},marker:`raw-metric-table:mounted`,render:e=>R(mn,{payload:e})},listAggregates:{fallback:{aggregates:[],total:0},marker:`aggregate-table:mounted`,render:e=>R(jt,{payload:e})},listCustomerAddresses:{fallback:{addresses:[]},marker:`address-list:mounted`,render:e=>R(Ot,{payload:e})},listPaymentMethods:{fallback:{payment_methods:[]},marker:`payment-method-list:mounted`,render:e=>R(sn,{payload:e})},listBusinessEntities:{fallback:{entities:[]},marker:`entity-table:mounted`,render:e=>R(Zt,{payload:e})},listEntitlements:{fallback:{entitlements:[],total:0},marker:`entitlement-table:mounted`,render:e=>R(Xt,{payload:e})},getInvoicePreviewHtml:{fallback:{html:``},marker:`invoice-preview:mounted`,render:e=>R(tn,{payload:e})}};function vn(){return typeof window>`u`?null:window.openai??null}function yn(){let e=vn(),[t,n]=F(e?.toolInput?.toolName??null),[r,i]=F(e?.toolOutput??null),a=De(null);if(Ee(()=>{let e=pt(`ui/notifications/tool-result`,e=>{let t=e;t&&Object.prototype.hasOwnProperty.call(t,`structuredContent`)&&i(t.structuredContent??null)}),t=pt(`ui/notifications/host-context-changed`,e=>{let t=e?.toolInfo?.tool?.name;typeof t==`string`&&n(t)});return lt(`ui/initialize`,{appCapabilities:{},appInfo:hn,protocolVersion:gn}).then(e=>{let t=e?.hostContext?.toolInfo?.tool?.name;typeof t==`string`&&n(t),ut(`ui/notifications/initialized`)}).catch(()=>{}),()=>{e(),t()}},[]),Ee(()=>{let e=e=>{let t=e?.detail?.globals;t&&(t.toolInput?.toolName&&n(t.toolInput.toolName),Object.prototype.hasOwnProperty.call(t,`toolOutput`)&&i(t.toolOutput??null))};return window.addEventListener(`openai:set_globals`,e,{passive:!0}),()=>{window.removeEventListener(`openai:set_globals`,e)}},[]),Ee(()=>{if(r===null||!t)return;let e=_n[t];if(e?.marker&&ut(`ui/message`,{hidden:!0,marker:e.marker}),!a.current)return;let n=()=>{let e=a.current.getBoundingClientRect();ut(`ui/notifications/size-changed`,{width:Math.round(e.width),height:Math.round(e.height)})};n();let i=new ResizeObserver(n);return i.observe(a.current),()=>i.disconnect()},[r,t]),!t||!_n[t])return R(`div`,{"data-app-loading":!0,style:{visibility:`hidden`,minHeight:1}});let o=_n[t];if(r===null&&!e?.toolOutput)return R(`div`,{"data-app-loading":!0,style:{visibility:`hidden`,minHeight:1}});let s=r??o.fallback;return R(`div`,{ref:a,className:`text-foreground bg-background p-4 font-sans text-[14px]`,children:o.render(s)})}var bn=document.getElementById(`root`);bn&&ot(bn).render(R(S,{children:R(yn,{})}));</script>
8
8
  <style rel="stylesheet" crossorigin>/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
9
9
  @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-serif:var(--font-serif);--font-mono:var(--font-mono);--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:var(--tracking-normal);--leading-relaxed:1.625;--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--shadow:var(--shadow)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground);letter-spacing:var(--tracking-normal)}h1,h2,h3{letter-spacing:-.005em;line-height:1.2}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.sticky{position:sticky}.top-0{top:calc(var(--spacing) * 0)}.z-10{z-index:10}.col-span-full{grid-column:1/-1}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-screen{min-height:100vh}.w-12{width:calc(var(--spacing) * 12)}.w-full{width:100%}.max-w-\[1100px\]{max-width:1100px}.max-w-prose{max-width:65ch}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2\.5{row-gap:calc(var(--spacing) * 2.5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-ring{border-color:var(--ring)}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background)}.bg-card{background-color:var(--card)}.bg-destructive\/20{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/20{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.bg-secondary\/12{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/12{background-color:color-mix(in oklab, var(--secondary) 12%, transparent)}}.bg-secondary\/20{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/20{background-color:color-mix(in oklab, var(--secondary) 20%, transparent)}}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pr-2{padding-right:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[14px\]{font-size:14px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:calc(var(--tracking-normal) + .025em);letter-spacing:calc(var(--tracking-normal) + .025em)}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-accent-foreground{color:var(--accent-foreground)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-secondary{color:var(--secondary)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-border{--tw-ring-color:var(--border)}.ring-destructive\/30{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.ring-destructive\/30{--tw-ring-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.ring-primary\/30{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.ring-primary\/30{--tw-ring-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.ring-ring{--tw-ring-color:var(--ring)}.ring-secondary\/20{--tw-ring-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.ring-secondary\/20{--tw-ring-color:color-mix(in oklab, var(--secondary) 20%, transparent)}}.ring-secondary\/30{--tw-ring-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.ring-secondary\/30{--tw-ring-color:color-mix(in oklab, var(--secondary) 30%, transparent)}}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.select-none{-webkit-user-select:none;user-select:none}.\[mock-host\:postMessage\]{mock-host:postMessage}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:bg-muted\/60:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.hover\:bg-primary:hover{background-color:var(--primary)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-secondary\/80:hover{color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:text-secondary\/80:hover{color:color-mix(in oklab, var(--secondary) 80%, transparent)}}}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}:root{--background:#fff;--foreground:#111827;--card:#fff;--card-foreground:#111827;--popover:#fff;--popover-foreground:#111827;--primary:#d87943;--primary-foreground:#fff;--secondary:#527575;--secondary-foreground:#fff;--muted:#f3f4f6;--muted-foreground:#6b7280;--accent:#eee;--accent-foreground:#111827;--destructive:#ef4444;--destructive-foreground:#fafafa;--border:#e5e7eb;--input:#e5e7eb;--ring:#d87943;--chart-1:#5f8787;--chart-2:#e78a53;--chart-3:#fbcb97;--chart-4:#888;--chart-5:#999;--sidebar:#f3f4f6;--sidebar-foreground:#111827;--sidebar-primary:#d87943;--sidebar-primary-foreground:#fff;--sidebar-accent:#fff;--sidebar-accent-foreground:#111827;--sidebar-border:#e5e7eb;--sidebar-ring:#d87943;--font-sans:Figtree, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-serif:serif;--font-mono:JetBrains Mono, monospace;--radius:.75rem;--shadow-x:0px;--shadow-y:1px;--shadow-blur:4px;--shadow-spread:0px;--shadow-opacity:.05;--shadow-color:#000;--shadow-2xs:0px 1px 4px 0px #00000008;--shadow-xs:0px 1px 4px 0px #00000008;--shadow-sm:0px 1px 4px 0px #0000000d, 0px 1px 2px -1px #0000000d;--shadow:0px 1px 4px 0px #0000000d, 0px 1px 2px -1px #0000000d;--shadow-md:0px 1px 4px 0px #0000000d, 0px 2px 4px -1px #0000000d;--shadow-lg:0px 1px 4px 0px #0000000d, 0px 4px 6px -1px #0000000d;--shadow-xl:0px 1px 4px 0px #0000000d, 0px 8px 10px -1px #0000000d;--shadow-2xl:0px 1px 4px 0px #00000021;--tracking-normal:0rem;--spacing:.25rem}.dark{--background:#121113;--foreground:#c1c1c1;--card:#121212;--card-foreground:#c1c1c1;--popover:#121113;--popover-foreground:#c1c1c1;--primary:#e78a53;--primary-foreground:#121113;--secondary:#5f8787;--secondary-foreground:#121113;--muted:#222;--muted-foreground:#888;--accent:#333;--accent-foreground:#c1c1c1;--destructive:#5f8787;--destructive-foreground:#121113;--border:#222;--input:#222;--ring:#e78a53;--chart-1:#5f8787;--chart-2:#e78a53;--chart-3:#fbcb97;--chart-4:#888;--chart-5:#999;--sidebar:#121212;--sidebar-foreground:#c1c1c1;--sidebar-primary:#e78a53;--sidebar-primary-foreground:#121113;--sidebar-accent:#333;--sidebar-accent-foreground:#c1c1c1;--sidebar-border:#222;--sidebar-ring:#e78a53;--font-sans:Figtree, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-serif:serif;--font-mono:JetBrains Mono, monospace;--radius:.75rem;--shadow-x:0px;--shadow-y:1px;--shadow-blur:4px;--shadow-spread:0px;--shadow-opacity:.05;--shadow-color:#000;--shadow-2xs:0px 1px 4px 0px #00000008;--shadow-xs:0px 1px 4px 0px #00000008;--shadow-sm:0px 1px 4px 0px #0000000d, 0px 1px 2px -1px #0000000d;--shadow:0px 1px 4px 0px #0000000d, 0px 1px 2px -1px #0000000d;--shadow-md:0px 1px 4px 0px #0000000d, 0px 2px 4px -1px #0000000d;--shadow-lg:0px 1px 4px 0px #0000000d, 0px 4px 6px -1px #0000000d;--shadow-xl:0px 1px 4px 0px #0000000d, 0px 8px 10px -1px #0000000d;--shadow-2xl:0px 1px 4px 0px #00000021}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not(.light){--background:#121113;--foreground:#c1c1c1;--card:#121212;--card-foreground:#c1c1c1;--popover:#121113;--popover-foreground:#c1c1c1;--primary:#e78a53;--primary-foreground:#121113;--secondary:#5f8787;--secondary-foreground:#121113;--muted:#222;--muted-foreground:#888;--accent:#333;--accent-foreground:#c1c1c1;--destructive:#5f8787;--destructive-foreground:#121113;--border:#222;--input:#222;--ring:#e78a53;--chart-1:#5f8787;--chart-2:#e78a53;--chart-3:#fbcb97;--chart-4:#888;--chart-5:#999;--sidebar:#121212;--sidebar-foreground:#c1c1c1;--sidebar-primary:#e78a53;--sidebar-primary-foreground:#121113;--sidebar-accent:#333;--sidebar-accent-foreground:#c1c1c1;--sidebar-border:#222;--sidebar-ring:#e78a53}}html,body{font-family:var(--font-sans);margin:0;font-size:14px;line-height:1.5}table{border-collapse:collapse}.tabular-nums{font-variant-numeric:tabular-nums}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
10
10
  /*$vite$:1*/</style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-zenskar",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "description": "Model Context Protocol (MCP) server for Zenskar API - customer management, invoicing, and billing operations",
5
5
  "type": "module",
6
6
  "main": "dist/server.mjs",
@@ -59,7 +59,8 @@
59
59
  "build:ui": "node src/ui/server/build.js",
60
60
  "prebuild": "pnpm run build:ui",
61
61
  "build": "tsdown",
62
+ "test:tool-schema": "node --test src/test/tool-schema.test.js",
62
63
  "smoke": "tsx src/ui/test/smoke.ts",
63
- "test": "pnpm run smoke"
64
+ "test": "pnpm run test:tool-schema && pnpm run smoke"
64
65
  }
65
66
  }