acp-devtools 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -3
- package/dist/index.js +553 -143
- package/dist/ui/assets/{index-C5YKMrXl.js → index-D6fYTnQ6.js} +4 -4
- package/dist/ui/index.html +1 -1
- package/package.json +3 -2
|
@@ -1762,7 +1762,7 @@ Notifications do not expect a response.`,title:"ProtocolLevel"}],DS="Agent Clien
|
|
|
1762
1762
|
|| ${s} === "boolean" || ${r} === null`).assign(a,(0,fe._)`[${r}]`)}}}function y$({gen:e,parentData:t,parentDataProperty:n},o){e.if((0,fe._)`${t} !== undefined`,()=>e.assign((0,fe._)`${t}[${n}]`,o))}function Md(e,t,n,o=Ir.Correct){const r=o===Ir.Correct?fe.operators.EQ:fe.operators.NEQ;let i;switch(e){case"null":return(0,fe._)`${t} ${r} null`;case"array":i=(0,fe._)`Array.isArray(${t})`;break;case"object":i=(0,fe._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":i=s((0,fe._)`!(${t} % 1) && !isNaN(${t})`);break;case"number":i=s();break;default:return(0,fe._)`typeof ${t} ${r} ${e}`}return o===Ir.Correct?i:(0,fe.not)(i);function s(a=fe.nil){return(0,fe.and)((0,fe._)`typeof ${t} == "number"`,a,n?(0,fe._)`isFinite(${t})`:fe.nil)}}et.checkDataType=Md;function tp(e,t,n,o){if(e.length===1)return Md(e[0],t,n,o);let r;const i=(0,Hv.toHash)(e);if(i.array&&i.object){const s=(0,fe._)`typeof ${t} != "object"`;r=i.null?s:(0,fe._)`!${t} || ${s}`,delete i.null,delete i.array,delete i.object}else r=fe.nil;i.number&&delete i.integer;for(const s in i)r=(0,fe.and)(r,Md(s,t,n,o));return r}et.checkDataTypes=tp;const g$={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?(0,fe._)`{type: ${e}}`:(0,fe._)`{type: ${t}}`};function np(e){const t=v$(e);(0,u$.reportError)(t,g$)}et.reportTypeError=np;function v$(e){const{gen:t,data:n,schema:o}=e,r=(0,Hv.schemaRefOrVal)(e,o,"type");return{gen:t,keyword:"type",data:n,schema:o.type,schemaCode:r,schemaValue:r,parentSchema:o,params:{},it:e}}var El={};Object.defineProperty(El,"__esModule",{value:!0});El.assignDefaults=void 0;const ir=ue,b$=Q;function x$(e,t){const{properties:n,items:o}=e.schema;if(t==="object"&&n)for(const r in n)Dm(e,r,n[r].default);else t==="array"&&Array.isArray(o)&&o.forEach((r,i)=>Dm(e,i,r.default))}El.assignDefaults=x$;function Dm(e,t,n){const{gen:o,compositeRule:r,data:i,opts:s}=e;if(n===void 0)return;const a=(0,ir._)`${i}${(0,ir.getProperty)(t)}`;if(r){(0,b$.checkStrictMode)(e,`default is ignored for: ${a}`);return}let l=(0,ir._)`${a} === undefined`;s.useDefaults==="empty"&&(l=(0,ir._)`${l} || ${a} === null || ${a} === ""`),o.if(l,(0,ir._)`${a} = ${(0,ir.stringify)(n)}`)}var bn={},ye={};Object.defineProperty(ye,"__esModule",{value:!0});ye.validateUnion=ye.validateArray=ye.usePattern=ye.callValidateCode=ye.schemaProperties=ye.allSchemaProperties=ye.noPropertyInData=ye.propertyInData=ye.isOwnProperty=ye.hasPropFunc=ye.reportMissingProp=ye.checkMissingProp=ye.checkReportMissingProp=void 0;const Ae=ue,op=Q,Kn=Dt,w$=Q;function S$(e,t){const{gen:n,data:o,it:r}=e;n.if(ip(n,o,t,r.opts.ownProperties),()=>{e.setParams({missingProperty:(0,Ae._)`${t}`},!0),e.error()})}ye.checkReportMissingProp=S$;function $$({gen:e,data:t,it:{opts:n}},o,r){return(0,Ae.or)(...o.map(i=>(0,Ae.and)(ip(e,t,i,n.ownProperties),(0,Ae._)`${r} = ${i}`)))}ye.checkMissingProp=$$;function k$(e,t){e.setParams({missingProperty:t},!0),e.error()}ye.reportMissingProp=k$;function Kv(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,Ae._)`Object.prototype.hasOwnProperty`})}ye.hasPropFunc=Kv;function rp(e,t,n){return(0,Ae._)`${Kv(e)}.call(${t}, ${n})`}ye.isOwnProperty=rp;function T$(e,t,n,o){const r=(0,Ae._)`${t}${(0,Ae.getProperty)(n)} !== undefined`;return o?(0,Ae._)`${r} && ${rp(e,t,n)}`:r}ye.propertyInData=T$;function ip(e,t,n,o){const r=(0,Ae._)`${t}${(0,Ae.getProperty)(n)} === undefined`;return o?(0,Ae.or)(r,(0,Ae.not)(rp(e,t,n))):r}ye.noPropertyInData=ip;function Gv(e){return e?Object.keys(e).filter(t=>t!=="__proto__"):[]}ye.allSchemaProperties=Gv;function _$(e,t){return Gv(t).filter(n=>!(0,op.alwaysValidSchema)(e,t[n]))}ye.schemaProperties=_$;function j$({schemaCode:e,data:t,it:{gen:n,topSchemaRef:o,schemaPath:r,errorPath:i},it:s},a,l,d){const p=d?(0,Ae._)`${e}, ${t}, ${o}${r}`:t,m=[[Kn.default.instancePath,(0,Ae.strConcat)(Kn.default.instancePath,i)],[Kn.default.parentData,s.parentData],[Kn.default.parentDataProperty,s.parentDataProperty],[Kn.default.rootData,Kn.default.rootData]];s.opts.dynamicRef&&m.push([Kn.default.dynamicAnchors,Kn.default.dynamicAnchors]);const v=(0,Ae._)`${p}, ${n.object(...m)}`;return l!==Ae.nil?(0,Ae._)`${a}.call(${l}, ${v})`:(0,Ae._)`${a}(${v})`}ye.callValidateCode=j$;const N$=(0,Ae._)`new RegExp`;function C$({gen:e,it:{opts:t}},n){const o=t.unicodeRegExp?"u":"",{regExp:r}=t.code,i=r(n,o);return e.scopeValue("pattern",{key:i.toString(),ref:i,code:(0,Ae._)`${r.code==="new RegExp"?N$:(0,w$.useFunc)(e,r)}(${n}, ${o})`})}ye.usePattern=C$;function E$(e){const{gen:t,data:n,keyword:o,it:r}=e,i=t.name("valid");if(r.allErrors){const a=t.let("valid",!0);return s(()=>t.assign(a,!1)),a}return t.var(i,!0),s(()=>t.break()),i;function s(a){const l=t.const("len",(0,Ae._)`${n}.length`);t.forRange("i",0,l,d=>{e.subschema({keyword:o,dataProp:d,dataPropType:op.Type.Num},i),t.if((0,Ae.not)(i),a)})}}ye.validateArray=E$;function P$(e){const{gen:t,schema:n,keyword:o,it:r}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(n.some(l=>(0,op.alwaysValidSchema)(r,l))&&!r.opts.unevaluated)return;const s=t.let("valid",!1),a=t.name("_valid");t.block(()=>n.forEach((l,d)=>{const p=e.subschema({keyword:o,schemaProp:d,compositeRule:!0},a);t.assign(s,(0,Ae._)`${s} || ${a}`),e.mergeValidEvaluated(p,a)||t.if((0,Ae.not)(s))})),e.result(s,()=>e.reset(),()=>e.error(!0))}ye.validateUnion=P$;Object.defineProperty(bn,"__esModule",{value:!0});bn.validateKeywordUsage=bn.validSchemaType=bn.funcKeywordCode=bn.macroKeywordCode=void 0;const bt=ue,Po=Dt,I$=ye,O$=Ns;function R$(e,t){const{gen:n,keyword:o,schema:r,parentSchema:i,it:s}=e,a=t.macro.call(s.self,r,i,s),l=Jv(n,o,a);s.opts.validateSchema!==!1&&s.self.validateSchema(a,!0);const d=n.name("valid");e.subschema({schema:a,schemaPath:bt.nil,errSchemaPath:`${s.errSchemaPath}/${o}`,topSchemaRef:l,compositeRule:!0},d),e.pass(d,()=>e.error(!0))}bn.macroKeywordCode=R$;function A$(e,t){var n;const{gen:o,keyword:r,schema:i,parentSchema:s,$data:a,it:l}=e;q$(l,t);const d=!a&&t.compile?t.compile.call(l.self,i,s,l):t.validate,p=Jv(o,r,d),m=o.let("valid");e.block$data(m,v),e.ok((n=t.valid)!==null&&n!==void 0?n:m);function v(){if(t.errors===!1)b(),t.modifying&&zm(e),g(()=>e.error());else{const f=t.async?h():y();t.modifying&&zm(e),g(()=>M$(e,f))}}function h(){const f=o.let("ruleErrs",null);return o.try(()=>b((0,bt._)`await `),u=>o.assign(m,!1).if((0,bt._)`${u} instanceof ${l.ValidationError}`,()=>o.assign(f,(0,bt._)`${u}.errors`),()=>o.throw(u))),f}function y(){const f=(0,bt._)`${p}.errors`;return o.assign(f,null),b(bt.nil),f}function b(f=t.async?(0,bt._)`await `:bt.nil){const u=l.opts.passContext?Po.default.this:Po.default.self,x=!("compile"in t&&!a||t.schema===!1);o.assign(m,(0,bt._)`${f}${(0,I$.callValidateCode)(e,p,u,x)}`,t.modifying)}function g(f){var u;o.if((0,bt.not)((u=t.valid)!==null&&u!==void 0?u:m),f)}}bn.funcKeywordCode=A$;function zm(e){const{gen:t,data:n,it:o}=e;t.if(o.parentData,()=>t.assign(n,(0,bt._)`${o.parentData}[${o.parentDataProperty}]`))}function M$(e,t){const{gen:n}=e;n.if((0,bt._)`Array.isArray(${t})`,()=>{n.assign(Po.default.vErrors,(0,bt._)`${Po.default.vErrors} === null ? ${t} : ${Po.default.vErrors}.concat(${t})`).assign(Po.default.errors,(0,bt._)`${Po.default.vErrors}.length`),(0,O$.extendErrors)(e)},()=>e.error())}function q$({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}function Jv(e,t,n){if(n===void 0)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof n=="function"?{ref:n}:{ref:n,code:(0,bt.stringify)(n)})}function U$(e,t,n=!1){return!t.length||t.some(o=>o==="array"?Array.isArray(e):o==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==o||n&&typeof e>"u")}bn.validSchemaType=U$;function L$({schema:e,opts:t,self:n,errSchemaPath:o},r,i){if(Array.isArray(r.keyword)?!r.keyword.includes(i):r.keyword!==i)throw new Error("ajv implementation error");const s=r.dependencies;if(s!=null&&s.some(a=>!Object.prototype.hasOwnProperty.call(e,a)))throw new Error(`parent schema must have dependencies of ${i}: ${s.join(",")}`);if(r.validateSchema&&!r.validateSchema(e[i])){const l=`keyword "${i}" value is invalid at path "${o}": `+n.errorsText(r.validateSchema.errors);if(t.validateSchema==="log")n.logger.error(l);else throw new Error(l)}}bn.validateKeywordUsage=L$;var yo={};Object.defineProperty(yo,"__esModule",{value:!0});yo.extendSubschemaMode=yo.extendSubschemaData=yo.getSubschema=void 0;const vn=ue,Qv=Q;function D$(e,{keyword:t,schemaProp:n,schema:o,schemaPath:r,errSchemaPath:i,topSchemaRef:s}){if(t!==void 0&&o!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){const a=e.schema[t];return n===void 0?{schema:a,schemaPath:(0,vn._)`${e.schemaPath}${(0,vn.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:a[n],schemaPath:(0,vn._)`${e.schemaPath}${(0,vn.getProperty)(t)}${(0,vn.getProperty)(n)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,Qv.escapeFragment)(n)}`}}if(o!==void 0){if(r===void 0||i===void 0||s===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:o,schemaPath:r,topSchemaRef:s,errSchemaPath:i}}throw new Error('either "keyword" or "schema" must be passed')}yo.getSubschema=D$;function z$(e,t,{dataProp:n,dataPropType:o,data:r,dataTypes:i,propertyName:s}){if(r!==void 0&&n!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');const{gen:a}=t;if(n!==void 0){const{errorPath:d,dataPathArr:p,opts:m}=t,v=a.let("data",(0,vn._)`${t.data}${(0,vn.getProperty)(n)}`,!0);l(v),e.errorPath=(0,vn.str)`${d}${(0,Qv.getErrorPath)(n,o,m.jsPropertySyntax)}`,e.parentDataProperty=(0,vn._)`${n}`,e.dataPathArr=[...p,e.parentDataProperty]}if(r!==void 0){const d=r instanceof vn.Name?r:a.let("data",r,!0);l(d),s!==void 0&&(e.propertyName=s)}i&&(e.dataTypes=i);function l(d){e.data=d,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,d]}}yo.extendSubschemaData=z$;function F$(e,{jtdDiscriminator:t,jtdMetadata:n,compositeRule:o,createErrors:r,allErrors:i}){o!==void 0&&(e.compositeRule=o),r!==void 0&&(e.createErrors=r),i!==void 0&&(e.allErrors=i),e.jtdDiscriminator=t,e.jtdMetadata=n}yo.extendSubschemaMode=F$;var lt={},Yv=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var o,r,i;if(Array.isArray(t)){if(o=t.length,o!=n.length)return!1;for(r=o;r--!==0;)if(!e(t[r],n[r]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(i=Object.keys(t),o=i.length,o!==Object.keys(n).length)return!1;for(r=o;r--!==0;)if(!Object.prototype.hasOwnProperty.call(n,i[r]))return!1;for(r=o;r--!==0;){var s=i[r];if(!e(t[s],n[s]))return!1}return!0}return t!==t&&n!==n},Xv={exports:{}},so=Xv.exports=function(e,t,n){typeof t=="function"&&(n=t,t={}),n=t.cb||n;var o=typeof n=="function"?n:n.pre||function(){},r=n.post||function(){};va(t,o,r,e,"",e)};so.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};so.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};so.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};so.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function va(e,t,n,o,r,i,s,a,l,d){if(o&&typeof o=="object"&&!Array.isArray(o)){t(o,r,i,s,a,l,d);for(var p in o){var m=o[p];if(Array.isArray(m)){if(p in so.arrayKeywords)for(var v=0;v<m.length;v++)va(e,t,n,m[v],r+"/"+p+"/"+v,i,r,p,o,v)}else if(p in so.propsKeywords){if(m&&typeof m=="object")for(var h in m)va(e,t,n,m[h],r+"/"+p+"/"+B$(h),i,r,p,o,h)}else(p in so.keywords||e.allKeys&&!(p in so.skipKeywords))&&va(e,t,n,m,r+"/"+p,i,r,p,o)}n(o,r,i,s,a,l,d)}}function B$(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}var H$=Xv.exports;Object.defineProperty(lt,"__esModule",{value:!0});lt.getSchemaRefs=lt.resolveUrl=lt.normalizeId=lt._getFullPath=lt.getFullPath=lt.inlineRef=void 0;const V$=Q,W$=Yv,K$=H$,G$=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function J$(e,t=!0){return typeof e=="boolean"?!0:t===!0?!qd(e):t?Zv(e)<=t:!1}lt.inlineRef=J$;const Q$=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function qd(e){for(const t in e){if(Q$.has(t))return!0;const n=e[t];if(Array.isArray(n)&&n.some(qd)||typeof n=="object"&&qd(n))return!0}return!1}function Zv(e){let t=0;for(const n in e){if(n==="$ref")return 1/0;if(t++,!G$.has(n)&&(typeof e[n]=="object"&&(0,V$.eachItem)(e[n],o=>t+=Zv(o)),t===1/0))return 1/0}return t}function eb(e,t="",n){n!==!1&&(t=Or(t));const o=e.parse(t);return tb(e,o)}lt.getFullPath=eb;function tb(e,t){return e.serialize(t).split("#")[0]+"#"}lt._getFullPath=tb;const Y$=/#\/?$/;function Or(e){return e?e.replace(Y$,""):""}lt.normalizeId=Or;function X$(e,t,n){return n=Or(n),e.resolve(t,n)}lt.resolveUrl=X$;const Z$=/^[a-z_][-a-z0-9._]*$/i;function ek(e,t){if(typeof e=="boolean")return{};const{schemaId:n,uriResolver:o}=this.opts,r=Or(e[n]||t),i={"":r},s=eb(o,r,!1),a={},l=new Set;return K$(e,{allKeys:!0},(m,v,h,y)=>{if(y===void 0)return;const b=s+v;let g=i[y];typeof m[n]=="string"&&(g=f.call(this,m[n])),u.call(this,m.$anchor),u.call(this,m.$dynamicAnchor),i[v]=g;function f(x){const S=this.opts.uriResolver.resolve;if(x=Or(g?S(g,x):x),l.has(x))throw p(x);l.add(x);let T=this.refs[x];return typeof T=="string"&&(T=this.refs[T]),typeof T=="object"?d(m,T.schema,x):x!==Or(b)&&(x[0]==="#"?(d(m,a[x],x),a[x]=m):this.refs[x]=b),x}function u(x){if(typeof x=="string"){if(!Z$.test(x))throw new Error(`invalid anchor "${x}"`);f.call(this,`#${x}`)}}}),a;function d(m,v,h){if(v!==void 0&&!W$(m,v))throw p(h)}function p(m){return new Error(`reference "${m}" resolves to more than one schema`)}}lt.getSchemaRefs=ek;Object.defineProperty(ln,"__esModule",{value:!0});ln.getData=ln.KeywordCxt=ln.validateFunctionCode=void 0;const nb=Wr,Fm=et,sp=An,nl=et,tk=El,Li=bn,gc=yo,re=ue,le=Dt,nk=lt,Mn=Q,yi=Ns;function ok(e){if(ib(e)&&(sb(e),rb(e))){sk(e);return}ob(e,()=>(0,nb.topBoolOrEmptySchema)(e))}ln.validateFunctionCode=ok;function ob({gen:e,validateName:t,schema:n,schemaEnv:o,opts:r},i){r.code.es5?e.func(t,(0,re._)`${le.default.data}, ${le.default.valCxt}`,o.$async,()=>{e.code((0,re._)`"use strict"; ${Bm(n,r)}`),ik(e,r),e.code(i)}):e.func(t,(0,re._)`${le.default.data}, ${rk(r)}`,o.$async,()=>e.code(Bm(n,r)).code(i))}function rk(e){return(0,re._)`{${le.default.instancePath}="", ${le.default.parentData}, ${le.default.parentDataProperty}, ${le.default.rootData}=${le.default.data}${e.dynamicRef?(0,re._)`, ${le.default.dynamicAnchors}={}`:re.nil}}={}`}function ik(e,t){e.if(le.default.valCxt,()=>{e.var(le.default.instancePath,(0,re._)`${le.default.valCxt}.${le.default.instancePath}`),e.var(le.default.parentData,(0,re._)`${le.default.valCxt}.${le.default.parentData}`),e.var(le.default.parentDataProperty,(0,re._)`${le.default.valCxt}.${le.default.parentDataProperty}`),e.var(le.default.rootData,(0,re._)`${le.default.valCxt}.${le.default.rootData}`),t.dynamicRef&&e.var(le.default.dynamicAnchors,(0,re._)`${le.default.valCxt}.${le.default.dynamicAnchors}`)},()=>{e.var(le.default.instancePath,(0,re._)`""`),e.var(le.default.parentData,(0,re._)`undefined`),e.var(le.default.parentDataProperty,(0,re._)`undefined`),e.var(le.default.rootData,le.default.data),t.dynamicRef&&e.var(le.default.dynamicAnchors,(0,re._)`{}`)})}function sk(e){const{schema:t,opts:n,gen:o}=e;ob(e,()=>{n.$comment&&t.$comment&&lb(e),uk(e),o.let(le.default.vErrors,null),o.let(le.default.errors,0),n.unevaluated&&ak(e),ab(e),mk(e)})}function ak(e){const{gen:t,validateName:n}=e;e.evaluated=t.const("evaluated",(0,re._)`${n}.evaluated`),t.if((0,re._)`${e.evaluated}.dynamicProps`,()=>t.assign((0,re._)`${e.evaluated}.props`,(0,re._)`undefined`)),t.if((0,re._)`${e.evaluated}.dynamicItems`,()=>t.assign((0,re._)`${e.evaluated}.items`,(0,re._)`undefined`))}function Bm(e,t){const n=typeof e=="object"&&e[t.schemaId];return n&&(t.code.source||t.code.process)?(0,re._)`/*# sourceURL=${n} */`:re.nil}function lk(e,t){if(ib(e)&&(sb(e),rb(e))){ck(e,t);return}(0,nb.boolOrEmptySchema)(e,t)}function rb({schema:e,self:t}){if(typeof e=="boolean")return!e;for(const n in e)if(t.RULES.all[n])return!0;return!1}function ib(e){return typeof e.schema!="boolean"}function ck(e,t){const{schema:n,gen:o,opts:r}=e;r.$comment&&n.$comment&&lb(e),pk(e),fk(e);const i=o.const("_errs",le.default.errors);ab(e,i),o.var(t,(0,re._)`${i} === ${le.default.errors}`)}function sb(e){(0,Mn.checkUnknownRules)(e),dk(e)}function ab(e,t){if(e.opts.jtd)return Hm(e,[],!1,t);const n=(0,Fm.getSchemaTypes)(e.schema),o=(0,Fm.coerceAndCheckDataType)(e,n);Hm(e,n,!o,t)}function dk(e){const{schema:t,errSchemaPath:n,opts:o,self:r}=e;t.$ref&&o.ignoreKeywordsWithRef&&(0,Mn.schemaHasRulesButRef)(t,r.RULES)&&r.logger.warn(`$ref: keywords ignored in schema at path "${n}"`)}function uk(e){const{schema:t,opts:n}=e;t.default!==void 0&&n.useDefaults&&n.strictSchema&&(0,Mn.checkStrictMode)(e,"default is ignored in the schema root")}function pk(e){const t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,nk.resolveUrl)(e.opts.uriResolver,e.baseId,t))}function fk(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}function lb({gen:e,schemaEnv:t,schema:n,errSchemaPath:o,opts:r}){const i=n.$comment;if(r.$comment===!0)e.code((0,re._)`${le.default.self}.logger.log(${i})`);else if(typeof r.$comment=="function"){const s=(0,re.str)`${o}/$comment`,a=e.scopeValue("root",{ref:t.root});e.code((0,re._)`${le.default.self}.opts.$comment(${i}, ${s}, ${a}.schema)`)}}function mk(e){const{gen:t,schemaEnv:n,validateName:o,ValidationError:r,opts:i}=e;n.$async?t.if((0,re._)`${le.default.errors} === 0`,()=>t.return(le.default.data),()=>t.throw((0,re._)`new ${r}(${le.default.vErrors})`)):(t.assign((0,re._)`${o}.errors`,le.default.vErrors),i.unevaluated&&hk(e),t.return((0,re._)`${le.default.errors} === 0`))}function hk({gen:e,evaluated:t,props:n,items:o}){n instanceof re.Name&&e.assign((0,re._)`${t}.props`,n),o instanceof re.Name&&e.assign((0,re._)`${t}.items`,o)}function Hm(e,t,n,o){const{gen:r,schema:i,data:s,allErrors:a,opts:l,self:d}=e,{RULES:p}=d;if(i.$ref&&(l.ignoreKeywordsWithRef||!(0,Mn.schemaHasRulesButRef)(i,p))){r.block(()=>ub(e,"$ref",p.all.$ref.definition));return}l.jtd||yk(e,t),r.block(()=>{for(const v of p.rules)m(v);m(p.post)});function m(v){(0,sp.shouldUseGroup)(i,v)&&(v.type?(r.if((0,nl.checkDataType)(v.type,s,l.strictNumbers)),Vm(e,v),t.length===1&&t[0]===v.type&&n&&(r.else(),(0,nl.reportTypeError)(e)),r.endIf()):Vm(e,v),a||r.if((0,re._)`${le.default.errors} === ${o||0}`))}}function Vm(e,t){const{gen:n,schema:o,opts:{useDefaults:r}}=e;r&&(0,tk.assignDefaults)(e,t.type),n.block(()=>{for(const i of t.rules)(0,sp.shouldUseRule)(o,i)&&ub(e,i.keyword,i.definition,t.type)})}function yk(e,t){e.schemaEnv.meta||!e.opts.strictTypes||(gk(e,t),e.opts.allowUnionTypes||vk(e,t),bk(e,e.dataTypes))}function gk(e,t){if(t.length){if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach(n=>{cb(e.dataTypes,n)||ap(e,`type "${n}" not allowed by context "${e.dataTypes.join(",")}"`)}),wk(e,t)}}function vk(e,t){t.length>1&&!(t.length===2&&t.includes("null"))&&ap(e,"use allowUnionTypes to allow union type keyword")}function bk(e,t){const n=e.self.RULES.all;for(const o in n){const r=n[o];if(typeof r=="object"&&(0,sp.shouldUseRule)(e.schema,r)){const{type:i}=r.definition;i.length&&!i.some(s=>xk(t,s))&&ap(e,`missing type "${i.join(",")}" for keyword "${o}"`)}}}function xk(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function cb(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function wk(e,t){const n=[];for(const o of e.dataTypes)cb(t,o)?n.push(o):t.includes("integer")&&o==="number"&&n.push("integer");e.dataTypes=n}function ap(e,t){const n=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${n}" (strictTypes)`,(0,Mn.checkStrictMode)(e,t,e.opts.strictTypes)}class db{constructor(t,n,o){if((0,Li.validateKeywordUsage)(t,n,o),this.gen=t.gen,this.allErrors=t.allErrors,this.keyword=o,this.data=t.data,this.schema=t.schema[o],this.$data=n.$data&&t.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,Mn.schemaRefOrVal)(t,this.schema,o,this.$data),this.schemaType=n.schemaType,this.parentSchema=t.schema,this.params={},this.it=t,this.def=n,this.$data)this.schemaCode=t.gen.const("vSchema",pb(this.$data,t));else if(this.schemaCode=this.schemaValue,!(0,Li.validSchemaType)(this.schema,n.schemaType,n.allowUndefined))throw new Error(`${o} value must be ${JSON.stringify(n.schemaType)}`);("code"in n?n.trackErrors:n.errors!==!1)&&(this.errsCount=t.gen.const("_errs",le.default.errors))}result(t,n,o){this.failResult((0,re.not)(t),n,o)}failResult(t,n,o){this.gen.if(t),o?o():this.error(),n?(this.gen.else(),n(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(t,n){this.failResult((0,re.not)(t),void 0,n)}fail(t){if(t===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(t),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(t){if(!this.$data)return this.fail(t);const{schemaCode:n}=this;this.fail((0,re._)`${n} !== undefined && (${(0,re.or)(this.invalid$data(),t)})`)}error(t,n,o){if(n){this.setParams(n),this._error(t,o),this.setParams({});return}this._error(t,o)}_error(t,n){(t?yi.reportExtraError:yi.reportError)(this,this.def.error,n)}$dataError(){(0,yi.reportError)(this,this.def.$dataError||yi.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,yi.resetErrorsCount)(this.gen,this.errsCount)}ok(t){this.allErrors||this.gen.if(t)}setParams(t,n){n?Object.assign(this.params,t):this.params=t}block$data(t,n,o=re.nil){this.gen.block(()=>{this.check$data(t,o),n()})}check$data(t=re.nil,n=re.nil){if(!this.$data)return;const{gen:o,schemaCode:r,schemaType:i,def:s}=this;o.if((0,re.or)((0,re._)`${r} === undefined`,n)),t!==re.nil&&o.assign(t,!0),(i.length||s.validateSchema)&&(o.elseIf(this.invalid$data()),this.$dataError(),t!==re.nil&&o.assign(t,!1)),o.else()}invalid$data(){const{gen:t,schemaCode:n,schemaType:o,def:r,it:i}=this;return(0,re.or)(s(),a());function s(){if(o.length){if(!(n instanceof re.Name))throw new Error("ajv implementation error");const l=Array.isArray(o)?o:[o];return(0,re._)`${(0,nl.checkDataTypes)(l,n,i.opts.strictNumbers,nl.DataType.Wrong)}`}return re.nil}function a(){if(r.validateSchema){const l=t.scopeValue("validate$data",{ref:r.validateSchema});return(0,re._)`!${l}(${n})`}return re.nil}}subschema(t,n){const o=(0,gc.getSubschema)(this.it,t);(0,gc.extendSubschemaData)(o,this.it,t),(0,gc.extendSubschemaMode)(o,t);const r={...this.it,...o,items:void 0,props:void 0};return lk(r,n),r}mergeEvaluated(t,n){const{it:o,gen:r}=this;o.opts.unevaluated&&(o.props!==!0&&t.props!==void 0&&(o.props=Mn.mergeEvaluated.props(r,t.props,o.props,n)),o.items!==!0&&t.items!==void 0&&(o.items=Mn.mergeEvaluated.items(r,t.items,o.items,n)))}mergeValidEvaluated(t,n){const{it:o,gen:r}=this;if(o.opts.unevaluated&&(o.props!==!0||o.items!==!0))return r.if(n,()=>this.mergeEvaluated(t,re.Name)),!0}}ln.KeywordCxt=db;function ub(e,t,n,o){const r=new db(e,n,t);"code"in n?n.code(r,o):r.$data&&n.validate?(0,Li.funcKeywordCode)(r,n):"macro"in n?(0,Li.macroKeywordCode)(r,n):(n.compile||n.validate)&&(0,Li.funcKeywordCode)(r,n)}const Sk=/^\/(?:[^~]|~0|~1)*$/,$k=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function pb(e,{dataLevel:t,dataNames:n,dataPathArr:o}){let r,i;if(e==="")return le.default.rootData;if(e[0]==="/"){if(!Sk.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);r=e,i=le.default.rootData}else{const d=$k.exec(e);if(!d)throw new Error(`Invalid JSON-pointer: ${e}`);const p=+d[1];if(r=d[2],r==="#"){if(p>=t)throw new Error(l("property/index",p));return o[t-p]}if(p>t)throw new Error(l("data",p));if(i=n[t-p],!r)return i}let s=i;const a=r.split("/");for(const d of a)d&&(i=(0,re._)`${i}${(0,re.getProperty)((0,Mn.unescapeJsonPointer)(d))}`,s=(0,re._)`${s} && ${i}`);return s;function l(d,p){return`Cannot access ${d} ${p} levels up, current level is ${t}`}}ln.getData=pb;var Cs={};Object.defineProperty(Cs,"__esModule",{value:!0});class kk extends Error{constructor(t){super("validation failed"),this.errors=t,this.ajv=this.validation=!0}}Cs.default=kk;var Xr={};Object.defineProperty(Xr,"__esModule",{value:!0});const vc=lt;class Tk extends Error{constructor(t,n,o,r){super(r||`can't resolve reference ${o} from id ${n}`),this.missingRef=(0,vc.resolveUrl)(t,n,o),this.missingSchema=(0,vc.normalizeId)((0,vc.getFullPath)(t,this.missingRef))}}Xr.default=Tk;var xt={};Object.defineProperty(xt,"__esModule",{value:!0});xt.resolveSchema=xt.getCompilingSchema=xt.resolveRef=xt.compileSchema=xt.SchemaEnv=void 0;const Zt=ue,_k=Cs,jo=Dt,rn=lt,Wm=Q,jk=ln;class Pl{constructor(t){var n;this.refs={},this.dynamicAnchors={};let o;typeof t.schema=="object"&&(o=t.schema),this.schema=t.schema,this.schemaId=t.schemaId,this.root=t.root||this,this.baseId=(n=t.baseId)!==null&&n!==void 0?n:(0,rn.normalizeId)(o==null?void 0:o[t.schemaId||"$id"]),this.schemaPath=t.schemaPath,this.localRefs=t.localRefs,this.meta=t.meta,this.$async=o==null?void 0:o.$async,this.refs={}}}xt.SchemaEnv=Pl;function lp(e){const t=fb.call(this,e);if(t)return t;const n=(0,rn.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:o,lines:r}=this.opts.code,{ownProperties:i}=this.opts,s=new Zt.CodeGen(this.scope,{es5:o,lines:r,ownProperties:i});let a;e.$async&&(a=s.scopeValue("Error",{ref:_k.default,code:(0,Zt._)`require("ajv/dist/runtime/validation_error").default`}));const l=s.scopeName("validate");e.validateName=l;const d={gen:s,allErrors:this.opts.allErrors,data:jo.default.data,parentData:jo.default.parentData,parentDataProperty:jo.default.parentDataProperty,dataNames:[jo.default.data],dataPathArr:[Zt.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:s.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,Zt.stringify)(e.schema)}:{ref:e.schema}),validateName:l,ValidationError:a,schema:e.schema,schemaEnv:e,rootId:n,baseId:e.baseId||n,schemaPath:Zt.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,Zt._)`""`,opts:this.opts,self:this};let p;try{this._compilations.add(e),(0,jk.validateFunctionCode)(d),s.optimize(this.opts.code.optimize);const m=s.toString();p=`${s.scopeRefs(jo.default.scope)}return ${m}`,this.opts.code.process&&(p=this.opts.code.process(p,e));const h=new Function(`${jo.default.self}`,`${jo.default.scope}`,p)(this,this.scope.get());if(this.scope.value(l,{ref:h}),h.errors=null,h.schema=e.schema,h.schemaEnv=e,e.$async&&(h.$async=!0),this.opts.code.source===!0&&(h.source={validateName:l,validateCode:m,scopeValues:s._values}),this.opts.unevaluated){const{props:y,items:b}=d;h.evaluated={props:y instanceof Zt.Name?void 0:y,items:b instanceof Zt.Name?void 0:b,dynamicProps:y instanceof Zt.Name,dynamicItems:b instanceof Zt.Name},h.source&&(h.source.evaluated=(0,Zt.stringify)(h.evaluated))}return e.validate=h,e}catch(m){throw delete e.validate,delete e.validateName,p&&this.logger.error("Error compiling schema, function code:",p),m}finally{this._compilations.delete(e)}}xt.compileSchema=lp;function Nk(e,t,n){var o;n=(0,rn.resolveUrl)(this.opts.uriResolver,t,n);const r=e.refs[n];if(r)return r;let i=Pk.call(this,e,n);if(i===void 0){const s=(o=e.localRefs)===null||o===void 0?void 0:o[n],{schemaId:a}=this.opts;s&&(i=new Pl({schema:s,schemaId:a,root:e,baseId:t}))}if(i!==void 0)return e.refs[n]=Ck.call(this,i)}xt.resolveRef=Nk;function Ck(e){return(0,rn.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:lp.call(this,e)}function fb(e){for(const t of this._compilations)if(Ek(t,e))return t}xt.getCompilingSchema=fb;function Ek(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function Pk(e,t){let n;for(;typeof(n=this.refs[t])=="string";)t=n;return n||this.schemas[t]||Il.call(this,e,t)}function Il(e,t){const n=this.opts.uriResolver.parse(t),o=(0,rn._getFullPath)(this.opts.uriResolver,n);let r=(0,rn.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&o===r)return bc.call(this,n,e);const i=(0,rn.normalizeId)(o),s=this.refs[i]||this.schemas[i];if(typeof s=="string"){const a=Il.call(this,e,s);return typeof(a==null?void 0:a.schema)!="object"?void 0:bc.call(this,n,a)}if(typeof(s==null?void 0:s.schema)=="object"){if(s.validate||lp.call(this,s),i===(0,rn.normalizeId)(t)){const{schema:a}=s,{schemaId:l}=this.opts,d=a[l];return d&&(r=(0,rn.resolveUrl)(this.opts.uriResolver,r,d)),new Pl({schema:a,schemaId:l,root:e,baseId:r})}return bc.call(this,n,s)}}xt.resolveSchema=Il;const Ik=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function bc(e,{baseId:t,schema:n,root:o}){var r;if(((r=e.fragment)===null||r===void 0?void 0:r[0])!=="/")return;for(const a of e.fragment.slice(1).split("/")){if(typeof n=="boolean")return;const l=n[(0,Wm.unescapeFragment)(a)];if(l===void 0)return;n=l;const d=typeof n=="object"&&n[this.opts.schemaId];!Ik.has(a)&&d&&(t=(0,rn.resolveUrl)(this.opts.uriResolver,t,d))}let i;if(typeof n!="boolean"&&n.$ref&&!(0,Wm.schemaHasRulesButRef)(n,this.RULES)){const a=(0,rn.resolveUrl)(this.opts.uriResolver,t,n.$ref);i=Il.call(this,o,a)}const{schemaId:s}=this.opts;if(i=i||new Pl({schema:n,schemaId:s,root:o,baseId:t}),i.schema!==i.root.schema)return i}const Ok="https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",Rk="Meta-schema for $data reference (JSON AnySchema extension proposal)",Ak="object",Mk=["$data"],qk={$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},Uk=!1,Lk={$id:Ok,description:Rk,type:Ak,required:Mk,properties:qk,additionalProperties:Uk};var cp={},Ol={exports:{}};const Dk=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),mb=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),dp=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),hb=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),zk=RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);function yb(e){let t="",n=0,o=0;for(o=0;o<e.length;o++)if(n=e[o].charCodeAt(0),n!==48){if(!(n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102))return"";t+=e[o];break}for(o+=1;o<e.length;o++){if(n=e[o].charCodeAt(0),!(n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102))return"";t+=e[o]}return t}const Fk=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function Km(e){return e.length=0,!0}function Bk(e,t,n){if(e.length){const o=yb(e);if(o!=="")t.push(o);else return n.error=!0,!1;e.length=0}return!0}function Hk(e){let t=0;const n={error:!1,address:"",zone:""},o=[],r=[];let i=!1,s=!1,a=Bk;for(let l=0;l<e.length;l++){const d=e[l];if(!(d==="["||d==="]"))if(d===":"){if(i===!0&&(s=!0),!a(r,o,n))break;if(++t>7){n.error=!0;break}l>0&&e[l-1]===":"&&(i=!0),o.push(":");continue}else if(d==="%"){if(!a(r,o,n))break;a=Km}else{r.push(d);continue}}return r.length&&(a===Km?n.zone=r.join(""):s?o.push(r.join("")):o.push(yb(r))),n.address=o.join(""),n}function gb(e){if(Vk(e,":")<2)return{host:e,isIPV6:!1};const t=Hk(e);if(t.error)return{host:e,isIPV6:!1};{let n=t.address,o=t.address;return t.zone&&(n+="%"+t.zone,o+="%25"+t.zone),{host:n,isIPV6:!0,escapedHost:o}}}function Vk(e,t){let n=0;for(let o=0;o<e.length;o++)e[o]===t&&n++;return n}function Wk(e){let t=e;const n=[];let o=-1,r=0;for(;r=t.length;){if(r===1){if(t===".")break;if(t==="/"){n.push("/");break}else{n.push(t);break}}else if(r===2){if(t[0]==="."){if(t[1]===".")break;if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&(t[1]==="."||t[1]==="/")){n.push("/");break}}else if(r===3&&t==="/.."){n.length!==0&&n.pop(),n.push("/");break}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."&&t[3]==="/"){t=t.slice(3),n.length!==0&&n.pop();continue}}if((o=t.indexOf("/",1))===-1){n.push(t);break}else n.push(t.slice(0,o)),t=t.slice(o)}return n.join("")}const Kk={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},Gk=/[@/?#:]/g,Jk=/[@/?#]/g;function vb(e,t){const n=t?Jk:Gk;return n.lastIndex=0,e.replace(n,o=>Kk[o])}function Qk(e,t=!1){if(e.indexOf("%")===-1)return e;let n="";for(let o=0;o<e.length;o++){if(e[o]==="%"&&o+2<e.length){const r=e.slice(o+1,o+3);if(dp(r)){const i=r.toUpperCase(),s=String.fromCharCode(parseInt(i,16));t&&hb(s)?n+=s:n+="%"+i,o+=2;continue}}n+=e[o]}return n}function Yk(e){let t="";for(let n=0;n<e.length;n++){if(e[n]==="%"&&n+2<e.length){const o=e.slice(n+1,n+3);if(dp(o)){const r=o.toUpperCase(),i=String.fromCharCode(parseInt(r,16));i!=="."&&hb(i)?t+=i:t+="%"+r,n+=2;continue}}zk(e[n])?t+=e[n]:t+=escape(e[n])}return t}function Xk(e){let t="";for(let n=0;n<e.length;n++){if(e[n]==="%"&&n+2<e.length){const o=e.slice(n+1,n+3);if(dp(o)){t+="%"+o.toUpperCase(),n+=2;continue}}t+=escape(e[n])}return t}function Zk(e){const t=[];if(e.userinfo!==void 0&&(t.push(e.userinfo),t.push("@")),e.host!==void 0){let n=unescape(e.host);if(!mb(n)){const o=gb(n);o.isIPV6===!0?n=`[${o.escapedHost}]`:n=vb(n,!1)}t.push(n)}return(typeof e.port=="number"||typeof e.port=="string")&&(t.push(":"),t.push(String(e.port))),t.length?t.join(""):void 0}var bb={nonSimpleDomain:Fk,recomposeAuthority:Zk,reescapeHostDelimiters:vb,normalizePercentEncoding:Qk,normalizePathEncoding:Yk,escapePreservingEscapes:Xk,removeDotSegments:Wk,isIPv4:mb,isUUID:Dk,normalizeIPv6:gb};const{isUUID:eT}=bb,tT=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;function xb(e){return e.secure===!0?!0:e.secure===!1?!1:e.scheme?e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S"):!1}function wb(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e}function Sb(e){const t=String(e.scheme).toLowerCase()==="https";return(e.port===(t?443:80)||e.port==="")&&(e.port=void 0),e.path||(e.path="/"),e}function nT(e){return e.secure=xb(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function oT(e){if((e.port===(xb(e)?443:80)||e.port==="")&&(e.port=void 0),typeof e.secure=="boolean"&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){const[t,n]=e.resourceName.split("?");e.path=t&&t!=="/"?t:void 0,e.query=n,e.resourceName=void 0}return e.fragment=void 0,e}function rT(e,t){if(!e.path)return e.error="URN can not be parsed",e;const n=e.path.match(tT);if(n){const o=t.scheme||e.scheme||"urn";e.nid=n[1].toLowerCase(),e.nss=n[2];const r=`${o}:${t.nid||e.nid}`,i=up(r);e.path=void 0,i&&(e=i.parse(e,t))}else e.error=e.error||"URN can not be parsed.";return e}function iT(e,t){if(e.nid===void 0)throw new Error("URN without nid cannot be serialized");const n=t.scheme||e.scheme||"urn",o=e.nid.toLowerCase(),r=`${n}:${t.nid||o}`,i=up(r);i&&(e=i.serialize(e,t));const s=e,a=e.nss;return s.path=`${o||t.nid}:${a}`,t.skipEscape=!0,s}function sT(e,t){const n=e;return n.uuid=n.nss,n.nss=void 0,!t.tolerant&&(!n.uuid||!eT(n.uuid))&&(n.error=n.error||"UUID is not valid."),n}function aT(e){const t=e;return t.nss=(e.uuid||"").toLowerCase(),t}const $b={scheme:"http",domainHost:!0,parse:wb,serialize:Sb},lT={scheme:"https",domainHost:$b.domainHost,parse:wb,serialize:Sb},ba={scheme:"ws",domainHost:!0,parse:nT,serialize:oT},cT={scheme:"wss",domainHost:ba.domainHost,parse:ba.parse,serialize:ba.serialize},dT={scheme:"urn",parse:rT,serialize:iT,skipNormalize:!0},uT={scheme:"urn:uuid",parse:sT,serialize:aT,skipNormalize:!0},ol={http:$b,https:lT,ws:ba,wss:cT,urn:dT,"urn:uuid":uT};Object.setPrototypeOf(ol,null);function up(e){return e&&(ol[e]||ol[e.toLowerCase()])||void 0}var pT={SCHEMES:ol,getSchemeHandler:up};const{normalizeIPv6:fT,removeDotSegments:ji,recomposeAuthority:mT,normalizePercentEncoding:hT,normalizePathEncoding:yT,escapePreservingEscapes:gT,reescapeHostDelimiters:vT,isIPv4:bT,nonSimpleDomain:xT}=bb,{SCHEMES:wT,getSchemeHandler:kb}=pT;function ST(e,t){return typeof e=="string"?e=jT(e,t):typeof e=="object"&&(e=Kr(Jo(e,t),t)),e}function $T(e,t,n){const o=n?Object.assign({scheme:"null"},n):{scheme:"null"},r=Tb(Kr(e,o),Kr(t,o),o,!0);return o.skipEscape=!0,Jo(r,o)}function Tb(e,t,n,o){const r={};return o||(e=Kr(Jo(e,n),n),t=Kr(Jo(t,n),n)),n=n||{},!n.tolerant&&t.scheme?(r.scheme=t.scheme,r.userinfo=t.userinfo,r.host=t.host,r.port=t.port,r.path=ji(t.path||""),r.query=t.query):(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0?(r.userinfo=t.userinfo,r.host=t.host,r.port=t.port,r.path=ji(t.path||""),r.query=t.query):(t.path?(t.path[0]==="/"?r.path=ji(t.path):((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path?r.path="/"+t.path:e.path?r.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:r.path=t.path,r.path=ji(r.path)),r.query=t.query):(r.path=e.path,t.query!==void 0?r.query=t.query:r.query=e.query),r.userinfo=e.userinfo,r.host=e.host,r.port=e.port),r.scheme=e.scheme),r.fragment=t.fragment,r}function kT(e,t,n){const o=Gm(e,n),r=Gm(t,n);return o!==void 0&&r!==void 0&&o.toLowerCase()===r.toLowerCase()}function Jo(e,t){const n={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},o=Object.assign({},t),r=[],i=kb(o.scheme||n.scheme);i&&i.serialize&&i.serialize(n,o),n.path!==void 0&&(o.skipEscape?n.path=hT(n.path):(n.path=gT(n.path),n.scheme!==void 0&&(n.path=n.path.split("%3A").join(":")))),o.reference!=="suffix"&&n.scheme&&r.push(n.scheme,":");const s=mT(n);if(s!==void 0&&(o.reference!=="suffix"&&r.push("//"),r.push(s),n.path&&n.path[0]!=="/"&&r.push("/")),n.path!==void 0){let a=n.path;!o.absolutePath&&(!i||!i.absolutePath)&&(a=ji(a)),s===void 0&&a[0]==="/"&&a[1]==="/"&&(a="/%2F"+a.slice(2)),r.push(a)}return n.query!==void 0&&r.push("?",n.query),n.fragment!==void 0&&r.push("#",n.fragment),r.join("")}const TT=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function _T(e,t){if(t[2]!==void 0&&e.path&&e.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof e.port=="number"&&(e.port<0||e.port>65535))return"URI port is malformed."}function _b(e,t){const n=Object.assign({},t),o={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0};let r=!1,i=!1;n.reference==="suffix"&&(n.scheme?e=n.scheme+":"+e:e="//"+e);const s=e.match(TT);if(s){o.scheme=s[1],o.userinfo=s[3],o.host=s[4],o.port=parseInt(s[5],10),o.path=s[6]||"",o.query=s[7],o.fragment=s[8],isNaN(o.port)&&(o.port=s[5]);const a=_T(o,s);if(a!==void 0&&(o.error=o.error||a,r=!0),o.host)if(bT(o.host)===!1){const p=fT(o.host);o.host=p.host.toLowerCase(),i=p.isIPV6}else i=!0;o.scheme===void 0&&o.userinfo===void 0&&o.host===void 0&&o.port===void 0&&o.query===void 0&&!o.path?o.reference="same-document":o.scheme===void 0?o.reference="relative":o.fragment===void 0?o.reference="absolute":o.reference="uri",n.reference&&n.reference!=="suffix"&&n.reference!==o.reference&&(o.error=o.error||"URI is not a "+n.reference+" reference.");const l=kb(n.scheme||o.scheme);if(!n.unicodeSupport&&(!l||!l.unicodeSupport)&&o.host&&(n.domainHost||l&&l.domainHost)&&i===!1&&xT(o.host))try{o.host=URL.domainToASCII(o.host.toLowerCase())}catch(d){o.error=o.error||"Host's domain name can not be converted to ASCII: "+d}if((!l||l&&!l.skipNormalize)&&(e.indexOf("%")!==-1&&(o.scheme!==void 0&&(o.scheme=unescape(o.scheme)),o.host!==void 0&&(o.host=vT(unescape(o.host),i))),o.path&&(o.path=yT(o.path)),o.fragment))try{o.fragment=encodeURI(decodeURIComponent(o.fragment))}catch{o.error=o.error||"URI malformed"}l&&l.parse&&l.parse(o,n)}else o.error=o.error||"URI can not be parsed.";return{parsed:o,malformedAuthorityOrPort:r}}function Kr(e,t){return _b(e,t).parsed}function jT(e,t){return jb(e,t).normalized}function jb(e,t){const{parsed:n,malformedAuthorityOrPort:o}=_b(e,t);return{normalized:o?e:Jo(n,t),malformedAuthorityOrPort:o}}function Gm(e,t){if(typeof e=="string"){const{normalized:n,malformedAuthorityOrPort:o}=jb(e,t);return o?void 0:n}if(typeof e=="object")return Jo(e,t)}const pp={SCHEMES:wT,normalize:ST,resolve:$T,resolveComponent:Tb,equal:kT,serialize:Jo,parse:Kr};Ol.exports=pp;Ol.exports.default=pp;Ol.exports.fastUri=pp;var NT=Ol.exports;Object.defineProperty(cp,"__esModule",{value:!0});const Nb=NT;Nb.code='require("ajv/dist/runtime/uri").default';cp.default=Nb;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=void 0;var t=ln;Object.defineProperty(e,"KeywordCxt",{enumerable:!0,get:function(){return t.KeywordCxt}});var n=ue;Object.defineProperty(e,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return n.Name}}),Object.defineProperty(e,"CodeGen",{enumerable:!0,get:function(){return n.CodeGen}});const o=Cs,r=Xr,i=Go,s=xt,a=ue,l=lt,d=et,p=Q,m=Lk,v=cp,h=(O,_)=>new RegExp(O,_);h.code="new RegExp";const y=["removeAdditional","useDefaults","coerceTypes"],b=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),g={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},f={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},u=200;function x(O){var _,M,P,w,k,N,H,R,X,ie,de,we,ze,Ee,Se,_e,Ye,Pe,_n,Bn,_o,tr,Hn,pn,Yt;const Vn=O.strict,nr=(_=O.code)===null||_===void 0?void 0:_.optimize,si=nr===!0||nr===void 0?1:nr||0,ai=(P=(M=O.code)===null||M===void 0?void 0:M.regExp)!==null&&P!==void 0?P:h,Hl=(w=O.uriResolver)!==null&&w!==void 0?w:v.default;return{strictSchema:(N=(k=O.strictSchema)!==null&&k!==void 0?k:Vn)!==null&&N!==void 0?N:!0,strictNumbers:(R=(H=O.strictNumbers)!==null&&H!==void 0?H:Vn)!==null&&R!==void 0?R:!0,strictTypes:(ie=(X=O.strictTypes)!==null&&X!==void 0?X:Vn)!==null&&ie!==void 0?ie:"log",strictTuples:(we=(de=O.strictTuples)!==null&&de!==void 0?de:Vn)!==null&&we!==void 0?we:"log",strictRequired:(Ee=(ze=O.strictRequired)!==null&&ze!==void 0?ze:Vn)!==null&&Ee!==void 0?Ee:!1,code:O.code?{...O.code,optimize:si,regExp:ai}:{optimize:si,regExp:ai},loopRequired:(Se=O.loopRequired)!==null&&Se!==void 0?Se:u,loopEnum:(_e=O.loopEnum)!==null&&_e!==void 0?_e:u,meta:(Ye=O.meta)!==null&&Ye!==void 0?Ye:!0,messages:(Pe=O.messages)!==null&&Pe!==void 0?Pe:!0,inlineRefs:(_n=O.inlineRefs)!==null&&_n!==void 0?_n:!0,schemaId:(Bn=O.schemaId)!==null&&Bn!==void 0?Bn:"$id",addUsedSchema:(_o=O.addUsedSchema)!==null&&_o!==void 0?_o:!0,validateSchema:(tr=O.validateSchema)!==null&&tr!==void 0?tr:!0,validateFormats:(Hn=O.validateFormats)!==null&&Hn!==void 0?Hn:!0,unicodeRegExp:(pn=O.unicodeRegExp)!==null&&pn!==void 0?pn:!0,int32range:(Yt=O.int32range)!==null&&Yt!==void 0?Yt:!0,uriResolver:Hl}}class S{constructor(_={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,_=this.opts={..._,...x(_)};const{es5:M,lines:P}=this.opts.code;this.scope=new a.ValueScope({scope:{},prefixes:b,es5:M,lines:P}),this.logger=z(_.logger);const w=_.validateFormats;_.validateFormats=!1,this.RULES=(0,i.getRules)(),T.call(this,g,_,"NOT SUPPORTED"),T.call(this,f,_,"DEPRECATED","warn"),this._metaOpts=E.call(this),_.formats&&j.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),_.keywords&&A.call(this,_.keywords),typeof _.meta=="object"&&this.addMetaSchema(_.meta),$.call(this),_.validateFormats=w}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){const{$data:_,meta:M,schemaId:P}=this.opts;let w=m;P==="id"&&(w={...m},w.id=w.$id,delete w.$id),M&&_&&this.addMetaSchema(w,w[P],!1)}defaultMeta(){const{meta:_,schemaId:M}=this.opts;return this.opts.defaultMeta=typeof _=="object"?_[M]||_:void 0}validate(_,M){let P;if(typeof _=="string"){if(P=this.getSchema(_),!P)throw new Error(`no schema with key or ref "${_}"`)}else P=this.compile(_);const w=P(M);return"$async"in P||(this.errors=P.errors),w}compile(_,M){const P=this._addSchema(_,M);return P.validate||this._compileSchemaEnv(P)}compileAsync(_,M){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");const{loadSchema:P}=this.opts;return w.call(this,_,M);async function w(ie,de){await k.call(this,ie.$schema);const we=this._addSchema(ie,de);return we.validate||N.call(this,we)}async function k(ie){ie&&!this.getSchema(ie)&&await w.call(this,{$ref:ie},!0)}async function N(ie){try{return this._compileSchemaEnv(ie)}catch(de){if(!(de instanceof r.default))throw de;return H.call(this,de),await R.call(this,de.missingSchema),N.call(this,ie)}}function H({missingSchema:ie,missingRef:de}){if(this.refs[ie])throw new Error(`AnySchema ${ie} is loaded but ${de} cannot be resolved`)}async function R(ie){const de=await X.call(this,ie);this.refs[ie]||await k.call(this,de.$schema),this.refs[ie]||this.addSchema(de,ie,M)}async function X(ie){const de=this._loading[ie];if(de)return de;try{return await(this._loading[ie]=P(ie))}finally{delete this._loading[ie]}}}addSchema(_,M,P,w=this.opts.validateSchema){if(Array.isArray(_)){for(const N of _)this.addSchema(N,void 0,P,w);return this}let k;if(typeof _=="object"){const{schemaId:N}=this.opts;if(k=_[N],k!==void 0&&typeof k!="string")throw new Error(`schema ${N} must be string`)}return M=(0,l.normalizeId)(M||k),this._checkUnique(M),this.schemas[M]=this._addSchema(_,P,M,w,!0),this}addMetaSchema(_,M,P=this.opts.validateSchema){return this.addSchema(_,M,!0,P),this}validateSchema(_,M){if(typeof _=="boolean")return!0;let P;if(P=_.$schema,P!==void 0&&typeof P!="string")throw new Error("$schema must be a string");if(P=P||this.opts.defaultMeta||this.defaultMeta(),!P)return this.logger.warn("meta-schema not available"),this.errors=null,!0;const w=this.validate(P,_);if(!w&&M){const k="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(k);else throw new Error(k)}return w}getSchema(_){let M;for(;typeof(M=C.call(this,_))=="string";)_=M;if(M===void 0){const{schemaId:P}=this.opts,w=new s.SchemaEnv({schema:{},schemaId:P});if(M=s.resolveSchema.call(this,w,_),!M)return;this.refs[_]=M}return M.validate||this._compileSchemaEnv(M)}removeSchema(_){if(_ instanceof RegExp)return this._removeAllSchemas(this.schemas,_),this._removeAllSchemas(this.refs,_),this;switch(typeof _){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{const M=C.call(this,_);return typeof M=="object"&&this._cache.delete(M.schema),delete this.schemas[_],delete this.refs[_],this}case"object":{const M=_;this._cache.delete(M);let P=_[this.opts.schemaId];return P&&(P=(0,l.normalizeId)(P),delete this.schemas[P],delete this.refs[P]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(_){for(const M of _)this.addKeyword(M);return this}addKeyword(_,M){let P;if(typeof _=="string")P=_,typeof M=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),M.keyword=P);else if(typeof _=="object"&&M===void 0){if(M=_,P=M.keyword,Array.isArray(P)&&!P.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(L.call(this,P,M),!M)return(0,p.eachItem)(P,k=>F.call(this,k)),this;Y.call(this,M);const w={...M,type:(0,d.getJSONTypes)(M.type),schemaType:(0,d.getJSONTypes)(M.schemaType)};return(0,p.eachItem)(P,w.type.length===0?k=>F.call(this,k,w):k=>w.type.forEach(N=>F.call(this,k,w,N))),this}getKeyword(_){const M=this.RULES.all[_];return typeof M=="object"?M.definition:!!M}removeKeyword(_){const{RULES:M}=this;delete M.keywords[_],delete M.all[_];for(const P of M.rules){const w=P.rules.findIndex(k=>k.keyword===_);w>=0&&P.rules.splice(w,1)}return this}addFormat(_,M){return typeof M=="string"&&(M=new RegExp(M)),this.formats[_]=M,this}errorsText(_=this.errors,{separator:M=", ",dataVar:P="data"}={}){return!_||_.length===0?"No errors":_.map(w=>`${P}${w.instancePath} ${w.message}`).reduce((w,k)=>w+M+k)}$dataMetaSchema(_,M){const P=this.RULES.all;_=JSON.parse(JSON.stringify(_));for(const w of M){const k=w.split("/").slice(1);let N=_;for(const H of k)N=N[H];for(const H in P){const R=P[H];if(typeof R!="object")continue;const{$data:X}=R.definition,ie=N[H];X&&ie&&(N[H]=J(ie))}}return _}_removeAllSchemas(_,M){for(const P in _){const w=_[P];(!M||M.test(P))&&(typeof w=="string"?delete _[P]:w&&!w.meta&&(this._cache.delete(w.schema),delete _[P]))}}_addSchema(_,M,P,w=this.opts.validateSchema,k=this.opts.addUsedSchema){let N;const{schemaId:H}=this.opts;if(typeof _=="object")N=_[H];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof _!="boolean")throw new Error("schema must be object or boolean")}let R=this._cache.get(_);if(R!==void 0)return R;P=(0,l.normalizeId)(N||P);const X=l.getSchemaRefs.call(this,_,P);return R=new s.SchemaEnv({schema:_,schemaId:H,meta:M,baseId:P,localRefs:X}),this._cache.set(R.schema,R),k&&!P.startsWith("#")&&(P&&this._checkUnique(P),this.refs[P]=R),w&&this.validateSchema(_,!0),R}_checkUnique(_){if(this.schemas[_]||this.refs[_])throw new Error(`schema with key or id "${_}" already exists`)}_compileSchemaEnv(_){if(_.meta?this._compileMetaSchema(_):s.compileSchema.call(this,_),!_.validate)throw new Error("ajv implementation error");return _.validate}_compileMetaSchema(_){const M=this.opts;this.opts=this._metaOpts;try{s.compileSchema.call(this,_)}finally{this.opts=M}}}S.ValidationError=o.default,S.MissingRefError=r.default,e.default=S;function T(O,_,M,P="error"){for(const w in O){const k=w;k in _&&this.logger[P](`${M}: option ${w}. ${O[k]}`)}}function C(O){return O=(0,l.normalizeId)(O),this.schemas[O]||this.refs[O]}function $(){const O=this.opts.schemas;if(O)if(Array.isArray(O))this.addSchema(O);else for(const _ in O)this.addSchema(O[_],_)}function j(){for(const O in this.opts.formats){const _=this.opts.formats[O];_&&this.addFormat(O,_)}}function A(O){if(Array.isArray(O)){this.addVocabulary(O);return}this.logger.warn("keywords option as map is deprecated, pass array");for(const _ in O){const M=O[_];M.keyword||(M.keyword=_),this.addKeyword(M)}}function E(){const O={...this.opts};for(const _ of y)delete O[_];return O}const q={log(){},warn(){},error(){}};function z(O){if(O===!1)return q;if(O===void 0)return console;if(O.log&&O.warn&&O.error)return O;throw new Error("logger must implement log, warn and error methods")}const U=/^[a-z_$][a-z0-9_$:-]*$/i;function L(O,_){const{RULES:M}=this;if((0,p.eachItem)(O,P=>{if(M.keywords[P])throw new Error(`Keyword ${P} is already defined`);if(!U.test(P))throw new Error(`Keyword ${P} has invalid name`)}),!!_&&_.$data&&!("code"in _||"validate"in _))throw new Error('$data keyword must have "code" or "validate" function')}function F(O,_,M){var P;const w=_==null?void 0:_.post;if(M&&w)throw new Error('keyword with "post" flag cannot have "type"');const{RULES:k}=this;let N=w?k.post:k.rules.find(({type:R})=>R===M);if(N||(N={type:M,rules:[]},k.rules.push(N)),k.keywords[O]=!0,!_)return;const H={keyword:O,definition:{..._,type:(0,d.getJSONTypes)(_.type),schemaType:(0,d.getJSONTypes)(_.schemaType)}};_.before?G.call(this,N,H,_.before):N.rules.push(H),k.all[O]=H,(P=_.implements)===null||P===void 0||P.forEach(R=>this.addKeyword(R))}function G(O,_,M){const P=O.rules.findIndex(w=>w.keyword===M);P>=0?O.rules.splice(P,0,_):(O.rules.push(_),this.logger.warn(`rule ${M} is not defined`))}function Y(O){let{metaSchema:_}=O;_!==void 0&&(O.$data&&this.opts.$data&&(_=J(_)),O.validateSchema=this.compile(_,!0))}const D={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function J(O){return{anyOf:[O,D]}}})(Av);var fp={},mp={},hp={};Object.defineProperty(hp,"__esModule",{value:!0});const CT={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};hp.default=CT;var zn={};Object.defineProperty(zn,"__esModule",{value:!0});zn.callRef=zn.getValidate=void 0;const ET=Xr,Jm=ye,Tt=ue,sr=Dt,Qm=xt,Ys=Q,PT={keyword:"$ref",schemaType:"string",code(e){const{gen:t,schema:n,it:o}=e,{baseId:r,schemaEnv:i,validateName:s,opts:a,self:l}=o,{root:d}=i;if((n==="#"||n==="#/")&&r===d.baseId)return m();const p=Qm.resolveRef.call(l,d,r,n);if(p===void 0)throw new ET.default(o.opts.uriResolver,r,n);if(p instanceof Qm.SchemaEnv)return v(p);return h(p);function m(){if(i===d)return xa(e,s,i,i.$async);const y=t.scopeValue("root",{ref:d});return xa(e,(0,Tt._)`${y}.validate`,d,d.$async)}function v(y){const b=Cb(e,y);xa(e,b,y,y.$async)}function h(y){const b=t.scopeValue("schema",a.code.source===!0?{ref:y,code:(0,Tt.stringify)(y)}:{ref:y}),g=t.name("valid"),f=e.subschema({schema:y,dataTypes:[],schemaPath:Tt.nil,topSchemaRef:b,errSchemaPath:n},g);e.mergeEvaluated(f),e.ok(g)}}};function Cb(e,t){const{gen:n}=e;return t.validate?n.scopeValue("validate",{ref:t.validate}):(0,Tt._)`${n.scopeValue("wrapper",{ref:t})}.validate`}zn.getValidate=Cb;function xa(e,t,n,o){const{gen:r,it:i}=e,{allErrors:s,schemaEnv:a,opts:l}=i,d=l.passContext?sr.default.this:Tt.nil;o?p():m();function p(){if(!a.$async)throw new Error("async schema referenced by sync schema");const y=r.let("valid");r.try(()=>{r.code((0,Tt._)`await ${(0,Jm.callValidateCode)(e,t,d)}`),h(t),s||r.assign(y,!0)},b=>{r.if((0,Tt._)`!(${b} instanceof ${i.ValidationError})`,()=>r.throw(b)),v(b),s||r.assign(y,!1)}),e.ok(y)}function m(){e.result((0,Jm.callValidateCode)(e,t,d),()=>h(t),()=>v(t))}function v(y){const b=(0,Tt._)`${y}.errors`;r.assign(sr.default.vErrors,(0,Tt._)`${sr.default.vErrors} === null ? ${b} : ${sr.default.vErrors}.concat(${b})`),r.assign(sr.default.errors,(0,Tt._)`${sr.default.vErrors}.length`)}function h(y){var b;if(!i.opts.unevaluated)return;const g=(b=n==null?void 0:n.validate)===null||b===void 0?void 0:b.evaluated;if(i.props!==!0)if(g&&!g.dynamicProps)g.props!==void 0&&(i.props=Ys.mergeEvaluated.props(r,g.props,i.props));else{const f=r.var("props",(0,Tt._)`${y}.evaluated.props`);i.props=Ys.mergeEvaluated.props(r,f,i.props,Tt.Name)}if(i.items!==!0)if(g&&!g.dynamicItems)g.items!==void 0&&(i.items=Ys.mergeEvaluated.items(r,g.items,i.items));else{const f=r.var("items",(0,Tt._)`${y}.evaluated.items`);i.items=Ys.mergeEvaluated.items(r,f,i.items,Tt.Name)}}}zn.callRef=xa;zn.default=PT;Object.defineProperty(mp,"__esModule",{value:!0});const IT=hp,OT=zn,RT=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",IT.default,OT.default];mp.default=RT;var yp={},gp={};Object.defineProperty(gp,"__esModule",{value:!0});const rl=ue,Gn=rl.operators,il={maximum:{okStr:"<=",ok:Gn.LTE,fail:Gn.GT},minimum:{okStr:">=",ok:Gn.GTE,fail:Gn.LT},exclusiveMaximum:{okStr:"<",ok:Gn.LT,fail:Gn.GTE},exclusiveMinimum:{okStr:">",ok:Gn.GT,fail:Gn.LTE}},AT={message:({keyword:e,schemaCode:t})=>(0,rl.str)`must be ${il[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,rl._)`{comparison: ${il[e].okStr}, limit: ${t}}`},MT={keyword:Object.keys(il),type:"number",schemaType:"number",$data:!0,error:AT,code(e){const{keyword:t,data:n,schemaCode:o}=e;e.fail$data((0,rl._)`${n} ${il[t].fail} ${o} || isNaN(${n})`)}};gp.default=MT;var vp={};Object.defineProperty(vp,"__esModule",{value:!0});const Di=ue,qT={message:({schemaCode:e})=>(0,Di.str)`must be multiple of ${e}`,params:({schemaCode:e})=>(0,Di._)`{multipleOf: ${e}}`},UT={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:qT,code(e){const{gen:t,data:n,schemaCode:o,it:r}=e,i=r.opts.multipleOfPrecision,s=t.let("res"),a=i?(0,Di._)`Math.abs(Math.round(${s}) - ${s}) > 1e-${i}`:(0,Di._)`${s} !== parseInt(${s})`;e.fail$data((0,Di._)`(${o} === 0 || (${s} = ${n}/${o}, ${a}))`)}};vp.default=UT;var bp={},xp={};Object.defineProperty(xp,"__esModule",{value:!0});function Eb(e){const t=e.length;let n=0,o=0,r;for(;o<t;)n++,r=e.charCodeAt(o++),r>=55296&&r<=56319&&o<t&&(r=e.charCodeAt(o),(r&64512)===56320&&o++);return n}xp.default=Eb;Eb.code='require("ajv/dist/runtime/ucs2length").default';Object.defineProperty(bp,"__esModule",{value:!0});const Io=ue,LT=Q,DT=xp,zT={message({keyword:e,schemaCode:t}){const n=e==="maxLength"?"more":"fewer";return(0,Io.str)`must NOT have ${n} than ${t} characters`},params:({schemaCode:e})=>(0,Io._)`{limit: ${e}}`},FT={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:zT,code(e){const{keyword:t,data:n,schemaCode:o,it:r}=e,i=t==="maxLength"?Io.operators.GT:Io.operators.LT,s=r.opts.unicode===!1?(0,Io._)`${n}.length`:(0,Io._)`${(0,LT.useFunc)(e.gen,DT.default)}(${n})`;e.fail$data((0,Io._)`${s} ${i} ${o}`)}};bp.default=FT;var wp={};Object.defineProperty(wp,"__esModule",{value:!0});const BT=ye,HT=Q,kr=ue,VT={message:({schemaCode:e})=>(0,kr.str)`must match pattern "${e}"`,params:({schemaCode:e})=>(0,kr._)`{pattern: ${e}}`},WT={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:VT,code(e){const{gen:t,data:n,$data:o,schema:r,schemaCode:i,it:s}=e,a=s.opts.unicodeRegExp?"u":"";if(o){const{regExp:l}=s.opts.code,d=l.code==="new RegExp"?(0,kr._)`new RegExp`:(0,HT.useFunc)(t,l),p=t.let("valid");t.try(()=>t.assign(p,(0,kr._)`${d}(${i}, ${a}).test(${n})`),()=>t.assign(p,!1)),e.fail$data((0,kr._)`!${p}`)}else{const l=(0,BT.usePattern)(e,r);e.fail$data((0,kr._)`!${l}.test(${n})`)}}};wp.default=WT;var Sp={};Object.defineProperty(Sp,"__esModule",{value:!0});const zi=ue,KT={message({keyword:e,schemaCode:t}){const n=e==="maxProperties"?"more":"fewer";return(0,zi.str)`must NOT have ${n} than ${t} properties`},params:({schemaCode:e})=>(0,zi._)`{limit: ${e}}`},GT={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:KT,code(e){const{keyword:t,data:n,schemaCode:o}=e,r=t==="maxProperties"?zi.operators.GT:zi.operators.LT;e.fail$data((0,zi._)`Object.keys(${n}).length ${r} ${o}`)}};Sp.default=GT;var $p={};Object.defineProperty($p,"__esModule",{value:!0});const gi=ye,Fi=ue,JT=Q,QT={message:({params:{missingProperty:e}})=>(0,Fi.str)`must have required property '${e}'`,params:({params:{missingProperty:e}})=>(0,Fi._)`{missingProperty: ${e}}`},YT={keyword:"required",type:"object",schemaType:"array",$data:!0,error:QT,code(e){const{gen:t,schema:n,schemaCode:o,data:r,$data:i,it:s}=e,{opts:a}=s;if(!i&&n.length===0)return;const l=n.length>=a.loopRequired;if(s.allErrors?d():p(),a.strictRequired){const h=e.parentSchema.properties,{definedProperties:y}=e.it;for(const b of n)if((h==null?void 0:h[b])===void 0&&!y.has(b)){const g=s.schemaEnv.baseId+s.errSchemaPath,f=`required property "${b}" is not defined at "${g}" (strictRequired)`;(0,JT.checkStrictMode)(s,f,s.opts.strictRequired)}}function d(){if(l||i)e.block$data(Fi.nil,m);else for(const h of n)(0,gi.checkReportMissingProp)(e,h)}function p(){const h=t.let("missing");if(l||i){const y=t.let("valid",!0);e.block$data(y,()=>v(h,y)),e.ok(y)}else t.if((0,gi.checkMissingProp)(e,n,h)),(0,gi.reportMissingProp)(e,h),t.else()}function m(){t.forOf("prop",o,h=>{e.setParams({missingProperty:h}),t.if((0,gi.noPropertyInData)(t,r,h,a.ownProperties),()=>e.error())})}function v(h,y){e.setParams({missingProperty:h}),t.forOf(h,o,()=>{t.assign(y,(0,gi.propertyInData)(t,r,h,a.ownProperties)),t.if((0,Fi.not)(y),()=>{e.error(),t.break()})},Fi.nil)}}};$p.default=YT;var kp={};Object.defineProperty(kp,"__esModule",{value:!0});const Bi=ue,XT={message({keyword:e,schemaCode:t}){const n=e==="maxItems"?"more":"fewer";return(0,Bi.str)`must NOT have ${n} than ${t} items`},params:({schemaCode:e})=>(0,Bi._)`{limit: ${e}}`},ZT={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:XT,code(e){const{keyword:t,data:n,schemaCode:o}=e,r=t==="maxItems"?Bi.operators.GT:Bi.operators.LT;e.fail$data((0,Bi._)`${n}.length ${r} ${o}`)}};kp.default=ZT;var Tp={},Es={};Object.defineProperty(Es,"__esModule",{value:!0});const Pb=Yv;Pb.code='require("ajv/dist/runtime/equal").default';Es.default=Pb;Object.defineProperty(Tp,"__esModule",{value:!0});const xc=et,it=ue,e1=Q,t1=Es,n1={message:({params:{i:e,j:t}})=>(0,it.str)`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>(0,it._)`{i: ${e}, j: ${t}}`},o1={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:n1,code(e){const{gen:t,data:n,$data:o,schema:r,parentSchema:i,schemaCode:s,it:a}=e;if(!o&&!r)return;const l=t.let("valid"),d=i.items?(0,xc.getSchemaTypes)(i.items):[];e.block$data(l,p,(0,it._)`${s} === false`),e.ok(l);function p(){const y=t.let("i",(0,it._)`${n}.length`),b=t.let("j");e.setParams({i:y,j:b}),t.assign(l,!0),t.if((0,it._)`${y} > 1`,()=>(m()?v:h)(y,b))}function m(){return d.length>0&&!d.some(y=>y==="object"||y==="array")}function v(y,b){const g=t.name("item"),f=(0,xc.checkDataTypes)(d,g,a.opts.strictNumbers,xc.DataType.Wrong),u=t.const("indices",(0,it._)`{}`);t.for((0,it._)`;${y}--;`,()=>{t.let(g,(0,it._)`${n}[${y}]`),t.if(f,(0,it._)`continue`),d.length>1&&t.if((0,it._)`typeof ${g} == "string"`,(0,it._)`${g} += "_"`),t.if((0,it._)`typeof ${u}[${g}] == "number"`,()=>{t.assign(b,(0,it._)`${u}[${g}]`),e.error(),t.assign(l,!1).break()}).code((0,it._)`${u}[${g}] = ${y}`)})}function h(y,b){const g=(0,e1.useFunc)(t,t1.default),f=t.name("outer");t.label(f).for((0,it._)`;${y}--;`,()=>t.for((0,it._)`${b} = ${y}; ${b}--;`,()=>t.if((0,it._)`${g}(${n}[${y}], ${n}[${b}])`,()=>{e.error(),t.assign(l,!1).break(f)})))}}};Tp.default=o1;var _p={};Object.defineProperty(_p,"__esModule",{value:!0});const Ud=ue,r1=Q,i1=Es,s1={message:"must be equal to constant",params:({schemaCode:e})=>(0,Ud._)`{allowedValue: ${e}}`},a1={keyword:"const",$data:!0,error:s1,code(e){const{gen:t,data:n,$data:o,schemaCode:r,schema:i}=e;o||i&&typeof i=="object"?e.fail$data((0,Ud._)`!${(0,r1.useFunc)(t,i1.default)}(${n}, ${r})`):e.fail((0,Ud._)`${i} !== ${n}`)}};_p.default=a1;var jp={};Object.defineProperty(jp,"__esModule",{value:!0});const Ni=ue,l1=Q,c1=Es,d1={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>(0,Ni._)`{allowedValues: ${e}}`},u1={keyword:"enum",schemaType:"array",$data:!0,error:d1,code(e){const{gen:t,data:n,$data:o,schema:r,schemaCode:i,it:s}=e;if(!o&&r.length===0)throw new Error("enum must have non-empty array");const a=r.length>=s.opts.loopEnum;let l;const d=()=>l??(l=(0,l1.useFunc)(t,c1.default));let p;if(a||o)p=t.let("valid"),e.block$data(p,m);else{if(!Array.isArray(r))throw new Error("ajv implementation error");const h=t.const("vSchema",i);p=(0,Ni.or)(...r.map((y,b)=>v(h,b)))}e.pass(p);function m(){t.assign(p,!1),t.forOf("v",i,h=>t.if((0,Ni._)`${d()}(${n}, ${h})`,()=>t.assign(p,!0).break()))}function v(h,y){const b=r[y];return typeof b=="object"&&b!==null?(0,Ni._)`${d()}(${n}, ${h}[${y}])`:(0,Ni._)`${n} === ${b}`}}};jp.default=u1;Object.defineProperty(yp,"__esModule",{value:!0});const p1=gp,f1=vp,m1=bp,h1=wp,y1=Sp,g1=$p,v1=kp,b1=Tp,x1=_p,w1=jp,S1=[p1.default,f1.default,m1.default,h1.default,y1.default,g1.default,v1.default,b1.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},x1.default,w1.default];yp.default=S1;var Np={},Zr={};Object.defineProperty(Zr,"__esModule",{value:!0});Zr.validateAdditionalItems=void 0;const Oo=ue,Ld=Q,$1={message:({params:{len:e}})=>(0,Oo.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Oo._)`{limit: ${e}}`},k1={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:$1,code(e){const{parentSchema:t,it:n}=e,{items:o}=t;if(!Array.isArray(o)){(0,Ld.checkStrictMode)(n,'"additionalItems" is ignored when "items" is not an array of schemas');return}Ib(e,o)}};function Ib(e,t){const{gen:n,schema:o,data:r,keyword:i,it:s}=e;s.items=!0;const a=n.const("len",(0,Oo._)`${r}.length`);if(o===!1)e.setParams({len:t.length}),e.pass((0,Oo._)`${a} <= ${t.length}`);else if(typeof o=="object"&&!(0,Ld.alwaysValidSchema)(s,o)){const d=n.var("valid",(0,Oo._)`${a} <= ${t.length}`);n.if((0,Oo.not)(d),()=>l(d)),e.ok(d)}function l(d){n.forRange("i",t.length,a,p=>{e.subschema({keyword:i,dataProp:p,dataPropType:Ld.Type.Num},d),s.allErrors||n.if((0,Oo.not)(d),()=>n.break())})}}Zr.validateAdditionalItems=Ib;Zr.default=k1;var Cp={},ei={};Object.defineProperty(ei,"__esModule",{value:!0});ei.validateTuple=void 0;const Ym=ue,wa=Q,T1=ye,_1={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){const{schema:t,it:n}=e;if(Array.isArray(t))return Ob(e,"additionalItems",t);n.items=!0,!(0,wa.alwaysValidSchema)(n,t)&&e.ok((0,T1.validateArray)(e))}};function Ob(e,t,n=e.schema){const{gen:o,parentSchema:r,data:i,keyword:s,it:a}=e;p(r),a.opts.unevaluated&&n.length&&a.items!==!0&&(a.items=wa.mergeEvaluated.items(o,n.length,a.items));const l=o.name("valid"),d=o.const("len",(0,Ym._)`${i}.length`);n.forEach((m,v)=>{(0,wa.alwaysValidSchema)(a,m)||(o.if((0,Ym._)`${d} > ${v}`,()=>e.subschema({keyword:s,schemaProp:v,dataProp:v},l)),e.ok(l))});function p(m){const{opts:v,errSchemaPath:h}=a,y=n.length,b=y===m.minItems&&(y===m.maxItems||m[t]===!1);if(v.strictTuples&&!b){const g=`"${s}" is ${y}-tuple, but minItems or maxItems/${t} are not specified or different at path "${h}"`;(0,wa.checkStrictMode)(a,g,v.strictTuples)}}}ei.validateTuple=Ob;ei.default=_1;Object.defineProperty(Cp,"__esModule",{value:!0});const j1=ei,N1={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,j1.validateTuple)(e,"items")};Cp.default=N1;var Ep={};Object.defineProperty(Ep,"__esModule",{value:!0});const Xm=ue,C1=Q,E1=ye,P1=Zr,I1={message:({params:{len:e}})=>(0,Xm.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Xm._)`{limit: ${e}}`},O1={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:I1,code(e){const{schema:t,parentSchema:n,it:o}=e,{prefixItems:r}=n;o.items=!0,!(0,C1.alwaysValidSchema)(o,t)&&(r?(0,P1.validateAdditionalItems)(e,r):e.ok((0,E1.validateArray)(e)))}};Ep.default=O1;var Pp={};Object.defineProperty(Pp,"__esModule",{value:!0});const zt=ue,Xs=Q,R1={message:({params:{min:e,max:t}})=>t===void 0?(0,zt.str)`must contain at least ${e} valid item(s)`:(0,zt.str)`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?(0,zt._)`{minContains: ${e}}`:(0,zt._)`{minContains: ${e}, maxContains: ${t}}`},A1={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:R1,code(e){const{gen:t,schema:n,parentSchema:o,data:r,it:i}=e;let s,a;const{minContains:l,maxContains:d}=o;i.opts.next?(s=l===void 0?1:l,a=d):s=1;const p=t.const("len",(0,zt._)`${r}.length`);if(e.setParams({min:s,max:a}),a===void 0&&s===0){(0,Xs.checkStrictMode)(i,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(a!==void 0&&s>a){(0,Xs.checkStrictMode)(i,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,Xs.alwaysValidSchema)(i,n)){let b=(0,zt._)`${p} >= ${s}`;a!==void 0&&(b=(0,zt._)`${b} && ${p} <= ${a}`),e.pass(b);return}i.items=!0;const m=t.name("valid");a===void 0&&s===1?h(m,()=>t.if(m,()=>t.break())):s===0?(t.let(m,!0),a!==void 0&&t.if((0,zt._)`${r}.length > 0`,v)):(t.let(m,!1),v()),e.result(m,()=>e.reset());function v(){const b=t.name("_valid"),g=t.let("count",0);h(b,()=>t.if(b,()=>y(g)))}function h(b,g){t.forRange("i",0,p,f=>{e.subschema({keyword:"contains",dataProp:f,dataPropType:Xs.Type.Num,compositeRule:!0},b),g()})}function y(b){t.code((0,zt._)`${b}++`),a===void 0?t.if((0,zt._)`${b} >= ${s}`,()=>t.assign(m,!0).break()):(t.if((0,zt._)`${b} > ${a}`,()=>t.assign(m,!1).break()),s===1?t.assign(m,!0):t.if((0,zt._)`${b} >= ${s}`,()=>t.assign(m,!0)))}}};Pp.default=A1;var Rl={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.validateSchemaDeps=e.validatePropertyDeps=e.error=void 0;const t=ue,n=Q,o=ye;e.error={message:({params:{property:l,depsCount:d,deps:p}})=>{const m=d===1?"property":"properties";return(0,t.str)`must have ${m} ${p} when property ${l} is present`},params:({params:{property:l,depsCount:d,deps:p,missingProperty:m}})=>(0,t._)`{property: ${l},
|
|
1763
1763
|
missingProperty: ${m},
|
|
1764
1764
|
depsCount: ${d},
|
|
1765
|
-
deps: ${p}}`};const r={keyword:"dependencies",type:"object",schemaType:"object",error:e.error,code(l){const[d,p]=i(l);s(l,d),a(l,p)}};function i({schema:l}){const d={},p={};for(const m in l){if(m==="__proto__")continue;const v=Array.isArray(l[m])?d:p;v[m]=l[m]}return[d,p]}function s(l,d=l.schema){const{gen:p,data:m,it:v}=l;if(Object.keys(d).length===0)return;const h=p.let("missing");for(const y in d){const b=d[y];if(b.length===0)continue;const g=(0,o.propertyInData)(p,m,y,v.opts.ownProperties);l.setParams({property:y,depsCount:b.length,deps:b.join(", ")}),v.allErrors?p.if(g,()=>{for(const f of b)(0,o.checkReportMissingProp)(l,f)}):(p.if((0,t._)`${g} && (${(0,o.checkMissingProp)(l,b,h)})`),(0,o.reportMissingProp)(l,h),p.else())}}e.validatePropertyDeps=s;function a(l,d=l.schema){const{gen:p,data:m,keyword:v,it:h}=l,y=p.name("valid");for(const b in d)(0,n.alwaysValidSchema)(h,d[b])||(p.if((0,o.propertyInData)(p,m,b,h.opts.ownProperties),()=>{const g=l.subschema({keyword:v,schemaProp:b},y);l.mergeValidEvaluated(g,y)},()=>p.var(y,!0)),l.ok(y))}e.validateSchemaDeps=a,e.default=r})(Rl);var Ip={};Object.defineProperty(Ip,"__esModule",{value:!0});const Rb=ue,M1=Q,q1={message:"property name must be valid",params:({params:e})=>(0,Rb._)`{propertyName: ${e.propertyName}}`},U1={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:q1,code(e){const{gen:t,schema:n,data:o,it:r}=e;if((0,M1.alwaysValidSchema)(r,n))return;const i=t.name("valid");t.forIn("key",o,s=>{e.setParams({propertyName:s}),e.subschema({keyword:"propertyNames",data:s,dataTypes:["string"],propertyName:s,compositeRule:!0},i),t.if((0,Rb.not)(i),()=>{e.error(!0),r.allErrors||t.break()})}),e.ok(i)}};Ip.default=U1;var Al={};Object.defineProperty(Al,"__esModule",{value:!0});const Zs=ye,en=ue,L1=Dt,ea=Q,D1={message:"must NOT have additional properties",params:({params:e})=>(0,en._)`{additionalProperty: ${e.additionalProperty}}`},z1={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:D1,code(e){const{gen:t,schema:n,parentSchema:o,data:r,errsCount:i,it:s}=e;if(!i)throw new Error("ajv implementation error");const{allErrors:a,opts:l}=s;if(s.props=!0,l.removeAdditional!=="all"&&(0,ea.alwaysValidSchema)(s,n))return;const d=(0,Zs.allSchemaProperties)(o.properties),p=(0,Zs.allSchemaProperties)(o.patternProperties);m(),e.ok((0,en._)`${i} === ${L1.default.errors}`);function m(){t.forIn("key",r,g=>{!d.length&&!p.length?y(g):t.if(v(g),()=>y(g))})}function v(g){let f;if(d.length>8){const u=(0,ea.schemaRefOrVal)(s,o.properties,"properties");f=(0,Zs.isOwnProperty)(t,u,g)}else d.length?f=(0,en.or)(...d.map(u=>(0,en._)`${g} === ${u}`)):f=en.nil;return p.length&&(f=(0,en.or)(f,...p.map(u=>(0,en._)`${(0,Zs.usePattern)(e,u)}.test(${g})`))),(0,en.not)(f)}function h(g){t.code((0,en._)`delete ${r}[${g}]`)}function y(g){if(l.removeAdditional==="all"||l.removeAdditional&&n===!1){h(g);return}if(n===!1){e.setParams({additionalProperty:g}),e.error(),a||t.break();return}if(typeof n=="object"&&!(0,ea.alwaysValidSchema)(s,n)){const f=t.name("valid");l.removeAdditional==="failing"?(b(g,f,!1),t.if((0,en.not)(f),()=>{e.reset(),h(g)})):(b(g,f),a||t.if((0,en.not)(f),()=>t.break()))}}function b(g,f,u){const x={keyword:"additionalProperties",dataProp:g,dataPropType:ea.Type.Str};u===!1&&Object.assign(x,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(x,f)}}};Al.default=z1;var Op={};Object.defineProperty(Op,"__esModule",{value:!0});const F1=ln,Zm=ye,wc=Q,eh=Al,B1={keyword:"properties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,parentSchema:o,data:r,it:i}=e;i.opts.removeAdditional==="all"&&o.additionalProperties===void 0&&eh.default.code(new F1.KeywordCxt(i,eh.default,"additionalProperties"));const s=(0,Zm.allSchemaProperties)(n);for(const m of s)i.definedProperties.add(m);i.opts.unevaluated&&s.length&&i.props!==!0&&(i.props=wc.mergeEvaluated.props(t,(0,wc.toHash)(s),i.props));const a=s.filter(m=>!(0,wc.alwaysValidSchema)(i,n[m]));if(a.length===0)return;const l=t.name("valid");for(const m of a)d(m)?p(m):(t.if((0,Zm.propertyInData)(t,r,m,i.opts.ownProperties)),p(m),i.allErrors||t.else().var(l,!0),t.endIf()),e.it.definedProperties.add(m),e.ok(l);function d(m){return i.opts.useDefaults&&!i.compositeRule&&n[m].default!==void 0}function p(m){e.subschema({keyword:"properties",schemaProp:m,dataProp:m},l)}}};Op.default=B1;var Rp={};Object.defineProperty(Rp,"__esModule",{value:!0});const th=ye,ta=ue,nh=Q,oh=Q,H1={keyword:"patternProperties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,data:o,parentSchema:r,it:i}=e,{opts:s}=i,a=(0,th.allSchemaProperties)(n),l=a.filter(b=>(0,nh.alwaysValidSchema)(i,n[b]));if(a.length===0||l.length===a.length&&(!i.opts.unevaluated||i.props===!0))return;const d=s.strictSchema&&!s.allowMatchingProperties&&r.properties,p=t.name("valid");i.props!==!0&&!(i.props instanceof ta.Name)&&(i.props=(0,oh.evaluatedPropsToName)(t,i.props));const{props:m}=i;v();function v(){for(const b of a)d&&h(b),i.allErrors?y(b):(t.var(p,!0),y(b),t.if(p))}function h(b){for(const g in d)new RegExp(b).test(g)&&(0,nh.checkStrictMode)(i,`property ${g} matches pattern ${b} (use allowMatchingProperties)`)}function y(b){t.forIn("key",o,g=>{t.if((0,ta._)`${(0,th.usePattern)(e,b)}.test(${g})`,()=>{const f=l.includes(b);f||e.subschema({keyword:"patternProperties",schemaProp:b,dataProp:g,dataPropType:oh.Type.Str},p),i.opts.unevaluated&&m!==!0?t.assign((0,ta._)`${m}[${g}]`,!0):!f&&!i.allErrors&&t.if((0,ta.not)(p),()=>t.break())})})}}};Rp.default=H1;var Ap={};Object.defineProperty(Ap,"__esModule",{value:!0});const V1=Q,W1={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){const{gen:t,schema:n,it:o}=e;if((0,V1.alwaysValidSchema)(o,n)){e.fail();return}const r=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},r),e.failResult(r,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Ap.default=W1;var Mp={};Object.defineProperty(Mp,"__esModule",{value:!0});const K1=ye,G1={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:K1.validateUnion,error:{message:"must match a schema in anyOf"}};Mp.default=G1;var qp={};Object.defineProperty(qp,"__esModule",{value:!0});const Sa=ue,J1=Q,Q1={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,Sa._)`{passingSchemas: ${e.passing}}`},Y1={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Q1,code(e){const{gen:t,schema:n,parentSchema:o,it:r}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(r.opts.discriminator&&o.discriminator)return;const i=n,s=t.let("valid",!1),a=t.let("passing",null),l=t.name("_valid");e.setParams({passing:a}),t.block(d),e.result(s,()=>e.reset(),()=>e.error(!0));function d(){i.forEach((p,m)=>{let v;(0,J1.alwaysValidSchema)(r,p)?t.var(l,!0):v=e.subschema({keyword:"oneOf",schemaProp:m,compositeRule:!0},l),m>0&&t.if((0,Sa._)`${l} && ${s}`).assign(s,!1).assign(a,(0,Sa._)`[${a}, ${m}]`).else(),t.if(l,()=>{t.assign(s,!0),t.assign(a,m),v&&e.mergeEvaluated(v,Sa.Name)})})}}};qp.default=Y1;var Up={};Object.defineProperty(Up,"__esModule",{value:!0});const X1=Q,Z1={keyword:"allOf",schemaType:"array",code(e){const{gen:t,schema:n,it:o}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");const r=t.name("valid");n.forEach((i,s)=>{if((0,X1.alwaysValidSchema)(o,i))return;const a=e.subschema({keyword:"allOf",schemaProp:s},r);e.ok(r),e.mergeEvaluated(a)})}};Up.default=Z1;var Lp={};Object.defineProperty(Lp,"__esModule",{value:!0});const sl=ue,Ab=Q,e_={message:({params:e})=>(0,sl.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,sl._)`{failingKeyword: ${e.ifClause}}`},t_={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:e_,code(e){const{gen:t,parentSchema:n,it:o}=e;n.then===void 0&&n.else===void 0&&(0,Ab.checkStrictMode)(o,'"if" without "then" and "else" is ignored');const r=rh(o,"then"),i=rh(o,"else");if(!r&&!i)return;const s=t.let("valid",!0),a=t.name("_valid");if(l(),e.reset(),r&&i){const p=t.let("ifClause");e.setParams({ifClause:p}),t.if(a,d("then",p),d("else",p))}else r?t.if(a,d("then")):t.if((0,sl.not)(a),d("else"));e.pass(s,()=>e.error(!0));function l(){const p=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);e.mergeEvaluated(p)}function d(p,m){return()=>{const v=e.subschema({keyword:p},a);t.assign(s,a),e.mergeValidEvaluated(v,s),m?t.assign(m,(0,sl._)`${p}`):e.setParams({ifClause:p})}}}};function rh(e,t){const n=e.schema[t];return n!==void 0&&!(0,Ab.alwaysValidSchema)(e,n)}Lp.default=t_;var Dp={};Object.defineProperty(Dp,"__esModule",{value:!0});const n_=Q,o_={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:n}){t.if===void 0&&(0,n_.checkStrictMode)(n,`"${e}" without "if" is ignored`)}};Dp.default=o_;Object.defineProperty(Np,"__esModule",{value:!0});const r_=Zr,i_=Cp,s_=ei,a_=Ep,l_=Pp,c_=Rl,d_=Ip,u_=Al,p_=Op,f_=Rp,m_=Ap,h_=Mp,y_=qp,g_=Up,v_=Lp,b_=Dp;function x_(e=!1){const t=[m_.default,h_.default,y_.default,g_.default,v_.default,b_.default,d_.default,u_.default,c_.default,p_.default,f_.default];return e?t.push(i_.default,a_.default):t.push(r_.default,s_.default),t.push(l_.default),t}Np.default=x_;var zp={},ti={};Object.defineProperty(ti,"__esModule",{value:!0});ti.dynamicAnchor=void 0;const Sc=ue,w_=Dt,ih=xt,S_=zn,$_={keyword:"$dynamicAnchor",schemaType:"string",code:e=>Mb(e,e.schema)};function Mb(e,t){const{gen:n,it:o}=e;o.schemaEnv.root.dynamicAnchors[t]=!0;const r=(0,Sc._)`${w_.default.dynamicAnchors}${(0,Sc.getProperty)(t)}`,i=o.errSchemaPath==="#"?o.validateName:k_(e);n.if((0,Sc._)`!${r}`,()=>n.assign(r,i))}ti.dynamicAnchor=Mb;function k_(e){const{schemaEnv:t,schema:n,self:o}=e.it,{root:r,baseId:i,localRefs:s,meta:a}=t.root,{schemaId:l}=o.opts,d=new ih.SchemaEnv({schema:n,schemaId:l,root:r,baseId:i,localRefs:s,meta:a});return ih.compileSchema.call(o,d),(0,S_.getValidate)(e,d)}ti.default=$_;var ni={};Object.defineProperty(ni,"__esModule",{value:!0});ni.dynamicRef=void 0;const sh=ue,T_=Dt,ah=zn,__={keyword:"$dynamicRef",schemaType:"string",code:e=>qb(e,e.schema)};function qb(e,t){const{gen:n,keyword:o,it:r}=e;if(t[0]!=="#")throw new Error(`"${o}" only supports hash fragment reference`);const i=t.slice(1);if(r.allErrors)s();else{const l=n.let("valid",!1);s(l),e.ok(l)}function s(l){if(r.schemaEnv.root.dynamicAnchors[i]){const d=n.let("_v",(0,sh._)`${T_.default.dynamicAnchors}${(0,sh.getProperty)(i)}`);n.if(d,a(d,l),a(r.validateName,l))}else a(r.validateName,l)()}function a(l,d){return d?()=>n.block(()=>{(0,ah.callRef)(e,l),n.let(d,!0)}):()=>(0,ah.callRef)(e,l)}}ni.dynamicRef=qb;ni.default=__;var Fp={};Object.defineProperty(Fp,"__esModule",{value:!0});const j_=ti,N_=Q,C_={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){e.schema?(0,j_.dynamicAnchor)(e,""):(0,N_.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};Fp.default=C_;var Bp={};Object.defineProperty(Bp,"__esModule",{value:!0});const E_=ni,P_={keyword:"$recursiveRef",schemaType:"string",code:e=>(0,E_.dynamicRef)(e,e.schema)};Bp.default=P_;Object.defineProperty(zp,"__esModule",{value:!0});const I_=ti,O_=ni,R_=Fp,A_=Bp,M_=[I_.default,O_.default,R_.default,A_.default];zp.default=M_;var Hp={},Vp={};Object.defineProperty(Vp,"__esModule",{value:!0});const lh=Rl,q_={keyword:"dependentRequired",type:"object",schemaType:"object",error:lh.error,code:e=>(0,lh.validatePropertyDeps)(e)};Vp.default=q_;var Wp={};Object.defineProperty(Wp,"__esModule",{value:!0});const U_=Rl,L_={keyword:"dependentSchemas",type:"object",schemaType:"object",code:e=>(0,U_.validateSchemaDeps)(e)};Wp.default=L_;var Kp={};Object.defineProperty(Kp,"__esModule",{value:!0});const D_=Q,z_={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:n}){t.contains===void 0&&(0,D_.checkStrictMode)(n,`"${e}" without "contains" is ignored`)}};Kp.default=z_;Object.defineProperty(Hp,"__esModule",{value:!0});const F_=Vp,B_=Wp,H_=Kp,V_=[F_.default,B_.default,H_.default];Hp.default=V_;var Gp={},Jp={};Object.defineProperty(Jp,"__esModule",{value:!0});const Xn=ue,ch=Q,W_=Dt,K_={message:"must NOT have unevaluated properties",params:({params:e})=>(0,Xn._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},G_={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:K_,code(e){const{gen:t,schema:n,data:o,errsCount:r,it:i}=e;if(!r)throw new Error("ajv implementation error");const{allErrors:s,props:a}=i;a instanceof Xn.Name?t.if((0,Xn._)`${a} !== true`,()=>t.forIn("key",o,m=>t.if(d(a,m),()=>l(m)))):a!==!0&&t.forIn("key",o,m=>a===void 0?l(m):t.if(p(a,m),()=>l(m))),i.props=!0,e.ok((0,Xn._)`${r} === ${W_.default.errors}`);function l(m){if(n===!1){e.setParams({unevaluatedProperty:m}),e.error(),s||t.break();return}if(!(0,ch.alwaysValidSchema)(i,n)){const v=t.name("valid");e.subschema({keyword:"unevaluatedProperties",dataProp:m,dataPropType:ch.Type.Str},v),s||t.if((0,Xn.not)(v),()=>t.break())}}function d(m,v){return(0,Xn._)`!${m} || !${m}[${v}]`}function p(m,v){const h=[];for(const y in m)m[y]===!0&&h.push((0,Xn._)`${v} !== ${y}`);return(0,Xn.and)(...h)}}};Jp.default=G_;var Qp={};Object.defineProperty(Qp,"__esModule",{value:!0});const Ro=ue,dh=Q,J_={message:({params:{len:e}})=>(0,Ro.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Ro._)`{limit: ${e}}`},Q_={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:J_,code(e){const{gen:t,schema:n,data:o,it:r}=e,i=r.items||0;if(i===!0)return;const s=t.const("len",(0,Ro._)`${o}.length`);if(n===!1)e.setParams({len:i}),e.fail((0,Ro._)`${s} > ${i}`);else if(typeof n=="object"&&!(0,dh.alwaysValidSchema)(r,n)){const l=t.var("valid",(0,Ro._)`${s} <= ${i}`);t.if((0,Ro.not)(l),()=>a(l,i)),e.ok(l)}r.items=!0;function a(l,d){t.forRange("i",d,s,p=>{e.subschema({keyword:"unevaluatedItems",dataProp:p,dataPropType:dh.Type.Num},l),r.allErrors||t.if((0,Ro.not)(l),()=>t.break())})}}};Qp.default=Q_;Object.defineProperty(Gp,"__esModule",{value:!0});const Y_=Jp,X_=Qp,Z_=[Y_.default,X_.default];Gp.default=Z_;var Yp={},Xp={};Object.defineProperty(Xp,"__esModule",{value:!0});const We=ue,ej={message:({schemaCode:e})=>(0,We.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,We._)`{format: ${e}}`},tj={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:ej,code(e,t){const{gen:n,data:o,$data:r,schema:i,schemaCode:s,it:a}=e,{opts:l,errSchemaPath:d,schemaEnv:p,self:m}=a;if(!l.validateFormats)return;r?v():h();function v(){const y=n.scopeValue("formats",{ref:m.formats,code:l.code.formats}),b=n.const("fDef",(0,We._)`${y}[${s}]`),g=n.let("fType"),f=n.let("format");n.if((0,We._)`typeof ${b} == "object" && !(${b} instanceof RegExp)`,()=>n.assign(g,(0,We._)`${b}.type || "string"`).assign(f,(0,We._)`${b}.validate`),()=>n.assign(g,(0,We._)`"string"`).assign(f,b)),e.fail$data((0,We.or)(u(),x()));function u(){return l.strictSchema===!1?We.nil:(0,We._)`${s} && !${f}`}function x(){const S=p.$async?(0,We._)`(${b}.async ? await ${f}(${o}) : ${f}(${o}))`:(0,We._)`${f}(${o})`,T=(0,We._)`(typeof ${f} == "function" ? ${S} : ${f}.test(${o}))`;return(0,We._)`${f} && ${f} !== true && ${g} === ${t} && !${T}`}}function h(){const y=m.formats[i];if(!y){u();return}if(y===!0)return;const[b,g,f]=x(y);b===t&&e.pass(S());function u(){if(l.strictSchema===!1){m.logger.warn(T());return}throw new Error(T());function T(){return`unknown format "${i}" ignored in schema at path "${d}"`}}function x(T){const C=T instanceof RegExp?(0,We.regexpCode)(T):l.code.formats?(0,We._)`${l.code.formats}${(0,We.getProperty)(i)}`:void 0,$=n.scopeValue("formats",{key:i,ref:T,code:C});return typeof T=="object"&&!(T instanceof RegExp)?[T.type||"string",T.validate,(0,We._)`${$}.validate`]:["string",T,$]}function S(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!p.$async)throw new Error("async format in sync schema");return(0,We._)`await ${f}(${o})`}return typeof g=="function"?(0,We._)`${f}(${o})`:(0,We._)`${f}.test(${o})`}}}};Xp.default=tj;Object.defineProperty(Yp,"__esModule",{value:!0});const nj=Xp,oj=[nj.default];Yp.default=oj;var Gr={};Object.defineProperty(Gr,"__esModule",{value:!0});Gr.contentVocabulary=Gr.metadataVocabulary=void 0;Gr.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Gr.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"];Object.defineProperty(fp,"__esModule",{value:!0});const rj=mp,ij=yp,sj=Np,aj=zp,lj=Hp,cj=Gp,dj=Yp,uh=Gr,uj=[aj.default,rj.default,ij.default,(0,sj.default)(!0),dj.default,uh.metadataVocabulary,uh.contentVocabulary,lj.default,cj.default];fp.default=uj;var Zp={},Ml={};Object.defineProperty(Ml,"__esModule",{value:!0});Ml.DiscrError=void 0;var ph;(function(e){e.Tag="tag",e.Mapping="mapping"})(ph||(Ml.DiscrError=ph={}));Object.defineProperty(Zp,"__esModule",{value:!0});const dr=ue,Dd=Ml,fh=xt,pj=Xr,fj=Q,mj={message:({params:{discrError:e,tagName:t}})=>e===Dd.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:n}})=>(0,dr._)`{error: ${e}, tag: ${n}, tagValue: ${t}}`},hj={keyword:"discriminator",type:"object",schemaType:"object",error:mj,code(e){const{gen:t,data:n,schema:o,parentSchema:r,it:i}=e,{oneOf:s}=r;if(!i.opts.discriminator)throw new Error("discriminator: requires discriminator option");const a=o.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(o.mapping)throw new Error("discriminator: mapping is not supported");if(!s)throw new Error("discriminator: requires oneOf keyword");const l=t.let("valid",!1),d=t.const("tag",(0,dr._)`${n}${(0,dr.getProperty)(a)}`);t.if((0,dr._)`typeof ${d} == "string"`,()=>p(),()=>e.error(!1,{discrError:Dd.DiscrError.Tag,tag:d,tagName:a})),e.ok(l);function p(){const h=v();t.if(!1);for(const y in h)t.elseIf((0,dr._)`${d} === ${y}`),t.assign(l,m(h[y]));t.else(),e.error(!1,{discrError:Dd.DiscrError.Mapping,tag:d,tagName:a}),t.endIf()}function m(h){const y=t.name("valid"),b=e.subschema({keyword:"oneOf",schemaProp:h},y);return e.mergeEvaluated(b,dr.Name),y}function v(){var h;const y={},b=f(r);let g=!0;for(let S=0;S<s.length;S++){let T=s[S];if(T!=null&&T.$ref&&!(0,fj.schemaHasRulesButRef)(T,i.self.RULES)){const $=T.$ref;if(T=fh.resolveRef.call(i.self,i.schemaEnv.root,i.baseId,$),T instanceof fh.SchemaEnv&&(T=T.schema),T===void 0)throw new pj.default(i.opts.uriResolver,i.baseId,$)}const C=(h=T==null?void 0:T.properties)===null||h===void 0?void 0:h[a];if(typeof C!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(b||f(T)),u(C,S)}if(!g)throw new Error(`discriminator: "${a}" must be required`);return y;function f({required:S}){return Array.isArray(S)&&S.includes(a)}function u(S,T){if(S.const)x(S.const,T);else if(S.enum)for(const C of S.enum)x(C,T);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function x(S,T){if(typeof S!="string"||S in y)throw new Error(`discriminator: "${a}" values must be unique strings`);y[S]=T}}}};Zp.default=hj;var ef={};const yj="https://json-schema.org/draft/2020-12/schema",gj="https://json-schema.org/draft/2020-12/schema",vj={"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},bj="meta",xj="Core and Validation specifications meta-schema",wj=[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],Sj=["object","boolean"],$j="This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",kj={definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}},Tj={$schema:yj,$id:gj,$vocabulary:vj,$dynamicAnchor:bj,title:xj,allOf:wj,type:Sj,$comment:$j,properties:kj},_j="https://json-schema.org/draft/2020-12/schema",jj="https://json-schema.org/draft/2020-12/meta/applicator",Nj={"https://json-schema.org/draft/2020-12/vocab/applicator":!0},Cj="meta",Ej="Applicator vocabulary meta-schema",Pj=["object","boolean"],Ij={prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},Oj={schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}},Rj={$schema:_j,$id:jj,$vocabulary:Nj,$dynamicAnchor:Cj,title:Ej,type:Pj,properties:Ij,$defs:Oj},Aj="https://json-schema.org/draft/2020-12/schema",Mj="https://json-schema.org/draft/2020-12/meta/unevaluated",qj={"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},Uj="meta",Lj="Unevaluated applicator vocabulary meta-schema",Dj=["object","boolean"],zj={unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}},Fj={$schema:Aj,$id:Mj,$vocabulary:qj,$dynamicAnchor:Uj,title:Lj,type:Dj,properties:zj},Bj="https://json-schema.org/draft/2020-12/schema",Hj="https://json-schema.org/draft/2020-12/meta/content",Vj={"https://json-schema.org/draft/2020-12/vocab/content":!0},Wj="meta",Kj="Content vocabulary meta-schema",Gj=["object","boolean"],Jj={contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}},Qj={$schema:Bj,$id:Hj,$vocabulary:Vj,$dynamicAnchor:Wj,title:Kj,type:Gj,properties:Jj},Yj="https://json-schema.org/draft/2020-12/schema",Xj="https://json-schema.org/draft/2020-12/meta/core",Zj={"https://json-schema.org/draft/2020-12/vocab/core":!0},eN="meta",tN="Core vocabulary meta-schema",nN=["object","boolean"],oN={$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},rN={anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}},iN={$schema:Yj,$id:Xj,$vocabulary:Zj,$dynamicAnchor:eN,title:tN,type:nN,properties:oN,$defs:rN},sN="https://json-schema.org/draft/2020-12/schema",aN="https://json-schema.org/draft/2020-12/meta/format-annotation",lN={"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},cN="meta",dN="Format vocabulary meta-schema for annotation results",uN=["object","boolean"],pN={format:{type:"string"}},fN={$schema:sN,$id:aN,$vocabulary:lN,$dynamicAnchor:cN,title:dN,type:uN,properties:pN},mN="https://json-schema.org/draft/2020-12/schema",hN="https://json-schema.org/draft/2020-12/meta/meta-data",yN={"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},gN="meta",vN="Meta-data vocabulary meta-schema",bN=["object","boolean"],xN={title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}},wN={$schema:mN,$id:hN,$vocabulary:yN,$dynamicAnchor:gN,title:vN,type:bN,properties:xN},SN="https://json-schema.org/draft/2020-12/schema",$N="https://json-schema.org/draft/2020-12/meta/validation",kN={"https://json-schema.org/draft/2020-12/vocab/validation":!0},TN="meta",_N="Validation vocabulary meta-schema",jN=["object","boolean"],NN={type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},CN={nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},EN={$schema:SN,$id:$N,$vocabulary:kN,$dynamicAnchor:TN,title:_N,type:jN,properties:NN,$defs:CN};Object.defineProperty(ef,"__esModule",{value:!0});const PN=Tj,IN=Rj,ON=Fj,RN=Qj,AN=iN,MN=fN,qN=wN,UN=EN,LN=["/properties"];function DN(e){return[PN,IN,ON,RN,AN,t(this,MN),qN,t(this,UN)].forEach(n=>this.addMetaSchema(n,void 0,!1)),this;function t(n,o){return e?n.$dataMetaSchema(o,LN):o}}ef.default=DN;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv2020=void 0;const n=Av,o=fp,r=Zp,i=ef,s="https://json-schema.org/draft/2020-12/schema";class a extends n.default{constructor(h={}){super({...h,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),o.default.forEach(h=>this.addVocabulary(h)),this.opts.discriminator&&this.addKeyword(r.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();const{$data:h,meta:y}=this.opts;y&&(i.default.call(this,h),this.refs["http://json-schema.org/schema"]=s)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(s)?s:void 0)}}t.Ajv2020=a,e.exports=t=a,e.exports.Ajv2020=a,Object.defineProperty(t,"__esModule",{value:!0}),t.default=a;var l=ln;Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return l.KeywordCxt}});var d=ue;Object.defineProperty(t,"_",{enumerable:!0,get:function(){return d._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return d.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return d.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return d.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return d.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return d.CodeGen}});var p=Cs;Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return p.default}});var m=Xr;Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return m.default}})})(Od,Od.exports);var zN=Od.exports;const FN=Yd(zN),mh=FN,BN=mh.default??mh,hh="acp",HN=/will be required/i;function VN(e){const t={path:e.instancePath||"/",message:e.message??"validation failed"};return e.keyword&&(t.keyword=e.keyword),t}function WN(e){const t=new BN({strict:!1,allErrors:!0,validateFormats:!1});t.addSchema(e,hh);const n=new Map,o=new Map,r=e.$defs??{};for(const[p,m]of Object.entries(r)){const v=Object.entries(m.properties??{}).filter(([,b])=>HN.test(b.description??"")).map(([b])=>b);v.length>0&&o.set(p,v);const h=m["x-method"];if(typeof h!="string")continue;let y=n.get(h);y||(y={},n.set(h,y)),p.endsWith("Request")?y.requestDef=p:p.endsWith("Response")?y.responseDef=p:p.endsWith("Notification")&&(y.notificationDef=p)}const i=new Map,s=p=>{const m=i.get(p);if(m)return m;const v=t.compile({$ref:`${hh}#/$defs/${p}`});return i.set(p,v),v};function a(p,m={}){if(!p.payload)return{valid:!0,errors:[],skipped:"parse-error"};if(p.kind==="unknown")return{valid:!0,errors:[],skipped:"wrong-kind"};const v=p.method??m.pairedMethod;if(!v)return{valid:!0,errors:[],skipped:"no-method"};const h=n.get(v);if(!h)return{valid:!0,errors:[],skipped:"unknown-method"};let y,b;const g=p.payload;if(p.kind==="request")y=h.requestDef,b=g.params;else if(p.kind==="notification")y=h.notificationDef,b=g.params;else if(p.kind==="response")y=h.responseDef,b=g.result;else return{valid:!0,errors:[],skipped:"wrong-kind"};if(!y)return{valid:!0,errors:[],skipped:"no-schema-for-kind"};const f=l(y,b),u=s(y),S=u(b)?{valid:!0,errors:[],schemaName:y}:{valid:!1,errors:(u.errors??[]).map(VN),schemaName:y};return f.length>0&&(S.advisories=f),S}function l(p,m){const v=o.get(p);if(!v||typeof m!="object"||m===null)return[];const h=m,y=[];for(const b of v)(h[b]===void 0||h[b]===null)&&y.push({path:b,message:`missing ${b} — will be required in a future ACP version`,kind:"soon-required"});return y}function d(){return[...n.keys()].sort()}return{validateAcpMessage:a,knownAcpMethods:d}}const KN=WN(Rv),GN=KN.validateAcpMessage;function tf(e){const t=Cl(e),n=new Map;for(const r of e)r.method&&n.set(r.seq,r.method);const o=new Map;for(const r of e){const i=t.get(r.seq),s=i!==void 0?n.get(i):void 0,a={};s!==void 0&&(a.pairedMethod=s),o.set(r.seq,GN(r,a))}return o}function JN(e){let t=0,n=0,o=0,r=0,i=0;const s=new Set;for(const[,a]of e)if(!a.skipped){if(t+=1,!a.valid&&(n+=1,o+=a.errors.length,a.schemaName)){const l=a.schemaName.replace(/(Request|Response|Notification)$/,"");s.add(l)}a.advisories&&a.advisories.length>0&&(r+=1,i+=a.advisories.length)}return{checked:t,invalidFrames:n,totalErrors:o,affectedMethods:[...s].sort(),advisoryFrames:r,totalAdvisories:i}}const QN={"claude-code":{shortName:"claude-code",displayName:"Claude Code",description:"Anthropic Claude Code via @agentclientprotocol/claude-agent-acp",command:"npx",args:["-y","@agentclientprotocol/claude-agent-acp"],aliases:[["npx","-y","@zed-industries/claude-code-acp"]]},codex:{shortName:"codex",displayName:"Codex",description:"OpenAI Codex via @zed-industries/codex-acp",command:"npx",args:["-y","@zed-industries/codex-acp"]},goose:{shortName:"goose",displayName:"Goose",description:"Block Goose — install separately, then this runs `goose acp`",command:"goose",args:["acp"],requiresExternalInstall:!0},opencode:{shortName:"opencode",displayName:"OpenCode",description:"SST OpenCode — install via opencode.ai/install, then `opencode acp`",command:"opencode",args:["acp"],requiresExternalInstall:!0}};function YN(e){const t=e.trim();if(t.length===0)return null;const n=[t,XN(t)];for(const o of Object.values(QN)){const r=[[o.command,...o.args],...o.aliases??[]];for(const i of r){const s=i.join(" ");for(const a of n)if(a===s||a.startsWith(s+" "))return o}}return null}function XN(e){const t=e.indexOf(" "),n=t===-1?e:e.slice(0,t),o=t===-1?"":e.slice(t);return(n.split(/[/\\]/).pop()??n)+o}function Rt(e){const t=YN(e);if(t)return t.displayName;const n=e.trim().split(/\s+/).filter(Boolean);if(n.length===0)return e;if(n[0]==="npx")for(let o=1;o<n.length;o++){const r=n[o];if(!r.startsWith("-"))return r}return n[0]==="node"&&n[1]?n[1].split("/").pop()??n[1]:n[0].split(/[/\\]/).pop()||n[0]}function nf(e){const t=e.sessionDbId!==null?`#${e.sessionDbId}`:`pid ${e.pid}`;if(e.sessionName)return`${t} · ${e.sessionName}`;const n=Rt(e.agentCommand);return e.clientName?`${t} · ${e.clientName} · ${n}`:`${t} · ${n}`}function ql(e){const t=e.id>0?`#${e.id}`:"ephemeral";if(e.name)return{primary:t,secondary:e.name};const n=Rt(e.agentCommand??""),o=e.clientName?`${e.clientName} · ${n}`:n;return{primary:t,secondary:o}}const ZN={};function eC(){const e=ZN;return(e==null?void 0:e.VITE_PLAYGROUND)==="1"}const tC={"editor-to-agent":"out","agent-to-editor":"in"},nC={out:"editor-to-agent",in:"agent-to-editor"},oC={request:"req",response:"rsp",notification:"ntf",error:"err",unknown:"unk"},rC={req:"request",rsp:"response",ntf:"notification",err:"error",unk:"unknown"},iC=["tree","raw","meta"];function yh(e){const t=new URLSearchParams(e),n={},o=t.get("dir");if(o!==null){const y=o.split(",").map(b=>b.trim()).filter(Boolean).map(b=>nC[b]).filter(b=>b!==void 0);y.length>0&&(n.directions=new Set(y))}const r=t.get("kind");if(r!==null){const y=r.split(",").map(b=>b.trim()).filter(Boolean).map(b=>rC[b]).filter(b=>b!==void 0);y.length>0&&(n.kinds=new Set(y))}t.get("streams")==="0"&&(n.showStreams=!1);const i=t.get("q");i!==null&&(n.search=i);const s=t.get("seq"),a=s!==null&&/^\d+$/.test(s)?Number(s):null,l=t.get("tab"),d=l!==null&&iC.includes(l)?l:null,p=t.get("play"),m=p!==null&&/^\d+$/.test(p)?Number(p):null,v=t.get("ws");return{filters:n,selectedSeq:a,detailTab:d,playhead:m,captureUrl:v}}const sC=["ws","dir","kind","streams","q","seq","tab","play"];function aC(e){const t=new URLSearchParams(window.location.search);for(const r of sC)t.delete(r);e.captureUrl&&t.set("ws",e.captureUrl),e.filters.directions.size<cs.length&&t.set("dir",[...e.filters.directions].map(r=>tC[r]).filter(Boolean).join(",")),e.filters.kinds.size<ds.length&&t.set("kind",[...e.filters.kinds].map(r=>oC[r]).filter(Boolean).join(",")),e.filters.showStreams||t.set("streams","0"),e.filters.search&&t.set("q",e.filters.search),e.selectedSeq!==null&&t.set("seq",String(e.selectedSeq)),e.detailTab!=="tree"&&t.set("tab",e.detailTab),e.playhead!==null&&t.set("play",String(e.playhead));const n=t.toString(),o=`${window.location.pathname}${n?`?${n}`:""}${window.location.hash}`;o!==window.location.pathname+window.location.search+window.location.hash&&window.history.replaceState(window.history.state,"",o)}function Ub(e){var t,n,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(n=Ub(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}function lC(){for(var e,t,n=0,o="",r=arguments.length;n<r;n++)(e=arguments[n])&&(t=Ub(e))&&(o&&(o+=" "),o+=t);return o}const of="-",cC=e=>{const t=uC(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{const a=s.split(of);return a[0]===""&&a.length!==1&&a.shift(),Lb(a,t)||dC(s)},getConflictingClassGroupIds:(s,a)=>{const l=n[s]||[];return a&&o[s]?[...l,...o[s]]:l}}},Lb=(e,t)=>{var s;if(e.length===0)return t.classGroupId;const n=e[0],o=t.nextPart.get(n),r=o?Lb(e.slice(1),o):void 0;if(r)return r;if(t.validators.length===0)return;const i=e.join(of);return(s=t.validators.find(({validator:a})=>a(i)))==null?void 0:s.classGroupId},gh=/^\[(.+)\]$/,dC=e=>{if(gh.test(e)){const t=gh.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},uC=e=>{const{theme:t,prefix:n}=e,o={nextPart:new Map,validators:[]};return fC(Object.entries(e.classGroups),n).forEach(([i,s])=>{zd(s,o,i,t)}),o},zd=(e,t,n,o)=>{e.forEach(r=>{if(typeof r=="string"){const i=r===""?t:vh(t,r);i.classGroupId=n;return}if(typeof r=="function"){if(pC(r)){zd(r(o),t,n,o);return}t.validators.push({validator:r,classGroupId:n});return}Object.entries(r).forEach(([i,s])=>{zd(s,vh(t,i),n,o)})})},vh=(e,t)=>{let n=e;return t.split(of).forEach(o=>{n.nextPart.has(o)||n.nextPart.set(o,{nextPart:new Map,validators:[]}),n=n.nextPart.get(o)}),n},pC=e=>e.isThemeGetter,fC=(e,t)=>t?e.map(([n,o])=>{const r=o.map(i=>typeof i=="string"?t+i:typeof i=="object"?Object.fromEntries(Object.entries(i).map(([s,a])=>[t+s,a])):i);return[n,r]}):e,mC=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,o=new Map;const r=(i,s)=>{n.set(i,s),t++,t>e&&(t=0,o=n,n=new Map)};return{get(i){let s=n.get(i);if(s!==void 0)return s;if((s=o.get(i))!==void 0)return r(i,s),s},set(i,s){n.has(i)?n.set(i,s):r(i,s)}}},Db="!",hC=e=>{const{separator:t,experimentalParseClassName:n}=e,o=t.length===1,r=t[0],i=t.length,s=a=>{const l=[];let d=0,p=0,m;for(let g=0;g<a.length;g++){let f=a[g];if(d===0){if(f===r&&(o||a.slice(g,g+i)===t)){l.push(a.slice(p,g)),p=g+i;continue}if(f==="/"){m=g;continue}}f==="["?d++:f==="]"&&d--}const v=l.length===0?a:a.substring(p),h=v.startsWith(Db),y=h?v.substring(1):v,b=m&&m>p?m-p:void 0;return{modifiers:l,hasImportantModifier:h,baseClassName:y,maybePostfixModifierPosition:b}};return n?a=>n({className:a,parseClassName:s}):s},yC=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(o=>{o[0]==="["?(t.push(...n.sort(),o),n=[]):n.push(o)}),t.push(...n.sort()),t},gC=e=>({cache:mC(e.cacheSize),parseClassName:hC(e),...cC(e)}),vC=/\s+/,bC=(e,t)=>{const{parseClassName:n,getClassGroupId:o,getConflictingClassGroupIds:r}=t,i=[],s=e.trim().split(vC);let a="";for(let l=s.length-1;l>=0;l-=1){const d=s[l],{modifiers:p,hasImportantModifier:m,baseClassName:v,maybePostfixModifierPosition:h}=n(d);let y=!!h,b=o(y?v.substring(0,h):v);if(!b){if(!y){a=d+(a.length>0?" "+a:a);continue}if(b=o(v),!b){a=d+(a.length>0?" "+a:a);continue}y=!1}const g=yC(p).join(":"),f=m?g+Db:g,u=f+b;if(i.includes(u))continue;i.push(u);const x=r(b,y);for(let S=0;S<x.length;++S){const T=x[S];i.push(f+T)}a=d+(a.length>0?" "+a:a)}return a};function xC(){let e=0,t,n,o="";for(;e<arguments.length;)(t=arguments[e++])&&(n=zb(t))&&(o&&(o+=" "),o+=n);return o}const zb=e=>{if(typeof e=="string")return e;let t,n="";for(let o=0;o<e.length;o++)e[o]&&(t=zb(e[o]))&&(n&&(n+=" "),n+=t);return n};function wC(e,...t){let n,o,r,i=s;function s(l){const d=t.reduce((p,m)=>m(p),e());return n=gC(d),o=n.cache.get,r=n.cache.set,i=a,a(l)}function a(l){const d=o(l);if(d)return d;const p=bC(l,n);return r(l,p),p}return function(){return i(xC.apply(null,arguments))}}const Ie=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},Fb=/^\[(?:([a-z-]+):)?(.+)\]$/i,SC=/^\d+\/\d+$/,$C=new Set(["px","full","screen"]),kC=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,TC=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,_C=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,jC=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,NC=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jn=e=>Rr(e)||$C.has(e)||SC.test(e),Jn=e=>oi(e,"length",MC),Rr=e=>!!e&&!Number.isNaN(Number(e)),$c=e=>oi(e,"number",Rr),vi=e=>!!e&&Number.isInteger(Number(e)),CC=e=>e.endsWith("%")&&Rr(e.slice(0,-1)),pe=e=>Fb.test(e),Qn=e=>kC.test(e),EC=new Set(["length","size","percentage"]),PC=e=>oi(e,EC,Bb),IC=e=>oi(e,"position",Bb),OC=new Set(["image","url"]),RC=e=>oi(e,OC,UC),AC=e=>oi(e,"",qC),bi=()=>!0,oi=(e,t,n)=>{const o=Fb.exec(e);return o?o[1]?typeof t=="string"?o[1]===t:t.has(o[1]):n(o[2]):!1},MC=e=>TC.test(e)&&!_C.test(e),Bb=()=>!1,qC=e=>jC.test(e),UC=e=>NC.test(e),LC=()=>{const e=Ie("colors"),t=Ie("spacing"),n=Ie("blur"),o=Ie("brightness"),r=Ie("borderColor"),i=Ie("borderRadius"),s=Ie("borderSpacing"),a=Ie("borderWidth"),l=Ie("contrast"),d=Ie("grayscale"),p=Ie("hueRotate"),m=Ie("invert"),v=Ie("gap"),h=Ie("gradientColorStops"),y=Ie("gradientColorStopPositions"),b=Ie("inset"),g=Ie("margin"),f=Ie("opacity"),u=Ie("padding"),x=Ie("saturate"),S=Ie("scale"),T=Ie("sepia"),C=Ie("skew"),$=Ie("space"),j=Ie("translate"),A=()=>["auto","contain","none"],E=()=>["auto","hidden","clip","visible","scroll"],q=()=>["auto",pe,t],z=()=>[pe,t],U=()=>["",jn,Jn],L=()=>["auto",Rr,pe],F=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],G=()=>["solid","dashed","dotted","double","none"],Y=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],D=()=>["start","end","center","between","around","evenly","stretch"],J=()=>["","0",pe],O=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>[Rr,pe];return{cacheSize:500,separator:":",theme:{colors:[bi],spacing:[jn,Jn],blur:["none","",Qn,pe],brightness:_(),borderColor:[e],borderRadius:["none","","full",Qn,pe],borderSpacing:z(),borderWidth:U(),contrast:_(),grayscale:J(),hueRotate:_(),invert:J(),gap:z(),gradientColorStops:[e],gradientColorStopPositions:[CC,Jn],inset:q(),margin:q(),opacity:_(),padding:z(),saturate:_(),scale:_(),sepia:J(),skew:_(),space:z(),translate:z()},classGroups:{aspect:[{aspect:["auto","square","video",pe]}],container:["container"],columns:[{columns:[Qn]}],"break-after":[{"break-after":O()}],"break-before":[{"break-before":O()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...F(),pe]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[b]}],"inset-x":[{"inset-x":[b]}],"inset-y":[{"inset-y":[b]}],start:[{start:[b]}],end:[{end:[b]}],top:[{top:[b]}],right:[{right:[b]}],bottom:[{bottom:[b]}],left:[{left:[b]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",vi,pe]}],basis:[{basis:q()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",pe]}],grow:[{grow:J()}],shrink:[{shrink:J()}],order:[{order:["first","last","none",vi,pe]}],"grid-cols":[{"grid-cols":[bi]}],"col-start-end":[{col:["auto",{span:["full",vi,pe]},pe]}],"col-start":[{"col-start":L()}],"col-end":[{"col-end":L()}],"grid-rows":[{"grid-rows":[bi]}],"row-start-end":[{row:["auto",{span:[vi,pe]},pe]}],"row-start":[{"row-start":L()}],"row-end":[{"row-end":L()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",pe]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",pe]}],gap:[{gap:[v]}],"gap-x":[{"gap-x":[v]}],"gap-y":[{"gap-y":[v]}],"justify-content":[{justify:["normal",...D()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...D(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...D(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[u]}],px:[{px:[u]}],py:[{py:[u]}],ps:[{ps:[u]}],pe:[{pe:[u]}],pt:[{pt:[u]}],pr:[{pr:[u]}],pb:[{pb:[u]}],pl:[{pl:[u]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[$]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[$]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",pe,t]}],"min-w":[{"min-w":[pe,t,"min","max","fit"]}],"max-w":[{"max-w":[pe,t,"none","full","min","max","fit","prose",{screen:[Qn]},Qn]}],h:[{h:[pe,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[pe,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[pe,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[pe,t,"auto","min","max","fit"]}],"font-size":[{text:["base",Qn,Jn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",$c]}],"font-family":[{font:[bi]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",pe]}],"line-clamp":[{"line-clamp":["none",Rr,$c]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",jn,pe]}],"list-image":[{"list-image":["none",pe]}],"list-style-type":[{list:["none","disc","decimal",pe]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[f]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[f]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...G(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",jn,Jn]}],"underline-offset":[{"underline-offset":["auto",jn,pe]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",pe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",pe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[f]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...F(),IC]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",PC]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},RC]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[y]}],"gradient-via-pos":[{via:[y]}],"gradient-to-pos":[{to:[y]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[i]}],"rounded-s":[{"rounded-s":[i]}],"rounded-e":[{"rounded-e":[i]}],"rounded-t":[{"rounded-t":[i]}],"rounded-r":[{"rounded-r":[i]}],"rounded-b":[{"rounded-b":[i]}],"rounded-l":[{"rounded-l":[i]}],"rounded-ss":[{"rounded-ss":[i]}],"rounded-se":[{"rounded-se":[i]}],"rounded-ee":[{"rounded-ee":[i]}],"rounded-es":[{"rounded-es":[i]}],"rounded-tl":[{"rounded-tl":[i]}],"rounded-tr":[{"rounded-tr":[i]}],"rounded-br":[{"rounded-br":[i]}],"rounded-bl":[{"rounded-bl":[i]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[f]}],"border-style":[{border:[...G(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[f]}],"divide-style":[{divide:G()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-s":[{"border-s":[r]}],"border-color-e":[{"border-e":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...G()]}],"outline-offset":[{"outline-offset":[jn,pe]}],"outline-w":[{outline:[jn,Jn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:U()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[f]}],"ring-offset-w":[{"ring-offset":[jn,Jn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Qn,AC]}],"shadow-color":[{shadow:[bi]}],opacity:[{opacity:[f]}],"mix-blend":[{"mix-blend":[...Y(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Y()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[o]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",Qn,pe]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[p]}],invert:[{invert:[m]}],saturate:[{saturate:[x]}],sepia:[{sepia:[T]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[p]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[f]}],"backdrop-saturate":[{"backdrop-saturate":[x]}],"backdrop-sepia":[{"backdrop-sepia":[T]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",pe]}],duration:[{duration:_()}],ease:[{ease:["linear","in","out","in-out",pe]}],delay:[{delay:_()}],animate:[{animate:["none","spin","ping","pulse","bounce",pe]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[S]}],"scale-x":[{"scale-x":[S]}],"scale-y":[{"scale-y":[S]}],rotate:[{rotate:[vi,pe]}],"translate-x":[{"translate-x":[j]}],"translate-y":[{"translate-y":[j]}],"skew-x":[{"skew-x":[C]}],"skew-y":[{"skew-y":[C]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",pe]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",pe]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",pe]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[jn,Jn,$c]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},DC=wC(LC);function K(...e){return DC(lC(e))}const $a=1;function zC(e,t,n){return{version:$a,exportedAt:n.exportedAt??Date.now(),tool:{name:n.tool.name,version:n.tool.version},session:{id:e.id,name:e.name,agentCommand:e.agentCommand,clientName:e.clientName,startedAt:e.startedAt,endedAt:e.endedAt},messages:[...t]}}function FC(e,t=4){return JSON.stringify(e,null,t)+`
|
|
1766
|
-
`}class Ke extends Error{constructor(t){super(t),this.name="ExportParseError"}}function BC(e){let t;try{t=JSON.parse(e)}catch(l){throw new Ke(`invalid JSON: ${l instanceof Error?l.message:String(l)}`)}if(!ka(t))throw new Ke("expected an object at the top level");const n=t.version;if(n!==$a)throw new Ke(`unsupported export version ${String(n)} (expected ${$a})`);const o=t.exportedAt;if(typeof o!="number")throw new Ke("exportedAt must be a number");if(!ka(t.tool))throw new Ke("tool must be an object");const r=t.tool.name,i=t.tool.version;if(typeof r!="string")throw new Ke("tool.name must be a string");if(typeof i!="string")throw new Ke("tool.version must be a string");const s=t.session;if(!ka(s))throw new Ke("session must be an object");if(typeof s.id!="number")throw new Ke("session.id must be a number");if(typeof s.startedAt!="number")throw new Ke("session.startedAt must be a number");if(s.endedAt!==null&&typeof s.endedAt!="number")throw new Ke("session.endedAt must be a number or null");if(s.name!==null&&typeof s.name!="string")throw new Ke("session.name must be a string or null");if(s.agentCommand!==null&&typeof s.agentCommand!="string")throw new Ke("session.agentCommand must be a string or null");if(s.clientName!==null&&typeof s.clientName!="string")throw new Ke("session.clientName must be a string or null");if(!Array.isArray(t.messages))throw new Ke("messages must be an array");const a=t.messages.map((l,d)=>HC(l,d));return{version:$a,exportedAt:o,tool:{name:r,version:i},session:{id:s.id,name:s.name,agentCommand:s.agentCommand,clientName:s.clientName,startedAt:s.startedAt,endedAt:s.endedAt},messages:a}}function HC(e,t){if(!ka(e))throw new Ke(`messages[${t}] must be an object`);if(typeof e.seq!="number")throw new Ke(`messages[${t}].seq must be a number`);if(typeof e.timestamp!="number")throw new Ke(`messages[${t}].timestamp must be a number`);if(e.direction!=="editor-to-agent"&&e.direction!=="agent-to-editor")throw new Ke(`messages[${t}].direction must be 'editor-to-agent' or 'agent-to-editor'`);const n=e.kind;if(n!=="request"&&n!=="response"&&n!=="error"&&n!=="notification"&&n!=="unknown")throw new Ke(`messages[${t}].kind has unexpected value '${String(n)}'`);if(typeof e.raw!="string")throw new Ke(`messages[${t}].raw must be a string`);const o={seq:e.seq,timestamp:e.timestamp,direction:e.direction,kind:n,raw:e.raw,payload:e.payload===null?null:e.payload};return typeof e.method=="string"&&(o.method=e.method),(typeof e.rpcId=="string"||typeof e.rpcId=="number"||e.rpcId===null)&&(o.rpcId=e.rpcId),typeof e.parseError=="string"&&(o.parseError=e.parseError),o}function ka(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const Hb="<REDACTED>",VC=new Set(["authorization","proxy-authorization","proxy-authentication","x-api-key","x-api-token","x-auth-token","api-key","api_key","proxy_key","cookie","set-cookie"]);function WC(e){if(e.payload==null)return{redacted:e,count:0};const{value:t,count:n}=Fd(e.payload,{inProxyConfig:!1});if(n===0)return{redacted:e,count:0};const o=t;return{redacted:{...e,payload:o,raw:JSON.stringify(o)},count:n}}function Fd(e,t){if(Array.isArray(e)){let n=0;const o=new Array(e.length);for(let r=0;r<e.length;r++){const i=Fd(e[r],t);o[r]=i.value,n+=i.count}return{value:o,count:n}}if(e!==null&&typeof e=="object"){let n=0;const o={};for(const[r,i]of Object.entries(e)){if(typeof i=="string"&&VC.has(r.toLowerCase())){o[r]=Hb,n+=1;continue}if(t.inProxyConfig&&r==="headers"&&i!==null&&typeof i=="object"&&!Array.isArray(i)){const l=KC(i);o[r]=l.value,n+=l.count;continue}const s=t.inProxyConfig||r.toLowerCase()==="proxyconfig"?{inProxyConfig:!0}:t,a=Fd(i,s);o[r]=a.value,n+=a.count}return{value:o,count:n}}return{value:e,count:0}}function KC(e){let t=0;const n={};for(const[o,r]of Object.entries(e))typeof r=="string"?(n[o]=Hb,t+=1):n[o]=r;return{value:n,count:t}}function GC(e){let t=0,n=0;const o=e.messages.map(r=>{const i=WC(r);return i.count>0&&(t+=1,n+=i.count),i.redacted});return n===0?{export:e,messagesAffected:0,fieldsRedacted:0}:{export:{...e,messages:o},messagesAffected:t,fieldsRedacted:n}}const JC={name:"acp-devtools-ui",version:"0.5.0"};function QC(e,t=Date.now()){const n=e.id>0?String(e.id):"live",o=new Date(t).toISOString().slice(0,19).replace(/[:T]/g,"-");return`acp-session-${n}-${o}.json`}function YC(e,t,n=Date.now()){const o=zC(e,t,{tool:JC,exportedAt:n}),{export:r}=GC(o);return FC(r)}function Vb(e,t,n=Date.now()){const o=YC(e,t,n),r=new Blob([o],{type:"application/json"}),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=QC(e,n),s.rel="noopener",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i)}function XC({open:e,onClose:t}){const[n,o]=I.useState(""),[r,i]=I.useState(0),s=I.useRef(null);I.useEffect(()=>{if(!e)return;o(""),i(0);const d=setTimeout(()=>{var p;return(p=s.current)==null?void 0:p.focus()},0);return()=>clearTimeout(d)},[e]);const a=I.useMemo(()=>ZC(),[t,e]),l=I.useMemo(()=>eE(a,n),[a,n]);return I.useEffect(()=>{r>=l.length&&i(0)},[l.length,r]),I.useEffect(()=>{if(!e)return;const d=p=>{if(p.key==="Escape"){p.preventDefault(),t();return}if(p.key==="ArrowDown"){p.preventDefault(),i(m=>l.length===0?0:(m+1)%l.length);return}if(p.key==="ArrowUp"){p.preventDefault(),i(m=>l.length===0?0:(m-1+l.length)%l.length);return}if(p.key==="Enter"){p.preventDefault();const m=l[r];m&&(m.run(),t())}};return window.addEventListener("keydown",d,!0),()=>window.removeEventListener("keydown",d,!0)},[e,l,r,t]),e?c.jsx("div",{role:"dialog","aria-modal":"true",className:"fixed inset-0 z-[100] flex items-start justify-center bg-black/60 pt-[8vh] backdrop-blur-sm",onMouseDown:d=>{d.target===d.currentTarget&&t()},children:c.jsxs("div",{className:"w-[min(620px,92vw)] overflow-hidden rounded-md border border-line-strong bg-surface-elev shadow-2xl",children:[c.jsx("div",{className:"border-b border-line bg-surface-base/60",children:c.jsx("input",{ref:s,value:n,onChange:d=>{o(d.target.value),i(0)},placeholder:"type a command… esc closes ↑↓ navigate ↵ run",className:"w-full bg-transparent px-4 py-3 font-mono text-[13px] text-ink-primary placeholder-ink-muted outline-none"})}),c.jsxs("ul",{className:"max-h-[60vh] overflow-y-auto py-1",children:[l.length===0&&c.jsx("li",{className:"px-4 py-3 text-center font-mono text-[11px] uppercase tracking-widest text-ink-muted",children:"no match"}),l.map((d,p)=>{const m=p===r,v=l[p-1],h=!v||v.section!==d.section;return c.jsxs("li",{children:[h&&c.jsx("div",{className:"px-4 pt-2 pb-1 font-mono text-[9px] uppercase tracking-widest text-ink-muted",children:d.section}),c.jsxs("button",{type:"button",onClick:()=>{d.run(),t()},onMouseEnter:()=>i(p),className:K("flex w-full items-center justify-between px-4 py-1.5 text-left font-mono text-[12px] transition-colors",m?"bg-accent-out/10 text-ink-primary":"text-ink-secondary hover:bg-surface-rowHover hover:text-ink-primary"),children:[c.jsx("span",{className:"truncate",children:d.label}),d.hint&&c.jsx("span",{className:"ml-3 shrink-0 rounded-sm border border-line px-1.5 py-0.5 text-[10px] uppercase tracking-widest text-ink-muted",children:d.hint})]})]},d.id)})]})]})}):null}function ZC(e){const t=ne.getState(),n=at.getState(),o=[];o.push({id:"session.import",label:"Import session JSON from disk…",section:"session",run:()=>{const r=document.createElement("input");r.type="file",r.accept="application/json,.json",r.addEventListener("change",()=>{var s;const i=(s=r.files)==null?void 0:s[0];i&&(async()=>{try{const a=await Nv(i);await Xu(),n.setSelected(tl(a.id))}catch(a){const l=a instanceof Error?a.message:String(a);window.alert(`Import failed: ${l}`)}})()}),r.click()}}),t.session!==null&&t.messages.length>0&&o.push({id:"session.export",label:"Export current session as JSON (redacted — auth tokens hidden)",section:"session",run:()=>Vb(t.session,t.messages)}),o.push({id:"view.deselect",label:"Deselect message",hint:"esc",section:"view",run:()=>t.select(null)}),o.push({id:"view.toggle-streams",label:t.filters.showStreams?"Hide streaming chunks":"Show streaming chunks",section:"filter",run:()=>t.toggleStreams()}),o.push({id:"filter.reset",label:"Reset all filters",section:"filter",run:()=>{const r={directions:new Set(cs),kinds:new Set(ds),showStreams:!0,search:""};ne.setState({filters:r})}});for(const r of cs){const i=t.filters.directions.has(r);o.push({id:`filter.dir.${r}`,label:`${i?"Hide":"Show"} ${r==="editor-to-agent"?"editor → agent":"agent → editor"} messages`,section:"filter",run:()=>t.toggleDirection(r)})}for(const r of ds){const i=t.filters.kinds.has(r);o.push({id:`filter.kind.${r}`,label:`${i?"Hide":"Show"} ${r} kind`,section:"filter",run:()=>t.toggleKind(r)})}if(t.selectedSeq!==null){const r=t.messages.find(i=>i.seq===t.selectedSeq);r&&(o.push({id:"copy.raw",label:`Copy selected message raw line (seq ${r.seq})`,section:"copy",run:()=>{navigator.clipboard.writeText(r.raw)}}),r.payload&&o.push({id:"copy.payload",label:`Copy selected payload as JSON (seq ${r.seq})`,section:"copy",run:()=>{navigator.clipboard.writeText(JSON.stringify(r.payload,null,2))}}))}for(const r of n.captures)o.push({id:`switch.live.${r.url}`,label:`Switch to live: ${nf(r)}`,section:"switch",run:()=>n.setSelected(r.url)});for(const r of n.savedSessions.slice(0,25)){const i=Rt(r.agent_command??""),s=r.name??(r.client_name?`${r.client_name} · ${i}`:i);o.push({id:`switch.saved.${r.id}`,label:`Open saved #${r.id} · ${s} (${r.message_count} msg)`,section:"switch",run:()=>n.setSelected(tl(r.id))})}return o}function eE(e,t){const n=t.trim().toLowerCase();if(n==="")return e;const o=n.split(/\s+/);return e.filter(r=>{const i=r.label.toLowerCase();return o.every(s=>i.includes(s))})}const tE={idle:"idle",connecting:"connecting",open:"restoring view",closed:"disconnected",error:"connection error"};function nE({status:e,url:t,lastError:n}){const o=tE[e],r=e==="connecting"||e==="open";return c.jsx("div",{className:"flex h-full w-full items-center justify-center bg-surface-base",children:c.jsxs("div",{className:"flex items-center gap-3 font-mono text-[11px] uppercase tracking-widest text-ink-muted",children:[c.jsx("span",{"aria-hidden":!0,className:K("inline-block h-2 w-2 rounded-full",r?"animate-pulse-soft bg-accent-out":"bg-ink-dim",e==="error"&&"bg-accent-error")}),c.jsx("span",{children:o}),c.jsx("span",{className:"text-ink-dim",children:"·"}),c.jsx("span",{className:"lowercase tracking-normal text-ink-secondary",children:t}),n&&e==="error"&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"text-ink-dim",children:"·"}),c.jsx("span",{className:"lowercase tracking-normal text-accent-error",children:n})]})]})})}function oE(e){const t=e.$defs??{},n=new Map;for(const[y,b]of Object.entries(t)){const g=b["x-method"];if(typeof g!="string")continue;let f=n.get(g);f||(f={},n.set(g,f)),y.endsWith("Request")?f.requestDef=y:y.endsWith("Response")?f.responseDef=y:y.endsWith("Notification")&&(f.notificationDef=y)}function o(y,b){var g,f,u;switch(y.kind){case"request":{const x=y.method;return x?((g=n.get(x))==null?void 0:g.requestDef)??null:null}case"notification":{const x=y.method;return x?((f=n.get(x))==null?void 0:f.notificationDef)??null:null}case"response":case"error":return b?((u=n.get(b))==null?void 0:u.responseDef)??null:null;default:return null}}function r(y){return y==="request"||y==="notification"?"params":y==="response"?"result":y==="error"?"error":null}function i(y){return typeof y=="object"&&y!==null&&!Array.isArray(y)}function s(y,b){const g=y.properties;if(!g)return!0;for(const[f,u]of Object.entries(g))if(!(!u||typeof u!="object")){if("const"in u){if(b[f]!==u.const)return!1}else if(Array.isArray(u.enum)&&!u.enum.includes(b[f]))return!1}return!0}function a(y,b){const g=y.type;if(typeof g=="string"){if(g==="null")return b===null;if(g==="string")return typeof b=="string";if(g==="boolean")return typeof b=="boolean";if(g==="number"||g==="integer")return typeof b=="number";if(g==="array")return Array.isArray(b);if(g==="object")return i(b)&&s(y,b)}return y.$ref||y.properties||y.allOf?i(b)&&s(y,b):!1}function l(y,b=void 0){if(!y)return null;if(y.$ref){const g=y.$ref.replace(/^#\/\$defs\//,""),f=t[g];return f?l(f,b):null}if(y.allOf&&y.allOf.length>0){const g={properties:{}};for(const f of y.allOf){const u=l(f,b);u!=null&&u.properties&&(g.properties={...g.properties,...u.properties}),u!=null&&u.type&&!g.type&&(g.type=u.type),u!=null&&u.items&&!g.items&&(g.items=u.items)}return y.description&&!g.description&&(g.description=y.description),g}if(y.anyOf||y.oneOf){const g=y.anyOf??y.oneOf;if(b!==void 0){for(const f of g)if(f.type!=="null"&&a(f,b))return l(f,b)}for(const f of g){if(f.type==="null")continue;const u=l(f,b);if(u)return u}return null}return y}function d(y,b){let g=y;for(const f of b){if(g==null)return;if(Array.isArray(g)&&/^\d+$/.test(f))g=g[Number(f)];else if(typeof g=="object")g=g[f];else return}return g}function p(y){if(!y)return;if(y.$ref)return y.$ref.replace(/^#\/\$defs\//,"");const b=y.type;if(typeof b=="string")return b;if(Array.isArray(b))return b.find(f=>f!=="null")}function m(y,b){const g=t[y];return{typeName:y,typeDescription:(g==null?void 0:g.description)??null,resolve(f){var A;if(f.length===0)return{inSpec:!0,isExtension:!1,description:g==null?void 0:g.description,type:y};const u=f.slice(1);if(u.length===0)return null;let x=!1,S=g??null;for(let E=0;E<u.length;E++){const q=u[E];q==="_meta"&&(x=!0);const z=/^\d+$/.test(q),U=d(b,f.slice(0,E+1));if(S=l(S,U),!S)return null;if(z){const F=d(b,f.slice(0,E+2));S=l(S.items,F);continue}if(x&&q!=="_meta")return{inSpec:!1,isExtension:!0};const L=(A=S.properties)==null?void 0:A[q];if(!L)return{inSpec:!1,isExtension:x};S=L}const T=d(b,f),C=l(S,T),$={inSpec:!0,isExtension:x};S!=null&&S.description?$.description=S.description:C!=null&&C.description&&($.description=C.description);const j=p(S??null)??p(C);return j&&($.type=j),C!=null&&C.enum&&($.enumValues=C.enum),$}}}function v(y,b={}){const g=o(y,b.pairedMethod);return!g||!r(y.kind)?null:m(g,y.payload)}function h(){return[...n.keys()].sort()}return{resolveForMessage:v,knownMethods:h}}const rE=oE(Rv),iE=rE.resolveForMessage,sE={info:"border-line bg-surface-base text-ink-primary",warn:"border-accent-warn/40 bg-accent-warn/10 text-ink-primary",error:"border-accent-error/40 bg-accent-error/10 text-ink-primary"};function Ar({label:e,children:t,delay:n=60,tone:o="info",className:r,focusable:i=!1}){const s=I.useRef(null),a=I.useRef(null),[l,d]=I.useState(null),p=l!==null,m=()=>{const y=s.current;if(!y)return null;const b=y.getBoundingClientRect(),f=window.innerHeight-b.bottom<120;return{top:f?b.top-8:b.bottom+8,left:Math.min(b.left,window.innerWidth-380),flipUp:f}},v=()=>{a.current!==null&&clearTimeout(a.current),a.current=setTimeout(()=>{const y=m();y&&d(y)},n)},h=()=>{a.current!==null&&(clearTimeout(a.current),a.current=null),d(null)};return I.useEffect(()=>()=>{a.current!==null&&clearTimeout(a.current)},[]),I.useEffect(()=>{if(!p)return;const y=()=>h();return window.addEventListener("scroll",y,!0),()=>window.removeEventListener("scroll",y,!0)},[p]),c.jsxs(c.Fragment,{children:[c.jsx("span",{ref:s,className:K("cursor-help",r),onMouseEnter:v,onMouseLeave:h,...i?{onFocus:v,onBlur:h,tabIndex:0}:{},children:t}),l&&Wu.createPortal(c.jsx("div",{role:"tooltip",className:K("pointer-events-none fixed z-[200] max-w-[360px] rounded-sm border px-3 py-2 font-mono text-[11px] leading-snug shadow-lg backdrop-blur-sm",sE[o]),style:{top:l.flipUp?void 0:l.top,bottom:l.flipUp?window.innerHeight-l.top:void 0,left:l.left},children:e}),document.body)]})}const aE=new Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1});function Ta(e){return aE.format(e)}function fs(e){const t=e%1e3;return`${Ta(e)}.${String(t).padStart(3,"0")}`}const lE=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function cE(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function _a(e,t=Date.now()){const n=new Date(e),o=new Date(t);if(cE(n,o))return Ta(e);if(n.getFullYear()===o.getFullYear())return`${lE[n.getMonth()]} ${n.getDate()} ${Ta(e)}`;const r=String(n.getMonth()+1).padStart(2,"0"),i=String(n.getDate()).padStart(2,"0");return`${n.getFullYear()}-${r}-${i} ${Ta(e)}`}function Ul(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}function Vt(e){return e<1?"<1ms":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`}function dE(e){return e<250?"ok":e<1500?"warn":"error"}function Wb(e){return e==="editor-to-agent"?"OUT":"IN"}function Kb(e){return e==="editor-to-agent"?"→":"←"}const uE=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function pE(e){const t=String(e);return uE.test(t)?t.slice(0,8)+"…":t.length>12?t.slice(0,10)+"…":t}function Mr(e,t=Date.now()){const n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return`${n}s`;const o=Math.floor(n/60);if(o<60)return`${o}m`;const r=Math.floor(o/60);if(r<24){const a=o%60;return`${r}h${String(a).padStart(2,"0")}m`}const i=Math.floor(r/24),s=r%24;return`${i}d${String(s).padStart(2,"0")}h`}function bh(e,t){if(e.length===0)return 0;const n=t/100*(e.length-1),o=Math.floor(n),r=Math.ceil(n),i=e[o],s=e[r];return i===void 0||s===void 0?i??0:o===r?i:i+(s-i)*(n-o)}const fE=6;function xh(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mE(e){if(e===null)return"text-accent-error";switch(typeof e){case"string":return"text-accent-out";case"number":return"text-accent-in";case"boolean":return"text-accent-note";default:return"text-ink-secondary"}}function hE(e){return e===null?"null":typeof e=="string"?JSON.stringify(e):String(e)}function al({value:e,name:t,depth:n=0,defaultExpanded:o,path:r=[],getSpec:i}){const s=xh(e)||Array.isArray(e),a=xh(e)?Object.keys(e).length:Array.isArray(e)?e.length:0,l=o??(n<2&&a<=fE),[d,p]=I.useState(l),m=t!==void 0&&i?i(r):null,v=t!==void 0?c.jsx(yE,{name:t,spec:m}):null;if(!s)return c.jsxs("div",{className:"flex items-baseline gap-2 font-mono text-xs leading-relaxed",children:[v,c.jsx("span",{className:K("whitespace-pre-wrap break-all",mE(e)),children:hE(e)})]});const h=Array.isArray(e),y=h?"[":"{",b=h?"]":"}";return c.jsxs("div",{className:"font-mono text-xs leading-relaxed",children:[c.jsxs("button",{type:"button",onClick:()=>p(g=>!g),className:"group/expand flex items-baseline gap-2 text-left hover:text-ink-primary",children:[c.jsx("span",{"aria-hidden":!0,className:K("inline-block w-3 text-ink-muted transition-transform",d?"rotate-90":""),children:"▸"}),v,c.jsx("span",{className:"text-ink-secondary",children:y}),!d&&c.jsxs("span",{className:"text-ink-muted",children:[a," ",h?"items":"keys"]}),!d&&c.jsx("span",{className:"text-ink-secondary",children:b})]}),d&&c.jsxs("div",{className:"ml-3 border-l border-line-grid pl-3",children:[h?e.map((g,f)=>c.jsx(al,{value:g,name:String(f),depth:n+1,path:[...r,String(f)],...i?{getSpec:i}:{}},f)):Object.entries(e).map(([g,f])=>c.jsx(al,{value:f,name:g,depth:n+1,path:[...r,g],...i?{getSpec:i}:{}},g)),c.jsx("div",{className:"text-ink-secondary",children:b})]})]})}function yE({name:e,spec:t}){const n=/^\d+$/.test(e),o=(t==null?void 0:t.description)??null;return c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:K(n?"text-ink-muted":"text-ink-secondary"),children:n?`${e}:`:`"${e}":`}),t&&!t.inSpec&&c.jsx(wh,{tone:t.isExtension?"extension":"unknown",explanation:t.isExtension?"Extension — not declared in the ACP spec; contents are implementation-defined.":"Unknown — this field is not declared in the ACP schema for this message."}),(t==null?void 0:t.inSpec)&&t.isExtension&&c.jsx(wh,{tone:"extension",explanation:"Extension — _meta payload is implementation-defined per ACP spec."}),o&&c.jsx(Ar,{label:c.jsx(gE,{text:o,type:t==null?void 0:t.type,enumValues:t==null?void 0:t.enumValues}),tone:"info",className:"text-ink-muted hover:text-ink-primary",focusable:!0,children:c.jsx("span",{"aria-label":`spec: ${o.split(`
|
|
1767
|
-
`)[0]}`,children:"ⓘ"})})]})}function gE({text:e,type:t,enumValues:n}){return c.jsxs("div",{className:"space-y-1.5",children:[t&&c.jsx("div",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:c.jsx("span",{className:"text-accent-info",children:t})}),c.jsx("div",{className:"whitespace-pre-wrap font-sans text-[12px] leading-snug text-ink-secondary",children:e}),n&&n.length>0&&c.jsxs("div",{className:"font-mono text-[10px] text-ink-muted",children:["enum: ",n.map(o=>JSON.stringify(o)).join(" · ")]})]})}function wh({tone:e,explanation:t}){const n=e==="extension"?"border-accent-warn/40 bg-accent-warn/10 text-accent-warn":"border-accent-error/40 bg-accent-error/10 text-accent-error";return c.jsx(Ar,{label:c.jsx("span",{className:"font-sans",children:t}),tone:e==="extension"?"warn":"error",focusable:!0,children:c.jsx("span",{className:K("inline-flex items-center rounded-sm border px-1 font-mono text-[9px] uppercase tracking-widest",n),children:e==="extension"?"⚠ ext":"⚠ unknown"})})}function vE({message:e,latencyMs:t,pairedRequest:n,onJumpToPaired:o,validation:r}){var d;const i=ne(p=>p.detailTab),s=ne(p=>p.setDetailTab),a=I.useMemo(()=>{if(!e)return null;const p=(n==null?void 0:n.method)??void 0;return iE(e,p?{pairedMethod:p}:void 0)},[e,n]);if(!e)return c.jsx("div",{className:"flex h-full items-center justify-center bg-surface-elev/40",children:c.jsx("div",{className:"text-center font-mono text-xs uppercase tracking-widest text-ink-muted",children:"select a message to inspect"})});const l=e.direction==="editor-to-agent";return c.jsxs("div",{className:"flex h-full flex-col bg-surface-elev/30",children:[c.jsxs("header",{className:"border-b border-line bg-surface-elev px-5 py-3",children:[c.jsxs("div",{className:"flex items-baseline gap-3",children:[c.jsxs("span",{className:K("font-mono text-[11px] font-semibold tracking-widest",l?"text-accent-out":"text-accent-in"),children:[Kb(e.direction)," ",Wb(e.direction)]}),c.jsxs("span",{className:"font-mono text-xs text-ink-muted",children:["seq ",e.seq]}),c.jsx("span",{className:"font-mono text-xs text-ink-muted",children:fs(e.timestamp)})]}),c.jsx("h2",{className:"mt-1 truncate font-display text-lg uppercase tracking-tight text-ink-primary",children:e.method??e.kind}),c.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-1 font-mono text-[11px] text-ink-secondary",children:[c.jsx($E,{message:e,resolver:a}),e.rpcId!==void 0&&e.rpcId!==null&&c.jsx(ja,{label:"id",value:String(e.rpcId)}),c.jsx(ja,{label:"bytes",value:Ul(e.raw.length)}),t!==void 0&&c.jsx(ja,{label:"latency",value:`+${Vt(t)}`,accent:!0}),n&&c.jsxs("button",{type:"button",onClick:o?()=>o(n.seq):void 0,className:"inline-flex items-baseline gap-1 transition-colors hover:text-ink-primary",title:"jump to paired message",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:"paired"}),c.jsxs("span",{className:"text-ink-primary underline decoration-line-strong decoration-dotted underline-offset-4",children:["seq ",n.seq," ",n.method??""]})]})]})]}),c.jsxs("nav",{className:"flex gap-1 border-b border-line bg-surface-elev/70 px-4",children:[c.jsx(na,{active:i==="tree",onClick:()=>s("tree"),children:"Tree"}),c.jsx(na,{active:i==="raw",onClick:()=>s("raw"),children:"Raw"}),c.jsx(na,{active:i==="meta",onClick:()=>s("meta"),children:"Meta"}),c.jsx(na,{active:i==="spec",onClick:()=>s("spec"),badge:r&&!r.skipped&&!r.valid?r.errors.length:void 0,advisoryBadge:r&&!r.skipped&&((d=r.advisories)!=null&&d.length)?r.advisories.length:void 0,children:"Spec"})]}),c.jsxs("div",{className:"flex-1 overflow-auto px-5 py-4",children:[i==="tree"&&c.jsx(xE,{message:e,resolver:a}),i==="raw"&&c.jsx(wE,{raw:e.raw}),i==="meta"&&c.jsx(SE,{message:e}),i==="spec"&&c.jsx(bE,{validation:r})]})]})}function bE({validation:e}){if(!e)return c.jsx("div",{className:"font-mono text-[11px] text-ink-muted",children:"no validation result yet"});if(e.skipped){const t={"parse-error":"this frame failed to parse as JSON-RPC — already surfaced in the Tree tab as a parse error","no-method":"no method available for validation (e.g. response without a paired request)","unknown-method":"the ACP spec has no schema for this method — likely an extension or a future addition","no-schema-for-kind":"the spec has no schema for this kind of frame for this method (e.g. notification-only method)","wrong-kind":"no per-method ACP schema applies (e.g. JSON-RPC error envelope, parse failure)"};return c.jsxs("div",{className:"space-y-2 font-mono text-[11px]",children:[c.jsx("div",{className:"text-ink-muted uppercase tracking-widest text-[10px]",children:"not validated"}),c.jsx("div",{className:"text-ink-secondary",children:t[e.skipped]})]})}return e.valid?c.jsxs("div",{className:"space-y-3 font-mono text-[11px]",children:[c.jsxs("div",{className:"inline-flex items-baseline gap-2",children:[c.jsx("span",{className:"rounded-sm border border-accent-ok/40 bg-accent-ok/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-widest text-accent-ok",children:"✓ conforms"}),c.jsxs("span",{className:"text-ink-muted",children:["matched ",c.jsx("span",{className:"text-ink-secondary",children:e.schemaName})," ","from the ACP schema"]})]}),c.jsx(Sh,{advisories:e.advisories})]}):c.jsxs("div",{className:"space-y-3 font-mono text-[11px]",children:[c.jsxs("div",{className:"inline-flex items-baseline gap-2",children:[c.jsxs("span",{className:"rounded-sm border border-accent-error/40 bg-accent-error/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-widest text-accent-error",children:["⚠ ",e.errors.length," violation",e.errors.length===1?"":"s"]}),c.jsxs("span",{className:"text-ink-muted",children:["against ",c.jsx("span",{className:"text-ink-secondary",children:e.schemaName})]})]}),c.jsx("ul",{className:"space-y-1.5",children:e.errors.map((t,n)=>c.jsxs("li",{className:"rounded-sm border border-accent-error/25 bg-accent-error/[0.04] px-2 py-1.5",children:[c.jsxs("div",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:[t.keyword??"error"," · ",t.path==="/"?"(root)":t.path]}),c.jsx("div",{className:"mt-0.5 text-ink-primary",children:t.message})]},`${t.path}-${t.keyword}-${n}`))}),c.jsx(Sh,{advisories:e.advisories})]})}function Sh({advisories:e}){return!e||e.length===0?null:c.jsxs("div",{className:"space-y-1.5",children:[c.jsxs("div",{className:"inline-flex items-baseline gap-2",children:[c.jsxs("span",{className:"rounded-sm border border-accent-warn/40 bg-accent-warn/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-widest text-accent-warn",children:["⚠ ",e.length," advisor",e.length===1?"y":"ies"]}),c.jsx("span",{className:"text-ink-muted",children:"valid today — required in a future ACP version"})]}),c.jsx("ul",{className:"space-y-1.5",children:e.map((t,n)=>c.jsxs("li",{className:"rounded-sm border border-accent-warn/25 bg-accent-warn/[0.04] px-2 py-1.5",children:[c.jsxs("div",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:["soon-required · ",t.path]}),c.jsx("div",{className:"mt-0.5 text-ink-primary",children:t.message})]},`${t.path}-${n}`))})]})}function xE({message:e,resolver:t}){const n=I.useMemo(()=>{if(t)return o=>t.resolve(o)},[t]);return e.payload===null?c.jsxs("div",{className:"space-y-2 font-mono text-xs",children:[c.jsxs("div",{className:"text-accent-error",children:["parse error: ",e.parseError??"unknown"]}),c.jsx("pre",{className:"whitespace-pre-wrap break-all text-ink-secondary",children:e.raw})]}):c.jsx(al,{value:e.payload,defaultExpanded:!0,...n?{getSpec:n}:{}})}function wE({raw:e}){const[t,n]=I.useState(!1),o=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)}catch{}};return c.jsxs("div",{className:"group relative",children:[c.jsx("button",{type:"button",onClick:o,"aria-label":"Copy raw frame to clipboard",title:"Copy raw frame to clipboard",className:K("absolute right-0 top-0 inline-flex h-6 items-center rounded-sm border bg-surface-elev/70 px-2 font-mono text-[10px] uppercase tracking-widest opacity-0 transition-[opacity,background-color,border-color,color] duration-150","group-hover:opacity-100 focus-visible:opacity-100",t?"border-accent-ok/60 bg-surface-elev text-accent-ok opacity-100":"border-line text-ink-secondary hover:border-accent-info/70 hover:bg-surface-rowHover hover:text-accent-info"),children:t?"✓ copied":"copy"}),c.jsx("pre",{className:"whitespace-pre-wrap break-all font-mono text-[11px] leading-relaxed text-ink-primary",children:e})]})}function SE({message:e}){const t=[["seq",String(e.seq)],["direction",e.direction],["kind",e.kind],["method",e.method??"(none)"],["rpcId",String(e.rpcId??"(none)")],["timestamp",`${fs(e.timestamp)} (${e.timestamp})`],["raw size",Ul(e.raw.length)],["parse error",e.parseError??"(none)"]];return c.jsx("dl",{className:"grid grid-cols-[110px_1fr] gap-x-4 gap-y-1 font-mono text-[12px]",children:t.map(([n,o])=>c.jsxs("div",{className:"contents",children:[c.jsx("dt",{className:"text-ink-muted uppercase tracking-widest text-[10px]",children:n}),c.jsx("dd",{className:"text-ink-primary",children:o})]},n))})}function $E({message:e,resolver:t}){const n=c.jsx(ja,{label:"kind",value:e.kind});return t!=null&&t.typeDescription?c.jsx(Ar,{label:c.jsx("div",{className:"whitespace-pre-wrap font-sans text-[12px] leading-snug text-ink-secondary",children:t.typeDescription}),tone:"info",children:n}):n}function ja({label:e,value:t,accent:n}){return c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("span",{className:K(n?"text-accent-warn":"text-ink-primary"),children:t})]})}function na({children:e,active:t,onClick:n,badge:o,advisoryBadge:r,tab:i}){return c.jsxs("button",{type:"button",onClick:n,className:K("relative flex items-baseline gap-1.5 px-4 py-2 font-mono text-[11px] uppercase tracking-widest transition-colors",t?"text-ink-primary":"text-ink-muted hover:text-ink-secondary"),children:[c.jsx("span",{children:e}),o!==void 0&&c.jsx("span",{className:"rounded-sm border border-accent-error/40 bg-accent-error/10 px-1 text-[9px] font-semibold text-accent-error",children:o}),r!==void 0&&c.jsx("span",{className:"rounded-sm border border-accent-warn/40 bg-accent-warn/10 px-1 text-[9px] font-semibold text-accent-warn",children:r}),t&&c.jsx("span",{className:"absolute inset-x-2 -bottom-px h-px bg-accent-out","aria-hidden":!0})]})}function rf(e){const t=new Map,n=new Map;for(const o of e){if(o.rpcId===void 0||o.rpcId===null)continue;const r=String(o.rpcId);if(o.kind==="request")t.set(r,o);else if(o.kind==="response"||o.kind==="error"){const i=t.get(r);if(!i)continue;const s=Math.max(0,o.timestamp-i.timestamp);n.set(i.seq,{pairSeq:o.seq,latencyMs:s}),n.set(o.seq,{pairSeq:i.seq,latencyMs:s})}}return n}function Bd(e){const t=rf(e),n=new Map,o=new Map;for(const i of e)if(i.method){if(i.kind==="request"){let s=n.get(i.method);s||(s={count:0,latencies:[]},n.set(i.method,s)),s.count+=1;const a=t.get(i.seq);a&&s.latencies.push(a.latencyMs)}else if(i.kind==="notification"){let s=o.get(i.method);s||(s={count:0,latencies:[]},o.set(i.method,s)),s.count+=1}}const r=[];for(const[i,s]of n)s.latencies.sort((a,l)=>a-l),r.push({method:i,kind:"request",count:s.count,sampleSize:s.latencies.length,p50:s.latencies.length?$h(s.latencies,50):null,p99:s.latencies.length?$h(s.latencies,99):null,max:s.latencies.length?s.latencies[s.latencies.length-1]:null,totalLatencyMs:s.latencies.length?s.latencies.reduce((a,l)=>a+l,0):null,latencies:s.latencies});for(const[i,s]of o)r.push({method:i,kind:"notification",count:s.count,sampleSize:0,p50:null,p99:null,max:null,totalLatencyMs:null,latencies:[]});return r.sort((i,s)=>s.count-i.count||(i.kind==="request"?-1:1)),r}function $h(e,t){if(e.length===0)return 0;const n=t/100*(e.length-1),o=Math.floor(n),r=Math.ceil(n),i=e[o],s=e[r];return i===void 0||s===void 0?i??0:o===r?i:i+(s-i)*(n-o)}const Gb=100;function kE(e,t,n={}){const o=n.maxChangesPerRow??Gb,r=kh(e),i=kh(t),s=TE(r,i),a=[],l={equal:0,changed:0,added:0,removed:0,total:0};for(const d of s)if(d.kind==="match"){const p=e[d.i],m=t[d.j],v=_E(p,m,o),h=v.length===0?"equal":"changed";a.push({op:h,a:p,b:m,signature:r[d.i],changes:v}),h==="equal"?l.equal+=1:l.changed+=1}else if(d.kind==="removed"){const p=e[d.i];a.push({op:"removed",a:p,b:null,signature:r[d.i],changes:[]}),l.removed+=1}else{const p=t[d.j];a.push({op:"added",a:null,b:p,signature:i[d.j],changes:[]}),l.added+=1}return l.total=a.length,{rows:a,summary:l}}function kh(e){const t=rf(e),n=new Map;for(const o of e)o.method&&n.set(o.seq,o.method);return e.map(o=>{let r=o.method??"";if(!r&&(o.kind==="response"||o.kind==="error")){const i=t.get(o.seq);i&&(r=n.get(i.pairSeq)??"")}return`${o.direction}|${o.kind}|${r}`})}function TE(e,t){const n=e.length,o=t.length,r=o+1,i=new Uint32Array((n+1)*r);for(let d=n-1;d>=0;d--)for(let p=o-1;p>=0;p--){const m=d*r+p;if(e[d]===t[p])i[m]=i[(d+1)*r+(p+1)]+1;else{const v=i[(d+1)*r+p],h=i[d*r+(p+1)];i[m]=v>=h?v:h}}const s=[];let a=0,l=0;for(;a<n&&l<o;)e[a]===t[l]?(s.push({kind:"match",i:a,j:l}),a++,l++):i[(a+1)*r+l]>=i[a*r+(l+1)]?(s.push({kind:"removed",i:a}),a++):(s.push({kind:"added",j:l}),l++);for(;a<n;)s.push({kind:"removed",i:a}),a++;for(;l<o;)s.push({kind:"added",j:l}),l++;return s}function Th(e){const t=e.payload;if(t===null||typeof t!="object")return{raw:e.raw,parseError:e.parseError??null};const n=t,o={};return"method"in n&&(o.method=n.method),"params"in n&&(o.params=n.params),"result"in n&&(o.result=n.result),"error"in n&&(o.error=n.error),o}function _E(e,t,n){const o=[];return ll(Th(e),Th(t),"",o,n),o}function jE(e,t,n=Gb){const o=[];return ll(e,t,"",o,n),o}function _h(e){return Array.isArray(e)?"array":e!==null&&typeof e=="object"?"object":"leaf"}function ll(e,t,n,o,r){if(o.length>=r||Object.is(e,t))return;const i=_h(e),s=_h(t);if(i!==s||i==="leaf"){if(NE(e,t))return;o.push({path:n||"$",kind:"change",a:e,b:t});return}if(i==="array"){const p=e,m=t,v=Math.max(p.length,m.length);for(let h=0;h<v;h++){if(o.length>=r)return;const y=`${n}[${h}]`,b=h<p.length,g=h<m.length;b&&g?ll(p[h],m[h],y,o,r):g?o.push({path:y,kind:"add",b:m[h]}):o.push({path:y,kind:"remove",a:p[h]})}return}const a=e,l=t,d=[...new Set([...Object.keys(a),...Object.keys(l)])].sort();for(const p of d){if(o.length>=r)return;const m=n?`${n}.${p}`:p,v=p in a,h=p in l;v&&h?ll(a[p],l[p],m,o,r):h?o.push({path:m,kind:"add",b:l[p]}):o.push({path:m,kind:"remove",a:a[p]})}}function NE(e,t){return Object.is(e,t)}function Ne(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function xn(e){return typeof e=="string"&&e.length>0?e:null}function Ao(e){return e===!0}function CE(e){for(const t of e)if(t.kind==="request"&&t.method==="initialize"&&t.direction==="editor-to-agent")return t;return null}function EE(e,t){if(t==null)return null;for(const n of e)if(n.kind==="response"&&n.direction==="agent-to-editor"&&n.rpcId===t)return n;return null}function PE(e){var r,i;const t={name:null,title:null,version:null,platform:null};if(!e)return t;const n=Ne((r=Ne(e.payload))==null?void 0:r.params),o=Ne(n==null?void 0:n.clientInfo);return o?{name:xn(o.name),title:xn(o.title),version:xn(o.version),platform:xn((i=Ne(o._meta))==null?void 0:i.platform)}:t}function IE(e){var s,a;const t={fsReadTextFile:!1,fsWriteTextFile:!1,terminal:!1,authTerminal:!1,authGateway:!1};if(!e)return t;const n=Ne((s=Ne(e.payload))==null?void 0:s.params),o=Ne(n==null?void 0:n.clientCapabilities);if(!o)return t;const r=Ne(o.fs),i=Ne(o.auth);return{fsReadTextFile:Ao(r==null?void 0:r.readTextFile),fsWriteTextFile:Ao(r==null?void 0:r.writeTextFile),terminal:Ao(o.terminal),authTerminal:Ao(i==null?void 0:i.terminal),authGateway:Ao((a=Ne(i==null?void 0:i._meta))==null?void 0:a.gateway)}}function OE(e){var i;const t={name:null,version:null,authMethods:0};if(!e)return t;const n=Ne((i=Ne(e.payload))==null?void 0:i.result);if(!n)return t;const o=Ne(n.agentInfo),r=n.authMethods;return{name:xn(o==null?void 0:o.name),version:xn(o==null?void 0:o.version),authMethods:Array.isArray(r)?r.length:0}}function RE(e){var r;const t={prompt:!1,loadSession:!1};if(!e)return t;const n=Ne((r=Ne(e.payload))==null?void 0:r.result),o=Ne(n==null?void 0:n.agentCapabilities);return o?{prompt:Ao(o.promptCapabilities)||o.promptCapabilities!==void 0,loadSession:Ao(o.loadSession)}:t}function AE(e,t){const n=t??e;if(!n)return null;const o=Ne(n.payload),r=Ne(o==null?void 0:o.result)??Ne(o==null?void 0:o.params),i=r==null?void 0:r.protocolVersion;return typeof i=="number"?i:null}function ME(e){var s,a;let t=null,n=0,o=null,r=0,i=[];for(const l of e){l.direction!=="editor-to-agent"&&l.kind;const d=Ne((s=Ne(l.payload))==null?void 0:s.params);if(d){if(l.method==="session/set_mode"){const p=xn(d.modeId);p!==null&&(t!==null&&t!==p&&(n+=1),t=p)}else if(l.method==="session/set_model"){const p=xn(d.modelId);p!==null&&(o!==null&&o!==p&&(r+=1),o=p)}else if(l.method==="session/update"){const p=Ne(d.update);if((p==null?void 0:p.sessionUpdate)==="available_commands_update"){const m=p.availableCommands;if(Array.isArray(m)){const v=[];for(const h of m){const y=xn((a=Ne(h))==null?void 0:a.name);y!==null&&v.push(y)}v.length>0&&(i=v)}}else if((p==null?void 0:p.sessionUpdate)==="current_mode_update"){const m=xn(p.currentModeId);m!==null&&(t!==null&&t!==m&&(n+=1),t=m)}}}}return{currentMode:t,modeChanges:n,currentModel:o,modelChanges:r,availableCommands:i}}function qE(e){if(!e)return{jetbrainsProxyConfig:null};const t=Ne(e.payload),n=Ne(t==null?void 0:t.params),o=Ne(n==null?void 0:n._meta);return{jetbrainsProxyConfig:(o==null?void 0:o.proxyConfig)??null}}function cl(e){const t=CE(e),n=EE(e,t==null?void 0:t.rpcId);return{protocolVersion:AE(t,n),client:PE(t),agent:OE(n),clientCapabilities:IE(t),agentCapabilities:RE(n),runtime:ME(e),extensions:qE(t)}}function jh(e){return{protocolVersion:e.protocolVersion,client:e.client,agent:e.agent,clientCapabilities:e.clientCapabilities,agentCapabilities:e.agentCapabilities,runtime:e.runtime}}function UE(e,t){const n=cl(e),o=cl(t);return{a:n,b:o,changes:jE(jh(n),jh(o))}}function LE(e,t){const n=Bd(e),o=Bd(t),r=l=>`${l.kind}:${l.method}`,i=new Map(n.map(l=>[r(l),l])),s=new Map(o.map(l=>[r(l),l])),a=[];for(const l of new Set([...i.keys(),...s.keys()])){const d=i.get(l)??null,p=s.get(l)??null,m=d??p;a.push({method:m.method,kind:m.kind,a:d,b:p,countDelta:((p==null?void 0:p.count)??0)-((d==null?void 0:d.count)??0),p50Delta:kc(d==null?void 0:d.p50,p==null?void 0:p.p50),p99Delta:kc(d==null?void 0:d.p99,p==null?void 0:p.p99),maxDelta:kc(d==null?void 0:d.max,p==null?void 0:p.max)})}return a.sort((l,d)=>Math.abs(d.p99Delta??0)-Math.abs(l.p99Delta??0)||Math.abs(d.countDelta)-Math.abs(l.countDelta)||l.method.localeCompare(d.method)),a}function kc(e,t){return e==null||t===null||t===void 0?null:t-e}function sf(e,t=200){const[n,o]=I.useState(e),[r,i]=I.useState(!1);return I.useEffect(()=>{if(e){o(!0);let a=null;const l=requestAnimationFrame(()=>{a=requestAnimationFrame(()=>i(!0))});return()=>{cancelAnimationFrame(l),a!==null&&cancelAnimationFrame(a)}}i(!1);const s=setTimeout(()=>o(!1),t);return()=>clearTimeout(s)},[e,t]),{rendered:n,visible:r}}const af="flex h-9 items-center gap-4 border-b border-line bg-surface-base px-5",DE={request:"REQ",response:"RSP",notification:"NTF",error:"ERR",unknown:"UNK"};function zE(e){return e.direction==="editor-to-agent"?"→A":"A←"}function Jb(e){if(e.name)return`#${e.id} · ${e.name}`;const t=e.agent_command?Rt(e.agent_command):"agent";return e.client_name?`#${e.id} · ${e.client_name} · ${t}`:`#${e.id} · ${t}`}const Nh={messages:null,loading:!1,error:null};function Ch(e){const[t,n]=I.useState(Nh);return I.useEffect(()=>{if(e===null){n(Nh);return}let o=!1;return n({messages:null,loading:!0,error:null}),TS(e).then(r=>{o||n({messages:r.messages,loading:!1,error:null})}).catch(r=>{o||n({messages:null,loading:!1,error:r instanceof Error?r.message:String(r)})}),()=>{o=!0}},[e]),t}function FE({open:e,onClose:t}){const n=ne(F=>F.messages),o=ne(F=>F.session),r=at(F=>F.savedSessions),i=(o==null?void 0:o.id)??null,[s,a]=I.useState(null),[l,d]=I.useState(null),[p,m]=I.useState("frames"),[v,h]=I.useState(!0),[y,b]=I.useState(null),{rendered:g,visible:f}=sf(e);I.useEffect(()=>{if(!e)return;const F=G=>{G.key==="Escape"&&(G.preventDefault(),t())};return window.addEventListener("keydown",F,!0),()=>window.removeEventListener("keydown",F,!0)},[e,t]),I.useEffect(()=>{e&&(a(i),d(null),b(null))},[e,i]),I.useEffect(()=>b(null),[s,l]);const u=Ch(s!==null&&s!==i?s:null),x=Ch(l!==null&&l!==i?l:null),S=s===null?null:s===i?n:u.messages,T=l===null?null:l===i?n:x.messages,C=u.loading||x.loading,$=u.error??x.error,j=I.useMemo(()=>S===null||T===null?null:kE(S,T),[S,T]),A=I.useMemo(()=>{if(!j)return[];const F=[];return j.rows.forEach((G,Y)=>{v&&G.op==="equal"||F.push({row:G,index:Y})}),F},[j,v]),E=I.useMemo(()=>{const F=r.find(G=>G.id===l);return F?Jb(F):null},[r,l]),q=I.useMemo(()=>S&&T?UE(S,T):null,[S,T]),z=I.useMemo(()=>S&&T?LE(S,T):null,[S,T]);if(!g)return null;const U=r.filter(F=>F.id!==l),L=r.filter(F=>F.id!==s);return c.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"Session diff",className:K("fixed inset-0 z-[100] flex flex-col bg-surface-base/95 backdrop-blur-sm transition-opacity duration-200 ease-out",f?"opacity-100":"opacity-0"),children:c.jsxs("div",{className:K("flex h-full w-full flex-col transition-transform duration-200 ease-out",f?"translate-y-0":"-translate-y-2"),children:[c.jsxs("header",{className:"flex items-center justify-between border-b border-line px-5 py-3",children:[c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"Diff — compare two sessions"}),c.jsx("button",{type:"button",onClick:t,className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors hover:text-ink-primary","aria-label":"Close diff panel",children:"close"})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-3 border-b border-line bg-surface-elev px-5 py-2.5",children:[c.jsx("span",{className:"font-mono text-[11px] text-accent-out",title:"baseline (left)",children:"A"}),c.jsx(Oh,{ariaLabel:"Baseline session",sessions:U,selectedId:s,onSelect:a}),c.jsx("span",{className:"text-ink-muted",children:"→"}),c.jsx("span",{className:"font-mono text-[11px] text-ink-secondary",title:"comparison (right)",children:"B"}),c.jsx(Oh,{ariaLabel:"Comparison session",sessions:L,selectedId:l,onSelect:d})]}),s===null?c.jsx(xi,{children:"Pick a baseline session (A) to compare from."}):l===null?c.jsx(xi,{children:"Pick a session in the B selector above to compare against A."}):C?c.jsx(xi,{children:"Loading sessions…"}):$?c.jsxs(xi,{tone:"error",children:["Could not load a session: ",$]}):!j||!q||!z?c.jsx(xi,{children:"No data."}):c.jsxs(c.Fragment,{children:[c.jsx(BE,{tab:p,onTab:m,summary:j.summary,infoCount:q.changes.length}),c.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto",children:[p==="frames"&&c.jsx(HE,{diff:j,bLabel:E,hideEqual:v,onHideEqual:h,visibleRows:A,expanded:y,onToggleExpand:F=>b(G=>G===F?null:F)}),p==="info"&&c.jsx(VE,{meta:q}),p==="perf"&&c.jsx(KE,{perf:z})]})]})]})})}function BE({tab:e,onTab:t,summary:n,infoCount:o}){const i=[{id:"frames",label:"frames",badge:n.changed+n.added+n.removed},{id:"info",label:"info",badge:o},{id:"perf",label:"perf",badge:0}];return c.jsx("div",{className:"flex items-center gap-1 border-b border-line bg-surface-elev px-5 py-1.5",children:i.map(s=>c.jsxs("button",{type:"button",onClick:()=>t(s.id),className:K("inline-flex items-center gap-1.5 rounded-sm px-3 py-1 font-mono text-[10px] uppercase tracking-widest transition-colors",e===s.id?"bg-surface-rowHover text-ink-primary":"text-ink-muted hover:text-ink-secondary"),children:[s.label,s.badge>0&&c.jsx("span",{className:"rounded-sm border border-line px-1 text-[9px] text-ink-secondary",children:s.badge})]},s.id))})}function HE({diff:e,bLabel:t,hideEqual:n,onHideEqual:o,visibleRows:r,expanded:i,onToggleExpand:s}){const a=e.summary.changed===0&&e.summary.added===0&&e.summary.removed===0;return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:K(af,"font-mono text-[11px]"),children:[c.jsxs("span",{className:"text-ink-muted",children:[e.summary.equal," same"]}),c.jsxs("span",{className:"text-accent-warn",children:[e.summary.changed," differs"]}),c.jsxs("span",{className:"text-accent-error",children:[e.summary.removed," only in A"]}),c.jsxs("span",{className:"text-accent-ok",children:[e.summary.added," only in B"]}),c.jsxs("label",{className:"ml-auto flex cursor-pointer select-none items-center gap-2 text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsx("input",{type:"checkbox",checked:n,onChange:l=>o(l.target.checked),className:"accent-accent-info"}),"hide unchanged"]})]}),a?c.jsxs(ms,{tone:"ok",children:["Sessions are identical",t?` — every frame in B (${t}) matches A`:"","."]}):r.length===0?c.jsx(ms,{children:"Only unchanged frames — toggle “hide unchanged” to see them."}):c.jsxs("table",{className:"w-full table-fixed border-collapse font-mono text-[11px]",children:[c.jsxs("colgroup",{children:[c.jsx("col",{className:"w-[24px]"}),c.jsx("col",{className:"w-1/2"}),c.jsx("col",{className:"w-1/2"})]}),c.jsx("tbody",{children:r.map(({row:l,index:d})=>c.jsx(QE,{row:l,expanded:i===d,onToggle:()=>s(d)},d))})]})]})}function Qb(){return c.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-warn",children:"~"})," changed"]}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-ok",children:"+"})," only in B"]}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-error",children:"−"})," only in A"]})]})}function VE({meta:e}){return e.changes.length===0?c.jsx(ms,{tone:"ok",children:"Metadata identical — same client, agent, capabilities, protocol and runtime."}):c.jsxs(c.Fragment,{children:[c.jsx("div",{className:af,children:c.jsx(Qb,{})}),c.jsx("ul",{className:"space-y-1 px-5 py-3 font-mono text-[11px]",children:e.changes.map((t,n)=>c.jsx("li",{className:"leading-snug",children:c.jsx(Yb,{change:t})},n))})]})}function Eh(e){return e==null?"—":Vt(e)}function WE(e){return e===null?{text:"—",tone:"text-ink-dim"}:e===0?{text:"0",tone:"text-ink-muted"}:{text:(e>0?"+":"−")+Vt(Math.abs(e)),tone:e>0?"text-accent-error":"text-accent-ok"}}function KE({perf:e}){return e.length===0?c.jsx(ms,{children:"No methods to compare."}):c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:K(af,"font-mono text-[10px] uppercase tracking-widest text-ink-muted"),children:[c.jsx("span",{children:"Δ = B − A · sorted by |Δ p99|"}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-error",children:"+"})," slower in B"]}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-ok",children:"−"})," faster in B"]})]}),c.jsxs("table",{className:"w-full text-[11px]",children:[c.jsx("thead",{className:"sticky top-0 z-10 bg-surface-base",children:c.jsxs("tr",{className:"border-b border-line text-left font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsx("th",{className:"py-2 pl-5 pr-3",children:"method"}),c.jsx("th",{className:"px-3 py-2",children:"kind"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"A p99"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"B p99"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"Δ p99"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"count"})]})}),c.jsx("tbody",{className:"font-mono",children:e.map(t=>{var o,r,i,s;const n=WE(t.p99Delta);return c.jsxs("tr",{className:"border-b border-line/40 hover:bg-surface-rowHover/50",children:[c.jsx("td",{className:"truncate py-1.5 pl-5 pr-3 text-ink-primary",title:t.method,children:t.method}),c.jsx("td",{className:"px-3 py-1.5 text-[10px] uppercase tracking-widest text-ink-muted",children:t.kind==="request"?"req":"ntf"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:Eh(((o=t.a)==null?void 0:o.p99)??null)}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:Eh(((r=t.b)==null?void 0:r.p99)??null)}),c.jsx("td",{className:K("px-3 py-1.5 text-right",n.tone),children:n.text}),c.jsxs("td",{className:"px-3 py-1.5 text-right text-ink-muted",children:[((i=t.a)==null?void 0:i.count)??0,"→",((s=t.b)==null?void 0:s.count)??0]})]},`${t.kind}:${t.method}`)})})]})]})}function xi({children:e,tone:t}){return c.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:c.jsx(ms,{...t?{tone:t}:{},children:e})})}const GE={equal:"",changed:"bg-accent-warn/5",added:"bg-accent-ok/5",removed:"bg-accent-error/5"},JE={equal:{glyph:"=",tone:"text-ink-dim"},changed:{glyph:"≠",tone:"text-accent-warn"},added:{glyph:"▸",tone:"text-accent-ok"},removed:{glyph:"◂",tone:"text-accent-error"}};function QE({row:e,expanded:t,onToggle:n}){const o=JE[e.op],r=e.op==="changed"&&e.changes.length>0;return c.jsxs(c.Fragment,{children:[c.jsxs("tr",{className:K("border-b border-line/40 align-top",GE[e.op],r&&"cursor-pointer hover:bg-accent-warn/10"),onClick:r?n:void 0,children:[c.jsx("td",{className:K("py-1.5 pl-5 text-center",o.tone),children:o.glyph}),c.jsx("td",{className:"px-3 py-1.5",children:c.jsx(Ph,{frame:e.a,muted:e.op==="added"})}),c.jsxs("td",{className:"px-3 py-1.5",children:[c.jsx(Ph,{frame:e.b,muted:e.op==="removed"}),r&&c.jsxs("span",{className:"ml-2 text-[10px] text-accent-warn",children:[t?"▾":"▸"," ",e.changes.length," field",e.changes.length===1?"":"s"]})]})]}),r&&t&&c.jsxs("tr",{className:"border-b border-line/40 bg-surface-elev",children:[c.jsx("td",{}),c.jsxs("td",{colSpan:2,className:"px-5 py-2",children:[c.jsx("div",{className:"mb-1.5",children:c.jsx(Qb,{})}),c.jsx("ul",{className:"space-y-1",children:e.changes.map((i,s)=>c.jsx("li",{className:"leading-snug",children:c.jsx(Yb,{change:i})},s))})]})]})]})}function Ph({frame:e,muted:t}){if(e===null)return c.jsx("span",{className:"text-ink-dim",children:"—"});const n=e.method??(e.parseError?`! ${e.parseError}`:"—");return c.jsxs("span",{className:K("inline-flex items-baseline gap-2",t&&"opacity-60"),children:[c.jsx("span",{className:"text-ink-dim",children:zE(e)}),c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:DE[e.kind]}),c.jsx("span",{className:"truncate text-ink-primary",title:n,children:n}),c.jsxs("span",{className:"text-ink-dim",children:["#",e.seq]})]})}const Ih=80;function oa(e){let t;try{t=JSON.stringify(e)}catch{t=String(e)}return t===void 0&&(t="undefined"),t.length>Ih&&(t=t.slice(0,Ih-1)+"…"),t}function Yb({change:e}){return e.kind==="add"?c.jsxs("span",{children:[c.jsx("span",{className:"text-accent-ok",children:"+ "}),c.jsx("span",{className:"text-ink-secondary",children:e.path}),c.jsx("span",{className:"text-ink-muted",children:": "}),c.jsx("span",{className:"text-accent-ok",children:oa(e.b)})]}):e.kind==="remove"?c.jsxs("span",{children:[c.jsx("span",{className:"text-accent-error",children:"− "}),c.jsx("span",{className:"text-ink-secondary",children:e.path}),c.jsx("span",{className:"text-ink-muted",children:": "}),c.jsx("span",{className:"text-accent-error line-through",children:oa(e.a)})]}):c.jsxs("span",{children:[c.jsx("span",{className:"text-accent-warn",children:"~ "}),c.jsx("span",{className:"text-ink-secondary",children:e.path}),c.jsx("span",{className:"text-ink-muted",children:": "}),c.jsx("span",{className:"text-accent-error line-through",children:oa(e.a)}),c.jsx("span",{className:"text-ink-muted",children:" → "}),c.jsx("span",{className:"text-accent-ok",children:oa(e.b)})]})}function ms({children:e,tone:t="muted"}){const n=t==="error"?"text-accent-error":t==="ok"?"text-accent-ok":"text-ink-muted";return c.jsx("div",{className:K("px-5 py-8 text-center font-mono text-[12px]",n),children:e})}function Oh({ariaLabel:e,sessions:t,selectedId:n,onSelect:o}){const[r,i]=I.useState(!1),s=I.useRef(null);I.useEffect(()=>{if(!r)return;const m=v=>{s.current&&!s.current.contains(v.target)&&i(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[r]);const a=t.filter(m=>m.imported_at===null),l=t.filter(m=>m.imported_at!==null),d=n!==null?t.find(m=>m.id===n)??null:null,p=d?Jb(d):n!==null?`#${n}`:"select a session…";return c.jsxs("div",{ref:s,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>i(m=>!m),"aria-label":e,"aria-haspopup":"listbox","aria-expanded":r,className:K("inline-flex h-7 items-center gap-2 rounded-sm border px-3 font-mono text-[10px] uppercase tracking-widest transition-colors","border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary",r?"border-line-strong text-ink-primary":""),title:`${e} — pick which session to compare`,children:[c.jsx("span",{className:"inline-block w-[240px] truncate text-left",children:p}),c.jsx("span",{"aria-hidden":!0,className:K("transition-transform",r?"rotate-180":""),children:"▾"})]}),r&&c.jsxs("div",{className:"absolute left-0 top-[calc(100%+6px)] z-50 w-[460px] rounded-md border border-line bg-surface-elev shadow-xl",children:[c.jsxs(Rh,{children:["saved · ",a.length," session",a.length===1?"":"s"]}),a.length===0&&c.jsx("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:"no other saved sessions to compare"}),c.jsx("ul",{className:"max-h-[300px] overflow-y-auto",children:a.map(m=>c.jsx(Ah,{s:m,active:m.id===n,onPick:()=>{o(m.id),i(!1)}},m.id))}),l.length>0&&c.jsxs(c.Fragment,{children:[c.jsxs(Rh,{children:["imported · ",l.length," file",l.length===1?"":"s"]}),c.jsx("ul",{className:"max-h-[200px] overflow-y-auto",children:l.map(m=>c.jsx(Ah,{s:m,active:m.id===n,onPick:()=>{o(m.id),i(!1)}},m.id))})]})]})]})}function Rh({children:e}){return c.jsx("div",{className:"border-b border-line bg-surface-base/50 px-3 py-1.5 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e})}function Ah({s:e,active:t,onPick:n}){return c.jsx("li",{children:c.jsxs("button",{type:"button",onClick:n,title:`session #${e.id} · ${e.agent_command??""} · ${e.message_count} messages`,className:K("flex w-full items-baseline gap-3 border-b border-line-grid/70 px-3 py-2 text-left transition-colors hover:bg-surface-rowHover",t?"bg-surface-rowHover":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("h-2 w-2 shrink-0 rounded-full",t?"bg-accent-note animate-pulse-soft":"bg-ink-dim")}),c.jsxs("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-ink-primary",children:[c.jsxs("span",{className:"text-accent-note",children:["#",e.id]}),c.jsx("span",{className:"text-ink-muted",children:" · "}),e.name??(e.client_name?`${e.client_name} · ${Rt(e.agent_command??"")}`:Rt(e.agent_command??""))]}),c.jsxs("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[e.message_count,"msg · ",Mr(e.started_at)]})]})})}let Tc=null,wi=null;async function YE(){if(Tc)return Tc;if(wi)return wi;wi=(async()=>{const e=await fetch("/api/info",{headers:{accept:"application/json"}});if(!e.ok)throw new Error(`info: HTTP ${e.status}`);const t=await e.json();return Tc=t,t})();try{return await wi}finally{wi=null}}const XE=[{id:"zed",label:"Zed"},{id:"jetbrains",label:"JetBrains"}],ZE="/absolute/path/to/acp-devtools";function eP(e){return JSON.stringify({agent_servers:{"Claude Code (via ACP Devtools)":{type:"custom",command:e}}},null,4)}function Xb({text:e,label:t="Copy"}){const[n,o]=I.useState(!1),r=async()=>{try{await navigator.clipboard.writeText(e),o(!0),setTimeout(()=>o(!1),1400)}catch{o(!1)}};return c.jsx("button",{type:"button",onClick:r,className:K("rounded border border-line px-2 py-0.5 font-mono text-[10px] uppercase tracking-widest transition-colors",n?"border-accent-out text-accent-out":"text-ink-secondary hover:border-ink-secondary hover:text-ink-primary"),children:n?"Copied":t})}function tP(){const[e,t]=I.useState("zed"),[n,o]=I.useState(null);I.useEffect(()=>{let a=!0;return YE().then(l=>{a&&o(l.binaryPath)}).catch(()=>{}),()=>{a=!1}},[]);const r=n??ZE,i=n===null,s=I.useMemo(()=>({zed:eP(r),jetbrainsName:"Claude Code (via ACP Devtools)"}),[r]);return c.jsxs("div",{className:"rounded border border-line bg-surface-base",children:[c.jsx("div",{className:"flex items-center gap-1 border-b border-line px-3 py-2",children:XE.map(a=>c.jsx("button",{type:"button",onClick:()=>t(a.id),className:K("rounded px-2 py-1 font-mono text-[10px] uppercase tracking-widest transition-colors",e===a.id?"bg-surface-elev text-ink-primary":"text-ink-secondary hover:text-ink-primary"),children:a.label},a.id))}),e==="zed"&&c.jsxs("div",{className:"px-3 py-3",children:[c.jsxs("div",{className:"mb-2 flex items-center justify-between gap-3",children:[c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"~/.config/zed/settings.json"}),c.jsx(Xb,{text:s.zed})]}),c.jsx("pre",{className:"overflow-x-auto rounded border border-line bg-surface-elev/60 px-3 py-2 font-mono text-[11px] leading-relaxed text-ink-primary",children:s.zed}),c.jsxs("p",{className:"mt-2 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["Open Zed, paste into ",c.jsx("span",{className:"font-mono",children:"settings.json"})," ","(Cmd+,), pick the new agent in the right-side panel, send a prompt. The CLI auto-proxies ",c.jsx("span",{className:"font-mono",children:"@zed-industries/claude-code-acp"})," ","when launched with no args."]}),c.jsx(Mh,{isPlaceholder:i})]}),e==="jetbrains"&&c.jsxs("div",{className:"px-3 py-3",children:[c.jsxs("p",{className:"mb-2 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["Settings (Cmd+,) → search ",c.jsx("span",{className:"font-mono",children:"agent"})," → open the AI Assistant / Junie agent-servers page → add a new entry with these fields (no arguments needed):"]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx(qh,{label:"Name",value:s.jetbrainsName}),c.jsx(qh,{label:"Command",value:r})]}),c.jsxs("p",{className:"mt-3 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["JetBrains IDEs require an absolute ",c.jsx("span",{className:"font-mono",children:"command"}),". See ",c.jsx("span",{className:"font-mono",children:"examples/jetbrains-config.md"})," if the agent-servers page is not where the search suggests."]}),c.jsx(Mh,{isPlaceholder:i})]})]})}function Mh({isPlaceholder:e}){return e?c.jsxs("div",{className:"mt-3 rounded border border-line border-dashed bg-surface-elev/40 px-3 py-2 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["You're viewing the UI through a development server, so the absolute binary path couldn't be auto-detected. After running"," ",c.jsx("span",{className:"font-mono",children:"npm run build:full"})," in the repo and"," ",c.jsx("span",{className:"font-mono",children:"npm link"})," inside"," ",c.jsx("span",{className:"font-mono",children:"packages/cli/"}),", find the path with"," ",c.jsx("span",{className:"font-mono",children:"which acp-devtools"})," and replace the placeholder above."]}):c.jsxs("p",{className:"mt-3 font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:["path auto-resolved · verify with ",c.jsx("span",{className:"text-ink-secondary",children:"which acp-devtools"})]})}function qh({label:e,value:t}){return c.jsxs("div",{className:"flex items-center gap-2 rounded border border-line bg-surface-elev/60 px-3 py-1.5",children:[c.jsx("span",{className:"w-20 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("span",{className:"flex-1 truncate font-mono text-[11px] text-ink-primary",children:t}),c.jsx(Xb,{text:t})]})}function nP({status:e,lastError:t,url:n,captureCount:o}){const r=e==="open"?"Awaiting messages":e==="connecting"?"Connecting":e==="closed"?"Disconnected":e==="error"?"Connection error":"No live capture",i=e==="open"?"text-accent-out":e==="error"?"text-accent-error":"text-ink-secondary";return c.jsx("div",{className:"flex h-full w-full items-center justify-center bg-grid",children:c.jsxs("div",{className:"relative w-[min(720px,92%)] rounded-md border border-line bg-surface-elev/80 p-6 backdrop-blur-sm",children:[c.jsxs("div",{className:"mb-1 flex items-baseline gap-3",children:[c.jsx("span",{className:"font-display text-sm uppercase tracking-[0.18em] text-ink-muted",children:"acp.devtools"}),c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:"v0.5.0 / pre-alpha"})]}),c.jsx("h2",{className:K("font-display text-2xl uppercase tracking-tight",i),children:r}),c.jsx("p",{className:"mt-2 font-sans text-sm leading-relaxed text-ink-secondary",children:"Connect an IDE to start streaming ACP frames. Pick yours below — the snippet plugs acp-devtools between editor and agent so every message is captured live."}),o>0&&c.jsxs("p",{className:"mt-2 font-mono text-[11px] uppercase tracking-widest text-accent-out",children:[o," live capture",o===1?"":"s"," discovered — pick one in the picker above"]}),c.jsx("div",{className:"mt-4",children:c.jsx(tP,{})}),c.jsxs("div",{className:"mt-4 flex items-center gap-3 font-mono text-[11px]",children:[c.jsx(oP,{status:e}),c.jsx("span",{className:"text-ink-secondary",children:n}),t&&c.jsx("span",{className:"text-accent-error",children:t})]})]})})}function oP({status:e}){const t=e==="open"?"bg-accent-out":e==="connecting"?"bg-accent-warn animate-pulse-soft":e==="error"?"bg-accent-error":"bg-ink-dim";return c.jsx("span",{className:K("h-2 w-2 rounded-full",t),"aria-hidden":!0})}function rP(){const e=ne(i=>i.filters),t=ne(i=>i.toggleDirection),n=ne(i=>i.toggleKind),o=ne(i=>i.toggleStreams),r=ne(i=>i.setSearch);return c.jsxs("div",{className:"flex items-center gap-3 border-b border-line bg-surface-elev/70 px-4 py-2",children:[c.jsx("div",{className:"flex items-center gap-1",children:cs.map(i=>c.jsx(aP,{dir:i,active:e.directions.has(i),onClick:()=>t(i)},i))}),c.jsx(dP,{}),c.jsxs("div",{className:"flex items-center gap-1",children:[ds.map(i=>c.jsx(lP,{kind:i,active:e.kinds.has(i),onClick:()=>n(i)},i)),c.jsx(cP,{active:e.showStreams,onClick:o})]}),c.jsx("div",{className:"ml-auto",children:c.jsx("input",{type:"search",placeholder:"search payload…",value:e.search,onChange:i=>r(i.target.value),className:K("h-7 w-64 rounded border border-line bg-surface-base px-2 font-mono text-[11px] text-ink-primary placeholder-ink-muted","focus:border-accent-out focus:outline-none")})})]})}const iP={"editor-to-agent":"editor → agent (toggle to filter messages flowing from your IDE to the AI)","agent-to-editor":"agent → editor (toggle to filter messages coming back from the AI)"},sP={request:"request — expects a response",response:"response — answer to a previous request",notification:"notification — one-way event, no response",error:"error — response carrying an error object",unknown:"unknown — frames that could not be classified as JSON-RPC"};function aP({dir:e,active:t,onClick:n}){const o=e==="editor-to-agent",r=o?"→ OUT":"← IN",i=o?"text-accent-out":"text-accent-in";return c.jsx("button",{type:"button",onClick:n,title:iP[e],className:K("inline-flex items-center gap-1 rounded-sm border px-2 py-0.5 font-mono text-[10px] font-semibold tracking-widest transition-colors",t?K(i,o?"border-accent-out/50 bg-accent-out/10":"border-accent-in/50 bg-accent-in/10"):"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),children:r})}function lP({kind:e,active:t,onClick:n}){const r={request:{color:"text-accent-out",border:"border-accent-out/50",bg:"bg-accent-out/10"},response:{color:"text-accent-in",border:"border-accent-in/50",bg:"bg-accent-in/10"},notification:{color:"text-accent-note",border:"border-accent-note/50",bg:"bg-accent-note/10"},error:{color:"text-accent-error",border:"border-accent-error/50",bg:"bg-accent-error/10"},unknown:{color:"text-ink-muted",border:"border-line",bg:"bg-surface-row"}}[e];return c.jsx("button",{type:"button",onClick:n,title:sP[e],className:K("rounded-sm border px-2 py-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest transition-colors",t?K(r.color,r.border,r.bg):"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),children:e})}function cP({active:e,onClick:t}){return c.jsx("button",{type:"button",onClick:t,title:"stream — collapse runs of agent_message_chunk notifications into a single row",className:K("rounded-sm border px-2 py-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest transition-colors",e?"border-accent-note/50 bg-accent-note/10 text-accent-note":"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),children:"stream"})}function dP(){return c.jsx("span",{"aria-hidden":!0,className:"h-5 w-px bg-line"})}const uP={minSamplesForTail:3,longTailRatio:5,minBusiestCount:50,minBusiestRatio:2.5,minHotspotShare:.4,minSamplesForOutlier:5,outlierRatio:3};function pP(e,t,n={}){const o={...uP,...n},r=[],i=t.reduce((h,y)=>h+(y.totalLatencyMs??0),0);if(i>0){const y=t.filter(b=>b.totalLatencyMs!==null&&b.totalLatencyMs>0).sort((b,g)=>(g.totalLatencyMs??0)-(b.totalLatencyMs??0))[0];if(y&&y.totalLatencyMs!==null){const b=y.totalLatencyMs/i;b>=o.minHotspotShare&&r.push({kind:"hotspot",summary:`${y.method} consumed ${ar(y.totalLatencyMs)} of total wall time`,detail:`${Math.round(b*100)}% of ${ar(i)} sampled latency`,methods:[y.method]})}}const a=t.filter(h=>h.sampleSize>=o.minSamplesForTail&&h.p50!==null&&h.p99!==null&&h.p50>0&&h.p99/h.p50>=o.longTailRatio).sort((h,y)=>(y.p99??0)/(y.p50??1)-(h.p99??0)/(h.p50??1))[0];if(a&&a.p99!==null&&a.p50!==null){const h=Math.round(a.p99/a.p50);r.push({kind:"long-tail",summary:`${a.method} has a long tail — p99 is ${h}× the p50`,detail:`p50 ${ar(a.p50)} · p99 ${ar(a.p99)} · ${a.sampleSize} samples`,methods:[a.method]})}const l=[...t].filter(h=>h.sampleSize>=o.minSamplesForOutlier&&h.p99!==null&&h.max!==null&&h.p99>0&&h.max/h.p99>=o.outlierRatio).sort((h,y)=>(y.max??0)-(h.max??0))[0];if(l&&l.max!==null&&l.p99!==null){const h=Math.round(l.max/l.p99);r.push({kind:"outlier",summary:`${l.method} had one ${ar(l.max)} call — ${h}× its p99`,detail:`p99 ${ar(l.p99)} · ${l.sampleSize} samples`,methods:[l.method]})}const d=[...t].sort((h,y)=>y.count-h.count),p=d[0],m=d[1];if(p&&p.count>=o.minBusiestCount){const h=m&&m.count>0?p.count/m.count:1/0;if(h>=o.minBusiestRatio){const y=p.kind==="notification"?"notifications":"calls";r.push({kind:"busiest",summary:`${p.method} sent ${p.count} ${y}`,detail:m?`${h.toFixed(1)}× the next-busiest method (${m.method} · ${m.count})`:"no other methods to compare against",methods:[p.method]})}}const v=fP(e);if(v.length>0){const h=v.slice(0,3),y=v.length>3?` (+${v.length-3} more)`:"";r.push({kind:"errors",summary:`${v.length} method${v.length===1?"":"s"} returned an error`,detail:h.join(", ")+y,methods:v})}return r}function fP(e){const t=new Map,n=new Set;for(const o of e){const r=o.rpcId===void 0||o.rpcId===null?null:String(o.rpcId);if(o.kind==="request"&&o.method&&r!==null)t.set(r,o.method);else if(o.kind==="error"&&r!==null){const i=t.get(r);i&&n.add(i)}}return[...n].sort()}function ar(e){if(e<1e3)return`${Math.round(e)}ms`;if(e<1e4)return`${(e/1e3).toFixed(2)}s`;if(e<6e4)return`${(e/1e3).toFixed(1)}s`;const t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return`${t}m${n}s`}function mP(e,t){if(e.length<=t)return e;const n=[];for(let o=0;o<t;o++){const r=Math.round(o*(e.length-1)/(t-1));n.push(e[r])}return n}function hP({values:e,width:t=64,height:n=14,className:o,title:r}){if(e.length===0)return null;const i=e[e.length-1]??0;if(i===0)return null;const s=Math.max(1,Math.floor(t/4)),a=mP(e,s),l=1,d=(t-l*(a.length-1))/a.length;return c.jsx("svg",{viewBox:`0 0 ${t} ${n}`,width:t,height:n,className:K("inline-block align-middle",o),role:"img","aria-label":r??`latency distribution, ${e.length} samples`,children:a.map((p,m)=>{const v=Math.max(1,p/i*n);return c.jsx("rect",{x:m*(d+l),y:n-v,width:d,height:v,fill:"currentColor",opacity:.4+p/i*.6},m)})})}function yP(e){const t={events:[],startTs:0,endTs:0,durationMs:0,laneCounts:{"editor-req":0,"agent-req":0,notification:0}};if(e.length===0)return t;const n=rf(e),o=new Map;for(const l of e)o.set(l.seq,l);let r=1/0,i=-1/0;const s=[],a={"editor-req":0,"agent-req":0,notification:0};for(const l of e)if(l.timestamp<r&&(r=l.timestamp),l.timestamp>i&&(i=l.timestamp),l.kind==="request"){const d=l.direction==="editor-to-agent"?"editor-req":"agent-req",p=n.get(l.seq),m=p?o.get(p.pairSeq):void 0,v=(m==null?void 0:m.kind)==="error",h=m?m.timestamp:l.timestamp;h>i&&(i=h),s.push({seq:l.seq,startTs:l.timestamp,endTs:h,lane:d,method:l.method??null,kind:l.kind,erroredOut:v,pairedSeq:m?m.seq:null}),a[d]+=1}else l.kind==="notification"&&(s.push({seq:l.seq,startTs:l.timestamp,endTs:l.timestamp,lane:"notification",method:l.method??null,kind:l.kind,erroredOut:!1,pairedSeq:null}),a.notification+=1);return!Number.isFinite(r)||!Number.isFinite(i)?t:{events:s,startTs:r,endTs:i,durationMs:Math.max(0,i-r),laneCounts:a}}const dl=["editor-req","agent-req","notification"],gP={"editor-req":"editor → agent","agent-req":"agent → editor",notification:"notifications"},oo=48,lf=6,Ll=24,wn=132,hs=20,Dl=8,vP=20,Uh=3e4,Lh=50;function bP(e,t,n,o,r,i){if(e.length===0||n<=t)return{segments:[{kind:"active",tStart:t,tEnd:n,pxStart:0,pxEnd:o*r}],tsToX:()=>wn-i,totalActiveMs:0};const s=[...e].sort((u,x)=>u.startTs-x.startTs),a=[];let l=t,d=t;for(const u of s)u.startTs-d>Uh&&(d>l&&a.push({kind:"active",tStart:l,tEnd:d}),a.push({kind:"gap",tStart:d,tEnd:u.startTs}),l=u.startTs),d=Math.max(d,u.endTs);d>l&&a.push({kind:"active",tStart:l,tEnd:d}),n>d+Uh?a.push({kind:"gap",tStart:d,tEnd:n}):n>d&&a.length>0&&(a[a.length-1].tEnd=n);const p=a.filter(u=>u.kind==="gap").length,m=a.filter(u=>u.kind==="active").reduce((u,x)=>u+(x.tEnd-x.tStart),0),v=o*r,h=Math.max(50,v-p*Lh),y=m>0?h/m:0;let b=0;const g=[];for(const u of a){const x=u.kind==="gap"?Lh:(u.tEnd-u.tStart)*y;g.push({...u,pxStart:b,pxEnd:b+x}),b+=x}return{segments:g,tsToX:u=>{if(u<=g[0].tStart)return wn+g[0].pxStart-i;for(const S of g)if(u>=S.tStart&&u<=S.tEnd){const T=S.tEnd>S.tStart?(u-S.tStart)/(S.tEnd-S.tStart):0,C=S.pxStart+T*(S.pxEnd-S.pxStart);return wn+C-i}const x=g[g.length-1];return wn+x.pxEnd-i},totalActiveMs:m}}function xP({messages:e,onSelectSeq:t,height:n=220,controlsRef:o,onZoomChange:r}){const i=I.useMemo(()=>yP(e),[e]),s=I.useRef(null),a=I.useRef(null),[l,d]=I.useState({width:800,height:n}),[p,m]=I.useState(1),[v,h]=I.useState(0),[y,b]=I.useState(null),[g,f]=I.useState({x:0,y:0}),u=I.useRef(null);I.useEffect(()=>{const U=s.current;if(!U||typeof ResizeObserver>"u")return;const L=new ResizeObserver(F=>{const G=F[0];if(!G)return;const Y=G.contentRect;d({width:Math.max(320,Y.width),height:Math.max(120,Y.height)})});return L.observe(U),()=>L.disconnect()},[]),I.useEffect(()=>{m(1),h(0),b(null)},[i.startTs,i.endTs]);const x=I.useMemo(()=>{const U=Math.max(50,l.width-wn-hs);return bP(i.events,i.startTs,i.endTs,U,p,v)},[i,l.width,p,v]),S=I.useMemo(()=>{if(i.events.length===0)return[];const U=[];for(const L of i.events){const F=x.tsToX(L.startTs),G=x.tsToX(L.endTs),Y=Math.max(2,G-F),D=dl.indexOf(L.lane),J=Dl+Ll+D*(oo+lf)+oo/2-9;U.push({...L,x:F,y:J,width:Y,height:18})}return U},[i,x]);I.useEffect(()=>{const U=a.current;if(!U)return;const L=window.devicePixelRatio||1;U.width=l.width*L,U.height=l.height*L,U.style.width=`${l.width}px`,U.style.height=`${l.height}px`;const F=U.getContext("2d");if(!F)return;F.setTransform(L,0,0,L,0,0);const G=getComputedStyle(document.documentElement),Y=J=>`rgb(${G.getPropertyValue(`--${J}`).trim()})`,D=(J,O)=>`rgba(${G.getPropertyValue(`--${J}`).trim()} / ${O})`;F.clearRect(0,0,l.width,l.height),wP(F,l,Y),$P(F,x,l,Y,D),SP(F,l,x,Y),_P(F,S,y,Y,D)},[S,x,l,y]);const T=(U,L)=>{for(const F of S){const G=Math.max(F.width,6);if(U>=F.x&&U<=F.x+G&&L>=F.y&&L<=F.y+F.height)return F}return null},C=U=>{const L=U.currentTarget.getBoundingClientRect(),F=U.clientX-L.left,G=U.clientY-L.top;if(u.current){const D=F-u.current.startX;h(Math.max(0,u.current.startPan-D));return}const Y=T(F,G);b(Y),f({x:U.clientX,y:U.clientY})},$=U=>{const L=U.currentTarget.getBoundingClientRect(),F=U.clientX-L.left,G=U.clientY-L.top,Y=T(F,G);if(Y&&t){t(Y.seq);return}u.current={startX:F,startPan:v}},j=()=>{u.current=null},A=U=>{if(!U.metaKey&&!U.ctrlKey)return;U.preventDefault();const L=U.deltaY<0?1.15:1/1.15;m(F=>Math.min(50,Math.max(.3,F*L)))},E=()=>m(U=>Math.min(50,U*1.5)),q=()=>m(U=>Math.max(.3,U/1.5)),z=()=>{m(1),h(0)};return I.useEffect(()=>{if(o)return o.current={zoomIn:E,zoomOut:q,reset:z,getZoom:()=>p},()=>{o.current&&(o.current=null)}}),I.useEffect(()=>{r==null||r(p)},[p,r]),i.events.length===0?c.jsx("div",{className:"flex h-full items-center justify-center font-mono text-[11px] uppercase tracking-widest text-ink-muted",children:"no messages — capture or load a session first"}):c.jsxs("div",{ref:s,className:"relative h-full w-full",style:{minHeight:0},children:[c.jsx("canvas",{ref:a,className:K("block h-full w-full",u.current?"cursor-grabbing":y?"cursor-pointer":"cursor-grab"),onMouseMove:C,onMouseDown:$,onMouseUp:j,onMouseLeave:()=>{b(null),u.current=null},onWheel:A}),y&&c.jsxs("div",{role:"tooltip",className:"pointer-events-none fixed z-[150] rounded-sm border border-line bg-surface-base px-3 py-2 font-mono text-[11px] shadow-lg",style:{left:Math.min(window.innerWidth-280,g.x+12),top:g.y+12,maxWidth:280},children:[c.jsxs("div",{className:"text-ink-primary",children:[c.jsxs("span",{className:"text-ink-muted",children:["seq ",y.seq]})," · ",y.method??y.kind]}),c.jsx("div",{className:"text-ink-muted",children:y.endTs>y.startTs?`${Vt(y.endTs-y.startTs)}${y.erroredOut?" · error":""}`:y.lane==="notification"?"notification":"pending"}),t&&c.jsx("div",{className:"mt-1 text-[10px] text-ink-dim",children:"click to inspect"})]})]})}function wP(e,t,n){e.font="10px monospace",e.textBaseline="middle",e.textAlign="start";for(let o=0;o<dl.length;o++){const r=dl[o],i=Dl+Ll+o*(oo+lf);e.fillStyle=n("surface-elev"),e.fillRect(wn,i,t.width-wn-hs,oo),e.fillStyle=n("ink-muted"),e.fillText(gP[r],vP,i+oo/2),e.strokeStyle=n("line"),e.lineWidth=1,e.beginPath(),e.moveTo(wn,i+oo),e.lineTo(t.width-hs,i+oo),e.stroke()}}function SP(e,t,n,o){var y;const r=Dl+Ll-4;e.strokeStyle=o("line"),e.fillStyle=o("ink-muted"),e.font="10px monospace",e.textBaseline="bottom",e.textAlign="center",e.lineWidth=1;const i=n.segments.filter(b=>b.kind==="active").reduce((b,g)=>Math.max(b,g.tEnd-g.tStart),0),s=n.segments.reduce((b,g)=>b+(g.kind==="active"?g.pxEnd-g.pxStart:0),0),l=(i>0?s/n.totalActiveMs:0)*1e3,d=[.1,.25,.5,1,2,5,10,30,60,120,300],p=80;let m=d[d.length-1];for(const b of d)if(b*l>=p){m=b;break}const v=m*1e3,h=((y=n.segments[0])==null?void 0:y.tStart)??0;for(const b of n.segments){if(b.kind!=="active")continue;const g=Math.ceil((b.tStart-h)/v)*v+h;for(let f=g;f<=b.tEnd;f+=v){const u=n.tsToX(f);u<wn||u>t.width-hs||(e.beginPath(),e.moveTo(u,r),e.lineTo(u,r+4),e.stroke(),e.fillText(TP(f-h),u,r-2))}}}function $P(e,t,n,o,r){const i=Dl+Ll,s=i+dl.length*(oo+lf);for(const a of t.segments){if(a.kind!=="gap")continue;const l=t.tsToX(a.tStart),p=t.tsToX(a.tEnd)-l;if(l>n.width-hs||l+p<wn)continue;e.fillStyle=r("ink-muted",.06),e.fillRect(l,i,p,s-i),e.strokeStyle=o("line"),e.setLineDash([3,3]),e.lineWidth=1,e.beginPath(),e.moveTo(l+.5,i),e.lineTo(l+.5,s),e.moveTo(l+p-.5,i),e.lineTo(l+p-.5,s),e.stroke(),e.setLineDash([]),e.fillStyle=o("ink-muted"),e.font="10px monospace",e.textBaseline="middle",e.textAlign="center";const m=l+p/2,v=i+(s-i)/2;e.fillText(kP(a.tEnd-a.tStart),m,v)}}function kP(e){if(e<6e4)return`${Math.round(e/1e3)}s idle`;if(e<36e5)return`${Math.round(e/6e4)}m idle`;const t=Math.floor(e/36e5),n=Math.round(e%36e5/6e4);return n>0?`${t}h${n}m idle`:`${t}h idle`}function TP(e){if(e<1e3)return`${Math.round(e)}ms`;if(e<6e4)return`${(e/1e3).toFixed(e<1e4?1:0)}s`;const t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return`${t}m${n}s`}function _P(e,t,n,o,r){for(const i of t){const s=(n==null?void 0:n.seq)===i.seq,a=i.erroredOut?r("accent-error",.6):i.kind==="notification"?r("accent-note",.7):i.lane==="editor-req"?r("accent-out",.7):r("accent-in",.7);e.fillStyle=s?a.replace(/0\.\d+/,"0.95"):a,e.fillRect(i.x,i.y,Math.max(i.width,2),i.height),s&&(e.strokeStyle=o("ink-primary"),e.lineWidth=1,e.strokeRect(i.x-.5,i.y-.5,Math.max(i.width,2)+1,i.height+1))}}function jP({open:e,onClose:t,onNavigateToSeq:n}){const o=ne(S=>S.messages),r=ne(S=>S.session),i=ne(S=>S.select),s=I.useRef(null),[a,l]=I.useState(1),d=I.useMemo(()=>Bd(o),[o]),p=I.useMemo(()=>pP(o,d),[o,d]),m=I.useMemo(()=>d.reduce((S,T)=>Math.max(S,T.count),0),[d]),[v,h]=I.useState("count"),[y,b]=I.useState("desc"),{rendered:g,visible:f}=sf(e);I.useEffect(()=>{if(!e)return;const S=T=>{T.key==="Escape"&&(T.preventDefault(),t())};return window.addEventListener("keydown",S,!0),()=>window.removeEventListener("keydown",S,!0)},[e,t]);const u=I.useMemo(()=>AP(d,v,y),[d,v,y]),x=I.useMemo(()=>RP(d),[d]);return g?c.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"Performance dashboard",className:K("fixed inset-0 z-[100] flex flex-col bg-surface-base/95 backdrop-blur-sm transition-opacity duration-200 ease-out",f?"opacity-100":"opacity-0"),children:c.jsxs("div",{className:K("flex h-full w-full flex-col transition-transform duration-200 ease-out",f?"translate-y-0":"-translate-y-2"),children:[c.jsxs("header",{className:"flex items-center justify-between border-b border-line px-5 py-3",children:[c.jsxs("div",{className:"flex min-w-0 items-baseline gap-3",children:[c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"Performance — per-method latency"}),r&&c.jsx("span",{className:"truncate font-mono text-[11px] text-ink-secondary",children:(()=>{const S=ql(r);let T=S.secondary;if(!r.clientName){const C=cl(o),$=C.client.title??C.client.name??null;if($){const j=S.secondary;T=j?`${$} · ${j}`:$}}return T?`${S.primary} · ${T}`:S.primary})()})]}),c.jsx("button",{type:"button",onClick:t,className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors hover:text-ink-primary","aria-label":"Close performance panel",children:"close"})]}),p.length>0&&c.jsx(PP,{insights:p}),c.jsx("div",{className:"border-b border-line bg-surface-elev px-5 py-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:d.length===0?c.jsx("span",{children:"no messages — capture or load a session first"}):c.jsxs("span",{children:[x.methods," methods · ",x.requests," requests ·"," ",x.notifications," notifications · ",x.samples," latency samples"]})}),c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[c.jsx("div",{className:"flex-1 overflow-y-auto",children:u.length===0?null:c.jsxs("table",{className:"w-full table-fixed text-[11px]",children:[c.jsxs("colgroup",{children:[c.jsx("col",{}),c.jsx("col",{className:"w-[64px]"}),c.jsx("col",{className:"w-[88px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[120px]"})]}),c.jsx("thead",{className:"sticky top-0 z-10 bg-surface-base",children:c.jsxs("tr",{className:"border-b border-line text-left font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsx(cr,{sk:"method",current:v,dir:y,onSort:lr(h,b,y),className:"!pl-5",children:"method"}),c.jsx("th",{className:"px-3 py-2",children:"kind"}),c.jsx(cr,{sk:"count",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"count"}),c.jsx(cr,{sk:"p50",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"p50"}),c.jsx(cr,{sk:"p99",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"p99"}),c.jsx(cr,{sk:"max",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"max"}),c.jsx(cr,{sk:"total",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"total"}),c.jsx("th",{className:"py-2 pl-3 pr-5 text-right",children:"dist"})]})}),c.jsx("tbody",{className:"font-mono",children:u.map(S=>c.jsxs("tr",{className:"border-b border-line/40 transition-colors hover:bg-surface-rowHover/50",children:[c.jsx("td",{className:"truncate py-1.5 pl-5 pr-3 text-ink-primary",title:S.method,children:S.method}),c.jsx("td",{className:"px-3 py-1.5 text-ink-muted",children:c.jsx(OP,{kind:S.kind})}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-primary",children:c.jsx(IP,{count:S.count,max:m,kind:S.kind})}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.p50!==null?Vt(S.p50):"—"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.p99!==null?Vt(S.p99):"—"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.max!==null?Vt(S.max):"—"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.totalLatencyMs!==null?Vt(S.totalLatencyMs):"—"}),c.jsx("td",{className:"py-1.5 pl-3 pr-5 text-right",children:S.latencies.length>0?c.jsx(hP,{values:S.latencies,width:88,height:14,className:"text-accent-info",title:`${S.method} latency distribution`}):c.jsx("span",{className:"text-ink-dim",children:"—"})})]},`${S.kind}:${S.method}`))})]})}),o.length>0&&c.jsxs("div",{className:"flex h-[260px] shrink-0 flex-col border-t border-line bg-surface-elev",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-line bg-surface-base px-5 py-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsxs("div",{className:"flex min-w-0 items-baseline gap-2 truncate",children:[c.jsx("span",{children:"timeline — wall-clock waterfall"}),c.jsx("span",{className:"text-ink-dim",children:"· drag to pan · Cmd/Ctrl + wheel zoom · click to inspect"})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[c.jsxs("span",{className:"text-ink-secondary",children:[a.toFixed(a<1?2:1),"×"]}),c.jsx("button",{type:"button",onClick:()=>{var S;return(S=s.current)==null?void 0:S.zoomOut()},className:"inline-flex h-5 w-5 items-center justify-center rounded-sm border border-line hover:bg-surface-rowHover hover:text-ink-primary","aria-label":"Zoom out",title:"Zoom out",children:"−"}),c.jsx("button",{type:"button",onClick:()=>{var S;return(S=s.current)==null?void 0:S.zoomIn()},className:"inline-flex h-5 w-5 items-center justify-center rounded-sm border border-line hover:bg-surface-rowHover hover:text-ink-primary","aria-label":"Zoom in",title:"Zoom in",children:"+"}),c.jsx("button",{type:"button",onClick:()=>{var S;return(S=s.current)==null?void 0:S.reset()},className:"inline-flex h-5 items-center justify-center rounded-sm border border-line px-2 hover:bg-surface-rowHover hover:text-ink-primary","aria-label":"Reset zoom and pan",title:"Reset zoom and pan to defaults",children:"reset"})]})]}),c.jsx("div",{className:"flex-1",children:c.jsx(xP,{messages:o,controlsRef:s,onZoomChange:l,onSelectSeq:S=>{n?n(S):(i(S),t())}})})]})]})]})}):null}const NP={hotspot:"●","long-tail":"▲",outlier:"◆",busiest:"■",errors:"✗"},CP={hotspot:"text-accent-warn","long-tail":"text-accent-warn",outlier:"text-accent-warn",busiest:"text-accent-info",errors:"text-accent-error"},EP={hotspot:"hotspot","long-tail":"long tail",outlier:"outlier",busiest:"busiest",errors:"errors"};function PP({insights:e}){return c.jsxs("div",{className:"border-b border-line bg-surface-base px-5 py-2.5",children:[c.jsx("div",{className:"mb-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"insights"}),c.jsx("ul",{className:"space-y-1.5",children:e.map(t=>c.jsxs("li",{className:"flex items-start gap-2",children:[c.jsx("span",{"aria-hidden":!0,className:K("mt-[3px] inline-block text-[9px] leading-none",CP[t.kind]),children:NP[t.kind]}),c.jsx("div",{className:"min-w-[68px] font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:EP[t.kind]}),c.jsxs("div",{className:"flex-1 text-[11px] leading-snug",children:[c.jsx("div",{className:"text-ink-primary",children:t.summary}),t.detail&&c.jsx("div",{className:"text-[10px] text-ink-muted",children:t.detail})]})]},t.kind))})]})}function IP({count:e,max:t,kind:n}){const o=t>0?e/t*100:0,r=n==="request"?"bg-accent-out/15":"bg-accent-note/15";return c.jsxs("div",{className:"relative inline-block w-[44px] text-right",children:[c.jsx("div",{"aria-hidden":!0,className:K("absolute inset-y-[1px] right-0 rounded-sm",r),style:{width:`${o}%`}}),c.jsx("span",{className:"relative",children:e})]})}function lr(e,t,n){return(o,r)=>{r?t(n==="asc"?"desc":"asc"):(e(o),t(o==="method"?"asc":"desc"))}}function cr({sk:e,current:t,dir:n,onSort:o,align:r="left",className:i,children:s}){const a=t===e;return c.jsxs("th",{className:K("cursor-pointer select-none px-3 py-2 transition-colors hover:text-ink-primary",r==="right"?"text-right":"",a?"text-ink-primary":"",i),onClick:()=>o(e,a),"aria-sort":a?n==="asc"?"ascending":"descending":"none",children:[c.jsx("span",{children:s}),a&&c.jsx("span",{className:"ml-1 text-accent-warn",children:n==="asc"?"↑":"↓"})]})}function OP({kind:e}){const t=e==="request"?"text-accent-out":"text-accent-note",n=e==="request"?"req":"ntf";return c.jsx("span",{className:K("text-[10px] uppercase tracking-widest",t),title:e,children:n})}function RP(e){let t=0,n=0,o=0;for(const r of e)r.kind==="request"?t+=r.count:n+=r.count,o+=r.sampleSize;return{methods:e.length,requests:t,notifications:n,samples:o}}function AP(e,t,n){const o=n==="asc"?1:-1,r=[...e];return r.sort((i,s)=>{const a=Dh(i,t),l=Dh(s,t);return a===null&&l!==null?1:a!==null&&l===null?-1:t==="method"?o*i.method.localeCompare(s.method):a===null||l===null?0:o*(a-l)}),r}function Dh(e,t){switch(t){case"method":return 0;case"count":return e.count;case"p50":return e.p50;case"p99":return e.p99;case"max":return e.max;case"total":return e.totalLatencyMs}}const cf=["raw.githubusercontent.com","gist.githubusercontent.com"];function Zb(e){try{return{ok:!0,export:BC(e)}}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t)}}}function MP(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol!=="https:"?!1:cf.includes(t.host)}async function qP(e){if(!MP(e))return{ok:!1,error:`host not in playground allowlist (${cf.join(", ")})`};let t;try{t=await fetch(e,{redirect:"follow"})}catch(o){return{ok:!1,error:`fetch failed: ${o instanceof Error?o.message:String(o)}`}}if(!t.ok)return{ok:!1,error:`HTTP ${t.status} ${t.statusText}`};const n=await t.text();return Zb(n)}function UP({initialUrl:e=null}){const[t,n]=I.useState(null),[o,r]=I.useState(e!==null),[i,s]=I.useState(!1),[a,l]=I.useState(""),d=I.useRef(null),p=(b,g)=>{b.ok?(ne.getState().loadFromExport(b.export),n(null)):n(`${g}: ${b.error}`),r(!1)},m=async b=>{r(!0),n(null);try{const g=await b.text();p(Zb(g),b.name)}catch(g){n(`${b.name}: ${g instanceof Error?g.message:String(g)}`),r(!1)}},v=async b=>{r(!0),n(null),p(await qP(b),b)},h=I.useRef(e);if(h.current!==null){const b=h.current;h.current=null,v(b)}const y=b=>{var f;b.preventDefault(),s(!1);const g=(f=b.dataTransfer.files)==null?void 0:f[0];g&&m(g)};return c.jsx("div",{className:"flex h-full w-full items-center justify-center bg-grid",children:c.jsxs("div",{className:"relative w-[min(720px,92%)] rounded-md border border-line bg-surface-elev/80 p-6 backdrop-blur-sm",children:[c.jsxs("div",{className:"mb-1 flex items-baseline gap-3",children:[c.jsx("span",{className:"font-display text-sm uppercase tracking-[0.18em] text-ink-muted",children:"acp.devtools"}),c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:"playground"})]}),c.jsx("h2",{className:"font-display text-2xl uppercase tracking-tight text-ink-primary",children:"Drop an exported session"}),c.jsxs("p",{className:"mt-2 font-sans text-sm leading-relaxed text-ink-secondary",children:["The playground renders ACP session exports client-side. Nothing leaves your browser. Generate exports with ",c.jsx("code",{className:"font-mono",children:"acp-devtools export <id>"})," ","— auth headers and proxy tokens are redacted by default."]}),c.jsxs("div",{role:"button",tabIndex:0,"aria-label":"Drop session export here or click to pick a file",onClick:()=>{var b;return(b=d.current)==null?void 0:b.click()},onKeyDown:b=>{var g;(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),(g=d.current)==null||g.click())},onDragOver:b=>{b.preventDefault(),s(!0)},onDragLeave:()=>s(!1),onDrop:y,className:K("mt-5 flex h-40 cursor-pointer flex-col items-center justify-center rounded-md border-2 border-dashed text-center transition-colors",i?"border-accent-out bg-accent-out/10":"border-line bg-surface-base/40 hover:border-ink-muted"),children:[c.jsx("span",{className:"font-display text-sm uppercase tracking-[0.18em] text-ink-muted",children:o?"Loading…":"Drop .json here"}),c.jsx("span",{className:"mt-1 font-mono text-[11px] text-ink-dim",children:"or click to pick a file"}),c.jsx("input",{ref:d,type:"file",accept:".json,application/json",className:"hidden",onChange:b=>{var f;const g=(f=b.target.files)==null?void 0:f[0];g&&m(g),b.target.value=""}})]}),c.jsxs("form",{className:"mt-4 flex items-center gap-2",onSubmit:b=>{b.preventDefault();const g=a.trim();g&&v(g)},children:[c.jsx("input",{type:"url",value:a,onChange:b=>l(b.target.value),placeholder:"https://raw.githubusercontent.com/…/session.json",className:"flex-1 rounded-sm border border-line bg-surface-base px-3 py-2 font-mono text-[12px] text-ink-primary outline-none focus:border-ink-muted","aria-label":"Load session from URL"}),c.jsx("button",{type:"submit",disabled:o||a.trim().length===0,className:"rounded-sm border border-line bg-surface-base px-3 py-2 font-display text-[11px] uppercase tracking-widest text-ink-secondary transition-colors hover:border-ink-muted disabled:cursor-not-allowed disabled:opacity-50",children:"Load"})]}),c.jsxs("p",{className:"mt-2 font-mono text-[10px] leading-relaxed text-ink-dim",children:["URL allowlist: ",cf.join(", "),". Gists are public — don't use this for anything you wouldn't post on Twitter."]}),t&&c.jsx("p",{className:"mt-3 font-mono text-[11px] text-accent-error",children:t})]})})}const LP=[.5,1,2,4,8];function DP(){const e=ne(h=>h.messages),t=ne(h=>h.playback),n=ne(h=>h.setPlayhead),o=ne(h=>h.setPlaying),r=ne(h=>h.setPlaybackSpeed),i=e.length>0?e[0].seq:0,s=e.length>0?e[e.length-1].seq:0,a=t.playhead,l=a??i,d=a!==null&&a>=s,p=I.useRef(null);if(I.useEffect(()=>{if(!t.playing)return;if(d){o(!1);return}const h=a===null?-1:e.findIndex(u=>u.seq===a),y=e[h+1];if(!y){o(!1);return}const b=h>=0?e[h]:void 0,g=b?y.timestamp-b.timestamp:0,f=Math.max(15,Math.min(1500,g/t.speed));return p.current=setTimeout(()=>{n(y.seq)},f),()=>{p.current&&(clearTimeout(p.current),p.current=null)}},[t.playing,t.speed,a,e,d,n,o]),e.length===0)return null;const m=h=>{n(h),t.playing&&o(!1)},v=()=>{d?(n(null),o(!0)):o(!t.playing)};return c.jsxs("div",{className:"flex items-center gap-3 border-t border-line bg-surface-elev/70 px-4 py-2 font-mono text-[11px]",children:[c.jsx("button",{type:"button",onClick:v,className:K("inline-flex h-6 w-12 items-center justify-center rounded-sm border font-semibold uppercase tracking-widest transition-colors",t.playing?"border-accent-warn/50 bg-accent-warn/10 text-accent-warn":"border-accent-out/50 bg-accent-out/10 text-accent-out"),title:t.playing?"pause":d?"restart playback":"play",children:t.playing?"❚❚":d?"↺":"▶"}),c.jsxs("span",{className:"w-20 shrink-0 text-right text-ink-secondary",children:[String(a??0).padStart(3,"0")," / ",String(s).padStart(3,"0")]}),c.jsx("input",{type:"range",min:i,max:s,value:l,onChange:h=>m(Number(h.target.value)),className:"h-1 flex-1 cursor-pointer accent-accent-out"}),c.jsx("div",{className:"flex shrink-0 items-center gap-1",children:LP.map(h=>c.jsxs("button",{type:"button",onClick:()=>r(h),className:K("rounded-sm border px-1.5 py-0.5 text-[10px] uppercase tracking-widest transition-colors",t.speed===h?"border-accent-out/50 bg-accent-out/10 text-accent-out":"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),title:`${h}× speed`,children:[h,"×"]},h))})]})}function ex(e=5e3){const[t,n]=I.useState(()=>Date.now());return I.useEffect(()=>{const o=setInterval(()=>n(Date.now()),e);return()=>clearInterval(o)},[e]),t}function zP({open:e,onClose:t}){const n=ne(a=>a.session),o=ne(a=>a.messages),r=I.useMemo(()=>cl(o),[o]),{rendered:i,visible:s}=sf(e);return I.useEffect(()=>{if(!e)return;const a=l=>{l.key==="Escape"&&(l.preventDefault(),t())};return window.addEventListener("keydown",a,!0),()=>window.removeEventListener("keydown",a,!0)},[e,t]),i?c.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"Session info",className:K("fixed inset-0 z-[100] flex items-start justify-end bg-black/60 backdrop-blur-sm transition-opacity duration-200 ease-out",s?"opacity-100":"opacity-0"),onMouseDown:a=>{a.target===a.currentTarget&&t()},children:c.jsxs("div",{className:K("flex h-full w-full max-w-[440px] flex-col border-l border-line bg-surface-base shadow-2xl transition-transform duration-200 ease-out",s?"translate-x-0":"translate-x-full"),children:[c.jsxs("header",{className:"flex items-center justify-between border-b border-line px-5 py-3",children:[c.jsx("div",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"Session info"}),c.jsx("button",{type:"button",onClick:t,className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors hover:text-ink-primary","aria-label":"Close session info panel",children:"close"})]}),c.jsx("div",{className:"flex-1 overflow-y-auto px-5 py-4",children:n?c.jsx(FP,{session:n,meta:r,messages:o}):c.jsx("div",{className:"font-mono text-[11px] text-ink-muted",children:"No session attached."})})]})}):null}function FP({session:e,meta:t,messages:n}){const o=ex(5e3),{primary:r}=ql(e),i=I.useMemo(()=>HP(n),[n]);return c.jsxs("div",{className:"space-y-5 text-[12px]",children:[c.jsxs(Si,{title:"Summary",children:[c.jsx(mn,{label:"Session",value:r}),c.jsx(mn,{label:"Client",value:t.client.title||t.client.name||e.clientName||"—",secondary:t.client.version?`v${t.client.version}${t.client.platform?` · ${t.client.platform}`:""}`:null}),c.jsx(mn,{label:"Agent",value:t.agent.name||BP(e.agentCommand)||"—",secondary:t.agent.version?`v${t.agent.version}`:null}),c.jsx(mn,{label:"Protocol",value:t.protocolVersion!==null?`ACP v${t.protocolVersion}`:"—"}),c.jsx(mn,{label:"Started",value:_a(e.startedAt,o)}),c.jsx(mn,{label:"Messages",value:`${n.length} (req ${i.req} · rsp ${i.rsp} · ntf ${i.note} · err ${i.err})`})]}),c.jsxs(Si,{title:"Client capabilities",children:[c.jsx(No,{label:"fs.readTextFile",enabled:t.clientCapabilities.fsReadTextFile}),c.jsx(No,{label:"fs.writeTextFile",enabled:t.clientCapabilities.fsWriteTextFile}),c.jsx(No,{label:"terminal",enabled:t.clientCapabilities.terminal}),c.jsx(No,{label:"auth.terminal",enabled:t.clientCapabilities.authTerminal}),c.jsx(No,{label:"auth.gateway",enabled:t.clientCapabilities.authGateway})]}),c.jsxs(Si,{title:"Agent capabilities",children:[c.jsx(No,{label:"prompt",enabled:t.agentCapabilities.prompt}),c.jsx(No,{label:"loadSession",enabled:t.agentCapabilities.loadSession}),c.jsx(mn,{label:"Auth methods",value:String(t.agent.authMethods)})]}),c.jsxs(Si,{title:"Runtime state",children:[c.jsx(mn,{label:"Mode",value:t.runtime.currentMode??"—",secondary:t.runtime.modeChanges>0?`changed ${t.runtime.modeChanges}× this session`:null}),c.jsx(mn,{label:"Model",value:t.runtime.currentModel??"—",secondary:t.runtime.modelChanges>0?`changed ${t.runtime.modelChanges}× this session`:null}),c.jsx(mn,{label:"Commands",value:t.runtime.availableCommands.length>0?t.runtime.availableCommands.join(", "):"—",wrap:!0})]}),t.extensions.jetbrainsProxyConfig!==null&&c.jsx(Si,{title:"JetBrains extensions",children:c.jsx("div",{className:"rounded-sm border border-line bg-surface-elev p-3 font-mono text-[11px] text-ink-secondary",children:c.jsx(al,{value:t.extensions.jetbrainsProxyConfig})})})]})}function BP(e){if(!e)return null;const t=e.trim().split(/\s+/);if(t[0]==="npx")for(let n=1;n<t.length;n++){const o=t[n];if(!o.startsWith("-"))return o}return t[0]??null}function HP(e){let t=0,n=0,o=0,r=0;for(const i of e)i.kind==="request"?t++:i.kind==="response"?n++:i.kind==="notification"?o++:i.kind==="error"&&r++;return{req:t,rsp:n,note:o,err:r}}function Si({title:e,children:t}){return c.jsxs("div",{children:[c.jsx("h3",{className:"mb-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("div",{className:"space-y-1.5",children:t})]})}function mn({label:e,value:t,secondary:n,wrap:o=!1}){return c.jsxs("div",{className:"flex items-baseline gap-3",children:[c.jsx("span",{className:"w-[120px] shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsxs("span",{className:K("flex-1 text-ink-primary",o?"whitespace-normal break-words":"truncate"),title:o?void 0:t,children:[t,n&&c.jsx("span",{className:"ml-2 text-[10px] text-ink-muted",children:n})]})]})}function No({label:e,enabled:t}){return c.jsxs("div",{className:"flex items-baseline gap-3",children:[c.jsx("span",{className:"w-[120px] shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("span",{className:K("flex-1 font-mono text-[11px]",t?"text-accent-ok":"text-ink-dim"),children:t?"✓ enabled":"— not advertised"})]})}function VP({left:e,right:t,storageKey:n,initialLeftFraction:o=.6,minLeft:r=320,minRight:i=320}){const s=I.useRef(null),[a,l]=I.useState(null),d=I.useRef(!1);I.useEffect(()=>{if(!s.current)return;const h=s.current.clientWidth,y=n?Number(localStorage.getItem(n)):NaN;n&&Number.isFinite(y)&&y>0&&y<h?l(y):l(Math.round(h*o))},[o,n]);const p=I.useCallback(h=>{h.preventDefault(),d.current=!0,h.currentTarget.setPointerCapture(h.pointerId)},[]),m=I.useCallback(h=>{if(!d.current||!s.current)return;const y=s.current.getBoundingClientRect(),b=h.clientX-y.left,g=y.width,f=Math.min(Math.max(b,r),g-i);l(f),n&&localStorage.setItem(n,String(Math.round(f)))},[r,i,n]),v=I.useCallback(h=>{d.current=!1;try{h.currentTarget.releasePointerCapture(h.pointerId)}catch{}},[]);return c.jsxs("div",{ref:s,className:"flex h-full w-full overflow-hidden",children:[c.jsx("div",{style:{width:a??"60%"},className:"flex h-full min-w-0 flex-col",children:e}),c.jsx("div",{role:"separator","aria-orientation":"vertical",className:K("group relative w-px shrink-0 cursor-col-resize bg-line",'before:absolute before:inset-y-0 before:-left-1 before:-right-1 before:content-[""]'),onPointerDown:p,onPointerMove:m,onPointerUp:v,onPointerCancel:v,children:c.jsx("div",{className:"absolute inset-y-0 left-0 w-px bg-line transition-colors group-hover:bg-accent-out/40"})}),c.jsx("div",{className:"flex h-full min-w-0 flex-1 flex-col",children:t})]})}function WP(){const e=ne(n=>n.messages),t=I.useMemo(()=>{let n=0,o=0,r=0,i=0,s=0;const a=new Map;for(const h of e)switch(a.set(h.seq,h.timestamp),s+=h.raw.length,h.kind){case"request":n+=1;break;case"response":o+=1;break;case"notification":r+=1;break;case"error":i+=1;break}const l=Cl(e),d=[];for(const h of e){if(h.kind!=="response"&&h.kind!=="error")continue;const y=l.get(h.seq);if(y===void 0)continue;const b=a.get(y);b!==void 0&&d.push(h.timestamp-b)}d.sort((h,y)=>h-y);const p=d.length?bh(d,50):null,m=d.length?bh(d,99):null,v=JN(tf(e));return{total:e.length,req:n,res:o,note:r,err:i,bytes:s,p50:p,p99:m,spec:v}},[e]);return c.jsxs("footer",{className:"flex items-center justify-between gap-6 border-t border-line bg-surface-elev/80 px-5 py-1.5 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsxs("div",{className:"flex items-center gap-5",children:[c.jsx(Yn,{label:"msgs",value:t.total,tone:"primary"}),c.jsx(Yn,{label:"req",value:t.req,tone:"out"}),c.jsx(Yn,{label:"rsp",value:t.res,tone:"in"}),c.jsx(Yn,{label:"ntf",value:t.note,tone:"note"}),c.jsx(Yn,{label:"err",value:t.err,tone:t.err>0?"error":"muted"})]}),c.jsxs("div",{className:"flex items-center gap-5",children:[c.jsx(Yn,{label:"p50",value:t.p50!==null?Vt(t.p50):"—",tone:"primary"}),c.jsx(Yn,{label:"p99",value:t.p99!==null?Vt(t.p99):"—",tone:"primary"}),c.jsx(Yn,{label:"bytes",value:t.total>0?Ul(t.bytes):"—",tone:"primary"}),t.spec.checked>0&&c.jsx(GP,{invalidFrames:t.spec.invalidFrames,totalErrors:t.spec.totalErrors,affectedMethods:t.spec.affectedMethods,advisoryFrames:t.spec.advisoryFrames,totalAdvisories:t.spec.totalAdvisories}),c.jsx(KP,{})]})]})}function KP(){return c.jsxs("a",{href:"https://github.com/maksugr/acp-devtools",target:"_blank",rel:"noreferrer noopener",title:"Enjoying acp-devtools? Star it on GitHub — thank you!","aria-label":"Star acp-devtools on GitHub",className:"inline-flex items-baseline gap-1 text-ink-muted transition-colors hover:text-accent-warn focus-visible:text-accent-warn focus-visible:outline-none",children:[c.jsx("span",{"aria-hidden":"true",className:"text-[10px]",children:"★"}),c.jsx("span",{className:"text-[9px] tracking-normal",children:"Star on GitHub"})]})}function GP({invalidFrames:e,totalErrors:t,affectedMethods:n,advisoryFrames:o,totalAdvisories:r}){const i=o>0?c.jsx(Ar,{tone:"warn",label:c.jsxs("span",{className:"font-sans",children:[r," field",r===1?"":"s"," a future ACP version will require ",r===1?"is":"are"," missing — valid today"]}),children:c.jsxs("span",{className:"text-accent-warn",children:["⚠ ",o]})}):null;if(e===0)return c.jsxs("span",{className:"inline-flex items-baseline gap-1.5",children:[c.jsx(Ar,{label:c.jsx("span",{className:"font-sans",children:"every frame validates against the ACP schema"}),tone:"info",children:c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{children:"spec"}),c.jsx("span",{className:"text-accent-ok",children:"✓"})]})}),i]});const s=`${t} schema error${t===1?"":"s"} in ${e} frame${e===1?"":"s"}`;return c.jsxs("span",{className:"inline-flex items-baseline gap-1.5",children:[c.jsx(Ar,{tone:"warn",label:c.jsxs("div",{className:"space-y-1.5 font-sans",children:[c.jsx("div",{children:s}),n.length>0&&c.jsxs("div",{className:"font-mono text-[10px] text-ink-muted",children:["methods: ",n.join(", ")]})]}),children:c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{children:"spec"}),c.jsxs("span",{className:"text-accent-error",children:["⚠ ",e]})]})}),i]})}function Yn({label:e,value:t,tone:n}){const o=n==="primary"?"text-ink-primary":n==="out"?"text-accent-out":n==="in"?"text-accent-in":n==="note"?"text-accent-note":n==="error"?"text-accent-error":"text-ink-muted";return c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{children:e}),c.jsx("span",{className:o,children:t})]})}const zl=0,$o=1,ri=2,tx=4;function zh(e){return()=>e}function JP(e){e()}function nx(e,t){return n=>e(t(n))}function Fh(e,t){return()=>e(t)}function QP(e,t){return n=>e(t,n)}function df(e){return e!==void 0}function YP(...e){return()=>{e.map(JP)}}function ii(){}function Fl(e,t){return t(e),e}function XP(e,t){return t(e)}function Ue(...e){return e}function $e(e,t){return e($o,t)}function me(e,t){e(zl,t)}function uf(e){e(ri)}function Le(e){return e(tx)}function oe(e,t){return $e(e,QP(t,zl))}function cn(e,t){const n=e($o,o=>{n(),t(o)});return n}function Bh(e){let t,n;return o=>r=>{t=r,n&&clearTimeout(n),n=setTimeout(()=>{o(t)},e)}}function ox(e,t){return e===t}function Me(e=ox){let t;return n=>o=>{e(t,o)||(t=o,n(o))}}function ae(e){return t=>n=>{e(n)&&t(n)}}function Z(e){return t=>nx(t,e)}function yn(e){return t=>()=>{t(e)}}function B(e,...t){const n=ZP(...t);return(o,r)=>{switch(o){case ri:uf(e);return;case $o:return $e(e,n(r))}}}function Sn(e,t){return n=>o=>{n(t=e(t,o))}}function Qo(e){return t=>n=>{e>0?e--:t(n)}}function On(e){let t=null,n;return o=>r=>{t=r,!n&&(n=setTimeout(()=>{n=void 0,o(t)},e))}}function he(...e){const t=new Array(e.length);let n=0,o=null;const r=2**e.length-1;return e.forEach((i,s)=>{const a=2**s;$e(i,l=>{const d=n;n|=a,t[s]=l,d!==r&&n===r&&o&&(o(),o=null)})}),i=>s=>{const a=()=>{i([s].concat(t))};n===r?a():o=a}}function ZP(...e){return t=>e.reduceRight(XP,t)}function eI(e){let t,n;const o=()=>t==null?void 0:t();return function(r,i){switch(r){case $o:return i?n===i?void 0:(o(),n=i,t=$e(e,i),t):(o(),ii);case ri:o(),n=null;return}}}function W(e){let t=e;const n=ve();return(o,r)=>{switch(o){case zl:t=r;break;case $o:{r(t);break}case tx:return t}return n(o,r)}}function yt(e,t){return Fl(W(t),n=>oe(e,n))}function ve(){const e=[];return(t,n)=>{switch(t){case zl:e.slice().forEach(o=>{o(n)});return;case ri:e.splice(0,e.length);return;case $o:return e.push(n),()=>{const o=e.indexOf(n);o>-1&&e.splice(o,1)}}}}function Mt(e){return Fl(ve(),t=>oe(e,t))}function xe(e,t=[],{singleton:n}={singleton:!0}){return{constructor:e,dependencies:t,id:tI(),singleton:n}}const tI=()=>Symbol();function nI(e){const t=new Map,n=({constructor:o,dependencies:r,id:i,singleton:s})=>{if(s&&t.has(i))return t.get(i);const a=o(r.map(l=>n(l)));return s&&t.set(i,a),a};return n(e)}function Qe(...e){const t=ve(),n=new Array(e.length);let o=0;const r=2**e.length-1;return e.forEach((i,s)=>{const a=2**s;$e(i,l=>{n[s]=l,o|=a,o===r&&me(t,n)})}),function(i,s){switch(i){case ri:{uf(t);return}case $o:return o===r&&s(n),$e(t,s)}}}function se(e,t=ox){return B(e,Me(t))}function Hd(...e){return function(t,n){switch(t){case ri:return;case $o:return YP(...e.map(o=>$e(o,n)))}}}const nt={DEBUG:0,INFO:1,WARN:2,ERROR:3},oI={[nt.DEBUG]:"debug",[nt.ERROR]:"error",[nt.INFO]:"log",[nt.WARN]:"warn"},rI=()=>typeof globalThis>"u"?window:globalThis,ko=xe(()=>{const e=W(nt.ERROR);return{log:W((t,n,o=nt.INFO)=>{const r=rI().VIRTUOSO_LOG_LEVEL??Le(e);o>=r&&console[oI[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,n)}),logLevel:e}},[],{singleton:!0}),Vd=new WeakMap;function rx(e){return"self"in e?e.document.documentElement:e}function iI(e){const t=rx(e),n=Vd.get(t);if(n!==void 0)return n;const o=t.ownerDocument.defaultView.getComputedStyle(t).direction==="rtl";return Vd.set(t,o),o}function Hh(e){Vd.delete(rx(e))}function ix(e,t){return iI(e)?-t:t}const Lo=ix;function Vh(e,t){return ix(e,t)}function Zo(e,t,n){return pf(e,t,n).callbackRef}function pf(e,t,n){const o=te.useRef(null);let r=s=>{};const i=te.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(s=>{const a=()=>{const l=s[0].target;l.offsetParent!==null&&e(l)};n?a():requestAnimationFrame(a)}):null,[e,n]);return r=s=>{s&&t?(i==null||i.observe(s),o.current=s):(o.current&&(i==null||i.unobserve(o.current)),o.current=null)},{callbackRef:r,ref:o}}function sI(e,t,n,o,r,i,s,a,l){const d=te.useCallback(p=>{const m=aI(p.children,t,a?"offsetWidth":"offsetHeight",r);let v=p.parentElement;for(;v.dataset.virtuosoScroller===void 0;)v=v.parentElement;const h=v.lastElementChild.dataset.viewportType==="window";let y;h&&(y=v.ownerDocument.defaultView);const b=s?a?s.scrollWidth:s.scrollHeight:h?a?y.document.documentElement.scrollWidth:y.document.documentElement.scrollHeight:a?v.scrollWidth:v.scrollHeight,g=s?a?s.offsetWidth:s.offsetHeight:h?a?y.innerWidth:y.innerHeight:a?v.offsetWidth:v.offsetHeight,f=s?a?Lo(s,s.scrollLeft):s.scrollTop:h?a?Lo(y,y.scrollX||y.document.documentElement.scrollLeft):y.scrollY||y.document.documentElement.scrollTop:a?Lo(v,v.scrollLeft):v.scrollTop;o({scrollHeight:b,scrollTop:Math.max(f,0),viewportHeight:g}),i==null||i(a?Wh("column-gap",getComputedStyle(p).columnGap,r):Wh("row-gap",getComputedStyle(p).rowGap,r)),m!==null&&e(m)},[e,t,r,i,s,o,a]);return pf(d,n,l)}function aI(e,t,n,o){const r=e.length;if(r===0)return null;const i=[];for(let s=0;s<r;s++){const a=e.item(s);if(a.dataset.index===void 0)continue;const l=parseInt(a.dataset.index),d=parseFloat(a.dataset.knownSize),p=t(a,n);if(p===0&&o("Zero-sized element, this should not happen",{child:a},nt.ERROR),p===d)continue;const m=i[i.length-1];i.length===0||m.size!==p||m.endIndex!==l-1?i.push({endIndex:l,size:p,startIndex:l}):i[i.length-1].endIndex++}return i}function Wh(e,t,n){return t!=="normal"&&(t==null?void 0:t.endsWith("px"))!==!0&&n(`${e} was not resolved to pixel value correctly`,t,nt.WARN),t==="normal"?0:parseInt(t??"0",10)}function sx(e,t,n){const o=te.useRef(null),r=te.useCallback(l=>{if(!(l!=null&&l.offsetParent))return;const d=l.getBoundingClientRect(),p=d.width;let m,v;if(t){const h=t.getBoundingClientRect(),y=d.top-h.top;v=h.height-Math.max(0,y),m=y+t.scrollTop}else{const h=s.current.ownerDocument.defaultView;v=h.innerHeight-Math.max(0,d.top),m=d.top+h.scrollY}o.current={listHeight:d.height,offsetTop:m,visibleHeight:v,visibleWidth:p},e(o.current)},[e,t]),{callbackRef:i,ref:s}=pf(r,!0,n),a=te.useCallback(()=>{r(s.current)},[r,s]);return te.useEffect(()=>{var d;if(t){t.addEventListener("scroll",a);const p=new ResizeObserver(()=>{requestAnimationFrame(a)});return p.observe(t),()=>{t.removeEventListener("scroll",a),p.unobserve(t)}}const l=(d=s.current)==null?void 0:d.ownerDocument.defaultView;return l==null||l.addEventListener("scroll",a),l==null||l.addEventListener("resize",a),()=>{l==null||l.removeEventListener("scroll",a),l==null||l.removeEventListener("resize",a)}},[a,t,s]),i}const kt=xe(()=>{const e=ve(),t=ve(),n=W(0),o=ve(),r=W(0),i=ve(),s=ve(),a=W(0),l=W(0),d=W(0),p=W(0),m=ve(),v=ve(),h=W(!1),y=W(!1),b=W(!1);return oe(B(e,Z(({scrollTop:g})=>g)),t),oe(B(e,Z(({scrollHeight:g})=>g)),s),oe(t,r),{deviation:n,fixedFooterHeight:d,fixedHeaderHeight:l,footerHeight:p,headerHeight:a,horizontalDirection:y,scrollBy:v,scrollContainerState:e,scrollHeight:s,scrollingInProgress:h,scrollTo:m,scrollTop:t,skipAnimationFrameInResizeObserver:b,smoothScrollTargetReached:o,statefulScrollTop:r,viewportHeight:i}},[],{singleton:!0}),ys={lvl:0};function ax(e,t){const n=e.length;if(n===0)return[];let{index:o,value:r}=t(e[0]);const i=[];for(let s=1;s<n;s++){const{index:a,value:l}=t(e[s]);i.push({end:a-1,start:o,value:r}),o=a,r=l}return i.push({end:1/0,start:o,value:r}),i}function Te(e){return e===ys}function gs(e,t){if(!Te(e))return t===e.k?e.v:t<e.k?gs(e.l,t):gs(e.r,t)}function un(e,t,n="k"){if(Te(e))return[-1/0,void 0];if(Number(e[n])===t)return[e.k,e.v];if(Number(e[n])<t){const o=un(e.r,t,n);return o[0]===-1/0?[e.k,e.v]:o}return un(e.l,t,n)}function It(e,t,n){return Te(e)?dx(t,n,1):t===e.k?Ze(e,{k:t,v:n}):t<e.k?Kh(Ze(e,{l:It(e.l,t,n)})):Kh(Ze(e,{r:It(e.r,t,n)}))}function qr(){return ys}function Ur(e,t,n){if(Te(e))return[];const o=un(e,t)[0];return lI(Kd(e,o,n))}function Wd(e,t){if(Te(e))return ys;const{k:n,l:o,r}=e;if(t===n){if(Te(o))return r;if(Te(r))return o;const[i,s]=cx(o);return Na(Ze(e,{k:i,l:lx(o),v:s}))}return t<n?Na(Ze(e,{l:Wd(o,t)})):Na(Ze(e,{r:Wd(r,t)}))}function Do(e){return Te(e)?[]:[...Do(e.l),{k:e.k,v:e.v},...Do(e.r)]}function Kd(e,t,n){if(Te(e))return[];const{k:o,l:r,r:i,v:s}=e;let a=[];return o>t&&(a=a.concat(Kd(r,t,n))),o>=t&&o<=n&&a.push({k:o,v:s}),o<=n&&(a=a.concat(Kd(i,t,n))),a}function Na(e){const{l:t,lvl:n,r:o}=e;if(o.lvl>=n-1&&t.lvl>=n-1)return e;if(n>o.lvl+1){if(_c(t))return ux(Ze(e,{lvl:n-1}));if(!Te(t)&&!Te(t.r))return Ze(t.r,{l:Ze(t,{r:t.r.l}),lvl:n,r:Ze(e,{l:t.r.r,lvl:n-1})});throw new Error("Unexpected empty nodes")}if(_c(e))return Gd(Ze(e,{lvl:n-1}));if(!Te(o)&&!Te(o.l)){const r=o.l,i=_c(r)?o.lvl-1:o.lvl;return Ze(r,{l:Ze(e,{lvl:n-1,r:r.l}),lvl:r.lvl+1,r:Gd(Ze(o,{l:r.r,lvl:i}))})}throw new Error("Unexpected empty nodes")}function Ze(e,t){return dx(t.k!==void 0?t.k:e.k,t.v!==void 0?t.v:e.v,t.lvl!==void 0?t.lvl:e.lvl,t.l!==void 0?t.l:e.l,t.r!==void 0?t.r:e.r)}function lx(e){return Te(e.r)?e.l:Na(Ze(e,{r:lx(e.r)}))}function _c(e){return Te(e)||e.lvl>e.r.lvl}function cx(e){return Te(e.r)?[e.k,e.v]:cx(e.r)}function dx(e,t,n,o=ys,r=ys){return{k:e,l:o,lvl:n,r,v:t}}function Kh(e){return Gd(ux(e))}function ux(e){const{l:t}=e;return!Te(t)&&t.lvl===e.lvl?Ze(t,{r:Ze(e,{l:t.r})}):e}function Gd(e){const{lvl:t,r:n}=e;return!Te(n)&&!Te(n.r)&&n.lvl===t&&n.r.lvl===t?Ze(n,{l:Ze(e,{r:n.l}),lvl:t+1}):e}function lI(e){return ax(e,({k:t,v:n})=>({index:t,value:n}))}function px(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}function vs(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}const ff=xe(()=>({recalcInProgress:W(!1)}),[],{singleton:!0});function fx(e,t,n){return e[ul(e,t,n)]}function ul(e,t,n,o=0){let r=e.length-1;for(;o<=r;){const i=Math.floor((o+r)/2),s=e[i],a=n(s,t);if(a===0)return i;if(a===-1){if(r-o<2)return i-1;r=i-1}else{if(r===o)return i;o=i+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function cI(e,t,n,o){const r=ul(e,t,o),i=ul(e,n,o,r);return e.slice(r,i+1)}function bo(e,t){return Math.round(e.getBoundingClientRect()[t])}function Bl(e){return!Te(e.groupOffsetTree)}function mf({index:e},t){return t===e?0:t<e?-1:1}function dI(){return{groupIndices:[],groupOffsetTree:qr(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:qr()}}function uI(e,t){let n=Te(e)?0:1/0;for(const o of t){const{endIndex:r,size:i,startIndex:s}=o;if(n=Math.min(n,s),Te(e)){e=It(e,0,i);continue}const a=Ur(e,s-1,r+1);if(a.some(vI(o)))continue;let l=!1,d=!1;for(const{end:p,start:m,value:v}of a)l?(r>=m||i===v)&&(e=Wd(e,m)):(d=v!==i,l=!0),p>r&&r>=m&&v!==i&&(e=It(e,r+1,v));d&&(e=It(e,s,i))}return[e,n]}function pI(e){return typeof e.groupIndex<"u"}function fI({offset:e},t){return t===e?0:t<e?-1:1}function bs(e,t,n){if(t.length===0)return 0;const{index:o,offset:r,size:i}=fx(t,e,mf),s=e-o,a=i*s+(s-1)*n+r;return a>0?a+n:a}function mx(e,t){if(!Bl(t))return e;let n=0;for(;t.groupIndices[n]<=e+n;)n++;return e+n}function hx(e,t,n){if(pI(e))return t.groupIndices[e.groupIndex]+1;const o=e.index==="LAST"?n:e.index;let r=mx(o,t);return r=Math.max(0,r,Math.min(n,r)),r}function mI(e,t,n,o=0){return o>0&&(t=Math.max(t,fx(e,o,mf).offset)),ax(cI(e,t,n,fI),gI)}function hI(e,[t,n,o,r]){t.length>0&&o("received item sizes",t,nt.DEBUG);const i=e.sizeTree;let s=i,a=0;if(n.length>0&&Te(i)&&t.length===2){const v=t[0].size,h=t[1].size;s=n.reduce((y,b)=>It(It(y,b,v),b+1,h),s)}else[s,a]=uI(s,t);if(s===i)return e;const{lastIndex:l,lastOffset:d,lastSize:p,offsetTree:m}=Jd(e.offsetTree,a,s,r);return{groupIndices:n,groupOffsetTree:n.reduce((v,h)=>It(v,h,bs(h,m,r)),qr()),lastIndex:l,lastOffset:d,lastSize:p,offsetTree:m,sizeTree:s}}function yI(e){return Do(e).map(({k:t,v:n},o,r)=>{const i=r[o+1];return{endIndex:i!==void 0?i.k-1:1/0,size:n,startIndex:t}})}function Gh(e,t){let n=0,o=0;for(;n<e;)n+=t[o+1]-t[o]-1,o++;return o-(n===e?0:1)}function Jd(e,t,n,o){let r=e,i=0,s=0,a=0,l=0;if(t!==0){l=ul(r,t-1,mf),a=r[l].offset;const d=un(n,t-1);i=d[0],s=d[1],r.length&&r[l].size===un(n,t)[1]&&(l-=1),r=r.slice(0,l+1)}else r=[];for(const{start:d,value:p}of Ur(n,t,1/0)){const m=d-i,v=m*s+a+m*o;r.push({index:d,offset:v,size:p}),i=d,a=v,s=p}return{lastIndex:i,lastOffset:a,lastSize:s,offsetTree:r}}function gI(e){return{index:e.index,value:e}}function vI(e){const{endIndex:t,size:n,startIndex:o}=e;return r=>r.start===o&&(r.end===t||r.end===1/0)&&r.value===n}const bI={offsetHeight:"height",offsetWidth:"width"},Tn=xe(([{log:e},{recalcInProgress:t}])=>{const n=ve(),o=ve(),r=yt(o,0),i=ve(),s=ve(),a=W(0),l=W([]),d=W(void 0),p=W(void 0),m=W(void 0),v=W(void 0),h=W(($,j)=>bo($,bI[j])),y=W(void 0),b=W(0),g=dI(),f=yt(B(n,he(l,e,b),Sn(hI,g),Me()),g),u=yt(B(l,Me(),Sn(($,j)=>({current:j,prev:$.current}),{current:[],prev:[]}),Z(({prev:$})=>$)),[]);oe(B(l,ae($=>$.length>0),he(f,b),Z(([$,j,A])=>{const E=$.reduce((q,z,U)=>It(q,z,bs(z,j.offsetTree,A)||U),qr());return{...j,groupIndices:$,groupOffsetTree:E}})),f),oe(B(o,he(f),ae(([$,{lastIndex:j}])=>$<j),Z(([$,{lastIndex:j,lastSize:A}])=>[{endIndex:j,size:A,startIndex:$}])),n),oe(d,p);const x=yt(B(d,Z($=>$===void 0)),!0);oe(B(p,ae($=>$!==void 0&&Te(Le(f).sizeTree)),Z($=>{const j=Le(m),A=Le(l).length>0;return j!==void 0&&j!==0?A?[{endIndex:0,size:j,startIndex:0},{endIndex:1,size:$,startIndex:1}]:[]:[{endIndex:0,size:$,startIndex:0}]})),n),oe(B(v,ae($=>$!==void 0&&$.length>0&&Te(Le(f).sizeTree)),Z($=>{const j=[];let A=$[0],E=0;for(let q=1;q<$.length;q++){const z=$[q];z!==A&&(j.push({endIndex:q-1,size:A,startIndex:E}),A=z,E=q)}return j.push({endIndex:$.length-1,size:A,startIndex:E}),j})),n),oe(B(l,he(m,p),ae(([,$,j])=>$!==void 0&&j!==void 0),Z(([$,j,A])=>{const E=[];for(let q=0;q<$.length;q++){const z=$[q],U=$[q+1];E.push({startIndex:z,endIndex:z,size:j}),U!==void 0&&E.push({startIndex:z+1,endIndex:U-1,size:A})}return E})),n);const S=Mt(B(n,he(f),Sn(({sizes:$},[j,A])=>({changed:A!==$,sizes:A}),{changed:!1,sizes:g}),Z($=>$.changed)));$e(B(a,Sn(($,j)=>({diff:$.prev-j,prev:j}),{diff:0,prev:0}),Z($=>$.diff)),$=>{const{groupIndices:j}=Le(f);if($>0)me(t,!0),me(i,$+Gh($,j));else if($<0){const A=Le(u);A.length>0&&($-=Gh(-$,A)),me(s,$)}}),$e(B(a,he(e)),([$,j])=>{$<0&&j("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:a},nt.ERROR)});const T=Mt(i);oe(B(i,he(f),Z(([$,j])=>{const A=j.groupIndices.length>0,E=[],q=j.lastSize;if(A){const z=gs(j.sizeTree,0);let U=0,L=0;for(;U<$;){const G=j.groupIndices[L],Y=j.groupIndices.length===L+1?1/0:j.groupIndices[L+1]-G-1;E.push({endIndex:G,size:z,startIndex:G}),E.push({endIndex:G+1+Y-1,size:q,startIndex:G+1}),L++,U+=Y+1}const F=Do(j.sizeTree);return U!==$&&F.shift(),F.reduce((G,{k:Y,v:D})=>{let J=G.ranges;return G.prevSize!==0&&(J=[...G.ranges,{endIndex:Y+$-1,size:G.prevSize,startIndex:G.prevIndex}]),{prevIndex:Y+$,prevSize:D,ranges:J}},{prevIndex:$,prevSize:0,ranges:E}).ranges}return Do(j.sizeTree).reduce((z,{k:U,v:L})=>({prevIndex:U+$,prevSize:L,ranges:[...z.ranges,{endIndex:U+$-1,size:z.prevSize,startIndex:z.prevIndex}]}),{prevIndex:0,prevSize:q,ranges:[]}).ranges})),n);const C=Mt(B(s,he(f,b),Z(([$,{offsetTree:j},A])=>{const E=-$;return bs(E,j,A)})));return oe(B(s,he(f,b),Z(([$,j,A])=>{if(j.groupIndices.length>0){if(Te(j.sizeTree))return j;let q=qr();const z=Le(u);let U=0,L=0,F=0;for(;U<-$;){F=z[L];const G=z[L+1]-F-1;L++,U+=G+1}if(q=Do(j.sizeTree).reduce((G,{k:Y,v:D})=>It(G,Math.max(0,Y+$),D),q),U!==-$){const G=gs(j.sizeTree,F);q=It(q,0,G);const Y=un(j.sizeTree,-$+1)[1];q=It(q,1,Y)}return{...j,sizeTree:q,...Jd(j.offsetTree,0,q,A)}}const E=Do(j.sizeTree).reduce((q,{k:z,v:U})=>It(q,Math.max(0,z+$),U),qr());return{...j,sizeTree:E,...Jd(j.offsetTree,0,E,A)}})),f),{beforeUnshiftWith:T,data:y,defaultItemSize:p,firstItemIndex:a,fixedItemSize:d,fixedGroupSize:m,gap:b,groupIndices:l,heightEstimates:v,itemSize:h,listRefresh:S,shiftWith:s,shiftWithOffset:C,sizeRanges:n,sizes:f,statefulTotalCount:r,totalCount:o,trackItemSizes:x,unshiftWith:i}},Ue(ko,ff),{singleton:!0});function xI(e){return e.reduce((t,n)=>(t.groupIndices.push(t.totalCount),t.totalCount+=n+1,t),{groupIndices:[],totalCount:0})}const yx=xe(([{groupIndices:e,sizes:t,totalCount:n},{headerHeight:o,scrollTop:r}])=>{const i=ve(),s=ve(),a=Mt(B(i,Z(xI)));return oe(B(a,Z(l=>l.totalCount)),n),oe(B(a,Z(l=>l.groupIndices)),e),oe(B(Qe(r,t,o),ae(([l,d])=>Bl(d)),Z(([l,d,p])=>un(d.groupOffsetTree,Math.max(l-p,0),"v")[0]),Me(),Z(l=>[l])),s),{groupCounts:i,topItemsIndexes:s}},Ue(Tn,kt)),To=xe(([{log:e}])=>{const t=W(!1),n=Mt(B(t,ae(o=>o),Me()));return $e(t,o=>{o&&Le(e)("props updated",{},nt.DEBUG)}),{didMount:n,propsReady:t}},Ue(ko),{singleton:!0}),wI=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function gx(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!wI)&&(t.behavior="auto"),t.offset===void 0&&(t.offset=0),t}const Ps=xe(([{gap:e,listRefresh:t,sizes:n,totalCount:o},{fixedFooterHeight:r,fixedHeaderHeight:i,footerHeight:s,headerHeight:a,scrollingInProgress:l,scrollTo:d,smoothScrollTargetReached:p,viewportHeight:m},{log:v}])=>{const h=ve(),y=ve(),b=W(0);let g=null,f=null,u=null;function x(){g!==null&&(g(),g=null),u!==null&&(u(),u=null),f&&(clearTimeout(f),f=null),me(l,!1)}return oe(B(h,he(n,m,o,b,a,s,v),he(e,i,r),Z(([[S,T,C,$,j,A,E,q],z,U,L])=>{const F=gx(S),{align:G,behavior:Y,offset:D}=F,J=$-1,O=hx(F,T,J);let _=bs(O,T.offsetTree,z)+A;G==="end"?(_+=U+un(T.sizeTree,O)[1]-C+L,O===J&&(_+=E)):G==="center"?_+=(U+un(T.sizeTree,O)[1]-C+L)/2:_-=j,D!==void 0&&D!==0&&(_+=D);const M=P=>{x(),P?(q("retrying to scroll to",{location:S},nt.DEBUG),me(h,S)):(me(y,!0),q("list did not change, scroll successful",{},nt.DEBUG))};if(x(),Y==="smooth"){let P=!1;u=$e(t,w=>{P=P||w}),g=cn(p,()=>{M(P)})}else g=cn(B(t,SI(150)),M);return f=setTimeout(()=>{x()},1200),me(l,!0),q("scrolling from index to",{behavior:Y,index:O,top:_},nt.DEBUG),{behavior:Y,top:_}})),d),{scrollTargetReached:y,scrollToIndex:h,topListHeight:b}},Ue(Tn,kt,ko),{singleton:!0});function SI(e){return t=>{const n=setTimeout(()=>{t(!1)},e);return o=>{o&&(t(!0),clearTimeout(n))}}}function hf(e,t){e===0?t():requestAnimationFrame(()=>{hf(e-1,t)})}function yf(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}const Is=xe(([{defaultItemSize:e,listRefresh:t,sizes:n},{scrollTop:o},{scrollTargetReached:r,scrollToIndex:i},{didMount:s}])=>{const a=W(!0),l=W(0),d=W(!0);return oe(B(s,he(l),ae(([p,m])=>m!==0),yn(!1)),a),oe(B(s,he(l),ae(([p,m])=>m!==0),yn(!1)),d),$e(B(Qe(t,s),he(a,n,e,d),ae(([[,p],m,{sizeTree:v},h,y])=>p&&(!Te(v)||df(h))&&!m&&!y),he(l)),([,p])=>{cn(r,()=>{me(d,!0)}),hf(4,()=>{cn(o,()=>{me(a,!0)}),me(i,p)})}),{initialItemFinalLocationReached:d,initialTopMostItemIndex:l,scrolledToInitialItem:a}},Ue(Tn,kt,Ps,To),{singleton:!0});function vx(e,t){return Math.abs(e-t)<1.01}const xs="up",Hi="down",$I="none",kI={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},TI=0,Os=xe(([{footerHeight:e,headerHeight:t,scrollBy:n,scrollContainerState:o,scrollTop:r,viewportHeight:i}])=>{const s=W(!1),a=W(!0),l=ve(),d=ve(),p=W(4),m=W(TI),v=yt(B(Hd(B(se(r),Qo(1),yn(!0)),B(se(r),Qo(1),yn(!1),Bh(100))),Me()),!1),h=yt(B(Hd(B(n,yn(!0)),B(n,yn(!1),Bh(200))),Me()),!1);oe(B(Qe(se(r),se(m)),Z(([u,x])=>u<=x),Me()),a),oe(B(a,On(50)),d);const y=Mt(B(Qe(o,se(i),se(t),se(e),se(p)),Sn((u,[{scrollHeight:x,scrollTop:S},T,C,$,j])=>{const A=S+T-x>-j,E={scrollHeight:x,scrollTop:S,viewportHeight:T};if(A){let z,U;return S>u.state.scrollTop?(z="SCROLLED_DOWN",U=u.state.scrollTop-S):(z="SIZE_DECREASED",U=u.state.scrollTop-S||u.scrollTopDelta),{atBottom:!0,atBottomBecause:z,scrollTopDelta:U,state:E}}let q;return E.scrollHeight>u.state.scrollHeight?q="SIZE_INCREASED":T<u.state.viewportHeight?q="VIEWPORT_HEIGHT_DECREASING":S<u.state.scrollTop?q="SCROLLING_UPWARDS":q="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:q,state:E}},kI),Me((u,x)=>u!==void 0&&u.atBottom===x.atBottom))),b=yt(B(o,Sn((u,{scrollHeight:x,scrollTop:S,viewportHeight:T})=>{if(!vx(u.scrollHeight,x)){const C=x-(S+T)<1;return u.scrollTop!==S&&C?{changed:!0,jump:u.scrollTop-S,scrollHeight:x,scrollTop:S}:{changed:!0,jump:0,scrollHeight:x,scrollTop:S}}return{changed:!1,jump:0,scrollHeight:x,scrollTop:S}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),ae(u=>u.changed),Z(u=>u.jump)),0);oe(B(y,Z(u=>u.atBottom)),s),oe(B(s,On(50)),l);const g=W(Hi);oe(B(o,Z(({scrollTop:u})=>u),Me(),Sn((u,x)=>Le(h)?{direction:u.direction,prevScrollTop:x}:{direction:x<u.prevScrollTop?xs:Hi,prevScrollTop:x},{direction:Hi,prevScrollTop:0}),Z(u=>u.direction)),g),oe(B(o,On(50),yn($I)),g);const f=W(0);return oe(B(v,ae(u=>!u),yn(0)),f),oe(B(r,On(100),he(v),ae(([u,x])=>x),Sn(([u,x],[S])=>[x,S],[0,0]),Z(([u,x])=>x-u)),f),{atBottomState:y,atBottomStateChange:l,atBottomThreshold:p,atTopStateChange:d,atTopThreshold:m,isAtBottom:s,isAtTop:a,isScrolling:v,lastJumpDueToItemResize:b,scrollDirection:g,scrollVelocity:f}},Ue(kt)),ws="top",Ss="bottom",Jh="none";function Qh(e,t,n){return typeof e=="number"?n===xs&&t===ws||n===Hi&&t===Ss?e:0:n===xs?t===ws?e.main:e.reverse:t===Ss?e.main:e.reverse}function Yh(e,t){return typeof e=="number"?e:e[t]??0}const gf=xe(([{deviation:e,fixedHeaderHeight:t,headerHeight:n,scrollTop:o,viewportHeight:r}])=>{const i=ve(),s=W(0),a=W(0),l=W(0),d=yt(B(Qe(se(o),se(r),se(n),se(i,vs),se(l),se(s),se(t),se(e),se(a)),Z(([p,m,v,[h,y],b,g,f,u,x])=>{const S=p-u,T=g+f,C=Math.max(v-S,0);let $=Jh;const j=Yh(x,ws),A=Yh(x,Ss);return h-=u,h+=v+f,y+=v+f,y-=u,h>p+T-j&&($=xs),y<p-C+m+A&&($=Hi),$!==Jh?[Math.max(S-v-Qh(b,ws,$)-j,0),S-C-f+m+Qh(b,Ss,$)+A]:null}),ae(p=>p!==null),Me(vs)),[0,0]);return{increaseViewportBy:a,listBoundary:i,overscan:l,topListHeight:s,visibleRange:d}},Ue(kt),{singleton:!0});function _I(e,t,n){if(Bl(t)){const o=mx(e,t);return[{index:un(t.groupOffsetTree,o)[0],offset:0,size:0},{data:n==null?void 0:n[0],index:o,offset:0,size:0}]}return[{data:n==null?void 0:n[0],index:e,offset:0,size:0}]}const jc={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Ca(e,t,n,o,r,i){const{lastIndex:s,lastOffset:a,lastSize:l}=r;let d=0,p=0;if(e.length>0){d=e[0].offset;const b=e[e.length-1];p=b.offset+b.size}const m=n-s,v=a+m*l+(m-1)*o,h=d,y=v-p;return{bottom:p,firstItemIndex:i,items:Xh(e,r,i),offsetBottom:y,offsetTop:d,top:h,topItems:Xh(t,r,i),topListHeight:t.reduce((b,g)=>g.size+b,0),totalCount:n}}function bx(e,t,n,o,r,i){let s=0;if(n.groupIndices.length>0)for(const p of n.groupIndices){if(p-s>=e)break;s++}const a=e+s,l=yf(t,a),d=Array.from({length:a}).map((p,m)=>({data:i[m+l],index:m+l,offset:0,size:0}));return Ca(d,[],a,r,n,o)}function Xh(e,t,n){if(e.length===0)return[];if(!Bl(t))return e.map(d=>({...d,index:d.index+n,originalIndex:d.index}));const o=e[0].index,r=e[e.length-1].index,i=[],s=Ur(t.groupOffsetTree,o,r);let a,l=0;for(const d of e){(!a||a.end<d.index)&&(a=s.shift(),l=t.groupIndices.indexOf(a.start));let p;d.index===a.start?p={index:l,type:"group"}:p={groupIndex:l,index:d.index-(l+1)+n},i.push({...p,data:d.data,offset:d.offset,originalIndex:d.index,size:d.size})}return i}function Zh(e,t){return e===void 0?0:typeof e=="number"?e:e[t]??0}const er=xe(([{data:e,firstItemIndex:t,gap:n,sizes:o,totalCount:r},i,{listBoundary:s,topListHeight:a,visibleRange:l},{initialTopMostItemIndex:d,scrolledToInitialItem:p},{topListHeight:m},v,{didMount:h},{recalcInProgress:y}])=>{const b=W([]),g=W(0),f=ve(),u=W(0);oe(i.topItemsIndexes,b);const x=yt(B(Qe(h,y,se(l,vs),se(r),se(o),se(d),p,se(b),se(t),se(n),se(u),e),ae(([$,j,,A,,,,,,,,E])=>{const q=E!==void 0&&E.length!==A;return $&&!j&&!q}),Z(([,,[$,j],A,E,q,z,U,L,F,G,Y])=>{var X,ie;const D=E,{offsetTree:J,sizeTree:O}=D,_=Le(g);if(A===0)return{...jc,totalCount:A};if($===0&&j===0)return _===0?{...jc,totalCount:A}:bx(_,q,E,L,F,Y||[]);if(Te(O))return _>0?null:Ca(_I(yf(q,A),D,Y),[],A,F,D,L);const M=[];if(U.length>0){const de=U[0],we=U[U.length-1];let ze=0;for(const Ee of Ur(O,de,we)){const Se=Ee.value,_e=Math.max(Ee.start,de),Ye=Math.min(Ee.end,we);for(let Pe=_e;Pe<=Ye;Pe++)M.push({data:Y==null?void 0:Y[Pe],index:Pe,offset:ze,size:Se}),ze+=Se}}if(!z)return Ca([],M,A,F,D,L);const P=U.length>0?U[U.length-1]+1:0,w=mI(J,$,j,P);if(w.length===0)return null;const k=A-1,N=Fl([],de=>{for(const we of w){const ze=we.value;let Ee=ze.offset,Se=we.start;const _e=ze.size;if(ze.offset<$){Se+=Math.floor(($-ze.offset+F)/(_e+F));const Pe=Se-we.start;Ee+=Pe*_e+Pe*F}Se<P&&(Ee+=(P-Se)*_e,Se=P);const Ye=Math.min(we.end,k);for(let Pe=Se;Pe<=Ye&&!(Ee>=j);Pe++)de.push({data:Y==null?void 0:Y[Pe],index:Pe,offset:Ee,size:_e}),Ee+=_e+F}}),H=Zh(G,ws),R=Zh(G,Ss);if(N.length>0&&(H>0||R>0)){const de=N[0],we=N[N.length-1];if(H>0&&de.index>P){const ze=Math.min(H,de.index-P),Ee=[];let Se=de.offset;for(let _e=de.index-1;_e>=de.index-ze;_e--){const Ye=((X=Ur(O,_e,_e)[0])==null?void 0:X.value)??de.size;Se-=Ye+F,Ee.unshift({data:Y==null?void 0:Y[_e],index:_e,offset:Se,size:Ye})}N.unshift(...Ee)}if(R>0&&we.index<k){const ze=Math.min(R,k-we.index);let Ee=we.offset+we.size+F;for(let Se=we.index+1;Se<=we.index+ze;Se++){const _e=((ie=Ur(O,Se,Se)[0])==null?void 0:ie.value)??we.size;N.push({data:Y==null?void 0:Y[Se],index:Se,offset:Ee,size:_e}),Ee+=_e+F}}}return Ca(N,M,A,F,D,L)}),ae($=>$!==null),Me()),jc);oe(B(e,ae(df),Z($=>$==null?void 0:$.length)),r),oe(B(x,Z($=>$.topListHeight)),m),oe(m,a),oe(B(x,Z($=>[$.top,$.bottom])),s),oe(B(x,Z($=>$.items)),f);const S=Mt(B(x,ae(({items:$})=>$.length>0),he(r,e),ae(([{items:$},j])=>$[$.length-1].originalIndex===j-1),Z(([,$,j])=>[$-1,j]),Me(vs),Z(([$])=>$))),T=Mt(B(x,On(200),ae(({items:$,topItems:j})=>$.length>0&&$[0].originalIndex===j.length),Z(({items:$})=>$[0].index),Me())),C=Mt(B(x,ae(({items:$})=>$.length>0),Z(({items:$})=>{let j=0,A=$.length-1;for(;$[j].type==="group"&&j<A;)j++;for(;$[A].type==="group"&&A>j;)A--;return{endIndex:$[A].index,startIndex:$[j].index}}),Me(px)));return{endReached:S,initialItemCount:g,itemsRendered:f,listState:x,minOverscanItemCount:u,rangeChanged:C,startReached:T,topItemsIndexes:b,...v}},Ue(Tn,yx,gf,Is,Ps,Os,To,ff),{singleton:!0}),xx=xe(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:n,headerHeight:o},{listState:r}])=>{const i=ve(),s=yt(B(Qe(n,e,o,t,r),Z(([a,l,d,p,m])=>a+l+d+p+m.offsetBottom+m.bottom)),0);return oe(se(s),i),{totalListHeight:s,totalListHeightChanged:i}},Ue(kt,er),{singleton:!0}),jI=xe(([{viewportHeight:e},{totalListHeight:t}])=>{const n=W(!1),o=yt(B(Qe(n,e,t),ae(([r])=>r),Z(([,r,i])=>Math.max(0,r-i)),On(0),Me()),0);return{alignToBottom:n,paddingTopAddition:o}},Ue(kt,xx),{singleton:!0}),wx=xe(()=>({context:W(null)})),NI=({itemBottom:e,itemTop:t,locationParams:{align:n,behavior:o,...r},viewportBottom:i,viewportTop:s})=>t<s?{...r,align:n??"start",...o!==void 0?{behavior:o}:{}}:e>i?{...r,align:n??"end",...o!==void 0?{behavior:o}:{}}:null,Sx=xe(([{gap:e,sizes:t,totalCount:n},{fixedFooterHeight:o,fixedHeaderHeight:r,headerHeight:i,scrollingInProgress:s,scrollTop:a,viewportHeight:l},{scrollToIndex:d}])=>{const p=ve();return oe(B(p,he(t,l,n,i,r,o,a),he(e),Z(([[m,v,h,y,b,g,f,u],x])=>{const{calculateViewLocation:S=NI,done:T,...C}=m,$=hx(m,v,y-1),j=bs($,v.offsetTree,x)+b+g,A=j+un(v.sizeTree,$)[1],E=u+g,q=u+h-f,z=S({itemBottom:A,itemTop:j,locationParams:C,viewportBottom:q,viewportTop:E});return z!==null?T&&cn(B(s,ae(U=>!U),Qo(Le(s)?1:2)),T):T==null||T(),z}),ae(m=>m!==null)),d),{scrollIntoView:p}},Ue(Tn,kt,Ps,er,ko),{singleton:!0});function ey(e){return e===!1?!1:e==="smooth"?"smooth":"auto"}const CI=(e,t)=>typeof e=="function"?ey(e(t)):t&&ey(e),EI=xe(([{listRefresh:e,totalCount:t,fixedItemSize:n,data:o},{atBottomState:r,isAtBottom:i},{scrollToIndex:s},{scrolledToInitialItem:a},{didMount:l,propsReady:d},{log:p},{scrollingInProgress:m},{context:v},{scrollIntoView:h}])=>{const y=W(!1),b=ve();let g=null;function f(T){me(s,{align:"end",behavior:T,index:"LAST"})}$e(B(Qe(B(se(t),Qo(1)),l),he(se(y),i,a,m),Z(([[T,C],$,j,A,E])=>{let q=C&&A,z="auto";return q&&(z=CI($,j||E),q=q&&z!==!1),{followOutputBehavior:z,shouldFollow:q,totalCount:T}}),ae(({shouldFollow:T})=>T)),({followOutputBehavior:T,totalCount:C})=>{g!==null&&(g(),g=null),Le(n)!==void 0?requestAnimationFrame(()=>{Le(p)("following output to ",{totalCount:C},nt.DEBUG),f(T)}):g=cn(e,()=>{Le(p)("following output to ",{totalCount:C},nt.DEBUG),f(T),g=null})});function u(T){const C=cn(r,$=>{T&&!$.atBottom&&$.notAtBottomBecause==="SIZE_INCREASED"&&g===null&&(Le(p)("scrolling to bottom due to increased size",{},nt.DEBUG),f("auto"))});setTimeout(C,100)}$e(B(Qe(se(y),t,d),ae(([T,,C])=>T!==!1&&C),Sn(({value:T},[,C])=>({refreshed:T===C,value:C}),{refreshed:!1,value:0}),ae(({refreshed:T})=>T),he(y,t)),([,T])=>{Le(a)&&u(T!==!1)}),$e(b,()=>{u(Le(y)!==!1)}),$e(Qe(se(y),r),([T,C])=>{T!==!1&&!C.atBottom&&C.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&f("auto")});const x=W(null),S=ve();return oe(Hd(B(se(o),Z(T=>(T==null?void 0:T.length)??0)),B(se(t))),S),$e(B(Qe(B(S,Qo(1)),l),he(se(x),a,m,v),Z(([[T,C],$,j,A,E])=>C&&j&&($==null?void 0:$({context:E,totalCount:T,scrollingInProgress:A}))),ae(T=>!!T),On(0)),T=>{g!==null&&(g(),g=null),Le(n)!==void 0?requestAnimationFrame(()=>{Le(p)("scrolling into view",{}),me(h,T)}):g=cn(e,()=>{Le(p)("scrolling into view",{}),me(h,T),g=null})}),{autoscrollToBottom:b,followOutput:y,scrollIntoViewOnChange:x}},Ue(Tn,Os,Ps,Is,To,ko,kt,wx,Sx)),PI=xe(([{data:e,firstItemIndex:t,gap:n,sizes:o},{initialTopMostItemIndex:r},{initialItemCount:i,listState:s},{didMount:a}])=>(oe(B(a,he(i),ae(([,l])=>l!==0),he(r,o,t,n,e),Z(([[,l],d,p,m,v,h=[]])=>bx(l,d,p,m,v,h))),s),{}),Ue(Tn,Is,er,To),{singleton:!0}),II=xe(([{didMount:e},{scrollTo:t},{listState:n}])=>{const o=W(0);return $e(B(e,he(o),ae(([,r])=>r!==0),Z(([,r])=>({top:r}))),r=>{cn(B(n,Qo(1),ae(i=>i.items.length>1)),()=>{requestAnimationFrame(()=>{me(t,r)})})}),{initialScrollTop:o}},Ue(To,kt,er),{singleton:!0}),$x=xe(([{scrollVelocity:e}])=>{const t=W(!1),n=ve(),o=W(!1);return oe(B(e,he(o,t,n),ae(([r,i])=>i!==!1&&i!==void 0),Z(([r,i,s,a])=>{const{enter:l,exit:d}=i;if(s){if(d(r,a))return!1}else if(l(r,a))return!0;return s}),Me()),t),$e(B(Qe(t,e,n),he(o)),([[r,i,s],a])=>{r&&a!==!1&&a!==void 0&&a.change&&a.change(i,s)}),{isSeeking:t,scrollSeekConfiguration:o,scrollSeekRangeChanged:n,scrollVelocity:e}},Ue(Os),{singleton:!0}),vf=xe(([{scrollContainerState:e,scrollTo:t}])=>{const n=ve(),o=ve(),r=ve(),i=W(!1),s=W(void 0);return oe(B(Qe(n,o),Z(([{scrollTop:a,viewportHeight:l},{offsetTop:d,listHeight:p}])=>({scrollHeight:p,scrollTop:Math.max(0,a-d),viewportHeight:l}))),e),oe(B(t,he(o),Z(([a,{offsetTop:l}])=>({...a,top:a.top+l}))),r),{customScrollParent:s,useWindowScroll:i,windowScrollContainerState:n,windowScrollTo:r,windowViewportRect:o}},Ue(kt)),OI=xe(([{sizeRanges:e,sizes:t},{headerHeight:n,scrollTop:o},{initialTopMostItemIndex:r},{didMount:i},{useWindowScroll:s,windowScrollContainerState:a,windowViewportRect:l}])=>{const d=ve(),p=W(void 0),m=W(null),v=W(null);return oe(a,m),oe(l,v),$e(B(d,he(t,o,s,m,v,n)),([h,y,b,g,f,u,x])=>{const S=yI(y.sizeTree);g&&f!==null&&u!==null&&(b=f.scrollTop-u.offsetTop),b-=x,h({ranges:S,scrollTop:b})}),oe(B(p,ae(df),Z(RI)),r),oe(B(i,he(p),ae(([,h])=>h!==void 0),Me(),Z(([,h])=>h.ranges)),e),{getState:d,restoreStateFrom:p}},Ue(Tn,kt,Is,To,vf));function RI(e){return{align:"start",index:0,offset:e.scrollTop}}const AI=xe(([{topItemsIndexes:e}])=>{const t=W(0);return oe(B(t,ae(n=>n>=0),Z(n=>Array.from({length:n}).map((o,r)=>r))),e),{topItemCount:t}},Ue(er));function kx(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const MI=kx(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),qI=xe(([{deviation:e,scrollBy:t,scrollingInProgress:n,scrollTop:o},{isAtBottom:r,isScrolling:i,lastJumpDueToItemResize:s,scrollDirection:a},{listState:l},{beforeUnshiftWith:d,gap:p,shiftWithOffset:m,sizes:v},{log:h},{recalcInProgress:y}])=>{const b=Mt(B(l,he(s),Sn(([,f,u,x],[{bottom:S,items:T,offsetBottom:C,totalCount:$},j])=>{const A=S+C;let E=0;return u===$&&f.length>0&&T.length>0&&(T[0].originalIndex===0&&f[0].originalIndex===0||(E=A-x,E!==0&&(E+=j))),[E,T,$,A]},[0,[],0,0]),ae(([f])=>f!==0),he(o,a,n,r,h,y),ae(([,f,u,x,,,S])=>!S&&!x&&f!==0&&u===xs),Z(([[f],,,,,u])=>(u("Upward scrolling compensation",{amount:f},nt.DEBUG),f))));function g(f){f>0?(me(t,{behavior:"auto",top:-f}),me(e,0)):(me(e,0),me(t,{behavior:"auto",top:-f}))}return $e(B(b,he(e,i)),([f,u,x])=>{x&&MI()?me(e,u-f):g(-f)}),$e(B(Qe(yt(i,!1),e,y),ae(([f,u,x])=>!f&&!x&&u!==0),Z(([f,u])=>u),On(1)),g),oe(B(m,Z(f=>({top:-f}))),t),$e(B(d,he(v,p),Z(([f,{groupIndices:u,lastSize:x,sizeTree:S},T])=>{function C(q){return q*(x+T)}if(u.length===0)return C(f);let $=0;const j=gs(S,0);let A=0,E=0;for(;A<f;){A++,$+=j;let q=u.length===E+1?1/0:u[E+1]-u[E]-1;A+q>f&&($-=j,q=f-A+1),A+=q,$+=C(q),E++}return $})),f=>{me(e,f),requestAnimationFrame(()=>{me(t,{top:f}),requestAnimationFrame(()=>{me(e,0),me(y,!1)})})}),{deviation:e}},Ue(kt,Os,er,Tn,ko,ff)),UI=xe(([e,t,n,o,r,i,s,a,l,d,p])=>({...e,...t,...n,...o,...r,...i,...s,...a,...l,...d,...p}),Ue(gf,PI,To,$x,xx,II,jI,vf,Sx,ko,wx)),Tx=xe(([{data:e,defaultItemSize:t,firstItemIndex:n,fixedItemSize:o,fixedGroupSize:r,gap:i,groupIndices:s,heightEstimates:a,itemSize:l,sizeRanges:d,sizes:p,statefulTotalCount:m,totalCount:v,trackItemSizes:h},{initialItemFinalLocationReached:y,initialTopMostItemIndex:b,scrolledToInitialItem:g},f,u,x,S,{scrollToIndex:T},C,{topItemCount:$},{groupCounts:j},A])=>{const{listState:E,minOverscanItemCount:q,topItemsIndexes:z,rangeChanged:U,...L}=S;return oe(U,A.scrollSeekRangeChanged),oe(B(A.windowViewportRect,Z(F=>F.visibleHeight)),f.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:n,fixedItemHeight:o,fixedGroupHeight:r,gap:i,groupCounts:j,heightEstimates:a,initialItemFinalLocationReached:y,initialTopMostItemIndex:b,scrolledToInitialItem:g,sizeRanges:d,topItemCount:$,topItemsIndexes:z,totalCount:v,...x,groupIndices:s,itemSize:l,listState:E,minOverscanItemCount:q,scrollToIndex:T,statefulTotalCount:m,trackItemSizes:h,rangeChanged:U,...L,...A,...f,sizes:p,...u}},Ue(Tn,Is,kt,OI,EI,er,Ps,qI,AI,yx,UI));function LI(e,t){const n={},o={};let r=0;const i=e.length;for(;r<i;)o[e[r]]=1,r+=1;for(const s in t)Object.hasOwn(o,s)||(n[s]=t[s]);return n}const ra=typeof document<"u"?te.useLayoutEffect:te.useEffect;function _x(e,t,n){const o=Object.keys(t.required||{}),r=Object.keys(t.optional||{}),i=Object.keys(t.methods||{}),s=Object.keys(t.events||{}),a=te.createContext({});function l(g,f){g.propsReady!==void 0&&me(g.propsReady,!1);for(const u of o){const x=g[t.required[u]];me(x,f[u])}for(const u of r)if(u in f){const x=g[t.optional[u]];me(x,f[u])}g.propsReady!==void 0&&me(g.propsReady,!0)}function d(g){return i.reduce((f,u)=>(f[u]=x=>{const S=g[t.methods[u]];me(S,x)},f),{})}function p(g){return s.reduce((f,u)=>(f[u]=eI(g[t.events[u]]),f),{})}const m=te.forwardRef(function(g,f){const{children:u,...x}=g,[S]=te.useState(()=>Fl(nI(e),$=>{l($,x)})),[T]=te.useState(Fh(p,S));ra(()=>{for(const $ of s)$ in x&&$e(T[$],x[$]);return()=>{Object.values(T).map(uf)}},[x,T,S]),ra(()=>{l(S,x)}),te.useImperativeHandle(f,zh(d(S)));const C=n;return c.jsx(a.Provider,{value:S,children:n!==void 0?c.jsx(C,{...LI([...o,...r,...s],x),children:u}):u})}),v=g=>{const f=te.useContext(a);return te.useCallback(u=>{me(f[g],u)},[f,g])},h=g=>{const f=te.useContext(a)[g],u=te.useCallback(x=>$e(f,x),[f]);return te.useSyncExternalStore(u,()=>Le(f),()=>Le(f))},y=g=>{const f=te.useContext(a)[g],[u,x]=te.useState(Fh(Le,f));return ra(()=>$e(f,S=>{S!==u&&x(zh(S))}),[f,u]),u},b=parseInt(te.version)>=18?h:y;return{Component:m,useEmitter:(g,f)=>{const u=te.useContext(a)[g];ra(()=>$e(u,f),[f,u])},useEmitterValue:b,usePublisher:v}}const jx=te.createContext(void 0),Nx=te.createContext(void 0),Nc="-webkit-sticky",ty="sticky",bf=kx(()=>{if(typeof document>"u")return ty;const e=document.createElement("div");return e.style.position=Nc,e.style.position===Nc?Nc:ty}),Cx=typeof document<"u"?te.useLayoutEffect:te.useEffect;function Cc(e){return"self"in e}function DI(e){return"body"in e}function Ex(e,t,n,o=ii,r,i){const s=te.useRef(null),a=te.useRef(null),l=te.useRef(null),d=te.useCallback(v=>{let h,y,b;const g=v.target;if(DI(g)||Cc(g)){const u=Cc(g)?g:g.defaultView;b=i===!0?Lo(u,u.scrollX):u.scrollY,h=i===!0?u.document.documentElement.scrollWidth:u.document.documentElement.scrollHeight,y=i===!0?u.innerWidth:u.innerHeight}else b=i===!0?Lo(g,g.scrollLeft):g.scrollTop,h=i===!0?g.scrollWidth:g.scrollHeight,y=i===!0?g.offsetWidth:g.offsetHeight;const f=()=>{e({scrollHeight:h,scrollTop:Math.max(b,0),viewportHeight:y})};v.suppressFlushSync===!0?f():dS.flushSync(f),a.current!==null&&(b===a.current||b<=0||b===h-y)&&(a.current=null,t(!0),l.current&&(clearTimeout(l.current),l.current=null))},[e,t,i]);te.useEffect(()=>{const v=r||s.current;return Hh(v),o(r||s.current),d({suppressFlushSync:!0,target:v}),v.addEventListener("scroll",d,{passive:!0}),()=>{Hh(v),o(null),v.removeEventListener("scroll",d)}},[s,d,n,o,r]);function p(v){const h=s.current;if(!h||(i===!0?"offsetWidth"in h&&h.offsetWidth===0:"offsetHeight"in h&&h.offsetHeight===0))return;const y=v.behavior==="smooth";let b,g,f;Cc(h)?(g=Math.max(bo(h.document.documentElement,i===!0?"width":"height"),i===!0?h.document.documentElement.scrollWidth:h.document.documentElement.scrollHeight),b=i===!0?h.innerWidth:h.innerHeight,f=i===!0?Lo(h,h.scrollX):h.scrollY):(g=h[i===!0?"scrollWidth":"scrollHeight"],b=bo(h,i===!0?"width":"height"),f=i===!0?Lo(h,h.scrollLeft):h.scrollTop);const u=g-b;if(v.top===void 0){h.scrollTo(v);return}const x=Math.ceil(Math.max(Math.min(u,v.top),0));if(v.top=x,vx(b,g)||x===f){e({scrollHeight:g,scrollTop:f,viewportHeight:b}),y&&t(!0);return}y?(a.current=x,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,a.current=null,t(!0)},1e3)):a.current=null,i===!0&&(v={...v.behavior!==void 0?{behavior:v.behavior}:{},left:Vh(h,x)}),h.scrollTo(v)}function m(v){i===!0&&(v={...v.behavior!==void 0?{behavior:v.behavior}:{},...v.top!==void 0?{left:Vh(s.current,v.top)}:{}}),s.current.scrollBy(v)}return{scrollByCallback:m,scrollerRef:s,scrollToCallback:p}}function xf(e){return e}const zI=xe(()=>{const e=W(a=>`Item ${a}`),t=W(a=>`Group ${a}`),n=W({}),o=W(xf),r=W("div"),i=W(ii),s=(a,l=null)=>yt(B(n,Z(d=>d[a]),Me()),l);return{components:n,computeItemKey:o,EmptyPlaceholder:s("EmptyPlaceholder"),FooterComponent:s("Footer"),GroupComponent:s("Group","div"),groupContent:t,HeaderComponent:s("Header"),HeaderFooterTag:r,ItemComponent:s("Item","div"),itemContent:e,ListComponent:s("List","div"),ScrollerComponent:s("Scroller","div"),scrollerRef:i,ScrollSeekPlaceholder:s("ScrollSeekPlaceholder"),TopItemListComponent:s("TopItemList")}}),FI=xe(([e,t])=>({...e,...t}),Ue(Tx,zI)),BI=({height:e})=>c.jsx("div",{style:{height:e}}),HI={overflowAnchor:"none",position:bf(),zIndex:1},Px={overflowAnchor:"none"},VI={...Px,display:"inline-block",height:"100%"},ny=te.memo(function({showTopList:e=!1}){const t=ce("listState"),n=Wt("sizeRanges"),o=ce("useWindowScroll"),r=ce("customScrollParent"),i=Wt("windowScrollContainerState"),s=Wt("scrollContainerState"),a=r||o?i:s,l=ce("itemContent"),d=ce("context"),p=ce("groupContent"),m=ce("trackItemSizes"),v=ce("itemSize"),h=ce("log"),y=Wt("gap"),b=ce("horizontalDirection"),{callbackRef:g}=sI(n,v,m,e?ii:a,h,y,r,b,ce("skipAnimationFrameInResizeObserver")),[f,u]=te.useState(0);Sf("deviation",L=>{f!==L&&u(L)});const x=ce("EmptyPlaceholder"),S=ce("ScrollSeekPlaceholder")??BI,T=ce("ListComponent"),C=ce("ItemComponent"),$=ce("GroupComponent"),j=ce("computeItemKey"),A=ce("isSeeking"),E=ce("groupIndices").length>0,q=ce("alignToBottom"),z=ce("initialItemFinalLocationReached"),U=e?{}:{boxSizing:"border-box",...b?{display:"inline-block",height:"100%",marginInlineStart:f!==0?f:q?"auto":0,paddingInlineEnd:t.offsetBottom,paddingInlineStart:t.offsetTop,whiteSpace:"nowrap"}:{marginTop:f!==0?f:q?"auto":0,paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},...z?{}:{visibility:"hidden"}};return!e&&t.totalCount===0&&x!==null&&x!==void 0?c.jsx(x,{...ht(x,d)}):c.jsx(T,{...ht(T,d),"data-testid":e?"virtuoso-top-item-list":"virtuoso-item-list",ref:g,style:U,children:(e?t.topItems:t.items).map(L=>{const F=L.originalIndex,G=j(F+t.firstItemIndex,L.data,d);return A?I.createElement(S,{...ht(S,d),height:L.size,index:L.index,key:G,type:L.type||"item",...L.type==="group"?{}:{groupIndex:L.groupIndex}}):L.type==="group"?I.createElement($,{...ht($,d),"data-index":F,"data-item-index":L.index,"data-known-size":L.size,key:G,style:HI},p(L.index,d)):I.createElement(C,{...ht(C,d),...JI(C,L.data),"data-index":F,"data-item-group-index":L.groupIndex,"data-item-index":L.index,"data-known-size":L.size,key:G,style:b?VI:Px},E?l(L.index,L.groupIndex,L.data,d):l(L.index,L.data,d))})})}),WI={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},KI={outline:"none",overflowX:"auto",position:"relative"},wf=e=>({height:"100%",position:"absolute",top:0,width:"100%",...e?{display:"flex",flexDirection:"column"}:void 0}),Ix=(e,t,n=0)=>({...wf(e),position:t?"relative":"absolute",top:t?-n:0}),GI={position:bf(),top:0,width:"100%",zIndex:1};function ht(e,t){if(typeof e!="string")return{context:t}}function JI(e,t){return{item:typeof e=="string"?void 0:t}}const QI=te.memo(function(){const e=ce("HeaderComponent"),t=Wt("headerHeight"),n=ce("HeaderFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),r=ce("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null}),YI=te.memo(function(){const e=ce("FooterComponent"),t=Wt("footerHeight"),n=ce("HeaderFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),r=ce("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null});function Ox({useEmitter:e,useEmitterValue:t,usePublisher:n}){return te.memo(function({children:o,style:r,context:i,...s}){const a=n("scrollContainerState"),l=t("ScrollerComponent"),d=n("smoothScrollTargetReached"),p=t("scrollerRef"),m=t("horizontalDirection")||!1,{scrollByCallback:v,scrollerRef:h,scrollToCallback:y}=Ex(a,d,l,p,void 0,m);return e("scrollTo",y),e("scrollBy",v),c.jsx(l,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:h,style:{...m?KI:WI,...r},tabIndex:0,...s,...ht(l,i),children:o})})}function Rx({useEmitter:e,useEmitterValue:t,usePublisher:n}){return te.memo(function({children:o,style:r,context:i,...s}){const a=n("windowScrollContainerState"),l=t("ScrollerComponent"),d=n("smoothScrollTargetReached"),p=t("totalListHeight"),m=t("deviation"),v=t("customScrollParent"),h=te.useRef(null),y=t("scrollerRef"),{scrollByCallback:b,scrollerRef:g,scrollToCallback:f}=Ex(a,d,l,y,v);return Cx(()=>{var u;return g.current=v||((u=h.current)==null?void 0:u.ownerDocument.defaultView),()=>{g.current=null}},[g,v]),e("windowScrollTo",f),e("scrollBy",b),c.jsx(l,{ref:h,"data-virtuoso-scroller":!0,style:{position:"relative",...r,...p!==0?{height:p+m}:void 0},...s,...ht(l,i),children:o})})}const XI=({children:e})=>{const t=te.useContext(jx),n=Wt("viewportHeight"),o=Wt("fixedItemHeight"),r=ce("alignToBottom"),i=ce("horizontalDirection"),s=te.useMemo(()=>nx(n,l=>bo(l,i?"width":"height")),[n,i]),a=Zo(s,!0,ce("skipAnimationFrameInResizeObserver"));return te.useEffect(()=>{t&&(n(t.viewportHeight),o(t.itemHeight))},[t,n,o]),c.jsx("div",{"data-viewport-type":"element",ref:a,style:wf(r),children:e})},ZI=({children:e})=>{const t=te.useContext(jx),n=Wt("windowViewportRect"),o=Wt("fixedItemHeight"),r=ce("customScrollParent"),i=ce("useWindowScroll"),s=ce("topListHeight"),a=sx(n,r,ce("skipAnimationFrameInResizeObserver")),l=ce("alignToBottom");return te.useEffect(()=>{t&&(o(t.itemHeight),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,o]),c.jsx("div",{"data-viewport-type":"window",ref:a,style:Ix(l,i,s),children:e})},eO=({children:e})=>{const t=ce("TopItemListComponent")??"div",n=ce("headerHeight"),o={...GI,marginTop:`${n}px`},r=ce("context");return c.jsx(t,{style:o,...ht(t,r),children:e})},tO=te.memo(function(e){const t=ce("useWindowScroll"),n=ce("topItemsIndexes").length>0,o=ce("customScrollParent"),r=ce("context");return c.jsxs(o||t?rO:oO,{...e,context:r,children:[n&&c.jsx(eO,{children:c.jsx(ny,{showTopList:!0})}),c.jsxs(o||t?ZI:XI,{children:[c.jsx(QI,{}),c.jsx(ny,{}),c.jsx(YI,{})]})]})}),{Component:nO,useEmitter:Sf,useEmitterValue:ce,usePublisher:Wt}=_x(FI,{optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},tO),oO=Ox({useEmitter:Sf,useEmitterValue:ce,usePublisher:Wt}),rO=Rx({useEmitter:Sf,useEmitterValue:ce,usePublisher:Wt}),iO=nO,sO=xe(()=>{const e=W(d=>c.jsxs("td",{children:["Item $",d]})),t=W(null),n=W(d=>c.jsxs("td",{colSpan:1e3,children:["Group ",d]})),o=W(null),r=W(null),i=W({}),s=W(xf),a=W(ii),l=(d,p=null)=>yt(B(i,Z(m=>m[d]),Me()),p);return{components:i,computeItemKey:s,context:t,EmptyPlaceholder:l("EmptyPlaceholder"),FillerRow:l("FillerRow"),fixedFooterContent:r,fixedHeaderContent:o,itemContent:e,groupContent:n,ScrollerComponent:l("Scroller","div"),scrollerRef:a,ScrollSeekPlaceholder:l("ScrollSeekPlaceholder"),TableBodyComponent:l("TableBody","tbody"),TableComponent:l("Table","table"),TableFooterComponent:l("TableFoot","tfoot"),TableHeadComponent:l("TableHead","thead"),TableRowComponent:l("TableRow","tr"),GroupComponent:l("Group","tr")}});Ue(Tx,sO);bf();const oy={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},aO={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:ry,floor:pl,max:Vi,min:Ec,round:iy}=Math;function sy(e,t,n){return Array.from({length:t-e+1}).map((o,r)=>({data:n===null?null:n[r+e],index:r+e}))}function lO(e){return{...aO,items:e}}function ia(e,t){return e!==void 0&&e.width===t.width&&e.height===t.height}function cO(e,t){return e!==void 0&&e.column===t.column&&e.row===t.row}const dO=xe(([{increaseViewportBy:e,listBoundary:t,overscan:n,visibleRange:o},{footerHeight:r,headerHeight:i,scrollBy:s,scrollContainerState:a,scrollTo:l,scrollTop:d,smoothScrollTargetReached:p,viewportHeight:m},v,h,{didMount:y,propsReady:b},{customScrollParent:g,useWindowScroll:f,windowScrollContainerState:u,windowScrollTo:x,windowViewportRect:S},T])=>{const C=W(0),$=W(0),j=W(oy),A=W({height:0,width:0}),E=W({height:0,width:0}),q=ve(),z=ve(),U=W(0),L=W(null),F=W({column:0,row:0}),G=ve(),Y=ve(),D=W(!1),J=W(0),O=W(!0),_=W(!1),M=W(!1);$e(B(y,he(J),ae(([R,X])=>X!==0)),()=>{me(O,!1)}),$e(B(Qe(y,O,E,A,J,_),ae(([R,X,ie,de,,we])=>R&&!X&&ie.height!==0&&de.height!==0&&!we)),([,,,,R])=>{me(_,!0),hf(1,()=>{me(q,R)}),cn(B(d),()=>{me(t,[0,0]),me(O,!0)})}),oe(B(Y,ae(R=>R!=null&&R.scrollTop>0),yn(0)),$),$e(B(y,he(Y),ae(([,R])=>R!=null)),([,R])=>{R&&(me(A,R.viewport),me(E,R.item),me(F,R.gap),R.scrollTop>0&&(me(D,!0),cn(B(d,Qo(1)),X=>{me(D,!1)}),me(l,{top:R.scrollTop})))}),oe(B(A,Z(({height:R})=>R)),m),oe(B(Qe(se(A,ia),se(E,ia),se(F,(R,X)=>R!==void 0&&R.column===X.column&&R.row===X.row),se(d)),Z(([R,X,ie,de])=>({gap:ie,item:X,scrollTop:de,viewport:R}))),G),oe(B(Qe(se(C),o,se(F,cO),se(E,ia),se(A,ia),se(L),se($),se(D),se(O),se(J)),ae(([,,,,,,,R])=>!R),Z(([R,[X,ie],de,we,ze,Ee,Se,,_e,Ye])=>{const{column:Pe,row:_n}=de,{height:Bn,width:_o}=we,{width:tr}=ze;if(Se===0&&(R===0||tr===0))return oy;if(_o===0){const $f=yf(Ye,R),Ux=$f+Math.max(Se-1,0);return lO(sy($f,Ux,Ee))}const Hn=Ax(tr,_o,Pe);let pn,Yt;_e?X===0&&ie===0&&Se>0?(pn=0,Yt=Se-1):(pn=Hn*pl((X+_n)/(Bn+_n)),Yt=Hn*ry((ie+_n)/(Bn+_n))-1,Yt=Ec(R-1,Vi(Yt,Hn-1)),pn=Ec(Yt,Vi(0,pn))):(pn=0,Yt=-1);const Vn=sy(pn,Yt,Ee),{bottom:nr,top:si}=ay(ze,de,we,Vn),ai=ry(R/Hn),Hl=ai*Bn+(ai-1)*_n-nr;return{bottom:nr,itemHeight:Bn,items:Vn,itemWidth:_o,offsetBottom:Hl,offsetTop:si,top:si}})),j),oe(B(L,ae(R=>R!==null),Z(R=>R.length)),C),oe(B(Qe(A,E,j,F),ae(([R,X,{items:ie}])=>ie.length>0&&X.height!==0&&R.height!==0),Z(([R,X,{items:ie},de])=>{const{bottom:we,top:ze}=ay(R,de,X,ie);return[ze,we]}),Me(vs)),t);const P=W(!1);oe(B(d,he(P),Z(([R,X])=>X||R!==0)),P);const w=Mt(B(Qe(j,C),ae(([{items:R}])=>R.length>0),he(P),ae(([[R,X],ie])=>{const de=R.items[R.items.length-1].index===X-1;return(ie||R.bottom>0&&R.itemHeight>0&&R.offsetBottom===0&&R.items.length===X)&&de}),Z(([[,R]])=>R-1),Me())),k=Mt(B(se(j),ae(({items:R})=>R.length>0&&R[0].index===0),yn(0),Me())),N=Mt(B(se(j),he(D),ae(([{items:R},X])=>R.length>0&&!X),Z(([{items:R}])=>({endIndex:R[R.length-1].index,startIndex:R[0].index})),Me(px),On(0)));oe(N,h.scrollSeekRangeChanged),oe(B(q,he(A,E,C,F),Z(([R,X,ie,de,we])=>{const ze=gx(R),{align:Ee,behavior:Se,offset:_e}=ze;let Ye=ze.index;Ye==="LAST"&&(Ye=de-1),Ye=Vi(0,Ye,Ec(de-1,Ye));let Pe=Qd(X,we,ie,Ye);return Ee==="end"?Pe=iy(Pe-X.height+ie.height):Ee==="center"&&(Pe=iy(Pe-X.height/2+ie.height/2)),_e!==void 0&&_e!==0&&(Pe+=_e),{behavior:Se,top:Pe}})),l);const H=yt(B(j,Z(R=>R.offsetBottom+R.bottom)),0);return oe(B(S,Z(R=>({height:R.visibleHeight,width:R.visibleWidth}))),A),{customScrollParent:g,data:L,deviation:U,footerHeight:r,gap:F,headerHeight:i,increaseViewportBy:e,initialItemCount:$,itemDimensions:E,overscan:n,restoreStateFrom:Y,scrollBy:s,scrollContainerState:a,scrollHeight:z,scrollTo:l,scrollToIndex:q,scrollTop:d,smoothScrollTargetReached:p,totalCount:C,useWindowScroll:f,viewportDimensions:A,windowScrollContainerState:u,windowScrollTo:x,windowViewportRect:S,...h,gridState:j,horizontalDirection:M,initialTopMostItemIndex:J,totalListHeight:H,...v,endReached:w,propsReady:b,rangeChanged:N,startReached:k,stateChanged:G,stateRestoreInProgress:D,...T}},Ue(gf,kt,Os,$x,To,vf,ko));function Ax(e,t,n){return Vi(1,pl((e+n)/(pl(t)+n)))}function ay(e,t,n,o){const{height:r}=n;if(r===void 0||o.length===0)return{bottom:0,top:0};const i=Qd(e,t,n,o[0].index);return{bottom:Qd(e,t,n,o[o.length-1].index)+r,top:i}}function Qd(e,t,n,o){const r=Ax(e.width,n.width,t.column),i=pl(o/r),s=i*n.height+Vi(0,i-1)*t.row;return s>0?s+t.row:s}const uO=xe(()=>{const e=W(m=>`Item ${m}`),t=W({}),n=W(null),o=W("virtuoso-grid-item"),r=W("virtuoso-grid-list"),i=W(xf),s=W("div"),a=W(ii),l=(m,v=null)=>yt(B(t,Z(h=>h[m]),Me()),v),d=W(!1),p=W(!1);return oe(se(p),d),{components:t,computeItemKey:i,context:n,FooterComponent:l("Footer"),HeaderComponent:l("Header"),headerFooterTag:s,itemClassName:o,ItemComponent:l("Item","div"),itemContent:e,listClassName:r,ListComponent:l("List","div"),readyStateChanged:d,reportReadyState:p,ScrollerComponent:l("Scroller","div"),scrollerRef:a,ScrollSeekPlaceholder:l("ScrollSeekPlaceholder","div")}}),pO=xe(([e,t])=>({...e,...t}),Ue(dO,uO)),fO=te.memo(function(){const e=Re("gridState"),t=Re("listClassName"),n=Re("itemClassName"),o=Re("itemContent"),r=Re("computeItemKey"),i=Re("isSeeking"),s=Kt("scrollHeight"),a=Re("ItemComponent"),l=Re("ListComponent"),d=Re("ScrollSeekPlaceholder"),p=Re("context"),m=Kt("itemDimensions"),v=Kt("gap"),h=Re("log"),y=Re("stateRestoreInProgress"),b=Kt("reportReadyState"),g=Zo(te.useMemo(()=>f=>{const u=f.parentElement.parentElement.scrollHeight;s(u);const x=f.firstChild;if(x!==null){const{height:S,width:T}=x.getBoundingClientRect();m({height:S,width:T})}v({column:ly("column-gap",getComputedStyle(f).columnGap,h),row:ly("row-gap",getComputedStyle(f).rowGap,h)})},[s,m,v,h]),!0,!1);return Cx(()=>{e.itemHeight>0&&e.itemWidth>0&&b(!0)},[e]),y?null:c.jsx(l,{className:t,ref:g,...ht(l,p),"data-testid":"virtuoso-item-list",style:{paddingBottom:e.offsetBottom,paddingTop:e.offsetTop},children:e.items.map(f=>{const u=r(f.index,f.data,p);return i?c.jsx(d,{...ht(d,p),height:e.itemHeight,index:f.index,width:e.itemWidth},u):I.createElement(a,{...ht(a,p),className:n,"data-index":f.index,key:u},o(f.index,f.data,p))})})}),mO=te.memo(function(){const e=Re("HeaderComponent"),t=Kt("headerHeight"),n=Re("headerFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,!1),r=Re("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null}),hO=te.memo(function(){const e=Re("FooterComponent"),t=Kt("footerHeight"),n=Re("headerFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,!1),r=Re("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null}),yO=({children:e})=>{const t=te.useContext(Nx),n=Kt("itemDimensions"),o=Kt("viewportDimensions"),r=Zo(te.useMemo(()=>i=>{o(i.getBoundingClientRect())},[o]),!0,!1);return te.useEffect(()=>{t&&(o({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,o,n]),c.jsx("div",{ref:r,style:wf(!1),children:e})},gO=({children:e})=>{const t=te.useContext(Nx),n=Kt("windowViewportRect"),o=Kt("itemDimensions"),r=Re("customScrollParent"),i=Re("useWindowScroll"),s=sx(n,r,!1);return te.useEffect(()=>{t&&(o({height:t.itemHeight,width:t.itemWidth}),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,o]),c.jsx("div",{ref:s,style:Ix(!1,i),children:e})},vO=te.memo(function({...e}){const t=Re("useWindowScroll"),n=Re("customScrollParent"),o=n||t?xO:bO,r=n||t?gO:yO,i=Re("context");return c.jsx(o,{...e,...ht(o,i),children:c.jsxs(r,{children:[c.jsx(mO,{}),c.jsx(fO,{}),c.jsx(hO,{})]})})}),{useEmitter:Mx,useEmitterValue:Re,usePublisher:Kt}=_x(pO,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},vO),bO=Ox({useEmitter:Mx,useEmitterValue:Re,usePublisher:Kt}),xO=Rx({useEmitter:Mx,useEmitterValue:Re,usePublisher:Kt});function ly(e,t,n){return t!=="normal"&&(t==null?void 0:t.endsWith("px"))!==!0&&n(`${e} was not resolved to pixel value correctly`,t,nt.WARN),t==="normal"?0:parseInt(t??"0",10)}function wO(e){var o,r,i;if(e.kind!=="notification"||e.method!=="session/update")return null;const t=e.payload;if(!t||typeof t!="object")return null;const n=t.params;return!n||((o=n.update)==null?void 0:o.sessionUpdate)!=="agent_message_chunk"?null:{sessionId:String(n.sessionId??""),text:((i=(r=n.update)==null?void 0:r.content)==null?void 0:i.text)??""}}function SO(e){const t=[];let n=null;const o=()=>{if(n){if(n.messages.length===1){const r=n.messages[0];t.push({type:"message",message:r})}else{const r=n.messages[0],i=n.messages[n.messages.length-1];t.push({type:"stream-cluster",sessionId:n.sessionId,messages:n.messages,firstSeq:r.seq,lastSeq:i.seq,combinedText:n.text,firstTimestamp:r.timestamp,lastTimestamp:i.timestamp})}n=null}};for(const r of e){const i=wO(r);if(i&&n&&n.sessionId===i.sessionId){n.messages.push(r),n.text+=i.text;continue}o(),i?n={sessionId:i.sessionId,messages:[r],text:i.text}:t.push({type:"message",message:r})}return o(),t}function $O(e){var n;if(!e.payload||typeof e.payload!="object")return null;const t=e.payload.params;if(!t||typeof t!="object")return null;if(e.method==="session/prompt"){const o=t.prompt;if(!Array.isArray(o))return null;const r=[];for(const s of o)(s==null?void 0:s.type)==="text"&&typeof s.text=="string"&&r.push(s.text);const i=r.join(" ").trim();return i.length>0?i:null}if(e.method==="session/update"){const o=t.update;if(!o)return null;const r=((n=o.content)==null?void 0:n.text)??o.text;return typeof r=="string"&&r.length>0?r:null}return null}function kO(e){return e.method==="session/prompt"&&e.kind==="request"}const TO={request:"REQ",response:"RSP",notification:"NTF",error:"ERR",unknown:"???"},_O={request:"request — expects a response",response:"response — answer to a previous request",notification:"notification — one-way event, no response",error:"error — response carrying an error object",unknown:"unknown — could not classify as JSON-RPC"},jO={"editor-to-agent":"editor → agent (e.g. JetBrains/Zed sending to the AI)","agent-to-editor":"agent → editor (AI replying or calling the host)"};function NO(e){switch(e){case"error":return"text-accent-error";case"notification":return"text-accent-note";case"request":return"text-accent-out";case"response":return"text-accent-in";default:return"text-ink-muted"}}function CO({message:e,selected:t,paired:n=!1,latencyMs:o,validation:r,onSelect:i}){const s=e.direction==="editor-to-agent",a=e.kind==="error",l=o!==void 0?dE(o):null,d=$O(e),p=kO(e),m=r&&!r.skipped&&!r.valid,v=r==null?void 0:r.advisories,h=v&&v.length>0;return c.jsxs("button",{type:"button",onClick:()=>i(e.seq),className:K("relative flex w-full items-center gap-3 px-4 py-1.5 text-left font-mono text-[12px] leading-5","border-b border-line-grid/70 transition-colors","hover:bg-surface-rowHover",t?"bg-surface-rowHover ring-1 ring-inset ring-accent-out/40":"",n&&!t?"bg-accent-out/[0.04] ring-1 ring-inset ring-accent-out/15":"",a?"bg-accent-error/[0.06]":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("absolute inset-y-0 left-0 w-[3px]",s?"bg-accent-out":"bg-accent-in",a?"bg-accent-error":"")}),c.jsx("span",{className:"w-10 shrink-0 text-right text-ink-muted",children:String(e.seq).padStart(3,"0")}),c.jsx("span",{className:"w-24 shrink-0 text-ink-secondary",children:fs(e.timestamp)}),c.jsxs("span",{className:K("flex w-16 shrink-0 items-center gap-1 font-semibold",s?"text-accent-out":"text-accent-in"),title:jO[e.direction],children:[c.jsx("span",{"aria-hidden":!0,children:Kb(e.direction)}),c.jsx("span",{className:"text-[10px] tracking-widest",children:Wb(e.direction)})]}),c.jsx("span",{className:K("inline-flex w-12 shrink-0 items-center justify-center rounded-sm border px-1 text-[10px] font-semibold tracking-widest",NO(e.kind),"border-current/40"),title:_O[e.kind],children:TO[e.kind]}),c.jsxs("span",{className:"flex min-w-0 flex-1 items-baseline gap-3 overflow-hidden",children:[c.jsx("span",{className:K("shrink-0",p?"text-accent-out":"text-ink-primary"),children:e.method?e.method:"—"}),m&&r&&c.jsxs("span",{className:K("inline-flex shrink-0 items-center gap-0.5 rounded-sm border border-accent-error/40","bg-accent-error/10 px-1 text-[9px] font-semibold uppercase tracking-widest text-accent-error"),title:`fails ACP schema (${r.schemaName??"?"}): ${r.errors.map(y=>`${y.path==="/"?"":y.path+" "}${y.message}`).join(" · ")}`,children:["⚠ SPEC ",r.errors.length]}),h&&v&&c.jsxs("span",{className:K("inline-flex shrink-0 items-center gap-0.5 rounded-sm border border-accent-warn/40","bg-accent-warn/10 px-1 text-[9px] font-semibold uppercase tracking-widest text-accent-warn"),title:`soon-required by the ACP spec: ${v.map(y=>y.message).join(" · ")}`,children:["⚠ ADV ",v.length]}),d&&c.jsxs("span",{className:K("truncate",p?"text-accent-out/85":"text-ink-secondary"),title:d,children:["“",d,"”"]})]}),c.jsx("span",{className:"w-20 shrink-0 text-right text-ink-muted",title:e.rpcId!==void 0&&e.rpcId!==null?`id:${String(e.rpcId)}`:void 0,children:e.rpcId!==void 0&&e.rpcId!==null?`id:${pE(e.rpcId)}`:""}),c.jsx("span",{className:"w-20 shrink-0 text-right text-ink-muted",children:Ul(e.raw.length)}),c.jsx("span",{className:K("w-20 shrink-0 text-right",l==="ok"&&"text-accent-ok",l==="warn"&&"text-accent-warn",l==="error"&&"text-accent-error",!l&&"text-ink-dim"),children:o!==void 0?`+${Vt(o)}`:""})]})}const EO=I.memo(CO);function PO({messages:e,combinedText:t,firstTimestamp:n,lastTimestamp:o,selectedSeq:r,onSelect:i}){const[s,a]=I.useState(!1),l=e[0],d=e[e.length-1],p=o-n,m=t.length>140?`${t.slice(0,140)}…`:t,v=r!==null&&e.some(h=>h.seq===r);return c.jsxs("div",{className:"border-b border-line-grid/70",children:[c.jsxs("button",{type:"button",onClick:()=>{a(h=>!h),i(l.seq)},className:K("relative flex w-full items-center gap-3 px-4 py-1.5 text-left font-mono text-[12px] leading-5","transition-colors hover:bg-surface-rowHover",v?"bg-surface-rowHover ring-1 ring-inset ring-accent-note/40":""),children:[c.jsx("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent-note"}),c.jsxs("span",{className:"w-10 shrink-0 text-right text-ink-muted",children:[String(l.seq).padStart(3,"0"),"…",String(d.seq).padStart(3,"0")]}),c.jsx("span",{className:"w-24 shrink-0 text-ink-secondary",children:fs(n)}),c.jsxs("span",{className:"flex w-16 shrink-0 items-center gap-1 font-semibold text-accent-in",title:"agent → editor (AI replying or calling the host)",children:[c.jsx("span",{"aria-hidden":!0,children:"←"}),c.jsx("span",{className:"text-[10px] tracking-widest",children:"IN"})]}),c.jsx("span",{className:K("inline-flex w-12 shrink-0 items-center justify-center rounded-sm border border-accent-note/40 px-1 text-[10px] font-semibold tracking-widest text-accent-note"),title:`stream — ${e.length} consecutive agent_message_chunk notifications collapsed into one row`,children:"STR"}),c.jsxs("span",{className:"flex flex-1 items-center gap-2 truncate text-ink-primary",children:[c.jsx("span",{className:"inline-flex h-[14px] w-1 rounded-sm bg-accent-note/60","aria-hidden":!0}),c.jsx("span",{className:"truncate text-ink-secondary",children:m||c.jsx("span",{className:"text-ink-muted",children:"(empty stream)"})})]}),c.jsxs("span",{className:"w-20 shrink-0 text-right text-ink-muted",children:[e.length," chunks"]}),c.jsx("span",{className:"w-20 shrink-0 text-right text-ink-muted",children:Vt(p)}),c.jsx("span",{"aria-hidden":!0,className:K("w-3 shrink-0 text-ink-muted transition-transform",s?"rotate-90":""),children:"▸"})]}),s&&c.jsx("div",{className:"border-l border-line-grid/70 bg-surface-base/40",children:e.map((h,y)=>c.jsxs("button",{type:"button",onClick:()=>i(h.seq),className:K("flex w-full items-center gap-3 px-8 py-1 text-left font-mono text-[11px] leading-5 text-ink-secondary","transition-colors hover:bg-surface-rowHover",r===h.seq?"bg-surface-rowHover text-ink-primary":""),children:[c.jsx("span",{className:"w-10 shrink-0 text-right text-ink-muted",children:String(h.seq).padStart(3,"0")}),c.jsx("span",{className:"w-24 shrink-0 text-ink-muted",children:fs(h.timestamp)}),c.jsxs("span",{className:"w-8 shrink-0 text-ink-muted",children:["#",y+1]}),c.jsx("span",{className:"flex-1 truncate text-ink-primary",children:IO(h)})]},h.seq))})]})}function IO(e){var o,r;const t=e.payload;if(!t||typeof t!="object")return"";const n=t.params;return((r=(o=n==null?void 0:n.update)==null?void 0:o.content)==null?void 0:r.text)??""}const cy="border-ink-secondary/45",dy="border-dashed border-ink-muted/35";function OO({state:e,firstRow:t=!1,lastRow:n=!1}){const o=e!=="upcoming",r=e==="played";return c.jsxs("span",{"aria-hidden":!0,className:"relative w-4 shrink-0 self-stretch",children:[!t&&c.jsx("span",{className:K("absolute left-1/2 top-0 h-1/2 -translate-x-1/2 border-l",o?cy:dy)}),!n&&c.jsx("span",{className:K("absolute bottom-0 left-1/2 h-1/2 -translate-x-1/2 border-l",r?cy:dy)}),e==="current"&&c.jsx("span",{className:"absolute left-1/2 top-1/2 h-[7px] w-[7px] -translate-x-1/2 -translate-y-1/2 rounded-full bg-ink-primary ring-2 ring-surface-base"})]})}function RO(e,t,n){return n===null?"upcoming":n>=e&&n<=t?"current":t<n?"played":"upcoming"}const AO=80;function Pc(e){return e.type==="message"?[e.message.seq,e.message.seq]:[e.firstSeq,e.lastSeq]}function MO(){const e=ne(E=>E.messages),t=ne(E=>E.selectedSeq),n=ne(E=>E.filters),o=ne(E=>E.playback.playhead),r=ne(E=>E.playback.playing),i=ne(E=>E.select),s=ne(E=>E.setPlayhead),a=I.useMemo(()=>bS(e,n),[e,n]),l=I.useMemo(()=>SO(a),[a]),d=I.useMemo(()=>Cl(e),[e]),p=I.useMemo(()=>tf(e),[e]),m=I.useMemo(()=>{const E=new Map;for(const q of e)E.set(q.seq,q.timestamp);return E},[e]),v=I.useMemo(()=>{if(t===null)return null;const E=d.get(t);if(E!==void 0)return E;for(const[q,z]of d)if(z===t)return q;return null},[t,d]),h=I.useRef(null),y=I.useRef({startIndex:0,endIndex:0}),b=at(E=>E.selectedUrl),g=b!==null&&!Qu(b),f=ne(E=>{var q;return((q=E.session)==null?void 0:q.id)??null}),u=ne(E=>E.replayDone),x=I.useRef(f),S=I.useRef(!1),T=I.useRef(!1);I.useEffect(()=>{x.current!==f&&(x.current=f,S.current=!1,T.current=!1)},[f]),I.useEffect(()=>{if(!g||!u||f===null||S.current||l.length===0)return;S.current=!0;const E=l.length-1,q=window.setTimeout(()=>{var z;(z=h.current)==null||z.scrollToIndex({index:E,align:"end",behavior:"smooth"})},50);return()=>window.clearTimeout(q)},[g,u,f,l.length]),I.useEffect(()=>{var F;if(g||!u||f===null||T.current||l.length===0)return;T.current=!0;const E=((F=e[e.length-1])==null?void 0:F.seq)??null;let q=o;o!==null&&E!==null&&o>=E&&(s(null),q=null);const z=t??q;if(z===null)return;const U=l.findIndex(G=>{const[Y,D]=Pc(G);return z>=Y&&z<=D});if(U<0)return;const L=G=>{var Y;return(Y=h.current)==null?void 0:Y.scrollToIndex({index:U,align:"center",behavior:G})};requestAnimationFrame(()=>requestAnimationFrame(()=>{L("smooth"),window.setTimeout(()=>{const{startIndex:G,endIndex:Y}=y.current;(U<G||U>Y)&&L("auto")},500)}))},[g,u,f,l,e,o,t,s]);const C=!g&&l.length>0,$=I.useMemo(()=>o===null?-1:l.findIndex(E=>{const[q,z]=Pc(E);return o>=q&&o<=z}),[l,o]),j=I.useRef(!0);I.useEffect(()=>{r&&(j.current=!0)},[r]),I.useEffect(()=>{var U;if(!r||!j.current||$<0)return;const{startIndex:E,endIndex:q}=y.current;($<=E||$>=q)&&((U=h.current)==null||U.scrollToIndex({index:$,align:"center",behavior:"auto"}))},[r,$]);const A=E=>{const q=l[E];if(!q)return null;const z=qO(q,{selectedSeq:t,pairedSeq:v,onSelect:i,responseToRequest:d,reqTimestampBySeq:m,validationBySeq:p});if(!C)return z;const[U,L]=Pc(q);return c.jsxs("div",{className:"flex items-stretch",children:[c.jsx(OO,{state:RO(U,L,o),firstRow:E===0,lastRow:E===l.length-1}),c.jsx("div",{className:"min-w-0 flex-1",children:z})]})};return c.jsxs("div",{className:"relative flex h-full flex-col",onWheel:()=>{r&&(j.current=!1)},children:[l.length===0?c.jsx("div",{className:"flex h-full items-center justify-center bg-surface-base font-mono text-xs text-ink-muted",children:"no messages match current filters"}):c.jsx(iO,{ref:h,className:"flex-1 bg-surface-base",totalCount:l.length,itemContent:A,rangeChanged:E=>{y.current=E},atBottomThreshold:AO,...g?{initialTopMostItemIndex:Math.max(0,l.length-1)}:{},followOutput:g?E=>E?"auto":!1:!1,computeItemKey:E=>UO(l[E])}),c.jsx(LO,{total:e.length,shown:a.length})]})}function qO(e,t){if(e.type==="message"){const n=e.message,o=t.responseToRequest.get(n.seq),r=o!==void 0?n.timestamp-(t.reqTimestampBySeq.get(o)??n.timestamp):void 0,i=t.validationBySeq.get(n.seq);return c.jsx(EO,{message:n,selected:t.selectedSeq===n.seq,paired:t.pairedSeq===n.seq,...r!==void 0?{latencyMs:r}:{},...i!==void 0?{validation:i}:{},onSelect:t.onSelect})}return c.jsx(PO,{messages:e.messages,combinedText:e.combinedText,firstTimestamp:e.firstTimestamp,lastTimestamp:e.lastTimestamp,selectedSeq:t.selectedSeq,onSelect:t.onSelect})}function UO(e){return e.type==="message"?`m-${e.message.seq}`:`c-${e.firstSeq}-${e.lastSeq}`}function LO({total:e,shown:t}){return e===0||t===e?null:c.jsxs("div",{className:"border-t border-line bg-surface-elev/60 px-4 py-1 text-right font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:["showing ",t," of ",e]})}function DO({message:e,tone:t="info"}){if(!e)return null;const n=t==="success"?"border-accent-out/50 bg-accent-out/10 text-accent-out":t==="warn"?"border-accent-warn/50 bg-accent-warn/10 text-accent-warn":"border-accent-info/50 bg-accent-info/10 text-accent-info";return c.jsx("div",{role:"status",className:K("pointer-events-none fixed right-4 top-[60px] z-50 rounded-sm border px-3 py-2 font-mono text-[11px] uppercase tracking-widest shadow-lg backdrop-blur-sm",n),children:e})}function zO({onImportResult:e}){const[t,n]=I.useState(!1),[o,r]=I.useState(!1),i=I.useRef(null),s=I.useRef(null),a=ne(h=>h.session),l=ne(h=>h.messages.length),d=a!==null&&l>0;I.useEffect(()=>{if(!t)return;const h=b=>{i.current&&!i.current.contains(b.target)&&n(!1)},y=b=>{b.key==="Escape"&&n(!1)};return document.addEventListener("mousedown",h),document.addEventListener("keydown",y),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",y)}},[t]);const p=()=>{var h;n(!1),(h=s.current)==null||h.click()},m=()=>{n(!1);const h=ne.getState();h.session&&h.messages.length>0&&Vb(h.session,h.messages)},v=async h=>{var b;const y=(b=h.target.files)==null?void 0:b[0];if(h.target.value="",!!y){r(!0);try{const g=await Nv(y);await Xu(),at.getState().setSelected(tl(g.id)),e==null||e(`imported ${y.name} · #${g.id} · ${g.messageCount} message${g.messageCount===1?"":"s"}`,"success")}catch(g){const f=g instanceof Error?g.message:String(g);e==null||e(`import failed: ${f}`,"warn")}finally{r(!1)}}};return c.jsxs("div",{ref:i,className:"relative",children:[c.jsx("input",{ref:s,type:"file",accept:"application/json,.json",onChange:v,className:"hidden","aria-hidden":"true",tabIndex:-1}),c.jsx("button",{type:"button",onClick:()=>n(h=>!h),title:"Session actions — import file · export","aria-haspopup":"menu","aria-expanded":t,"aria-label":"session actions",disabled:o,className:K("inline-flex h-7 w-7 items-center justify-center rounded-sm border font-mono text-[14px] leading-none transition-colors",t?"border-line-strong bg-surface-rowHover text-ink-primary":"border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary",o&&"cursor-progress opacity-60"),children:c.jsx("span",{"aria-hidden":!0,children:"⋯"})}),t&&c.jsxs("div",{role:"menu",className:"absolute right-0 top-[calc(100%+6px)] z-50 w-max overflow-hidden rounded-sm border border-line bg-surface-elev p-1 font-mono text-[11px] uppercase tracking-widest shadow-lg",children:[c.jsx(uy,{icon:"↑",label:"import",onClick:p,title:"Open a session JSON exported earlier — yours or someone else's."}),c.jsx(uy,{icon:"↓",label:"export",onClick:m,disabled:!d,title:"Download this session as JSON. Auth headers and proxy tokens (Authorization, X-Api-Key, JetBrains proxy_key) are redacted — safe to attach to a bug report. For an un-redacted copy (self-debug only), use 'acp-devtools export <id> --raw' in the CLI.",disabledTitle:"Nothing to export yet — wait for the first message."})]})]})}function uy({icon:e,label:t,onClick:n,disabled:o,title:r,disabledTitle:i}){return c.jsxs("button",{type:"button",role:"menuitem",disabled:o,onClick:n,title:o?i:r,className:K("flex w-full items-center gap-2 rounded-[2px] px-2 py-1.5 text-left transition-colors",o?"cursor-not-allowed text-ink-dim opacity-50":"text-ink-muted hover:bg-surface-rowHover hover:text-ink-secondary"),children:[c.jsx("span",{"aria-hidden":!0,className:"w-4 text-center text-[13px] leading-none",children:e}),c.jsx("span",{className:"flex-1",children:t})]})}function FO({onSelect:e,activeUrl:t,overrideUrl:n}){const o=at(u=>u.captures),r=at(u=>u.savedSessions),i=at(u=>u.lastFetchAt),[s,a]=I.useState(!1),l=I.useRef(null);I.useEffect(()=>{if(!s)return;const u=x=>{l.current&&!l.current.contains(x.target)&&a(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[s]);const d=o.find(u=>u.url===t)??null,p=t!==null&&Qu(t)?jS(t):null,m=I.useMemo(()=>new Set(o.map(u=>u.sessionDbId).filter(u=>u!==null)),[o]),v=I.useMemo(()=>r.filter(u=>!m.has(u.id)),[r,m]),h=I.useMemo(()=>v.filter(u=>u.imported_at===null),[v]),y=I.useMemo(()=>v.filter(u=>u.imported_at!==null),[v]),b=p!==null?v.find(u=>u.id===p)??null:null,g=o.length+v.length;let f;return n?f="?ws override":d?f=nf(d):b?f=`#${b.id} · ${b.name??(b.client_name?`${b.client_name} · ${Rt(b.agent_command??"")}`:Rt(b.agent_command??""))}`:g===0?f="no captures":f="pick capture",c.jsxs("div",{ref:l,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>a(u=>!u),className:K("inline-flex h-7 items-center gap-2 rounded-sm border px-3 font-mono text-[10px] uppercase tracking-widest transition-colors","border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary",s?"border-line-strong text-ink-primary":""),title:"Select a live capture or saved session",children:[c.jsx("span",{className:"inline-block w-[200px] truncate text-left",children:f}),g>1&&!n&&c.jsx("span",{className:"rounded-sm border border-line-strong px-1 text-[9px] text-ink-secondary",children:g}),c.jsx("span",{"aria-hidden":!0,className:K("transition-transform",s?"rotate-180":""),children:"▾"})]}),s&&c.jsxs("div",{className:K("absolute right-0 top-[calc(100%+6px)] z-50 w-[460px] rounded-md border border-line bg-surface-elev shadow-xl"),children:[c.jsxs(Ic,{children:["live captures · last poll"," ",i?`${Math.round((Date.now()-i)/1e3)}s ago`:"—"]}),o.length===0&&c.jsxs("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:["none. start a proxy with"," ",c.jsx("span",{className:"text-ink-secondary",children:"acp-devtools proxy …"})]}),c.jsx("ul",{className:"max-h-[260px] overflow-y-auto",children:o.map(u=>c.jsx("li",{children:c.jsxs("button",{type:"button",onClick:()=>{e(u.url),a(!1)},title:`${u.agentCommand} · ${u.url}${u.saveTo?" · saved to local store":" · not persisted"}`,className:K("flex w-full items-baseline gap-3 border-b border-line-grid/70 px-3 py-2 text-left transition-colors hover:bg-surface-rowHover",u.url===t?"bg-surface-rowHover":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("h-2 w-2 shrink-0 rounded-full",u.url===t?"bg-accent-out animate-pulse-soft":"bg-accent-warn/50")}),c.jsxs("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-ink-primary",children:[c.jsx("span",{className:"text-accent-out",children:u.sessionDbId!==null?`#${u.sessionDbId}`:`pid ${u.pid}`}),c.jsx("span",{className:"text-ink-muted",children:" · "}),u.sessionName??(u.clientName?`${u.clientName} · ${Rt(u.agentCommand)}`:Rt(u.agentCommand))]}),c.jsx("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:Mr(u.startedAt)})]})},u.url))}),c.jsxs(Ic,{children:["saved · ",h.length," session",h.length===1?"":"s"]}),h.length===0&&c.jsx("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:r.length===0?"no saved sessions yet":y.length>0?"no live-captured sessions yet":"all saved sessions are currently live"}),c.jsx("ul",{className:"max-h-[300px] overflow-y-auto",children:h.map(u=>c.jsx(py,{s:u,activeUrl:t,onPick:x=>{e(x),a(!1)}},u.id))}),(y.length>0||r.some(u=>u.imported_at!==null))&&c.jsxs(c.Fragment,{children:[c.jsxs(Ic,{children:["imported · ",y.length," file",y.length===1?"":"s"]}),y.length===0?c.jsx("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:"no imported files"}):c.jsx("ul",{className:"max-h-[200px] overflow-y-auto",children:y.map(u=>c.jsx(py,{s:u,activeUrl:t,onPick:x=>{e(x),a(!1)}},u.id))})]}),n&&c.jsx("div",{className:"border-t border-line px-3 py-2 font-mono text-[10px] uppercase tracking-widest text-accent-warn",children:"?ws override active — discovery selection ignored"})]})]})}function Ic({children:e}){return c.jsx("div",{className:"border-b border-line bg-surface-base/50 px-3 py-1.5 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e})}function py({s:e,activeUrl:t,onPick:n}){const o=tl(e.id),r=o===t,i=s=>{s.stopPropagation();const a=e.name??Rt(e.agent_command??"");window.confirm(`Delete session #${e.id} ${a} forever?`)&&(async()=>{try{await _S(e.id),r&&at.getState().setSelected(null),await Xu()}catch(l){const d=l instanceof Error?l.message:String(l);window.alert(`Delete failed: ${d}`)}})()};return c.jsxs("li",{className:"group relative",children:[c.jsxs("button",{type:"button",onClick:()=>n(o),title:`session #${e.id} · ${e.agent_command??""} · ${e.message_count} messages`,className:K("flex w-full items-baseline gap-3 border-b border-line-grid/70 px-3 py-2 text-left transition-colors hover:bg-surface-rowHover",r?"bg-surface-rowHover":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("h-2 w-2 shrink-0 rounded-full",r?"bg-accent-note animate-pulse-soft":"bg-ink-dim")}),c.jsxs("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-ink-primary",children:[c.jsxs("span",{className:"text-accent-note",children:["#",e.id]}),c.jsx("span",{className:"text-ink-muted",children:" · "}),e.name??(e.client_name?`${e.client_name} · ${Rt(e.agent_command??"")}`:Rt(e.agent_command??""))]}),c.jsxs("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors group-hover:text-ink-secondary",children:[e.message_count,"msg · ",Mr(e.started_at)]})]}),c.jsx("button",{type:"button",onClick:i,"aria-label":`delete session #${e.id} forever`,title:"Delete this session permanently",className:K("absolute right-2 top-1/2 hidden h-6 w-6 -translate-y-1/2 items-center justify-center rounded-sm border border-line bg-surface-elev/70 text-[12px] leading-none text-ink-muted transition-colors","group-hover:flex hover:border-accent-error/70 hover:bg-surface-rowHover hover:text-accent-error"),children:c.jsx("span",{"aria-hidden":!0,children:"×"})})]})}const Oc=[{mode:"system",label:"AUTO",title:"follow OS theme",icon:"◐"},{mode:"light",label:"LIGHT",title:"force light theme",icon:"☀"},{mode:"dark",label:"DARK",title:"force dark theme",icon:"☾"}];function BO(){const e=Id(s=>s.mode),t=Id(s=>s.setMode),[n,o]=I.useState(!1),r=I.useRef(null);I.useEffect(()=>{if(!n)return;const s=a=>{r.current&&!r.current.contains(a.target)&&o(!1)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[n]);const i=Oc.find(s=>s.mode===e)??Oc[0];return c.jsxs("div",{ref:r,className:"relative",children:[c.jsx("button",{type:"button",onClick:()=>o(s=>!s),title:`theme · ${i.title}`,"aria-haspopup":"menu","aria-expanded":n,className:K("inline-flex h-7 w-7 items-center justify-center rounded-sm border font-mono text-[12px] transition-colors",n?"border-line-strong bg-surface-rowHover text-ink-primary":"border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary"),children:c.jsx("span",{"aria-hidden":!0,children:i.icon})}),n&&c.jsx("div",{role:"menu",className:"absolute right-0 top-[calc(100%+6px)] z-50 inline-flex items-center gap-px rounded-sm border border-line bg-surface-elev p-px font-mono text-[10px] uppercase tracking-widest shadow-lg",children:Oc.map(s=>{const a=s.mode===e;return c.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":a,onClick:()=>{t(s.mode),o(!1)},title:s.title,className:K("inline-flex items-center gap-1 rounded-[2px] px-2 py-1 transition-colors",a?"bg-accent-out/15 text-accent-out":"text-ink-muted hover:bg-surface-rowHover hover:text-ink-secondary"),children:[c.jsx("span",{"aria-hidden":!0,children:s.icon}),c.jsx("span",{children:s.label})]},s.mode)})})]})}function HO({wsUrl:e,overrideUrl:t,activeUrl:n,isReplay:o,isImported:r=!1,onPickCapture:i,onImportResult:s,onOpenInfo:a,onOpenPerf:l,onOpenDiff:d}){const p=ne(b=>b.connection),m=ne(b=>b.session),v=ne(b=>b.lastError),h=ne(b=>b.messages.length>0?b.messages[b.messages.length-1].timestamp:null),y=ex(5e3);return c.jsxs("header",{className:"flex items-center justify-between border-b border-line bg-surface-base px-5 py-2.5",children:[c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsx("div",{className:"wordmark-rule",children:c.jsx("span",{className:"font-display text-[18px] uppercase tracking-[0.18em] text-ink-primary",children:"acp.devtools"})}),c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:"v0.5.0"})]}),c.jsxs("div",{className:"flex items-center gap-4",children:[m&&(()=>{const{primary:b}=ql(m),g=o||r,f=m.endedAt!==null?m.endedAt:h??m.startedAt,u=g?Mr(m.startedAt,f):Mr(m.startedAt,y),x=h!==null?y-h:null,S=!g&&x!==null&&x>5e3,T=_a(m.startedAt,y),C=r?"IMPORTED":o?"REPLAY":"SESSION",$=r?"session loaded from a JSON file on disk — not connected to any proxy":o?"replay of a saved session — proxy has ended":"live capture — proxy process is still running",j=r?"text-accent-warn":o?"text-accent-note":"text-accent-out";return c.jsxs("div",{className:"flex items-center gap-3 font-mono text-[11px] text-ink-secondary",children:[c.jsx("span",{className:"text-ink-muted",title:$,children:C}),c.jsx("span",{className:j,title:m.agentCommand?`session #${m.id} · ${m.agentCommand}`:"persisted session id",children:b}),c.jsx("span",{className:"text-ink-muted",children:"·"}),c.jsx("span",{title:`session started at ${T}`,children:_a(m.startedAt,y)}),u&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"text-ink-muted",children:"·"}),c.jsxs("span",{className:"text-ink-muted",title:g?"capture duration (start → end of recorded session)":"how long the proxy process has been alive",children:[g?"lasted":"alive"," ",u]})]}),S&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"text-ink-muted",children:"·"}),c.jsxs("span",{className:"text-ink-dim",title:`time since the most recent ACP frame · last event ${_a(h,y)}`,children:["idle ",Mr(h,y)]})]})]})})(),c.jsxs("div",{className:"flex items-center gap-1.5",children:[i&&c.jsx(FO,{onSelect:i,activeUrl:n,overrideUrl:t}),c.jsx(VO,{status:p,wsUrl:e,lastError:v,isReplay:o,isImported:r,onReconnect:kS})]}),c.jsxs("div",{className:"flex items-center gap-1.5",children:[a&&m&&c.jsx("button",{type:"button",onClick:a,className:"inline-flex h-7 items-center rounded-sm border border-line bg-surface-row px-3 font-mono text-[10px] uppercase tracking-widest text-ink-secondary transition-colors hover:bg-surface-rowHover hover:text-ink-primary",title:"Show session info — client/agent capabilities, runtime state","aria-label":"Open session info panel",children:"info"}),l&&m&&c.jsx("button",{type:"button",onClick:l,className:"inline-flex h-7 items-center rounded-sm border border-line bg-surface-row px-3 font-mono text-[10px] uppercase tracking-widest text-ink-secondary transition-colors hover:bg-surface-rowHover hover:text-ink-primary",title:"Show performance dashboard — per-method latency stats and waterfall timeline","aria-label":"Open performance dashboard",children:"perf"}),d&&m&&c.jsx("button",{type:"button",onClick:d,className:"inline-flex h-7 items-center rounded-sm border border-line bg-surface-row px-3 font-mono text-[10px] uppercase tracking-widest text-ink-secondary transition-colors hover:bg-surface-rowHover hover:text-ink-primary",title:"Compare this session against another — metadata, per-method latency, and frame-level differences","aria-label":"Open session diff",children:"diff"}),c.jsx(zO,{...s?{onImportResult:s}:{}})]}),c.jsx("div",{className:"flex items-center gap-1.5",children:c.jsx(BO,{})})]})]})}function VO({status:e,wsUrl:t,lastError:n,isReplay:o,isImported:r,onReconnect:i}){if(r)return c.jsxs("div",{className:"inline-flex h-7 cursor-default items-center gap-2 rounded-sm border border-accent-warn/40 bg-accent-warn/10 px-3 font-mono text-[10px] font-semibold uppercase tracking-widest text-accent-warn",title:`viewing data from a JSON file · ${t}`,children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block h-2 w-2 rounded-full bg-accent-warn"}),c.jsx("span",{className:"inline-block min-w-[52px] text-center",children:"FILE"})]});const a=e==="open"?o?"REPLAY":"LIVE":e==="connecting"?"WAITING":e==="idle"?"IDLE":e==="closed"?"CLOSED":"ERROR",d={idle:"text-ink-secondary bg-surface-row border-line",connecting:"text-accent-warn/80 bg-accent-warn/10 border-accent-warn/30",open:o?"text-accent-note bg-accent-note/10 border-accent-note/40":"text-accent-out bg-accent-out/10 border-accent-out/40",closed:"text-ink-secondary bg-surface-row border-line",error:"text-accent-error bg-accent-error/10 border-accent-error/40"},m=e==="open"?o?"bg-accent-note animate-pulse-soft":"bg-accent-out animate-pulse-soft":e==="connecting"?"bg-accent-warn/60 animate-pulse-soft":e==="error"?"bg-accent-error":"bg-ink-dim",v=e==="idle"||e==="closed"||e==="error",y=n||(e==="open"?`${o?"serving a recorded session from the local store":"connected to a live proxy capture"} · ${t}`:v?`click to reconnect · ${t}`:t);return c.jsxs("button",{type:"button",onClick:v?i:void 0,disabled:!v,className:K("inline-flex h-7 items-center gap-2 rounded-sm border px-3 font-mono text-[10px] font-semibold uppercase tracking-widest transition-colors",d[e],v?"cursor-pointer hover:bg-surface-rowHover":"cursor-default"),title:y,children:[c.jsx("span",{"aria-hidden":!0,className:K("inline-block h-2 w-2 rounded-full",m)}),c.jsx("span",{className:"inline-block min-w-[52px] text-center",children:a})]})}const ur=eC(),WO=ur?new URLSearchParams(typeof window<"u"?window.location.search:"").get("url"):null;function KO(){const e=at(w=>w.captures),t=at(w=>w.selectedUrl),n=at(w=>w.setSelected),o=ne(w=>{var k;return((k=w.session)==null?void 0:k.importedAt)??null}),r=t,i=Qu(t),s=o!==null;I.useEffect(()=>ur?void 0:OS(),[]),I.useEffect(()=>MS(),[]);const[a,l]=I.useState(null),d=I.useRef(new Set);I.useEffect(()=>{const w=yh(window.location.search),k=ne.getState(),N={};Object.keys(w.filters).length>0&&(N.filters={...k.filters,...w.filters}),w.selectedSeq!==null&&(N.selectedSeq=w.selectedSeq),w.detailTab!==null&&(N.detailTab=w.detailTab),w.playhead!==null&&(N.playback={...k.playback,playhead:w.playhead}),Object.keys(N).length>0&&ne.setState(N),w.captureUrl&&at.getState().setSelected(w.captureUrl)},[]);const[p,m]=I.useState(!1),[v,h]=I.useState(!1),[y,b]=I.useState(!1);I.useEffect(()=>{const w=()=>{const H=ne.getState(),R=at.getState();aC({filters:H.filters,selectedSeq:H.selectedSeq,detailTab:H.detailTab,playhead:H.playback.playhead,captureUrl:R.selectedUrl})},k=ne.subscribe(w),N=at.subscribe(w);return w(),()=>{k(),N()}},[]);const g=()=>{p||(window.history.pushState({drawer:"info"},"",window.location.href),m(!0))},f=()=>{v||(window.history.pushState({drawer:"perf"},"",window.location.href),h(!0))},u=()=>{y||(window.history.pushState({drawer:"diff"},"",window.location.href),b(!0))},x=()=>{p&&window.history.back()},S=()=>{v&&window.history.back()},T=()=>{y&&window.history.back()},C=w=>{window.history.pushState({drawer:null},"",window.location.href),ne.getState().select(w),m(!1),h(!1),b(!1)};I.useEffect(()=>{const w=k=>{const N=k.state;m((N==null?void 0:N.drawer)==="info"),h((N==null?void 0:N.drawer)==="perf"),b((N==null?void 0:N.drawer)==="diff");const H=yh(window.location.search),R=ne.getState(),X=at.getState(),ie={};Object.keys(H.filters).length>0&&(ie.filters={...R.filters,...H.filters}),ie.selectedSeq=H.selectedSeq,ie.detailTab=H.detailTab??"tree",ie.playback={...R.playback,playhead:H.playhead},ne.setState(ie),H.captureUrl!==X.selectedUrl&&H.captureUrl&&X.setSelected(H.captureUrl)};return window.addEventListener("popstate",w),()=>window.removeEventListener("popstate",w)},[]),I.useEffect(()=>{const w=new Set(e.map(X=>X.url));if(d.current=d.current,i){d.current=w;return}const k=e[0]??null,N=t===null,H=t!==null&&w.has(t),R=k!==null&&!d.current.has(k.url)&&d.current.size>0;e.length===0?t!==null&&n(null):N||!H?n(k.url):R&&k.url!==t&&(n(k.url),l({message:`switched → ${nf(k)}`,tone:"success"})),d.current=w},[e,t,n,i]),I.useEffect(()=>{if(!a)return;let w=3e3,k=Date.now(),N=null;const H=()=>{N===null&&document.visibilityState==="visible"&&(k=Date.now(),N=setTimeout(()=>l(null),w))},R=()=>{N!==null&&(clearTimeout(N),N=null,w=Math.max(0,w-(Date.now()-k)))},X=()=>{document.visibilityState==="visible"?H():R()};return document.addEventListener("visibilitychange",X),H(),()=>{document.removeEventListener("visibilitychange",X),N&&clearTimeout(N)}},[a]),I.useEffect(()=>{if(ur){Ed();return}if(!r){Ed();return}Ju(r)},[r]);const[$,j]=I.useState(!1);I.useEffect(()=>{const w=k=>{if((k.metaKey||k.ctrlKey)&&(k.key==="k"||k.key==="K")){k.preventDefault(),j(H=>!H);return}if($)return;const N=k.target;if(!(N&&(N.tagName==="INPUT"||N.tagName==="TEXTAREA"))){if(k.key==="Escape"){ne.getState().select(null);return}if(k.key==="j"||k.key==="J"){fy(1);return}if(k.key==="k"||k.key==="K"){fy(-1);return}}};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[$]);const A=ne(w=>w.messages),E=ne(w=>w.session),q=ne(w=>w.selectedSeq),z=ne(w=>w.connection),U=ne(w=>w.lastError);I.useEffect(()=>{const w="ACP Devtools";if(!E){document.title=w;return}const{primary:k,secondary:N}=ql(E),H=N?`${k} · ${N}`:k;document.title=`${H} — ${w}`},[E]);const L=I.useMemo(()=>xS(A,q),[A,q]),F=I.useMemo(()=>{const w=Cl(A),k=new Map;for(const[N,H]of w.entries())k.set(H,N);return{responseToRequest:w,requestToResponse:k}},[A]),G=I.useMemo(()=>tf(A),[A]);let Y,D=null;if(L){if(L.kind==="response"||L.kind==="error"){const w=F.responseToRequest.get(L.seq);w!==void 0&&(D=A.find(k=>k.seq===w)??null,D&&(Y=L.timestamp-D.timestamp))}else if(L.kind==="request"){const w=F.requestToResponse.get(L.seq);w!==void 0&&(D=A.find(k=>k.seq===w)??null,D&&(Y=D.timestamp-L.timestamp))}}const J=A.length===0&&!E,O=r??"no capture selected",_=ur&&J,M=!ur&&J&&r===null&&e.length===0,P=!ur&&J&&!M;return c.jsxs("div",{className:"flex h-full flex-col bg-surface-base text-ink-primary",children:[c.jsx(DO,{message:(a==null?void 0:a.message)??null,tone:(a==null?void 0:a.tone)??"info"}),c.jsx(XC,{open:$,onClose:()=>j(!1)}),c.jsx(zP,{open:p,onClose:x}),c.jsx(jP,{open:v,onClose:S,onNavigateToSeq:C}),c.jsx(FE,{open:y,onClose:T}),c.jsx(HO,{wsUrl:O,overrideUrl:null,isReplay:i,isImported:s,onPickCapture:w=>{n(w),d.current.add(w)},onImportResult:(w,k)=>l({message:w,tone:k}),activeUrl:r,onOpenInfo:g,onOpenPerf:f,onOpenDiff:u}),c.jsx(rP,{}),c.jsx("main",{className:"flex-1 overflow-hidden",children:_?c.jsx(UP,{initialUrl:WO}):M?c.jsx(nP,{status:z,lastError:U,url:O,captureCount:e.length}):P?c.jsx(nE,{status:z,url:O,lastError:U}):c.jsx(VP,{storageKey:"acp.split.leftPx",initialLeftFraction:.62,minLeft:420,minRight:360,left:c.jsxs("div",{className:"flex h-full flex-col",children:[c.jsx("div",{className:"min-h-0 flex-1",children:c.jsx(MO,{})}),(i||s)&&c.jsx(DP,{})]}),right:c.jsx(vE,{message:L,...Y!==void 0?{latencyMs:Y}:{},...D?{pairedRequest:D}:{},...L?(()=>{const w=G.get(L.seq);return w?{validation:w}:{}})():{},onJumpToPaired:w=>ne.getState().select(w)})})}),c.jsx(WP,{})]})}function fy(e){const t=ne.getState(),{messages:n,selectedSeq:o}=t;if(n.length===0)return;if(o===null){const s=e===1?n[0]:n[n.length-1];s&&t.select(s.seq);return}const r=n.findIndex(s=>s.seq===o);if(r===-1){const s=n[0];s&&t.select(s.seq);return}const i=n[r+e];i&&t.select(i.seq)}const qx=document.getElementById("root");if(!qx)throw new Error("#root not found");Rc.createRoot(qx).render(c.jsx(te.StrictMode,{children:c.jsx(KO,{})}));
|
|
1768
|
-
//# sourceMappingURL=index-
|
|
1765
|
+
deps: ${p}}`};const r={keyword:"dependencies",type:"object",schemaType:"object",error:e.error,code(l){const[d,p]=i(l);s(l,d),a(l,p)}};function i({schema:l}){const d={},p={};for(const m in l){if(m==="__proto__")continue;const v=Array.isArray(l[m])?d:p;v[m]=l[m]}return[d,p]}function s(l,d=l.schema){const{gen:p,data:m,it:v}=l;if(Object.keys(d).length===0)return;const h=p.let("missing");for(const y in d){const b=d[y];if(b.length===0)continue;const g=(0,o.propertyInData)(p,m,y,v.opts.ownProperties);l.setParams({property:y,depsCount:b.length,deps:b.join(", ")}),v.allErrors?p.if(g,()=>{for(const f of b)(0,o.checkReportMissingProp)(l,f)}):(p.if((0,t._)`${g} && (${(0,o.checkMissingProp)(l,b,h)})`),(0,o.reportMissingProp)(l,h),p.else())}}e.validatePropertyDeps=s;function a(l,d=l.schema){const{gen:p,data:m,keyword:v,it:h}=l,y=p.name("valid");for(const b in d)(0,n.alwaysValidSchema)(h,d[b])||(p.if((0,o.propertyInData)(p,m,b,h.opts.ownProperties),()=>{const g=l.subschema({keyword:v,schemaProp:b},y);l.mergeValidEvaluated(g,y)},()=>p.var(y,!0)),l.ok(y))}e.validateSchemaDeps=a,e.default=r})(Rl);var Ip={};Object.defineProperty(Ip,"__esModule",{value:!0});const Rb=ue,M1=Q,q1={message:"property name must be valid",params:({params:e})=>(0,Rb._)`{propertyName: ${e.propertyName}}`},U1={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:q1,code(e){const{gen:t,schema:n,data:o,it:r}=e;if((0,M1.alwaysValidSchema)(r,n))return;const i=t.name("valid");t.forIn("key",o,s=>{e.setParams({propertyName:s}),e.subschema({keyword:"propertyNames",data:s,dataTypes:["string"],propertyName:s,compositeRule:!0},i),t.if((0,Rb.not)(i),()=>{e.error(!0),r.allErrors||t.break()})}),e.ok(i)}};Ip.default=U1;var Al={};Object.defineProperty(Al,"__esModule",{value:!0});const Zs=ye,en=ue,L1=Dt,ea=Q,D1={message:"must NOT have additional properties",params:({params:e})=>(0,en._)`{additionalProperty: ${e.additionalProperty}}`},z1={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:D1,code(e){const{gen:t,schema:n,parentSchema:o,data:r,errsCount:i,it:s}=e;if(!i)throw new Error("ajv implementation error");const{allErrors:a,opts:l}=s;if(s.props=!0,l.removeAdditional!=="all"&&(0,ea.alwaysValidSchema)(s,n))return;const d=(0,Zs.allSchemaProperties)(o.properties),p=(0,Zs.allSchemaProperties)(o.patternProperties);m(),e.ok((0,en._)`${i} === ${L1.default.errors}`);function m(){t.forIn("key",r,g=>{!d.length&&!p.length?y(g):t.if(v(g),()=>y(g))})}function v(g){let f;if(d.length>8){const u=(0,ea.schemaRefOrVal)(s,o.properties,"properties");f=(0,Zs.isOwnProperty)(t,u,g)}else d.length?f=(0,en.or)(...d.map(u=>(0,en._)`${g} === ${u}`)):f=en.nil;return p.length&&(f=(0,en.or)(f,...p.map(u=>(0,en._)`${(0,Zs.usePattern)(e,u)}.test(${g})`))),(0,en.not)(f)}function h(g){t.code((0,en._)`delete ${r}[${g}]`)}function y(g){if(l.removeAdditional==="all"||l.removeAdditional&&n===!1){h(g);return}if(n===!1){e.setParams({additionalProperty:g}),e.error(),a||t.break();return}if(typeof n=="object"&&!(0,ea.alwaysValidSchema)(s,n)){const f=t.name("valid");l.removeAdditional==="failing"?(b(g,f,!1),t.if((0,en.not)(f),()=>{e.reset(),h(g)})):(b(g,f),a||t.if((0,en.not)(f),()=>t.break()))}}function b(g,f,u){const x={keyword:"additionalProperties",dataProp:g,dataPropType:ea.Type.Str};u===!1&&Object.assign(x,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(x,f)}}};Al.default=z1;var Op={};Object.defineProperty(Op,"__esModule",{value:!0});const F1=ln,Zm=ye,wc=Q,eh=Al,B1={keyword:"properties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,parentSchema:o,data:r,it:i}=e;i.opts.removeAdditional==="all"&&o.additionalProperties===void 0&&eh.default.code(new F1.KeywordCxt(i,eh.default,"additionalProperties"));const s=(0,Zm.allSchemaProperties)(n);for(const m of s)i.definedProperties.add(m);i.opts.unevaluated&&s.length&&i.props!==!0&&(i.props=wc.mergeEvaluated.props(t,(0,wc.toHash)(s),i.props));const a=s.filter(m=>!(0,wc.alwaysValidSchema)(i,n[m]));if(a.length===0)return;const l=t.name("valid");for(const m of a)d(m)?p(m):(t.if((0,Zm.propertyInData)(t,r,m,i.opts.ownProperties)),p(m),i.allErrors||t.else().var(l,!0),t.endIf()),e.it.definedProperties.add(m),e.ok(l);function d(m){return i.opts.useDefaults&&!i.compositeRule&&n[m].default!==void 0}function p(m){e.subschema({keyword:"properties",schemaProp:m,dataProp:m},l)}}};Op.default=B1;var Rp={};Object.defineProperty(Rp,"__esModule",{value:!0});const th=ye,ta=ue,nh=Q,oh=Q,H1={keyword:"patternProperties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,data:o,parentSchema:r,it:i}=e,{opts:s}=i,a=(0,th.allSchemaProperties)(n),l=a.filter(b=>(0,nh.alwaysValidSchema)(i,n[b]));if(a.length===0||l.length===a.length&&(!i.opts.unevaluated||i.props===!0))return;const d=s.strictSchema&&!s.allowMatchingProperties&&r.properties,p=t.name("valid");i.props!==!0&&!(i.props instanceof ta.Name)&&(i.props=(0,oh.evaluatedPropsToName)(t,i.props));const{props:m}=i;v();function v(){for(const b of a)d&&h(b),i.allErrors?y(b):(t.var(p,!0),y(b),t.if(p))}function h(b){for(const g in d)new RegExp(b).test(g)&&(0,nh.checkStrictMode)(i,`property ${g} matches pattern ${b} (use allowMatchingProperties)`)}function y(b){t.forIn("key",o,g=>{t.if((0,ta._)`${(0,th.usePattern)(e,b)}.test(${g})`,()=>{const f=l.includes(b);f||e.subschema({keyword:"patternProperties",schemaProp:b,dataProp:g,dataPropType:oh.Type.Str},p),i.opts.unevaluated&&m!==!0?t.assign((0,ta._)`${m}[${g}]`,!0):!f&&!i.allErrors&&t.if((0,ta.not)(p),()=>t.break())})})}}};Rp.default=H1;var Ap={};Object.defineProperty(Ap,"__esModule",{value:!0});const V1=Q,W1={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){const{gen:t,schema:n,it:o}=e;if((0,V1.alwaysValidSchema)(o,n)){e.fail();return}const r=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},r),e.failResult(r,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Ap.default=W1;var Mp={};Object.defineProperty(Mp,"__esModule",{value:!0});const K1=ye,G1={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:K1.validateUnion,error:{message:"must match a schema in anyOf"}};Mp.default=G1;var qp={};Object.defineProperty(qp,"__esModule",{value:!0});const Sa=ue,J1=Q,Q1={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,Sa._)`{passingSchemas: ${e.passing}}`},Y1={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Q1,code(e){const{gen:t,schema:n,parentSchema:o,it:r}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(r.opts.discriminator&&o.discriminator)return;const i=n,s=t.let("valid",!1),a=t.let("passing",null),l=t.name("_valid");e.setParams({passing:a}),t.block(d),e.result(s,()=>e.reset(),()=>e.error(!0));function d(){i.forEach((p,m)=>{let v;(0,J1.alwaysValidSchema)(r,p)?t.var(l,!0):v=e.subschema({keyword:"oneOf",schemaProp:m,compositeRule:!0},l),m>0&&t.if((0,Sa._)`${l} && ${s}`).assign(s,!1).assign(a,(0,Sa._)`[${a}, ${m}]`).else(),t.if(l,()=>{t.assign(s,!0),t.assign(a,m),v&&e.mergeEvaluated(v,Sa.Name)})})}}};qp.default=Y1;var Up={};Object.defineProperty(Up,"__esModule",{value:!0});const X1=Q,Z1={keyword:"allOf",schemaType:"array",code(e){const{gen:t,schema:n,it:o}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");const r=t.name("valid");n.forEach((i,s)=>{if((0,X1.alwaysValidSchema)(o,i))return;const a=e.subschema({keyword:"allOf",schemaProp:s},r);e.ok(r),e.mergeEvaluated(a)})}};Up.default=Z1;var Lp={};Object.defineProperty(Lp,"__esModule",{value:!0});const sl=ue,Ab=Q,e_={message:({params:e})=>(0,sl.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,sl._)`{failingKeyword: ${e.ifClause}}`},t_={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:e_,code(e){const{gen:t,parentSchema:n,it:o}=e;n.then===void 0&&n.else===void 0&&(0,Ab.checkStrictMode)(o,'"if" without "then" and "else" is ignored');const r=rh(o,"then"),i=rh(o,"else");if(!r&&!i)return;const s=t.let("valid",!0),a=t.name("_valid");if(l(),e.reset(),r&&i){const p=t.let("ifClause");e.setParams({ifClause:p}),t.if(a,d("then",p),d("else",p))}else r?t.if(a,d("then")):t.if((0,sl.not)(a),d("else"));e.pass(s,()=>e.error(!0));function l(){const p=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);e.mergeEvaluated(p)}function d(p,m){return()=>{const v=e.subschema({keyword:p},a);t.assign(s,a),e.mergeValidEvaluated(v,s),m?t.assign(m,(0,sl._)`${p}`):e.setParams({ifClause:p})}}}};function rh(e,t){const n=e.schema[t];return n!==void 0&&!(0,Ab.alwaysValidSchema)(e,n)}Lp.default=t_;var Dp={};Object.defineProperty(Dp,"__esModule",{value:!0});const n_=Q,o_={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:n}){t.if===void 0&&(0,n_.checkStrictMode)(n,`"${e}" without "if" is ignored`)}};Dp.default=o_;Object.defineProperty(Np,"__esModule",{value:!0});const r_=Zr,i_=Cp,s_=ei,a_=Ep,l_=Pp,c_=Rl,d_=Ip,u_=Al,p_=Op,f_=Rp,m_=Ap,h_=Mp,y_=qp,g_=Up,v_=Lp,b_=Dp;function x_(e=!1){const t=[m_.default,h_.default,y_.default,g_.default,v_.default,b_.default,d_.default,u_.default,c_.default,p_.default,f_.default];return e?t.push(i_.default,a_.default):t.push(r_.default,s_.default),t.push(l_.default),t}Np.default=x_;var zp={},ti={};Object.defineProperty(ti,"__esModule",{value:!0});ti.dynamicAnchor=void 0;const Sc=ue,w_=Dt,ih=xt,S_=zn,$_={keyword:"$dynamicAnchor",schemaType:"string",code:e=>Mb(e,e.schema)};function Mb(e,t){const{gen:n,it:o}=e;o.schemaEnv.root.dynamicAnchors[t]=!0;const r=(0,Sc._)`${w_.default.dynamicAnchors}${(0,Sc.getProperty)(t)}`,i=o.errSchemaPath==="#"?o.validateName:k_(e);n.if((0,Sc._)`!${r}`,()=>n.assign(r,i))}ti.dynamicAnchor=Mb;function k_(e){const{schemaEnv:t,schema:n,self:o}=e.it,{root:r,baseId:i,localRefs:s,meta:a}=t.root,{schemaId:l}=o.opts,d=new ih.SchemaEnv({schema:n,schemaId:l,root:r,baseId:i,localRefs:s,meta:a});return ih.compileSchema.call(o,d),(0,S_.getValidate)(e,d)}ti.default=$_;var ni={};Object.defineProperty(ni,"__esModule",{value:!0});ni.dynamicRef=void 0;const sh=ue,T_=Dt,ah=zn,__={keyword:"$dynamicRef",schemaType:"string",code:e=>qb(e,e.schema)};function qb(e,t){const{gen:n,keyword:o,it:r}=e;if(t[0]!=="#")throw new Error(`"${o}" only supports hash fragment reference`);const i=t.slice(1);if(r.allErrors)s();else{const l=n.let("valid",!1);s(l),e.ok(l)}function s(l){if(r.schemaEnv.root.dynamicAnchors[i]){const d=n.let("_v",(0,sh._)`${T_.default.dynamicAnchors}${(0,sh.getProperty)(i)}`);n.if(d,a(d,l),a(r.validateName,l))}else a(r.validateName,l)()}function a(l,d){return d?()=>n.block(()=>{(0,ah.callRef)(e,l),n.let(d,!0)}):()=>(0,ah.callRef)(e,l)}}ni.dynamicRef=qb;ni.default=__;var Fp={};Object.defineProperty(Fp,"__esModule",{value:!0});const j_=ti,N_=Q,C_={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){e.schema?(0,j_.dynamicAnchor)(e,""):(0,N_.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};Fp.default=C_;var Bp={};Object.defineProperty(Bp,"__esModule",{value:!0});const E_=ni,P_={keyword:"$recursiveRef",schemaType:"string",code:e=>(0,E_.dynamicRef)(e,e.schema)};Bp.default=P_;Object.defineProperty(zp,"__esModule",{value:!0});const I_=ti,O_=ni,R_=Fp,A_=Bp,M_=[I_.default,O_.default,R_.default,A_.default];zp.default=M_;var Hp={},Vp={};Object.defineProperty(Vp,"__esModule",{value:!0});const lh=Rl,q_={keyword:"dependentRequired",type:"object",schemaType:"object",error:lh.error,code:e=>(0,lh.validatePropertyDeps)(e)};Vp.default=q_;var Wp={};Object.defineProperty(Wp,"__esModule",{value:!0});const U_=Rl,L_={keyword:"dependentSchemas",type:"object",schemaType:"object",code:e=>(0,U_.validateSchemaDeps)(e)};Wp.default=L_;var Kp={};Object.defineProperty(Kp,"__esModule",{value:!0});const D_=Q,z_={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:n}){t.contains===void 0&&(0,D_.checkStrictMode)(n,`"${e}" without "contains" is ignored`)}};Kp.default=z_;Object.defineProperty(Hp,"__esModule",{value:!0});const F_=Vp,B_=Wp,H_=Kp,V_=[F_.default,B_.default,H_.default];Hp.default=V_;var Gp={},Jp={};Object.defineProperty(Jp,"__esModule",{value:!0});const Xn=ue,ch=Q,W_=Dt,K_={message:"must NOT have unevaluated properties",params:({params:e})=>(0,Xn._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},G_={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:K_,code(e){const{gen:t,schema:n,data:o,errsCount:r,it:i}=e;if(!r)throw new Error("ajv implementation error");const{allErrors:s,props:a}=i;a instanceof Xn.Name?t.if((0,Xn._)`${a} !== true`,()=>t.forIn("key",o,m=>t.if(d(a,m),()=>l(m)))):a!==!0&&t.forIn("key",o,m=>a===void 0?l(m):t.if(p(a,m),()=>l(m))),i.props=!0,e.ok((0,Xn._)`${r} === ${W_.default.errors}`);function l(m){if(n===!1){e.setParams({unevaluatedProperty:m}),e.error(),s||t.break();return}if(!(0,ch.alwaysValidSchema)(i,n)){const v=t.name("valid");e.subschema({keyword:"unevaluatedProperties",dataProp:m,dataPropType:ch.Type.Str},v),s||t.if((0,Xn.not)(v),()=>t.break())}}function d(m,v){return(0,Xn._)`!${m} || !${m}[${v}]`}function p(m,v){const h=[];for(const y in m)m[y]===!0&&h.push((0,Xn._)`${v} !== ${y}`);return(0,Xn.and)(...h)}}};Jp.default=G_;var Qp={};Object.defineProperty(Qp,"__esModule",{value:!0});const Ro=ue,dh=Q,J_={message:({params:{len:e}})=>(0,Ro.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Ro._)`{limit: ${e}}`},Q_={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:J_,code(e){const{gen:t,schema:n,data:o,it:r}=e,i=r.items||0;if(i===!0)return;const s=t.const("len",(0,Ro._)`${o}.length`);if(n===!1)e.setParams({len:i}),e.fail((0,Ro._)`${s} > ${i}`);else if(typeof n=="object"&&!(0,dh.alwaysValidSchema)(r,n)){const l=t.var("valid",(0,Ro._)`${s} <= ${i}`);t.if((0,Ro.not)(l),()=>a(l,i)),e.ok(l)}r.items=!0;function a(l,d){t.forRange("i",d,s,p=>{e.subschema({keyword:"unevaluatedItems",dataProp:p,dataPropType:dh.Type.Num},l),r.allErrors||t.if((0,Ro.not)(l),()=>t.break())})}}};Qp.default=Q_;Object.defineProperty(Gp,"__esModule",{value:!0});const Y_=Jp,X_=Qp,Z_=[Y_.default,X_.default];Gp.default=Z_;var Yp={},Xp={};Object.defineProperty(Xp,"__esModule",{value:!0});const We=ue,ej={message:({schemaCode:e})=>(0,We.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,We._)`{format: ${e}}`},tj={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:ej,code(e,t){const{gen:n,data:o,$data:r,schema:i,schemaCode:s,it:a}=e,{opts:l,errSchemaPath:d,schemaEnv:p,self:m}=a;if(!l.validateFormats)return;r?v():h();function v(){const y=n.scopeValue("formats",{ref:m.formats,code:l.code.formats}),b=n.const("fDef",(0,We._)`${y}[${s}]`),g=n.let("fType"),f=n.let("format");n.if((0,We._)`typeof ${b} == "object" && !(${b} instanceof RegExp)`,()=>n.assign(g,(0,We._)`${b}.type || "string"`).assign(f,(0,We._)`${b}.validate`),()=>n.assign(g,(0,We._)`"string"`).assign(f,b)),e.fail$data((0,We.or)(u(),x()));function u(){return l.strictSchema===!1?We.nil:(0,We._)`${s} && !${f}`}function x(){const S=p.$async?(0,We._)`(${b}.async ? await ${f}(${o}) : ${f}(${o}))`:(0,We._)`${f}(${o})`,T=(0,We._)`(typeof ${f} == "function" ? ${S} : ${f}.test(${o}))`;return(0,We._)`${f} && ${f} !== true && ${g} === ${t} && !${T}`}}function h(){const y=m.formats[i];if(!y){u();return}if(y===!0)return;const[b,g,f]=x(y);b===t&&e.pass(S());function u(){if(l.strictSchema===!1){m.logger.warn(T());return}throw new Error(T());function T(){return`unknown format "${i}" ignored in schema at path "${d}"`}}function x(T){const C=T instanceof RegExp?(0,We.regexpCode)(T):l.code.formats?(0,We._)`${l.code.formats}${(0,We.getProperty)(i)}`:void 0,$=n.scopeValue("formats",{key:i,ref:T,code:C});return typeof T=="object"&&!(T instanceof RegExp)?[T.type||"string",T.validate,(0,We._)`${$}.validate`]:["string",T,$]}function S(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!p.$async)throw new Error("async format in sync schema");return(0,We._)`await ${f}(${o})`}return typeof g=="function"?(0,We._)`${f}(${o})`:(0,We._)`${f}.test(${o})`}}}};Xp.default=tj;Object.defineProperty(Yp,"__esModule",{value:!0});const nj=Xp,oj=[nj.default];Yp.default=oj;var Gr={};Object.defineProperty(Gr,"__esModule",{value:!0});Gr.contentVocabulary=Gr.metadataVocabulary=void 0;Gr.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Gr.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"];Object.defineProperty(fp,"__esModule",{value:!0});const rj=mp,ij=yp,sj=Np,aj=zp,lj=Hp,cj=Gp,dj=Yp,uh=Gr,uj=[aj.default,rj.default,ij.default,(0,sj.default)(!0),dj.default,uh.metadataVocabulary,uh.contentVocabulary,lj.default,cj.default];fp.default=uj;var Zp={},Ml={};Object.defineProperty(Ml,"__esModule",{value:!0});Ml.DiscrError=void 0;var ph;(function(e){e.Tag="tag",e.Mapping="mapping"})(ph||(Ml.DiscrError=ph={}));Object.defineProperty(Zp,"__esModule",{value:!0});const dr=ue,Dd=Ml,fh=xt,pj=Xr,fj=Q,mj={message:({params:{discrError:e,tagName:t}})=>e===Dd.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:n}})=>(0,dr._)`{error: ${e}, tag: ${n}, tagValue: ${t}}`},hj={keyword:"discriminator",type:"object",schemaType:"object",error:mj,code(e){const{gen:t,data:n,schema:o,parentSchema:r,it:i}=e,{oneOf:s}=r;if(!i.opts.discriminator)throw new Error("discriminator: requires discriminator option");const a=o.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(o.mapping)throw new Error("discriminator: mapping is not supported");if(!s)throw new Error("discriminator: requires oneOf keyword");const l=t.let("valid",!1),d=t.const("tag",(0,dr._)`${n}${(0,dr.getProperty)(a)}`);t.if((0,dr._)`typeof ${d} == "string"`,()=>p(),()=>e.error(!1,{discrError:Dd.DiscrError.Tag,tag:d,tagName:a})),e.ok(l);function p(){const h=v();t.if(!1);for(const y in h)t.elseIf((0,dr._)`${d} === ${y}`),t.assign(l,m(h[y]));t.else(),e.error(!1,{discrError:Dd.DiscrError.Mapping,tag:d,tagName:a}),t.endIf()}function m(h){const y=t.name("valid"),b=e.subschema({keyword:"oneOf",schemaProp:h},y);return e.mergeEvaluated(b,dr.Name),y}function v(){var h;const y={},b=f(r);let g=!0;for(let S=0;S<s.length;S++){let T=s[S];if(T!=null&&T.$ref&&!(0,fj.schemaHasRulesButRef)(T,i.self.RULES)){const $=T.$ref;if(T=fh.resolveRef.call(i.self,i.schemaEnv.root,i.baseId,$),T instanceof fh.SchemaEnv&&(T=T.schema),T===void 0)throw new pj.default(i.opts.uriResolver,i.baseId,$)}const C=(h=T==null?void 0:T.properties)===null||h===void 0?void 0:h[a];if(typeof C!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);g=g&&(b||f(T)),u(C,S)}if(!g)throw new Error(`discriminator: "${a}" must be required`);return y;function f({required:S}){return Array.isArray(S)&&S.includes(a)}function u(S,T){if(S.const)x(S.const,T);else if(S.enum)for(const C of S.enum)x(C,T);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function x(S,T){if(typeof S!="string"||S in y)throw new Error(`discriminator: "${a}" values must be unique strings`);y[S]=T}}}};Zp.default=hj;var ef={};const yj="https://json-schema.org/draft/2020-12/schema",gj="https://json-schema.org/draft/2020-12/schema",vj={"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},bj="meta",xj="Core and Validation specifications meta-schema",wj=[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],Sj=["object","boolean"],$j="This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",kj={definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}},Tj={$schema:yj,$id:gj,$vocabulary:vj,$dynamicAnchor:bj,title:xj,allOf:wj,type:Sj,$comment:$j,properties:kj},_j="https://json-schema.org/draft/2020-12/schema",jj="https://json-schema.org/draft/2020-12/meta/applicator",Nj={"https://json-schema.org/draft/2020-12/vocab/applicator":!0},Cj="meta",Ej="Applicator vocabulary meta-schema",Pj=["object","boolean"],Ij={prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},Oj={schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}},Rj={$schema:_j,$id:jj,$vocabulary:Nj,$dynamicAnchor:Cj,title:Ej,type:Pj,properties:Ij,$defs:Oj},Aj="https://json-schema.org/draft/2020-12/schema",Mj="https://json-schema.org/draft/2020-12/meta/unevaluated",qj={"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},Uj="meta",Lj="Unevaluated applicator vocabulary meta-schema",Dj=["object","boolean"],zj={unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}},Fj={$schema:Aj,$id:Mj,$vocabulary:qj,$dynamicAnchor:Uj,title:Lj,type:Dj,properties:zj},Bj="https://json-schema.org/draft/2020-12/schema",Hj="https://json-schema.org/draft/2020-12/meta/content",Vj={"https://json-schema.org/draft/2020-12/vocab/content":!0},Wj="meta",Kj="Content vocabulary meta-schema",Gj=["object","boolean"],Jj={contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}},Qj={$schema:Bj,$id:Hj,$vocabulary:Vj,$dynamicAnchor:Wj,title:Kj,type:Gj,properties:Jj},Yj="https://json-schema.org/draft/2020-12/schema",Xj="https://json-schema.org/draft/2020-12/meta/core",Zj={"https://json-schema.org/draft/2020-12/vocab/core":!0},eN="meta",tN="Core vocabulary meta-schema",nN=["object","boolean"],oN={$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},rN={anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}},iN={$schema:Yj,$id:Xj,$vocabulary:Zj,$dynamicAnchor:eN,title:tN,type:nN,properties:oN,$defs:rN},sN="https://json-schema.org/draft/2020-12/schema",aN="https://json-schema.org/draft/2020-12/meta/format-annotation",lN={"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},cN="meta",dN="Format vocabulary meta-schema for annotation results",uN=["object","boolean"],pN={format:{type:"string"}},fN={$schema:sN,$id:aN,$vocabulary:lN,$dynamicAnchor:cN,title:dN,type:uN,properties:pN},mN="https://json-schema.org/draft/2020-12/schema",hN="https://json-schema.org/draft/2020-12/meta/meta-data",yN={"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},gN="meta",vN="Meta-data vocabulary meta-schema",bN=["object","boolean"],xN={title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}},wN={$schema:mN,$id:hN,$vocabulary:yN,$dynamicAnchor:gN,title:vN,type:bN,properties:xN},SN="https://json-schema.org/draft/2020-12/schema",$N="https://json-schema.org/draft/2020-12/meta/validation",kN={"https://json-schema.org/draft/2020-12/vocab/validation":!0},TN="meta",_N="Validation vocabulary meta-schema",jN=["object","boolean"],NN={type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},CN={nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},EN={$schema:SN,$id:$N,$vocabulary:kN,$dynamicAnchor:TN,title:_N,type:jN,properties:NN,$defs:CN};Object.defineProperty(ef,"__esModule",{value:!0});const PN=Tj,IN=Rj,ON=Fj,RN=Qj,AN=iN,MN=fN,qN=wN,UN=EN,LN=["/properties"];function DN(e){return[PN,IN,ON,RN,AN,t(this,MN),qN,t(this,UN)].forEach(n=>this.addMetaSchema(n,void 0,!1)),this;function t(n,o){return e?n.$dataMetaSchema(o,LN):o}}ef.default=DN;(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv2020=void 0;const n=Av,o=fp,r=Zp,i=ef,s="https://json-schema.org/draft/2020-12/schema";class a extends n.default{constructor(h={}){super({...h,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),o.default.forEach(h=>this.addVocabulary(h)),this.opts.discriminator&&this.addKeyword(r.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();const{$data:h,meta:y}=this.opts;y&&(i.default.call(this,h),this.refs["http://json-schema.org/schema"]=s)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(s)?s:void 0)}}t.Ajv2020=a,e.exports=t=a,e.exports.Ajv2020=a,Object.defineProperty(t,"__esModule",{value:!0}),t.default=a;var l=ln;Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return l.KeywordCxt}});var d=ue;Object.defineProperty(t,"_",{enumerable:!0,get:function(){return d._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return d.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return d.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return d.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return d.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return d.CodeGen}});var p=Cs;Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return p.default}});var m=Xr;Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return m.default}})})(Od,Od.exports);var zN=Od.exports;const FN=Yd(zN),mh=FN,BN=mh.default??mh,hh="acp",HN=/will be required/i;function VN(e){const t={path:e.instancePath||"/",message:e.message??"validation failed"};return e.keyword&&(t.keyword=e.keyword),t}function WN(e){const t=new BN({strict:!1,allErrors:!0,validateFormats:!1});t.addSchema(e,hh);const n=new Map,o=new Map,r=e.$defs??{};for(const[p,m]of Object.entries(r)){const v=Object.entries(m.properties??{}).filter(([,b])=>HN.test(b.description??"")).map(([b])=>b);v.length>0&&o.set(p,v);const h=m["x-method"];if(typeof h!="string")continue;let y=n.get(h);y||(y={},n.set(h,y)),p.endsWith("Request")?y.requestDef=p:p.endsWith("Response")?y.responseDef=p:p.endsWith("Notification")&&(y.notificationDef=p)}const i=new Map,s=p=>{const m=i.get(p);if(m)return m;const v=t.compile({$ref:`${hh}#/$defs/${p}`});return i.set(p,v),v};function a(p,m={}){if(!p.payload)return{valid:!0,errors:[],skipped:"parse-error"};if(p.kind==="unknown")return{valid:!0,errors:[],skipped:"wrong-kind"};const v=p.method??m.pairedMethod;if(!v)return{valid:!0,errors:[],skipped:"no-method"};const h=n.get(v);if(!h)return{valid:!0,errors:[],skipped:"unknown-method"};let y,b;const g=p.payload;if(p.kind==="request")y=h.requestDef,b=g.params;else if(p.kind==="notification")y=h.notificationDef,b=g.params;else if(p.kind==="response")y=h.responseDef,b=g.result;else return{valid:!0,errors:[],skipped:"wrong-kind"};if(!y)return{valid:!0,errors:[],skipped:"no-schema-for-kind"};const f=l(y,b),u=s(y),S=u(b)?{valid:!0,errors:[],schemaName:y}:{valid:!1,errors:(u.errors??[]).map(VN),schemaName:y};return f.length>0&&(S.advisories=f),S}function l(p,m){const v=o.get(p);if(!v||typeof m!="object"||m===null)return[];const h=m,y=[];for(const b of v)(h[b]===void 0||h[b]===null)&&y.push({path:b,message:`missing ${b} — will be required in a future ACP version`,kind:"soon-required"});return y}function d(){return[...n.keys()].sort()}return{validateAcpMessage:a,knownAcpMethods:d}}const KN=WN(Rv),GN=KN.validateAcpMessage;function tf(e){const t=Cl(e),n=new Map;for(const r of e)r.method&&n.set(r.seq,r.method);const o=new Map;for(const r of e){const i=t.get(r.seq),s=i!==void 0?n.get(i):void 0,a={};s!==void 0&&(a.pairedMethod=s),o.set(r.seq,GN(r,a))}return o}function JN(e){let t=0,n=0,o=0,r=0,i=0;const s=new Set;for(const[,a]of e)if(!a.skipped){if(t+=1,!a.valid&&(n+=1,o+=a.errors.length,a.schemaName)){const l=a.schemaName.replace(/(Request|Response|Notification)$/,"");s.add(l)}a.advisories&&a.advisories.length>0&&(r+=1,i+=a.advisories.length)}return{checked:t,invalidFrames:n,totalErrors:o,affectedMethods:[...s].sort(),advisoryFrames:r,totalAdvisories:i}}const QN={"claude-code":{shortName:"claude-code",displayName:"Claude Code",description:"Anthropic Claude Code via @agentclientprotocol/claude-agent-acp",command:"npx",args:["-y","@agentclientprotocol/claude-agent-acp"],aliases:[["npx","-y","@zed-industries/claude-code-acp"]]},codex:{shortName:"codex",displayName:"Codex",description:"OpenAI Codex via @zed-industries/codex-acp",command:"npx",args:["-y","@zed-industries/codex-acp"]},goose:{shortName:"goose",displayName:"Goose",description:"Block Goose — install separately, then this runs `goose acp`",command:"goose",args:["acp"],requiresExternalInstall:!0},opencode:{shortName:"opencode",displayName:"OpenCode",description:"SST OpenCode — install via opencode.ai/install, then `opencode acp`",command:"opencode",args:["acp"],requiresExternalInstall:!0},junie:{shortName:"junie",displayName:"Junie",description:"JetBrains Junie CLI — install separately, then this runs `junie --acp=true`",command:"junie",args:["--acp=true"],requiresExternalInstall:!0}};function YN(e){const t=e.trim();if(t.length===0)return null;const n=[t,XN(t)];for(const o of Object.values(QN)){const r=[[o.command,...o.args],...o.aliases??[]];for(const i of r){const s=i.join(" ");for(const a of n)if(a===s||a.startsWith(s+" "))return o}}return null}function XN(e){const t=e.indexOf(" "),n=t===-1?e:e.slice(0,t),o=t===-1?"":e.slice(t);return(n.split(/[/\\]/).pop()??n)+o}function Rt(e){const t=YN(e);if(t)return t.displayName;const n=e.trim().split(/\s+/).filter(Boolean);if(n.length===0)return e;if(n[0]==="npx")for(let o=1;o<n.length;o++){const r=n[o];if(!r.startsWith("-"))return r}return n[0]==="node"&&n[1]?n[1].split("/").pop()??n[1]:n[0].split(/[/\\]/).pop()||n[0]}function nf(e){const t=e.sessionDbId!==null?`#${e.sessionDbId}`:`pid ${e.pid}`;if(e.sessionName)return`${t} · ${e.sessionName}`;const n=Rt(e.agentCommand);return e.clientName?`${t} · ${e.clientName} · ${n}`:`${t} · ${n}`}function ql(e){const t=e.id>0?`#${e.id}`:"ephemeral";if(e.name)return{primary:t,secondary:e.name};const n=Rt(e.agentCommand??""),o=e.clientName?`${e.clientName} · ${n}`:n;return{primary:t,secondary:o}}const ZN={};function eC(){const e=ZN;return(e==null?void 0:e.VITE_PLAYGROUND)==="1"}const tC={"editor-to-agent":"out","agent-to-editor":"in"},nC={out:"editor-to-agent",in:"agent-to-editor"},oC={request:"req",response:"rsp",notification:"ntf",error:"err",unknown:"unk"},rC={req:"request",rsp:"response",ntf:"notification",err:"error",unk:"unknown"},iC=["tree","raw","meta"];function yh(e){const t=new URLSearchParams(e),n={},o=t.get("dir");if(o!==null){const y=o.split(",").map(b=>b.trim()).filter(Boolean).map(b=>nC[b]).filter(b=>b!==void 0);y.length>0&&(n.directions=new Set(y))}const r=t.get("kind");if(r!==null){const y=r.split(",").map(b=>b.trim()).filter(Boolean).map(b=>rC[b]).filter(b=>b!==void 0);y.length>0&&(n.kinds=new Set(y))}t.get("streams")==="0"&&(n.showStreams=!1);const i=t.get("q");i!==null&&(n.search=i);const s=t.get("seq"),a=s!==null&&/^\d+$/.test(s)?Number(s):null,l=t.get("tab"),d=l!==null&&iC.includes(l)?l:null,p=t.get("play"),m=p!==null&&/^\d+$/.test(p)?Number(p):null,v=t.get("ws");return{filters:n,selectedSeq:a,detailTab:d,playhead:m,captureUrl:v}}const sC=["ws","dir","kind","streams","q","seq","tab","play"];function aC(e){const t=new URLSearchParams(window.location.search);for(const r of sC)t.delete(r);e.captureUrl&&t.set("ws",e.captureUrl),e.filters.directions.size<cs.length&&t.set("dir",[...e.filters.directions].map(r=>tC[r]).filter(Boolean).join(",")),e.filters.kinds.size<ds.length&&t.set("kind",[...e.filters.kinds].map(r=>oC[r]).filter(Boolean).join(",")),e.filters.showStreams||t.set("streams","0"),e.filters.search&&t.set("q",e.filters.search),e.selectedSeq!==null&&t.set("seq",String(e.selectedSeq)),e.detailTab!=="tree"&&t.set("tab",e.detailTab),e.playhead!==null&&t.set("play",String(e.playhead));const n=t.toString(),o=`${window.location.pathname}${n?`?${n}`:""}${window.location.hash}`;o!==window.location.pathname+window.location.search+window.location.hash&&window.history.replaceState(window.history.state,"",o)}function Ub(e){var t,n,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(n=Ub(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}function lC(){for(var e,t,n=0,o="",r=arguments.length;n<r;n++)(e=arguments[n])&&(t=Ub(e))&&(o&&(o+=" "),o+=t);return o}const of="-",cC=e=>{const t=uC(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{const a=s.split(of);return a[0]===""&&a.length!==1&&a.shift(),Lb(a,t)||dC(s)},getConflictingClassGroupIds:(s,a)=>{const l=n[s]||[];return a&&o[s]?[...l,...o[s]]:l}}},Lb=(e,t)=>{var s;if(e.length===0)return t.classGroupId;const n=e[0],o=t.nextPart.get(n),r=o?Lb(e.slice(1),o):void 0;if(r)return r;if(t.validators.length===0)return;const i=e.join(of);return(s=t.validators.find(({validator:a})=>a(i)))==null?void 0:s.classGroupId},gh=/^\[(.+)\]$/,dC=e=>{if(gh.test(e)){const t=gh.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},uC=e=>{const{theme:t,prefix:n}=e,o={nextPart:new Map,validators:[]};return fC(Object.entries(e.classGroups),n).forEach(([i,s])=>{zd(s,o,i,t)}),o},zd=(e,t,n,o)=>{e.forEach(r=>{if(typeof r=="string"){const i=r===""?t:vh(t,r);i.classGroupId=n;return}if(typeof r=="function"){if(pC(r)){zd(r(o),t,n,o);return}t.validators.push({validator:r,classGroupId:n});return}Object.entries(r).forEach(([i,s])=>{zd(s,vh(t,i),n,o)})})},vh=(e,t)=>{let n=e;return t.split(of).forEach(o=>{n.nextPart.has(o)||n.nextPart.set(o,{nextPart:new Map,validators:[]}),n=n.nextPart.get(o)}),n},pC=e=>e.isThemeGetter,fC=(e,t)=>t?e.map(([n,o])=>{const r=o.map(i=>typeof i=="string"?t+i:typeof i=="object"?Object.fromEntries(Object.entries(i).map(([s,a])=>[t+s,a])):i);return[n,r]}):e,mC=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,o=new Map;const r=(i,s)=>{n.set(i,s),t++,t>e&&(t=0,o=n,n=new Map)};return{get(i){let s=n.get(i);if(s!==void 0)return s;if((s=o.get(i))!==void 0)return r(i,s),s},set(i,s){n.has(i)?n.set(i,s):r(i,s)}}},Db="!",hC=e=>{const{separator:t,experimentalParseClassName:n}=e,o=t.length===1,r=t[0],i=t.length,s=a=>{const l=[];let d=0,p=0,m;for(let g=0;g<a.length;g++){let f=a[g];if(d===0){if(f===r&&(o||a.slice(g,g+i)===t)){l.push(a.slice(p,g)),p=g+i;continue}if(f==="/"){m=g;continue}}f==="["?d++:f==="]"&&d--}const v=l.length===0?a:a.substring(p),h=v.startsWith(Db),y=h?v.substring(1):v,b=m&&m>p?m-p:void 0;return{modifiers:l,hasImportantModifier:h,baseClassName:y,maybePostfixModifierPosition:b}};return n?a=>n({className:a,parseClassName:s}):s},yC=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(o=>{o[0]==="["?(t.push(...n.sort(),o),n=[]):n.push(o)}),t.push(...n.sort()),t},gC=e=>({cache:mC(e.cacheSize),parseClassName:hC(e),...cC(e)}),vC=/\s+/,bC=(e,t)=>{const{parseClassName:n,getClassGroupId:o,getConflictingClassGroupIds:r}=t,i=[],s=e.trim().split(vC);let a="";for(let l=s.length-1;l>=0;l-=1){const d=s[l],{modifiers:p,hasImportantModifier:m,baseClassName:v,maybePostfixModifierPosition:h}=n(d);let y=!!h,b=o(y?v.substring(0,h):v);if(!b){if(!y){a=d+(a.length>0?" "+a:a);continue}if(b=o(v),!b){a=d+(a.length>0?" "+a:a);continue}y=!1}const g=yC(p).join(":"),f=m?g+Db:g,u=f+b;if(i.includes(u))continue;i.push(u);const x=r(b,y);for(let S=0;S<x.length;++S){const T=x[S];i.push(f+T)}a=d+(a.length>0?" "+a:a)}return a};function xC(){let e=0,t,n,o="";for(;e<arguments.length;)(t=arguments[e++])&&(n=zb(t))&&(o&&(o+=" "),o+=n);return o}const zb=e=>{if(typeof e=="string")return e;let t,n="";for(let o=0;o<e.length;o++)e[o]&&(t=zb(e[o]))&&(n&&(n+=" "),n+=t);return n};function wC(e,...t){let n,o,r,i=s;function s(l){const d=t.reduce((p,m)=>m(p),e());return n=gC(d),o=n.cache.get,r=n.cache.set,i=a,a(l)}function a(l){const d=o(l);if(d)return d;const p=bC(l,n);return r(l,p),p}return function(){return i(xC.apply(null,arguments))}}const Ie=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},Fb=/^\[(?:([a-z-]+):)?(.+)\]$/i,SC=/^\d+\/\d+$/,$C=new Set(["px","full","screen"]),kC=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,TC=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,_C=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,jC=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,NC=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jn=e=>Rr(e)||$C.has(e)||SC.test(e),Jn=e=>oi(e,"length",MC),Rr=e=>!!e&&!Number.isNaN(Number(e)),$c=e=>oi(e,"number",Rr),vi=e=>!!e&&Number.isInteger(Number(e)),CC=e=>e.endsWith("%")&&Rr(e.slice(0,-1)),pe=e=>Fb.test(e),Qn=e=>kC.test(e),EC=new Set(["length","size","percentage"]),PC=e=>oi(e,EC,Bb),IC=e=>oi(e,"position",Bb),OC=new Set(["image","url"]),RC=e=>oi(e,OC,UC),AC=e=>oi(e,"",qC),bi=()=>!0,oi=(e,t,n)=>{const o=Fb.exec(e);return o?o[1]?typeof t=="string"?o[1]===t:t.has(o[1]):n(o[2]):!1},MC=e=>TC.test(e)&&!_C.test(e),Bb=()=>!1,qC=e=>jC.test(e),UC=e=>NC.test(e),LC=()=>{const e=Ie("colors"),t=Ie("spacing"),n=Ie("blur"),o=Ie("brightness"),r=Ie("borderColor"),i=Ie("borderRadius"),s=Ie("borderSpacing"),a=Ie("borderWidth"),l=Ie("contrast"),d=Ie("grayscale"),p=Ie("hueRotate"),m=Ie("invert"),v=Ie("gap"),h=Ie("gradientColorStops"),y=Ie("gradientColorStopPositions"),b=Ie("inset"),g=Ie("margin"),f=Ie("opacity"),u=Ie("padding"),x=Ie("saturate"),S=Ie("scale"),T=Ie("sepia"),C=Ie("skew"),$=Ie("space"),j=Ie("translate"),A=()=>["auto","contain","none"],E=()=>["auto","hidden","clip","visible","scroll"],q=()=>["auto",pe,t],z=()=>[pe,t],U=()=>["",jn,Jn],L=()=>["auto",Rr,pe],F=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],G=()=>["solid","dashed","dotted","double","none"],Y=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],D=()=>["start","end","center","between","around","evenly","stretch"],J=()=>["","0",pe],O=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>[Rr,pe];return{cacheSize:500,separator:":",theme:{colors:[bi],spacing:[jn,Jn],blur:["none","",Qn,pe],brightness:_(),borderColor:[e],borderRadius:["none","","full",Qn,pe],borderSpacing:z(),borderWidth:U(),contrast:_(),grayscale:J(),hueRotate:_(),invert:J(),gap:z(),gradientColorStops:[e],gradientColorStopPositions:[CC,Jn],inset:q(),margin:q(),opacity:_(),padding:z(),saturate:_(),scale:_(),sepia:J(),skew:_(),space:z(),translate:z()},classGroups:{aspect:[{aspect:["auto","square","video",pe]}],container:["container"],columns:[{columns:[Qn]}],"break-after":[{"break-after":O()}],"break-before":[{"break-before":O()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...F(),pe]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[b]}],"inset-x":[{"inset-x":[b]}],"inset-y":[{"inset-y":[b]}],start:[{start:[b]}],end:[{end:[b]}],top:[{top:[b]}],right:[{right:[b]}],bottom:[{bottom:[b]}],left:[{left:[b]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",vi,pe]}],basis:[{basis:q()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",pe]}],grow:[{grow:J()}],shrink:[{shrink:J()}],order:[{order:["first","last","none",vi,pe]}],"grid-cols":[{"grid-cols":[bi]}],"col-start-end":[{col:["auto",{span:["full",vi,pe]},pe]}],"col-start":[{"col-start":L()}],"col-end":[{"col-end":L()}],"grid-rows":[{"grid-rows":[bi]}],"row-start-end":[{row:["auto",{span:[vi,pe]},pe]}],"row-start":[{"row-start":L()}],"row-end":[{"row-end":L()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",pe]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",pe]}],gap:[{gap:[v]}],"gap-x":[{"gap-x":[v]}],"gap-y":[{"gap-y":[v]}],"justify-content":[{justify:["normal",...D()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...D(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...D(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[u]}],px:[{px:[u]}],py:[{py:[u]}],ps:[{ps:[u]}],pe:[{pe:[u]}],pt:[{pt:[u]}],pr:[{pr:[u]}],pb:[{pb:[u]}],pl:[{pl:[u]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[$]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[$]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",pe,t]}],"min-w":[{"min-w":[pe,t,"min","max","fit"]}],"max-w":[{"max-w":[pe,t,"none","full","min","max","fit","prose",{screen:[Qn]},Qn]}],h:[{h:[pe,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[pe,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[pe,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[pe,t,"auto","min","max","fit"]}],"font-size":[{text:["base",Qn,Jn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",$c]}],"font-family":[{font:[bi]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",pe]}],"line-clamp":[{"line-clamp":["none",Rr,$c]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",jn,pe]}],"list-image":[{"list-image":["none",pe]}],"list-style-type":[{list:["none","disc","decimal",pe]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[f]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[f]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...G(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",jn,Jn]}],"underline-offset":[{"underline-offset":["auto",jn,pe]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",pe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",pe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[f]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...F(),IC]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",PC]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},RC]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[y]}],"gradient-via-pos":[{via:[y]}],"gradient-to-pos":[{to:[y]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[i]}],"rounded-s":[{"rounded-s":[i]}],"rounded-e":[{"rounded-e":[i]}],"rounded-t":[{"rounded-t":[i]}],"rounded-r":[{"rounded-r":[i]}],"rounded-b":[{"rounded-b":[i]}],"rounded-l":[{"rounded-l":[i]}],"rounded-ss":[{"rounded-ss":[i]}],"rounded-se":[{"rounded-se":[i]}],"rounded-ee":[{"rounded-ee":[i]}],"rounded-es":[{"rounded-es":[i]}],"rounded-tl":[{"rounded-tl":[i]}],"rounded-tr":[{"rounded-tr":[i]}],"rounded-br":[{"rounded-br":[i]}],"rounded-bl":[{"rounded-bl":[i]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[f]}],"border-style":[{border:[...G(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[f]}],"divide-style":[{divide:G()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-s":[{"border-s":[r]}],"border-color-e":[{"border-e":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...G()]}],"outline-offset":[{"outline-offset":[jn,pe]}],"outline-w":[{outline:[jn,Jn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:U()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[f]}],"ring-offset-w":[{"ring-offset":[jn,Jn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Qn,AC]}],"shadow-color":[{shadow:[bi]}],opacity:[{opacity:[f]}],"mix-blend":[{"mix-blend":[...Y(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Y()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[o]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",Qn,pe]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[p]}],invert:[{invert:[m]}],saturate:[{saturate:[x]}],sepia:[{sepia:[T]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[p]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[f]}],"backdrop-saturate":[{"backdrop-saturate":[x]}],"backdrop-sepia":[{"backdrop-sepia":[T]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",pe]}],duration:[{duration:_()}],ease:[{ease:["linear","in","out","in-out",pe]}],delay:[{delay:_()}],animate:[{animate:["none","spin","ping","pulse","bounce",pe]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[S]}],"scale-x":[{"scale-x":[S]}],"scale-y":[{"scale-y":[S]}],rotate:[{rotate:[vi,pe]}],"translate-x":[{"translate-x":[j]}],"translate-y":[{"translate-y":[j]}],"skew-x":[{"skew-x":[C]}],"skew-y":[{"skew-y":[C]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",pe]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",pe]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",pe]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[jn,Jn,$c]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},DC=wC(LC);function K(...e){return DC(lC(e))}const $a=1;function zC(e,t,n){return{version:$a,exportedAt:n.exportedAt??Date.now(),tool:{name:n.tool.name,version:n.tool.version},session:{id:e.id,name:e.name,agentCommand:e.agentCommand,clientName:e.clientName,startedAt:e.startedAt,endedAt:e.endedAt},messages:[...t]}}function FC(e,t=4){return JSON.stringify(e,null,t)+`
|
|
1766
|
+
`}class Ke extends Error{constructor(t){super(t),this.name="ExportParseError"}}function BC(e){let t;try{t=JSON.parse(e)}catch(l){throw new Ke(`invalid JSON: ${l instanceof Error?l.message:String(l)}`)}if(!ka(t))throw new Ke("expected an object at the top level");const n=t.version;if(n!==$a)throw new Ke(`unsupported export version ${String(n)} (expected ${$a})`);const o=t.exportedAt;if(typeof o!="number")throw new Ke("exportedAt must be a number");if(!ka(t.tool))throw new Ke("tool must be an object");const r=t.tool.name,i=t.tool.version;if(typeof r!="string")throw new Ke("tool.name must be a string");if(typeof i!="string")throw new Ke("tool.version must be a string");const s=t.session;if(!ka(s))throw new Ke("session must be an object");if(typeof s.id!="number")throw new Ke("session.id must be a number");if(typeof s.startedAt!="number")throw new Ke("session.startedAt must be a number");if(s.endedAt!==null&&typeof s.endedAt!="number")throw new Ke("session.endedAt must be a number or null");if(s.name!==null&&typeof s.name!="string")throw new Ke("session.name must be a string or null");if(s.agentCommand!==null&&typeof s.agentCommand!="string")throw new Ke("session.agentCommand must be a string or null");if(s.clientName!==null&&typeof s.clientName!="string")throw new Ke("session.clientName must be a string or null");if(!Array.isArray(t.messages))throw new Ke("messages must be an array");const a=t.messages.map((l,d)=>HC(l,d));return{version:$a,exportedAt:o,tool:{name:r,version:i},session:{id:s.id,name:s.name,agentCommand:s.agentCommand,clientName:s.clientName,startedAt:s.startedAt,endedAt:s.endedAt},messages:a}}function HC(e,t){if(!ka(e))throw new Ke(`messages[${t}] must be an object`);if(typeof e.seq!="number")throw new Ke(`messages[${t}].seq must be a number`);if(typeof e.timestamp!="number")throw new Ke(`messages[${t}].timestamp must be a number`);if(e.direction!=="editor-to-agent"&&e.direction!=="agent-to-editor")throw new Ke(`messages[${t}].direction must be 'editor-to-agent' or 'agent-to-editor'`);const n=e.kind;if(n!=="request"&&n!=="response"&&n!=="error"&&n!=="notification"&&n!=="unknown")throw new Ke(`messages[${t}].kind has unexpected value '${String(n)}'`);if(typeof e.raw!="string")throw new Ke(`messages[${t}].raw must be a string`);const o={seq:e.seq,timestamp:e.timestamp,direction:e.direction,kind:n,raw:e.raw,payload:e.payload===null?null:e.payload};return typeof e.method=="string"&&(o.method=e.method),(typeof e.rpcId=="string"||typeof e.rpcId=="number"||e.rpcId===null)&&(o.rpcId=e.rpcId),typeof e.parseError=="string"&&(o.parseError=e.parseError),o}function ka(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const Hb="<REDACTED>",VC=new Set(["authorization","proxy-authorization","proxy-authentication","x-api-key","x-api-token","x-auth-token","api-key","api_key","proxy_key","cookie","set-cookie"]);function WC(e){if(e.payload==null)return{redacted:e,count:0};const{value:t,count:n}=Fd(e.payload,{inProxyConfig:!1});if(n===0)return{redacted:e,count:0};const o=t;return{redacted:{...e,payload:o,raw:JSON.stringify(o)},count:n}}function Fd(e,t){if(Array.isArray(e)){let n=0;const o=new Array(e.length);for(let r=0;r<e.length;r++){const i=Fd(e[r],t);o[r]=i.value,n+=i.count}return{value:o,count:n}}if(e!==null&&typeof e=="object"){let n=0;const o={};for(const[r,i]of Object.entries(e)){if(typeof i=="string"&&VC.has(r.toLowerCase())){o[r]=Hb,n+=1;continue}if(t.inProxyConfig&&r==="headers"&&i!==null&&typeof i=="object"&&!Array.isArray(i)){const l=KC(i);o[r]=l.value,n+=l.count;continue}const s=t.inProxyConfig||r.toLowerCase()==="proxyconfig"?{inProxyConfig:!0}:t,a=Fd(i,s);o[r]=a.value,n+=a.count}return{value:o,count:n}}return{value:e,count:0}}function KC(e){let t=0;const n={};for(const[o,r]of Object.entries(e))typeof r=="string"?(n[o]=Hb,t+=1):n[o]=r;return{value:n,count:t}}function GC(e){let t=0,n=0;const o=e.messages.map(r=>{const i=WC(r);return i.count>0&&(t+=1,n+=i.count),i.redacted});return n===0?{export:e,messagesAffected:0,fieldsRedacted:0}:{export:{...e,messages:o},messagesAffected:t,fieldsRedacted:n}}const JC={name:"acp-devtools-ui",version:"0.6.0"};function QC(e,t=Date.now()){const n=e.id>0?String(e.id):"live",o=new Date(t).toISOString().slice(0,19).replace(/[:T]/g,"-");return`acp-session-${n}-${o}.json`}function YC(e,t,n=Date.now()){const o=zC(e,t,{tool:JC,exportedAt:n}),{export:r}=GC(o);return FC(r)}function Vb(e,t,n=Date.now()){const o=YC(e,t,n),r=new Blob([o],{type:"application/json"}),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=QC(e,n),s.rel="noopener",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i)}function XC({open:e,onClose:t}){const[n,o]=I.useState(""),[r,i]=I.useState(0),s=I.useRef(null);I.useEffect(()=>{if(!e)return;o(""),i(0);const d=setTimeout(()=>{var p;return(p=s.current)==null?void 0:p.focus()},0);return()=>clearTimeout(d)},[e]);const a=I.useMemo(()=>ZC(),[t,e]),l=I.useMemo(()=>eE(a,n),[a,n]);return I.useEffect(()=>{r>=l.length&&i(0)},[l.length,r]),I.useEffect(()=>{if(!e)return;const d=p=>{if(p.key==="Escape"){p.preventDefault(),t();return}if(p.key==="ArrowDown"){p.preventDefault(),i(m=>l.length===0?0:(m+1)%l.length);return}if(p.key==="ArrowUp"){p.preventDefault(),i(m=>l.length===0?0:(m-1+l.length)%l.length);return}if(p.key==="Enter"){p.preventDefault();const m=l[r];m&&(m.run(),t())}};return window.addEventListener("keydown",d,!0),()=>window.removeEventListener("keydown",d,!0)},[e,l,r,t]),e?c.jsx("div",{role:"dialog","aria-modal":"true",className:"fixed inset-0 z-[100] flex items-start justify-center bg-black/60 pt-[8vh] backdrop-blur-sm",onMouseDown:d=>{d.target===d.currentTarget&&t()},children:c.jsxs("div",{className:"w-[min(620px,92vw)] overflow-hidden rounded-md border border-line-strong bg-surface-elev shadow-2xl",children:[c.jsx("div",{className:"border-b border-line bg-surface-base/60",children:c.jsx("input",{ref:s,value:n,onChange:d=>{o(d.target.value),i(0)},placeholder:"type a command… esc closes ↑↓ navigate ↵ run",className:"w-full bg-transparent px-4 py-3 font-mono text-[13px] text-ink-primary placeholder-ink-muted outline-none"})}),c.jsxs("ul",{className:"max-h-[60vh] overflow-y-auto py-1",children:[l.length===0&&c.jsx("li",{className:"px-4 py-3 text-center font-mono text-[11px] uppercase tracking-widest text-ink-muted",children:"no match"}),l.map((d,p)=>{const m=p===r,v=l[p-1],h=!v||v.section!==d.section;return c.jsxs("li",{children:[h&&c.jsx("div",{className:"px-4 pt-2 pb-1 font-mono text-[9px] uppercase tracking-widest text-ink-muted",children:d.section}),c.jsxs("button",{type:"button",onClick:()=>{d.run(),t()},onMouseEnter:()=>i(p),className:K("flex w-full items-center justify-between px-4 py-1.5 text-left font-mono text-[12px] transition-colors",m?"bg-accent-out/10 text-ink-primary":"text-ink-secondary hover:bg-surface-rowHover hover:text-ink-primary"),children:[c.jsx("span",{className:"truncate",children:d.label}),d.hint&&c.jsx("span",{className:"ml-3 shrink-0 rounded-sm border border-line px-1.5 py-0.5 text-[10px] uppercase tracking-widest text-ink-muted",children:d.hint})]})]},d.id)})]})]})}):null}function ZC(e){const t=ne.getState(),n=at.getState(),o=[];o.push({id:"session.import",label:"Import session JSON from disk…",section:"session",run:()=>{const r=document.createElement("input");r.type="file",r.accept="application/json,.json",r.addEventListener("change",()=>{var s;const i=(s=r.files)==null?void 0:s[0];i&&(async()=>{try{const a=await Nv(i);await Xu(),n.setSelected(tl(a.id))}catch(a){const l=a instanceof Error?a.message:String(a);window.alert(`Import failed: ${l}`)}})()}),r.click()}}),t.session!==null&&t.messages.length>0&&o.push({id:"session.export",label:"Export current session as JSON (redacted — auth tokens hidden)",section:"session",run:()=>Vb(t.session,t.messages)}),o.push({id:"view.deselect",label:"Deselect message",hint:"esc",section:"view",run:()=>t.select(null)}),o.push({id:"view.toggle-streams",label:t.filters.showStreams?"Hide streaming chunks":"Show streaming chunks",section:"filter",run:()=>t.toggleStreams()}),o.push({id:"filter.reset",label:"Reset all filters",section:"filter",run:()=>{const r={directions:new Set(cs),kinds:new Set(ds),showStreams:!0,search:""};ne.setState({filters:r})}});for(const r of cs){const i=t.filters.directions.has(r);o.push({id:`filter.dir.${r}`,label:`${i?"Hide":"Show"} ${r==="editor-to-agent"?"editor → agent":"agent → editor"} messages`,section:"filter",run:()=>t.toggleDirection(r)})}for(const r of ds){const i=t.filters.kinds.has(r);o.push({id:`filter.kind.${r}`,label:`${i?"Hide":"Show"} ${r} kind`,section:"filter",run:()=>t.toggleKind(r)})}if(t.selectedSeq!==null){const r=t.messages.find(i=>i.seq===t.selectedSeq);r&&(o.push({id:"copy.raw",label:`Copy selected message raw line (seq ${r.seq})`,section:"copy",run:()=>{navigator.clipboard.writeText(r.raw)}}),r.payload&&o.push({id:"copy.payload",label:`Copy selected payload as JSON (seq ${r.seq})`,section:"copy",run:()=>{navigator.clipboard.writeText(JSON.stringify(r.payload,null,2))}}))}for(const r of n.captures)o.push({id:`switch.live.${r.url}`,label:`Switch to live: ${nf(r)}`,section:"switch",run:()=>n.setSelected(r.url)});for(const r of n.savedSessions.slice(0,25)){const i=Rt(r.agent_command??""),s=r.name??(r.client_name?`${r.client_name} · ${i}`:i);o.push({id:`switch.saved.${r.id}`,label:`Open saved #${r.id} · ${s} (${r.message_count} msg)`,section:"switch",run:()=>n.setSelected(tl(r.id))})}return o}function eE(e,t){const n=t.trim().toLowerCase();if(n==="")return e;const o=n.split(/\s+/);return e.filter(r=>{const i=r.label.toLowerCase();return o.every(s=>i.includes(s))})}const tE={idle:"idle",connecting:"connecting",open:"restoring view",closed:"disconnected",error:"connection error"};function nE({status:e,url:t,lastError:n}){const o=tE[e],r=e==="connecting"||e==="open";return c.jsx("div",{className:"flex h-full w-full items-center justify-center bg-surface-base",children:c.jsxs("div",{className:"flex items-center gap-3 font-mono text-[11px] uppercase tracking-widest text-ink-muted",children:[c.jsx("span",{"aria-hidden":!0,className:K("inline-block h-2 w-2 rounded-full",r?"animate-pulse-soft bg-accent-out":"bg-ink-dim",e==="error"&&"bg-accent-error")}),c.jsx("span",{children:o}),c.jsx("span",{className:"text-ink-dim",children:"·"}),c.jsx("span",{className:"lowercase tracking-normal text-ink-secondary",children:t}),n&&e==="error"&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"text-ink-dim",children:"·"}),c.jsx("span",{className:"lowercase tracking-normal text-accent-error",children:n})]})]})})}function oE(e){const t=e.$defs??{},n=new Map;for(const[y,b]of Object.entries(t)){const g=b["x-method"];if(typeof g!="string")continue;let f=n.get(g);f||(f={},n.set(g,f)),y.endsWith("Request")?f.requestDef=y:y.endsWith("Response")?f.responseDef=y:y.endsWith("Notification")&&(f.notificationDef=y)}function o(y,b){var g,f,u;switch(y.kind){case"request":{const x=y.method;return x?((g=n.get(x))==null?void 0:g.requestDef)??null:null}case"notification":{const x=y.method;return x?((f=n.get(x))==null?void 0:f.notificationDef)??null:null}case"response":case"error":return b?((u=n.get(b))==null?void 0:u.responseDef)??null:null;default:return null}}function r(y){return y==="request"||y==="notification"?"params":y==="response"?"result":y==="error"?"error":null}function i(y){return typeof y=="object"&&y!==null&&!Array.isArray(y)}function s(y,b){const g=y.properties;if(!g)return!0;for(const[f,u]of Object.entries(g))if(!(!u||typeof u!="object")){if("const"in u){if(b[f]!==u.const)return!1}else if(Array.isArray(u.enum)&&!u.enum.includes(b[f]))return!1}return!0}function a(y,b){const g=y.type;if(typeof g=="string"){if(g==="null")return b===null;if(g==="string")return typeof b=="string";if(g==="boolean")return typeof b=="boolean";if(g==="number"||g==="integer")return typeof b=="number";if(g==="array")return Array.isArray(b);if(g==="object")return i(b)&&s(y,b)}return y.$ref||y.properties||y.allOf?i(b)&&s(y,b):!1}function l(y,b=void 0){if(!y)return null;if(y.$ref){const g=y.$ref.replace(/^#\/\$defs\//,""),f=t[g];return f?l(f,b):null}if(y.allOf&&y.allOf.length>0){const g={properties:{}};for(const f of y.allOf){const u=l(f,b);u!=null&&u.properties&&(g.properties={...g.properties,...u.properties}),u!=null&&u.type&&!g.type&&(g.type=u.type),u!=null&&u.items&&!g.items&&(g.items=u.items)}return y.description&&!g.description&&(g.description=y.description),g}if(y.anyOf||y.oneOf){const g=y.anyOf??y.oneOf;if(b!==void 0){for(const f of g)if(f.type!=="null"&&a(f,b))return l(f,b)}for(const f of g){if(f.type==="null")continue;const u=l(f,b);if(u)return u}return null}return y}function d(y,b){let g=y;for(const f of b){if(g==null)return;if(Array.isArray(g)&&/^\d+$/.test(f))g=g[Number(f)];else if(typeof g=="object")g=g[f];else return}return g}function p(y){if(!y)return;if(y.$ref)return y.$ref.replace(/^#\/\$defs\//,"");const b=y.type;if(typeof b=="string")return b;if(Array.isArray(b))return b.find(f=>f!=="null")}function m(y,b){const g=t[y];return{typeName:y,typeDescription:(g==null?void 0:g.description)??null,resolve(f){var A;if(f.length===0)return{inSpec:!0,isExtension:!1,description:g==null?void 0:g.description,type:y};const u=f.slice(1);if(u.length===0)return null;let x=!1,S=g??null;for(let E=0;E<u.length;E++){const q=u[E];q==="_meta"&&(x=!0);const z=/^\d+$/.test(q),U=d(b,f.slice(0,E+1));if(S=l(S,U),!S)return null;if(z){const F=d(b,f.slice(0,E+2));S=l(S.items,F);continue}if(x&&q!=="_meta")return{inSpec:!1,isExtension:!0};const L=(A=S.properties)==null?void 0:A[q];if(!L)return{inSpec:!1,isExtension:x};S=L}const T=d(b,f),C=l(S,T),$={inSpec:!0,isExtension:x};S!=null&&S.description?$.description=S.description:C!=null&&C.description&&($.description=C.description);const j=p(S??null)??p(C);return j&&($.type=j),C!=null&&C.enum&&($.enumValues=C.enum),$}}}function v(y,b={}){const g=o(y,b.pairedMethod);return!g||!r(y.kind)?null:m(g,y.payload)}function h(){return[...n.keys()].sort()}return{resolveForMessage:v,knownMethods:h}}const rE=oE(Rv),iE=rE.resolveForMessage,sE={info:"border-line bg-surface-base text-ink-primary",warn:"border-accent-warn/40 bg-accent-warn/10 text-ink-primary",error:"border-accent-error/40 bg-accent-error/10 text-ink-primary"};function Ar({label:e,children:t,delay:n=60,tone:o="info",className:r,focusable:i=!1}){const s=I.useRef(null),a=I.useRef(null),[l,d]=I.useState(null),p=l!==null,m=()=>{const y=s.current;if(!y)return null;const b=y.getBoundingClientRect(),f=window.innerHeight-b.bottom<120;return{top:f?b.top-8:b.bottom+8,left:Math.min(b.left,window.innerWidth-380),flipUp:f}},v=()=>{a.current!==null&&clearTimeout(a.current),a.current=setTimeout(()=>{const y=m();y&&d(y)},n)},h=()=>{a.current!==null&&(clearTimeout(a.current),a.current=null),d(null)};return I.useEffect(()=>()=>{a.current!==null&&clearTimeout(a.current)},[]),I.useEffect(()=>{if(!p)return;const y=()=>h();return window.addEventListener("scroll",y,!0),()=>window.removeEventListener("scroll",y,!0)},[p]),c.jsxs(c.Fragment,{children:[c.jsx("span",{ref:s,className:K("cursor-help",r),onMouseEnter:v,onMouseLeave:h,...i?{onFocus:v,onBlur:h,tabIndex:0}:{},children:t}),l&&Wu.createPortal(c.jsx("div",{role:"tooltip",className:K("pointer-events-none fixed z-[200] max-w-[360px] rounded-sm border px-3 py-2 font-mono text-[11px] leading-snug shadow-lg backdrop-blur-sm",sE[o]),style:{top:l.flipUp?void 0:l.top,bottom:l.flipUp?window.innerHeight-l.top:void 0,left:l.left},children:e}),document.body)]})}const aE=new Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1});function Ta(e){return aE.format(e)}function fs(e){const t=e%1e3;return`${Ta(e)}.${String(t).padStart(3,"0")}`}const lE=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function cE(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function _a(e,t=Date.now()){const n=new Date(e),o=new Date(t);if(cE(n,o))return Ta(e);if(n.getFullYear()===o.getFullYear())return`${lE[n.getMonth()]} ${n.getDate()} ${Ta(e)}`;const r=String(n.getMonth()+1).padStart(2,"0"),i=String(n.getDate()).padStart(2,"0");return`${n.getFullYear()}-${r}-${i} ${Ta(e)}`}function Ul(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}function Vt(e){return e<1?"<1ms":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`}function dE(e){return e<250?"ok":e<1500?"warn":"error"}function Wb(e){return e==="editor-to-agent"?"OUT":"IN"}function Kb(e){return e==="editor-to-agent"?"→":"←"}const uE=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function pE(e){const t=String(e);return uE.test(t)?t.slice(0,8)+"…":t.length>12?t.slice(0,10)+"…":t}function Mr(e,t=Date.now()){const n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return`${n}s`;const o=Math.floor(n/60);if(o<60)return`${o}m`;const r=Math.floor(o/60);if(r<24){const a=o%60;return`${r}h${String(a).padStart(2,"0")}m`}const i=Math.floor(r/24),s=r%24;return`${i}d${String(s).padStart(2,"0")}h`}function bh(e,t){if(e.length===0)return 0;const n=t/100*(e.length-1),o=Math.floor(n),r=Math.ceil(n),i=e[o],s=e[r];return i===void 0||s===void 0?i??0:o===r?i:i+(s-i)*(n-o)}const fE=6;function xh(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mE(e){if(e===null)return"text-accent-error";switch(typeof e){case"string":return"text-accent-out";case"number":return"text-accent-in";case"boolean":return"text-accent-note";default:return"text-ink-secondary"}}function hE(e){return e===null?"null":typeof e=="string"?JSON.stringify(e):String(e)}function al({value:e,name:t,depth:n=0,defaultExpanded:o,path:r=[],getSpec:i}){const s=xh(e)||Array.isArray(e),a=xh(e)?Object.keys(e).length:Array.isArray(e)?e.length:0,l=o??(n<2&&a<=fE),[d,p]=I.useState(l),m=t!==void 0&&i?i(r):null,v=t!==void 0?c.jsx(yE,{name:t,spec:m}):null;if(!s)return c.jsxs("div",{className:"flex items-baseline gap-2 font-mono text-xs leading-relaxed",children:[v,c.jsx("span",{className:K("whitespace-pre-wrap break-all",mE(e)),children:hE(e)})]});const h=Array.isArray(e),y=h?"[":"{",b=h?"]":"}";return c.jsxs("div",{className:"font-mono text-xs leading-relaxed",children:[c.jsxs("button",{type:"button",onClick:()=>p(g=>!g),className:"group/expand flex items-baseline gap-2 text-left hover:text-ink-primary",children:[c.jsx("span",{"aria-hidden":!0,className:K("inline-block w-3 text-ink-muted transition-transform",d?"rotate-90":""),children:"▸"}),v,c.jsx("span",{className:"text-ink-secondary",children:y}),!d&&c.jsxs("span",{className:"text-ink-muted",children:[a," ",h?"items":"keys"]}),!d&&c.jsx("span",{className:"text-ink-secondary",children:b})]}),d&&c.jsxs("div",{className:"ml-3 border-l border-line-grid pl-3",children:[h?e.map((g,f)=>c.jsx(al,{value:g,name:String(f),depth:n+1,path:[...r,String(f)],...i?{getSpec:i}:{}},f)):Object.entries(e).map(([g,f])=>c.jsx(al,{value:f,name:g,depth:n+1,path:[...r,g],...i?{getSpec:i}:{}},g)),c.jsx("div",{className:"text-ink-secondary",children:b})]})]})}function yE({name:e,spec:t}){const n=/^\d+$/.test(e),o=(t==null?void 0:t.description)??null;return c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:K(n?"text-ink-muted":"text-ink-secondary"),children:n?`${e}:`:`"${e}":`}),t&&!t.inSpec&&c.jsx(wh,{tone:t.isExtension?"extension":"unknown",explanation:t.isExtension?"Extension — not declared in the ACP spec; contents are implementation-defined.":"Unknown — this field is not declared in the ACP schema for this message."}),(t==null?void 0:t.inSpec)&&t.isExtension&&c.jsx(wh,{tone:"extension",explanation:"Extension — _meta payload is implementation-defined per ACP spec."}),o&&c.jsx(Ar,{label:c.jsx(gE,{text:o,type:t==null?void 0:t.type,enumValues:t==null?void 0:t.enumValues}),tone:"info",className:"text-ink-muted hover:text-ink-primary",focusable:!0,children:c.jsx("span",{"aria-label":`spec: ${o.split(`
|
|
1767
|
+
`)[0]}`,children:"ⓘ"})})]})}function gE({text:e,type:t,enumValues:n}){return c.jsxs("div",{className:"space-y-1.5",children:[t&&c.jsx("div",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:c.jsx("span",{className:"text-accent-info",children:t})}),c.jsx("div",{className:"whitespace-pre-wrap font-sans text-[12px] leading-snug text-ink-secondary",children:e}),n&&n.length>0&&c.jsxs("div",{className:"font-mono text-[10px] text-ink-muted",children:["enum: ",n.map(o=>JSON.stringify(o)).join(" · ")]})]})}function wh({tone:e,explanation:t}){const n=e==="extension"?"border-accent-warn/40 bg-accent-warn/10 text-accent-warn":"border-accent-error/40 bg-accent-error/10 text-accent-error";return c.jsx(Ar,{label:c.jsx("span",{className:"font-sans",children:t}),tone:e==="extension"?"warn":"error",focusable:!0,children:c.jsx("span",{className:K("inline-flex items-center rounded-sm border px-1 font-mono text-[9px] uppercase tracking-widest",n),children:e==="extension"?"⚠ ext":"⚠ unknown"})})}function vE({message:e,latencyMs:t,pairedRequest:n,onJumpToPaired:o,validation:r}){var d;const i=ne(p=>p.detailTab),s=ne(p=>p.setDetailTab),a=I.useMemo(()=>{if(!e)return null;const p=(n==null?void 0:n.method)??void 0;return iE(e,p?{pairedMethod:p}:void 0)},[e,n]);if(!e)return c.jsx("div",{className:"flex h-full items-center justify-center bg-surface-elev/40",children:c.jsx("div",{className:"text-center font-mono text-xs uppercase tracking-widest text-ink-muted",children:"select a message to inspect"})});const l=e.direction==="editor-to-agent";return c.jsxs("div",{className:"flex h-full flex-col bg-surface-elev/30",children:[c.jsxs("header",{className:"border-b border-line bg-surface-elev px-5 py-3",children:[c.jsxs("div",{className:"flex items-baseline gap-3",children:[c.jsxs("span",{className:K("font-mono text-[11px] font-semibold tracking-widest",l?"text-accent-out":"text-accent-in"),children:[Kb(e.direction)," ",Wb(e.direction)]}),c.jsxs("span",{className:"font-mono text-xs text-ink-muted",children:["seq ",e.seq]}),c.jsx("span",{className:"font-mono text-xs text-ink-muted",children:fs(e.timestamp)})]}),c.jsx("h2",{className:"mt-1 truncate font-display text-lg uppercase tracking-tight text-ink-primary",children:e.method??e.kind}),c.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-1 font-mono text-[11px] text-ink-secondary",children:[c.jsx($E,{message:e,resolver:a}),e.rpcId!==void 0&&e.rpcId!==null&&c.jsx(ja,{label:"id",value:String(e.rpcId)}),c.jsx(ja,{label:"bytes",value:Ul(e.raw.length)}),t!==void 0&&c.jsx(ja,{label:"latency",value:`+${Vt(t)}`,accent:!0}),n&&c.jsxs("button",{type:"button",onClick:o?()=>o(n.seq):void 0,className:"inline-flex items-baseline gap-1 transition-colors hover:text-ink-primary",title:"jump to paired message",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:"paired"}),c.jsxs("span",{className:"text-ink-primary underline decoration-line-strong decoration-dotted underline-offset-4",children:["seq ",n.seq," ",n.method??""]})]})]})]}),c.jsxs("nav",{className:"flex gap-1 border-b border-line bg-surface-elev/70 px-4",children:[c.jsx(na,{active:i==="tree",onClick:()=>s("tree"),children:"Tree"}),c.jsx(na,{active:i==="raw",onClick:()=>s("raw"),children:"Raw"}),c.jsx(na,{active:i==="meta",onClick:()=>s("meta"),children:"Meta"}),c.jsx(na,{active:i==="spec",onClick:()=>s("spec"),badge:r&&!r.skipped&&!r.valid?r.errors.length:void 0,advisoryBadge:r&&!r.skipped&&((d=r.advisories)!=null&&d.length)?r.advisories.length:void 0,children:"Spec"})]}),c.jsxs("div",{className:"flex-1 overflow-auto px-5 py-4",children:[i==="tree"&&c.jsx(xE,{message:e,resolver:a}),i==="raw"&&c.jsx(wE,{raw:e.raw}),i==="meta"&&c.jsx(SE,{message:e}),i==="spec"&&c.jsx(bE,{validation:r})]})]})}function bE({validation:e}){if(!e)return c.jsx("div",{className:"font-mono text-[11px] text-ink-muted",children:"no validation result yet"});if(e.skipped){const t={"parse-error":"this frame failed to parse as JSON-RPC — already surfaced in the Tree tab as a parse error","no-method":"no method available for validation (e.g. response without a paired request)","unknown-method":"the ACP spec has no schema for this method — likely an extension or a future addition","no-schema-for-kind":"the spec has no schema for this kind of frame for this method (e.g. notification-only method)","wrong-kind":"no per-method ACP schema applies (e.g. JSON-RPC error envelope, parse failure)"};return c.jsxs("div",{className:"space-y-2 font-mono text-[11px]",children:[c.jsx("div",{className:"text-ink-muted uppercase tracking-widest text-[10px]",children:"not validated"}),c.jsx("div",{className:"text-ink-secondary",children:t[e.skipped]})]})}return e.valid?c.jsxs("div",{className:"space-y-3 font-mono text-[11px]",children:[c.jsxs("div",{className:"inline-flex items-baseline gap-2",children:[c.jsx("span",{className:"rounded-sm border border-accent-ok/40 bg-accent-ok/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-widest text-accent-ok",children:"✓ conforms"}),c.jsxs("span",{className:"text-ink-muted",children:["matched ",c.jsx("span",{className:"text-ink-secondary",children:e.schemaName})," ","from the ACP schema"]})]}),c.jsx(Sh,{advisories:e.advisories})]}):c.jsxs("div",{className:"space-y-3 font-mono text-[11px]",children:[c.jsxs("div",{className:"inline-flex items-baseline gap-2",children:[c.jsxs("span",{className:"rounded-sm border border-accent-error/40 bg-accent-error/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-widest text-accent-error",children:["⚠ ",e.errors.length," violation",e.errors.length===1?"":"s"]}),c.jsxs("span",{className:"text-ink-muted",children:["against ",c.jsx("span",{className:"text-ink-secondary",children:e.schemaName})]})]}),c.jsx("ul",{className:"space-y-1.5",children:e.errors.map((t,n)=>c.jsxs("li",{className:"rounded-sm border border-accent-error/25 bg-accent-error/[0.04] px-2 py-1.5",children:[c.jsxs("div",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:[t.keyword??"error"," · ",t.path==="/"?"(root)":t.path]}),c.jsx("div",{className:"mt-0.5 text-ink-primary",children:t.message})]},`${t.path}-${t.keyword}-${n}`))}),c.jsx(Sh,{advisories:e.advisories})]})}function Sh({advisories:e}){return!e||e.length===0?null:c.jsxs("div",{className:"space-y-1.5",children:[c.jsxs("div",{className:"inline-flex items-baseline gap-2",children:[c.jsxs("span",{className:"rounded-sm border border-accent-warn/40 bg-accent-warn/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-widest text-accent-warn",children:["⚠ ",e.length," advisor",e.length===1?"y":"ies"]}),c.jsx("span",{className:"text-ink-muted",children:"valid today — required in a future ACP version"})]}),c.jsx("ul",{className:"space-y-1.5",children:e.map((t,n)=>c.jsxs("li",{className:"rounded-sm border border-accent-warn/25 bg-accent-warn/[0.04] px-2 py-1.5",children:[c.jsxs("div",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:["soon-required · ",t.path]}),c.jsx("div",{className:"mt-0.5 text-ink-primary",children:t.message})]},`${t.path}-${n}`))})]})}function xE({message:e,resolver:t}){const n=I.useMemo(()=>{if(t)return o=>t.resolve(o)},[t]);return e.payload===null?c.jsxs("div",{className:"space-y-2 font-mono text-xs",children:[c.jsxs("div",{className:"text-accent-error",children:["parse error: ",e.parseError??"unknown"]}),c.jsx("pre",{className:"whitespace-pre-wrap break-all text-ink-secondary",children:e.raw})]}):c.jsx(al,{value:e.payload,defaultExpanded:!0,...n?{getSpec:n}:{}})}function wE({raw:e}){const[t,n]=I.useState(!1),o=async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)}catch{}};return c.jsxs("div",{className:"group relative",children:[c.jsx("button",{type:"button",onClick:o,"aria-label":"Copy raw frame to clipboard",title:"Copy raw frame to clipboard",className:K("absolute right-0 top-0 inline-flex h-6 items-center rounded-sm border bg-surface-elev/70 px-2 font-mono text-[10px] uppercase tracking-widest opacity-0 transition-[opacity,background-color,border-color,color] duration-150","group-hover:opacity-100 focus-visible:opacity-100",t?"border-accent-ok/60 bg-surface-elev text-accent-ok opacity-100":"border-line text-ink-secondary hover:border-accent-info/70 hover:bg-surface-rowHover hover:text-accent-info"),children:t?"✓ copied":"copy"}),c.jsx("pre",{className:"whitespace-pre-wrap break-all font-mono text-[11px] leading-relaxed text-ink-primary",children:e})]})}function SE({message:e}){const t=[["seq",String(e.seq)],["direction",e.direction],["kind",e.kind],["method",e.method??"(none)"],["rpcId",String(e.rpcId??"(none)")],["timestamp",`${fs(e.timestamp)} (${e.timestamp})`],["raw size",Ul(e.raw.length)],["parse error",e.parseError??"(none)"]];return c.jsx("dl",{className:"grid grid-cols-[110px_1fr] gap-x-4 gap-y-1 font-mono text-[12px]",children:t.map(([n,o])=>c.jsxs("div",{className:"contents",children:[c.jsx("dt",{className:"text-ink-muted uppercase tracking-widest text-[10px]",children:n}),c.jsx("dd",{className:"text-ink-primary",children:o})]},n))})}function $E({message:e,resolver:t}){const n=c.jsx(ja,{label:"kind",value:e.kind});return t!=null&&t.typeDescription?c.jsx(Ar,{label:c.jsx("div",{className:"whitespace-pre-wrap font-sans text-[12px] leading-snug text-ink-secondary",children:t.typeDescription}),tone:"info",children:n}):n}function ja({label:e,value:t,accent:n}){return c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("span",{className:K(n?"text-accent-warn":"text-ink-primary"),children:t})]})}function na({children:e,active:t,onClick:n,badge:o,advisoryBadge:r,tab:i}){return c.jsxs("button",{type:"button",onClick:n,className:K("relative flex items-baseline gap-1.5 px-4 py-2 font-mono text-[11px] uppercase tracking-widest transition-colors",t?"text-ink-primary":"text-ink-muted hover:text-ink-secondary"),children:[c.jsx("span",{children:e}),o!==void 0&&c.jsx("span",{className:"rounded-sm border border-accent-error/40 bg-accent-error/10 px-1 text-[9px] font-semibold text-accent-error",children:o}),r!==void 0&&c.jsx("span",{className:"rounded-sm border border-accent-warn/40 bg-accent-warn/10 px-1 text-[9px] font-semibold text-accent-warn",children:r}),t&&c.jsx("span",{className:"absolute inset-x-2 -bottom-px h-px bg-accent-out","aria-hidden":!0})]})}function rf(e){const t=new Map,n=new Map;for(const o of e){if(o.rpcId===void 0||o.rpcId===null)continue;const r=String(o.rpcId);if(o.kind==="request")t.set(r,o);else if(o.kind==="response"||o.kind==="error"){const i=t.get(r);if(!i)continue;const s=Math.max(0,o.timestamp-i.timestamp);n.set(i.seq,{pairSeq:o.seq,latencyMs:s}),n.set(o.seq,{pairSeq:i.seq,latencyMs:s})}}return n}function Bd(e){const t=rf(e),n=new Map,o=new Map;for(const i of e)if(i.method){if(i.kind==="request"){let s=n.get(i.method);s||(s={count:0,latencies:[]},n.set(i.method,s)),s.count+=1;const a=t.get(i.seq);a&&s.latencies.push(a.latencyMs)}else if(i.kind==="notification"){let s=o.get(i.method);s||(s={count:0,latencies:[]},o.set(i.method,s)),s.count+=1}}const r=[];for(const[i,s]of n)s.latencies.sort((a,l)=>a-l),r.push({method:i,kind:"request",count:s.count,sampleSize:s.latencies.length,p50:s.latencies.length?$h(s.latencies,50):null,p99:s.latencies.length?$h(s.latencies,99):null,max:s.latencies.length?s.latencies[s.latencies.length-1]:null,totalLatencyMs:s.latencies.length?s.latencies.reduce((a,l)=>a+l,0):null,latencies:s.latencies});for(const[i,s]of o)r.push({method:i,kind:"notification",count:s.count,sampleSize:0,p50:null,p99:null,max:null,totalLatencyMs:null,latencies:[]});return r.sort((i,s)=>s.count-i.count||(i.kind==="request"?-1:1)),r}function $h(e,t){if(e.length===0)return 0;const n=t/100*(e.length-1),o=Math.floor(n),r=Math.ceil(n),i=e[o],s=e[r];return i===void 0||s===void 0?i??0:o===r?i:i+(s-i)*(n-o)}const Gb=100;function kE(e,t,n={}){const o=n.maxChangesPerRow??Gb,r=kh(e),i=kh(t),s=TE(r,i),a=[],l={equal:0,changed:0,added:0,removed:0,total:0};for(const d of s)if(d.kind==="match"){const p=e[d.i],m=t[d.j],v=_E(p,m,o),h=v.length===0?"equal":"changed";a.push({op:h,a:p,b:m,signature:r[d.i],changes:v}),h==="equal"?l.equal+=1:l.changed+=1}else if(d.kind==="removed"){const p=e[d.i];a.push({op:"removed",a:p,b:null,signature:r[d.i],changes:[]}),l.removed+=1}else{const p=t[d.j];a.push({op:"added",a:null,b:p,signature:i[d.j],changes:[]}),l.added+=1}return l.total=a.length,{rows:a,summary:l}}function kh(e){const t=rf(e),n=new Map;for(const o of e)o.method&&n.set(o.seq,o.method);return e.map(o=>{let r=o.method??"";if(!r&&(o.kind==="response"||o.kind==="error")){const i=t.get(o.seq);i&&(r=n.get(i.pairSeq)??"")}return`${o.direction}|${o.kind}|${r}`})}function TE(e,t){const n=e.length,o=t.length,r=o+1,i=new Uint32Array((n+1)*r);for(let d=n-1;d>=0;d--)for(let p=o-1;p>=0;p--){const m=d*r+p;if(e[d]===t[p])i[m]=i[(d+1)*r+(p+1)]+1;else{const v=i[(d+1)*r+p],h=i[d*r+(p+1)];i[m]=v>=h?v:h}}const s=[];let a=0,l=0;for(;a<n&&l<o;)e[a]===t[l]?(s.push({kind:"match",i:a,j:l}),a++,l++):i[(a+1)*r+l]>=i[a*r+(l+1)]?(s.push({kind:"removed",i:a}),a++):(s.push({kind:"added",j:l}),l++);for(;a<n;)s.push({kind:"removed",i:a}),a++;for(;l<o;)s.push({kind:"added",j:l}),l++;return s}function Th(e){const t=e.payload;if(t===null||typeof t!="object")return{raw:e.raw,parseError:e.parseError??null};const n=t,o={};return"method"in n&&(o.method=n.method),"params"in n&&(o.params=n.params),"result"in n&&(o.result=n.result),"error"in n&&(o.error=n.error),o}function _E(e,t,n){const o=[];return ll(Th(e),Th(t),"",o,n),o}function jE(e,t,n=Gb){const o=[];return ll(e,t,"",o,n),o}function _h(e){return Array.isArray(e)?"array":e!==null&&typeof e=="object"?"object":"leaf"}function ll(e,t,n,o,r){if(o.length>=r||Object.is(e,t))return;const i=_h(e),s=_h(t);if(i!==s||i==="leaf"){if(NE(e,t))return;o.push({path:n||"$",kind:"change",a:e,b:t});return}if(i==="array"){const p=e,m=t,v=Math.max(p.length,m.length);for(let h=0;h<v;h++){if(o.length>=r)return;const y=`${n}[${h}]`,b=h<p.length,g=h<m.length;b&&g?ll(p[h],m[h],y,o,r):g?o.push({path:y,kind:"add",b:m[h]}):o.push({path:y,kind:"remove",a:p[h]})}return}const a=e,l=t,d=[...new Set([...Object.keys(a),...Object.keys(l)])].sort();for(const p of d){if(o.length>=r)return;const m=n?`${n}.${p}`:p,v=p in a,h=p in l;v&&h?ll(a[p],l[p],m,o,r):h?o.push({path:m,kind:"add",b:l[p]}):o.push({path:m,kind:"remove",a:a[p]})}}function NE(e,t){return Object.is(e,t)}function Ne(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function xn(e){return typeof e=="string"&&e.length>0?e:null}function Ao(e){return e===!0}function CE(e){for(const t of e)if(t.kind==="request"&&t.method==="initialize"&&t.direction==="editor-to-agent")return t;return null}function EE(e,t){if(t==null)return null;for(const n of e)if(n.kind==="response"&&n.direction==="agent-to-editor"&&n.rpcId===t)return n;return null}function PE(e){var r,i;const t={name:null,title:null,version:null,platform:null};if(!e)return t;const n=Ne((r=Ne(e.payload))==null?void 0:r.params),o=Ne(n==null?void 0:n.clientInfo);return o?{name:xn(o.name),title:xn(o.title),version:xn(o.version),platform:xn((i=Ne(o._meta))==null?void 0:i.platform)}:t}function IE(e){var s,a;const t={fsReadTextFile:!1,fsWriteTextFile:!1,terminal:!1,authTerminal:!1,authGateway:!1};if(!e)return t;const n=Ne((s=Ne(e.payload))==null?void 0:s.params),o=Ne(n==null?void 0:n.clientCapabilities);if(!o)return t;const r=Ne(o.fs),i=Ne(o.auth);return{fsReadTextFile:Ao(r==null?void 0:r.readTextFile),fsWriteTextFile:Ao(r==null?void 0:r.writeTextFile),terminal:Ao(o.terminal),authTerminal:Ao(i==null?void 0:i.terminal),authGateway:Ao((a=Ne(i==null?void 0:i._meta))==null?void 0:a.gateway)}}function OE(e){var i;const t={name:null,version:null,authMethods:0};if(!e)return t;const n=Ne((i=Ne(e.payload))==null?void 0:i.result);if(!n)return t;const o=Ne(n.agentInfo),r=n.authMethods;return{name:xn(o==null?void 0:o.name),version:xn(o==null?void 0:o.version),authMethods:Array.isArray(r)?r.length:0}}function RE(e){var r;const t={prompt:!1,loadSession:!1};if(!e)return t;const n=Ne((r=Ne(e.payload))==null?void 0:r.result),o=Ne(n==null?void 0:n.agentCapabilities);return o?{prompt:Ao(o.promptCapabilities)||o.promptCapabilities!==void 0,loadSession:Ao(o.loadSession)}:t}function AE(e,t){const n=t??e;if(!n)return null;const o=Ne(n.payload),r=Ne(o==null?void 0:o.result)??Ne(o==null?void 0:o.params),i=r==null?void 0:r.protocolVersion;return typeof i=="number"?i:null}function ME(e){var s,a;let t=null,n=0,o=null,r=0,i=[];for(const l of e){l.direction!=="editor-to-agent"&&l.kind;const d=Ne((s=Ne(l.payload))==null?void 0:s.params);if(d){if(l.method==="session/set_mode"){const p=xn(d.modeId);p!==null&&(t!==null&&t!==p&&(n+=1),t=p)}else if(l.method==="session/set_model"){const p=xn(d.modelId);p!==null&&(o!==null&&o!==p&&(r+=1),o=p)}else if(l.method==="session/update"){const p=Ne(d.update);if((p==null?void 0:p.sessionUpdate)==="available_commands_update"){const m=p.availableCommands;if(Array.isArray(m)){const v=[];for(const h of m){const y=xn((a=Ne(h))==null?void 0:a.name);y!==null&&v.push(y)}v.length>0&&(i=v)}}else if((p==null?void 0:p.sessionUpdate)==="current_mode_update"){const m=xn(p.currentModeId);m!==null&&(t!==null&&t!==m&&(n+=1),t=m)}}}}return{currentMode:t,modeChanges:n,currentModel:o,modelChanges:r,availableCommands:i}}function qE(e){if(!e)return{jetbrainsProxyConfig:null};const t=Ne(e.payload),n=Ne(t==null?void 0:t.params),o=Ne(n==null?void 0:n._meta);return{jetbrainsProxyConfig:(o==null?void 0:o.proxyConfig)??null}}function cl(e){const t=CE(e),n=EE(e,t==null?void 0:t.rpcId);return{protocolVersion:AE(t,n),client:PE(t),agent:OE(n),clientCapabilities:IE(t),agentCapabilities:RE(n),runtime:ME(e),extensions:qE(t)}}function jh(e){return{protocolVersion:e.protocolVersion,client:e.client,agent:e.agent,clientCapabilities:e.clientCapabilities,agentCapabilities:e.agentCapabilities,runtime:e.runtime}}function UE(e,t){const n=cl(e),o=cl(t);return{a:n,b:o,changes:jE(jh(n),jh(o))}}function LE(e,t){const n=Bd(e),o=Bd(t),r=l=>`${l.kind}:${l.method}`,i=new Map(n.map(l=>[r(l),l])),s=new Map(o.map(l=>[r(l),l])),a=[];for(const l of new Set([...i.keys(),...s.keys()])){const d=i.get(l)??null,p=s.get(l)??null,m=d??p;a.push({method:m.method,kind:m.kind,a:d,b:p,countDelta:((p==null?void 0:p.count)??0)-((d==null?void 0:d.count)??0),p50Delta:kc(d==null?void 0:d.p50,p==null?void 0:p.p50),p99Delta:kc(d==null?void 0:d.p99,p==null?void 0:p.p99),maxDelta:kc(d==null?void 0:d.max,p==null?void 0:p.max)})}return a.sort((l,d)=>Math.abs(d.p99Delta??0)-Math.abs(l.p99Delta??0)||Math.abs(d.countDelta)-Math.abs(l.countDelta)||l.method.localeCompare(d.method)),a}function kc(e,t){return e==null||t===null||t===void 0?null:t-e}function sf(e,t=200){const[n,o]=I.useState(e),[r,i]=I.useState(!1);return I.useEffect(()=>{if(e){o(!0);let a=null;const l=requestAnimationFrame(()=>{a=requestAnimationFrame(()=>i(!0))});return()=>{cancelAnimationFrame(l),a!==null&&cancelAnimationFrame(a)}}i(!1);const s=setTimeout(()=>o(!1),t);return()=>clearTimeout(s)},[e,t]),{rendered:n,visible:r}}const af="flex h-9 items-center gap-4 border-b border-line bg-surface-base px-5",DE={request:"REQ",response:"RSP",notification:"NTF",error:"ERR",unknown:"UNK"};function zE(e){return e.direction==="editor-to-agent"?"→A":"A←"}function Jb(e){if(e.name)return`#${e.id} · ${e.name}`;const t=e.agent_command?Rt(e.agent_command):"agent";return e.client_name?`#${e.id} · ${e.client_name} · ${t}`:`#${e.id} · ${t}`}const Nh={messages:null,loading:!1,error:null};function Ch(e){const[t,n]=I.useState(Nh);return I.useEffect(()=>{if(e===null){n(Nh);return}let o=!1;return n({messages:null,loading:!0,error:null}),TS(e).then(r=>{o||n({messages:r.messages,loading:!1,error:null})}).catch(r=>{o||n({messages:null,loading:!1,error:r instanceof Error?r.message:String(r)})}),()=>{o=!0}},[e]),t}function FE({open:e,onClose:t}){const n=ne(F=>F.messages),o=ne(F=>F.session),r=at(F=>F.savedSessions),i=(o==null?void 0:o.id)??null,[s,a]=I.useState(null),[l,d]=I.useState(null),[p,m]=I.useState("frames"),[v,h]=I.useState(!0),[y,b]=I.useState(null),{rendered:g,visible:f}=sf(e);I.useEffect(()=>{if(!e)return;const F=G=>{G.key==="Escape"&&(G.preventDefault(),t())};return window.addEventListener("keydown",F,!0),()=>window.removeEventListener("keydown",F,!0)},[e,t]),I.useEffect(()=>{e&&(a(i),d(null),b(null))},[e,i]),I.useEffect(()=>b(null),[s,l]);const u=Ch(s!==null&&s!==i?s:null),x=Ch(l!==null&&l!==i?l:null),S=s===null?null:s===i?n:u.messages,T=l===null?null:l===i?n:x.messages,C=u.loading||x.loading,$=u.error??x.error,j=I.useMemo(()=>S===null||T===null?null:kE(S,T),[S,T]),A=I.useMemo(()=>{if(!j)return[];const F=[];return j.rows.forEach((G,Y)=>{v&&G.op==="equal"||F.push({row:G,index:Y})}),F},[j,v]),E=I.useMemo(()=>{const F=r.find(G=>G.id===l);return F?Jb(F):null},[r,l]),q=I.useMemo(()=>S&&T?UE(S,T):null,[S,T]),z=I.useMemo(()=>S&&T?LE(S,T):null,[S,T]);if(!g)return null;const U=r.filter(F=>F.id!==l),L=r.filter(F=>F.id!==s);return c.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"Session diff",className:K("fixed inset-0 z-[100] flex flex-col bg-surface-base/95 backdrop-blur-sm transition-opacity duration-200 ease-out",f?"opacity-100":"opacity-0"),children:c.jsxs("div",{className:K("flex h-full w-full flex-col transition-transform duration-200 ease-out",f?"translate-y-0":"-translate-y-2"),children:[c.jsxs("header",{className:"flex items-center justify-between border-b border-line px-5 py-3",children:[c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"Diff — compare two sessions"}),c.jsx("button",{type:"button",onClick:t,className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors hover:text-ink-primary","aria-label":"Close diff panel",children:"close"})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-3 border-b border-line bg-surface-elev px-5 py-2.5",children:[c.jsx("span",{className:"font-mono text-[11px] text-accent-out",title:"baseline (left)",children:"A"}),c.jsx(Oh,{ariaLabel:"Baseline session",sessions:U,selectedId:s,onSelect:a}),c.jsx("span",{className:"text-ink-muted",children:"→"}),c.jsx("span",{className:"font-mono text-[11px] text-ink-secondary",title:"comparison (right)",children:"B"}),c.jsx(Oh,{ariaLabel:"Comparison session",sessions:L,selectedId:l,onSelect:d})]}),s===null?c.jsx(xi,{children:"Pick a baseline session (A) to compare from."}):l===null?c.jsx(xi,{children:"Pick a session in the B selector above to compare against A."}):C?c.jsx(xi,{children:"Loading sessions…"}):$?c.jsxs(xi,{tone:"error",children:["Could not load a session: ",$]}):!j||!q||!z?c.jsx(xi,{children:"No data."}):c.jsxs(c.Fragment,{children:[c.jsx(BE,{tab:p,onTab:m,summary:j.summary,infoCount:q.changes.length}),c.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto",children:[p==="frames"&&c.jsx(HE,{diff:j,bLabel:E,hideEqual:v,onHideEqual:h,visibleRows:A,expanded:y,onToggleExpand:F=>b(G=>G===F?null:F)}),p==="info"&&c.jsx(VE,{meta:q}),p==="perf"&&c.jsx(KE,{perf:z})]})]})]})})}function BE({tab:e,onTab:t,summary:n,infoCount:o}){const i=[{id:"frames",label:"frames",badge:n.changed+n.added+n.removed},{id:"info",label:"info",badge:o},{id:"perf",label:"perf",badge:0}];return c.jsx("div",{className:"flex items-center gap-1 border-b border-line bg-surface-elev px-5 py-1.5",children:i.map(s=>c.jsxs("button",{type:"button",onClick:()=>t(s.id),className:K("inline-flex items-center gap-1.5 rounded-sm px-3 py-1 font-mono text-[10px] uppercase tracking-widest transition-colors",e===s.id?"bg-surface-rowHover text-ink-primary":"text-ink-muted hover:text-ink-secondary"),children:[s.label,s.badge>0&&c.jsx("span",{className:"rounded-sm border border-line px-1 text-[9px] text-ink-secondary",children:s.badge})]},s.id))})}function HE({diff:e,bLabel:t,hideEqual:n,onHideEqual:o,visibleRows:r,expanded:i,onToggleExpand:s}){const a=e.summary.changed===0&&e.summary.added===0&&e.summary.removed===0;return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:K(af,"font-mono text-[11px]"),children:[c.jsxs("span",{className:"text-ink-muted",children:[e.summary.equal," same"]}),c.jsxs("span",{className:"text-accent-warn",children:[e.summary.changed," differs"]}),c.jsxs("span",{className:"text-accent-error",children:[e.summary.removed," only in A"]}),c.jsxs("span",{className:"text-accent-ok",children:[e.summary.added," only in B"]}),c.jsxs("label",{className:"ml-auto flex cursor-pointer select-none items-center gap-2 text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsx("input",{type:"checkbox",checked:n,onChange:l=>o(l.target.checked),className:"accent-accent-info"}),"hide unchanged"]})]}),a?c.jsxs(ms,{tone:"ok",children:["Sessions are identical",t?` — every frame in B (${t}) matches A`:"","."]}):r.length===0?c.jsx(ms,{children:"Only unchanged frames — toggle “hide unchanged” to see them."}):c.jsxs("table",{className:"w-full table-fixed border-collapse font-mono text-[11px]",children:[c.jsxs("colgroup",{children:[c.jsx("col",{className:"w-[24px]"}),c.jsx("col",{className:"w-1/2"}),c.jsx("col",{className:"w-1/2"})]}),c.jsx("tbody",{children:r.map(({row:l,index:d})=>c.jsx(QE,{row:l,expanded:i===d,onToggle:()=>s(d)},d))})]})]})}function Qb(){return c.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-warn",children:"~"})," changed"]}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-ok",children:"+"})," only in B"]}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-error",children:"−"})," only in A"]})]})}function VE({meta:e}){return e.changes.length===0?c.jsx(ms,{tone:"ok",children:"Metadata identical — same client, agent, capabilities, protocol and runtime."}):c.jsxs(c.Fragment,{children:[c.jsx("div",{className:af,children:c.jsx(Qb,{})}),c.jsx("ul",{className:"space-y-1 px-5 py-3 font-mono text-[11px]",children:e.changes.map((t,n)=>c.jsx("li",{className:"leading-snug",children:c.jsx(Yb,{change:t})},n))})]})}function Eh(e){return e==null?"—":Vt(e)}function WE(e){return e===null?{text:"—",tone:"text-ink-dim"}:e===0?{text:"0",tone:"text-ink-muted"}:{text:(e>0?"+":"−")+Vt(Math.abs(e)),tone:e>0?"text-accent-error":"text-accent-ok"}}function KE({perf:e}){return e.length===0?c.jsx(ms,{children:"No methods to compare."}):c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:K(af,"font-mono text-[10px] uppercase tracking-widest text-ink-muted"),children:[c.jsx("span",{children:"Δ = B − A · sorted by |Δ p99|"}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-error",children:"+"})," slower in B"]}),c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{className:"text-accent-ok",children:"−"})," faster in B"]})]}),c.jsxs("table",{className:"w-full text-[11px]",children:[c.jsx("thead",{className:"sticky top-0 z-10 bg-surface-base",children:c.jsxs("tr",{className:"border-b border-line text-left font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsx("th",{className:"py-2 pl-5 pr-3",children:"method"}),c.jsx("th",{className:"px-3 py-2",children:"kind"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"A p99"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"B p99"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"Δ p99"}),c.jsx("th",{className:"px-3 py-2 text-right",children:"count"})]})}),c.jsx("tbody",{className:"font-mono",children:e.map(t=>{var o,r,i,s;const n=WE(t.p99Delta);return c.jsxs("tr",{className:"border-b border-line/40 hover:bg-surface-rowHover/50",children:[c.jsx("td",{className:"truncate py-1.5 pl-5 pr-3 text-ink-primary",title:t.method,children:t.method}),c.jsx("td",{className:"px-3 py-1.5 text-[10px] uppercase tracking-widest text-ink-muted",children:t.kind==="request"?"req":"ntf"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:Eh(((o=t.a)==null?void 0:o.p99)??null)}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:Eh(((r=t.b)==null?void 0:r.p99)??null)}),c.jsx("td",{className:K("px-3 py-1.5 text-right",n.tone),children:n.text}),c.jsxs("td",{className:"px-3 py-1.5 text-right text-ink-muted",children:[((i=t.a)==null?void 0:i.count)??0,"→",((s=t.b)==null?void 0:s.count)??0]})]},`${t.kind}:${t.method}`)})})]})]})}function xi({children:e,tone:t}){return c.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:c.jsx(ms,{...t?{tone:t}:{},children:e})})}const GE={equal:"",changed:"bg-accent-warn/5",added:"bg-accent-ok/5",removed:"bg-accent-error/5"},JE={equal:{glyph:"=",tone:"text-ink-dim"},changed:{glyph:"≠",tone:"text-accent-warn"},added:{glyph:"▸",tone:"text-accent-ok"},removed:{glyph:"◂",tone:"text-accent-error"}};function QE({row:e,expanded:t,onToggle:n}){const o=JE[e.op],r=e.op==="changed"&&e.changes.length>0;return c.jsxs(c.Fragment,{children:[c.jsxs("tr",{className:K("border-b border-line/40 align-top",GE[e.op],r&&"cursor-pointer hover:bg-accent-warn/10"),onClick:r?n:void 0,children:[c.jsx("td",{className:K("py-1.5 pl-5 text-center",o.tone),children:o.glyph}),c.jsx("td",{className:"px-3 py-1.5",children:c.jsx(Ph,{frame:e.a,muted:e.op==="added"})}),c.jsxs("td",{className:"px-3 py-1.5",children:[c.jsx(Ph,{frame:e.b,muted:e.op==="removed"}),r&&c.jsxs("span",{className:"ml-2 text-[10px] text-accent-warn",children:[t?"▾":"▸"," ",e.changes.length," field",e.changes.length===1?"":"s"]})]})]}),r&&t&&c.jsxs("tr",{className:"border-b border-line/40 bg-surface-elev",children:[c.jsx("td",{}),c.jsxs("td",{colSpan:2,className:"px-5 py-2",children:[c.jsx("div",{className:"mb-1.5",children:c.jsx(Qb,{})}),c.jsx("ul",{className:"space-y-1",children:e.changes.map((i,s)=>c.jsx("li",{className:"leading-snug",children:c.jsx(Yb,{change:i})},s))})]})]})]})}function Ph({frame:e,muted:t}){if(e===null)return c.jsx("span",{className:"text-ink-dim",children:"—"});const n=e.method??(e.parseError?`! ${e.parseError}`:"—");return c.jsxs("span",{className:K("inline-flex items-baseline gap-2",t&&"opacity-60"),children:[c.jsx("span",{className:"text-ink-dim",children:zE(e)}),c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-ink-muted",children:DE[e.kind]}),c.jsx("span",{className:"truncate text-ink-primary",title:n,children:n}),c.jsxs("span",{className:"text-ink-dim",children:["#",e.seq]})]})}const Ih=80;function oa(e){let t;try{t=JSON.stringify(e)}catch{t=String(e)}return t===void 0&&(t="undefined"),t.length>Ih&&(t=t.slice(0,Ih-1)+"…"),t}function Yb({change:e}){return e.kind==="add"?c.jsxs("span",{children:[c.jsx("span",{className:"text-accent-ok",children:"+ "}),c.jsx("span",{className:"text-ink-secondary",children:e.path}),c.jsx("span",{className:"text-ink-muted",children:": "}),c.jsx("span",{className:"text-accent-ok",children:oa(e.b)})]}):e.kind==="remove"?c.jsxs("span",{children:[c.jsx("span",{className:"text-accent-error",children:"− "}),c.jsx("span",{className:"text-ink-secondary",children:e.path}),c.jsx("span",{className:"text-ink-muted",children:": "}),c.jsx("span",{className:"text-accent-error line-through",children:oa(e.a)})]}):c.jsxs("span",{children:[c.jsx("span",{className:"text-accent-warn",children:"~ "}),c.jsx("span",{className:"text-ink-secondary",children:e.path}),c.jsx("span",{className:"text-ink-muted",children:": "}),c.jsx("span",{className:"text-accent-error line-through",children:oa(e.a)}),c.jsx("span",{className:"text-ink-muted",children:" → "}),c.jsx("span",{className:"text-accent-ok",children:oa(e.b)})]})}function ms({children:e,tone:t="muted"}){const n=t==="error"?"text-accent-error":t==="ok"?"text-accent-ok":"text-ink-muted";return c.jsx("div",{className:K("px-5 py-8 text-center font-mono text-[12px]",n),children:e})}function Oh({ariaLabel:e,sessions:t,selectedId:n,onSelect:o}){const[r,i]=I.useState(!1),s=I.useRef(null);I.useEffect(()=>{if(!r)return;const m=v=>{s.current&&!s.current.contains(v.target)&&i(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[r]);const a=t.filter(m=>m.imported_at===null),l=t.filter(m=>m.imported_at!==null),d=n!==null?t.find(m=>m.id===n)??null:null,p=d?Jb(d):n!==null?`#${n}`:"select a session…";return c.jsxs("div",{ref:s,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>i(m=>!m),"aria-label":e,"aria-haspopup":"listbox","aria-expanded":r,className:K("inline-flex h-7 items-center gap-2 rounded-sm border px-3 font-mono text-[10px] uppercase tracking-widest transition-colors","border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary",r?"border-line-strong text-ink-primary":""),title:`${e} — pick which session to compare`,children:[c.jsx("span",{className:"inline-block w-[240px] truncate text-left",children:p}),c.jsx("span",{"aria-hidden":!0,className:K("transition-transform",r?"rotate-180":""),children:"▾"})]}),r&&c.jsxs("div",{className:"absolute left-0 top-[calc(100%+6px)] z-50 w-[460px] rounded-md border border-line bg-surface-elev shadow-xl",children:[c.jsxs(Rh,{children:["saved · ",a.length," session",a.length===1?"":"s"]}),a.length===0&&c.jsx("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:"no other saved sessions to compare"}),c.jsx("ul",{className:"max-h-[300px] overflow-y-auto",children:a.map(m=>c.jsx(Ah,{s:m,active:m.id===n,onPick:()=>{o(m.id),i(!1)}},m.id))}),l.length>0&&c.jsxs(c.Fragment,{children:[c.jsxs(Rh,{children:["imported · ",l.length," file",l.length===1?"":"s"]}),c.jsx("ul",{className:"max-h-[200px] overflow-y-auto",children:l.map(m=>c.jsx(Ah,{s:m,active:m.id===n,onPick:()=>{o(m.id),i(!1)}},m.id))})]})]})]})}function Rh({children:e}){return c.jsx("div",{className:"border-b border-line bg-surface-base/50 px-3 py-1.5 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e})}function Ah({s:e,active:t,onPick:n}){return c.jsx("li",{children:c.jsxs("button",{type:"button",onClick:n,title:`session #${e.id} · ${e.agent_command??""} · ${e.message_count} messages`,className:K("flex w-full items-baseline gap-3 border-b border-line-grid/70 px-3 py-2 text-left transition-colors hover:bg-surface-rowHover",t?"bg-surface-rowHover":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("h-2 w-2 shrink-0 rounded-full",t?"bg-accent-note animate-pulse-soft":"bg-ink-dim")}),c.jsxs("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-ink-primary",children:[c.jsxs("span",{className:"text-accent-note",children:["#",e.id]}),c.jsx("span",{className:"text-ink-muted",children:" · "}),e.name??(e.client_name?`${e.client_name} · ${Rt(e.agent_command??"")}`:Rt(e.agent_command??""))]}),c.jsxs("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[e.message_count,"msg · ",Mr(e.started_at)]})]})})}let Tc=null,wi=null;async function YE(){if(Tc)return Tc;if(wi)return wi;wi=(async()=>{const e=await fetch("/api/info",{headers:{accept:"application/json"}});if(!e.ok)throw new Error(`info: HTTP ${e.status}`);const t=await e.json();return Tc=t,t})();try{return await wi}finally{wi=null}}const XE=[{id:"zed",label:"Zed"},{id:"jetbrains",label:"JetBrains"}],ZE="/absolute/path/to/acp-devtools";function eP(e){return JSON.stringify({agent_servers:{"Claude Code (via ACP Devtools)":{type:"custom",command:e}}},null,4)}function Xb({text:e,label:t="Copy"}){const[n,o]=I.useState(!1),r=async()=>{try{await navigator.clipboard.writeText(e),o(!0),setTimeout(()=>o(!1),1400)}catch{o(!1)}};return c.jsx("button",{type:"button",onClick:r,className:K("rounded border border-line px-2 py-0.5 font-mono text-[10px] uppercase tracking-widest transition-colors",n?"border-accent-out text-accent-out":"text-ink-secondary hover:border-ink-secondary hover:text-ink-primary"),children:n?"Copied":t})}function tP(){const[e,t]=I.useState("zed"),[n,o]=I.useState(null);I.useEffect(()=>{let a=!0;return YE().then(l=>{a&&o(l.binaryPath)}).catch(()=>{}),()=>{a=!1}},[]);const r=n??ZE,i=n===null,s=I.useMemo(()=>({zed:eP(r),jetbrainsName:"Claude Code (via ACP Devtools)"}),[r]);return c.jsxs("div",{className:"rounded border border-line bg-surface-base",children:[c.jsx("div",{className:"flex items-center gap-1 border-b border-line px-3 py-2",children:XE.map(a=>c.jsx("button",{type:"button",onClick:()=>t(a.id),className:K("rounded px-2 py-1 font-mono text-[10px] uppercase tracking-widest transition-colors",e===a.id?"bg-surface-elev text-ink-primary":"text-ink-secondary hover:text-ink-primary"),children:a.label},a.id))}),e==="zed"&&c.jsxs("div",{className:"px-3 py-3",children:[c.jsxs("div",{className:"mb-2 flex items-center justify-between gap-3",children:[c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"~/.config/zed/settings.json"}),c.jsx(Xb,{text:s.zed})]}),c.jsx("pre",{className:"overflow-x-auto rounded border border-line bg-surface-elev/60 px-3 py-2 font-mono text-[11px] leading-relaxed text-ink-primary",children:s.zed}),c.jsxs("p",{className:"mt-2 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["Open Zed, paste into ",c.jsx("span",{className:"font-mono",children:"settings.json"})," ","(Cmd+,), pick the new agent in the right-side panel, send a prompt. The CLI auto-proxies ",c.jsx("span",{className:"font-mono",children:"@zed-industries/claude-code-acp"})," ","when launched with no args."]}),c.jsx(Mh,{isPlaceholder:i})]}),e==="jetbrains"&&c.jsxs("div",{className:"px-3 py-3",children:[c.jsxs("p",{className:"mb-2 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["Settings (Cmd+,) → search ",c.jsx("span",{className:"font-mono",children:"agent"})," → open the AI Assistant / Junie agent-servers page → add a new entry with these fields (no arguments needed):"]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx(qh,{label:"Name",value:s.jetbrainsName}),c.jsx(qh,{label:"Command",value:r})]}),c.jsxs("p",{className:"mt-3 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["JetBrains IDEs require an absolute ",c.jsx("span",{className:"font-mono",children:"command"}),". See ",c.jsx("span",{className:"font-mono",children:"examples/jetbrains-config.md"})," if the agent-servers page is not where the search suggests."]}),c.jsx(Mh,{isPlaceholder:i})]})]})}function Mh({isPlaceholder:e}){return e?c.jsxs("div",{className:"mt-3 rounded border border-line border-dashed bg-surface-elev/40 px-3 py-2 font-sans text-[11px] leading-relaxed text-ink-secondary",children:["You're viewing the UI through a development server, so the absolute binary path couldn't be auto-detected. After running"," ",c.jsx("span",{className:"font-mono",children:"npm run build:full"})," in the repo and"," ",c.jsx("span",{className:"font-mono",children:"npm link"})," inside"," ",c.jsx("span",{className:"font-mono",children:"packages/cli/"}),", find the path with"," ",c.jsx("span",{className:"font-mono",children:"which acp-devtools"})," and replace the placeholder above."]}):c.jsxs("p",{className:"mt-3 font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:["path auto-resolved · verify with ",c.jsx("span",{className:"text-ink-secondary",children:"which acp-devtools"})]})}function qh({label:e,value:t}){return c.jsxs("div",{className:"flex items-center gap-2 rounded border border-line bg-surface-elev/60 px-3 py-1.5",children:[c.jsx("span",{className:"w-20 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("span",{className:"flex-1 truncate font-mono text-[11px] text-ink-primary",children:t}),c.jsx(Xb,{text:t})]})}function nP({status:e,lastError:t,url:n,captureCount:o}){const r=e==="open"?"Awaiting messages":e==="connecting"?"Connecting":e==="closed"?"Disconnected":e==="error"?"Connection error":"No live capture",i=e==="open"?"text-accent-out":e==="error"?"text-accent-error":"text-ink-secondary";return c.jsx("div",{className:"flex h-full w-full items-center justify-center bg-grid",children:c.jsxs("div",{className:"relative w-[min(720px,92%)] rounded-md border border-line bg-surface-elev/80 p-6 backdrop-blur-sm",children:[c.jsxs("div",{className:"mb-1 flex items-baseline gap-3",children:[c.jsx("span",{className:"font-display text-sm uppercase tracking-[0.18em] text-ink-muted",children:"acp.devtools"}),c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:"v0.6.0 / pre-alpha"})]}),c.jsx("h2",{className:K("font-display text-2xl uppercase tracking-tight",i),children:r}),c.jsx("p",{className:"mt-2 font-sans text-sm leading-relaxed text-ink-secondary",children:"Connect an IDE to start streaming ACP frames. Pick yours below — the snippet plugs acp-devtools between editor and agent so every message is captured live."}),o>0&&c.jsxs("p",{className:"mt-2 font-mono text-[11px] uppercase tracking-widest text-accent-out",children:[o," live capture",o===1?"":"s"," discovered — pick one in the picker above"]}),c.jsx("div",{className:"mt-4",children:c.jsx(tP,{})}),c.jsxs("div",{className:"mt-4 flex items-center gap-3 font-mono text-[11px]",children:[c.jsx(oP,{status:e}),c.jsx("span",{className:"text-ink-secondary",children:n}),t&&c.jsx("span",{className:"text-accent-error",children:t})]})]})})}function oP({status:e}){const t=e==="open"?"bg-accent-out":e==="connecting"?"bg-accent-warn animate-pulse-soft":e==="error"?"bg-accent-error":"bg-ink-dim";return c.jsx("span",{className:K("h-2 w-2 rounded-full",t),"aria-hidden":!0})}function rP(){const e=ne(i=>i.filters),t=ne(i=>i.toggleDirection),n=ne(i=>i.toggleKind),o=ne(i=>i.toggleStreams),r=ne(i=>i.setSearch);return c.jsxs("div",{className:"flex items-center gap-3 border-b border-line bg-surface-elev/70 px-4 py-2",children:[c.jsx("div",{className:"flex items-center gap-1",children:cs.map(i=>c.jsx(aP,{dir:i,active:e.directions.has(i),onClick:()=>t(i)},i))}),c.jsx(dP,{}),c.jsxs("div",{className:"flex items-center gap-1",children:[ds.map(i=>c.jsx(lP,{kind:i,active:e.kinds.has(i),onClick:()=>n(i)},i)),c.jsx(cP,{active:e.showStreams,onClick:o})]}),c.jsx("div",{className:"ml-auto",children:c.jsx("input",{type:"search",placeholder:"search payload…",value:e.search,onChange:i=>r(i.target.value),className:K("h-7 w-64 rounded border border-line bg-surface-base px-2 font-mono text-[11px] text-ink-primary placeholder-ink-muted","focus:border-accent-out focus:outline-none")})})]})}const iP={"editor-to-agent":"editor → agent (toggle to filter messages flowing from your IDE to the AI)","agent-to-editor":"agent → editor (toggle to filter messages coming back from the AI)"},sP={request:"request — expects a response",response:"response — answer to a previous request",notification:"notification — one-way event, no response",error:"error — response carrying an error object",unknown:"unknown — frames that could not be classified as JSON-RPC"};function aP({dir:e,active:t,onClick:n}){const o=e==="editor-to-agent",r=o?"→ OUT":"← IN",i=o?"text-accent-out":"text-accent-in";return c.jsx("button",{type:"button",onClick:n,title:iP[e],className:K("inline-flex items-center gap-1 rounded-sm border px-2 py-0.5 font-mono text-[10px] font-semibold tracking-widest transition-colors",t?K(i,o?"border-accent-out/50 bg-accent-out/10":"border-accent-in/50 bg-accent-in/10"):"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),children:r})}function lP({kind:e,active:t,onClick:n}){const r={request:{color:"text-accent-out",border:"border-accent-out/50",bg:"bg-accent-out/10"},response:{color:"text-accent-in",border:"border-accent-in/50",bg:"bg-accent-in/10"},notification:{color:"text-accent-note",border:"border-accent-note/50",bg:"bg-accent-note/10"},error:{color:"text-accent-error",border:"border-accent-error/50",bg:"bg-accent-error/10"},unknown:{color:"text-ink-muted",border:"border-line",bg:"bg-surface-row"}}[e];return c.jsx("button",{type:"button",onClick:n,title:sP[e],className:K("rounded-sm border px-2 py-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest transition-colors",t?K(r.color,r.border,r.bg):"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),children:e})}function cP({active:e,onClick:t}){return c.jsx("button",{type:"button",onClick:t,title:"stream — collapse runs of agent_message_chunk notifications into a single row",className:K("rounded-sm border px-2 py-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest transition-colors",e?"border-accent-note/50 bg-accent-note/10 text-accent-note":"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),children:"stream"})}function dP(){return c.jsx("span",{"aria-hidden":!0,className:"h-5 w-px bg-line"})}const uP={minSamplesForTail:3,longTailRatio:5,minBusiestCount:50,minBusiestRatio:2.5,minHotspotShare:.4,minSamplesForOutlier:5,outlierRatio:3};function pP(e,t,n={}){const o={...uP,...n},r=[],i=t.reduce((h,y)=>h+(y.totalLatencyMs??0),0);if(i>0){const y=t.filter(b=>b.totalLatencyMs!==null&&b.totalLatencyMs>0).sort((b,g)=>(g.totalLatencyMs??0)-(b.totalLatencyMs??0))[0];if(y&&y.totalLatencyMs!==null){const b=y.totalLatencyMs/i;b>=o.minHotspotShare&&r.push({kind:"hotspot",summary:`${y.method} consumed ${ar(y.totalLatencyMs)} of total wall time`,detail:`${Math.round(b*100)}% of ${ar(i)} sampled latency`,methods:[y.method]})}}const a=t.filter(h=>h.sampleSize>=o.minSamplesForTail&&h.p50!==null&&h.p99!==null&&h.p50>0&&h.p99/h.p50>=o.longTailRatio).sort((h,y)=>(y.p99??0)/(y.p50??1)-(h.p99??0)/(h.p50??1))[0];if(a&&a.p99!==null&&a.p50!==null){const h=Math.round(a.p99/a.p50);r.push({kind:"long-tail",summary:`${a.method} has a long tail — p99 is ${h}× the p50`,detail:`p50 ${ar(a.p50)} · p99 ${ar(a.p99)} · ${a.sampleSize} samples`,methods:[a.method]})}const l=[...t].filter(h=>h.sampleSize>=o.minSamplesForOutlier&&h.p99!==null&&h.max!==null&&h.p99>0&&h.max/h.p99>=o.outlierRatio).sort((h,y)=>(y.max??0)-(h.max??0))[0];if(l&&l.max!==null&&l.p99!==null){const h=Math.round(l.max/l.p99);r.push({kind:"outlier",summary:`${l.method} had one ${ar(l.max)} call — ${h}× its p99`,detail:`p99 ${ar(l.p99)} · ${l.sampleSize} samples`,methods:[l.method]})}const d=[...t].sort((h,y)=>y.count-h.count),p=d[0],m=d[1];if(p&&p.count>=o.minBusiestCount){const h=m&&m.count>0?p.count/m.count:1/0;if(h>=o.minBusiestRatio){const y=p.kind==="notification"?"notifications":"calls";r.push({kind:"busiest",summary:`${p.method} sent ${p.count} ${y}`,detail:m?`${h.toFixed(1)}× the next-busiest method (${m.method} · ${m.count})`:"no other methods to compare against",methods:[p.method]})}}const v=fP(e);if(v.length>0){const h=v.slice(0,3),y=v.length>3?` (+${v.length-3} more)`:"";r.push({kind:"errors",summary:`${v.length} method${v.length===1?"":"s"} returned an error`,detail:h.join(", ")+y,methods:v})}return r}function fP(e){const t=new Map,n=new Set;for(const o of e){const r=o.rpcId===void 0||o.rpcId===null?null:String(o.rpcId);if(o.kind==="request"&&o.method&&r!==null)t.set(r,o.method);else if(o.kind==="error"&&r!==null){const i=t.get(r);i&&n.add(i)}}return[...n].sort()}function ar(e){if(e<1e3)return`${Math.round(e)}ms`;if(e<1e4)return`${(e/1e3).toFixed(2)}s`;if(e<6e4)return`${(e/1e3).toFixed(1)}s`;const t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return`${t}m${n}s`}function mP(e,t){if(e.length<=t)return e;const n=[];for(let o=0;o<t;o++){const r=Math.round(o*(e.length-1)/(t-1));n.push(e[r])}return n}function hP({values:e,width:t=64,height:n=14,className:o,title:r}){if(e.length===0)return null;const i=e[e.length-1]??0;if(i===0)return null;const s=Math.max(1,Math.floor(t/4)),a=mP(e,s),l=1,d=(t-l*(a.length-1))/a.length;return c.jsx("svg",{viewBox:`0 0 ${t} ${n}`,width:t,height:n,className:K("inline-block align-middle",o),role:"img","aria-label":r??`latency distribution, ${e.length} samples`,children:a.map((p,m)=>{const v=Math.max(1,p/i*n);return c.jsx("rect",{x:m*(d+l),y:n-v,width:d,height:v,fill:"currentColor",opacity:.4+p/i*.6},m)})})}function yP(e){const t={events:[],startTs:0,endTs:0,durationMs:0,laneCounts:{"editor-req":0,"agent-req":0,notification:0}};if(e.length===0)return t;const n=rf(e),o=new Map;for(const l of e)o.set(l.seq,l);let r=1/0,i=-1/0;const s=[],a={"editor-req":0,"agent-req":0,notification:0};for(const l of e)if(l.timestamp<r&&(r=l.timestamp),l.timestamp>i&&(i=l.timestamp),l.kind==="request"){const d=l.direction==="editor-to-agent"?"editor-req":"agent-req",p=n.get(l.seq),m=p?o.get(p.pairSeq):void 0,v=(m==null?void 0:m.kind)==="error",h=m?m.timestamp:l.timestamp;h>i&&(i=h),s.push({seq:l.seq,startTs:l.timestamp,endTs:h,lane:d,method:l.method??null,kind:l.kind,erroredOut:v,pairedSeq:m?m.seq:null}),a[d]+=1}else l.kind==="notification"&&(s.push({seq:l.seq,startTs:l.timestamp,endTs:l.timestamp,lane:"notification",method:l.method??null,kind:l.kind,erroredOut:!1,pairedSeq:null}),a.notification+=1);return!Number.isFinite(r)||!Number.isFinite(i)?t:{events:s,startTs:r,endTs:i,durationMs:Math.max(0,i-r),laneCounts:a}}const dl=["editor-req","agent-req","notification"],gP={"editor-req":"editor → agent","agent-req":"agent → editor",notification:"notifications"},oo=48,lf=6,Ll=24,wn=132,hs=20,Dl=8,vP=20,Uh=3e4,Lh=50;function bP(e,t,n,o,r,i){if(e.length===0||n<=t)return{segments:[{kind:"active",tStart:t,tEnd:n,pxStart:0,pxEnd:o*r}],tsToX:()=>wn-i,totalActiveMs:0};const s=[...e].sort((u,x)=>u.startTs-x.startTs),a=[];let l=t,d=t;for(const u of s)u.startTs-d>Uh&&(d>l&&a.push({kind:"active",tStart:l,tEnd:d}),a.push({kind:"gap",tStart:d,tEnd:u.startTs}),l=u.startTs),d=Math.max(d,u.endTs);d>l&&a.push({kind:"active",tStart:l,tEnd:d}),n>d+Uh?a.push({kind:"gap",tStart:d,tEnd:n}):n>d&&a.length>0&&(a[a.length-1].tEnd=n);const p=a.filter(u=>u.kind==="gap").length,m=a.filter(u=>u.kind==="active").reduce((u,x)=>u+(x.tEnd-x.tStart),0),v=o*r,h=Math.max(50,v-p*Lh),y=m>0?h/m:0;let b=0;const g=[];for(const u of a){const x=u.kind==="gap"?Lh:(u.tEnd-u.tStart)*y;g.push({...u,pxStart:b,pxEnd:b+x}),b+=x}return{segments:g,tsToX:u=>{if(u<=g[0].tStart)return wn+g[0].pxStart-i;for(const S of g)if(u>=S.tStart&&u<=S.tEnd){const T=S.tEnd>S.tStart?(u-S.tStart)/(S.tEnd-S.tStart):0,C=S.pxStart+T*(S.pxEnd-S.pxStart);return wn+C-i}const x=g[g.length-1];return wn+x.pxEnd-i},totalActiveMs:m}}function xP({messages:e,onSelectSeq:t,height:n=220,controlsRef:o,onZoomChange:r}){const i=I.useMemo(()=>yP(e),[e]),s=I.useRef(null),a=I.useRef(null),[l,d]=I.useState({width:800,height:n}),[p,m]=I.useState(1),[v,h]=I.useState(0),[y,b]=I.useState(null),[g,f]=I.useState({x:0,y:0}),u=I.useRef(null);I.useEffect(()=>{const U=s.current;if(!U||typeof ResizeObserver>"u")return;const L=new ResizeObserver(F=>{const G=F[0];if(!G)return;const Y=G.contentRect;d({width:Math.max(320,Y.width),height:Math.max(120,Y.height)})});return L.observe(U),()=>L.disconnect()},[]),I.useEffect(()=>{m(1),h(0),b(null)},[i.startTs,i.endTs]);const x=I.useMemo(()=>{const U=Math.max(50,l.width-wn-hs);return bP(i.events,i.startTs,i.endTs,U,p,v)},[i,l.width,p,v]),S=I.useMemo(()=>{if(i.events.length===0)return[];const U=[];for(const L of i.events){const F=x.tsToX(L.startTs),G=x.tsToX(L.endTs),Y=Math.max(2,G-F),D=dl.indexOf(L.lane),J=Dl+Ll+D*(oo+lf)+oo/2-9;U.push({...L,x:F,y:J,width:Y,height:18})}return U},[i,x]);I.useEffect(()=>{const U=a.current;if(!U)return;const L=window.devicePixelRatio||1;U.width=l.width*L,U.height=l.height*L,U.style.width=`${l.width}px`,U.style.height=`${l.height}px`;const F=U.getContext("2d");if(!F)return;F.setTransform(L,0,0,L,0,0);const G=getComputedStyle(document.documentElement),Y=J=>`rgb(${G.getPropertyValue(`--${J}`).trim()})`,D=(J,O)=>`rgba(${G.getPropertyValue(`--${J}`).trim()} / ${O})`;F.clearRect(0,0,l.width,l.height),wP(F,l,Y),$P(F,x,l,Y,D),SP(F,l,x,Y),_P(F,S,y,Y,D)},[S,x,l,y]);const T=(U,L)=>{for(const F of S){const G=Math.max(F.width,6);if(U>=F.x&&U<=F.x+G&&L>=F.y&&L<=F.y+F.height)return F}return null},C=U=>{const L=U.currentTarget.getBoundingClientRect(),F=U.clientX-L.left,G=U.clientY-L.top;if(u.current){const D=F-u.current.startX;h(Math.max(0,u.current.startPan-D));return}const Y=T(F,G);b(Y),f({x:U.clientX,y:U.clientY})},$=U=>{const L=U.currentTarget.getBoundingClientRect(),F=U.clientX-L.left,G=U.clientY-L.top,Y=T(F,G);if(Y&&t){t(Y.seq);return}u.current={startX:F,startPan:v}},j=()=>{u.current=null},A=U=>{if(!U.metaKey&&!U.ctrlKey)return;U.preventDefault();const L=U.deltaY<0?1.15:1/1.15;m(F=>Math.min(50,Math.max(.3,F*L)))},E=()=>m(U=>Math.min(50,U*1.5)),q=()=>m(U=>Math.max(.3,U/1.5)),z=()=>{m(1),h(0)};return I.useEffect(()=>{if(o)return o.current={zoomIn:E,zoomOut:q,reset:z,getZoom:()=>p},()=>{o.current&&(o.current=null)}}),I.useEffect(()=>{r==null||r(p)},[p,r]),i.events.length===0?c.jsx("div",{className:"flex h-full items-center justify-center font-mono text-[11px] uppercase tracking-widest text-ink-muted",children:"no messages — capture or load a session first"}):c.jsxs("div",{ref:s,className:"relative h-full w-full",style:{minHeight:0},children:[c.jsx("canvas",{ref:a,className:K("block h-full w-full",u.current?"cursor-grabbing":y?"cursor-pointer":"cursor-grab"),onMouseMove:C,onMouseDown:$,onMouseUp:j,onMouseLeave:()=>{b(null),u.current=null},onWheel:A}),y&&c.jsxs("div",{role:"tooltip",className:"pointer-events-none fixed z-[150] rounded-sm border border-line bg-surface-base px-3 py-2 font-mono text-[11px] shadow-lg",style:{left:Math.min(window.innerWidth-280,g.x+12),top:g.y+12,maxWidth:280},children:[c.jsxs("div",{className:"text-ink-primary",children:[c.jsxs("span",{className:"text-ink-muted",children:["seq ",y.seq]})," · ",y.method??y.kind]}),c.jsx("div",{className:"text-ink-muted",children:y.endTs>y.startTs?`${Vt(y.endTs-y.startTs)}${y.erroredOut?" · error":""}`:y.lane==="notification"?"notification":"pending"}),t&&c.jsx("div",{className:"mt-1 text-[10px] text-ink-dim",children:"click to inspect"})]})]})}function wP(e,t,n){e.font="10px monospace",e.textBaseline="middle",e.textAlign="start";for(let o=0;o<dl.length;o++){const r=dl[o],i=Dl+Ll+o*(oo+lf);e.fillStyle=n("surface-elev"),e.fillRect(wn,i,t.width-wn-hs,oo),e.fillStyle=n("ink-muted"),e.fillText(gP[r],vP,i+oo/2),e.strokeStyle=n("line"),e.lineWidth=1,e.beginPath(),e.moveTo(wn,i+oo),e.lineTo(t.width-hs,i+oo),e.stroke()}}function SP(e,t,n,o){var y;const r=Dl+Ll-4;e.strokeStyle=o("line"),e.fillStyle=o("ink-muted"),e.font="10px monospace",e.textBaseline="bottom",e.textAlign="center",e.lineWidth=1;const i=n.segments.filter(b=>b.kind==="active").reduce((b,g)=>Math.max(b,g.tEnd-g.tStart),0),s=n.segments.reduce((b,g)=>b+(g.kind==="active"?g.pxEnd-g.pxStart:0),0),l=(i>0?s/n.totalActiveMs:0)*1e3,d=[.1,.25,.5,1,2,5,10,30,60,120,300],p=80;let m=d[d.length-1];for(const b of d)if(b*l>=p){m=b;break}const v=m*1e3,h=((y=n.segments[0])==null?void 0:y.tStart)??0;for(const b of n.segments){if(b.kind!=="active")continue;const g=Math.ceil((b.tStart-h)/v)*v+h;for(let f=g;f<=b.tEnd;f+=v){const u=n.tsToX(f);u<wn||u>t.width-hs||(e.beginPath(),e.moveTo(u,r),e.lineTo(u,r+4),e.stroke(),e.fillText(TP(f-h),u,r-2))}}}function $P(e,t,n,o,r){const i=Dl+Ll,s=i+dl.length*(oo+lf);for(const a of t.segments){if(a.kind!=="gap")continue;const l=t.tsToX(a.tStart),p=t.tsToX(a.tEnd)-l;if(l>n.width-hs||l+p<wn)continue;e.fillStyle=r("ink-muted",.06),e.fillRect(l,i,p,s-i),e.strokeStyle=o("line"),e.setLineDash([3,3]),e.lineWidth=1,e.beginPath(),e.moveTo(l+.5,i),e.lineTo(l+.5,s),e.moveTo(l+p-.5,i),e.lineTo(l+p-.5,s),e.stroke(),e.setLineDash([]),e.fillStyle=o("ink-muted"),e.font="10px monospace",e.textBaseline="middle",e.textAlign="center";const m=l+p/2,v=i+(s-i)/2;e.fillText(kP(a.tEnd-a.tStart),m,v)}}function kP(e){if(e<6e4)return`${Math.round(e/1e3)}s idle`;if(e<36e5)return`${Math.round(e/6e4)}m idle`;const t=Math.floor(e/36e5),n=Math.round(e%36e5/6e4);return n>0?`${t}h${n}m idle`:`${t}h idle`}function TP(e){if(e<1e3)return`${Math.round(e)}ms`;if(e<6e4)return`${(e/1e3).toFixed(e<1e4?1:0)}s`;const t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return`${t}m${n}s`}function _P(e,t,n,o,r){for(const i of t){const s=(n==null?void 0:n.seq)===i.seq,a=i.erroredOut?r("accent-error",.6):i.kind==="notification"?r("accent-note",.7):i.lane==="editor-req"?r("accent-out",.7):r("accent-in",.7);e.fillStyle=s?a.replace(/0\.\d+/,"0.95"):a,e.fillRect(i.x,i.y,Math.max(i.width,2),i.height),s&&(e.strokeStyle=o("ink-primary"),e.lineWidth=1,e.strokeRect(i.x-.5,i.y-.5,Math.max(i.width,2)+1,i.height+1))}}function jP({open:e,onClose:t,onNavigateToSeq:n}){const o=ne(S=>S.messages),r=ne(S=>S.session),i=ne(S=>S.select),s=I.useRef(null),[a,l]=I.useState(1),d=I.useMemo(()=>Bd(o),[o]),p=I.useMemo(()=>pP(o,d),[o,d]),m=I.useMemo(()=>d.reduce((S,T)=>Math.max(S,T.count),0),[d]),[v,h]=I.useState("count"),[y,b]=I.useState("desc"),{rendered:g,visible:f}=sf(e);I.useEffect(()=>{if(!e)return;const S=T=>{T.key==="Escape"&&(T.preventDefault(),t())};return window.addEventListener("keydown",S,!0),()=>window.removeEventListener("keydown",S,!0)},[e,t]);const u=I.useMemo(()=>AP(d,v,y),[d,v,y]),x=I.useMemo(()=>RP(d),[d]);return g?c.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"Performance dashboard",className:K("fixed inset-0 z-[100] flex flex-col bg-surface-base/95 backdrop-blur-sm transition-opacity duration-200 ease-out",f?"opacity-100":"opacity-0"),children:c.jsxs("div",{className:K("flex h-full w-full flex-col transition-transform duration-200 ease-out",f?"translate-y-0":"-translate-y-2"),children:[c.jsxs("header",{className:"flex items-center justify-between border-b border-line px-5 py-3",children:[c.jsxs("div",{className:"flex min-w-0 items-baseline gap-3",children:[c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"Performance — per-method latency"}),r&&c.jsx("span",{className:"truncate font-mono text-[11px] text-ink-secondary",children:(()=>{const S=ql(r);let T=S.secondary;if(!r.clientName){const C=cl(o),$=C.client.title??C.client.name??null;if($){const j=S.secondary;T=j?`${$} · ${j}`:$}}return T?`${S.primary} · ${T}`:S.primary})()})]}),c.jsx("button",{type:"button",onClick:t,className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors hover:text-ink-primary","aria-label":"Close performance panel",children:"close"})]}),p.length>0&&c.jsx(PP,{insights:p}),c.jsx("div",{className:"border-b border-line bg-surface-elev px-5 py-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:d.length===0?c.jsx("span",{children:"no messages — capture or load a session first"}):c.jsxs("span",{children:[x.methods," methods · ",x.requests," requests ·"," ",x.notifications," notifications · ",x.samples," latency samples"]})}),c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[c.jsx("div",{className:"flex-1 overflow-y-auto",children:u.length===0?null:c.jsxs("table",{className:"w-full table-fixed text-[11px]",children:[c.jsxs("colgroup",{children:[c.jsx("col",{}),c.jsx("col",{className:"w-[64px]"}),c.jsx("col",{className:"w-[88px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[80px]"}),c.jsx("col",{className:"w-[120px]"})]}),c.jsx("thead",{className:"sticky top-0 z-10 bg-surface-base",children:c.jsxs("tr",{className:"border-b border-line text-left font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsx(cr,{sk:"method",current:v,dir:y,onSort:lr(h,b,y),className:"!pl-5",children:"method"}),c.jsx("th",{className:"px-3 py-2",children:"kind"}),c.jsx(cr,{sk:"count",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"count"}),c.jsx(cr,{sk:"p50",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"p50"}),c.jsx(cr,{sk:"p99",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"p99"}),c.jsx(cr,{sk:"max",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"max"}),c.jsx(cr,{sk:"total",current:v,dir:y,onSort:lr(h,b,y),align:"right",children:"total"}),c.jsx("th",{className:"py-2 pl-3 pr-5 text-right",children:"dist"})]})}),c.jsx("tbody",{className:"font-mono",children:u.map(S=>c.jsxs("tr",{className:"border-b border-line/40 transition-colors hover:bg-surface-rowHover/50",children:[c.jsx("td",{className:"truncate py-1.5 pl-5 pr-3 text-ink-primary",title:S.method,children:S.method}),c.jsx("td",{className:"px-3 py-1.5 text-ink-muted",children:c.jsx(OP,{kind:S.kind})}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-primary",children:c.jsx(IP,{count:S.count,max:m,kind:S.kind})}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.p50!==null?Vt(S.p50):"—"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.p99!==null?Vt(S.p99):"—"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.max!==null?Vt(S.max):"—"}),c.jsx("td",{className:"px-3 py-1.5 text-right text-ink-secondary",children:S.totalLatencyMs!==null?Vt(S.totalLatencyMs):"—"}),c.jsx("td",{className:"py-1.5 pl-3 pr-5 text-right",children:S.latencies.length>0?c.jsx(hP,{values:S.latencies,width:88,height:14,className:"text-accent-info",title:`${S.method} latency distribution`}):c.jsx("span",{className:"text-ink-dim",children:"—"})})]},`${S.kind}:${S.method}`))})]})}),o.length>0&&c.jsxs("div",{className:"flex h-[260px] shrink-0 flex-col border-t border-line bg-surface-elev",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-line bg-surface-base px-5 py-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsxs("div",{className:"flex min-w-0 items-baseline gap-2 truncate",children:[c.jsx("span",{children:"timeline — wall-clock waterfall"}),c.jsx("span",{className:"text-ink-dim",children:"· drag to pan · Cmd/Ctrl + wheel zoom · click to inspect"})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[c.jsxs("span",{className:"text-ink-secondary",children:[a.toFixed(a<1?2:1),"×"]}),c.jsx("button",{type:"button",onClick:()=>{var S;return(S=s.current)==null?void 0:S.zoomOut()},className:"inline-flex h-5 w-5 items-center justify-center rounded-sm border border-line hover:bg-surface-rowHover hover:text-ink-primary","aria-label":"Zoom out",title:"Zoom out",children:"−"}),c.jsx("button",{type:"button",onClick:()=>{var S;return(S=s.current)==null?void 0:S.zoomIn()},className:"inline-flex h-5 w-5 items-center justify-center rounded-sm border border-line hover:bg-surface-rowHover hover:text-ink-primary","aria-label":"Zoom in",title:"Zoom in",children:"+"}),c.jsx("button",{type:"button",onClick:()=>{var S;return(S=s.current)==null?void 0:S.reset()},className:"inline-flex h-5 items-center justify-center rounded-sm border border-line px-2 hover:bg-surface-rowHover hover:text-ink-primary","aria-label":"Reset zoom and pan",title:"Reset zoom and pan to defaults",children:"reset"})]})]}),c.jsx("div",{className:"flex-1",children:c.jsx(xP,{messages:o,controlsRef:s,onZoomChange:l,onSelectSeq:S=>{n?n(S):(i(S),t())}})})]})]})]})}):null}const NP={hotspot:"●","long-tail":"▲",outlier:"◆",busiest:"■",errors:"✗"},CP={hotspot:"text-accent-warn","long-tail":"text-accent-warn",outlier:"text-accent-warn",busiest:"text-accent-info",errors:"text-accent-error"},EP={hotspot:"hotspot","long-tail":"long tail",outlier:"outlier",busiest:"busiest",errors:"errors"};function PP({insights:e}){return c.jsxs("div",{className:"border-b border-line bg-surface-base px-5 py-2.5",children:[c.jsx("div",{className:"mb-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"insights"}),c.jsx("ul",{className:"space-y-1.5",children:e.map(t=>c.jsxs("li",{className:"flex items-start gap-2",children:[c.jsx("span",{"aria-hidden":!0,className:K("mt-[3px] inline-block text-[9px] leading-none",CP[t.kind]),children:NP[t.kind]}),c.jsx("div",{className:"min-w-[68px] font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:EP[t.kind]}),c.jsxs("div",{className:"flex-1 text-[11px] leading-snug",children:[c.jsx("div",{className:"text-ink-primary",children:t.summary}),t.detail&&c.jsx("div",{className:"text-[10px] text-ink-muted",children:t.detail})]})]},t.kind))})]})}function IP({count:e,max:t,kind:n}){const o=t>0?e/t*100:0,r=n==="request"?"bg-accent-out/15":"bg-accent-note/15";return c.jsxs("div",{className:"relative inline-block w-[44px] text-right",children:[c.jsx("div",{"aria-hidden":!0,className:K("absolute inset-y-[1px] right-0 rounded-sm",r),style:{width:`${o}%`}}),c.jsx("span",{className:"relative",children:e})]})}function lr(e,t,n){return(o,r)=>{r?t(n==="asc"?"desc":"asc"):(e(o),t(o==="method"?"asc":"desc"))}}function cr({sk:e,current:t,dir:n,onSort:o,align:r="left",className:i,children:s}){const a=t===e;return c.jsxs("th",{className:K("cursor-pointer select-none px-3 py-2 transition-colors hover:text-ink-primary",r==="right"?"text-right":"",a?"text-ink-primary":"",i),onClick:()=>o(e,a),"aria-sort":a?n==="asc"?"ascending":"descending":"none",children:[c.jsx("span",{children:s}),a&&c.jsx("span",{className:"ml-1 text-accent-warn",children:n==="asc"?"↑":"↓"})]})}function OP({kind:e}){const t=e==="request"?"text-accent-out":"text-accent-note",n=e==="request"?"req":"ntf";return c.jsx("span",{className:K("text-[10px] uppercase tracking-widest",t),title:e,children:n})}function RP(e){let t=0,n=0,o=0;for(const r of e)r.kind==="request"?t+=r.count:n+=r.count,o+=r.sampleSize;return{methods:e.length,requests:t,notifications:n,samples:o}}function AP(e,t,n){const o=n==="asc"?1:-1,r=[...e];return r.sort((i,s)=>{const a=Dh(i,t),l=Dh(s,t);return a===null&&l!==null?1:a!==null&&l===null?-1:t==="method"?o*i.method.localeCompare(s.method):a===null||l===null?0:o*(a-l)}),r}function Dh(e,t){switch(t){case"method":return 0;case"count":return e.count;case"p50":return e.p50;case"p99":return e.p99;case"max":return e.max;case"total":return e.totalLatencyMs}}const cf=["raw.githubusercontent.com","gist.githubusercontent.com"];function Zb(e){try{return{ok:!0,export:BC(e)}}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t)}}}function MP(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol!=="https:"?!1:cf.includes(t.host)}async function qP(e){if(!MP(e))return{ok:!1,error:`host not in playground allowlist (${cf.join(", ")})`};let t;try{t=await fetch(e,{redirect:"follow"})}catch(o){return{ok:!1,error:`fetch failed: ${o instanceof Error?o.message:String(o)}`}}if(!t.ok)return{ok:!1,error:`HTTP ${t.status} ${t.statusText}`};const n=await t.text();return Zb(n)}function UP({initialUrl:e=null}){const[t,n]=I.useState(null),[o,r]=I.useState(e!==null),[i,s]=I.useState(!1),[a,l]=I.useState(""),d=I.useRef(null),p=(b,g)=>{b.ok?(ne.getState().loadFromExport(b.export),n(null)):n(`${g}: ${b.error}`),r(!1)},m=async b=>{r(!0),n(null);try{const g=await b.text();p(Zb(g),b.name)}catch(g){n(`${b.name}: ${g instanceof Error?g.message:String(g)}`),r(!1)}},v=async b=>{r(!0),n(null),p(await qP(b),b)},h=I.useRef(e);if(h.current!==null){const b=h.current;h.current=null,v(b)}const y=b=>{var f;b.preventDefault(),s(!1);const g=(f=b.dataTransfer.files)==null?void 0:f[0];g&&m(g)};return c.jsx("div",{className:"flex h-full w-full items-center justify-center bg-grid",children:c.jsxs("div",{className:"relative w-[min(720px,92%)] rounded-md border border-line bg-surface-elev/80 p-6 backdrop-blur-sm",children:[c.jsxs("div",{className:"mb-1 flex items-baseline gap-3",children:[c.jsx("span",{className:"font-display text-sm uppercase tracking-[0.18em] text-ink-muted",children:"acp.devtools"}),c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:"playground"})]}),c.jsx("h2",{className:"font-display text-2xl uppercase tracking-tight text-ink-primary",children:"Drop an exported session"}),c.jsxs("p",{className:"mt-2 font-sans text-sm leading-relaxed text-ink-secondary",children:["The playground renders ACP session exports client-side. Nothing leaves your browser. Generate exports with ",c.jsx("code",{className:"font-mono",children:"acp-devtools export <id>"})," ","— auth headers and proxy tokens are redacted by default."]}),c.jsxs("div",{role:"button",tabIndex:0,"aria-label":"Drop session export here or click to pick a file",onClick:()=>{var b;return(b=d.current)==null?void 0:b.click()},onKeyDown:b=>{var g;(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),(g=d.current)==null||g.click())},onDragOver:b=>{b.preventDefault(),s(!0)},onDragLeave:()=>s(!1),onDrop:y,className:K("mt-5 flex h-40 cursor-pointer flex-col items-center justify-center rounded-md border-2 border-dashed text-center transition-colors",i?"border-accent-out bg-accent-out/10":"border-line bg-surface-base/40 hover:border-ink-muted"),children:[c.jsx("span",{className:"font-display text-sm uppercase tracking-[0.18em] text-ink-muted",children:o?"Loading…":"Drop .json here"}),c.jsx("span",{className:"mt-1 font-mono text-[11px] text-ink-dim",children:"or click to pick a file"}),c.jsx("input",{ref:d,type:"file",accept:".json,application/json",className:"hidden",onChange:b=>{var f;const g=(f=b.target.files)==null?void 0:f[0];g&&m(g),b.target.value=""}})]}),c.jsxs("form",{className:"mt-4 flex items-center gap-2",onSubmit:b=>{b.preventDefault();const g=a.trim();g&&v(g)},children:[c.jsx("input",{type:"url",value:a,onChange:b=>l(b.target.value),placeholder:"https://raw.githubusercontent.com/…/session.json",className:"flex-1 rounded-sm border border-line bg-surface-base px-3 py-2 font-mono text-[12px] text-ink-primary outline-none focus:border-ink-muted","aria-label":"Load session from URL"}),c.jsx("button",{type:"submit",disabled:o||a.trim().length===0,className:"rounded-sm border border-line bg-surface-base px-3 py-2 font-display text-[11px] uppercase tracking-widest text-ink-secondary transition-colors hover:border-ink-muted disabled:cursor-not-allowed disabled:opacity-50",children:"Load"})]}),c.jsxs("p",{className:"mt-2 font-mono text-[10px] leading-relaxed text-ink-dim",children:["URL allowlist: ",cf.join(", "),". Gists are public — don't use this for anything you wouldn't post on Twitter."]}),t&&c.jsx("p",{className:"mt-3 font-mono text-[11px] text-accent-error",children:t})]})})}const LP=[.5,1,2,4,8];function DP(){const e=ne(h=>h.messages),t=ne(h=>h.playback),n=ne(h=>h.setPlayhead),o=ne(h=>h.setPlaying),r=ne(h=>h.setPlaybackSpeed),i=e.length>0?e[0].seq:0,s=e.length>0?e[e.length-1].seq:0,a=t.playhead,l=a??i,d=a!==null&&a>=s,p=I.useRef(null);if(I.useEffect(()=>{if(!t.playing)return;if(d){o(!1);return}const h=a===null?-1:e.findIndex(u=>u.seq===a),y=e[h+1];if(!y){o(!1);return}const b=h>=0?e[h]:void 0,g=b?y.timestamp-b.timestamp:0,f=Math.max(15,Math.min(1500,g/t.speed));return p.current=setTimeout(()=>{n(y.seq)},f),()=>{p.current&&(clearTimeout(p.current),p.current=null)}},[t.playing,t.speed,a,e,d,n,o]),e.length===0)return null;const m=h=>{n(h),t.playing&&o(!1)},v=()=>{d?(n(null),o(!0)):o(!t.playing)};return c.jsxs("div",{className:"flex items-center gap-3 border-t border-line bg-surface-elev/70 px-4 py-2 font-mono text-[11px]",children:[c.jsx("button",{type:"button",onClick:v,className:K("inline-flex h-6 w-12 items-center justify-center rounded-sm border font-semibold uppercase tracking-widest transition-colors",t.playing?"border-accent-warn/50 bg-accent-warn/10 text-accent-warn":"border-accent-out/50 bg-accent-out/10 text-accent-out"),title:t.playing?"pause":d?"restart playback":"play",children:t.playing?"❚❚":d?"↺":"▶"}),c.jsxs("span",{className:"w-20 shrink-0 text-right text-ink-secondary",children:[String(a??0).padStart(3,"0")," / ",String(s).padStart(3,"0")]}),c.jsx("input",{type:"range",min:i,max:s,value:l,onChange:h=>m(Number(h.target.value)),className:"h-1 flex-1 cursor-pointer accent-accent-out"}),c.jsx("div",{className:"flex shrink-0 items-center gap-1",children:LP.map(h=>c.jsxs("button",{type:"button",onClick:()=>r(h),className:K("rounded-sm border px-1.5 py-0.5 text-[10px] uppercase tracking-widest transition-colors",t.speed===h?"border-accent-out/50 bg-accent-out/10 text-accent-out":"border-line text-ink-muted hover:border-line-strong hover:text-ink-secondary"),title:`${h}× speed`,children:[h,"×"]},h))})]})}function ex(e=5e3){const[t,n]=I.useState(()=>Date.now());return I.useEffect(()=>{const o=setInterval(()=>n(Date.now()),e);return()=>clearInterval(o)},[e]),t}function zP({open:e,onClose:t}){const n=ne(a=>a.session),o=ne(a=>a.messages),r=I.useMemo(()=>cl(o),[o]),{rendered:i,visible:s}=sf(e);return I.useEffect(()=>{if(!e)return;const a=l=>{l.key==="Escape"&&(l.preventDefault(),t())};return window.addEventListener("keydown",a,!0),()=>window.removeEventListener("keydown",a,!0)},[e,t]),i?c.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"Session info",className:K("fixed inset-0 z-[100] flex items-start justify-end bg-black/60 backdrop-blur-sm transition-opacity duration-200 ease-out",s?"opacity-100":"opacity-0"),onMouseDown:a=>{a.target===a.currentTarget&&t()},children:c.jsxs("div",{className:K("flex h-full w-full max-w-[440px] flex-col border-l border-line bg-surface-base shadow-2xl transition-transform duration-200 ease-out",s?"translate-x-0":"translate-x-full"),children:[c.jsxs("header",{className:"flex items-center justify-between border-b border-line px-5 py-3",children:[c.jsx("div",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:"Session info"}),c.jsx("button",{type:"button",onClick:t,className:"font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors hover:text-ink-primary","aria-label":"Close session info panel",children:"close"})]}),c.jsx("div",{className:"flex-1 overflow-y-auto px-5 py-4",children:n?c.jsx(FP,{session:n,meta:r,messages:o}):c.jsx("div",{className:"font-mono text-[11px] text-ink-muted",children:"No session attached."})})]})}):null}function FP({session:e,meta:t,messages:n}){const o=ex(5e3),{primary:r}=ql(e),i=I.useMemo(()=>HP(n),[n]);return c.jsxs("div",{className:"space-y-5 text-[12px]",children:[c.jsxs(Si,{title:"Summary",children:[c.jsx(mn,{label:"Session",value:r}),c.jsx(mn,{label:"Client",value:t.client.title||t.client.name||e.clientName||"—",secondary:t.client.version?`v${t.client.version}${t.client.platform?` · ${t.client.platform}`:""}`:null}),c.jsx(mn,{label:"Agent",value:t.agent.name||BP(e.agentCommand)||"—",secondary:t.agent.version?`v${t.agent.version}`:null}),c.jsx(mn,{label:"Protocol",value:t.protocolVersion!==null?`ACP v${t.protocolVersion}`:"—"}),c.jsx(mn,{label:"Started",value:_a(e.startedAt,o)}),c.jsx(mn,{label:"Messages",value:`${n.length} (req ${i.req} · rsp ${i.rsp} · ntf ${i.note} · err ${i.err})`})]}),c.jsxs(Si,{title:"Client capabilities",children:[c.jsx(No,{label:"fs.readTextFile",enabled:t.clientCapabilities.fsReadTextFile}),c.jsx(No,{label:"fs.writeTextFile",enabled:t.clientCapabilities.fsWriteTextFile}),c.jsx(No,{label:"terminal",enabled:t.clientCapabilities.terminal}),c.jsx(No,{label:"auth.terminal",enabled:t.clientCapabilities.authTerminal}),c.jsx(No,{label:"auth.gateway",enabled:t.clientCapabilities.authGateway})]}),c.jsxs(Si,{title:"Agent capabilities",children:[c.jsx(No,{label:"prompt",enabled:t.agentCapabilities.prompt}),c.jsx(No,{label:"loadSession",enabled:t.agentCapabilities.loadSession}),c.jsx(mn,{label:"Auth methods",value:String(t.agent.authMethods)})]}),c.jsxs(Si,{title:"Runtime state",children:[c.jsx(mn,{label:"Mode",value:t.runtime.currentMode??"—",secondary:t.runtime.modeChanges>0?`changed ${t.runtime.modeChanges}× this session`:null}),c.jsx(mn,{label:"Model",value:t.runtime.currentModel??"—",secondary:t.runtime.modelChanges>0?`changed ${t.runtime.modelChanges}× this session`:null}),c.jsx(mn,{label:"Commands",value:t.runtime.availableCommands.length>0?t.runtime.availableCommands.join(", "):"—",wrap:!0})]}),t.extensions.jetbrainsProxyConfig!==null&&c.jsx(Si,{title:"JetBrains extensions",children:c.jsx("div",{className:"rounded-sm border border-line bg-surface-elev p-3 font-mono text-[11px] text-ink-secondary",children:c.jsx(al,{value:t.extensions.jetbrainsProxyConfig})})})]})}function BP(e){if(!e)return null;const t=e.trim().split(/\s+/);if(t[0]==="npx")for(let n=1;n<t.length;n++){const o=t[n];if(!o.startsWith("-"))return o}return t[0]??null}function HP(e){let t=0,n=0,o=0,r=0;for(const i of e)i.kind==="request"?t++:i.kind==="response"?n++:i.kind==="notification"?o++:i.kind==="error"&&r++;return{req:t,rsp:n,note:o,err:r}}function Si({title:e,children:t}){return c.jsxs("div",{children:[c.jsx("h3",{className:"mb-2 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("div",{className:"space-y-1.5",children:t})]})}function mn({label:e,value:t,secondary:n,wrap:o=!1}){return c.jsxs("div",{className:"flex items-baseline gap-3",children:[c.jsx("span",{className:"w-[120px] shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsxs("span",{className:K("flex-1 text-ink-primary",o?"whitespace-normal break-words":"truncate"),title:o?void 0:t,children:[t,n&&c.jsx("span",{className:"ml-2 text-[10px] text-ink-muted",children:n})]})]})}function No({label:e,enabled:t}){return c.jsxs("div",{className:"flex items-baseline gap-3",children:[c.jsx("span",{className:"w-[120px] shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e}),c.jsx("span",{className:K("flex-1 font-mono text-[11px]",t?"text-accent-ok":"text-ink-dim"),children:t?"✓ enabled":"— not advertised"})]})}function VP({left:e,right:t,storageKey:n,initialLeftFraction:o=.6,minLeft:r=320,minRight:i=320}){const s=I.useRef(null),[a,l]=I.useState(null),d=I.useRef(!1);I.useEffect(()=>{if(!s.current)return;const h=s.current.clientWidth,y=n?Number(localStorage.getItem(n)):NaN;n&&Number.isFinite(y)&&y>0&&y<h?l(y):l(Math.round(h*o))},[o,n]);const p=I.useCallback(h=>{h.preventDefault(),d.current=!0,h.currentTarget.setPointerCapture(h.pointerId)},[]),m=I.useCallback(h=>{if(!d.current||!s.current)return;const y=s.current.getBoundingClientRect(),b=h.clientX-y.left,g=y.width,f=Math.min(Math.max(b,r),g-i);l(f),n&&localStorage.setItem(n,String(Math.round(f)))},[r,i,n]),v=I.useCallback(h=>{d.current=!1;try{h.currentTarget.releasePointerCapture(h.pointerId)}catch{}},[]);return c.jsxs("div",{ref:s,className:"flex h-full w-full overflow-hidden",children:[c.jsx("div",{style:{width:a??"60%"},className:"flex h-full min-w-0 flex-col",children:e}),c.jsx("div",{role:"separator","aria-orientation":"vertical",className:K("group relative w-px shrink-0 cursor-col-resize bg-line",'before:absolute before:inset-y-0 before:-left-1 before:-right-1 before:content-[""]'),onPointerDown:p,onPointerMove:m,onPointerUp:v,onPointerCancel:v,children:c.jsx("div",{className:"absolute inset-y-0 left-0 w-px bg-line transition-colors group-hover:bg-accent-out/40"})}),c.jsx("div",{className:"flex h-full min-w-0 flex-1 flex-col",children:t})]})}function WP(){const e=ne(n=>n.messages),t=I.useMemo(()=>{let n=0,o=0,r=0,i=0,s=0;const a=new Map;for(const h of e)switch(a.set(h.seq,h.timestamp),s+=h.raw.length,h.kind){case"request":n+=1;break;case"response":o+=1;break;case"notification":r+=1;break;case"error":i+=1;break}const l=Cl(e),d=[];for(const h of e){if(h.kind!=="response"&&h.kind!=="error")continue;const y=l.get(h.seq);if(y===void 0)continue;const b=a.get(y);b!==void 0&&d.push(h.timestamp-b)}d.sort((h,y)=>h-y);const p=d.length?bh(d,50):null,m=d.length?bh(d,99):null,v=JN(tf(e));return{total:e.length,req:n,res:o,note:r,err:i,bytes:s,p50:p,p99:m,spec:v}},[e]);return c.jsxs("footer",{className:"flex items-center justify-between gap-6 border-t border-line bg-surface-elev/80 px-5 py-1.5 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:[c.jsxs("div",{className:"flex items-center gap-5",children:[c.jsx(Yn,{label:"msgs",value:t.total,tone:"primary"}),c.jsx(Yn,{label:"req",value:t.req,tone:"out"}),c.jsx(Yn,{label:"rsp",value:t.res,tone:"in"}),c.jsx(Yn,{label:"ntf",value:t.note,tone:"note"}),c.jsx(Yn,{label:"err",value:t.err,tone:t.err>0?"error":"muted"})]}),c.jsxs("div",{className:"flex items-center gap-5",children:[c.jsx(Yn,{label:"p50",value:t.p50!==null?Vt(t.p50):"—",tone:"primary"}),c.jsx(Yn,{label:"p99",value:t.p99!==null?Vt(t.p99):"—",tone:"primary"}),c.jsx(Yn,{label:"bytes",value:t.total>0?Ul(t.bytes):"—",tone:"primary"}),t.spec.checked>0&&c.jsx(GP,{invalidFrames:t.spec.invalidFrames,totalErrors:t.spec.totalErrors,affectedMethods:t.spec.affectedMethods,advisoryFrames:t.spec.advisoryFrames,totalAdvisories:t.spec.totalAdvisories}),c.jsx(KP,{})]})]})}function KP(){return c.jsxs("a",{href:"https://github.com/maksugr/acp-devtools",target:"_blank",rel:"noreferrer noopener",title:"Enjoying acp-devtools? Star it on GitHub — thank you!","aria-label":"Star acp-devtools on GitHub",className:"inline-flex items-baseline gap-1 text-ink-muted transition-colors hover:text-accent-warn focus-visible:text-accent-warn focus-visible:outline-none",children:[c.jsx("span",{"aria-hidden":"true",className:"text-[10px]",children:"★"}),c.jsx("span",{className:"text-[9px] tracking-normal",children:"Star on GitHub"})]})}function GP({invalidFrames:e,totalErrors:t,affectedMethods:n,advisoryFrames:o,totalAdvisories:r}){const i=o>0?c.jsx(Ar,{tone:"warn",label:c.jsxs("span",{className:"font-sans",children:[r," field",r===1?"":"s"," a future ACP version will require ",r===1?"is":"are"," missing — valid today"]}),children:c.jsxs("span",{className:"text-accent-warn",children:["⚠ ",o]})}):null;if(e===0)return c.jsxs("span",{className:"inline-flex items-baseline gap-1.5",children:[c.jsx(Ar,{label:c.jsx("span",{className:"font-sans",children:"every frame validates against the ACP schema"}),tone:"info",children:c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{children:"spec"}),c.jsx("span",{className:"text-accent-ok",children:"✓"})]})}),i]});const s=`${t} schema error${t===1?"":"s"} in ${e} frame${e===1?"":"s"}`;return c.jsxs("span",{className:"inline-flex items-baseline gap-1.5",children:[c.jsx(Ar,{tone:"warn",label:c.jsxs("div",{className:"space-y-1.5 font-sans",children:[c.jsx("div",{children:s}),n.length>0&&c.jsxs("div",{className:"font-mono text-[10px] text-ink-muted",children:["methods: ",n.join(", ")]})]}),children:c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{children:"spec"}),c.jsxs("span",{className:"text-accent-error",children:["⚠ ",e]})]})}),i]})}function Yn({label:e,value:t,tone:n}){const o=n==="primary"?"text-ink-primary":n==="out"?"text-accent-out":n==="in"?"text-accent-in":n==="note"?"text-accent-note":n==="error"?"text-accent-error":"text-ink-muted";return c.jsxs("span",{className:"inline-flex items-baseline gap-1",children:[c.jsx("span",{children:e}),c.jsx("span",{className:o,children:t})]})}const zl=0,$o=1,ri=2,tx=4;function zh(e){return()=>e}function JP(e){e()}function nx(e,t){return n=>e(t(n))}function Fh(e,t){return()=>e(t)}function QP(e,t){return n=>e(t,n)}function df(e){return e!==void 0}function YP(...e){return()=>{e.map(JP)}}function ii(){}function Fl(e,t){return t(e),e}function XP(e,t){return t(e)}function Ue(...e){return e}function $e(e,t){return e($o,t)}function me(e,t){e(zl,t)}function uf(e){e(ri)}function Le(e){return e(tx)}function oe(e,t){return $e(e,QP(t,zl))}function cn(e,t){const n=e($o,o=>{n(),t(o)});return n}function Bh(e){let t,n;return o=>r=>{t=r,n&&clearTimeout(n),n=setTimeout(()=>{o(t)},e)}}function ox(e,t){return e===t}function Me(e=ox){let t;return n=>o=>{e(t,o)||(t=o,n(o))}}function ae(e){return t=>n=>{e(n)&&t(n)}}function Z(e){return t=>nx(t,e)}function yn(e){return t=>()=>{t(e)}}function B(e,...t){const n=ZP(...t);return(o,r)=>{switch(o){case ri:uf(e);return;case $o:return $e(e,n(r))}}}function Sn(e,t){return n=>o=>{n(t=e(t,o))}}function Qo(e){return t=>n=>{e>0?e--:t(n)}}function On(e){let t=null,n;return o=>r=>{t=r,!n&&(n=setTimeout(()=>{n=void 0,o(t)},e))}}function he(...e){const t=new Array(e.length);let n=0,o=null;const r=2**e.length-1;return e.forEach((i,s)=>{const a=2**s;$e(i,l=>{const d=n;n|=a,t[s]=l,d!==r&&n===r&&o&&(o(),o=null)})}),i=>s=>{const a=()=>{i([s].concat(t))};n===r?a():o=a}}function ZP(...e){return t=>e.reduceRight(XP,t)}function eI(e){let t,n;const o=()=>t==null?void 0:t();return function(r,i){switch(r){case $o:return i?n===i?void 0:(o(),n=i,t=$e(e,i),t):(o(),ii);case ri:o(),n=null;return}}}function W(e){let t=e;const n=ve();return(o,r)=>{switch(o){case zl:t=r;break;case $o:{r(t);break}case tx:return t}return n(o,r)}}function yt(e,t){return Fl(W(t),n=>oe(e,n))}function ve(){const e=[];return(t,n)=>{switch(t){case zl:e.slice().forEach(o=>{o(n)});return;case ri:e.splice(0,e.length);return;case $o:return e.push(n),()=>{const o=e.indexOf(n);o>-1&&e.splice(o,1)}}}}function Mt(e){return Fl(ve(),t=>oe(e,t))}function xe(e,t=[],{singleton:n}={singleton:!0}){return{constructor:e,dependencies:t,id:tI(),singleton:n}}const tI=()=>Symbol();function nI(e){const t=new Map,n=({constructor:o,dependencies:r,id:i,singleton:s})=>{if(s&&t.has(i))return t.get(i);const a=o(r.map(l=>n(l)));return s&&t.set(i,a),a};return n(e)}function Qe(...e){const t=ve(),n=new Array(e.length);let o=0;const r=2**e.length-1;return e.forEach((i,s)=>{const a=2**s;$e(i,l=>{n[s]=l,o|=a,o===r&&me(t,n)})}),function(i,s){switch(i){case ri:{uf(t);return}case $o:return o===r&&s(n),$e(t,s)}}}function se(e,t=ox){return B(e,Me(t))}function Hd(...e){return function(t,n){switch(t){case ri:return;case $o:return YP(...e.map(o=>$e(o,n)))}}}const nt={DEBUG:0,INFO:1,WARN:2,ERROR:3},oI={[nt.DEBUG]:"debug",[nt.ERROR]:"error",[nt.INFO]:"log",[nt.WARN]:"warn"},rI=()=>typeof globalThis>"u"?window:globalThis,ko=xe(()=>{const e=W(nt.ERROR);return{log:W((t,n,o=nt.INFO)=>{const r=rI().VIRTUOSO_LOG_LEVEL??Le(e);o>=r&&console[oI[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,n)}),logLevel:e}},[],{singleton:!0}),Vd=new WeakMap;function rx(e){return"self"in e?e.document.documentElement:e}function iI(e){const t=rx(e),n=Vd.get(t);if(n!==void 0)return n;const o=t.ownerDocument.defaultView.getComputedStyle(t).direction==="rtl";return Vd.set(t,o),o}function Hh(e){Vd.delete(rx(e))}function ix(e,t){return iI(e)?-t:t}const Lo=ix;function Vh(e,t){return ix(e,t)}function Zo(e,t,n){return pf(e,t,n).callbackRef}function pf(e,t,n){const o=te.useRef(null);let r=s=>{};const i=te.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(s=>{const a=()=>{const l=s[0].target;l.offsetParent!==null&&e(l)};n?a():requestAnimationFrame(a)}):null,[e,n]);return r=s=>{s&&t?(i==null||i.observe(s),o.current=s):(o.current&&(i==null||i.unobserve(o.current)),o.current=null)},{callbackRef:r,ref:o}}function sI(e,t,n,o,r,i,s,a,l){const d=te.useCallback(p=>{const m=aI(p.children,t,a?"offsetWidth":"offsetHeight",r);let v=p.parentElement;for(;v.dataset.virtuosoScroller===void 0;)v=v.parentElement;const h=v.lastElementChild.dataset.viewportType==="window";let y;h&&(y=v.ownerDocument.defaultView);const b=s?a?s.scrollWidth:s.scrollHeight:h?a?y.document.documentElement.scrollWidth:y.document.documentElement.scrollHeight:a?v.scrollWidth:v.scrollHeight,g=s?a?s.offsetWidth:s.offsetHeight:h?a?y.innerWidth:y.innerHeight:a?v.offsetWidth:v.offsetHeight,f=s?a?Lo(s,s.scrollLeft):s.scrollTop:h?a?Lo(y,y.scrollX||y.document.documentElement.scrollLeft):y.scrollY||y.document.documentElement.scrollTop:a?Lo(v,v.scrollLeft):v.scrollTop;o({scrollHeight:b,scrollTop:Math.max(f,0),viewportHeight:g}),i==null||i(a?Wh("column-gap",getComputedStyle(p).columnGap,r):Wh("row-gap",getComputedStyle(p).rowGap,r)),m!==null&&e(m)},[e,t,r,i,s,o,a]);return pf(d,n,l)}function aI(e,t,n,o){const r=e.length;if(r===0)return null;const i=[];for(let s=0;s<r;s++){const a=e.item(s);if(a.dataset.index===void 0)continue;const l=parseInt(a.dataset.index),d=parseFloat(a.dataset.knownSize),p=t(a,n);if(p===0&&o("Zero-sized element, this should not happen",{child:a},nt.ERROR),p===d)continue;const m=i[i.length-1];i.length===0||m.size!==p||m.endIndex!==l-1?i.push({endIndex:l,size:p,startIndex:l}):i[i.length-1].endIndex++}return i}function Wh(e,t,n){return t!=="normal"&&(t==null?void 0:t.endsWith("px"))!==!0&&n(`${e} was not resolved to pixel value correctly`,t,nt.WARN),t==="normal"?0:parseInt(t??"0",10)}function sx(e,t,n){const o=te.useRef(null),r=te.useCallback(l=>{if(!(l!=null&&l.offsetParent))return;const d=l.getBoundingClientRect(),p=d.width;let m,v;if(t){const h=t.getBoundingClientRect(),y=d.top-h.top;v=h.height-Math.max(0,y),m=y+t.scrollTop}else{const h=s.current.ownerDocument.defaultView;v=h.innerHeight-Math.max(0,d.top),m=d.top+h.scrollY}o.current={listHeight:d.height,offsetTop:m,visibleHeight:v,visibleWidth:p},e(o.current)},[e,t]),{callbackRef:i,ref:s}=pf(r,!0,n),a=te.useCallback(()=>{r(s.current)},[r,s]);return te.useEffect(()=>{var d;if(t){t.addEventListener("scroll",a);const p=new ResizeObserver(()=>{requestAnimationFrame(a)});return p.observe(t),()=>{t.removeEventListener("scroll",a),p.unobserve(t)}}const l=(d=s.current)==null?void 0:d.ownerDocument.defaultView;return l==null||l.addEventListener("scroll",a),l==null||l.addEventListener("resize",a),()=>{l==null||l.removeEventListener("scroll",a),l==null||l.removeEventListener("resize",a)}},[a,t,s]),i}const kt=xe(()=>{const e=ve(),t=ve(),n=W(0),o=ve(),r=W(0),i=ve(),s=ve(),a=W(0),l=W(0),d=W(0),p=W(0),m=ve(),v=ve(),h=W(!1),y=W(!1),b=W(!1);return oe(B(e,Z(({scrollTop:g})=>g)),t),oe(B(e,Z(({scrollHeight:g})=>g)),s),oe(t,r),{deviation:n,fixedFooterHeight:d,fixedHeaderHeight:l,footerHeight:p,headerHeight:a,horizontalDirection:y,scrollBy:v,scrollContainerState:e,scrollHeight:s,scrollingInProgress:h,scrollTo:m,scrollTop:t,skipAnimationFrameInResizeObserver:b,smoothScrollTargetReached:o,statefulScrollTop:r,viewportHeight:i}},[],{singleton:!0}),ys={lvl:0};function ax(e,t){const n=e.length;if(n===0)return[];let{index:o,value:r}=t(e[0]);const i=[];for(let s=1;s<n;s++){const{index:a,value:l}=t(e[s]);i.push({end:a-1,start:o,value:r}),o=a,r=l}return i.push({end:1/0,start:o,value:r}),i}function Te(e){return e===ys}function gs(e,t){if(!Te(e))return t===e.k?e.v:t<e.k?gs(e.l,t):gs(e.r,t)}function un(e,t,n="k"){if(Te(e))return[-1/0,void 0];if(Number(e[n])===t)return[e.k,e.v];if(Number(e[n])<t){const o=un(e.r,t,n);return o[0]===-1/0?[e.k,e.v]:o}return un(e.l,t,n)}function It(e,t,n){return Te(e)?dx(t,n,1):t===e.k?Ze(e,{k:t,v:n}):t<e.k?Kh(Ze(e,{l:It(e.l,t,n)})):Kh(Ze(e,{r:It(e.r,t,n)}))}function qr(){return ys}function Ur(e,t,n){if(Te(e))return[];const o=un(e,t)[0];return lI(Kd(e,o,n))}function Wd(e,t){if(Te(e))return ys;const{k:n,l:o,r}=e;if(t===n){if(Te(o))return r;if(Te(r))return o;const[i,s]=cx(o);return Na(Ze(e,{k:i,l:lx(o),v:s}))}return t<n?Na(Ze(e,{l:Wd(o,t)})):Na(Ze(e,{r:Wd(r,t)}))}function Do(e){return Te(e)?[]:[...Do(e.l),{k:e.k,v:e.v},...Do(e.r)]}function Kd(e,t,n){if(Te(e))return[];const{k:o,l:r,r:i,v:s}=e;let a=[];return o>t&&(a=a.concat(Kd(r,t,n))),o>=t&&o<=n&&a.push({k:o,v:s}),o<=n&&(a=a.concat(Kd(i,t,n))),a}function Na(e){const{l:t,lvl:n,r:o}=e;if(o.lvl>=n-1&&t.lvl>=n-1)return e;if(n>o.lvl+1){if(_c(t))return ux(Ze(e,{lvl:n-1}));if(!Te(t)&&!Te(t.r))return Ze(t.r,{l:Ze(t,{r:t.r.l}),lvl:n,r:Ze(e,{l:t.r.r,lvl:n-1})});throw new Error("Unexpected empty nodes")}if(_c(e))return Gd(Ze(e,{lvl:n-1}));if(!Te(o)&&!Te(o.l)){const r=o.l,i=_c(r)?o.lvl-1:o.lvl;return Ze(r,{l:Ze(e,{lvl:n-1,r:r.l}),lvl:r.lvl+1,r:Gd(Ze(o,{l:r.r,lvl:i}))})}throw new Error("Unexpected empty nodes")}function Ze(e,t){return dx(t.k!==void 0?t.k:e.k,t.v!==void 0?t.v:e.v,t.lvl!==void 0?t.lvl:e.lvl,t.l!==void 0?t.l:e.l,t.r!==void 0?t.r:e.r)}function lx(e){return Te(e.r)?e.l:Na(Ze(e,{r:lx(e.r)}))}function _c(e){return Te(e)||e.lvl>e.r.lvl}function cx(e){return Te(e.r)?[e.k,e.v]:cx(e.r)}function dx(e,t,n,o=ys,r=ys){return{k:e,l:o,lvl:n,r,v:t}}function Kh(e){return Gd(ux(e))}function ux(e){const{l:t}=e;return!Te(t)&&t.lvl===e.lvl?Ze(t,{r:Ze(e,{l:t.r})}):e}function Gd(e){const{lvl:t,r:n}=e;return!Te(n)&&!Te(n.r)&&n.lvl===t&&n.r.lvl===t?Ze(n,{l:Ze(e,{r:n.l}),lvl:t+1}):e}function lI(e){return ax(e,({k:t,v:n})=>({index:t,value:n}))}function px(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}function vs(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}const ff=xe(()=>({recalcInProgress:W(!1)}),[],{singleton:!0});function fx(e,t,n){return e[ul(e,t,n)]}function ul(e,t,n,o=0){let r=e.length-1;for(;o<=r;){const i=Math.floor((o+r)/2),s=e[i],a=n(s,t);if(a===0)return i;if(a===-1){if(r-o<2)return i-1;r=i-1}else{if(r===o)return i;o=i+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function cI(e,t,n,o){const r=ul(e,t,o),i=ul(e,n,o,r);return e.slice(r,i+1)}function bo(e,t){return Math.round(e.getBoundingClientRect()[t])}function Bl(e){return!Te(e.groupOffsetTree)}function mf({index:e},t){return t===e?0:t<e?-1:1}function dI(){return{groupIndices:[],groupOffsetTree:qr(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:qr()}}function uI(e,t){let n=Te(e)?0:1/0;for(const o of t){const{endIndex:r,size:i,startIndex:s}=o;if(n=Math.min(n,s),Te(e)){e=It(e,0,i);continue}const a=Ur(e,s-1,r+1);if(a.some(vI(o)))continue;let l=!1,d=!1;for(const{end:p,start:m,value:v}of a)l?(r>=m||i===v)&&(e=Wd(e,m)):(d=v!==i,l=!0),p>r&&r>=m&&v!==i&&(e=It(e,r+1,v));d&&(e=It(e,s,i))}return[e,n]}function pI(e){return typeof e.groupIndex<"u"}function fI({offset:e},t){return t===e?0:t<e?-1:1}function bs(e,t,n){if(t.length===0)return 0;const{index:o,offset:r,size:i}=fx(t,e,mf),s=e-o,a=i*s+(s-1)*n+r;return a>0?a+n:a}function mx(e,t){if(!Bl(t))return e;let n=0;for(;t.groupIndices[n]<=e+n;)n++;return e+n}function hx(e,t,n){if(pI(e))return t.groupIndices[e.groupIndex]+1;const o=e.index==="LAST"?n:e.index;let r=mx(o,t);return r=Math.max(0,r,Math.min(n,r)),r}function mI(e,t,n,o=0){return o>0&&(t=Math.max(t,fx(e,o,mf).offset)),ax(cI(e,t,n,fI),gI)}function hI(e,[t,n,o,r]){t.length>0&&o("received item sizes",t,nt.DEBUG);const i=e.sizeTree;let s=i,a=0;if(n.length>0&&Te(i)&&t.length===2){const v=t[0].size,h=t[1].size;s=n.reduce((y,b)=>It(It(y,b,v),b+1,h),s)}else[s,a]=uI(s,t);if(s===i)return e;const{lastIndex:l,lastOffset:d,lastSize:p,offsetTree:m}=Jd(e.offsetTree,a,s,r);return{groupIndices:n,groupOffsetTree:n.reduce((v,h)=>It(v,h,bs(h,m,r)),qr()),lastIndex:l,lastOffset:d,lastSize:p,offsetTree:m,sizeTree:s}}function yI(e){return Do(e).map(({k:t,v:n},o,r)=>{const i=r[o+1];return{endIndex:i!==void 0?i.k-1:1/0,size:n,startIndex:t}})}function Gh(e,t){let n=0,o=0;for(;n<e;)n+=t[o+1]-t[o]-1,o++;return o-(n===e?0:1)}function Jd(e,t,n,o){let r=e,i=0,s=0,a=0,l=0;if(t!==0){l=ul(r,t-1,mf),a=r[l].offset;const d=un(n,t-1);i=d[0],s=d[1],r.length&&r[l].size===un(n,t)[1]&&(l-=1),r=r.slice(0,l+1)}else r=[];for(const{start:d,value:p}of Ur(n,t,1/0)){const m=d-i,v=m*s+a+m*o;r.push({index:d,offset:v,size:p}),i=d,a=v,s=p}return{lastIndex:i,lastOffset:a,lastSize:s,offsetTree:r}}function gI(e){return{index:e.index,value:e}}function vI(e){const{endIndex:t,size:n,startIndex:o}=e;return r=>r.start===o&&(r.end===t||r.end===1/0)&&r.value===n}const bI={offsetHeight:"height",offsetWidth:"width"},Tn=xe(([{log:e},{recalcInProgress:t}])=>{const n=ve(),o=ve(),r=yt(o,0),i=ve(),s=ve(),a=W(0),l=W([]),d=W(void 0),p=W(void 0),m=W(void 0),v=W(void 0),h=W(($,j)=>bo($,bI[j])),y=W(void 0),b=W(0),g=dI(),f=yt(B(n,he(l,e,b),Sn(hI,g),Me()),g),u=yt(B(l,Me(),Sn(($,j)=>({current:j,prev:$.current}),{current:[],prev:[]}),Z(({prev:$})=>$)),[]);oe(B(l,ae($=>$.length>0),he(f,b),Z(([$,j,A])=>{const E=$.reduce((q,z,U)=>It(q,z,bs(z,j.offsetTree,A)||U),qr());return{...j,groupIndices:$,groupOffsetTree:E}})),f),oe(B(o,he(f),ae(([$,{lastIndex:j}])=>$<j),Z(([$,{lastIndex:j,lastSize:A}])=>[{endIndex:j,size:A,startIndex:$}])),n),oe(d,p);const x=yt(B(d,Z($=>$===void 0)),!0);oe(B(p,ae($=>$!==void 0&&Te(Le(f).sizeTree)),Z($=>{const j=Le(m),A=Le(l).length>0;return j!==void 0&&j!==0?A?[{endIndex:0,size:j,startIndex:0},{endIndex:1,size:$,startIndex:1}]:[]:[{endIndex:0,size:$,startIndex:0}]})),n),oe(B(v,ae($=>$!==void 0&&$.length>0&&Te(Le(f).sizeTree)),Z($=>{const j=[];let A=$[0],E=0;for(let q=1;q<$.length;q++){const z=$[q];z!==A&&(j.push({endIndex:q-1,size:A,startIndex:E}),A=z,E=q)}return j.push({endIndex:$.length-1,size:A,startIndex:E}),j})),n),oe(B(l,he(m,p),ae(([,$,j])=>$!==void 0&&j!==void 0),Z(([$,j,A])=>{const E=[];for(let q=0;q<$.length;q++){const z=$[q],U=$[q+1];E.push({startIndex:z,endIndex:z,size:j}),U!==void 0&&E.push({startIndex:z+1,endIndex:U-1,size:A})}return E})),n);const S=Mt(B(n,he(f),Sn(({sizes:$},[j,A])=>({changed:A!==$,sizes:A}),{changed:!1,sizes:g}),Z($=>$.changed)));$e(B(a,Sn(($,j)=>({diff:$.prev-j,prev:j}),{diff:0,prev:0}),Z($=>$.diff)),$=>{const{groupIndices:j}=Le(f);if($>0)me(t,!0),me(i,$+Gh($,j));else if($<0){const A=Le(u);A.length>0&&($-=Gh(-$,A)),me(s,$)}}),$e(B(a,he(e)),([$,j])=>{$<0&&j("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:a},nt.ERROR)});const T=Mt(i);oe(B(i,he(f),Z(([$,j])=>{const A=j.groupIndices.length>0,E=[],q=j.lastSize;if(A){const z=gs(j.sizeTree,0);let U=0,L=0;for(;U<$;){const G=j.groupIndices[L],Y=j.groupIndices.length===L+1?1/0:j.groupIndices[L+1]-G-1;E.push({endIndex:G,size:z,startIndex:G}),E.push({endIndex:G+1+Y-1,size:q,startIndex:G+1}),L++,U+=Y+1}const F=Do(j.sizeTree);return U!==$&&F.shift(),F.reduce((G,{k:Y,v:D})=>{let J=G.ranges;return G.prevSize!==0&&(J=[...G.ranges,{endIndex:Y+$-1,size:G.prevSize,startIndex:G.prevIndex}]),{prevIndex:Y+$,prevSize:D,ranges:J}},{prevIndex:$,prevSize:0,ranges:E}).ranges}return Do(j.sizeTree).reduce((z,{k:U,v:L})=>({prevIndex:U+$,prevSize:L,ranges:[...z.ranges,{endIndex:U+$-1,size:z.prevSize,startIndex:z.prevIndex}]}),{prevIndex:0,prevSize:q,ranges:[]}).ranges})),n);const C=Mt(B(s,he(f,b),Z(([$,{offsetTree:j},A])=>{const E=-$;return bs(E,j,A)})));return oe(B(s,he(f,b),Z(([$,j,A])=>{if(j.groupIndices.length>0){if(Te(j.sizeTree))return j;let q=qr();const z=Le(u);let U=0,L=0,F=0;for(;U<-$;){F=z[L];const G=z[L+1]-F-1;L++,U+=G+1}if(q=Do(j.sizeTree).reduce((G,{k:Y,v:D})=>It(G,Math.max(0,Y+$),D),q),U!==-$){const G=gs(j.sizeTree,F);q=It(q,0,G);const Y=un(j.sizeTree,-$+1)[1];q=It(q,1,Y)}return{...j,sizeTree:q,...Jd(j.offsetTree,0,q,A)}}const E=Do(j.sizeTree).reduce((q,{k:z,v:U})=>It(q,Math.max(0,z+$),U),qr());return{...j,sizeTree:E,...Jd(j.offsetTree,0,E,A)}})),f),{beforeUnshiftWith:T,data:y,defaultItemSize:p,firstItemIndex:a,fixedItemSize:d,fixedGroupSize:m,gap:b,groupIndices:l,heightEstimates:v,itemSize:h,listRefresh:S,shiftWith:s,shiftWithOffset:C,sizeRanges:n,sizes:f,statefulTotalCount:r,totalCount:o,trackItemSizes:x,unshiftWith:i}},Ue(ko,ff),{singleton:!0});function xI(e){return e.reduce((t,n)=>(t.groupIndices.push(t.totalCount),t.totalCount+=n+1,t),{groupIndices:[],totalCount:0})}const yx=xe(([{groupIndices:e,sizes:t,totalCount:n},{headerHeight:o,scrollTop:r}])=>{const i=ve(),s=ve(),a=Mt(B(i,Z(xI)));return oe(B(a,Z(l=>l.totalCount)),n),oe(B(a,Z(l=>l.groupIndices)),e),oe(B(Qe(r,t,o),ae(([l,d])=>Bl(d)),Z(([l,d,p])=>un(d.groupOffsetTree,Math.max(l-p,0),"v")[0]),Me(),Z(l=>[l])),s),{groupCounts:i,topItemsIndexes:s}},Ue(Tn,kt)),To=xe(([{log:e}])=>{const t=W(!1),n=Mt(B(t,ae(o=>o),Me()));return $e(t,o=>{o&&Le(e)("props updated",{},nt.DEBUG)}),{didMount:n,propsReady:t}},Ue(ko),{singleton:!0}),wI=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function gx(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!wI)&&(t.behavior="auto"),t.offset===void 0&&(t.offset=0),t}const Ps=xe(([{gap:e,listRefresh:t,sizes:n,totalCount:o},{fixedFooterHeight:r,fixedHeaderHeight:i,footerHeight:s,headerHeight:a,scrollingInProgress:l,scrollTo:d,smoothScrollTargetReached:p,viewportHeight:m},{log:v}])=>{const h=ve(),y=ve(),b=W(0);let g=null,f=null,u=null;function x(){g!==null&&(g(),g=null),u!==null&&(u(),u=null),f&&(clearTimeout(f),f=null),me(l,!1)}return oe(B(h,he(n,m,o,b,a,s,v),he(e,i,r),Z(([[S,T,C,$,j,A,E,q],z,U,L])=>{const F=gx(S),{align:G,behavior:Y,offset:D}=F,J=$-1,O=hx(F,T,J);let _=bs(O,T.offsetTree,z)+A;G==="end"?(_+=U+un(T.sizeTree,O)[1]-C+L,O===J&&(_+=E)):G==="center"?_+=(U+un(T.sizeTree,O)[1]-C+L)/2:_-=j,D!==void 0&&D!==0&&(_+=D);const M=P=>{x(),P?(q("retrying to scroll to",{location:S},nt.DEBUG),me(h,S)):(me(y,!0),q("list did not change, scroll successful",{},nt.DEBUG))};if(x(),Y==="smooth"){let P=!1;u=$e(t,w=>{P=P||w}),g=cn(p,()=>{M(P)})}else g=cn(B(t,SI(150)),M);return f=setTimeout(()=>{x()},1200),me(l,!0),q("scrolling from index to",{behavior:Y,index:O,top:_},nt.DEBUG),{behavior:Y,top:_}})),d),{scrollTargetReached:y,scrollToIndex:h,topListHeight:b}},Ue(Tn,kt,ko),{singleton:!0});function SI(e){return t=>{const n=setTimeout(()=>{t(!1)},e);return o=>{o&&(t(!0),clearTimeout(n))}}}function hf(e,t){e===0?t():requestAnimationFrame(()=>{hf(e-1,t)})}function yf(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}const Is=xe(([{defaultItemSize:e,listRefresh:t,sizes:n},{scrollTop:o},{scrollTargetReached:r,scrollToIndex:i},{didMount:s}])=>{const a=W(!0),l=W(0),d=W(!0);return oe(B(s,he(l),ae(([p,m])=>m!==0),yn(!1)),a),oe(B(s,he(l),ae(([p,m])=>m!==0),yn(!1)),d),$e(B(Qe(t,s),he(a,n,e,d),ae(([[,p],m,{sizeTree:v},h,y])=>p&&(!Te(v)||df(h))&&!m&&!y),he(l)),([,p])=>{cn(r,()=>{me(d,!0)}),hf(4,()=>{cn(o,()=>{me(a,!0)}),me(i,p)})}),{initialItemFinalLocationReached:d,initialTopMostItemIndex:l,scrolledToInitialItem:a}},Ue(Tn,kt,Ps,To),{singleton:!0});function vx(e,t){return Math.abs(e-t)<1.01}const xs="up",Hi="down",$I="none",kI={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},TI=0,Os=xe(([{footerHeight:e,headerHeight:t,scrollBy:n,scrollContainerState:o,scrollTop:r,viewportHeight:i}])=>{const s=W(!1),a=W(!0),l=ve(),d=ve(),p=W(4),m=W(TI),v=yt(B(Hd(B(se(r),Qo(1),yn(!0)),B(se(r),Qo(1),yn(!1),Bh(100))),Me()),!1),h=yt(B(Hd(B(n,yn(!0)),B(n,yn(!1),Bh(200))),Me()),!1);oe(B(Qe(se(r),se(m)),Z(([u,x])=>u<=x),Me()),a),oe(B(a,On(50)),d);const y=Mt(B(Qe(o,se(i),se(t),se(e),se(p)),Sn((u,[{scrollHeight:x,scrollTop:S},T,C,$,j])=>{const A=S+T-x>-j,E={scrollHeight:x,scrollTop:S,viewportHeight:T};if(A){let z,U;return S>u.state.scrollTop?(z="SCROLLED_DOWN",U=u.state.scrollTop-S):(z="SIZE_DECREASED",U=u.state.scrollTop-S||u.scrollTopDelta),{atBottom:!0,atBottomBecause:z,scrollTopDelta:U,state:E}}let q;return E.scrollHeight>u.state.scrollHeight?q="SIZE_INCREASED":T<u.state.viewportHeight?q="VIEWPORT_HEIGHT_DECREASING":S<u.state.scrollTop?q="SCROLLING_UPWARDS":q="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:q,state:E}},kI),Me((u,x)=>u!==void 0&&u.atBottom===x.atBottom))),b=yt(B(o,Sn((u,{scrollHeight:x,scrollTop:S,viewportHeight:T})=>{if(!vx(u.scrollHeight,x)){const C=x-(S+T)<1;return u.scrollTop!==S&&C?{changed:!0,jump:u.scrollTop-S,scrollHeight:x,scrollTop:S}:{changed:!0,jump:0,scrollHeight:x,scrollTop:S}}return{changed:!1,jump:0,scrollHeight:x,scrollTop:S}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),ae(u=>u.changed),Z(u=>u.jump)),0);oe(B(y,Z(u=>u.atBottom)),s),oe(B(s,On(50)),l);const g=W(Hi);oe(B(o,Z(({scrollTop:u})=>u),Me(),Sn((u,x)=>Le(h)?{direction:u.direction,prevScrollTop:x}:{direction:x<u.prevScrollTop?xs:Hi,prevScrollTop:x},{direction:Hi,prevScrollTop:0}),Z(u=>u.direction)),g),oe(B(o,On(50),yn($I)),g);const f=W(0);return oe(B(v,ae(u=>!u),yn(0)),f),oe(B(r,On(100),he(v),ae(([u,x])=>x),Sn(([u,x],[S])=>[x,S],[0,0]),Z(([u,x])=>x-u)),f),{atBottomState:y,atBottomStateChange:l,atBottomThreshold:p,atTopStateChange:d,atTopThreshold:m,isAtBottom:s,isAtTop:a,isScrolling:v,lastJumpDueToItemResize:b,scrollDirection:g,scrollVelocity:f}},Ue(kt)),ws="top",Ss="bottom",Jh="none";function Qh(e,t,n){return typeof e=="number"?n===xs&&t===ws||n===Hi&&t===Ss?e:0:n===xs?t===ws?e.main:e.reverse:t===Ss?e.main:e.reverse}function Yh(e,t){return typeof e=="number"?e:e[t]??0}const gf=xe(([{deviation:e,fixedHeaderHeight:t,headerHeight:n,scrollTop:o,viewportHeight:r}])=>{const i=ve(),s=W(0),a=W(0),l=W(0),d=yt(B(Qe(se(o),se(r),se(n),se(i,vs),se(l),se(s),se(t),se(e),se(a)),Z(([p,m,v,[h,y],b,g,f,u,x])=>{const S=p-u,T=g+f,C=Math.max(v-S,0);let $=Jh;const j=Yh(x,ws),A=Yh(x,Ss);return h-=u,h+=v+f,y+=v+f,y-=u,h>p+T-j&&($=xs),y<p-C+m+A&&($=Hi),$!==Jh?[Math.max(S-v-Qh(b,ws,$)-j,0),S-C-f+m+Qh(b,Ss,$)+A]:null}),ae(p=>p!==null),Me(vs)),[0,0]);return{increaseViewportBy:a,listBoundary:i,overscan:l,topListHeight:s,visibleRange:d}},Ue(kt),{singleton:!0});function _I(e,t,n){if(Bl(t)){const o=mx(e,t);return[{index:un(t.groupOffsetTree,o)[0],offset:0,size:0},{data:n==null?void 0:n[0],index:o,offset:0,size:0}]}return[{data:n==null?void 0:n[0],index:e,offset:0,size:0}]}const jc={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Ca(e,t,n,o,r,i){const{lastIndex:s,lastOffset:a,lastSize:l}=r;let d=0,p=0;if(e.length>0){d=e[0].offset;const b=e[e.length-1];p=b.offset+b.size}const m=n-s,v=a+m*l+(m-1)*o,h=d,y=v-p;return{bottom:p,firstItemIndex:i,items:Xh(e,r,i),offsetBottom:y,offsetTop:d,top:h,topItems:Xh(t,r,i),topListHeight:t.reduce((b,g)=>g.size+b,0),totalCount:n}}function bx(e,t,n,o,r,i){let s=0;if(n.groupIndices.length>0)for(const p of n.groupIndices){if(p-s>=e)break;s++}const a=e+s,l=yf(t,a),d=Array.from({length:a}).map((p,m)=>({data:i[m+l],index:m+l,offset:0,size:0}));return Ca(d,[],a,r,n,o)}function Xh(e,t,n){if(e.length===0)return[];if(!Bl(t))return e.map(d=>({...d,index:d.index+n,originalIndex:d.index}));const o=e[0].index,r=e[e.length-1].index,i=[],s=Ur(t.groupOffsetTree,o,r);let a,l=0;for(const d of e){(!a||a.end<d.index)&&(a=s.shift(),l=t.groupIndices.indexOf(a.start));let p;d.index===a.start?p={index:l,type:"group"}:p={groupIndex:l,index:d.index-(l+1)+n},i.push({...p,data:d.data,offset:d.offset,originalIndex:d.index,size:d.size})}return i}function Zh(e,t){return e===void 0?0:typeof e=="number"?e:e[t]??0}const er=xe(([{data:e,firstItemIndex:t,gap:n,sizes:o,totalCount:r},i,{listBoundary:s,topListHeight:a,visibleRange:l},{initialTopMostItemIndex:d,scrolledToInitialItem:p},{topListHeight:m},v,{didMount:h},{recalcInProgress:y}])=>{const b=W([]),g=W(0),f=ve(),u=W(0);oe(i.topItemsIndexes,b);const x=yt(B(Qe(h,y,se(l,vs),se(r),se(o),se(d),p,se(b),se(t),se(n),se(u),e),ae(([$,j,,A,,,,,,,,E])=>{const q=E!==void 0&&E.length!==A;return $&&!j&&!q}),Z(([,,[$,j],A,E,q,z,U,L,F,G,Y])=>{var X,ie;const D=E,{offsetTree:J,sizeTree:O}=D,_=Le(g);if(A===0)return{...jc,totalCount:A};if($===0&&j===0)return _===0?{...jc,totalCount:A}:bx(_,q,E,L,F,Y||[]);if(Te(O))return _>0?null:Ca(_I(yf(q,A),D,Y),[],A,F,D,L);const M=[];if(U.length>0){const de=U[0],we=U[U.length-1];let ze=0;for(const Ee of Ur(O,de,we)){const Se=Ee.value,_e=Math.max(Ee.start,de),Ye=Math.min(Ee.end,we);for(let Pe=_e;Pe<=Ye;Pe++)M.push({data:Y==null?void 0:Y[Pe],index:Pe,offset:ze,size:Se}),ze+=Se}}if(!z)return Ca([],M,A,F,D,L);const P=U.length>0?U[U.length-1]+1:0,w=mI(J,$,j,P);if(w.length===0)return null;const k=A-1,N=Fl([],de=>{for(const we of w){const ze=we.value;let Ee=ze.offset,Se=we.start;const _e=ze.size;if(ze.offset<$){Se+=Math.floor(($-ze.offset+F)/(_e+F));const Pe=Se-we.start;Ee+=Pe*_e+Pe*F}Se<P&&(Ee+=(P-Se)*_e,Se=P);const Ye=Math.min(we.end,k);for(let Pe=Se;Pe<=Ye&&!(Ee>=j);Pe++)de.push({data:Y==null?void 0:Y[Pe],index:Pe,offset:Ee,size:_e}),Ee+=_e+F}}),H=Zh(G,ws),R=Zh(G,Ss);if(N.length>0&&(H>0||R>0)){const de=N[0],we=N[N.length-1];if(H>0&&de.index>P){const ze=Math.min(H,de.index-P),Ee=[];let Se=de.offset;for(let _e=de.index-1;_e>=de.index-ze;_e--){const Ye=((X=Ur(O,_e,_e)[0])==null?void 0:X.value)??de.size;Se-=Ye+F,Ee.unshift({data:Y==null?void 0:Y[_e],index:_e,offset:Se,size:Ye})}N.unshift(...Ee)}if(R>0&&we.index<k){const ze=Math.min(R,k-we.index);let Ee=we.offset+we.size+F;for(let Se=we.index+1;Se<=we.index+ze;Se++){const _e=((ie=Ur(O,Se,Se)[0])==null?void 0:ie.value)??we.size;N.push({data:Y==null?void 0:Y[Se],index:Se,offset:Ee,size:_e}),Ee+=_e+F}}}return Ca(N,M,A,F,D,L)}),ae($=>$!==null),Me()),jc);oe(B(e,ae(df),Z($=>$==null?void 0:$.length)),r),oe(B(x,Z($=>$.topListHeight)),m),oe(m,a),oe(B(x,Z($=>[$.top,$.bottom])),s),oe(B(x,Z($=>$.items)),f);const S=Mt(B(x,ae(({items:$})=>$.length>0),he(r,e),ae(([{items:$},j])=>$[$.length-1].originalIndex===j-1),Z(([,$,j])=>[$-1,j]),Me(vs),Z(([$])=>$))),T=Mt(B(x,On(200),ae(({items:$,topItems:j})=>$.length>0&&$[0].originalIndex===j.length),Z(({items:$})=>$[0].index),Me())),C=Mt(B(x,ae(({items:$})=>$.length>0),Z(({items:$})=>{let j=0,A=$.length-1;for(;$[j].type==="group"&&j<A;)j++;for(;$[A].type==="group"&&A>j;)A--;return{endIndex:$[A].index,startIndex:$[j].index}}),Me(px)));return{endReached:S,initialItemCount:g,itemsRendered:f,listState:x,minOverscanItemCount:u,rangeChanged:C,startReached:T,topItemsIndexes:b,...v}},Ue(Tn,yx,gf,Is,Ps,Os,To,ff),{singleton:!0}),xx=xe(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:n,headerHeight:o},{listState:r}])=>{const i=ve(),s=yt(B(Qe(n,e,o,t,r),Z(([a,l,d,p,m])=>a+l+d+p+m.offsetBottom+m.bottom)),0);return oe(se(s),i),{totalListHeight:s,totalListHeightChanged:i}},Ue(kt,er),{singleton:!0}),jI=xe(([{viewportHeight:e},{totalListHeight:t}])=>{const n=W(!1),o=yt(B(Qe(n,e,t),ae(([r])=>r),Z(([,r,i])=>Math.max(0,r-i)),On(0),Me()),0);return{alignToBottom:n,paddingTopAddition:o}},Ue(kt,xx),{singleton:!0}),wx=xe(()=>({context:W(null)})),NI=({itemBottom:e,itemTop:t,locationParams:{align:n,behavior:o,...r},viewportBottom:i,viewportTop:s})=>t<s?{...r,align:n??"start",...o!==void 0?{behavior:o}:{}}:e>i?{...r,align:n??"end",...o!==void 0?{behavior:o}:{}}:null,Sx=xe(([{gap:e,sizes:t,totalCount:n},{fixedFooterHeight:o,fixedHeaderHeight:r,headerHeight:i,scrollingInProgress:s,scrollTop:a,viewportHeight:l},{scrollToIndex:d}])=>{const p=ve();return oe(B(p,he(t,l,n,i,r,o,a),he(e),Z(([[m,v,h,y,b,g,f,u],x])=>{const{calculateViewLocation:S=NI,done:T,...C}=m,$=hx(m,v,y-1),j=bs($,v.offsetTree,x)+b+g,A=j+un(v.sizeTree,$)[1],E=u+g,q=u+h-f,z=S({itemBottom:A,itemTop:j,locationParams:C,viewportBottom:q,viewportTop:E});return z!==null?T&&cn(B(s,ae(U=>!U),Qo(Le(s)?1:2)),T):T==null||T(),z}),ae(m=>m!==null)),d),{scrollIntoView:p}},Ue(Tn,kt,Ps,er,ko),{singleton:!0});function ey(e){return e===!1?!1:e==="smooth"?"smooth":"auto"}const CI=(e,t)=>typeof e=="function"?ey(e(t)):t&&ey(e),EI=xe(([{listRefresh:e,totalCount:t,fixedItemSize:n,data:o},{atBottomState:r,isAtBottom:i},{scrollToIndex:s},{scrolledToInitialItem:a},{didMount:l,propsReady:d},{log:p},{scrollingInProgress:m},{context:v},{scrollIntoView:h}])=>{const y=W(!1),b=ve();let g=null;function f(T){me(s,{align:"end",behavior:T,index:"LAST"})}$e(B(Qe(B(se(t),Qo(1)),l),he(se(y),i,a,m),Z(([[T,C],$,j,A,E])=>{let q=C&&A,z="auto";return q&&(z=CI($,j||E),q=q&&z!==!1),{followOutputBehavior:z,shouldFollow:q,totalCount:T}}),ae(({shouldFollow:T})=>T)),({followOutputBehavior:T,totalCount:C})=>{g!==null&&(g(),g=null),Le(n)!==void 0?requestAnimationFrame(()=>{Le(p)("following output to ",{totalCount:C},nt.DEBUG),f(T)}):g=cn(e,()=>{Le(p)("following output to ",{totalCount:C},nt.DEBUG),f(T),g=null})});function u(T){const C=cn(r,$=>{T&&!$.atBottom&&$.notAtBottomBecause==="SIZE_INCREASED"&&g===null&&(Le(p)("scrolling to bottom due to increased size",{},nt.DEBUG),f("auto"))});setTimeout(C,100)}$e(B(Qe(se(y),t,d),ae(([T,,C])=>T!==!1&&C),Sn(({value:T},[,C])=>({refreshed:T===C,value:C}),{refreshed:!1,value:0}),ae(({refreshed:T})=>T),he(y,t)),([,T])=>{Le(a)&&u(T!==!1)}),$e(b,()=>{u(Le(y)!==!1)}),$e(Qe(se(y),r),([T,C])=>{T!==!1&&!C.atBottom&&C.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&f("auto")});const x=W(null),S=ve();return oe(Hd(B(se(o),Z(T=>(T==null?void 0:T.length)??0)),B(se(t))),S),$e(B(Qe(B(S,Qo(1)),l),he(se(x),a,m,v),Z(([[T,C],$,j,A,E])=>C&&j&&($==null?void 0:$({context:E,totalCount:T,scrollingInProgress:A}))),ae(T=>!!T),On(0)),T=>{g!==null&&(g(),g=null),Le(n)!==void 0?requestAnimationFrame(()=>{Le(p)("scrolling into view",{}),me(h,T)}):g=cn(e,()=>{Le(p)("scrolling into view",{}),me(h,T),g=null})}),{autoscrollToBottom:b,followOutput:y,scrollIntoViewOnChange:x}},Ue(Tn,Os,Ps,Is,To,ko,kt,wx,Sx)),PI=xe(([{data:e,firstItemIndex:t,gap:n,sizes:o},{initialTopMostItemIndex:r},{initialItemCount:i,listState:s},{didMount:a}])=>(oe(B(a,he(i),ae(([,l])=>l!==0),he(r,o,t,n,e),Z(([[,l],d,p,m,v,h=[]])=>bx(l,d,p,m,v,h))),s),{}),Ue(Tn,Is,er,To),{singleton:!0}),II=xe(([{didMount:e},{scrollTo:t},{listState:n}])=>{const o=W(0);return $e(B(e,he(o),ae(([,r])=>r!==0),Z(([,r])=>({top:r}))),r=>{cn(B(n,Qo(1),ae(i=>i.items.length>1)),()=>{requestAnimationFrame(()=>{me(t,r)})})}),{initialScrollTop:o}},Ue(To,kt,er),{singleton:!0}),$x=xe(([{scrollVelocity:e}])=>{const t=W(!1),n=ve(),o=W(!1);return oe(B(e,he(o,t,n),ae(([r,i])=>i!==!1&&i!==void 0),Z(([r,i,s,a])=>{const{enter:l,exit:d}=i;if(s){if(d(r,a))return!1}else if(l(r,a))return!0;return s}),Me()),t),$e(B(Qe(t,e,n),he(o)),([[r,i,s],a])=>{r&&a!==!1&&a!==void 0&&a.change&&a.change(i,s)}),{isSeeking:t,scrollSeekConfiguration:o,scrollSeekRangeChanged:n,scrollVelocity:e}},Ue(Os),{singleton:!0}),vf=xe(([{scrollContainerState:e,scrollTo:t}])=>{const n=ve(),o=ve(),r=ve(),i=W(!1),s=W(void 0);return oe(B(Qe(n,o),Z(([{scrollTop:a,viewportHeight:l},{offsetTop:d,listHeight:p}])=>({scrollHeight:p,scrollTop:Math.max(0,a-d),viewportHeight:l}))),e),oe(B(t,he(o),Z(([a,{offsetTop:l}])=>({...a,top:a.top+l}))),r),{customScrollParent:s,useWindowScroll:i,windowScrollContainerState:n,windowScrollTo:r,windowViewportRect:o}},Ue(kt)),OI=xe(([{sizeRanges:e,sizes:t},{headerHeight:n,scrollTop:o},{initialTopMostItemIndex:r},{didMount:i},{useWindowScroll:s,windowScrollContainerState:a,windowViewportRect:l}])=>{const d=ve(),p=W(void 0),m=W(null),v=W(null);return oe(a,m),oe(l,v),$e(B(d,he(t,o,s,m,v,n)),([h,y,b,g,f,u,x])=>{const S=yI(y.sizeTree);g&&f!==null&&u!==null&&(b=f.scrollTop-u.offsetTop),b-=x,h({ranges:S,scrollTop:b})}),oe(B(p,ae(df),Z(RI)),r),oe(B(i,he(p),ae(([,h])=>h!==void 0),Me(),Z(([,h])=>h.ranges)),e),{getState:d,restoreStateFrom:p}},Ue(Tn,kt,Is,To,vf));function RI(e){return{align:"start",index:0,offset:e.scrollTop}}const AI=xe(([{topItemsIndexes:e}])=>{const t=W(0);return oe(B(t,ae(n=>n>=0),Z(n=>Array.from({length:n}).map((o,r)=>r))),e),{topItemCount:t}},Ue(er));function kx(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const MI=kx(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),qI=xe(([{deviation:e,scrollBy:t,scrollingInProgress:n,scrollTop:o},{isAtBottom:r,isScrolling:i,lastJumpDueToItemResize:s,scrollDirection:a},{listState:l},{beforeUnshiftWith:d,gap:p,shiftWithOffset:m,sizes:v},{log:h},{recalcInProgress:y}])=>{const b=Mt(B(l,he(s),Sn(([,f,u,x],[{bottom:S,items:T,offsetBottom:C,totalCount:$},j])=>{const A=S+C;let E=0;return u===$&&f.length>0&&T.length>0&&(T[0].originalIndex===0&&f[0].originalIndex===0||(E=A-x,E!==0&&(E+=j))),[E,T,$,A]},[0,[],0,0]),ae(([f])=>f!==0),he(o,a,n,r,h,y),ae(([,f,u,x,,,S])=>!S&&!x&&f!==0&&u===xs),Z(([[f],,,,,u])=>(u("Upward scrolling compensation",{amount:f},nt.DEBUG),f))));function g(f){f>0?(me(t,{behavior:"auto",top:-f}),me(e,0)):(me(e,0),me(t,{behavior:"auto",top:-f}))}return $e(B(b,he(e,i)),([f,u,x])=>{x&&MI()?me(e,u-f):g(-f)}),$e(B(Qe(yt(i,!1),e,y),ae(([f,u,x])=>!f&&!x&&u!==0),Z(([f,u])=>u),On(1)),g),oe(B(m,Z(f=>({top:-f}))),t),$e(B(d,he(v,p),Z(([f,{groupIndices:u,lastSize:x,sizeTree:S},T])=>{function C(q){return q*(x+T)}if(u.length===0)return C(f);let $=0;const j=gs(S,0);let A=0,E=0;for(;A<f;){A++,$+=j;let q=u.length===E+1?1/0:u[E+1]-u[E]-1;A+q>f&&($-=j,q=f-A+1),A+=q,$+=C(q),E++}return $})),f=>{me(e,f),requestAnimationFrame(()=>{me(t,{top:f}),requestAnimationFrame(()=>{me(e,0),me(y,!1)})})}),{deviation:e}},Ue(kt,Os,er,Tn,ko,ff)),UI=xe(([e,t,n,o,r,i,s,a,l,d,p])=>({...e,...t,...n,...o,...r,...i,...s,...a,...l,...d,...p}),Ue(gf,PI,To,$x,xx,II,jI,vf,Sx,ko,wx)),Tx=xe(([{data:e,defaultItemSize:t,firstItemIndex:n,fixedItemSize:o,fixedGroupSize:r,gap:i,groupIndices:s,heightEstimates:a,itemSize:l,sizeRanges:d,sizes:p,statefulTotalCount:m,totalCount:v,trackItemSizes:h},{initialItemFinalLocationReached:y,initialTopMostItemIndex:b,scrolledToInitialItem:g},f,u,x,S,{scrollToIndex:T},C,{topItemCount:$},{groupCounts:j},A])=>{const{listState:E,minOverscanItemCount:q,topItemsIndexes:z,rangeChanged:U,...L}=S;return oe(U,A.scrollSeekRangeChanged),oe(B(A.windowViewportRect,Z(F=>F.visibleHeight)),f.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:n,fixedItemHeight:o,fixedGroupHeight:r,gap:i,groupCounts:j,heightEstimates:a,initialItemFinalLocationReached:y,initialTopMostItemIndex:b,scrolledToInitialItem:g,sizeRanges:d,topItemCount:$,topItemsIndexes:z,totalCount:v,...x,groupIndices:s,itemSize:l,listState:E,minOverscanItemCount:q,scrollToIndex:T,statefulTotalCount:m,trackItemSizes:h,rangeChanged:U,...L,...A,...f,sizes:p,...u}},Ue(Tn,Is,kt,OI,EI,er,Ps,qI,AI,yx,UI));function LI(e,t){const n={},o={};let r=0;const i=e.length;for(;r<i;)o[e[r]]=1,r+=1;for(const s in t)Object.hasOwn(o,s)||(n[s]=t[s]);return n}const ra=typeof document<"u"?te.useLayoutEffect:te.useEffect;function _x(e,t,n){const o=Object.keys(t.required||{}),r=Object.keys(t.optional||{}),i=Object.keys(t.methods||{}),s=Object.keys(t.events||{}),a=te.createContext({});function l(g,f){g.propsReady!==void 0&&me(g.propsReady,!1);for(const u of o){const x=g[t.required[u]];me(x,f[u])}for(const u of r)if(u in f){const x=g[t.optional[u]];me(x,f[u])}g.propsReady!==void 0&&me(g.propsReady,!0)}function d(g){return i.reduce((f,u)=>(f[u]=x=>{const S=g[t.methods[u]];me(S,x)},f),{})}function p(g){return s.reduce((f,u)=>(f[u]=eI(g[t.events[u]]),f),{})}const m=te.forwardRef(function(g,f){const{children:u,...x}=g,[S]=te.useState(()=>Fl(nI(e),$=>{l($,x)})),[T]=te.useState(Fh(p,S));ra(()=>{for(const $ of s)$ in x&&$e(T[$],x[$]);return()=>{Object.values(T).map(uf)}},[x,T,S]),ra(()=>{l(S,x)}),te.useImperativeHandle(f,zh(d(S)));const C=n;return c.jsx(a.Provider,{value:S,children:n!==void 0?c.jsx(C,{...LI([...o,...r,...s],x),children:u}):u})}),v=g=>{const f=te.useContext(a);return te.useCallback(u=>{me(f[g],u)},[f,g])},h=g=>{const f=te.useContext(a)[g],u=te.useCallback(x=>$e(f,x),[f]);return te.useSyncExternalStore(u,()=>Le(f),()=>Le(f))},y=g=>{const f=te.useContext(a)[g],[u,x]=te.useState(Fh(Le,f));return ra(()=>$e(f,S=>{S!==u&&x(zh(S))}),[f,u]),u},b=parseInt(te.version)>=18?h:y;return{Component:m,useEmitter:(g,f)=>{const u=te.useContext(a)[g];ra(()=>$e(u,f),[f,u])},useEmitterValue:b,usePublisher:v}}const jx=te.createContext(void 0),Nx=te.createContext(void 0),Nc="-webkit-sticky",ty="sticky",bf=kx(()=>{if(typeof document>"u")return ty;const e=document.createElement("div");return e.style.position=Nc,e.style.position===Nc?Nc:ty}),Cx=typeof document<"u"?te.useLayoutEffect:te.useEffect;function Cc(e){return"self"in e}function DI(e){return"body"in e}function Ex(e,t,n,o=ii,r,i){const s=te.useRef(null),a=te.useRef(null),l=te.useRef(null),d=te.useCallback(v=>{let h,y,b;const g=v.target;if(DI(g)||Cc(g)){const u=Cc(g)?g:g.defaultView;b=i===!0?Lo(u,u.scrollX):u.scrollY,h=i===!0?u.document.documentElement.scrollWidth:u.document.documentElement.scrollHeight,y=i===!0?u.innerWidth:u.innerHeight}else b=i===!0?Lo(g,g.scrollLeft):g.scrollTop,h=i===!0?g.scrollWidth:g.scrollHeight,y=i===!0?g.offsetWidth:g.offsetHeight;const f=()=>{e({scrollHeight:h,scrollTop:Math.max(b,0),viewportHeight:y})};v.suppressFlushSync===!0?f():dS.flushSync(f),a.current!==null&&(b===a.current||b<=0||b===h-y)&&(a.current=null,t(!0),l.current&&(clearTimeout(l.current),l.current=null))},[e,t,i]);te.useEffect(()=>{const v=r||s.current;return Hh(v),o(r||s.current),d({suppressFlushSync:!0,target:v}),v.addEventListener("scroll",d,{passive:!0}),()=>{Hh(v),o(null),v.removeEventListener("scroll",d)}},[s,d,n,o,r]);function p(v){const h=s.current;if(!h||(i===!0?"offsetWidth"in h&&h.offsetWidth===0:"offsetHeight"in h&&h.offsetHeight===0))return;const y=v.behavior==="smooth";let b,g,f;Cc(h)?(g=Math.max(bo(h.document.documentElement,i===!0?"width":"height"),i===!0?h.document.documentElement.scrollWidth:h.document.documentElement.scrollHeight),b=i===!0?h.innerWidth:h.innerHeight,f=i===!0?Lo(h,h.scrollX):h.scrollY):(g=h[i===!0?"scrollWidth":"scrollHeight"],b=bo(h,i===!0?"width":"height"),f=i===!0?Lo(h,h.scrollLeft):h.scrollTop);const u=g-b;if(v.top===void 0){h.scrollTo(v);return}const x=Math.ceil(Math.max(Math.min(u,v.top),0));if(v.top=x,vx(b,g)||x===f){e({scrollHeight:g,scrollTop:f,viewportHeight:b}),y&&t(!0);return}y?(a.current=x,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,a.current=null,t(!0)},1e3)):a.current=null,i===!0&&(v={...v.behavior!==void 0?{behavior:v.behavior}:{},left:Vh(h,x)}),h.scrollTo(v)}function m(v){i===!0&&(v={...v.behavior!==void 0?{behavior:v.behavior}:{},...v.top!==void 0?{left:Vh(s.current,v.top)}:{}}),s.current.scrollBy(v)}return{scrollByCallback:m,scrollerRef:s,scrollToCallback:p}}function xf(e){return e}const zI=xe(()=>{const e=W(a=>`Item ${a}`),t=W(a=>`Group ${a}`),n=W({}),o=W(xf),r=W("div"),i=W(ii),s=(a,l=null)=>yt(B(n,Z(d=>d[a]),Me()),l);return{components:n,computeItemKey:o,EmptyPlaceholder:s("EmptyPlaceholder"),FooterComponent:s("Footer"),GroupComponent:s("Group","div"),groupContent:t,HeaderComponent:s("Header"),HeaderFooterTag:r,ItemComponent:s("Item","div"),itemContent:e,ListComponent:s("List","div"),ScrollerComponent:s("Scroller","div"),scrollerRef:i,ScrollSeekPlaceholder:s("ScrollSeekPlaceholder"),TopItemListComponent:s("TopItemList")}}),FI=xe(([e,t])=>({...e,...t}),Ue(Tx,zI)),BI=({height:e})=>c.jsx("div",{style:{height:e}}),HI={overflowAnchor:"none",position:bf(),zIndex:1},Px={overflowAnchor:"none"},VI={...Px,display:"inline-block",height:"100%"},ny=te.memo(function({showTopList:e=!1}){const t=ce("listState"),n=Wt("sizeRanges"),o=ce("useWindowScroll"),r=ce("customScrollParent"),i=Wt("windowScrollContainerState"),s=Wt("scrollContainerState"),a=r||o?i:s,l=ce("itemContent"),d=ce("context"),p=ce("groupContent"),m=ce("trackItemSizes"),v=ce("itemSize"),h=ce("log"),y=Wt("gap"),b=ce("horizontalDirection"),{callbackRef:g}=sI(n,v,m,e?ii:a,h,y,r,b,ce("skipAnimationFrameInResizeObserver")),[f,u]=te.useState(0);Sf("deviation",L=>{f!==L&&u(L)});const x=ce("EmptyPlaceholder"),S=ce("ScrollSeekPlaceholder")??BI,T=ce("ListComponent"),C=ce("ItemComponent"),$=ce("GroupComponent"),j=ce("computeItemKey"),A=ce("isSeeking"),E=ce("groupIndices").length>0,q=ce("alignToBottom"),z=ce("initialItemFinalLocationReached"),U=e?{}:{boxSizing:"border-box",...b?{display:"inline-block",height:"100%",marginInlineStart:f!==0?f:q?"auto":0,paddingInlineEnd:t.offsetBottom,paddingInlineStart:t.offsetTop,whiteSpace:"nowrap"}:{marginTop:f!==0?f:q?"auto":0,paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},...z?{}:{visibility:"hidden"}};return!e&&t.totalCount===0&&x!==null&&x!==void 0?c.jsx(x,{...ht(x,d)}):c.jsx(T,{...ht(T,d),"data-testid":e?"virtuoso-top-item-list":"virtuoso-item-list",ref:g,style:U,children:(e?t.topItems:t.items).map(L=>{const F=L.originalIndex,G=j(F+t.firstItemIndex,L.data,d);return A?I.createElement(S,{...ht(S,d),height:L.size,index:L.index,key:G,type:L.type||"item",...L.type==="group"?{}:{groupIndex:L.groupIndex}}):L.type==="group"?I.createElement($,{...ht($,d),"data-index":F,"data-item-index":L.index,"data-known-size":L.size,key:G,style:HI},p(L.index,d)):I.createElement(C,{...ht(C,d),...JI(C,L.data),"data-index":F,"data-item-group-index":L.groupIndex,"data-item-index":L.index,"data-known-size":L.size,key:G,style:b?VI:Px},E?l(L.index,L.groupIndex,L.data,d):l(L.index,L.data,d))})})}),WI={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},KI={outline:"none",overflowX:"auto",position:"relative"},wf=e=>({height:"100%",position:"absolute",top:0,width:"100%",...e?{display:"flex",flexDirection:"column"}:void 0}),Ix=(e,t,n=0)=>({...wf(e),position:t?"relative":"absolute",top:t?-n:0}),GI={position:bf(),top:0,width:"100%",zIndex:1};function ht(e,t){if(typeof e!="string")return{context:t}}function JI(e,t){return{item:typeof e=="string"?void 0:t}}const QI=te.memo(function(){const e=ce("HeaderComponent"),t=Wt("headerHeight"),n=ce("HeaderFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),r=ce("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null}),YI=te.memo(function(){const e=ce("FooterComponent"),t=Wt("footerHeight"),n=ce("HeaderFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),r=ce("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null});function Ox({useEmitter:e,useEmitterValue:t,usePublisher:n}){return te.memo(function({children:o,style:r,context:i,...s}){const a=n("scrollContainerState"),l=t("ScrollerComponent"),d=n("smoothScrollTargetReached"),p=t("scrollerRef"),m=t("horizontalDirection")||!1,{scrollByCallback:v,scrollerRef:h,scrollToCallback:y}=Ex(a,d,l,p,void 0,m);return e("scrollTo",y),e("scrollBy",v),c.jsx(l,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:h,style:{...m?KI:WI,...r},tabIndex:0,...s,...ht(l,i),children:o})})}function Rx({useEmitter:e,useEmitterValue:t,usePublisher:n}){return te.memo(function({children:o,style:r,context:i,...s}){const a=n("windowScrollContainerState"),l=t("ScrollerComponent"),d=n("smoothScrollTargetReached"),p=t("totalListHeight"),m=t("deviation"),v=t("customScrollParent"),h=te.useRef(null),y=t("scrollerRef"),{scrollByCallback:b,scrollerRef:g,scrollToCallback:f}=Ex(a,d,l,y,v);return Cx(()=>{var u;return g.current=v||((u=h.current)==null?void 0:u.ownerDocument.defaultView),()=>{g.current=null}},[g,v]),e("windowScrollTo",f),e("scrollBy",b),c.jsx(l,{ref:h,"data-virtuoso-scroller":!0,style:{position:"relative",...r,...p!==0?{height:p+m}:void 0},...s,...ht(l,i),children:o})})}const XI=({children:e})=>{const t=te.useContext(jx),n=Wt("viewportHeight"),o=Wt("fixedItemHeight"),r=ce("alignToBottom"),i=ce("horizontalDirection"),s=te.useMemo(()=>nx(n,l=>bo(l,i?"width":"height")),[n,i]),a=Zo(s,!0,ce("skipAnimationFrameInResizeObserver"));return te.useEffect(()=>{t&&(n(t.viewportHeight),o(t.itemHeight))},[t,n,o]),c.jsx("div",{"data-viewport-type":"element",ref:a,style:wf(r),children:e})},ZI=({children:e})=>{const t=te.useContext(jx),n=Wt("windowViewportRect"),o=Wt("fixedItemHeight"),r=ce("customScrollParent"),i=ce("useWindowScroll"),s=ce("topListHeight"),a=sx(n,r,ce("skipAnimationFrameInResizeObserver")),l=ce("alignToBottom");return te.useEffect(()=>{t&&(o(t.itemHeight),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,o]),c.jsx("div",{"data-viewport-type":"window",ref:a,style:Ix(l,i,s),children:e})},eO=({children:e})=>{const t=ce("TopItemListComponent")??"div",n=ce("headerHeight"),o={...GI,marginTop:`${n}px`},r=ce("context");return c.jsx(t,{style:o,...ht(t,r),children:e})},tO=te.memo(function(e){const t=ce("useWindowScroll"),n=ce("topItemsIndexes").length>0,o=ce("customScrollParent"),r=ce("context");return c.jsxs(o||t?rO:oO,{...e,context:r,children:[n&&c.jsx(eO,{children:c.jsx(ny,{showTopList:!0})}),c.jsxs(o||t?ZI:XI,{children:[c.jsx(QI,{}),c.jsx(ny,{}),c.jsx(YI,{})]})]})}),{Component:nO,useEmitter:Sf,useEmitterValue:ce,usePublisher:Wt}=_x(FI,{optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},tO),oO=Ox({useEmitter:Sf,useEmitterValue:ce,usePublisher:Wt}),rO=Rx({useEmitter:Sf,useEmitterValue:ce,usePublisher:Wt}),iO=nO,sO=xe(()=>{const e=W(d=>c.jsxs("td",{children:["Item $",d]})),t=W(null),n=W(d=>c.jsxs("td",{colSpan:1e3,children:["Group ",d]})),o=W(null),r=W(null),i=W({}),s=W(xf),a=W(ii),l=(d,p=null)=>yt(B(i,Z(m=>m[d]),Me()),p);return{components:i,computeItemKey:s,context:t,EmptyPlaceholder:l("EmptyPlaceholder"),FillerRow:l("FillerRow"),fixedFooterContent:r,fixedHeaderContent:o,itemContent:e,groupContent:n,ScrollerComponent:l("Scroller","div"),scrollerRef:a,ScrollSeekPlaceholder:l("ScrollSeekPlaceholder"),TableBodyComponent:l("TableBody","tbody"),TableComponent:l("Table","table"),TableFooterComponent:l("TableFoot","tfoot"),TableHeadComponent:l("TableHead","thead"),TableRowComponent:l("TableRow","tr"),GroupComponent:l("Group","tr")}});Ue(Tx,sO);bf();const oy={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},aO={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:ry,floor:pl,max:Vi,min:Ec,round:iy}=Math;function sy(e,t,n){return Array.from({length:t-e+1}).map((o,r)=>({data:n===null?null:n[r+e],index:r+e}))}function lO(e){return{...aO,items:e}}function ia(e,t){return e!==void 0&&e.width===t.width&&e.height===t.height}function cO(e,t){return e!==void 0&&e.column===t.column&&e.row===t.row}const dO=xe(([{increaseViewportBy:e,listBoundary:t,overscan:n,visibleRange:o},{footerHeight:r,headerHeight:i,scrollBy:s,scrollContainerState:a,scrollTo:l,scrollTop:d,smoothScrollTargetReached:p,viewportHeight:m},v,h,{didMount:y,propsReady:b},{customScrollParent:g,useWindowScroll:f,windowScrollContainerState:u,windowScrollTo:x,windowViewportRect:S},T])=>{const C=W(0),$=W(0),j=W(oy),A=W({height:0,width:0}),E=W({height:0,width:0}),q=ve(),z=ve(),U=W(0),L=W(null),F=W({column:0,row:0}),G=ve(),Y=ve(),D=W(!1),J=W(0),O=W(!0),_=W(!1),M=W(!1);$e(B(y,he(J),ae(([R,X])=>X!==0)),()=>{me(O,!1)}),$e(B(Qe(y,O,E,A,J,_),ae(([R,X,ie,de,,we])=>R&&!X&&ie.height!==0&&de.height!==0&&!we)),([,,,,R])=>{me(_,!0),hf(1,()=>{me(q,R)}),cn(B(d),()=>{me(t,[0,0]),me(O,!0)})}),oe(B(Y,ae(R=>R!=null&&R.scrollTop>0),yn(0)),$),$e(B(y,he(Y),ae(([,R])=>R!=null)),([,R])=>{R&&(me(A,R.viewport),me(E,R.item),me(F,R.gap),R.scrollTop>0&&(me(D,!0),cn(B(d,Qo(1)),X=>{me(D,!1)}),me(l,{top:R.scrollTop})))}),oe(B(A,Z(({height:R})=>R)),m),oe(B(Qe(se(A,ia),se(E,ia),se(F,(R,X)=>R!==void 0&&R.column===X.column&&R.row===X.row),se(d)),Z(([R,X,ie,de])=>({gap:ie,item:X,scrollTop:de,viewport:R}))),G),oe(B(Qe(se(C),o,se(F,cO),se(E,ia),se(A,ia),se(L),se($),se(D),se(O),se(J)),ae(([,,,,,,,R])=>!R),Z(([R,[X,ie],de,we,ze,Ee,Se,,_e,Ye])=>{const{column:Pe,row:_n}=de,{height:Bn,width:_o}=we,{width:tr}=ze;if(Se===0&&(R===0||tr===0))return oy;if(_o===0){const $f=yf(Ye,R),Ux=$f+Math.max(Se-1,0);return lO(sy($f,Ux,Ee))}const Hn=Ax(tr,_o,Pe);let pn,Yt;_e?X===0&&ie===0&&Se>0?(pn=0,Yt=Se-1):(pn=Hn*pl((X+_n)/(Bn+_n)),Yt=Hn*ry((ie+_n)/(Bn+_n))-1,Yt=Ec(R-1,Vi(Yt,Hn-1)),pn=Ec(Yt,Vi(0,pn))):(pn=0,Yt=-1);const Vn=sy(pn,Yt,Ee),{bottom:nr,top:si}=ay(ze,de,we,Vn),ai=ry(R/Hn),Hl=ai*Bn+(ai-1)*_n-nr;return{bottom:nr,itemHeight:Bn,items:Vn,itemWidth:_o,offsetBottom:Hl,offsetTop:si,top:si}})),j),oe(B(L,ae(R=>R!==null),Z(R=>R.length)),C),oe(B(Qe(A,E,j,F),ae(([R,X,{items:ie}])=>ie.length>0&&X.height!==0&&R.height!==0),Z(([R,X,{items:ie},de])=>{const{bottom:we,top:ze}=ay(R,de,X,ie);return[ze,we]}),Me(vs)),t);const P=W(!1);oe(B(d,he(P),Z(([R,X])=>X||R!==0)),P);const w=Mt(B(Qe(j,C),ae(([{items:R}])=>R.length>0),he(P),ae(([[R,X],ie])=>{const de=R.items[R.items.length-1].index===X-1;return(ie||R.bottom>0&&R.itemHeight>0&&R.offsetBottom===0&&R.items.length===X)&&de}),Z(([[,R]])=>R-1),Me())),k=Mt(B(se(j),ae(({items:R})=>R.length>0&&R[0].index===0),yn(0),Me())),N=Mt(B(se(j),he(D),ae(([{items:R},X])=>R.length>0&&!X),Z(([{items:R}])=>({endIndex:R[R.length-1].index,startIndex:R[0].index})),Me(px),On(0)));oe(N,h.scrollSeekRangeChanged),oe(B(q,he(A,E,C,F),Z(([R,X,ie,de,we])=>{const ze=gx(R),{align:Ee,behavior:Se,offset:_e}=ze;let Ye=ze.index;Ye==="LAST"&&(Ye=de-1),Ye=Vi(0,Ye,Ec(de-1,Ye));let Pe=Qd(X,we,ie,Ye);return Ee==="end"?Pe=iy(Pe-X.height+ie.height):Ee==="center"&&(Pe=iy(Pe-X.height/2+ie.height/2)),_e!==void 0&&_e!==0&&(Pe+=_e),{behavior:Se,top:Pe}})),l);const H=yt(B(j,Z(R=>R.offsetBottom+R.bottom)),0);return oe(B(S,Z(R=>({height:R.visibleHeight,width:R.visibleWidth}))),A),{customScrollParent:g,data:L,deviation:U,footerHeight:r,gap:F,headerHeight:i,increaseViewportBy:e,initialItemCount:$,itemDimensions:E,overscan:n,restoreStateFrom:Y,scrollBy:s,scrollContainerState:a,scrollHeight:z,scrollTo:l,scrollToIndex:q,scrollTop:d,smoothScrollTargetReached:p,totalCount:C,useWindowScroll:f,viewportDimensions:A,windowScrollContainerState:u,windowScrollTo:x,windowViewportRect:S,...h,gridState:j,horizontalDirection:M,initialTopMostItemIndex:J,totalListHeight:H,...v,endReached:w,propsReady:b,rangeChanged:N,startReached:k,stateChanged:G,stateRestoreInProgress:D,...T}},Ue(gf,kt,Os,$x,To,vf,ko));function Ax(e,t,n){return Vi(1,pl((e+n)/(pl(t)+n)))}function ay(e,t,n,o){const{height:r}=n;if(r===void 0||o.length===0)return{bottom:0,top:0};const i=Qd(e,t,n,o[0].index);return{bottom:Qd(e,t,n,o[o.length-1].index)+r,top:i}}function Qd(e,t,n,o){const r=Ax(e.width,n.width,t.column),i=pl(o/r),s=i*n.height+Vi(0,i-1)*t.row;return s>0?s+t.row:s}const uO=xe(()=>{const e=W(m=>`Item ${m}`),t=W({}),n=W(null),o=W("virtuoso-grid-item"),r=W("virtuoso-grid-list"),i=W(xf),s=W("div"),a=W(ii),l=(m,v=null)=>yt(B(t,Z(h=>h[m]),Me()),v),d=W(!1),p=W(!1);return oe(se(p),d),{components:t,computeItemKey:i,context:n,FooterComponent:l("Footer"),HeaderComponent:l("Header"),headerFooterTag:s,itemClassName:o,ItemComponent:l("Item","div"),itemContent:e,listClassName:r,ListComponent:l("List","div"),readyStateChanged:d,reportReadyState:p,ScrollerComponent:l("Scroller","div"),scrollerRef:a,ScrollSeekPlaceholder:l("ScrollSeekPlaceholder","div")}}),pO=xe(([e,t])=>({...e,...t}),Ue(dO,uO)),fO=te.memo(function(){const e=Re("gridState"),t=Re("listClassName"),n=Re("itemClassName"),o=Re("itemContent"),r=Re("computeItemKey"),i=Re("isSeeking"),s=Kt("scrollHeight"),a=Re("ItemComponent"),l=Re("ListComponent"),d=Re("ScrollSeekPlaceholder"),p=Re("context"),m=Kt("itemDimensions"),v=Kt("gap"),h=Re("log"),y=Re("stateRestoreInProgress"),b=Kt("reportReadyState"),g=Zo(te.useMemo(()=>f=>{const u=f.parentElement.parentElement.scrollHeight;s(u);const x=f.firstChild;if(x!==null){const{height:S,width:T}=x.getBoundingClientRect();m({height:S,width:T})}v({column:ly("column-gap",getComputedStyle(f).columnGap,h),row:ly("row-gap",getComputedStyle(f).rowGap,h)})},[s,m,v,h]),!0,!1);return Cx(()=>{e.itemHeight>0&&e.itemWidth>0&&b(!0)},[e]),y?null:c.jsx(l,{className:t,ref:g,...ht(l,p),"data-testid":"virtuoso-item-list",style:{paddingBottom:e.offsetBottom,paddingTop:e.offsetTop},children:e.items.map(f=>{const u=r(f.index,f.data,p);return i?c.jsx(d,{...ht(d,p),height:e.itemHeight,index:f.index,width:e.itemWidth},u):I.createElement(a,{...ht(a,p),className:n,"data-index":f.index,key:u},o(f.index,f.data,p))})})}),mO=te.memo(function(){const e=Re("HeaderComponent"),t=Kt("headerHeight"),n=Re("headerFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,!1),r=Re("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null}),hO=te.memo(function(){const e=Re("FooterComponent"),t=Kt("footerHeight"),n=Re("headerFooterTag"),o=Zo(te.useMemo(()=>i=>{t(bo(i,"height"))},[t]),!0,!1),r=Re("context");return e!=null?c.jsx(n,{ref:o,children:c.jsx(e,{...ht(e,r)})}):null}),yO=({children:e})=>{const t=te.useContext(Nx),n=Kt("itemDimensions"),o=Kt("viewportDimensions"),r=Zo(te.useMemo(()=>i=>{o(i.getBoundingClientRect())},[o]),!0,!1);return te.useEffect(()=>{t&&(o({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,o,n]),c.jsx("div",{ref:r,style:wf(!1),children:e})},gO=({children:e})=>{const t=te.useContext(Nx),n=Kt("windowViewportRect"),o=Kt("itemDimensions"),r=Re("customScrollParent"),i=Re("useWindowScroll"),s=sx(n,r,!1);return te.useEffect(()=>{t&&(o({height:t.itemHeight,width:t.itemWidth}),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,o]),c.jsx("div",{ref:s,style:Ix(!1,i),children:e})},vO=te.memo(function({...e}){const t=Re("useWindowScroll"),n=Re("customScrollParent"),o=n||t?xO:bO,r=n||t?gO:yO,i=Re("context");return c.jsx(o,{...e,...ht(o,i),children:c.jsxs(r,{children:[c.jsx(mO,{}),c.jsx(fO,{}),c.jsx(hO,{})]})})}),{useEmitter:Mx,useEmitterValue:Re,usePublisher:Kt}=_x(pO,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},vO),bO=Ox({useEmitter:Mx,useEmitterValue:Re,usePublisher:Kt}),xO=Rx({useEmitter:Mx,useEmitterValue:Re,usePublisher:Kt});function ly(e,t,n){return t!=="normal"&&(t==null?void 0:t.endsWith("px"))!==!0&&n(`${e} was not resolved to pixel value correctly`,t,nt.WARN),t==="normal"?0:parseInt(t??"0",10)}function wO(e){var o,r,i;if(e.kind!=="notification"||e.method!=="session/update")return null;const t=e.payload;if(!t||typeof t!="object")return null;const n=t.params;return!n||((o=n.update)==null?void 0:o.sessionUpdate)!=="agent_message_chunk"?null:{sessionId:String(n.sessionId??""),text:((i=(r=n.update)==null?void 0:r.content)==null?void 0:i.text)??""}}function SO(e){const t=[];let n=null;const o=()=>{if(n){if(n.messages.length===1){const r=n.messages[0];t.push({type:"message",message:r})}else{const r=n.messages[0],i=n.messages[n.messages.length-1];t.push({type:"stream-cluster",sessionId:n.sessionId,messages:n.messages,firstSeq:r.seq,lastSeq:i.seq,combinedText:n.text,firstTimestamp:r.timestamp,lastTimestamp:i.timestamp})}n=null}};for(const r of e){const i=wO(r);if(i&&n&&n.sessionId===i.sessionId){n.messages.push(r),n.text+=i.text;continue}o(),i?n={sessionId:i.sessionId,messages:[r],text:i.text}:t.push({type:"message",message:r})}return o(),t}function $O(e){var n;if(!e.payload||typeof e.payload!="object")return null;const t=e.payload.params;if(!t||typeof t!="object")return null;if(e.method==="session/prompt"){const o=t.prompt;if(!Array.isArray(o))return null;const r=[];for(const s of o)(s==null?void 0:s.type)==="text"&&typeof s.text=="string"&&r.push(s.text);const i=r.join(" ").trim();return i.length>0?i:null}if(e.method==="session/update"){const o=t.update;if(!o)return null;const r=((n=o.content)==null?void 0:n.text)??o.text;return typeof r=="string"&&r.length>0?r:null}return null}function kO(e){return e.method==="session/prompt"&&e.kind==="request"}const TO={request:"REQ",response:"RSP",notification:"NTF",error:"ERR",unknown:"???"},_O={request:"request — expects a response",response:"response — answer to a previous request",notification:"notification — one-way event, no response",error:"error — response carrying an error object",unknown:"unknown — could not classify as JSON-RPC"},jO={"editor-to-agent":"editor → agent (e.g. JetBrains/Zed sending to the AI)","agent-to-editor":"agent → editor (AI replying or calling the host)"};function NO(e){switch(e){case"error":return"text-accent-error";case"notification":return"text-accent-note";case"request":return"text-accent-out";case"response":return"text-accent-in";default:return"text-ink-muted"}}function CO({message:e,selected:t,paired:n=!1,latencyMs:o,validation:r,onSelect:i}){const s=e.direction==="editor-to-agent",a=e.kind==="error",l=o!==void 0?dE(o):null,d=$O(e),p=kO(e),m=r&&!r.skipped&&!r.valid,v=r==null?void 0:r.advisories,h=v&&v.length>0;return c.jsxs("button",{type:"button",onClick:()=>i(e.seq),className:K("relative flex w-full items-center gap-3 px-4 py-1.5 text-left font-mono text-[12px] leading-5","border-b border-line-grid/70 transition-colors","hover:bg-surface-rowHover",t?"bg-surface-rowHover ring-1 ring-inset ring-accent-out/40":"",n&&!t?"bg-accent-out/[0.04] ring-1 ring-inset ring-accent-out/15":"",a?"bg-accent-error/[0.06]":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("absolute inset-y-0 left-0 w-[3px]",s?"bg-accent-out":"bg-accent-in",a?"bg-accent-error":"")}),c.jsx("span",{className:"w-10 shrink-0 text-right text-ink-muted",children:String(e.seq).padStart(3,"0")}),c.jsx("span",{className:"w-24 shrink-0 text-ink-secondary",children:fs(e.timestamp)}),c.jsxs("span",{className:K("flex w-16 shrink-0 items-center gap-1 font-semibold",s?"text-accent-out":"text-accent-in"),title:jO[e.direction],children:[c.jsx("span",{"aria-hidden":!0,children:Kb(e.direction)}),c.jsx("span",{className:"text-[10px] tracking-widest",children:Wb(e.direction)})]}),c.jsx("span",{className:K("inline-flex w-12 shrink-0 items-center justify-center rounded-sm border px-1 text-[10px] font-semibold tracking-widest",NO(e.kind),"border-current/40"),title:_O[e.kind],children:TO[e.kind]}),c.jsxs("span",{className:"flex min-w-0 flex-1 items-baseline gap-3 overflow-hidden",children:[c.jsx("span",{className:K("shrink-0",p?"text-accent-out":"text-ink-primary"),children:e.method?e.method:"—"}),m&&r&&c.jsxs("span",{className:K("inline-flex shrink-0 items-center gap-0.5 rounded-sm border border-accent-error/40","bg-accent-error/10 px-1 text-[9px] font-semibold uppercase tracking-widest text-accent-error"),title:`fails ACP schema (${r.schemaName??"?"}): ${r.errors.map(y=>`${y.path==="/"?"":y.path+" "}${y.message}`).join(" · ")}`,children:["⚠ SPEC ",r.errors.length]}),h&&v&&c.jsxs("span",{className:K("inline-flex shrink-0 items-center gap-0.5 rounded-sm border border-accent-warn/40","bg-accent-warn/10 px-1 text-[9px] font-semibold uppercase tracking-widest text-accent-warn"),title:`soon-required by the ACP spec: ${v.map(y=>y.message).join(" · ")}`,children:["⚠ ADV ",v.length]}),d&&c.jsxs("span",{className:K("truncate",p?"text-accent-out/85":"text-ink-secondary"),title:d,children:["“",d,"”"]})]}),c.jsx("span",{className:"w-20 shrink-0 text-right text-ink-muted",title:e.rpcId!==void 0&&e.rpcId!==null?`id:${String(e.rpcId)}`:void 0,children:e.rpcId!==void 0&&e.rpcId!==null?`id:${pE(e.rpcId)}`:""}),c.jsx("span",{className:"w-20 shrink-0 text-right text-ink-muted",children:Ul(e.raw.length)}),c.jsx("span",{className:K("w-20 shrink-0 text-right",l==="ok"&&"text-accent-ok",l==="warn"&&"text-accent-warn",l==="error"&&"text-accent-error",!l&&"text-ink-dim"),children:o!==void 0?`+${Vt(o)}`:""})]})}const EO=I.memo(CO);function PO({messages:e,combinedText:t,firstTimestamp:n,lastTimestamp:o,selectedSeq:r,onSelect:i}){const[s,a]=I.useState(!1),l=e[0],d=e[e.length-1],p=o-n,m=t.length>140?`${t.slice(0,140)}…`:t,v=r!==null&&e.some(h=>h.seq===r);return c.jsxs("div",{className:"border-b border-line-grid/70",children:[c.jsxs("button",{type:"button",onClick:()=>{a(h=>!h),i(l.seq)},className:K("relative flex w-full items-center gap-3 px-4 py-1.5 text-left font-mono text-[12px] leading-5","transition-colors hover:bg-surface-rowHover",v?"bg-surface-rowHover ring-1 ring-inset ring-accent-note/40":""),children:[c.jsx("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent-note"}),c.jsxs("span",{className:"w-10 shrink-0 text-right text-ink-muted",children:[String(l.seq).padStart(3,"0"),"…",String(d.seq).padStart(3,"0")]}),c.jsx("span",{className:"w-24 shrink-0 text-ink-secondary",children:fs(n)}),c.jsxs("span",{className:"flex w-16 shrink-0 items-center gap-1 font-semibold text-accent-in",title:"agent → editor (AI replying or calling the host)",children:[c.jsx("span",{"aria-hidden":!0,children:"←"}),c.jsx("span",{className:"text-[10px] tracking-widest",children:"IN"})]}),c.jsx("span",{className:K("inline-flex w-12 shrink-0 items-center justify-center rounded-sm border border-accent-note/40 px-1 text-[10px] font-semibold tracking-widest text-accent-note"),title:`stream — ${e.length} consecutive agent_message_chunk notifications collapsed into one row`,children:"STR"}),c.jsxs("span",{className:"flex flex-1 items-center gap-2 truncate text-ink-primary",children:[c.jsx("span",{className:"inline-flex h-[14px] w-1 rounded-sm bg-accent-note/60","aria-hidden":!0}),c.jsx("span",{className:"truncate text-ink-secondary",children:m||c.jsx("span",{className:"text-ink-muted",children:"(empty stream)"})})]}),c.jsxs("span",{className:"w-20 shrink-0 text-right text-ink-muted",children:[e.length," chunks"]}),c.jsx("span",{className:"w-20 shrink-0 text-right text-ink-muted",children:Vt(p)}),c.jsx("span",{"aria-hidden":!0,className:K("w-3 shrink-0 text-ink-muted transition-transform",s?"rotate-90":""),children:"▸"})]}),s&&c.jsx("div",{className:"border-l border-line-grid/70 bg-surface-base/40",children:e.map((h,y)=>c.jsxs("button",{type:"button",onClick:()=>i(h.seq),className:K("flex w-full items-center gap-3 px-8 py-1 text-left font-mono text-[11px] leading-5 text-ink-secondary","transition-colors hover:bg-surface-rowHover",r===h.seq?"bg-surface-rowHover text-ink-primary":""),children:[c.jsx("span",{className:"w-10 shrink-0 text-right text-ink-muted",children:String(h.seq).padStart(3,"0")}),c.jsx("span",{className:"w-24 shrink-0 text-ink-muted",children:fs(h.timestamp)}),c.jsxs("span",{className:"w-8 shrink-0 text-ink-muted",children:["#",y+1]}),c.jsx("span",{className:"flex-1 truncate text-ink-primary",children:IO(h)})]},h.seq))})]})}function IO(e){var o,r;const t=e.payload;if(!t||typeof t!="object")return"";const n=t.params;return((r=(o=n==null?void 0:n.update)==null?void 0:o.content)==null?void 0:r.text)??""}const cy="border-ink-secondary/45",dy="border-dashed border-ink-muted/35";function OO({state:e,firstRow:t=!1,lastRow:n=!1}){const o=e!=="upcoming",r=e==="played";return c.jsxs("span",{"aria-hidden":!0,className:"relative w-4 shrink-0 self-stretch",children:[!t&&c.jsx("span",{className:K("absolute left-1/2 top-0 h-1/2 -translate-x-1/2 border-l",o?cy:dy)}),!n&&c.jsx("span",{className:K("absolute bottom-0 left-1/2 h-1/2 -translate-x-1/2 border-l",r?cy:dy)}),e==="current"&&c.jsx("span",{className:"absolute left-1/2 top-1/2 h-[7px] w-[7px] -translate-x-1/2 -translate-y-1/2 rounded-full bg-ink-primary ring-2 ring-surface-base"})]})}function RO(e,t,n){return n===null?"upcoming":n>=e&&n<=t?"current":t<n?"played":"upcoming"}const AO=80;function Pc(e){return e.type==="message"?[e.message.seq,e.message.seq]:[e.firstSeq,e.lastSeq]}function MO(){const e=ne(E=>E.messages),t=ne(E=>E.selectedSeq),n=ne(E=>E.filters),o=ne(E=>E.playback.playhead),r=ne(E=>E.playback.playing),i=ne(E=>E.select),s=ne(E=>E.setPlayhead),a=I.useMemo(()=>bS(e,n),[e,n]),l=I.useMemo(()=>SO(a),[a]),d=I.useMemo(()=>Cl(e),[e]),p=I.useMemo(()=>tf(e),[e]),m=I.useMemo(()=>{const E=new Map;for(const q of e)E.set(q.seq,q.timestamp);return E},[e]),v=I.useMemo(()=>{if(t===null)return null;const E=d.get(t);if(E!==void 0)return E;for(const[q,z]of d)if(z===t)return q;return null},[t,d]),h=I.useRef(null),y=I.useRef({startIndex:0,endIndex:0}),b=at(E=>E.selectedUrl),g=b!==null&&!Qu(b),f=ne(E=>{var q;return((q=E.session)==null?void 0:q.id)??null}),u=ne(E=>E.replayDone),x=I.useRef(f),S=I.useRef(!1),T=I.useRef(!1);I.useEffect(()=>{x.current!==f&&(x.current=f,S.current=!1,T.current=!1)},[f]),I.useEffect(()=>{if(!g||!u||f===null||S.current||l.length===0)return;S.current=!0;const E=l.length-1,q=window.setTimeout(()=>{var z;(z=h.current)==null||z.scrollToIndex({index:E,align:"end",behavior:"smooth"})},50);return()=>window.clearTimeout(q)},[g,u,f,l.length]),I.useEffect(()=>{var F;if(g||!u||f===null||T.current||l.length===0)return;T.current=!0;const E=((F=e[e.length-1])==null?void 0:F.seq)??null;let q=o;o!==null&&E!==null&&o>=E&&(s(null),q=null);const z=t??q;if(z===null)return;const U=l.findIndex(G=>{const[Y,D]=Pc(G);return z>=Y&&z<=D});if(U<0)return;const L=G=>{var Y;return(Y=h.current)==null?void 0:Y.scrollToIndex({index:U,align:"center",behavior:G})};requestAnimationFrame(()=>requestAnimationFrame(()=>{L("smooth"),window.setTimeout(()=>{const{startIndex:G,endIndex:Y}=y.current;(U<G||U>Y)&&L("auto")},500)}))},[g,u,f,l,e,o,t,s]);const C=!g&&l.length>0,$=I.useMemo(()=>o===null?-1:l.findIndex(E=>{const[q,z]=Pc(E);return o>=q&&o<=z}),[l,o]),j=I.useRef(!0);I.useEffect(()=>{r&&(j.current=!0)},[r]),I.useEffect(()=>{var U;if(!r||!j.current||$<0)return;const{startIndex:E,endIndex:q}=y.current;($<=E||$>=q)&&((U=h.current)==null||U.scrollToIndex({index:$,align:"center",behavior:"auto"}))},[r,$]);const A=E=>{const q=l[E];if(!q)return null;const z=qO(q,{selectedSeq:t,pairedSeq:v,onSelect:i,responseToRequest:d,reqTimestampBySeq:m,validationBySeq:p});if(!C)return z;const[U,L]=Pc(q);return c.jsxs("div",{className:"flex items-stretch",children:[c.jsx(OO,{state:RO(U,L,o),firstRow:E===0,lastRow:E===l.length-1}),c.jsx("div",{className:"min-w-0 flex-1",children:z})]})};return c.jsxs("div",{className:"relative flex h-full flex-col",onWheel:()=>{r&&(j.current=!1)},children:[l.length===0?c.jsx("div",{className:"flex h-full items-center justify-center bg-surface-base font-mono text-xs text-ink-muted",children:"no messages match current filters"}):c.jsx(iO,{ref:h,className:"flex-1 bg-surface-base",totalCount:l.length,itemContent:A,rangeChanged:E=>{y.current=E},atBottomThreshold:AO,...g?{initialTopMostItemIndex:Math.max(0,l.length-1)}:{},followOutput:g?E=>E?"auto":!1:!1,computeItemKey:E=>UO(l[E])}),c.jsx(LO,{total:e.length,shown:a.length})]})}function qO(e,t){if(e.type==="message"){const n=e.message,o=t.responseToRequest.get(n.seq),r=o!==void 0?n.timestamp-(t.reqTimestampBySeq.get(o)??n.timestamp):void 0,i=t.validationBySeq.get(n.seq);return c.jsx(EO,{message:n,selected:t.selectedSeq===n.seq,paired:t.pairedSeq===n.seq,...r!==void 0?{latencyMs:r}:{},...i!==void 0?{validation:i}:{},onSelect:t.onSelect})}return c.jsx(PO,{messages:e.messages,combinedText:e.combinedText,firstTimestamp:e.firstTimestamp,lastTimestamp:e.lastTimestamp,selectedSeq:t.selectedSeq,onSelect:t.onSelect})}function UO(e){return e.type==="message"?`m-${e.message.seq}`:`c-${e.firstSeq}-${e.lastSeq}`}function LO({total:e,shown:t}){return e===0||t===e?null:c.jsxs("div",{className:"border-t border-line bg-surface-elev/60 px-4 py-1 text-right font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:["showing ",t," of ",e]})}function DO({message:e,tone:t="info"}){if(!e)return null;const n=t==="success"?"border-accent-out/50 bg-accent-out/10 text-accent-out":t==="warn"?"border-accent-warn/50 bg-accent-warn/10 text-accent-warn":"border-accent-info/50 bg-accent-info/10 text-accent-info";return c.jsx("div",{role:"status",className:K("pointer-events-none fixed right-4 top-[60px] z-50 rounded-sm border px-3 py-2 font-mono text-[11px] uppercase tracking-widest shadow-lg backdrop-blur-sm",n),children:e})}function zO({onImportResult:e}){const[t,n]=I.useState(!1),[o,r]=I.useState(!1),i=I.useRef(null),s=I.useRef(null),a=ne(h=>h.session),l=ne(h=>h.messages.length),d=a!==null&&l>0;I.useEffect(()=>{if(!t)return;const h=b=>{i.current&&!i.current.contains(b.target)&&n(!1)},y=b=>{b.key==="Escape"&&n(!1)};return document.addEventListener("mousedown",h),document.addEventListener("keydown",y),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",y)}},[t]);const p=()=>{var h;n(!1),(h=s.current)==null||h.click()},m=()=>{n(!1);const h=ne.getState();h.session&&h.messages.length>0&&Vb(h.session,h.messages)},v=async h=>{var b;const y=(b=h.target.files)==null?void 0:b[0];if(h.target.value="",!!y){r(!0);try{const g=await Nv(y);await Xu(),at.getState().setSelected(tl(g.id)),e==null||e(`imported ${y.name} · #${g.id} · ${g.messageCount} message${g.messageCount===1?"":"s"}`,"success")}catch(g){const f=g instanceof Error?g.message:String(g);e==null||e(`import failed: ${f}`,"warn")}finally{r(!1)}}};return c.jsxs("div",{ref:i,className:"relative",children:[c.jsx("input",{ref:s,type:"file",accept:"application/json,.json",onChange:v,className:"hidden","aria-hidden":"true",tabIndex:-1}),c.jsx("button",{type:"button",onClick:()=>n(h=>!h),title:"Session actions — import file · export","aria-haspopup":"menu","aria-expanded":t,"aria-label":"session actions",disabled:o,className:K("inline-flex h-7 w-7 items-center justify-center rounded-sm border font-mono text-[14px] leading-none transition-colors",t?"border-line-strong bg-surface-rowHover text-ink-primary":"border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary",o&&"cursor-progress opacity-60"),children:c.jsx("span",{"aria-hidden":!0,children:"⋯"})}),t&&c.jsxs("div",{role:"menu",className:"absolute right-0 top-[calc(100%+6px)] z-50 w-max overflow-hidden rounded-sm border border-line bg-surface-elev p-1 font-mono text-[11px] uppercase tracking-widest shadow-lg",children:[c.jsx(uy,{icon:"↑",label:"import",onClick:p,title:"Open a session JSON exported earlier — yours or someone else's."}),c.jsx(uy,{icon:"↓",label:"export",onClick:m,disabled:!d,title:"Download this session as JSON. Auth headers and proxy tokens (Authorization, X-Api-Key, JetBrains proxy_key) are redacted — safe to attach to a bug report. For an un-redacted copy (self-debug only), use 'acp-devtools export <id> --raw' in the CLI.",disabledTitle:"Nothing to export yet — wait for the first message."})]})]})}function uy({icon:e,label:t,onClick:n,disabled:o,title:r,disabledTitle:i}){return c.jsxs("button",{type:"button",role:"menuitem",disabled:o,onClick:n,title:o?i:r,className:K("flex w-full items-center gap-2 rounded-[2px] px-2 py-1.5 text-left transition-colors",o?"cursor-not-allowed text-ink-dim opacity-50":"text-ink-muted hover:bg-surface-rowHover hover:text-ink-secondary"),children:[c.jsx("span",{"aria-hidden":!0,className:"w-4 text-center text-[13px] leading-none",children:e}),c.jsx("span",{className:"flex-1",children:t})]})}function FO({onSelect:e,activeUrl:t,overrideUrl:n}){const o=at(u=>u.captures),r=at(u=>u.savedSessions),i=at(u=>u.lastFetchAt),[s,a]=I.useState(!1),l=I.useRef(null);I.useEffect(()=>{if(!s)return;const u=x=>{l.current&&!l.current.contains(x.target)&&a(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[s]);const d=o.find(u=>u.url===t)??null,p=t!==null&&Qu(t)?jS(t):null,m=I.useMemo(()=>new Set(o.map(u=>u.sessionDbId).filter(u=>u!==null)),[o]),v=I.useMemo(()=>r.filter(u=>!m.has(u.id)),[r,m]),h=I.useMemo(()=>v.filter(u=>u.imported_at===null),[v]),y=I.useMemo(()=>v.filter(u=>u.imported_at!==null),[v]),b=p!==null?v.find(u=>u.id===p)??null:null,g=o.length+v.length;let f;return n?f="?ws override":d?f=nf(d):b?f=`#${b.id} · ${b.name??(b.client_name?`${b.client_name} · ${Rt(b.agent_command??"")}`:Rt(b.agent_command??""))}`:g===0?f="no captures":f="pick capture",c.jsxs("div",{ref:l,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>a(u=>!u),className:K("inline-flex h-7 items-center gap-2 rounded-sm border px-3 font-mono text-[10px] uppercase tracking-widest transition-colors","border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary",s?"border-line-strong text-ink-primary":""),title:"Select a live capture or saved session",children:[c.jsx("span",{className:"inline-block w-[200px] truncate text-left",children:f}),g>1&&!n&&c.jsx("span",{className:"rounded-sm border border-line-strong px-1 text-[9px] text-ink-secondary",children:g}),c.jsx("span",{"aria-hidden":!0,className:K("transition-transform",s?"rotate-180":""),children:"▾"})]}),s&&c.jsxs("div",{className:K("absolute right-0 top-[calc(100%+6px)] z-50 w-[460px] rounded-md border border-line bg-surface-elev shadow-xl"),children:[c.jsxs(Ic,{children:["live captures · last poll"," ",i?`${Math.round((Date.now()-i)/1e3)}s ago`:"—"]}),o.length===0&&c.jsxs("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:["none. start a proxy with"," ",c.jsx("span",{className:"text-ink-secondary",children:"acp-devtools proxy …"})]}),c.jsx("ul",{className:"max-h-[260px] overflow-y-auto",children:o.map(u=>c.jsx("li",{children:c.jsxs("button",{type:"button",onClick:()=>{e(u.url),a(!1)},title:`${u.agentCommand} · ${u.url}${u.saveTo?" · saved to local store":" · not persisted"}`,className:K("flex w-full items-baseline gap-3 border-b border-line-grid/70 px-3 py-2 text-left transition-colors hover:bg-surface-rowHover",u.url===t?"bg-surface-rowHover":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("h-2 w-2 shrink-0 rounded-full",u.url===t?"bg-accent-out animate-pulse-soft":"bg-accent-warn/50")}),c.jsxs("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-ink-primary",children:[c.jsx("span",{className:"text-accent-out",children:u.sessionDbId!==null?`#${u.sessionDbId}`:`pid ${u.pid}`}),c.jsx("span",{className:"text-ink-muted",children:" · "}),u.sessionName??(u.clientName?`${u.clientName} · ${Rt(u.agentCommand)}`:Rt(u.agentCommand))]}),c.jsx("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:Mr(u.startedAt)})]})},u.url))}),c.jsxs(Ic,{children:["saved · ",h.length," session",h.length===1?"":"s"]}),h.length===0&&c.jsx("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:r.length===0?"no saved sessions yet":y.length>0?"no live-captured sessions yet":"all saved sessions are currently live"}),c.jsx("ul",{className:"max-h-[300px] overflow-y-auto",children:h.map(u=>c.jsx(py,{s:u,activeUrl:t,onPick:x=>{e(x),a(!1)}},u.id))}),(y.length>0||r.some(u=>u.imported_at!==null))&&c.jsxs(c.Fragment,{children:[c.jsxs(Ic,{children:["imported · ",y.length," file",y.length===1?"":"s"]}),y.length===0?c.jsx("div",{className:"px-3 py-3 text-center font-mono text-[11px] text-ink-muted",children:"no imported files"}):c.jsx("ul",{className:"max-h-[200px] overflow-y-auto",children:y.map(u=>c.jsx(py,{s:u,activeUrl:t,onPick:x=>{e(x),a(!1)}},u.id))})]}),n&&c.jsx("div",{className:"border-t border-line px-3 py-2 font-mono text-[10px] uppercase tracking-widest text-accent-warn",children:"?ws override active — discovery selection ignored"})]})]})}function Ic({children:e}){return c.jsx("div",{className:"border-b border-line bg-surface-base/50 px-3 py-1.5 font-mono text-[10px] uppercase tracking-widest text-ink-muted",children:e})}function py({s:e,activeUrl:t,onPick:n}){const o=tl(e.id),r=o===t,i=s=>{s.stopPropagation();const a=e.name??Rt(e.agent_command??"");window.confirm(`Delete session #${e.id} ${a} forever?`)&&(async()=>{try{await _S(e.id),r&&at.getState().setSelected(null),await Xu()}catch(l){const d=l instanceof Error?l.message:String(l);window.alert(`Delete failed: ${d}`)}})()};return c.jsxs("li",{className:"group relative",children:[c.jsxs("button",{type:"button",onClick:()=>n(o),title:`session #${e.id} · ${e.agent_command??""} · ${e.message_count} messages`,className:K("flex w-full items-baseline gap-3 border-b border-line-grid/70 px-3 py-2 text-left transition-colors hover:bg-surface-rowHover",r?"bg-surface-rowHover":""),children:[c.jsx("span",{"aria-hidden":!0,className:K("h-2 w-2 shrink-0 rounded-full",r?"bg-accent-note animate-pulse-soft":"bg-ink-dim")}),c.jsxs("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-ink-primary",children:[c.jsxs("span",{className:"text-accent-note",children:["#",e.id]}),c.jsx("span",{className:"text-ink-muted",children:" · "}),e.name??(e.client_name?`${e.client_name} · ${Rt(e.agent_command??"")}`:Rt(e.agent_command??""))]}),c.jsxs("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-widest text-ink-muted transition-colors group-hover:text-ink-secondary",children:[e.message_count,"msg · ",Mr(e.started_at)]})]}),c.jsx("button",{type:"button",onClick:i,"aria-label":`delete session #${e.id} forever`,title:"Delete this session permanently",className:K("absolute right-2 top-1/2 hidden h-6 w-6 -translate-y-1/2 items-center justify-center rounded-sm border border-line bg-surface-elev/70 text-[12px] leading-none text-ink-muted transition-colors","group-hover:flex hover:border-accent-error/70 hover:bg-surface-rowHover hover:text-accent-error"),children:c.jsx("span",{"aria-hidden":!0,children:"×"})})]})}const Oc=[{mode:"system",label:"AUTO",title:"follow OS theme",icon:"◐"},{mode:"light",label:"LIGHT",title:"force light theme",icon:"☀"},{mode:"dark",label:"DARK",title:"force dark theme",icon:"☾"}];function BO(){const e=Id(s=>s.mode),t=Id(s=>s.setMode),[n,o]=I.useState(!1),r=I.useRef(null);I.useEffect(()=>{if(!n)return;const s=a=>{r.current&&!r.current.contains(a.target)&&o(!1)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[n]);const i=Oc.find(s=>s.mode===e)??Oc[0];return c.jsxs("div",{ref:r,className:"relative",children:[c.jsx("button",{type:"button",onClick:()=>o(s=>!s),title:`theme · ${i.title}`,"aria-haspopup":"menu","aria-expanded":n,className:K("inline-flex h-7 w-7 items-center justify-center rounded-sm border font-mono text-[12px] transition-colors",n?"border-line-strong bg-surface-rowHover text-ink-primary":"border-line bg-surface-row text-ink-secondary hover:border-line-strong hover:text-ink-primary"),children:c.jsx("span",{"aria-hidden":!0,children:i.icon})}),n&&c.jsx("div",{role:"menu",className:"absolute right-0 top-[calc(100%+6px)] z-50 inline-flex items-center gap-px rounded-sm border border-line bg-surface-elev p-px font-mono text-[10px] uppercase tracking-widest shadow-lg",children:Oc.map(s=>{const a=s.mode===e;return c.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":a,onClick:()=>{t(s.mode),o(!1)},title:s.title,className:K("inline-flex items-center gap-1 rounded-[2px] px-2 py-1 transition-colors",a?"bg-accent-out/15 text-accent-out":"text-ink-muted hover:bg-surface-rowHover hover:text-ink-secondary"),children:[c.jsx("span",{"aria-hidden":!0,children:s.icon}),c.jsx("span",{children:s.label})]},s.mode)})})]})}function HO({wsUrl:e,overrideUrl:t,activeUrl:n,isReplay:o,isImported:r=!1,onPickCapture:i,onImportResult:s,onOpenInfo:a,onOpenPerf:l,onOpenDiff:d}){const p=ne(b=>b.connection),m=ne(b=>b.session),v=ne(b=>b.lastError),h=ne(b=>b.messages.length>0?b.messages[b.messages.length-1].timestamp:null),y=ex(5e3);return c.jsxs("header",{className:"flex items-center justify-between border-b border-line bg-surface-base px-5 py-2.5",children:[c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsx("div",{className:"wordmark-rule",children:c.jsx("span",{className:"font-display text-[18px] uppercase tracking-[0.18em] text-ink-primary",children:"acp.devtools"})}),c.jsx("span",{className:"font-mono text-[10px] uppercase tracking-widest text-ink-dim",children:"v0.6.0"})]}),c.jsxs("div",{className:"flex items-center gap-4",children:[m&&(()=>{const{primary:b}=ql(m),g=o||r,f=m.endedAt!==null?m.endedAt:h??m.startedAt,u=g?Mr(m.startedAt,f):Mr(m.startedAt,y),x=h!==null?y-h:null,S=!g&&x!==null&&x>5e3,T=_a(m.startedAt,y),C=r?"IMPORTED":o?"REPLAY":"SESSION",$=r?"session loaded from a JSON file on disk — not connected to any proxy":o?"replay of a saved session — proxy has ended":"live capture — proxy process is still running",j=r?"text-accent-warn":o?"text-accent-note":"text-accent-out";return c.jsxs("div",{className:"flex items-center gap-3 font-mono text-[11px] text-ink-secondary",children:[c.jsx("span",{className:"text-ink-muted",title:$,children:C}),c.jsx("span",{className:j,title:m.agentCommand?`session #${m.id} · ${m.agentCommand}`:"persisted session id",children:b}),c.jsx("span",{className:"text-ink-muted",children:"·"}),c.jsx("span",{title:`session started at ${T}`,children:_a(m.startedAt,y)}),u&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"text-ink-muted",children:"·"}),c.jsxs("span",{className:"text-ink-muted",title:g?"capture duration (start → end of recorded session)":"how long the proxy process has been alive",children:[g?"lasted":"alive"," ",u]})]}),S&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"text-ink-muted",children:"·"}),c.jsxs("span",{className:"text-ink-dim",title:`time since the most recent ACP frame · last event ${_a(h,y)}`,children:["idle ",Mr(h,y)]})]})]})})(),c.jsxs("div",{className:"flex items-center gap-1.5",children:[i&&c.jsx(FO,{onSelect:i,activeUrl:n,overrideUrl:t}),c.jsx(VO,{status:p,wsUrl:e,lastError:v,isReplay:o,isImported:r,onReconnect:kS})]}),c.jsxs("div",{className:"flex items-center gap-1.5",children:[a&&m&&c.jsx("button",{type:"button",onClick:a,className:"inline-flex h-7 items-center rounded-sm border border-line bg-surface-row px-3 font-mono text-[10px] uppercase tracking-widest text-ink-secondary transition-colors hover:bg-surface-rowHover hover:text-ink-primary",title:"Show session info — client/agent capabilities, runtime state","aria-label":"Open session info panel",children:"info"}),l&&m&&c.jsx("button",{type:"button",onClick:l,className:"inline-flex h-7 items-center rounded-sm border border-line bg-surface-row px-3 font-mono text-[10px] uppercase tracking-widest text-ink-secondary transition-colors hover:bg-surface-rowHover hover:text-ink-primary",title:"Show performance dashboard — per-method latency stats and waterfall timeline","aria-label":"Open performance dashboard",children:"perf"}),d&&m&&c.jsx("button",{type:"button",onClick:d,className:"inline-flex h-7 items-center rounded-sm border border-line bg-surface-row px-3 font-mono text-[10px] uppercase tracking-widest text-ink-secondary transition-colors hover:bg-surface-rowHover hover:text-ink-primary",title:"Compare this session against another — metadata, per-method latency, and frame-level differences","aria-label":"Open session diff",children:"diff"}),c.jsx(zO,{...s?{onImportResult:s}:{}})]}),c.jsx("div",{className:"flex items-center gap-1.5",children:c.jsx(BO,{})})]})]})}function VO({status:e,wsUrl:t,lastError:n,isReplay:o,isImported:r,onReconnect:i}){if(r)return c.jsxs("div",{className:"inline-flex h-7 cursor-default items-center gap-2 rounded-sm border border-accent-warn/40 bg-accent-warn/10 px-3 font-mono text-[10px] font-semibold uppercase tracking-widest text-accent-warn",title:`viewing data from a JSON file · ${t}`,children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block h-2 w-2 rounded-full bg-accent-warn"}),c.jsx("span",{className:"inline-block min-w-[52px] text-center",children:"FILE"})]});const a=e==="open"?o?"REPLAY":"LIVE":e==="connecting"?"WAITING":e==="idle"?"IDLE":e==="closed"?"CLOSED":"ERROR",d={idle:"text-ink-secondary bg-surface-row border-line",connecting:"text-accent-warn/80 bg-accent-warn/10 border-accent-warn/30",open:o?"text-accent-note bg-accent-note/10 border-accent-note/40":"text-accent-out bg-accent-out/10 border-accent-out/40",closed:"text-ink-secondary bg-surface-row border-line",error:"text-accent-error bg-accent-error/10 border-accent-error/40"},m=e==="open"?o?"bg-accent-note animate-pulse-soft":"bg-accent-out animate-pulse-soft":e==="connecting"?"bg-accent-warn/60 animate-pulse-soft":e==="error"?"bg-accent-error":"bg-ink-dim",v=e==="idle"||e==="closed"||e==="error",y=n||(e==="open"?`${o?"serving a recorded session from the local store":"connected to a live proxy capture"} · ${t}`:v?`click to reconnect · ${t}`:t);return c.jsxs("button",{type:"button",onClick:v?i:void 0,disabled:!v,className:K("inline-flex h-7 items-center gap-2 rounded-sm border px-3 font-mono text-[10px] font-semibold uppercase tracking-widest transition-colors",d[e],v?"cursor-pointer hover:bg-surface-rowHover":"cursor-default"),title:y,children:[c.jsx("span",{"aria-hidden":!0,className:K("inline-block h-2 w-2 rounded-full",m)}),c.jsx("span",{className:"inline-block min-w-[52px] text-center",children:a})]})}const ur=eC(),WO=ur?new URLSearchParams(typeof window<"u"?window.location.search:"").get("url"):null;function KO(){const e=at(w=>w.captures),t=at(w=>w.selectedUrl),n=at(w=>w.setSelected),o=ne(w=>{var k;return((k=w.session)==null?void 0:k.importedAt)??null}),r=t,i=Qu(t),s=o!==null;I.useEffect(()=>ur?void 0:OS(),[]),I.useEffect(()=>MS(),[]);const[a,l]=I.useState(null),d=I.useRef(new Set);I.useEffect(()=>{const w=yh(window.location.search),k=ne.getState(),N={};Object.keys(w.filters).length>0&&(N.filters={...k.filters,...w.filters}),w.selectedSeq!==null&&(N.selectedSeq=w.selectedSeq),w.detailTab!==null&&(N.detailTab=w.detailTab),w.playhead!==null&&(N.playback={...k.playback,playhead:w.playhead}),Object.keys(N).length>0&&ne.setState(N),w.captureUrl&&at.getState().setSelected(w.captureUrl)},[]);const[p,m]=I.useState(!1),[v,h]=I.useState(!1),[y,b]=I.useState(!1);I.useEffect(()=>{const w=()=>{const H=ne.getState(),R=at.getState();aC({filters:H.filters,selectedSeq:H.selectedSeq,detailTab:H.detailTab,playhead:H.playback.playhead,captureUrl:R.selectedUrl})},k=ne.subscribe(w),N=at.subscribe(w);return w(),()=>{k(),N()}},[]);const g=()=>{p||(window.history.pushState({drawer:"info"},"",window.location.href),m(!0))},f=()=>{v||(window.history.pushState({drawer:"perf"},"",window.location.href),h(!0))},u=()=>{y||(window.history.pushState({drawer:"diff"},"",window.location.href),b(!0))},x=()=>{p&&window.history.back()},S=()=>{v&&window.history.back()},T=()=>{y&&window.history.back()},C=w=>{window.history.pushState({drawer:null},"",window.location.href),ne.getState().select(w),m(!1),h(!1),b(!1)};I.useEffect(()=>{const w=k=>{const N=k.state;m((N==null?void 0:N.drawer)==="info"),h((N==null?void 0:N.drawer)==="perf"),b((N==null?void 0:N.drawer)==="diff");const H=yh(window.location.search),R=ne.getState(),X=at.getState(),ie={};Object.keys(H.filters).length>0&&(ie.filters={...R.filters,...H.filters}),ie.selectedSeq=H.selectedSeq,ie.detailTab=H.detailTab??"tree",ie.playback={...R.playback,playhead:H.playhead},ne.setState(ie),H.captureUrl!==X.selectedUrl&&H.captureUrl&&X.setSelected(H.captureUrl)};return window.addEventListener("popstate",w),()=>window.removeEventListener("popstate",w)},[]),I.useEffect(()=>{const w=new Set(e.map(X=>X.url));if(d.current=d.current,i){d.current=w;return}const k=e[0]??null,N=t===null,H=t!==null&&w.has(t),R=k!==null&&!d.current.has(k.url)&&d.current.size>0;e.length===0?t!==null&&n(null):N||!H?n(k.url):R&&k.url!==t&&(n(k.url),l({message:`switched → ${nf(k)}`,tone:"success"})),d.current=w},[e,t,n,i]),I.useEffect(()=>{if(!a)return;let w=3e3,k=Date.now(),N=null;const H=()=>{N===null&&document.visibilityState==="visible"&&(k=Date.now(),N=setTimeout(()=>l(null),w))},R=()=>{N!==null&&(clearTimeout(N),N=null,w=Math.max(0,w-(Date.now()-k)))},X=()=>{document.visibilityState==="visible"?H():R()};return document.addEventListener("visibilitychange",X),H(),()=>{document.removeEventListener("visibilitychange",X),N&&clearTimeout(N)}},[a]),I.useEffect(()=>{if(ur){Ed();return}if(!r){Ed();return}Ju(r)},[r]);const[$,j]=I.useState(!1);I.useEffect(()=>{const w=k=>{if((k.metaKey||k.ctrlKey)&&(k.key==="k"||k.key==="K")){k.preventDefault(),j(H=>!H);return}if($)return;const N=k.target;if(!(N&&(N.tagName==="INPUT"||N.tagName==="TEXTAREA"))){if(k.key==="Escape"){ne.getState().select(null);return}if(k.key==="j"||k.key==="J"){fy(1);return}if(k.key==="k"||k.key==="K"){fy(-1);return}}};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[$]);const A=ne(w=>w.messages),E=ne(w=>w.session),q=ne(w=>w.selectedSeq),z=ne(w=>w.connection),U=ne(w=>w.lastError);I.useEffect(()=>{const w="ACP Devtools";if(!E){document.title=w;return}const{primary:k,secondary:N}=ql(E),H=N?`${k} · ${N}`:k;document.title=`${H} — ${w}`},[E]);const L=I.useMemo(()=>xS(A,q),[A,q]),F=I.useMemo(()=>{const w=Cl(A),k=new Map;for(const[N,H]of w.entries())k.set(H,N);return{responseToRequest:w,requestToResponse:k}},[A]),G=I.useMemo(()=>tf(A),[A]);let Y,D=null;if(L){if(L.kind==="response"||L.kind==="error"){const w=F.responseToRequest.get(L.seq);w!==void 0&&(D=A.find(k=>k.seq===w)??null,D&&(Y=L.timestamp-D.timestamp))}else if(L.kind==="request"){const w=F.requestToResponse.get(L.seq);w!==void 0&&(D=A.find(k=>k.seq===w)??null,D&&(Y=D.timestamp-L.timestamp))}}const J=A.length===0&&!E,O=r??"no capture selected",_=ur&&J,M=!ur&&J&&r===null&&e.length===0,P=!ur&&J&&!M;return c.jsxs("div",{className:"flex h-full flex-col bg-surface-base text-ink-primary",children:[c.jsx(DO,{message:(a==null?void 0:a.message)??null,tone:(a==null?void 0:a.tone)??"info"}),c.jsx(XC,{open:$,onClose:()=>j(!1)}),c.jsx(zP,{open:p,onClose:x}),c.jsx(jP,{open:v,onClose:S,onNavigateToSeq:C}),c.jsx(FE,{open:y,onClose:T}),c.jsx(HO,{wsUrl:O,overrideUrl:null,isReplay:i,isImported:s,onPickCapture:w=>{n(w),d.current.add(w)},onImportResult:(w,k)=>l({message:w,tone:k}),activeUrl:r,onOpenInfo:g,onOpenPerf:f,onOpenDiff:u}),c.jsx(rP,{}),c.jsx("main",{className:"flex-1 overflow-hidden",children:_?c.jsx(UP,{initialUrl:WO}):M?c.jsx(nP,{status:z,lastError:U,url:O,captureCount:e.length}):P?c.jsx(nE,{status:z,url:O,lastError:U}):c.jsx(VP,{storageKey:"acp.split.leftPx",initialLeftFraction:.62,minLeft:420,minRight:360,left:c.jsxs("div",{className:"flex h-full flex-col",children:[c.jsx("div",{className:"min-h-0 flex-1",children:c.jsx(MO,{})}),(i||s)&&c.jsx(DP,{})]}),right:c.jsx(vE,{message:L,...Y!==void 0?{latencyMs:Y}:{},...D?{pairedRequest:D}:{},...L?(()=>{const w=G.get(L.seq);return w?{validation:w}:{}})():{},onJumpToPaired:w=>ne.getState().select(w)})})}),c.jsx(WP,{})]})}function fy(e){const t=ne.getState(),{messages:n,selectedSeq:o}=t;if(n.length===0)return;if(o===null){const s=e===1?n[0]:n[n.length-1];s&&t.select(s.seq);return}const r=n.findIndex(s=>s.seq===o);if(r===-1){const s=n[0];s&&t.select(s.seq);return}const i=n[r+e];i&&t.select(i.seq)}const qx=document.getElementById("root");if(!qx)throw new Error("#root not found");Rc.createRoot(qx).render(c.jsx(te.StrictMode,{children:c.jsx(KO,{})}));
|
|
1768
|
+
//# sourceMappingURL=index-D6fYTnQ6.js.map
|