stableclaw 2026.5.2 → 2026.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/.buildstamp +1 -1
  2. package/dist/control-ui/apple-touch-icon.png +0 -0
  3. package/dist/control-ui/assets/agents-DIJiVfPj.js +813 -0
  4. package/dist/control-ui/assets/anthropic-BnQLajET.js +37 -0
  5. package/dist/control-ui/assets/azure-openai-responses-D6oH5P8v.js +2 -0
  6. package/dist/control-ui/assets/channel-config-extras-Cu8rP5sC.js +2 -0
  7. package/dist/control-ui/assets/channels-DMte0OdA.js +349 -0
  8. package/dist/control-ui/assets/cron-hM6tj-cg.js +928 -0
  9. package/dist/control-ui/assets/de-BzA7Smom.js +2 -0
  10. package/dist/control-ui/assets/debug-ChdgbieB.js +94 -0
  11. package/dist/control-ui/assets/directive-C6NBp6xJ.js +2 -0
  12. package/dist/control-ui/assets/es--sAce87o.js +2 -0
  13. package/dist/control-ui/assets/event-stream-B8X6sYaV.js +2 -0
  14. package/dist/control-ui/assets/format-nUIQxx1z.js +2 -0
  15. package/dist/control-ui/assets/github-copilot-headers-cUjskhp6.js +2 -0
  16. package/dist/control-ui/assets/google-DDYMjR2f.js +2 -0
  17. package/dist/control-ui/assets/google-gemini-cli-BBZpF1Bz.js +3 -0
  18. package/dist/control-ui/assets/google-shared-Brxly9jR.js +12 -0
  19. package/dist/control-ui/assets/google-vertex-moPkJqQt.js +2 -0
  20. package/dist/control-ui/assets/hash-BN8UQrrC.js +2 -0
  21. package/dist/control-ui/assets/index-DOMg2RvO.css +1 -0
  22. package/dist/control-ui/assets/index-hSu8pNmQ.js +4841 -0
  23. package/dist/control-ui/assets/instances-BO-5LU4G.js +57 -0
  24. package/dist/control-ui/assets/lit-zdTgzAJI.js +3 -0
  25. package/dist/control-ui/assets/logs-CaFT90eM.js +74 -0
  26. package/dist/control-ui/assets/mistral-yMnz8nsP.js +8 -0
  27. package/dist/control-ui/assets/nodes-6XxETMb5.js +430 -0
  28. package/dist/control-ui/assets/openai-CQsomflW.js +17 -0
  29. package/dist/control-ui/assets/openai-codex-responses-DXqDuiSK.js +8 -0
  30. package/dist/control-ui/assets/openai-completions-Bme8q7yw.js +6 -0
  31. package/dist/control-ui/assets/openai-responses-DpESo9k8.js +2 -0
  32. package/dist/control-ui/assets/openai-responses-shared-CjacPL_h.js +11 -0
  33. package/dist/control-ui/assets/preload-helper-xBbMyY7u.js +1 -0
  34. package/dist/control-ui/assets/preview-Ca6p7-4-.js +2 -0
  35. package/dist/control-ui/assets/pt-BR-DkjnRLn3.js +2 -0
  36. package/dist/control-ui/assets/sessions-USutdtjY.js +236 -0
  37. package/dist/control-ui/assets/skills-DLY8KTEh.js +216 -0
  38. package/dist/control-ui/assets/skills-shared-DUfo2UBp.js +11 -0
  39. package/dist/control-ui/assets/transform-messages-Lu1Q3cQf.js +2 -0
  40. package/dist/control-ui/assets/zh-CN-Di7IMlSu.js +2 -0
  41. package/dist/control-ui/assets/zh-TW-yENTnmx1.js +2 -0
  42. package/dist/control-ui/favicon-32.png +0 -0
  43. package/dist/control-ui/favicon.ico +0 -0
  44. package/dist/control-ui/favicon.svg +66 -0
  45. package/dist/control-ui/index.html +75 -0
  46. package/package.json +1 -1
@@ -0,0 +1,57 @@
1
+ import{i as e,n as t}from"./lit-zdTgzAJI.js";import{j as n,o as r}from"./index-hSu8pNmQ.js";var i=!1;function a(r){let a=!i;return e`
2
+ <section class="card">
3
+ <div class="row" style="justify-content: space-between;">
4
+ <div>
5
+ <div class="card-title">Connected Instances</div>
6
+ <div class="card-sub">Presence beacons from the gateway and clients.</div>
7
+ </div>
8
+ <div class="row" style="gap: 8px;">
9
+ <button
10
+ class="btn btn--icon ${a?``:`active`}"
11
+ @click=${()=>{i=!i,r.onRefresh()}}
12
+ title=${a?`Show hosts and IPs`:`Hide hosts and IPs`}
13
+ aria-label="Toggle host visibility"
14
+ aria-pressed=${!a}
15
+ style="width: 36px; height: 36px;"
16
+ >
17
+ ${a?n.eyeOff:n.eye}
18
+ </button>
19
+ <button class="btn" ?disabled=${r.loading} @click=${r.onRefresh}>
20
+ ${r.loading?`Loading…`:`Refresh`}
21
+ </button>
22
+ </div>
23
+ </div>
24
+ ${r.lastError?e`<div class="callout danger" style="margin-top: 12px;">${r.lastError}</div>`:t}
25
+ ${r.statusMessage?e`<div class="callout" style="margin-top: 12px;">${r.statusMessage}</div>`:t}
26
+ <div class="list" style="margin-top: 16px;">
27
+ ${r.entries.length===0?e` <div class="muted">No instances reported yet.</div> `:r.entries.map(e=>o(e,a))}
28
+ </div>
29
+ </section>
30
+ `}function o(n,i){let a=n.lastInputSeconds==null?`n/a`:`${n.lastInputSeconds}s ago`,o=n.mode??`unknown`,s=n.host??`unknown host`,c=n.ip??null,l=Array.isArray(n.roles)?n.roles.filter(Boolean):[],u=Array.isArray(n.scopes)?n.scopes.filter(Boolean):[],d=u.length>0?u.length>3?`${u.length} scopes`:`scopes: ${u.join(`, `)}`:null;return e`
31
+ <div class="list-item">
32
+ <div class="list-main">
33
+ <div class="list-title">
34
+ <span class="${i?`redacted`:``}">${s}</span>
35
+ </div>
36
+ <div class="list-sub">
37
+ ${c?e`<span class="${i?`redacted`:``}">${c}</span> `:t}${o}
38
+ ${n.version??``}
39
+ </div>
40
+ <div class="chip-row">
41
+ <span class="chip">${o}</span>
42
+ ${l.map(t=>e`<span class="chip">${t}</span>`)}
43
+ ${d?e`<span class="chip">${d}</span>`:t}
44
+ ${n.platform?e`<span class="chip">${n.platform}</span>`:t}
45
+ ${n.deviceFamily?e`<span class="chip">${n.deviceFamily}</span>`:t}
46
+ ${n.modelIdentifier?e`<span class="chip">${n.modelIdentifier}</span>`:t}
47
+ ${n.version?e`<span class="chip">${n.version}</span>`:t}
48
+ </div>
49
+ </div>
50
+ <div class="list-meta">
51
+ <div>${r(n)}</div>
52
+ <div class="muted">Last input ${a}</div>
53
+ <div class="muted">Reason ${n.reason??``}</div>
54
+ </div>
55
+ </div>
56
+ `}export{a as renderInstances};
57
+ //# sourceMappingURL=instances-BO-5LU4G.js.map
@@ -0,0 +1,3 @@
1
+ var e=globalThis,t=e.ShadowRoot&&(e.ShadyCSS===void 0||e.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,n=Symbol(),r=new WeakMap,i=class{constructor(e,t,r){if(this._$cssResult$=!0,r!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,n=this.t;if(t&&e===void 0){let t=n!==void 0&&n.length===1;t&&(e=r.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&r.set(n,e))}return e}toString(){return this.cssText}},a=e=>new i(typeof e==`string`?e:e+``,void 0,n),o=(e,...t)=>new i(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,n),s=(n,r)=>{if(t)n.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let t of r){let r=document.createElement(`style`),i=e.litNonce;i!==void 0&&r.setAttribute(`nonce`,i),r.textContent=t.cssText,n.appendChild(r)}},c=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return a(t)})(e):e,{is:l,defineProperty:u,getOwnPropertyDescriptor:d,getOwnPropertyNames:ee,getOwnPropertySymbols:te,getPrototypeOf:ne}=Object,f=globalThis,p=f.trustedTypes,re=p?p.emptyScript:``,ie=f.reactiveElementPolyfillSupport,m=(e,t)=>e,h={toAttribute(e,t){switch(t){case Boolean:e=e?re:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},g=(e,t)=>!l(e,t),_={attribute:!0,type:String,converter:h,reflect:!1,useDefault:!1,hasChanged:g};Symbol.metadata??=Symbol(`metadata`),f.litPropertyMetadata??=new WeakMap;var v=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=_){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&u(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=d(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??_}static _$Ei(){if(this.hasOwnProperty(m(`elementProperties`)))return;let e=ne(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(m(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(m(`properties`))){let e=this.properties,t=[...ee(e),...te(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(c(e))}else e!==void 0&&t.push(c(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?h:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?h:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??g)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};v.elementStyles=[],v.shadowRootOptions={mode:`open`},v[m(`elementProperties`)]=new Map,v[m(`finalized`)]=new Map,ie?.({ReactiveElement:v}),(f.reactiveElementVersions??=[]).push(`2.1.2`);var y=globalThis,b=e=>e,x=y.trustedTypes,ae=x?x.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,S=`$lit$`,C=`lit$${Math.random().toFixed(9).slice(2)}$`,w=`?`+C,oe=`<${w}>`,T=document,E=()=>T.createComment(``),D=e=>e===null||typeof e!=`object`&&typeof e!=`function`,O=Array.isArray,k=e=>O(e)||typeof e?.[Symbol.iterator]==`function`,A=`[
2
+ \f\r]`,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,M=/-->/g,N=/>/g,P=RegExp(`>|${A}(?:([^\\s"'>=/]+)(${A}*=${A}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),F=/'/g,I=/"/g,L=/^(?:script|style|textarea|title)$/i,R=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),se=R(1),ce=R(2),z=Symbol.for(`lit-noChange`),B=Symbol.for(`lit-nothing`),V=new WeakMap,H=T.createTreeWalker(T,129);function U(e,t){if(!O(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return ae===void 0?t:ae.createHTML(t)}var W=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=j;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===j?c[1]===`!--`?o=M:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=P):(L.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=P):o=N:o===P?c[0]===`>`?(o=i??j,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?P:c[3]===`"`?I:F):o===I||o===F?o=P:o===M||o===N?o=j:(o=P,i=void 0);let d=o===P&&e[t+1].startsWith(`/>`)?` `:``;a+=o===j?n+oe:l>=0?(r.push(s),n.slice(0,l)+S+n.slice(l)+C+d):n+C+(l===-2?t:d)}return[U(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},G=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=W(t,n);if(this.el=e.createElement(l,r),H.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=H.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(S)){let t=u[o++],n=i.getAttribute(e).split(C),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?X:r[1]===`?`?Z:r[1]===`@`?le:Y}),i.removeAttribute(e)}else e.startsWith(C)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(L.test(i.tagName)){let e=i.textContent.split(C),t=e.length-1;if(t>0){i.textContent=x?x.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],E()),H.nextNode(),c.push({type:2,index:++a});i.append(e[t],E())}}}else if(i.nodeType===8)if(i.data===w)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(C,e+1))!==-1;)c.push({type:7,index:a}),e+=C.length-1}a++}}static createElement(e,t){let n=T.createElement(`template`);return n.innerHTML=e,n}};function K(e,t,n=e,r){if(t===z)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=D(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=K(e,i._$AS(e,t.values),i,r)),t}var q=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??T).importNode(t,!0);H.currentNode=r;let i=H.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new J(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new ue(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=H.nextNode(),a++)}return H.currentNode=T,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},J=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=B,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=K(this,e,t),D(e)?e===B||e==null||e===``?(this._$AH!==B&&this._$AR(),this._$AH=B):e!==this._$AH&&e!==z&&this._(e):e._$litType$===void 0?e.nodeType===void 0?k(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==B&&D(this._$AH)?this._$AA.nextSibling.data=e:this.T(T.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=G.createElement(U(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new q(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=V.get(e.strings);return t===void 0&&V.set(e.strings,t=new G(e)),t}k(t){O(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(E()),this.O(E()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=b(e).nextSibling;b(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},Y=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=B,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=B}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=K(this,e,t,0),a=!D(e)||e!==this._$AH&&e!==z,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=K(this,r[n+o],t,o),s===z&&(s=this._$AH[o]),a||=!D(s)||s!==this._$AH[o],s===B?e=B:e!==B&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===B?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},X=class extends Y{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===B?void 0:e}},Z=class extends Y{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==B)}},le=class extends Y{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=K(this,e,t,0)??B)===z)return;let n=this._$AH,r=e===B&&n!==B||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==B&&(n===B||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},ue=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){K(this,e)}},de={M:S,P:C,A:w,C:1,L:W,R:q,D:k,V:K,I:J,H:Y,N:Z,U:le,B:X,F:ue},fe=y.litHtmlPolyfillSupport;fe?.(G,J),(y.litHtmlVersions??=[]).push(`3.3.2`);var pe=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new J(t.insertBefore(E(),e),e,void 0,n??{})}return i._$AI(e),i},Q=globalThis,$=class extends v{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=pe(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return z}};$._$litElement$=!0,$.finalized=!0,Q.litElementHydrateSupport?.({LitElement:$});var me=Q.litElementPolyfillSupport;me?.({LitElement:$}),(Q.litElementVersions??=[]).push(`4.2.2`);export{de as a,h as c,se as i,o as l,B as n,ce as o,z as r,g as s,$ as t};
3
+ //# sourceMappingURL=lit-zdTgzAJI.js.map
@@ -0,0 +1,74 @@
1
+ import{i as e,n as t}from"./lit-zdTgzAJI.js";var n=[`trace`,`debug`,`info`,`warn`,`error`,`fatal`];function r(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function i(e,t){return t?[e.message,e.subsystem,e.raw].filter(Boolean).join(` `).toLowerCase().includes(t):!0}function a(a){let o=a.filterText.trim().toLowerCase(),s=n.some(e=>!a.levelFilters[e]),c=a.entries.filter(e=>e.level&&!a.levelFilters[e.level]?!1:i(e,o)),l=o||s?`filtered`:`visible`;return e`
2
+ <section class="card">
3
+ <div class="row" style="justify-content: space-between;">
4
+ <div>
5
+ <div class="card-title">Logs</div>
6
+ <div class="card-sub">Gateway file logs (JSONL).</div>
7
+ </div>
8
+ <div class="row" style="gap: 8px;">
9
+ <button class="btn" ?disabled=${a.loading} @click=${a.onRefresh}>
10
+ ${a.loading?`Loading…`:`Refresh`}
11
+ </button>
12
+ <button
13
+ class="btn"
14
+ ?disabled=${c.length===0}
15
+ @click=${()=>a.onExport(c.map(e=>e.raw),l)}
16
+ >
17
+ Export ${l}
18
+ </button>
19
+ </div>
20
+ </div>
21
+
22
+ <div class="filters" style="margin-top: 14px;">
23
+ <label class="field" style="min-width: 220px;">
24
+ <span>Filter</span>
25
+ <input
26
+ .value=${a.filterText}
27
+ @input=${e=>a.onFilterTextChange(e.target.value)}
28
+ placeholder="Search logs"
29
+ />
30
+ </label>
31
+ <label class="field checkbox">
32
+ <span>Auto-follow</span>
33
+ <input
34
+ type="checkbox"
35
+ .checked=${a.autoFollow}
36
+ @change=${e=>a.onToggleAutoFollow(e.target.checked)}
37
+ />
38
+ </label>
39
+ </div>
40
+
41
+ <div class="chip-row" style="margin-top: 12px;">
42
+ ${n.map(t=>e`
43
+ <label class="chip log-chip ${t}">
44
+ <input
45
+ type="checkbox"
46
+ .checked=${a.levelFilters[t]}
47
+ @change=${e=>a.onLevelToggle(t,e.target.checked)}
48
+ />
49
+ <span>${t}</span>
50
+ </label>
51
+ `)}
52
+ </div>
53
+
54
+ ${a.file?e`<div class="muted" style="margin-top: 10px;">File: ${a.file}</div>`:t}
55
+ ${a.truncated?e`
56
+ <div class="callout" style="margin-top: 10px">
57
+ Log output truncated; showing latest chunk.
58
+ </div>
59
+ `:t}
60
+ ${a.error?e`<div class="callout danger" style="margin-top: 10px;">${a.error}</div>`:t}
61
+
62
+ <div class="log-stream" style="margin-top: 12px;" @scroll=${a.onScroll}>
63
+ ${c.length===0?e` <div class="muted" style="padding: 12px">No log entries.</div> `:c.map(t=>e`
64
+ <div class="log-row">
65
+ <div class="log-time mono">${r(t.time)}</div>
66
+ <div class="log-level ${t.level??``}">${t.level??``}</div>
67
+ <div class="log-subsystem mono">${t.subsystem??``}</div>
68
+ <div class="log-message mono">${t.message??t.raw}</div>
69
+ </div>
70
+ `)}
71
+ </div>
72
+ </section>
73
+ `}export{a as renderLogs};
74
+ //# sourceMappingURL=logs-CaFT90eM.js.map