@pixelzx/genesis 2026.6.19 → 2026.6.21

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 (78) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/.buildstamp +1 -1
  3. package/dist/build-info.json +3 -3
  4. package/dist/cli-startup-metadata.json +1 -1
  5. package/dist/{command-registry-CLq4cavK.js → command-registry-BGb_Uwan.js} +2 -2
  6. package/dist/{command-registry-CKWxX9CM.js → command-registry-DMgJTE4K.js} +2 -2
  7. package/dist/{command-registry-core-Qb3SuoAU.js → command-registry-core-nZQMcxbV.js} +2 -2
  8. package/dist/{completion-cli-Dl4z-FNu.js → completion-cli-BCc1OonY.js} +2 -2
  9. package/dist/{config-cli-Bkxdbh9H.js → config-cli-BZaYp_Ui.js} +1 -1
  10. package/dist/control-ui/assets/Geist-Variable-Bj2R_7yk.woff2 +0 -0
  11. package/dist/control-ui/assets/GeistMono-Variable-Dispecij.woff2 +0 -0
  12. package/dist/control-ui/assets/{agents-BQsvYsmp.js → agents-BoHSZPvB.js} +3 -3
  13. package/dist/control-ui/assets/{canvas-D92UKk4C.js → canvas-DkuTKNbN.js} +2 -2
  14. package/dist/control-ui/assets/{channel-config-extras-CjJYUNaz.js → channel-config-extras-BmGwfDPL.js} +2 -2
  15. package/dist/control-ui/assets/{channels-B23D1XmP.js → channels-v0P0irqY.js} +2 -2
  16. package/dist/control-ui/assets/{cron-CYzrBBv6.js → cron-DD6CAXar.js} +2 -2
  17. package/dist/control-ui/assets/de-ChvNzaWx.js +2 -0
  18. package/dist/control-ui/assets/{debug-C8av-vpc.js → debug-CuUlTIAC.js} +2 -2
  19. package/dist/control-ui/assets/es-CrSDgcQ5.js +2 -0
  20. package/dist/control-ui/assets/{format-DK0XBCTY.js → format-BOO4MheD.js} +2 -2
  21. package/dist/control-ui/assets/fr-BRwXxDjE.js +2 -0
  22. package/dist/control-ui/assets/i18n-Dr_ijwId.js +3 -0
  23. package/dist/control-ui/assets/id-D6SwOJ8N.js +2 -0
  24. package/dist/control-ui/assets/{index-ChL66WCS.js → index-CYO6b4V3.js} +472 -396
  25. package/dist/control-ui/assets/index-a2bnKy1Z.css +1 -0
  26. package/dist/control-ui/assets/{instances-qfDdYtE0.js → instances-BIg5DC8B.js} +2 -2
  27. package/dist/control-ui/assets/ja-JP-COtC4IfH.js +2 -0
  28. package/dist/control-ui/assets/ko-BzeSxEM4.js +2 -0
  29. package/dist/control-ui/assets/{logs-COvy4E7t.js → logs-BYrqUHTd.js} +2 -2
  30. package/dist/control-ui/assets/{mcp-CipBqkHK.js → mcp-CfklVyVu.js} +2 -2
  31. package/dist/control-ui/assets/memory-Dxu2hVW_.js +37 -0
  32. package/dist/control-ui/assets/models-DmHuwChH.js +76 -0
  33. package/dist/control-ui/assets/{nodes-WP7e87Mm.js → nodes-BAHmvdL1.js} +2 -2
  34. package/dist/control-ui/assets/pl-BFGaZC1a.js +2 -0
  35. package/dist/control-ui/assets/{plugins-BZGJKpWs.js → plugins-CaVRS7jh.js} +2 -2
  36. package/dist/control-ui/assets/{preview-Bp96VQFU.js → preview-yS9kUAt_.js} +1 -1
  37. package/dist/control-ui/assets/pt-BR-B2QYSEq3.js +2 -0
  38. package/dist/control-ui/assets/{sessions-7NbJpVyg.js → sessions-TU5OCoQU.js} +2 -2
  39. package/dist/control-ui/assets/{skills-hW_GTRp3.js → skills-CC23LxGO.js} +2 -2
  40. package/dist/control-ui/assets/{skills-shared-B3ywFtkR.js → skills-shared-BHZ4ntcf.js} +2 -2
  41. package/dist/control-ui/assets/th-CB7L1SFv.js +2 -0
  42. package/dist/control-ui/assets/tr-jlhb5DaE.js +2 -0
  43. package/dist/control-ui/assets/uk-BrLj30-c.js +2 -0
  44. package/dist/control-ui/assets/{wallet-Bga18qp4.js → wallet-DggW1ZUc.js} +2 -2
  45. package/dist/control-ui/assets/zh-CN-BvMSlZSV.js +2 -0
  46. package/dist/control-ui/assets/zh-TW-DvNvr4gT.js +2 -0
  47. package/dist/control-ui/index.html +4 -4
  48. package/dist/entry.js +1 -1
  49. package/dist/{gateway-cli-CQ_df0H7.js → gateway-cli-CPCS4XTI.js} +1 -1
  50. package/dist/index.js +1 -1
  51. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  52. package/dist/postinstall-inventory.json +53 -49
  53. package/dist/{program-iQ-gyjzf.js → program-D6Z9HYd5.js} +1 -1
  54. package/dist/{register.subclis-DPoEvXPT.js → register.subclis-CUxlv4Y7.js} +2 -2
  55. package/dist/{register.subclis-Bj2qMOIk.js → register.subclis-DPpkGluG.js} +1 -1
  56. package/dist/{register.subclis-core-D5JZnDOv.js → register.subclis-core-hOQqRXcI.js} +1 -1
  57. package/dist/{run-main-jhAyrtsM.js → run-main-By1VNkmf.js} +4 -4
  58. package/dist/{runtime-schema-BxS8Xkme.js → runtime-schema-BR36tJn9.js} +1 -1
  59. package/dist/{server-CKr4I406.js → server-C7yMa7AQ.js} +1 -1
  60. package/dist/{server-plugin-bootstrap-CuFEDQoD.js → server-plugin-bootstrap-C2EOYVsD.js} +1 -1
  61. package/dist/{server-plugin-bootstrap-CpGbii2u.js → server-plugin-bootstrap-CWHfoBJK.js} +1 -1
  62. package/dist/{server.impl-DEDRwq4W.js → server.impl-CNE0SpyS.js} +2 -2
  63. package/package.json +1 -1
  64. package/dist/control-ui/assets/de-Bo2jYc5k.js +0 -2
  65. package/dist/control-ui/assets/es-DXjprjQY.js +0 -2
  66. package/dist/control-ui/assets/fr-D9aG4iN3.js +0 -2
  67. package/dist/control-ui/assets/i18n-DTYm2cFA.js +0 -3
  68. package/dist/control-ui/assets/id-tFGrcY4p.js +0 -2
  69. package/dist/control-ui/assets/index-Dq9zdUBj.css +0 -1
  70. package/dist/control-ui/assets/ja-JP-Co6gO61K.js +0 -2
  71. package/dist/control-ui/assets/ko-DX1JeTLk.js +0 -2
  72. package/dist/control-ui/assets/pl-C-85MNL2.js +0 -2
  73. package/dist/control-ui/assets/pt-BR-Ccy2PQNm.js +0 -2
  74. package/dist/control-ui/assets/th-DrR1o93u.js +0 -2
  75. package/dist/control-ui/assets/tr-_LwDKSIT.js +0 -2
  76. package/dist/control-ui/assets/uk-5QZxk_z2.js +0 -2
  77. package/dist/control-ui/assets/zh-CN-Cy9GknjN.js +0 -2
  78. package/dist/control-ui/assets/zh-TW-BsVU-Wb8.js +0 -2
@@ -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,re=f.trustedTypes,ie=re?re.emptyScript:``,ae=f.reactiveElementPolyfillSupport,p=(e,t)=>e,m={toAttribute(e,t){switch(t){case Boolean:e=e?ie: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}},h=(e,t)=>!l(e,t),oe={attribute:!0,type:String,converter:m,reflect:!1,useDefault:!1,hasChanged:h};Symbol.metadata??=Symbol(`metadata`),f.litPropertyMetadata??=new WeakMap;var g=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=oe){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)??oe}static _$Ei(){if(this.hasOwnProperty(p(`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(p(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(p(`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?m: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?m: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??h)(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){}};g.elementStyles=[],g.shadowRootOptions={mode:`open`},g[p(`elementProperties`)]=new Map,g[p(`finalized`)]=new Map,ae?.({ReactiveElement:g}),(f.reactiveElementVersions??=[]).push(`2.1.2`);var _=globalThis,v=e=>e,y=_.trustedTypes,b=y?y.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,x=`$lit$`,S=`lit$${Math.random().toFixed(9).slice(2)}$`,C=`?`+S,se=`<${C}>`,w=document,T=()=>w.createComment(``),E=e=>e===null||typeof e!=`object`&&typeof e!=`function`,D=Array.isArray,O=e=>D(e)||typeof e?.[Symbol.iterator]==`function`,k=`[
2
+ \f\r]`,A=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ce=/-->/g,j=/>/g,M=RegExp(`>|${k}(?:([^\\s"'>=/]+)(${k}*=${k}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),N=/'/g,P=/"/g,le=/^(?:script|style|textarea|title)$/i,ue=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),de=ue(1),fe=ue(2),F=Symbol.for(`lit-noChange`),I=Symbol.for(`lit-nothing`),pe=new WeakMap,L=w.createTreeWalker(w,129);function R(e,t){if(!D(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return b===void 0?t:b.createHTML(t)}var z=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=A;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===A?c[1]===`!--`?o=ce:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=M):(le.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=M):o=j:o===M?c[0]===`>`?(o=i??A,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?M:c[3]===`"`?P:N):o===P||o===N?o=M:o===ce||o===j?o=A:(o=M,i=void 0);let d=o===M&&e[t+1].startsWith(`/>`)?` `:``;a+=o===A?n+se:l>=0?(r.push(s),n.slice(0,l)+x+n.slice(l)+S+d):n+S+(l===-2?t:d)}return[R(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},B=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]=z(t,n);if(this.el=e.createElement(l,r),L.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=L.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(x)){let t=u[o++],n=i.getAttribute(e).split(S),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?G:r[1]===`?`?K:r[1]===`@`?me:W}),i.removeAttribute(e)}else e.startsWith(S)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(le.test(i.tagName)){let e=i.textContent.split(S),t=e.length-1;if(t>0){i.textContent=y?y.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],T()),L.nextNode(),c.push({type:2,index:++a});i.append(e[t],T())}}}else if(i.nodeType===8)if(i.data===C)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(S,e+1))!==-1;)c.push({type:7,index:a}),e+=S.length-1}a++}}static createElement(e,t){let n=w.createElement(`template`);return n.innerHTML=e,n}};function V(e,t,n=e,r){if(t===F)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=E(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=V(e,i._$AS(e,t.values),i,r)),t}var H=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??w).importNode(t,!0);L.currentNode=r;let i=L.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new U(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new he(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=L.nextNode(),a++)}return L.currentNode=w,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++}},U=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=I,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=V(this,e,t),E(e)?e===I||e==null||e===``?(this._$AH!==I&&this._$AR(),this._$AH=I):e!==this._$AH&&e!==F&&this._(e):e._$litType$===void 0?e.nodeType===void 0?O(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!==I&&E(this._$AH)?this._$AA.nextSibling.data=e:this.T(w.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=B.createElement(R(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new H(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=pe.get(e.strings);return t===void 0&&pe.set(e.strings,t=new B(e)),t}k(t){D(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(T()),this.O(T()),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=v(e).nextSibling;v(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},W=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=I,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=I}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=V(this,e,t,0),a=!E(e)||e!==this._$AH&&e!==F,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=V(this,r[n+o],t,o),s===F&&(s=this._$AH[o]),a||=!E(s)||s!==this._$AH[o],s===I?e=I:e!==I&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===I?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},G=class extends W{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===I?void 0:e}},K=class extends W{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==I)}},me=class extends W{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=V(this,e,t,0)??I)===F)return;let n=this._$AH,r=e===I&&n!==I||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==I&&(n===I||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)}},he=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){V(this,e)}},ge={M:x,P:S,A:C,C:1,L:z,R:H,D:O,V,I:U,H:W,N:K,U:me,B:G,F:he},_e=_.litHtmlPolyfillSupport;_e?.(B,U),(_.litHtmlVersions??=[]).push(`3.3.2`);var ve=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new U(t.insertBefore(T(),e),e,void 0,n??{})}return i._$AI(e),i},q=globalThis,J=class extends g{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=ve(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return F}};J._$litElement$=!0,J.finalized=!0,q.litElementHydrateSupport?.({LitElement:J});var ye=q.litElementPolyfillSupport;ye?.({LitElement:J}),(q.litElementVersions??=[]).push(`4.2.2`);function Y(e){return!!e&&typeof e.getItem==`function`&&typeof e.setItem==`function`}function X(e){let t=Object.getOwnPropertyDescriptor(globalThis,e);if(typeof process<`u`&&{}?.VITEST)return t&&!t.get&&Y(t.value)?t.value:null;if(typeof window<`u`&&typeof document<`u`)try{let t=window[e];return Y(t)?t:null}catch{return null}return t&&!t.get&&Y(t.value)?t.value:null}function Z(){return X(`localStorage`)}function be(){return X(`sessionStorage`)}var xe={common:{health:`Health`,ok:`OK`,yes:`Yes`,no:`No`,active:`Active`,loading:`Loading…`,refreshing:`Refreshing…`,online:`Online`,offline:`Offline`,connect:`Connect`,connected:`Connected`,refresh:`Refresh`,reload:`Reload`,probe:`Probe`,call:`Call`,confirm:`Confirm`,cancel:`Cancel`,unselect:`Unselect`,enabled:`Enabled`,disabled:`Disabled`,na:`n/a`,configured:`Configured`,running:`Running`,linked:`Linked`,mode:`Mode`,baseUrl:`Base URL`,lastStart:`Last start`,lastProbe:`Last probe`,lastInbound:`Last inbound`,lastConnect:`Last connect`,lastMessage:`Last message`,authAge:`Auth age`,credential:`Credential`,audience:`Audience`,publicKey:`Public Key`,probeOk:`Probe ok`,probeFailed:`Probe failed`,reloadConfig:`Reload Config`,loadConfig:`Load config`,loadApprovals:`Load approvals`,settingsSections:`Settings sections`,version:`Version`,docs:`Docs`,theme:`Theme`,resources:`Resources`,search:`Search`,save:`Save`,saving:`Saving…`,saveAndPublish:`Save & Publish`,importing:`Importing…`,importFromRelays:`Import from Relays`,showAdvanced:`Show Advanced`,hideAdvanced:`Hide Advanced`,unsavedChanges:`You have unsaved changes`,secondsAgo:`{count}s ago`,working:`Working…`,showQr:`Show QR`,relink:`Relink`,waitForScan:`Wait for scan`,logout:`Logout`},channels:{health:{title:`Channel health`,subtitle:`Channel status snapshots from the gateway.`,noSnapshotYet:`No snapshot yet.`},generic:{subtitle:`Channel status and configuration.`},wizard:{addChannel:`Add channel`,toolbarSubtitle:`Add or update channel accounts with the guided setup flow.`,title:`Channel setup`,subtitle:`Answer each prompt to update genesis.json.`,continue:`Continue`,doneTitle:`Channel setup`,errorTitle:`Channel setup failed`},gatewayUrlConfirmation:{title:`Change Gateway URL`,subtitle:`This will reconnect to a different gateway server`,warning:`Only confirm if you trust this URL. Malicious URLs can compromise your system.`},nostr:{profile:`Profile`,editProfile:`Edit Profile`,profilePicture:`Profile picture`,noProfile:`No profile set.`,noProfileHint:`Click "Edit Profile" to add your name, bio, and avatar.`,name:`Name`,displayName:`Display Name`,about:`About`,advanced:`Advanced`,profilePicturePreview:`Profile picture preview`,account:`Account`,username:`Username`,usernameHelp:`Short username (e.g., satoshi)`,bio:`Bio`,bioPlaceholder:`Tell people about yourself...`,bioHelp:`A brief bio or description`,displayNameHelp:`Your full display name`,avatarUrl:`Avatar URL`,avatarHelp:`HTTPS URL to your profile picture`,bannerUrl:`Banner URL`,bannerHelp:`HTTPS URL to a banner image`,website:`Website`,websiteHelp:`Your personal website`,nip05Identifier:`NIP-05 Identifier`,nip05Help:`Verifiable identifier (e.g., you@domain.com)`,lightningAddress:`Lightning Address`,lightningHelp:`Lightning address for tips (LUD-16)`}},nodes:{binding:{loadConfigHint:`Load config to edit bindings.`,formModeHint:`Switch the Config tab to Form mode to edit bindings here.`,execNodeBinding:`Exec node binding`,execNodeBindingSubtitle:`Pin agents to a specific node when using exec host=node.`,defaultBinding:`Default binding`,defaultBindingHint:`Used when agents do not override a node binding.`,node:`Node`}},instances:{title:`Connected Instances`,subtitle:`Presence beacons from the gateway and clients.`,showHosts:`Show hosts and IPs`,hideHosts:`Hide hosts and IPs`,toggleHostVisibility:`Toggle host visibility`,noInstances:`No instances reported yet.`,lastInput:`Last input {time}`,reason:`Reason {reason}`},agentTools:{connectedSource:`Connected: {id}`,connected:`Connected`,channelSource:`Channel: {id}`,channel:`Channel`,builtIn:`Built-in`},nav:{chat:`Chat`,control:`Control`,agent:`Agent`,tools:`Tools`,settings:`Settings`,expand:`Expand sidebar`,collapse:`Collapse sidebar`,resize:`Resize sidebar`},tabs:{agents:`Agents`,overview:`Overview`,canvas:`Canvas`,channels:`Channels`,instances:`Instances`,sessions:`Sessions`,usage:`Usage`,wallet:`Wallet`,cron:`Cron Jobs`,skills:`Skills`,mcp:`MCP`,plugins:`Plugins`,models:`Models`,memory:`Memory`,nodes:`Nodes`,chat:`Chat`,config:`Config`,communications:`Communications`,appearance:`Appearance`,automation:`Automation`,infrastructure:`Infrastructure`,aiAgents:`AI & Agents`,debug:`Debug`,logs:`Logs`,dreams:`Dreaming`},subtitles:{agents:`Workspaces, tools, identities.`,overview:`Status, entry points, health.`,canvas:`Hosted Canvas documents and rich previews.`,channels:`Channels and settings.`,instances:`Connected clients and nodes.`,sessions:`Active sessions and defaults.`,usage:`API usage and costs.`,wallet:`Addresses, balances, and wallet settings.`,cron:`Wakeups and recurring runs.`,skills:`Skills and API keys.`,mcp:`Manage Model Context Protocol servers for this Gateway.`,plugins:`Install and manage Gateway plugins.`,models:`Model catalog and providers.`,memory:`Agentic memory store.`,nodes:`Paired devices and commands.`,chat:`Gateway chat for quick interventions.`,config:`Edit genesis.json.`,communications:`Channels, messages, and audio settings.`,appearance:`Theme, UI, and setup wizard settings.`,automation:`Commands, hooks, cron, and plugins.`,infrastructure:`Gateway, web, browser, and media settings.`,aiAgents:`Agents, models, skills, tools, memory, session.`,debug:`Snapshots, events, RPC.`,logs:`Live gateway logs.`,dreams:`Memory dreaming, consolidation, and reflection.`},memoryView:{empty:`No memories stored yet.`,noAgent:`No agent selected. Open an agent to view its memory.`,colMemory:`Memory`,colDetail:`Detail`},modelsView:{empty:`No models available.`,colModel:`Model`,colProvider:`Provider`,colContext:`Context`,colReasoning:`Reasoning`,colModels:`Models`,colStatus:`Status`,reasoning:`Reasoning`,connected:`Connected`,tabModels:`Models`,tabProviders:`Providers`},mcpView:{title:`MCP Servers`,subtitle:`Manage Model Context Protocol servers available to this Gateway.`,add:{title:`Add MCP server`,tabPreset:`Presets`,tabLink:`By link`,tabJson:`By JSON`,token:{label:`Auth token`,placeholder:`Paste an access token`,hint:`Optional. Sent as the Authorization: Bearer header with every request.`},preset:{intro:`Pick a popular MCP server to add in one step.`,selected:`Configure {label}`,oauthNote:`Uses OAuth. Save, then click Connect to authorize in your browser.`,tokenDocs:`Where do I get a token?`,save:`Add server`},link:{label:`Server URL`,placeholder:`https://mcp.example.com`,fetch:`Fetch metadata`,fetching:`Fetching…`,previewTitle:`Server preview`,save:`Save server`,cancel:`Cancel`,unsupportedTitle:`No metadata found`,unsupportedHint:`We could not detect a remote MCP server at that URL. Switch to the JSON tab to add it manually.`,nameLabel:`Server name`,transportLabel:`Transport`},json:{nameLabel:`Name`,namePlaceholder:`context7`,configLabel:`Config (JSON)`,configHint:`Use url + transport for remote (HTTP/SSE) servers, or command + args for local stdio servers.`,save:`Save server`,saveAs:`Save as new`,update:`Update server`}},list:{empty:`No MCP servers configured yet.`,emptyHint:`Use the form above to add a server.`,count:`{count} server{s}`,oauthRequired:`OAuth required`,connected:`Authenticated`,notConnected:`Not connected`,connect:`Connect`,reconnect:`Reconnect`,disconnect:`Sign out`,edit:`Edit`,delete:`Delete`,testing:`Testing…`,test:`Test`,testOk:`Server responded.`,testFailed:`Server did not respond.`,transportHttp:`HTTP`,transportStdio:`stdio`},oauth:{title:`Connect to {name}`,subtitle:`Genesis will open the authorization page in a new tab.`,open:`Open authorization page`,waiting:`Waiting for callback…`,success:`Connected to {name}.`,failed:`OAuth failed: {message}`,cancelled:`Authorization was cancelled.`,missingMetadata:`Server does not advertise OAuth metadata. Provide a bearer token in the JSON tab.`,manualTitle:`Manual entry`,manualHint:`Paste the access token your provider gave you.`}},canvasView:{workspaceTitle:`Document workspace`,workspaceSubtitle:`Create, upload, update, and reopen hosted Canvas documents.`,recentTitle:`Recent documents`,recentSubtitle:`Latest hosted Canvas manifests.`,previewTitle:`Canvas preview`,source:{file:`File`,html:`HTML`,url:`URL`,path:`Path`},fields:{file:`File`,html:`Inline HTML`,url:`URL`,path:`Gateway-local path`,title:`Title`,id:`Document ID`,height:`Preferred height`,kind:`Kind`,entryUrl:`Entry URL`},actions:{create:`Create`,update:`Update`,reset:`Reset`,open:`Open`},status:{gateway:`Gateway`,host:`Host`,sandbox:`Sandbox`,externalEmbeds:`External embeds`,loading:`Loading documents…`,noDocuments:`No hosted documents yet.`,noPreview:`No preview loaded.`,saving:`Saving Canvas document…`,saved:`Saved {id}.`,selected:`Selected {id}.`},errors:{notConnected:`Connect to the gateway first.`,sourceRequired:`Choose a source before saving.`,fileRequired:`Choose a file to upload.`,idRequired:`Document ID is required for updates.`,untrustedUrl:`Only trusted Canvas URLs under /__genesis__/canvas or /__genesis__/a2ui can be embedded here.`}},overview:{access:{title:`Gateway Access`,subtitle:`Where the dashboard connects and how it authenticates.`,wsUrl:`WebSocket URL`,token:`Gateway Token`,password:`Password (not stored)`,passwordPlaceholder:`system or shared password`,sessionKey:`Default Session Key`,language:`Language`,connectHint:`Click Connect to apply connection changes.`,trustedProxy:`Authenticated via trusted proxy.`,showToken:`Show token`,hideToken:`Hide token`,toggleTokenVisibility:`Toggle token visibility`,showPassword:`Show password`,hidePassword:`Hide password`,togglePasswordVisibility:`Toggle password visibility`},snapshot:{title:`Snapshot`,subtitle:`Latest gateway handshake information.`,status:`Status`,uptime:`Uptime`,tickInterval:`Tick Interval`,lastChannelsRefresh:`Last Channels Refresh`,channelsHint:`Use Channels to link WhatsApp, Telegram, Discord, Signal, or iMessage.`},wallet:{title:`Wallet`,subtitle:`Public addresses from the local encrypted wallet.`,empty:`No wallet keystore found. Run genesis wallet init or genesis wallet import.`,noAccounts:`Wallet keystore exists, but no public accounts were found.`,copyAddress:`Copy address`,manage:`Manage`},stats:{instances:`Instances`,instancesHint:`Presence beacons in the last 5 minutes.`,sessions:`Sessions`,sessionsHint:`Recent session keys tracked by the gateway.`,cron:`Cron`,cronNext:`Next wake {time}`},notes:{title:`Notes`,subtitle:`Quick reminders for remote control setups.`,tailscaleTitle:`Tailscale serve`,tailscaleText:`Prefer serve mode to keep the gateway on loopback with tailnet auth.`,sessionTitle:`Session hygiene`,sessionText:`Use /new or sessions.patch to reset context.`,cronTitle:`Cron reminders`,cronText:`Use isolated sessions for recurring runs.`},auth:{required:`This gateway requires auth. Add a token or password, then click Connect.`,failed:`Auth failed. Re-copy a tokenized URL with {command}, or update the token, then click Connect.`},pairing:{hint:`This device needs pairing approval from the gateway host.`,scopeUpgradeTitle:`Scope upgrade pending approval.`,scopeUpgradeSummary:`This device is already paired, but the requested wider scope is waiting for approval.`,roleUpgradeTitle:`Role upgrade pending approval.`,roleUpgradeSummary:`This device is already paired, but the requested role change is waiting for approval.`,metadataUpgradeTitle:`Device metadata change pending approval.`,metadataUpgradeSummary:`This device is already paired, but the metadata change is waiting for approval.`,mobileHint:`On mobile? Copy the full URL (including #token=...) from genesis dashboard --no-open on your desktop.`,docsTitle:`Device pairing docs (opens in new tab)`,docsLink:`Docs: Device pairing`},insecure:{hint:`This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open {url} on the gateway host.`,stayHttp:`If you must stay on HTTP, set {config} (token-only).`},connection:{title:`How to connect`,step1:`Start the gateway on your host machine:`,step2:`Get a tokenized dashboard URL:`,step3:`Paste the WebSocket URL and token above, or open the tokenized URL directly.`,step4:`Or generate a reusable token:`,docsHint:`For remote access, Tailscale Serve is recommended. `,docsLink:`Read the docs →`,authDocsTitle:`Control UI auth docs (opens in new tab)`,authDocsLink:`Docs: Control UI auth`,tailscaleDocsTitle:`Tailscale Serve docs (opens in new tab)`,tailscaleDocsLink:`Docs: Tailscale Serve`,insecureHttpDocsTitle:`Insecure HTTP docs (opens in new tab)`,insecureHttpDocsLink:`Docs: Insecure HTTP`},cards:{cost:`Cost`,skills:`Skills`,recentSessions:`Recent Sessions`,modelAuth:`Model Auth`,modelAuthOk:`{count} ok`,modelAuthExpired:`{count} expired`,modelAuthExpiring:`{count} expiring`,modelAuthProviders:`{count} providers`,modelAuthUsageLeft:`{pct}% left`,modelAuthExpiresIn:`expires {when}`,modelAuthAttentionExpiredTitle:`Model auth expired`,modelAuthAttentionExpiringTitle:`Model auth expiring soon`,modelAuthAttentionExpiredDesc:`{providers} — re-authenticate with genesis models auth`,modelAuthAttentionExpiringEntry:`{provider} ({when})`},attention:{title:`Attention`},eventLog:{title:`Event Log`},logTail:{title:`Gateway Logs`},quickActions:{newSession:`New Session`,automation:`Automation`,refreshAll:`Refresh All`,terminal:`Terminal`},palette:{placeholder:`Type a command…`,noResults:`No results`}},wallet:{title:`Wallet`,subtitle:`Local wallet addresses, balances, and safety state.`,refreshBalances:`Refresh balances`,configure:`Wallet config`,lastUpdated:`Updated {time}`,status:{title:`Status`,enabled:`Enabled`,keystore:`Keystore`,accounts:`Accounts`,primary:`Primary`,present:`Present`,missing:`Missing`,locked:`Locked`,available:`Available`,notSet:`Not set`},accounts:{title:`Accounts`,subtitle:`Public wallet accounts from the gateway.`,emptyMissing:`No wallet keystore found.`,emptyNoAccounts:`Wallet keystore exists, but no public accounts were found.`,accountId:`Account ID`,network:`Network`,derivation:`Derivation`,balance:`Balance`,balanceUnavailable:`Balance unavailable`,primary:`Primary`,copyAddress:`Copy address`},tokens:{title:`Tokens`,subtitle:`Configured EVM token balances from the gateway.`,balance:`Token balance`,empty:`No configured EVM token balances found.`,refreshHint:`Refresh balances to load configured EVM token balances.`,copyContract:`Copy token contract`},nfts:{title:`NFTs`,subtitle:`Configured EVM NFT collections and tracked token IDs.`,balance:`Collection balance`,tokens:`Tokens`,empty:`No configured EVM NFT holdings found.`,refreshHint:`Refresh balances to load configured EVM NFT holdings.`,noTrackedTokens:`No tracked token IDs owned or configured`,copyContract:`Copy NFT contract`},recoveryPhrase:{title:`Secret Recovery Phrase`,subtitle:`Create or import one phrase that derives every local chain account.`,safety:`The gateway encrypts the phrase locally. Existing phrases are never revealed; a generated phrase is shown once so you can back it up.`,mode:`Recovery phrase mode`,generate:`Generate`,import:`Import`,phraseLabel:`Secret recovery phrase`,phrasePlaceholder:`word1 word2 word3 ...`,passphrase:`Wallet passphrase`,confirmPassphrase:`Confirm passphrase`,passphraseOptional:`Wallet passphrase (optional)`,confirmPassphraseOptional:`Confirm passphrase (optional)`,overwrite:`Replace the existing encrypted wallet`,generateAction:`Generate wallet`,importAction:`Import phrase`,generatedTitle:`Generated phrase, shown once`,copyGenerated:`Copy generated phrase`,successGenerated:`Wallet created from one generated phrase.`,successImported:`Wallet updated from the imported phrase.`},warnings:{title:`Warnings`}},dreaming:{tabs:{scene:`Scene`,diary:`Diary`,advanced:`Advanced`},header:{refresh:`Refresh`,refreshing:`Refreshing…`,on:`Dreaming On`,off:`Dreaming Off`},status:{active:`Dreaming Active`,idle:`Dreaming Idle`,promotedSuffix:`promoted`,nextSweepPrefix:`next sweep`},scene:{backfill:`Backfill`,dedupeDiary:`Dedupe Diary`,reset:`Reset`,clearGrounded:`Clear Replayed`,repairCache:`Repair Dream Cache`,working:`Working…`},phase:{light:`Light`,deep:`Deep`,rem:`Rem`,off:`off`},advanced:{eyebrow:`Review`,title:`Daily Log Review`,description:`Review what came from the daily log, what is waiting for promotion, and what was promoted recently.`,summaryFromDailyLog:`from daily log`,summaryWaiting:`waiting`,summaryPromotedToday:`promoted today`,stagedTitle:`From the Daily Log`,stagedDescription:`Replay candidates pulled from older daily log entries.`,shortTermTitle:`Waiting for Promotion`,shortTermDescription:`Current short-term candidates waiting to graduate into real memory.`,sortRecent:`Most recent`,sortSignals:`Strongest support`,originDailyLog:`replayed`,originLive:`live`,originMixed:`mixed`,promotedTitle:`Recent Promotions`,promotedDescription:`Items that already made it through promotion.`,emptyGrounded:`No staged grounded replay entries right now.`,emptyShortTerm:`No short-term entries to inspect.`,emptyPromoted:`No recent promotions to inspect.`,updatedPrefix:`updated`},stats:{shortTerm:`Short-term`,grounded:`Grounded`,signals:`Signals`,promoted:`Promoted`,phaseHits:`Phase Hits`},trace:{shortTerm:`Short-term`,grounded:`Grounded`,signals:`Signals`,promoted:`Promoted`,groundedLed:`grounded-led`,emptyShortTerm:`No active short-term items.`,emptyGrounded:`No staged grounded items.`,emptySignals:`No active signals.`,emptyPromoted:`Nothing promoted yet today.`},diary:{title:`Dream Diary`,noDreamsYet:`No dreams yet`,noDreamsHint:`Dreams will appear here after the first dreaming cycle runs.`,waitingTitle:`The diary is waiting`,waitingHint:`Narrative entries will appear after the next dreaming cycle.`,older:`Older`,newer:`Newer`,reload:`Reload`,reloading:`Reloading…`},phrases:{consolidatingMemories:`consolidating memories…`,tidyingKnowledgeGraph:`tidying the knowledge graph…`,replayingConversations:`replaying today's conversations…`,weavingShortTerm:`weaving short-term into long-term…`,defragmentingMindPalace:`defragmenting the mind palace…`,filingLooseThoughts:`filing away loose thoughts…`,connectingDots:`connecting distant dots…`,compostingContext:`composting old context windows…`,alphabetizingSubconscious:`alphabetizing the subconscious…`,promotingHunches:`promoting promising hunches…`,forgettingNoise:`forgetting what doesn't matter…`,dreamingEmbeddings:`dreaming in embeddings…`,reorganizingAttic:`reorganizing the memory attic…`,indexingDay:`softly indexing the day…`,nurturingInsights:`nurturing fledgling insights…`,simmeringIdeas:`simmering half-formed ideas…`,whisperingVectorStore:`whispering to the vector store…`}},usage:{page:{subtitle:`See where tokens go, when sessions spike, and what drives cost.`},common:{emptyValue:`—`,unknown:`unknown`},loading:{title:`Usage Overview`,badge:`Loading`},metrics:{tokens:`Tokens`,cost:`Cost`,session:`session`,sessions:`sessions`},presets:{today:`Today`,last7d:`7d`,last30d:`30d`},filters:{title:`Filters`,to:`to`,startDate:`Start date`,endDate:`End date`,timeZone:`Time zone`,timeZoneLocal:`Local`,timeZoneUtc:`UTC`,pin:`Pin`,pinned:`Pinned`,unpin:`Unpin filters`,selectAll:`Select All`,clear:`Clear`,clearAll:`Clear All`,remove:`Remove filter`,all:`All`,days:`Days`,hours:`Hours`,session:`Session`,agent:`Agent`,channel:`Channel`,provider:`Provider`,model:`Model`,tool:`Tool`,daysCount:`{count} days`,hoursCount:`{count} hours`,sessionsCount:`{count} sessions`},query:{placeholder:`Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)`,apply:`Filter (client-side)`,matching:`{shown} of {total} sessions match`,inRange:`{total} sessions in range`,tip:`Tip: use filters or click bars to refine days.`},export:{label:`Export`,sessionsCsv:`Sessions CSV`,dailyCsv:`Daily CSV`,json:`JSON`},empty:{title:`Start with a date range`,subtitle:`Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.`,hint:`Select a date range and click Refresh to load usage.`,noData:`No data`,featureOverview:`Overview cards`,featureSessions:`Session ranking`,featureTimeline:`Timeline drilldown`},daily:{title:`Daily Usage`,total:`Total`,byType:`By Type`,tokensTitle:`Daily Token Usage`,costTitle:`Daily Cost`},breakdown:{output:`Output`,input:`Input`,cacheWrite:`Cache Write`,cacheRead:`Cache Read`,total:`Total`,tokensByType:`Tokens by Type`,costByType:`Cost by Type`},overview:{title:`Usage Overview`,messages:`Messages`,messagesHint:`Total user and assistant messages in range.`,messagesAbbrev:`msgs`,user:`user`,assistant:`assistant`,toolCalls:`Tool Calls`,toolCallsHint:`Total tool call count across sessions.`,toolsUsed:`tools used`,errors:`Errors`,errorsHint:`Total message and tool errors in range.`,toolResults:`tool results`,avgTokens:`Avg Tokens / Msg`,avgTokensHint:`Average tokens per message in this range.`,avgCost:`Avg Cost / Msg`,avgCostHint:`Average cost per message when providers report costs.`,avgCostHintMissing:`Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.`,acrossMessages:`Across {count} messages`,sessions:`Sessions`,sessionsHint:`Distinct sessions in the range.`,sessionsInRange:`of {count} in range`,throughput:`Throughput`,throughputHint:`Throughput shows tokens per minute over active time. Higher is better.`,tokensPerMinute:`tok/min`,perMinute:`/ min`,errorRate:`Error Rate`,errorHint:`Error rate = errors / total messages. Lower is better.`,avgSession:`avg session`,cacheHitRate:`Cache Hit Rate`,cacheHint:`Cache hit rate = cache read / (input + cache read). Higher is better.`,cached:`cached`,prompt:`prompt`,calls:`calls`,topModels:`Top Models`,topProviders:`Top Providers`,topTools:`Top Tools`,topAgents:`Top Agents`,topChannels:`Top Channels`,peakErrorDays:`Peak Error Days`,peakErrorHours:`Peak Error Hours`,noModelData:`No model data`,noProviderData:`No provider data`,noToolCalls:`No tool calls`,noAgentData:`No agent data`,noChannelData:`No channel data`,noErrorData:`No error data`},sessions:{title:`Sessions`,shown:`{count} shown`,total:`{count} total`,avg:`avg`,all:`All`,recent:`Recently viewed`,recentShort:`Recent`,sort:`Sort`,ascending:`Ascending`,descending:`Descending`,clearSelection:`Clear Selection`,noRecent:`No recent sessions`,noneInRange:`No sessions in range`,more:`+{count} more`,selected:`Selected ({count})`,copy:`Copy`,copyName:`Copy session name`,limitReached:`Showing first 1,000 sessions. Narrow date range for complete results.`},details:{noUsageData:`No usage data for this session.`,duration:`Duration`,modelMix:`Model Mix`,filtered:`(filtered)`,close:`Close session details`,noTimeline:`No timeline data`,noDataInRange:`No data in range`,usageOverTime:`Usage Over Time`,reset:`Reset`,perTurn:`Per Turn`,cumulative:`Cumulative`,turnRange:`Turns {start}–{end} of {total}`,assistantOutputTokens:`Assistant output tokens`,userToolInputTokens:`User + tool input tokens`,tokensWrittenToCache:`Tokens written to cache`,tokensReadFromCache:`Tokens read from cache`,noContextData:`No context data`,systemPromptBreakdown:`System Prompt Breakdown`,collapse:`Collapse`,collapseAll:`Collapse All`,expandAll:`Expand All`,baseContextPerMessage:`Base context per message`,system:`System`,systemShort:`Sys`,skills:`Skills`,tools:`Tools`,files:`Files`,ofInput:`of input`,of:`of`,timelineFiltered:`timeline filtered`,conversation:`Conversation`,noMessages:`No messages`,tool:`Tool`,toolResult:`Tool result`,hasTools:`Has tools`,searchConversation:`Search conversation`,you:`You`,noMessagesMatch:`No messages match the filters.`},mosaic:{title:`Activity by Time`,subtitleEmpty:`Estimates require session timestamps.`,subtitle:`Estimated from session spans (first/last activity). Time zone: {zone}.`,noTimelineData:`No timeline data yet.`,dayOfWeek:`Day of Week`,midnight:`Midnight`,fourAm:`4am`,eightAm:`8am`,noon:`Noon`,fourPm:`4pm`,eightPm:`8pm`,legend:`Low → High token density`,sun:`Sun`,mon:`Mon`,tue:`Tue`,wed:`Wed`,thu:`Thu`,fri:`Fri`,sat:`Sat`}},login:{subtitle:`Gateway Dashboard`,passwordPlaceholder:`optional`,showToken:`Show token`,hideToken:`Hide token`,toggleTokenVisibility:`Toggle token visibility`,showPassword:`Show password`,hidePassword:`Hide password`,togglePasswordVisibility:`Toggle password visibility`},chat:{disconnected:`Disconnected from gateway.`,refreshTitle:`Refresh chat data`,focusToggle:`Toggle focus mode (hide sidebar + page header)`,hideCronSessions:`Hide cron sessions`,showCronSessions:`Show cron sessions`,showCronSessionsHidden:`Show cron sessions ({count} hidden)`,onboardingDisabled:`Disabled during setup`},languages:{en:`English`,zhCN:`简体中文 (Simplified Chinese)`,zhTW:`繁體中文 (Traditional Chinese)`,ptBR:`Português (Brazilian Portuguese)`,de:`Deutsch (German)`,es:`Español (Spanish)`,jaJP:`日本語 (Japanese)`,ko:`한국어 (Korean)`,fr:`Français (French)`,tr:`Türkçe (Turkish)`,uk:`Українська (Ukrainian)`,id:`Bahasa Indonesia (Indonesian)`,pl:`Polski (Polish)`,th:`ไทย (Thai)`},cron:{summary:{enabled:`Enabled`,yes:`Yes`,no:`No`,jobs:`Jobs`,nextWake:`Next wake`,refreshing:`Refreshing...`,refresh:`Refresh`},jobs:{title:`Jobs`,subtitle:`All scheduled jobs stored in the gateway.`,shownOf:`{shown} shown of {total}`,searchJobs:`Search jobs`,searchPlaceholder:`Name, description, or agent`,enabled:`Enabled`,schedule:`Schedule`,lastRun:`Last run`,all:`All`,sort:`Sort`,nextRun:`Next run`,recentlyUpdated:`Recently updated`,name:`Name`,direction:`Direction`,ascending:`Ascending`,descending:`Descending`,reset:`Reset`,noMatching:`No matching jobs.`,loading:`Loading...`,loadMore:`Load more jobs`},runs:{title:`Run history`,subtitleAll:`Latest runs across all jobs.`,subtitleJob:`Latest runs for {title}.`,scope:`Scope`,allJobs:`All jobs`,selectedJob:`Selected job`,searchRuns:`Search runs`,searchPlaceholder:`Summary, error, or job`,newestFirst:`Newest first`,oldestFirst:`Oldest first`,status:`Status`,delivery:`Delivery`,clear:`Clear`,allStatuses:`All statuses`,allDelivery:`All delivery`,selectJobHint:`Select a job to inspect run history.`,noMatching:`No matching runs.`,loadMore:`Load more runs`,runStatusOk:`OK`,runStatusError:`Error`,runStatusSkipped:`Skipped`,runStatusUnknown:`Unknown`,deliveryDelivered:`Delivered`,deliveryNotDelivered:`Not delivered`,deliveryUnknown:`Unknown`,deliveryNotRequested:`Not requested`},form:{editJob:`Edit Job`,newJob:`New Job`,updateSubtitle:`Update the selected scheduled job.`,createSubtitle:`Create a scheduled wakeup or agent run.`,required:`Required`,requiredSr:`required`,basics:`Basics`,basicsSub:`Name it, choose the assistant, and set enabled state.`,fieldName:`Name`,description:`Description`,agentId:`Agent ID`,namePlaceholder:`Morning brief`,descriptionPlaceholder:`Optional context for this job`,agentPlaceholder:`main or ops`,agentHelp:`Start typing to pick a known agent, or enter a custom one.`,schedule:`Schedule`,scheduleSub:`Control when this job runs.`,every:`Every`,at:`At`,cronOption:`Cron`,runAt:`Run at`,unit:`Unit`,minutes:`Minutes`,hours:`Hours`,days:`Days`,expression:`Expression`,expressionPlaceholder:`0 7 * * *`,everyAmountPlaceholder:`30`,timezoneOptional:`Timezone (optional)`,timezonePlaceholder:`America/Los_Angeles`,timezoneHelp:`Pick a common timezone or enter any valid IANA timezone.`,jitterHelp:`Need jitter? Use Advanced → Stagger window / Stagger unit.`,execution:`Execution`,executionSub:`Choose when to wake, and what this job should do.`,session:`Session`,main:`Main`,isolated:`Isolated`,sessionHelp:`Main posts a system event. Isolated runs a dedicated agent turn.`,wakeMode:`Wake mode`,now:`Now`,nextHeartbeat:`Next heartbeat`,wakeModeHelp:`Now triggers immediately. Next heartbeat waits for the next cycle.`,payloadKind:`What should run?`,systemEvent:`Post message to main timeline`,agentTurn:`Run assistant task (isolated)`,systemEventHelp:`Sends your text to the gateway main timeline (good for reminders/triggers).`,agentTurnHelp:`Starts an assistant run in its own session using your prompt.`,timeoutSeconds:`Timeout (seconds)`,timeoutPlaceholder:`Optional, e.g. 90`,timeoutHelp:`Optional. Leave blank to use the gateway default timeout behavior for this run.`,mainTimelineMessage:`Main timeline message`,assistantTaskPrompt:`Assistant task prompt`,deliverySection:`Delivery`,deliverySub:`Choose where run summaries are sent.`,resultDelivery:`Result delivery`,announceDefault:`Announce summary (default)`,webhookPost:`Webhook POST`,noneInternal:`None (internal)`,deliveryHelp:`Announce posts a summary to chat. None keeps execution internal.`,webhookUrl:`Webhook URL`,channel:`Channel`,webhookPlaceholder:`https://example.com/cron`,channelHelp:`Choose which connected channel receives the summary.`,webhookHelp:`Send run summaries to a webhook endpoint.`,to:`To`,toPlaceholder:`+1555... or chat id`,toHelp:`Optional recipient override (chat id, phone, or user id).`,advanced:`Advanced`,advancedHelp:`Optional overrides for delivery guarantees, schedule jitter, and model controls.`,deleteAfterRun:`Delete after run`,deleteAfterRunHelp:`Best for one-shot reminders that should auto-clean up.`,clearAgentOverride:`Clear agent override`,clearAgentHelp:`Force this job to use the gateway default assistant.`,exactTiming:`Exact timing (no stagger)`,exactTimingHelp:`Run on exact cron boundaries with no spread.`,staggerWindow:`Stagger window`,staggerUnit:`Stagger unit`,staggerPlaceholder:`30`,seconds:`Seconds`,model:`Model`,modelPlaceholder:`openai/gpt-5.2`,modelHelp:`Start typing to pick a known model, or enter a custom one.`,thinking:`Thinking`,thinkingPlaceholder:`low`,thinkingHelp:`Use a suggested level or enter a provider-specific value.`,bestEffortDelivery:`Best effort delivery`,bestEffortHelp:`Do not fail the job if delivery itself fails.`,cantAddYet:`Can't add job yet`,fillRequired:`Fill the required fields below to enable submit.`,fixFields:`Fix {count} field to continue.`,fixFieldsPlural:`Fix {count} fields to continue.`,saving:`Saving...`,saveChanges:`Save changes`,addJob:`Add job`,cancel:`Cancel`},jobList:{allJobs:`all jobs`,selectJob:`(select a job)`,enabled:`enabled`,disabled:`disabled`,edit:`Edit`,clone:`Clone`,disable:`Disable`,enable:`Enable`,run:`Run`,history:`History`,remove:`Remove`},jobDetail:{system:`System`,prompt:`Prompt`,delivery:`Delivery`,agent:`Agent`},jobState:{status:`Status`,next:`Next`,last:`Last`},runEntry:{noSummary:`No summary.`,runAt:`Run at`,openRunChat:`Open run chat`,next:`Next {rel}`,due:`Due {rel}`},errors:{nameRequired:`Name is required.`,scheduleAtInvalid:`Enter a valid date/time.`,everyAmountInvalid:`Interval must be greater than 0.`,cronExprRequired:`Cron expression is required.`,staggerAmountInvalid:`Stagger must be greater than 0.`,systemTextRequired:`System text is required.`,agentMessageRequired:`Agent message is required.`,timeoutInvalid:`If set, timeout must be greater than 0 seconds.`,webhookUrlRequired:`Webhook URL is required.`,webhookUrlInvalid:`Webhook URL must start with http:// or https://.`,invalidRunTime:`Invalid run time.`,invalidIntervalAmount:`Invalid interval amount.`,cronExprRequiredShort:`Cron expression required.`,invalidStaggerAmount:`Invalid stagger amount.`,systemEventTextRequired:`System event text required.`,agentMessageRequiredShort:`Agent message required.`,nameRequiredShort:`Name required.`}}},Se=`modulepreload`,Ce=function(e,t){return new URL(e,t).href},we={},Q=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Ce(t,n),t in we)return;we[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Se,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Te=[`zh-CN`,`zh-TW`,`pt-BR`,`de`,`es`,`ja-JP`,`ko`,`fr`,`tr`,`uk`,`id`,`pl`,`th`],Ee={"zh-CN":{exportName:`zh_CN`,loader:()=>Q(()=>import(`./zh-CN-BvMSlZSV.js`),[],import.meta.url)},"zh-TW":{exportName:`zh_TW`,loader:()=>Q(()=>import(`./zh-TW-DvNvr4gT.js`),[],import.meta.url)},"pt-BR":{exportName:`pt_BR`,loader:()=>Q(()=>import(`./pt-BR-B2QYSEq3.js`),[],import.meta.url)},de:{exportName:`de`,loader:()=>Q(()=>import(`./de-ChvNzaWx.js`),[],import.meta.url)},es:{exportName:`es`,loader:()=>Q(()=>import(`./es-CrSDgcQ5.js`),[],import.meta.url)},"ja-JP":{exportName:`ja_JP`,loader:()=>Q(()=>import(`./ja-JP-COtC4IfH.js`),[],import.meta.url)},ko:{exportName:`ko`,loader:()=>Q(()=>import(`./ko-BzeSxEM4.js`),[],import.meta.url)},fr:{exportName:`fr`,loader:()=>Q(()=>import(`./fr-BRwXxDjE.js`),[],import.meta.url)},tr:{exportName:`tr`,loader:()=>Q(()=>import(`./tr-jlhb5DaE.js`),[],import.meta.url)},uk:{exportName:`uk`,loader:()=>Q(()=>import(`./uk-BrLj30-c.js`),[],import.meta.url)},id:{exportName:`id`,loader:()=>Q(()=>import(`./id-D6SwOJ8N.js`),[],import.meta.url)},pl:{exportName:`pl`,loader:()=>Q(()=>import(`./pl-BFGaZC1a.js`),[],import.meta.url)},th:{exportName:`th`,loader:()=>Q(()=>import(`./th-CB7L1SFv.js`),[],import.meta.url)}},De=[`en`,...Te];function Oe(e){return e!=null&&De.includes(e)}function ke(e){return Te.includes(e)}function Ae(e){return e.startsWith(`zh`)?e===`zh-TW`||e===`zh-HK`?`zh-TW`:`zh-CN`:e.startsWith(`pt`)?`pt-BR`:e.startsWith(`de`)?`de`:e.startsWith(`es`)?`es`:e.startsWith(`ja`)?`ja-JP`:e.startsWith(`ko`)?`ko`:e.startsWith(`fr`)?`fr`:e.startsWith(`tr`)?`tr`:e.startsWith(`uk`)?`uk`:e.startsWith(`id`)?`id`:e.startsWith(`pl`)?`pl`:e.startsWith(`th`)?`th`:`en`}async function je(e){if(!ke(e))return null;let t=Ee[e];return(await t.loader())[t.exportName]??null}var $=new class{constructor(){this.locale=`en`,this.translations={en:xe},this.subscribers=new Set,this.loadLocale()}readStoredLocale(){let e=Z();if(!e)return null;try{return e.getItem(`genesis.i18n.locale`)}catch{return null}}persistLocale(e){let t=Z();if(t)try{t.setItem(`genesis.i18n.locale`,e)}catch{}}resolveInitialLocale(){let e=this.readStoredLocale();return Oe(e)?e:Ae((typeof globalThis.navigator?.language==`string`?globalThis.navigator.language:null)??``)}loadLocale(){let e=this.resolveInitialLocale();if(e===`en`){this.locale=`en`;return}this.setLocale(e)}getLocale(){return this.locale}async setLocale(e){let t=e!==`en`&&!this.translations[e];if(!(this.locale===e&&!t)){if(t)try{let t=await je(e);if(!t)return;this.translations[e]=t}catch(t){console.error(`Failed to load locale: ${e}`,t);return}this.locale=e,this.persistLocale(e),this.notify()}}registerTranslation(e,t){this.translations[e]=t}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}notify(){this.subscribers.forEach(e=>e(this.locale))}t(e,t){let n=e.split(`.`),r=this.translations[this.locale]||this.translations.en;for(let e of n)if(r&&typeof r==`object`)r=r[e];else{r=void 0;break}if(r===void 0&&this.locale!==`en`){r=this.translations.en;for(let e of n)if(r&&typeof r==`object`)r=r[e];else{r=void 0;break}}return typeof r==`string`?t?r.replace(/\{(\w+)\}/g,(e,n)=>t[n]||`{${n}}`):r:e}},Me=(e,t)=>$.t(e,t),Ne=class{constructor(e){this.host=e,this.host.addController(this)}hostConnected(){this.unsubscribe=$.subscribe(()=>{this.host.requestUpdate()})}hostDisconnected(){this.unsubscribe?.()}};export{o as _,Oe as a,be as c,F as d,de as f,m as g,h,De as i,J as l,fe as m,$ as n,Q as o,ge as p,Me as r,Z as s,Ne as t,I as u};
3
+ //# sourceMappingURL=i18n-Dr_ijwId.js.map
@@ -0,0 +1,2 @@
1
+ var e={common:{health:`Kesehatan`,ok:`OK`,yes:`Ya`,no:`Tidak`,active:`Aktif`,loading:`Memuat…`,refreshing:`Menyegarkan…`,online:`Online`,offline:`Offline`,connect:`Hubungkan`,connected:`Terhubung`,refresh:`Muat ulang`,reload:`Muat ulang`,probe:`Probe`,call:`Panggil`,confirm:`Konfirmasi`,cancel:`Batal`,unselect:`Batalkan pilihan`,enabled:`Diaktifkan`,disabled:`Dinonaktifkan`,na:`t/a`,configured:`Dikonfigurasi`,running:`Berjalan`,linked:`Ditautkan`,mode:`Mode`,baseUrl:`URL Dasar`,lastStart:`Terakhir dimulai`,lastProbe:`Probe terakhir`,lastInbound:`Inbound terakhir`,lastConnect:`Terakhir terhubung`,lastMessage:`Pesan terakhir`,authAge:`Usia autentikasi`,credential:`Kredensial`,audience:`Audiens`,publicKey:`Kunci Publik`,probeOk:`Probe berhasil`,probeFailed:`Probe gagal`,reloadConfig:`Muat Ulang Config`,loadConfig:`Muat config`,loadApprovals:`Muat persetujuan`,settingsSections:`Bagian pengaturan`,version:`Versi`,docs:`Dokumen`,theme:`Tema`,resources:`Sumber daya`,search:`Cari`,save:`Simpan`,saving:`Menyimpan…`,saveAndPublish:`Simpan & Publikasikan`,importing:`Mengimpor…`,importFromRelays:`Impor dari Relay`,showAdvanced:`Tampilkan Lanjutan`,hideAdvanced:`Sembunyikan Lanjutan`,unsavedChanges:`Anda memiliki perubahan yang belum disimpan`,secondsAgo:`{count} dtk lalu`,working:`Memproses…`,showQr:`Tampilkan QR`,relink:`Tautkan ulang`,waitForScan:`Tunggu pemindaian`,logout:`Keluar`},channels:{health:{title:`Kesehatan saluran`,subtitle:`Snapshot status saluran dari gateway.`,noSnapshotYet:`Belum ada snapshot.`},generic:{subtitle:`Status dan konfigurasi saluran.`},wizard:{addChannel:`Add channel`,toolbarSubtitle:`Add or update channel accounts with the guided setup flow.`,title:`Channel setup`,subtitle:`Answer each prompt to update genesis.json.`,continue:`Continue`,doneTitle:`Channel setup`,errorTitle:`Channel setup failed`},gatewayUrlConfirmation:{title:`Ubah URL Gateway`,subtitle:`Ini akan menyambungkan ulang ke server gateway yang berbeda`,warning:`Konfirmasi hanya jika Anda memercayai URL ini. URL berbahaya dapat membahayakan sistem Anda.`},nostr:{profile:`Profil`,editProfile:`Edit Profil`,profilePicture:`Foto profil`,noProfile:`Belum ada profil yang disetel.`,noProfileHint:`Klik "Edit Profil" untuk menambahkan nama, bio, dan avatar Anda.`,name:`Nama`,displayName:`Nama Tampilan`,about:`Tentang`,advanced:`Lanjutan`,profilePicturePreview:`Pratinjau foto profil`,account:`Akun`,username:`Nama pengguna`,usernameHelp:`Nama pengguna singkat (mis., satoshi)`,bio:`Bio`,bioPlaceholder:`Ceritakan tentang diri Anda...`,bioHelp:`Bio atau deskripsi singkat`,displayNameHelp:`Nama tampilan lengkap Anda`,avatarUrl:`URL Avatar`,avatarHelp:`URL HTTPS ke foto profil Anda`,bannerUrl:`URL Banner`,bannerHelp:`URL HTTPS ke gambar banner`,website:`Situs web`,websiteHelp:`Situs web pribadi Anda`,nip05Identifier:`Identifier NIP-05`,nip05Help:`Identifier yang dapat diverifikasi (mis., you@domain.com)`,lightningAddress:`Alamat Lightning`,lightningHelp:`Alamat Lightning untuk tip (LUD-16)`}},nodes:{binding:{loadConfigHint:`Muat config untuk mengedit binding.`,formModeHint:`Ubah tab Config ke mode Form untuk mengedit binding di sini.`,execNodeBinding:`Binding node exec`,execNodeBindingSubtitle:`Sematkan agen ke node tertentu saat menggunakan exec host=node.`,defaultBinding:`Binding default`,defaultBindingHint:`Digunakan saat agen tidak menimpa binding node.`,node:`Node`}},instances:{title:`Instance Terhubung`,subtitle:`Beacon kehadiran dari gateway dan klien.`,showHosts:`Tampilkan host dan IP`,hideHosts:`Sembunyikan host dan IP`,toggleHostVisibility:`Alihkan visibilitas host`,noInstances:`Belum ada instance yang dilaporkan.`,lastInput:`Input terakhir {time}`,reason:`Alasan {reason}`},agentTools:{connectedSource:`Terhubung: {id}`,connected:`Terhubung`,channelSource:`Saluran: {id}`,channel:`Saluran`,builtIn:`Bawaan`},nav:{chat:`Chat`,control:`Kontrol`,agent:`Agen`,tools:`Tools`,settings:`Pengaturan`,expand:`Perluas bilah samping`,collapse:`Ciutkan bilah samping`,resize:`Ubah ukuran bilah samping`},tabs:{agents:`Agen`,overview:`Ikhtisar`,canvas:`Canvas`,channels:`Saluran`,instances:`Instans`,sessions:`Sesi`,usage:`Penggunaan`,wallet:`Wallet`,cron:`Tugas Cron`,skills:`Skills`,mcp:`MCP`,plugins:`Plugins`,models:`Models`,memory:`Memory`,nodes:`Node`,chat:`Chat`,config:`Konfigurasi`,communications:`Komunikasi`,appearance:`Tampilan`,automation:`Otomatisasi`,infrastructure:`Infrastruktur`,aiAgents:`AI & Agen`,debug:`Debug`,logs:`Log`,dreams:`Mimpi`},subtitles:{agents:`Ruang kerja, alat, identitas.`,overview:`Status, titik masuk, kesehatan.`,canvas:`Hosted Canvas documents and rich previews.`,channels:`Saluran dan pengaturan.`,instances:`Klien dan node yang terhubung.`,sessions:`Sesi aktif dan default.`,usage:`Penggunaan API dan biaya.`,wallet:`Addresses, balances, and wallet settings.`,cron:`Bangun dan proses berulang.`,skills:`Skills dan kunci API.`,mcp:`Manage Model Context Protocol servers for this Gateway.`,plugins:`Install and manage Gateway plugins.`,models:`Model catalog and providers.`,memory:`Agentic memory store.`,nodes:`Perangkat yang dipasangkan dan perintah.`,chat:`Chat Gateway untuk intervensi cepat.`,config:`Edit genesis.json.`,communications:`Saluran, pesan, dan pengaturan audio.`,appearance:`Tema, UI, dan pengaturan wizard penyiapan.`,automation:`Perintah, hook, cron, dan plugin.`,infrastructure:`Pengaturan Gateway, web, browser, dan media.`,aiAgents:`Agen, model, Skills, alat, memori, sesi.`,debug:`Snapshot, peristiwa, RPC.`,logs:`Log Gateway langsung.`,dreams:`Konsolidasi memori saat tidur.`},memoryView:{empty:`No memories stored yet.`,noAgent:`No agent selected. Open an agent to view its memory.`,colMemory:`Memory`,colDetail:`Detail`},modelsView:{empty:`No models available.`,colModel:`Model`,colProvider:`Provider`,colContext:`Context`,colReasoning:`Reasoning`,colModels:`Models`,colStatus:`Status`,reasoning:`Reasoning`,connected:`Connected`,tabModels:`Models`,tabProviders:`Providers`},mcpView:{title:`MCP Servers`,subtitle:`Manage Model Context Protocol servers available to this Gateway.`,add:{title:`Add MCP server`,tabPreset:`Presets`,tabLink:`By link`,tabJson:`By JSON`,token:{label:`Auth token`,placeholder:`Paste an access token`,hint:`Optional. Sent as the Authorization: Bearer header with every request.`},preset:{intro:`Pick a popular MCP server to add in one step.`,selected:`Configure {label}`,oauthNote:`Uses OAuth. Save, then click Connect to authorize in your browser.`,tokenDocs:`Where do I get a token?`,save:`Add server`},link:{label:`Server URL`,placeholder:`https://mcp.example.com`,fetch:`Fetch metadata`,fetching:`Fetching…`,previewTitle:`Server preview`,save:`Save server`,cancel:`Cancel`,unsupportedTitle:`No metadata found`,unsupportedHint:`We could not detect a remote MCP server at that URL. Switch to the JSON tab to add it manually.`,nameLabel:`Server name`,transportLabel:`Transport`},json:{nameLabel:`Name`,namePlaceholder:`context7`,configLabel:`Config (JSON)`,configHint:`Use url + transport for remote (HTTP/SSE) servers, or command + args for local stdio servers.`,save:`Save server`,saveAs:`Save as new`,update:`Update server`}},list:{empty:`No MCP servers configured yet.`,emptyHint:`Use the form above to add a server.`,count:`{count} server{s}`,oauthRequired:`OAuth required`,connected:`Authenticated`,notConnected:`Not connected`,connect:`Connect`,reconnect:`Reconnect`,disconnect:`Sign out`,edit:`Edit`,delete:`Delete`,testing:`Testing…`,test:`Test`,testOk:`Server responded.`,testFailed:`Server did not respond.`,transportHttp:`HTTP`,transportStdio:`stdio`},oauth:{title:`Connect to {name}`,subtitle:`Genesis will open the authorization page in a new tab.`,open:`Open authorization page`,waiting:`Waiting for callback…`,success:`Connected to {name}.`,failed:`OAuth failed: {message}`,cancelled:`Authorization was cancelled.`,missingMetadata:`Server does not advertise OAuth metadata. Provide a bearer token in the JSON tab.`,manualTitle:`Manual entry`,manualHint:`Paste the access token your provider gave you.`}},canvasView:{workspaceTitle:`Document workspace`,workspaceSubtitle:`Create, upload, update, and reopen hosted Canvas documents.`,recentTitle:`Recent documents`,recentSubtitle:`Latest hosted Canvas manifests.`,previewTitle:`Canvas preview`,source:{file:`File`,html:`HTML`,url:`URL`,path:`Path`},fields:{file:`File`,html:`Inline HTML`,url:`URL`,path:`Gateway-local path`,title:`Title`,id:`Document ID`,height:`Preferred height`,kind:`Kind`,entryUrl:`Entry URL`},actions:{create:`Create`,update:`Update`,reset:`Reset`,open:`Open`},status:{gateway:`Gateway`,host:`Host`,sandbox:`Sandbox`,externalEmbeds:`External embeds`,loading:`Loading documents…`,noDocuments:`No hosted documents yet.`,noPreview:`No preview loaded.`,saving:`Saving Canvas document…`,saved:`Saved {id}.`,selected:`Selected {id}.`},errors:{notConnected:`Connect to the gateway first.`,sourceRequired:`Choose a source before saving.`,fileRequired:`Choose a file to upload.`,idRequired:`Document ID is required for updates.`,untrustedUrl:`Only trusted Canvas URLs under /__genesis__/canvas or /__genesis__/a2ui can be embedded here.`}},overview:{access:{title:`Akses Gateway`,subtitle:`Tempat dasbor terhubung dan cara autentikasinya.`,wsUrl:`URL WebSocket`,token:`Token Gateway`,password:`Kata sandi (tidak disimpan)`,passwordPlaceholder:`kata sandi sistem atau bersama`,sessionKey:`Kunci Sesi Default`,language:`Bahasa`,connectHint:`Klik Connect untuk menerapkan perubahan koneksi.`,trustedProxy:`Diautentikasi melalui proxy tepercaya.`,showToken:`Tampilkan token`,hideToken:`Sembunyikan token`,toggleTokenVisibility:`Alihkan visibilitas token`,showPassword:`Tampilkan kata sandi`,hidePassword:`Sembunyikan kata sandi`,togglePasswordVisibility:`Alihkan visibilitas kata sandi`},snapshot:{title:`Snapshot`,subtitle:`Informasi handshake Gateway terbaru.`,status:`Status`,uptime:`Waktu aktif`,tickInterval:`Interval Tick`,lastChannelsRefresh:`Refresh Saluran Terakhir`,channelsHint:`Gunakan Channels untuk menautkan WhatsApp, Telegram, Discord, Signal, atau iMessage.`},wallet:{title:`Wallet`,subtitle:`Public addresses from the local encrypted wallet.`,empty:`No wallet keystore found. Run genesis wallet init or genesis wallet import.`,noAccounts:`Wallet keystore exists, but no public accounts were found.`,copyAddress:`Copy address`,manage:`Manage`},stats:{instances:`Instans`,instancesHint:`Beacon presence dalam 5 menit terakhir.`,sessions:`Sesi`,sessionsHint:`Kunci sesi terbaru yang dilacak oleh Gateway.`,cron:`Cron`,cronNext:`Bangun berikutnya {time}`},notes:{title:`Catatan`,subtitle:`Pengingat cepat untuk pengaturan kendali jarak jauh.`,tailscaleTitle:`Tailscale serve`,tailscaleText:`Utamakan mode serve untuk menjaga gateway tetap di loopback dengan auth tailnet.`,sessionTitle:`Kebersihan sesi`,sessionText:`Gunakan /new atau sessions.patch untuk mereset konteks.`,cronTitle:`Pengingat cron`,cronText:`Gunakan sesi terisolasi untuk proses berulang.`},auth:{required:`Gateway ini memerlukan auth. Tambahkan token atau kata sandi, lalu klik Connect.`,failed:`Auth gagal. Salin ulang URL bertoken dengan {command}, atau perbarui token, lalu klik Connect.`},pairing:{hint:`Perangkat ini memerlukan persetujuan pairing dari host gateway.`,scopeUpgradeTitle:`Peningkatan cakupan menunggu persetujuan.`,scopeUpgradeSummary:`Perangkat ini sudah dipasangkan, tetapi perluasan cakupan yang diminta sedang menunggu persetujuan.`,roleUpgradeTitle:`Peningkatan peran menunggu persetujuan.`,roleUpgradeSummary:`Perangkat ini sudah dipasangkan, tetapi perubahan peran yang diminta sedang menunggu persetujuan.`,metadataUpgradeTitle:`Perubahan metadata perangkat menunggu persetujuan.`,metadataUpgradeSummary:`Perangkat ini sudah dipasangkan, tetapi perubahan metadata sedang menunggu persetujuan.`,mobileHint:`Di seluler? Salin URL lengkap (termasuk #token=...) dari genesis dashboard --no-open di desktop Anda.`,docsTitle:`Dokumentasi pemasangan perangkat (dibuka di tab baru)`,docsLink:`Dokumentasi: Pemasangan perangkat`},insecure:{hint:`Halaman ini menggunakan HTTP, jadi browser memblokir identitas perangkat. Gunakan HTTPS (Tailscale Serve) atau buka {url} di host gateway.`,stayHttp:`Jika Anda harus tetap menggunakan HTTP, setel {config} (khusus token).`},connection:{title:`Cara terhubung`,step1:`Mulai gateway di mesin host Anda:`,step2:`Dapatkan URL dasbor bertoken:`,step3:`Tempel URL WebSocket dan token di atas, atau buka URL bertoken langsung.`,step4:`Atau buat token yang dapat digunakan kembali:`,docsHint:`Untuk akses jarak jauh, Tailscale Serve direkomendasikan. `,docsLink:`Baca dokumentasi →`,authDocsTitle:`Dokumentasi autentikasi Control UI (dibuka di tab baru)`,authDocsLink:`Dokumentasi: autentikasi Control UI`,tailscaleDocsTitle:`Dokumentasi Tailscale Serve (dibuka di tab baru)`,tailscaleDocsLink:`Dokumentasi: Tailscale Serve`,insecureHttpDocsTitle:`Dokumentasi HTTP tidak aman (dibuka di tab baru)`,insecureHttpDocsLink:`Dokumentasi: HTTP tidak aman`},cards:{cost:`Biaya`,skills:`Skills`,recentSessions:`Sesi Terbaru`,modelAuth:`Autentikasi Model`,modelAuthOk:`{count} ok`,modelAuthExpired:`{count} kedaluwarsa`,modelAuthExpiring:`{count} akan kedaluwarsa`,modelAuthProviders:`{count} penyedia`,modelAuthUsageLeft:`{pct}% tersisa`,modelAuthExpiresIn:`kedaluwarsa {when}`,modelAuthAttentionExpiredTitle:`Autentikasi model kedaluwarsa`,modelAuthAttentionExpiringTitle:`Autentikasi model akan segera kedaluwarsa`,modelAuthAttentionExpiredDesc:`{providers} — autentikasi ulang dengan genesis models auth`,modelAuthAttentionExpiringEntry:`{provider} ({when})`},attention:{title:`Perhatian`},eventLog:{title:`Log Peristiwa`},logTail:{title:`Log Gateway`},quickActions:{newSession:`Sesi Baru`,automation:`Otomatisasi`,refreshAll:`Refresh Semua`,terminal:`Terminal`},palette:{placeholder:`Ketik perintah…`,noResults:`Tidak ada hasil`}},wallet:{title:`Wallet`,subtitle:`Local wallet addresses, balances, and safety state.`,refreshBalances:`Refresh balances`,configure:`Wallet config`,lastUpdated:`Updated {time}`,status:{title:`Status`,enabled:`Enabled`,keystore:`Keystore`,accounts:`Accounts`,primary:`Primary`,present:`Present`,missing:`Missing`,locked:`Locked`,available:`Available`,notSet:`Not set`},accounts:{title:`Accounts`,subtitle:`Public wallet accounts from the gateway.`,emptyMissing:`No wallet keystore found.`,emptyNoAccounts:`Wallet keystore exists, but no public accounts were found.`,accountId:`Account ID`,network:`Network`,derivation:`Derivation`,balance:`Balance`,balanceUnavailable:`Balance unavailable`,primary:`Primary`,copyAddress:`Copy address`},tokens:{title:`Tokens`,subtitle:`Configured EVM token balances from the gateway.`,balance:`Token balance`,empty:`No configured EVM token balances found.`,refreshHint:`Refresh balances to load configured EVM token balances.`,copyContract:`Copy token contract`},nfts:{title:`NFTs`,subtitle:`Configured EVM NFT collections and tracked token IDs.`,balance:`Collection balance`,tokens:`Tokens`,empty:`No configured EVM NFT holdings found.`,refreshHint:`Refresh balances to load configured EVM NFT holdings.`,noTrackedTokens:`No tracked token IDs owned or configured`,copyContract:`Copy NFT contract`},recoveryPhrase:{title:`Secret Recovery Phrase`,subtitle:`Create or import one phrase that derives every local chain account.`,safety:`The gateway encrypts the phrase locally. Existing phrases are never revealed; a generated phrase is shown once so you can back it up.`,mode:`Recovery phrase mode`,generate:`Generate`,import:`Import`,phraseLabel:`Secret recovery phrase`,phrasePlaceholder:`word1 word2 word3 ...`,passphrase:`Wallet passphrase`,confirmPassphrase:`Confirm passphrase`,passphraseOptional:`Wallet passphrase (optional)`,confirmPassphraseOptional:`Confirm passphrase (optional)`,overwrite:`Replace the existing encrypted wallet`,generateAction:`Generate wallet`,importAction:`Import phrase`,generatedTitle:`Generated phrase, shown once`,copyGenerated:`Copy generated phrase`,successGenerated:`Wallet created from one generated phrase.`,successImported:`Wallet updated from the imported phrase.`},warnings:{title:`Warnings`}},dreaming:{tabs:{scene:`Scene`,diary:`Diary`,advanced:`Lanjutan`},header:{refresh:`Segarkan`,refreshing:`Menyegarkan…`,on:`Dreaming Aktif`,off:`Dreaming Nonaktif`},status:{active:`Dreaming Aktif`,idle:`Dreaming Idle`,promotedSuffix:`dipromosikan`,nextSweepPrefix:`penyapuan berikutnya`},scene:{backfill:`Isi ulang`,dedupeDiary:`Buku Harian Dedupe`,reset:`Setel ulang`,clearGrounded:`Hapus yang Ditahankan`,repairCache:`Perbaiki Cache Mimpi`,working:`Sedang bekerja…`},phase:{light:`Ringan`,deep:`Dalam`,rem:`Rem`,off:`nonaktif`},advanced:{eyebrow:`Tinjau`,title:`Tinjauan Log Harian`,description:`Tinjau apa yang berasal dari log harian, apa yang menunggu untuk dipromosikan, dan apa yang baru-baru ini dipromosikan.`,summaryFromDailyLog:`dari log harian`,summaryWaiting:`menunggu`,summaryPromotedToday:`dipromosikan hari ini`,stagedTitle:`Dari Log Harian`,stagedDescription:`Putar ulang kandidat yang diambil dari entri log harian yang lebih lama.`,shortTermTitle:`Menunggu Promosi`,shortTermDescription:`Kandidat jangka pendek saat ini yang menunggu untuk naik menjadi memori nyata.`,sortRecent:`Terbaru`,sortSignals:`Dukungan terkuat`,originDailyLog:`diputar ulang`,originLive:`langsung`,originMixed:`campuran`,promotedTitle:`Promosi Terbaru`,promotedDescription:`Item yang sudah berhasil melewati promosi.`,emptyGrounded:`Tidak ada entri replay grounded yang dipentaskan saat ini.`,emptyShortTerm:`Tidak ada entri jangka pendek untuk diperiksa.`,emptyPromoted:`Tidak ada promosi terbaru untuk diperiksa.`,updatedPrefix:`diperbarui`},stats:{shortTerm:`Jangka pendek`,grounded:`Ditahan`,signals:`Sinyal`,promoted:`Dipromosikan`,phaseHits:`Hit Fase`},trace:{shortTerm:`Jangka pendek`,grounded:`Ditahan`,signals:`Sinyal`,promoted:`Dipromosikan`,groundedLed:`grounded-led`,emptyShortTerm:`Tidak ada item jangka pendek yang aktif.`,emptyGrounded:`Tidak ada item ditahan yang dipentaskan.`,emptySignals:`Tidak ada sinyal aktif.`,emptyPromoted:`Belum ada yang dipromosikan hari ini.`},diary:{title:`Buku Harian Mimpi`,noDreamsYet:`Belum ada mimpi`,noDreamsHint:`Mimpi akan muncul di sini setelah siklus dreaming pertama berjalan.`,waitingTitle:`Buku harian sedang menunggu`,waitingHint:`Entri naratif akan muncul setelah siklus dreaming berikutnya.`,older:`Lebih lama`,newer:`Lebih baru`,reload:`Muat ulang`,reloading:`Memuat ulang…`},phrases:{consolidatingMemories:`mengonsolidasikan memori…`,tidyingKnowledgeGraph:`merapikan knowledge graph…`,replayingConversations:`memutar ulang percakapan hari ini…`,weavingShortTerm:`merangkai jangka pendek menjadi jangka panjang…`,defragmentingMindPalace:`mendefragmentasi istana pikiran…`,filingLooseThoughts:`merapikan pikiran yang tercecer…`,connectingDots:`menghubungkan titik-titik yang berjauhan…`,compostingContext:`mengomposkan jendela konteks lama…`,alphabetizingSubconscious:`mengurutkan alam bawah sadar menurut abjad…`,promotingHunches:`mengangkat firasat yang menjanjikan…`,forgettingNoise:`melupakan yang tidak penting…`,dreamingEmbeddings:`bermimpi dalam embeddings…`,reorganizingAttic:`menata ulang loteng memori…`,indexingDay:`mengindeks hari ini dengan lembut…`,nurturingInsights:`memelihara wawasan yang baru tumbuh…`,simmeringIdeas:`mematangkan ide-ide yang belum sepenuhnya terbentuk…`,whisperingVectorStore:`berbisik kepada vector store…`}},usage:{page:{subtitle:`Lihat ke mana token digunakan, kapan sesi melonjak, dan apa yang mendorong biaya.`},common:{emptyValue:`—`,unknown:`tidak diketahui`},loading:{title:`Ikhtisar Penggunaan`,badge:`Memuat`},metrics:{tokens:`Token`,cost:`Biaya`,session:`sesi`,sessions:`sesi`},presets:{today:`Hari ini`,last7d:`7h`,last30d:`30h`},filters:{title:`Filter`,to:`sampai`,startDate:`Tanggal mulai`,endDate:`Tanggal akhir`,timeZone:`Zona waktu`,timeZoneLocal:`Lokal`,timeZoneUtc:`UTC`,pin:`Sematkan`,pinned:`Disematkan`,unpin:`Lepas sematan filter`,selectAll:`Pilih Semua`,clear:`Bersihkan`,clearAll:`Bersihkan Semua`,remove:`Hapus filter`,all:`Semua`,days:`Hari`,hours:`Jam`,session:`Sesi`,agent:`Agen`,channel:`Saluran`,provider:`Penyedia`,model:`Model`,tool:`Alat`,daysCount:`{count} hari`,hoursCount:`{count} jam`,sessionsCount:`{count} sesi`},query:{placeholder:`Filter sesi (mis. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)`,apply:`Filter (sisi klien)`,matching:`{shown} dari {total} sesi cocok`,inRange:`{total} sesi dalam rentang`,tip:`Tip: gunakan filter atau klik batang untuk mempersempit hari.`},export:{label:`Ekspor`,sessionsCsv:`CSV Sesi`,dailyCsv:`CSV Harian`,json:`JSON`},empty:{title:`Mulai dengan rentang tanggal`,subtitle:`Muat data penggunaan untuk membandingkan biaya, memeriksa sesi, dan menelusuri linimasa tanpa meninggalkan dasbor.`,hint:`Pilih rentang tanggal dan klik Refresh untuk memuat penggunaan.`,noData:`Tidak ada data`,featureOverview:`Kartu ikhtisar`,featureSessions:`Peringkat sesi`,featureTimeline:`Pendalaman linimasa`},daily:{title:`Penggunaan Harian`,total:`Total`,byType:`Berdasarkan Jenis`,tokensTitle:`Penggunaan Token Harian`,costTitle:`Biaya Harian`},breakdown:{output:`Output`,input:`Input`,cacheWrite:`Tulis Cache`,cacheRead:`Baca Cache`,total:`Total`,tokensByType:`Token berdasarkan Jenis`,costByType:`Biaya berdasarkan Jenis`},overview:{title:`Ikhtisar Penggunaan`,messages:`Pesan`,messagesHint:`Total pesan pengguna dan asisten dalam rentang.`,messagesAbbrev:`psn`,user:`pengguna`,assistant:`asisten`,toolCalls:`Panggilan Alat`,toolCallsHint:`Jumlah total panggilan alat di seluruh sesi.`,toolsUsed:`alat yang digunakan`,errors:`Kesalahan`,errorsHint:`Total kesalahan pesan dan alat dalam rentang.`,toolResults:`hasil alat`,avgTokens:`Rata-rata Token / Pesan`,avgTokensHint:`Rata-rata token per pesan dalam rentang ini.`,avgCost:`Rata-rata Biaya / Pesan`,avgCostHint:`Rata-rata biaya per pesan saat penyedia melaporkan biaya.`,avgCostHintMissing:`Rata-rata biaya per pesan saat penyedia melaporkan biaya. Data biaya tidak tersedia untuk sebagian atau semua sesi dalam rentang ini.`,acrossMessages:`Di seluruh {count} pesan`,sessions:`Sesi`,sessionsHint:`Sesi berbeda dalam rentang.`,sessionsInRange:`dari {count} dalam rentang`,throughput:`Throughput`,throughputHint:`Throughput menunjukkan token per menit selama waktu aktif. Semakin tinggi semakin baik.`,tokensPerMinute:`tok/menit`,perMinute:`/ menit`,errorRate:`Tingkat Kesalahan`,errorHint:`Tingkat kesalahan = kesalahan / total pesan. Semakin rendah semakin baik.`,avgSession:`rata-rata sesi`,cacheHitRate:`Tingkat Hit Cache`,cacheHint:`Tingkat hit cache = cache read / (input + cache read). Semakin tinggi semakin baik.`,cached:`di-cache`,prompt:`prompt`,calls:`panggilan`,topModels:`Model Teratas`,topProviders:`Penyedia Teratas`,topTools:`Alat Teratas`,topAgents:`Agen Teratas`,topChannels:`Saluran Teratas`,peakErrorDays:`Hari dengan Puncak Kesalahan`,peakErrorHours:`Jam dengan Puncak Kesalahan`,noModelData:`Tidak ada data model`,noProviderData:`Tidak ada data penyedia`,noToolCalls:`Tidak ada panggilan alat`,noAgentData:`Tidak ada data agen`,noChannelData:`Tidak ada data saluran`,noErrorData:`Tidak ada data kesalahan`},sessions:{title:`Sesi`,shown:`{count} ditampilkan`,total:`{count} total`,avg:`rata-rata`,all:`Semua`,recent:`Baru dilihat`,recentShort:`Terbaru`,sort:`Urutkan`,ascending:`Naik`,descending:`Turun`,clearSelection:`Bersihkan Pilihan`,noRecent:`Tidak ada sesi terbaru`,noneInRange:`Tidak ada sesi dalam rentang`,more:`+{count} lagi`,selected:`Dipilih ({count})`,copy:`Salin`,copyName:`Salin nama sesi`,limitReached:`Menampilkan 1.000 sesi pertama. Persempit rentang tanggal untuk hasil lengkap.`},details:{noUsageData:`Tidak ada data penggunaan untuk sesi ini.`,duration:`Durasi`,modelMix:`Campuran Model`,filtered:`(difilter)`,close:`Tutup detail sesi`,noTimeline:`Tidak ada data linimasa`,noDataInRange:`Tidak ada data dalam rentang`,usageOverTime:`Penggunaan dari Waktu ke Waktu`,reset:`Reset`,perTurn:`Per Giliran`,cumulative:`Kumulatif`,turnRange:`Giliran {start}–{end} dari {total}`,assistantOutputTokens:`Token output asisten`,userToolInputTokens:`Token input pengguna + alat`,tokensWrittenToCache:`Token yang ditulis ke cache`,tokensReadFromCache:`Token yang dibaca dari cache`,noContextData:`Tidak ada data konteks`,systemPromptBreakdown:`Rincian Prompt Sistem`,collapse:`Ciutkan`,collapseAll:`Ciutkan Semua`,expandAll:`Perluas Semua`,baseContextPerMessage:`Konteks dasar per pesan`,system:`Sistem`,systemShort:`Sis`,skills:`Skills`,tools:`Alat`,files:`File`,ofInput:`dari input`,of:`dari`,timelineFiltered:`linimasa difilter`,conversation:`Percakapan`,noMessages:`Tidak ada pesan`,tool:`Alat`,toolResult:`Hasil alat`,hasTools:`Memiliki alat`,searchConversation:`Cari percakapan`,you:`Anda`,noMessagesMatch:`Tidak ada pesan yang cocok dengan filter.`},mosaic:{title:`Aktivitas berdasarkan Waktu`,subtitleEmpty:`Perkiraan memerlukan stempel waktu sesi.`,subtitle:`Diperkirakan dari rentang sesi (aktivitas pertama/terakhir). Zona waktu: {zone}.`,noTimelineData:`Belum ada data linimasa.`,dayOfWeek:`Hari dalam Minggu`,midnight:`Tengah malam`,fourAm:`4am`,eightAm:`8am`,noon:`Siang`,fourPm:`4pm`,eightPm:`8pm`,legend:`Kepadatan token rendah → tinggi`,sun:`Min`,mon:`Sen`,tue:`Sel`,wed:`Rab`,thu:`Kam`,fri:`Jum`,sat:`Sab`}},login:{subtitle:`Dasbor Gateway`,passwordPlaceholder:`opsional`,showToken:`Tampilkan token`,hideToken:`Sembunyikan token`,toggleTokenVisibility:`Alihkan visibilitas token`,showPassword:`Tampilkan kata sandi`,hidePassword:`Sembunyikan kata sandi`,togglePasswordVisibility:`Alihkan visibilitas kata sandi`},chat:{disconnected:`Terputus dari gateway.`,refreshTitle:`Refresh data chat`,focusToggle:`Alihkan mode fokus (sembunyikan bilah samping + header halaman)`,hideCronSessions:`Sembunyikan sesi cron`,showCronSessions:`Tampilkan sesi cron`,showCronSessionsHidden:`Tampilkan sesi cron ({count} disembunyikan)`,onboardingDisabled:`Dinonaktifkan selama penyiapan`},languages:{en:`Inggris`,zhCN:`简体中文 (Tionghoa Sederhana)`,zhTW:`繁體中文 (Tionghoa Tradisional)`,ptBR:`Português (Portugis Brasil)`,de:`Deutsch (Jerman)`,es:`Español (Spanyol)`,jaJP:`日本語 (Jepang)`,ko:`한국어 (Korea)`,fr:`Français (Prancis)`,tr:`Türkçe (Turki)`,uk:`Українська (Ukraina)`,id:`Bahasa Indonesia (Indonesia)`,pl:`Polski (Polandia)`,th:`ไทย (Thai)`},cron:{summary:{enabled:`Diaktifkan`,yes:`Ya`,no:`Tidak`,jobs:`Tugas`,nextWake:`Bangun berikutnya`,refreshing:`Memuat ulang...`,refresh:`Muat ulang`},jobs:{title:`Tugas`,subtitle:`Semua tugas terjadwal yang disimpan di Gateway.`,shownOf:`{shown} ditampilkan dari {total}`,searchJobs:`Cari tugas`,searchPlaceholder:`Nama, deskripsi, atau agen`,enabled:`Diaktifkan`,schedule:`Jadwal`,lastRun:`Terakhir dijalankan`,all:`Semua`,sort:`Urutkan`,nextRun:`Proses berikutnya`,recentlyUpdated:`Baru diperbarui`,name:`Nama`,direction:`Arah`,ascending:`Naik`,descending:`Turun`,reset:`Atur Ulang`,noMatching:`Tidak ada tugas yang cocok.`,loading:`Memuat...`,loadMore:`Muat lebih banyak tugas`},runs:{title:`Riwayat proses`,subtitleAll:`Proses terbaru di semua tugas.`,subtitleJob:`Proses terbaru untuk {title}.`,scope:`Cakupan`,allJobs:`Semua tugas`,selectedJob:`Tugas terpilih`,searchRuns:`Cari proses`,searchPlaceholder:`Ringkasan, kesalahan, atau tugas`,newestFirst:`Terbaru lebih dulu`,oldestFirst:`Terlama lebih dulu`,status:`Status`,delivery:`Pengiriman`,clear:`Bersihkan`,allStatuses:`Semua status`,allDelivery:`Semua pengiriman`,selectJobHint:`Pilih tugas untuk memeriksa riwayat proses.`,noMatching:`Tidak ada proses yang cocok.`,loadMore:`Muat lebih banyak proses`,runStatusOk:`OK`,runStatusError:`Kesalahan`,runStatusSkipped:`Dilewati`,runStatusUnknown:`Tidak diketahui`,deliveryDelivered:`Terkirim`,deliveryNotDelivered:`Tidak terkirim`,deliveryUnknown:`Tidak diketahui`,deliveryNotRequested:`Tidak diminta`},form:{editJob:`Edit Tugas`,newJob:`Tugas Baru`,updateSubtitle:`Perbarui tugas terjadwal yang dipilih.`,createSubtitle:`Buat bangun terjadwal atau proses agen.`,required:`Wajib`,requiredSr:`wajib`,basics:`Dasar`,basicsSub:`Beri nama, pilih asisten, dan atur status aktif.`,fieldName:`Nama`,description:`Deskripsi`,agentId:`ID Agen`,namePlaceholder:`Ringkasan pagi`,descriptionPlaceholder:`Konteks opsional untuk tugas ini`,agentPlaceholder:`main atau ops`,agentHelp:`Mulai mengetik untuk memilih agen yang dikenal, atau masukkan agen kustom.`,schedule:`Jadwal`,scheduleSub:`Atur kapan tugas ini dijalankan.`,every:`Setiap`,at:`Pada`,cronOption:`Cron`,runAt:`Jalankan pada`,unit:`Unit`,minutes:`Menit`,hours:`Jam`,days:`Hari`,expression:`Ekspresi`,expressionPlaceholder:`0 7 * * *`,everyAmountPlaceholder:`30`,timezoneOptional:`Zona waktu (opsional)`,timezonePlaceholder:`America/Los_Angeles`,timezoneHelp:`Pilih zona waktu umum atau masukkan zona waktu IANA yang valid.`,jitterHelp:`Butuh jitter? Gunakan Lanjutan → Jendela stagger / Unit stagger.`,execution:`Eksekusi`,executionSub:`Pilih kapan membangunkan, dan apa yang harus dilakukan tugas ini.`,session:`Sesi`,main:`Utama`,isolated:`Terisolasi`,sessionHelp:`Utama memposting peristiwa sistem. Terisolasi menjalankan giliran agen khusus.`,wakeMode:`Mode bangun`,now:`Sekarang`,nextHeartbeat:`Heartbeat berikutnya`,wakeModeHelp:`Now memicu segera. Next heartbeat menunggu siklus berikutnya.`,payloadKind:`Apa yang harus dijalankan?`,systemEvent:`Posting pesan ke linimasa utama`,agentTurn:`Jalankan tugas asisten (terisolasi)`,systemEventHelp:`Mengirim teks Anda ke linimasa utama Gateway (bagus untuk pengingat/pemicu).`,agentTurnHelp:`Memulai proses asisten di sesinya sendiri menggunakan prompt Anda.`,timeoutSeconds:`Batas waktu (detik)`,timeoutPlaceholder:`Opsional, mis. 90`,timeoutHelp:`Opsional. Biarkan kosong untuk menggunakan perilaku batas waktu default Gateway untuk proses ini.`,mainTimelineMessage:`Pesan linimasa utama`,assistantTaskPrompt:`Prompt tugas asisten`,deliverySection:`Pengiriman`,deliverySub:`Pilih ke mana ringkasan proses dikirim.`,resultDelivery:`Pengiriman hasil`,announceDefault:`Umumkan ringkasan (default)`,webhookPost:`Webhook POST`,noneInternal:`Tidak ada (internal)`,deliveryHelp:`Announce memposting ringkasan ke chat. None menjaga eksekusi tetap internal.`,webhookUrl:`URL Webhook`,channel:`Saluran`,webhookPlaceholder:`https://example.com/cron`,channelHelp:`Pilih saluran terhubung yang menerima ringkasan.`,webhookHelp:`Kirim ringkasan proses ke endpoint webhook.`,to:`Ke`,toPlaceholder:`+1555... atau ID chat`,toHelp:`Penggantian penerima opsional (ID chat, telepon, atau ID pengguna).`,advanced:`Lanjutan`,advancedHelp:`Penggantian opsional untuk jaminan pengiriman, jitter jadwal, dan kontrol model.`,deleteAfterRun:`Hapus setelah proses`,deleteAfterRunHelp:`Terbaik untuk pengingat sekali pakai yang harus dibersihkan otomatis.`,clearAgentOverride:`Hapus penggantian agen`,clearAgentHelp:`Paksa tugas ini menggunakan asisten default Gateway.`,exactTiming:`Waktu tepat (tanpa stagger)`,exactTimingHelp:`Jalankan tepat pada batas cron tanpa penyebaran.`,staggerWindow:`Jendela stagger`,staggerUnit:`Unit stagger`,staggerPlaceholder:`30`,seconds:`Detik`,model:`Model`,modelPlaceholder:`openai/gpt-5.2`,modelHelp:`Mulai mengetik untuk memilih model yang dikenal, atau masukkan model kustom.`,thinking:`Thinking`,thinkingPlaceholder:`low`,thinkingHelp:`Gunakan level yang disarankan atau masukkan nilai khusus penyedia.`,bestEffortDelivery:`Pengiriman best effort`,bestEffortHelp:`Jangan gagalkan tugas jika pengirimannya sendiri gagal.`,cantAddYet:`Belum bisa menambahkan tugas`,fillRequired:`Isi kolom wajib di bawah untuk mengaktifkan kirim.`,fixFields:`Perbaiki {count} kolom untuk melanjutkan.`,fixFieldsPlural:`Perbaiki {count} kolom untuk melanjutkan.`,saving:`Menyimpan...`,saveChanges:`Simpan perubahan`,addJob:`Tambahkan tugas`,cancel:`Batal`},jobList:{allJobs:`semua tugas`,selectJob:`(pilih tugas)`,enabled:`aktif`,disabled:`nonaktif`,edit:`Edit`,clone:`Kloning`,disable:`Nonaktifkan`,enable:`Aktifkan`,run:`Jalankan`,history:`Riwayat`,remove:`Hapus`},jobDetail:{system:`Sistem`,prompt:`Prompt`,delivery:`Pengiriman`,agent:`Agen`},jobState:{status:`Status`,next:`Berikutnya`,last:`Terakhir`},runEntry:{noSummary:`Tidak ada ringkasan.`,runAt:`Dijalankan pada`,openRunChat:`Buka chat proses`,next:`Berikutnya {rel}`,due:`Jatuh tempo {rel}`},errors:{nameRequired:`Nama wajib diisi.`,scheduleAtInvalid:`Masukkan tanggal/waktu yang valid.`,everyAmountInvalid:`Interval harus lebih besar dari 0.`,cronExprRequired:`Ekspresi cron wajib diisi.`,staggerAmountInvalid:`Stagger harus lebih besar dari 0.`,systemTextRequired:`Teks sistem wajib diisi.`,agentMessageRequired:`Pesan agen wajib diisi.`,timeoutInvalid:`Jika diatur, batas waktu harus lebih besar dari 0 detik.`,webhookUrlRequired:`URL Webhook wajib diisi.`,webhookUrlInvalid:`URL Webhook harus diawali dengan http:// atau https://.`,invalidRunTime:`Waktu proses tidak valid.`,invalidIntervalAmount:`Jumlah interval tidak valid.`,cronExprRequiredShort:`Ekspresi cron wajib diisi.`,invalidStaggerAmount:`Jumlah stagger tidak valid.`,systemEventTextRequired:`Teks peristiwa sistem wajib diisi.`,agentMessageRequiredShort:`Pesan agen wajib diisi.`,nameRequiredShort:`Nama wajib diisi.`}}};export{e as id};
2
+ //# sourceMappingURL=id-D6SwOJ8N.js.map