@qingchencloud/openclaw-zh 2026.1.29-nightly.202601301919 → 2026.1.29-nightly.202601302059

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 (42) hide show
  1. package/CHANGELOG.md +10 -9
  2. package/README.md +86 -20
  3. package/dist/agents/system-prompt.js +1 -1
  4. package/dist/build-info.json +3 -3
  5. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  6. package/dist/cli/cli-utils.js +10 -0
  7. package/dist/cli/models-cli.js +20 -8
  8. package/dist/cli/skills-cli.js +7 -7
  9. package/dist/commands/models/auth-order.js +2 -2
  10. package/dist/commands/models/list.status-command.js +37 -17
  11. package/dist/commands/models/shared.js +14 -0
  12. package/dist/control-ui/assets/{index-CNKLKKXX.js → index-Bpe27rQF.js} +2 -2
  13. package/dist/control-ui/assets/{index-CNKLKKXX.js.map → index-Bpe27rQF.js.map} +1 -1
  14. package/dist/control-ui/index.html +1 -1
  15. package/docs/cli/index.md +1 -1
  16. package/docs/cli/models.md +4 -0
  17. package/docs/cli/skills.md +1 -2
  18. package/docs/concepts/agent.md +2 -2
  19. package/docs/concepts/system-prompt.md +1 -1
  20. package/docs/docs.json +10 -2
  21. package/docs/help/faq.md +16 -16
  22. package/docs/install/installer.md +2 -2
  23. package/docs/providers/github-copilot.md +1 -1
  24. package/docs/start/hubs.md +1 -1
  25. package/docs/start/lore.md +1 -1
  26. package/docs/start/showcase.md +14 -14
  27. package/docs/start/wizard.md +8 -8
  28. package/docs/tools/{clawdhub.md → clawhub.md} +39 -39
  29. package/docs/tools/creating-skills.md +1 -1
  30. package/docs/tools/skills.md +9 -9
  31. package/package.json +1 -1
  32. package/skills/1password/SKILL.md +1 -1
  33. package/skills/bluebubbles/SKILL.md +1 -1
  34. package/skills/canvas/SKILL.md +3 -3
  35. package/skills/clawhub/SKILL.md +53 -0
  36. package/skills/nano-banana-pro/SKILL.md +1 -1
  37. package/skills/openai-whisper-api/SKILL.md +1 -1
  38. package/skills/session-logs/SKILL.md +6 -6
  39. package/skills/sherpa-onnx-tts/SKILL.md +6 -6
  40. package/skills/tmux/SKILL.md +4 -4
  41. package/skills/tmux/scripts/find-sessions.sh +2 -2
  42. package/skills/clawdhub/SKILL.md +0 -53
@@ -3099,7 +3099,7 @@ ${e.snapshot?JSON.stringify(e.snapshot,null,2):"暂无快照。"}
3099
3099
  </button>
3100
3100
  <a class="brand" href="https://openclaw.qt.cool" target="_blank" rel="noreferrer" title="访问 OpenClaw 汉化官网" style="text-decoration: none; color: inherit;">
3101
3101
  <div class="brand-logo">
3102
- <img src="https://mintcdn.com/clawdhub/4rYvG-uuZrMK_URE/assets/pixel-lobster.svg?fit=max&auto=format&n=4rYvG-uuZrMK_URE&q=85&s=da2032e9eac3b5d9bfe7eb96ca6a8a26" alt="OpenClaw" />
3102
+ <img src="https://mintcdn.com/clawhub/4rYvG-uuZrMK_URE/assets/pixel-lobster.svg?fit=max&auto=format&n=4rYvG-uuZrMK_URE&q=85&s=da2032e9eac3b5d9bfe7eb96ca6a8a26" alt="OpenClaw" />
3103
3103
  </div>
3104
3104
  <div class="brand-text">
3105
3105
  <div class="brand-title">OPENCLAW 中文版</div>
@@ -3211,4 +3211,4 @@ ${e.snapshot?JSON.stringify(e.snapshot,null,2):"暂无快照。"}
3211
3211
  `}const ig={trace:!0,debug:!0,info:!0,warn:!0,error:!0,fatal:!0},ag={name:"",description:"",agentId:"",enabled:!0,scheduleKind:"every",scheduleAt:"",everyAmount:"30",everyUnit:"minutes",cronExpr:"0 7 * * *",cronTz:"",sessionTarget:"main",wakeMode:"next-heartbeat",payloadKind:"systemEvent",payloadText:"",deliver:!1,channel:"last",to:"",timeoutSeconds:"",postToMainPrefix:""};async function og(e){if(!(!e.client||!e.connected)&&!e.agentsLoading){e.agentsLoading=!0,e.agentsError=null;try{const t=await e.client.request("agents.list",{});t&&(e.agentsList=t)}catch(t){e.agentsError=String(t)}finally{e.agentsLoading=!1}}}const _r={WEBCHAT_UI:"webchat-ui",CONTROL_UI:"openclaw-control-ui",WEBCHAT:"webchat",CLI:"cli",GATEWAY_CLIENT:"gateway-client",MACOS_APP:"openclaw-macos",IOS_APP:"openclaw-ios",ANDROID_APP:"openclaw-android",NODE_HOST:"node-host",TEST:"test",FINGERPRINT:"fingerprint",PROBE:"openclaw-probe"},Ja=_r,Es={WEBCHAT:"webchat",CLI:"cli",UI:"ui",BACKEND:"backend",NODE:"node",PROBE:"probe",TEST:"test"};new Set(Object.values(_r));new Set(Object.values(Es));function rg(e){const t=e.version??(e.nonce?"v2":"v1"),n=e.scopes.join(","),s=e.token??"",i=[t,e.deviceId,e.clientId,e.clientMode,e.role,n,String(e.signedAtMs),s];return t==="v2"&&i.push(e.nonce??""),i.join("|")}const lg=4008;class cg{constructor(t){this.opts=t,this.ws=null,this.pending=new Map,this.closed=!1,this.lastSeq=null,this.connectNonce=null,this.connectSent=!1,this.connectTimer=null,this.backoffMs=800}start(){this.closed=!1,this.connect()}stop(){this.closed=!0,this.ws?.close(),this.ws=null,this.flushPending(new Error("gateway client stopped"))}get connected(){return this.ws?.readyState===WebSocket.OPEN}connect(){this.closed||(this.ws=new WebSocket(this.opts.url),this.ws.onopen=()=>this.queueConnect(),this.ws.onmessage=t=>this.handleMessage(String(t.data??"")),this.ws.onclose=t=>{const n=String(t.reason??"");this.ws=null,this.flushPending(new Error(`gateway closed (${t.code}): ${n}`)),this.opts.onClose?.({code:t.code,reason:n}),this.scheduleReconnect()},this.ws.onerror=()=>{})}scheduleReconnect(){if(this.closed)return;const t=this.backoffMs;this.backoffMs=Math.min(this.backoffMs*1.7,15e3),window.setTimeout(()=>this.connect(),t)}flushPending(t){for(const[,n]of this.pending)n.reject(t);this.pending.clear()}async sendConnect(){if(this.connectSent)return;this.connectSent=!0,this.connectTimer!==null&&(window.clearTimeout(this.connectTimer),this.connectTimer=null);const t=typeof crypto<"u"&&!!crypto.subtle,n=["operator.admin","operator.approvals","operator.pairing"],s="operator";let i=null,a=!1,o=this.opts.token;if(t){i=await zs();const d=Qc({deviceId:i.deviceId,role:s})?.token;o=d??this.opts.token,a=!!(d&&this.opts.token)}const r=o||this.opts.password?{token:o,password:this.opts.password}:void 0;let l;if(t&&i){const d=Date.now(),u=this.connectNonce??void 0,g=rg({deviceId:i.deviceId,clientId:this.opts.clientName??Ja.CONTROL_UI,clientMode:this.opts.mode??Es.WEBCHAT,role:s,scopes:n,signedAtMs:d,token:o??null,nonce:u}),v=await Gc(i.privateKey,g);l={id:i.deviceId,publicKey:i.publicKey,signature:v,signedAt:d,nonce:u}}const p={minProtocol:3,maxProtocol:3,client:{id:this.opts.clientName??Ja.CONTROL_UI,version:this.opts.clientVersion??"dev",platform:this.opts.platform??navigator.platform??"web",mode:this.opts.mode??Es.WEBCHAT,instanceId:this.opts.instanceId},role:s,scopes:n,device:l,caps:[],auth:r,userAgent:navigator.userAgent,locale:navigator.language};this.request("connect",p).then(d=>{d?.auth?.deviceToken&&i&&Fo({deviceId:i.deviceId,role:d.auth.role??s,token:d.auth.deviceToken,scopes:d.auth.scopes??[]}),this.backoffMs=800,this.opts.onHello?.(d)}).catch(()=>{a&&i&&Uo({deviceId:i.deviceId,role:s}),this.ws?.close(lg,"connect failed")})}handleMessage(t){let n;try{n=JSON.parse(t)}catch{return}const s=n;if(s.type==="event"){const i=n;if(i.event==="connect.challenge"){const o=i.payload,r=o&&typeof o.nonce=="string"?o.nonce:null;r&&(this.connectNonce=r,this.sendConnect());return}const a=typeof i.seq=="number"?i.seq:null;a!==null&&(this.lastSeq!==null&&a>this.lastSeq+1&&this.opts.onGap?.({expected:this.lastSeq+1,received:a}),this.lastSeq=a);try{this.opts.onEvent?.(i)}catch(o){console.error("[gateway] event handler error:",o)}return}if(s.type==="res"){const i=n,a=this.pending.get(i.id);if(!a)return;this.pending.delete(i.id),i.ok?a.resolve(i.payload):a.reject(new Error(i.error?.message??"request failed"));return}}request(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return Promise.reject(new Error("gateway not connected"));const s=Bs(),i={type:"req",id:s,method:t,params:n},a=new Promise((o,r)=>{this.pending.set(s,{resolve:l=>o(l),reject:r})});return this.ws.send(JSON.stringify(i)),a}queueConnect(){this.connectNonce=null,this.connectSent=!1,this.connectTimer!==null&&window.clearTimeout(this.connectTimer),this.connectTimer=window.setTimeout(()=>{this.sendConnect()},750)}}function Ms(e){return typeof e=="object"&&e!==null}function dg(e){if(!Ms(e))return null;const t=typeof e.id=="string"?e.id.trim():"",n=e.request;if(!t||!Ms(n))return null;const s=typeof n.command=="string"?n.command.trim():"";if(!s)return null;const i=typeof e.createdAtMs=="number"?e.createdAtMs:0,a=typeof e.expiresAtMs=="number"?e.expiresAtMs:0;return!i||!a?null:{id:t,request:{command:s,cwd:typeof n.cwd=="string"?n.cwd:null,host:typeof n.host=="string"?n.host:null,security:typeof n.security=="string"?n.security:null,ask:typeof n.ask=="string"?n.ask:null,agentId:typeof n.agentId=="string"?n.agentId:null,resolvedPath:typeof n.resolvedPath=="string"?n.resolvedPath:null,sessionKey:typeof n.sessionKey=="string"?n.sessionKey:null},createdAtMs:i,expiresAtMs:a}}function ug(e){if(!Ms(e))return null;const t=typeof e.id=="string"?e.id.trim():"";return t?{id:t,decision:typeof e.decision=="string"?e.decision:null,resolvedBy:typeof e.resolvedBy=="string"?e.resolvedBy:null,ts:typeof e.ts=="number"?e.ts:null}:null}function Tr(e){const t=Date.now();return e.filter(n=>n.expiresAtMs>t)}function pg(e,t){const n=Tr(e).filter(s=>s.id!==t.id);return n.push(t),n}function eo(e,t){return Tr(e).filter(n=>n.id!==t)}async function Cr(e,t){if(!e.client||!e.connected)return;const n=e.sessionKey.trim(),s=n?{sessionKey:n}:{};try{const i=await e.client.request("agent.identity.get",s);if(!i)return;const a=os(i);e.assistantName=a.name,e.assistantAvatar=a.avatar,e.assistantAgentId=a.agentId??null}catch{}}function ss(e,t){const n=(e??"").trim(),s=t.mainSessionKey?.trim();if(!s)return n;if(!n)return s;const i=t.mainKey?.trim()||"main",a=t.defaultAgentId?.trim();return n==="main"||n===i||a&&(n===`agent:${a}:main`||n===`agent:${a}:${i}`)?s:n}function hg(e,t){if(!t?.mainSessionKey)return;const n=ss(e.sessionKey,t),s=ss(e.settings.sessionKey,t),i=ss(e.settings.lastActiveSessionKey,t),a=n||s||e.sessionKey,o={...e.settings,sessionKey:s||a,lastActiveSessionKey:i||a},r=o.sessionKey!==e.settings.sessionKey||o.lastActiveSessionKey!==e.settings.lastActiveSessionKey;a!==e.sessionKey&&(e.sessionKey=a),r&&Se(e,o)}function Er(e){e.lastError=null,e.hello=null,e.connected=!1,e.execApprovalQueue=[],e.execApprovalError=null,e.client?.stop(),e.client=new cg({url:e.settings.gatewayUrl,token:e.settings.token.trim()?e.settings.token:void 0,password:e.password.trim()?e.password:void 0,clientName:"openclaw-control-ui",mode:"webchat",onHello:t=>{e.connected=!0,e.lastError=null,e.hello=t,vg(e,t),e.chatRunId=null,e.chatStream=null,e.chatStreamStartedAt=null,dn(e),Cr(e),og(e),gn(e,{quiet:!0}),Te(e,{quiet:!0}),Js(e)},onClose:({code:t,reason:n})=>{e.connected=!1,t!==1012&&(e.lastError=`disconnected (${t}): ${n||"no reason"}`)},onEvent:t=>fg(e,t),onGap:({expected:t,received:n})=>{e.lastError=`event gap detected (expected seq ${t}, got ${n}); refresh recommended`}}),e.client.start()}function fg(e,t){try{gg(e,t)}catch(n){console.error("[gateway] handleGatewayEvent error:",t.event,n)}}function gg(e,t){if(e.eventLogBuffer=[{ts:Date.now(),event:t.event,payload:t.payload},...e.eventLogBuffer].slice(0,250),e.tab==="debug"&&(e.eventLog=e.eventLogBuffer),t.event==="agent"){if(e.onboarding)return;Jl(e,t.payload);return}if(t.event==="chat"){const n=t.payload;n?.sessionKey&&Ko(e,n.sessionKey);const s=Kl(e,n);(s==="final"||s==="error"||s==="aborted")&&(dn(e),Ld(e),e.refreshSessionsAfterChat&&(e.refreshSessionsAfterChat=!1,s==="final"&&Ke(e,{activeMinutes:0}))),s==="final"&&St(e);return}if(t.event==="presence"){const n=t.payload;n?.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event==="cron"&&e.tab==="cron"&&ei(e),(t.event==="device.pair.requested"||t.event==="device.pair.resolved")&&Te(e,{quiet:!0}),t.event==="exec.approval.requested"){const n=dg(t.payload);if(n){e.execApprovalQueue=pg(e.execApprovalQueue,n),e.execApprovalError=null;const s=Math.max(0,n.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=eo(e.execApprovalQueue,n.id)},s)}return}if(t.event==="exec.approval.resolved"){const n=ug(t.payload);n&&(e.execApprovalQueue=eo(e.execApprovalQueue,n.id))}}function vg(e,t){const n=t.snapshot;n?.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence),n?.health&&(e.debugHealth=n.health),n?.sessionDefaults&&hg(e,n.sessionDefaults)}function mg(e){e.basePath=bd(),vd(e),Ad(e,!0),wd(e),$d(e),window.addEventListener("popstate",e.popStateHandler),Er(e),fd(e),e.tab==="logs"&&Ys(e),e.tab==="debug"&&Zs(e)}function yg(e){ic(e)}function bg(e){window.removeEventListener("popstate",e.popStateHandler),gd(e),Qs(e),Xs(e),xd(e),e.topbarObserver?.disconnect(),e.topbarObserver=null}function wg(e,t){if(e.tab==="chat"&&(t.has("chatMessages")||t.has("chatToolMessages")||t.has("chatStream")||t.has("chatLoading")||t.has("tab"))){const n=t.has("tab"),s=t.has("chatLoading")&&t.get("chatLoading")===!0&&e.chatLoading===!1;un(e,n||s||!e.chatHasAutoScrolled)}e.tab==="logs"&&(t.has("logsEntries")||t.has("logsAutoFollow")||t.has("tab"))&&e.logsAutoFollow&&e.logsAtBottom&&yo(e,t.has("tab")||t.has("logsAutoFollow"))}async function $g(e,t){await gc(e,t),await oe(e,!0)}async function xg(e){await vc(e),await oe(e,!0)}async function Ag(e){await mc(e),await oe(e,!0)}async function kg(e){await ps(e),await be(e),await oe(e,!0)}async function Sg(e){await be(e),await oe(e,!0)}function _g(e){if(!Array.isArray(e))return{};const t={};for(const n of e){if(typeof n!="string")continue;const[s,...i]=n.split(":");if(!s||i.length===0)continue;const a=s.trim(),o=i.join(":").trim();a&&o&&(t[a]=o)}return t}function Mr(e){return(e.channelsSnapshot?.channelAccounts?.nostr??[])[0]?.accountId??e.nostrProfileAccountId??"default"}function Ir(e,t=""){return`/api/channels/nostr/${encodeURIComponent(e)}/profile${t}`}function Tg(e,t,n){e.nostrProfileAccountId=t,e.nostrProfileFormState=xh(n??void 0)}function Cg(e){e.nostrProfileFormState=null,e.nostrProfileAccountId=null}function Eg(e,t,n){const s=e.nostrProfileFormState;s&&(e.nostrProfileFormState={...s,values:{...s.values,[t]:n},fieldErrors:{...s.fieldErrors,[t]:""}})}function Mg(e){const t=e.nostrProfileFormState;t&&(e.nostrProfileFormState={...t,showAdvanced:!t.showAdvanced})}async function Ig(e){const t=e.nostrProfileFormState;if(!t||t.saving)return;const n=Mr(e);e.nostrProfileFormState={...t,saving:!0,error:null,success:null,fieldErrors:{}};try{const s=await fetch(Ir(n),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.values)}),i=await s.json().catch(()=>null);if(!s.ok||i?.ok===!1||!i){const a=i?.error??`Profile update failed (${s.status})`;e.nostrProfileFormState={...t,saving:!1,error:a,success:null,fieldErrors:_g(i?.details)};return}if(!i.persisted){e.nostrProfileFormState={...t,saving:!1,error:"Profile publish failed on all relays.",success:null};return}e.nostrProfileFormState={...t,saving:!1,error:null,success:"Profile published to relays.",fieldErrors:{},original:{...t.values}},await oe(e,!0)}catch(s){e.nostrProfileFormState={...t,saving:!1,error:`Profile update failed: ${String(s)}`,success:null}}}async function Lg(e){const t=e.nostrProfileFormState;if(!t||t.importing)return;const n=Mr(e);e.nostrProfileFormState={...t,importing:!0,error:null,success:null};try{const s=await fetch(Ir(n,"/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoMerge:!0})}),i=await s.json().catch(()=>null);if(!s.ok||i?.ok===!1||!i){const l=i?.error??`Profile import failed (${s.status})`;e.nostrProfileFormState={...t,importing:!1,error:l,success:null};return}const a=i.merged??i.imported??null,o=a?{...t.values,...a}:t.values,r=!!(o.banner||o.website||o.nip05||o.lud16);e.nostrProfileFormState={...t,importing:!1,values:o,error:null,success:i.saved?"Profile imported from relays. Review and publish.":"Profile imported. Review and publish.",showAdvanced:r},i.saved&&await oe(e,!0)}catch(s){e.nostrProfileFormState={...t,importing:!1,error:`Profile import failed: ${String(s)}`,success:null}}}var Rg=Object.defineProperty,Pg=Object.getOwnPropertyDescriptor,b=(e,t,n,s)=>{for(var i=s>1?void 0:s?Pg(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(s?o(t,n,i):o(i))||i);return s&&i&&Rg(t,n,i),i};const is=wl();function Ng(){if(!window.location.search)return!1;const t=new URLSearchParams(window.location.search).get("onboarding");if(!t)return!1;const n=t.trim().toLowerCase();return n==="1"||n==="true"||n==="yes"||n==="on"}let m=class extends Xe{constructor(){super(...arguments),this.settings=$l(),this.password="",this.tab="chat",this.onboarding=Ng(),this.connected=!1,this.theme=this.settings.theme??"system",this.themeResolved="dark",this.hello=null,this.lastError=null,this.eventLog=[],this.eventLogBuffer=[],this.toolStreamSyncTimer=null,this.sidebarCloseTimer=null,this.assistantName=is.name,this.assistantAvatar=is.avatar,this.assistantAgentId=is.agentId??null,this.sessionKey=this.settings.sessionKey,this.chatLoading=!1,this.chatSending=!1,this.chatMessage="",this.chatMessages=[],this.chatToolMessages=[],this.chatStream=null,this.chatStreamStartedAt=null,this.chatRunId=null,this.compactionStatus=null,this.chatAvatarUrl=null,this.chatThinkingLevel=null,this.chatQueue=[],this.chatAttachments=[],this.sidebarOpen=!1,this.sidebarContent=null,this.sidebarError=null,this.splitRatio=this.settings.splitRatio,this.nodesLoading=!1,this.nodes=[],this.devicesLoading=!1,this.devicesError=null,this.devicesList=null,this.execApprovalsLoading=!1,this.execApprovalsSaving=!1,this.execApprovalsDirty=!1,this.execApprovalsSnapshot=null,this.execApprovalsForm=null,this.execApprovalsSelectedAgent=null,this.execApprovalsTarget="gateway",this.execApprovalsTargetNodeId=null,this.execApprovalQueue=[],this.execApprovalBusy=!1,this.execApprovalError=null,this.pendingGatewayUrl=null,this.configLoading=!1,this.configRaw=`{
3212
3212
  }
3213
3213
  `,this.configRawOriginal="",this.configValid=null,this.configIssues=[],this.configSaving=!1,this.configApplying=!1,this.updateRunning=!1,this.applySessionKey=this.settings.lastActiveSessionKey,this.configSnapshot=null,this.configSchema=null,this.configSchemaVersion=null,this.configSchemaLoading=!1,this.configUiHints={},this.configForm=null,this.configFormOriginal=null,this.configFormDirty=!1,this.configFormMode="form",this.configSearchQuery="",this.configActiveSection=null,this.configActiveSubsection=null,this.channelsLoading=!1,this.channelsSnapshot=null,this.channelsError=null,this.channelsLastSuccess=null,this.whatsappLoginMessage=null,this.whatsappLoginQrDataUrl=null,this.whatsappLoginConnected=null,this.whatsappBusy=!1,this.nostrProfileFormState=null,this.nostrProfileAccountId=null,this.presenceLoading=!1,this.presenceEntries=[],this.presenceError=null,this.presenceStatus=null,this.agentsLoading=!1,this.agentsList=null,this.agentsError=null,this.sessionsLoading=!1,this.sessionsResult=null,this.sessionsError=null,this.sessionsFilterActive="",this.sessionsFilterLimit="120",this.sessionsIncludeGlobal=!0,this.sessionsIncludeUnknown=!1,this.cronLoading=!1,this.cronJobs=[],this.cronStatus=null,this.cronError=null,this.cronForm={...ag},this.cronRunsJobId=null,this.cronRuns=[],this.cronBusy=!1,this.skillsLoading=!1,this.skillsReport=null,this.skillsError=null,this.skillsFilter="",this.skillEdits={},this.skillsBusyKey=null,this.skillMessages={},this.debugLoading=!1,this.debugStatus=null,this.debugHealth=null,this.debugModels=[],this.debugHeartbeat=null,this.debugCallMethod="",this.debugCallParams="{}",this.debugCallResult=null,this.debugCallError=null,this.logsLoading=!1,this.logsError=null,this.logsFile=null,this.logsEntries=[],this.logsFilterText="",this.logsLevelFilters={...ig},this.logsAutoFollow=!0,this.logsTruncated=!1,this.logsCursor=null,this.logsLastFetchAt=null,this.logsLimit=500,this.logsMaxBytes=25e4,this.logsAtBottom=!0,this.client=null,this.chatScrollFrame=null,this.chatScrollTimeout=null,this.chatHasAutoScrolled=!1,this.chatUserNearBottom=!0,this.nodesPollInterval=null,this.logsPollInterval=null,this.debugPollInterval=null,this.logsScrollFrame=null,this.toolStreamById=new Map,this.toolStreamOrder=[],this.refreshSessionsAfterChat=!1,this.basePath="",this.popStateHandler=()=>kd(this),this.themeMedia=null,this.themeMediaHandler=null,this.topbarObserver=null}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),mg(this)}firstUpdated(){yg(this)}disconnectedCallback(){bg(this),super.disconnectedCallback()}updated(e){wg(this,e)}connect(){Er(this)}handleChatScroll(e){ec(this,e)}handleLogsScroll(e){tc(this,e)}exportLogs(e,t){sc(e,t)}resetToolStream(){dn(this)}resetChatScroll(){nc(this)}async loadAssistantIdentity(){await Cr(this)}applySettings(e){Se(this,e)}setTab(e){md(this,e)}setTheme(e,t){yd(this,e,t)}async loadOverview(){await jo(this)}async loadCron(){await ei(this)}async handleAbortChat(){await Vo(this)}removeQueuedMessage(e){Md(this,e)}async handleSendChat(e,t){await Id(this,e,t)}async handleWhatsAppStart(e){await $g(this,e)}async handleWhatsAppWait(){await xg(this)}async handleWhatsAppLogout(){await Ag(this)}async handleChannelConfigSave(){await kg(this)}async handleChannelConfigReload(){await Sg(this)}handleNostrProfileEdit(e,t){Tg(this,e,t)}handleNostrProfileCancel(){Cg(this)}handleNostrProfileFieldChange(e,t){Eg(this,e,t)}async handleNostrProfileSave(){await Ig(this)}async handleNostrProfileImport(){await Lg(this)}handleNostrProfileToggleAdvanced(){Mg(this)}async handleExecApprovalDecision(e){const t=this.execApprovalQueue[0];if(!(!t||!this.client||this.execApprovalBusy)){this.execApprovalBusy=!0,this.execApprovalError=null;try{await this.client.request("exec.approval.resolve",{id:t.id,decision:e}),this.execApprovalQueue=this.execApprovalQueue.filter(n=>n.id!==t.id)}catch(n){this.execApprovalError=`Exec approval failed: ${String(n)}`}finally{this.execApprovalBusy=!1}}}handleGatewayUrlConfirm(){const e=this.pendingGatewayUrl;e&&(this.pendingGatewayUrl=null,Se(this,{...this.settings,gatewayUrl:e}),this.connect())}handleGatewayUrlCancel(){this.pendingGatewayUrl=null}handleOpenSidebar(e){this.sidebarCloseTimer!=null&&(window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=null),this.sidebarContent=e,this.sidebarError=null,this.sidebarOpen=!0}handleCloseSidebar(){this.sidebarOpen=!1,this.sidebarCloseTimer!=null&&window.clearTimeout(this.sidebarCloseTimer),this.sidebarCloseTimer=window.setTimeout(()=>{this.sidebarOpen||(this.sidebarContent=null,this.sidebarError=null,this.sidebarCloseTimer=null)},200)}handleSplitRatioChange(e){const t=Math.max(.4,Math.min(.7,e));this.splitRatio=t,this.applySettings({...this.settings,splitRatio:t})}render(){return sg(this)}};b([w()],m.prototype,"settings",2);b([w()],m.prototype,"password",2);b([w()],m.prototype,"tab",2);b([w()],m.prototype,"onboarding",2);b([w()],m.prototype,"connected",2);b([w()],m.prototype,"theme",2);b([w()],m.prototype,"themeResolved",2);b([w()],m.prototype,"hello",2);b([w()],m.prototype,"lastError",2);b([w()],m.prototype,"eventLog",2);b([w()],m.prototype,"assistantName",2);b([w()],m.prototype,"assistantAvatar",2);b([w()],m.prototype,"assistantAgentId",2);b([w()],m.prototype,"sessionKey",2);b([w()],m.prototype,"chatLoading",2);b([w()],m.prototype,"chatSending",2);b([w()],m.prototype,"chatMessage",2);b([w()],m.prototype,"chatMessages",2);b([w()],m.prototype,"chatToolMessages",2);b([w()],m.prototype,"chatStream",2);b([w()],m.prototype,"chatStreamStartedAt",2);b([w()],m.prototype,"chatRunId",2);b([w()],m.prototype,"compactionStatus",2);b([w()],m.prototype,"chatAvatarUrl",2);b([w()],m.prototype,"chatThinkingLevel",2);b([w()],m.prototype,"chatQueue",2);b([w()],m.prototype,"chatAttachments",2);b([w()],m.prototype,"sidebarOpen",2);b([w()],m.prototype,"sidebarContent",2);b([w()],m.prototype,"sidebarError",2);b([w()],m.prototype,"splitRatio",2);b([w()],m.prototype,"nodesLoading",2);b([w()],m.prototype,"nodes",2);b([w()],m.prototype,"devicesLoading",2);b([w()],m.prototype,"devicesError",2);b([w()],m.prototype,"devicesList",2);b([w()],m.prototype,"execApprovalsLoading",2);b([w()],m.prototype,"execApprovalsSaving",2);b([w()],m.prototype,"execApprovalsDirty",2);b([w()],m.prototype,"execApprovalsSnapshot",2);b([w()],m.prototype,"execApprovalsForm",2);b([w()],m.prototype,"execApprovalsSelectedAgent",2);b([w()],m.prototype,"execApprovalsTarget",2);b([w()],m.prototype,"execApprovalsTargetNodeId",2);b([w()],m.prototype,"execApprovalQueue",2);b([w()],m.prototype,"execApprovalBusy",2);b([w()],m.prototype,"execApprovalError",2);b([w()],m.prototype,"pendingGatewayUrl",2);b([w()],m.prototype,"configLoading",2);b([w()],m.prototype,"configRaw",2);b([w()],m.prototype,"configRawOriginal",2);b([w()],m.prototype,"configValid",2);b([w()],m.prototype,"configIssues",2);b([w()],m.prototype,"configSaving",2);b([w()],m.prototype,"configApplying",2);b([w()],m.prototype,"updateRunning",2);b([w()],m.prototype,"applySessionKey",2);b([w()],m.prototype,"configSnapshot",2);b([w()],m.prototype,"configSchema",2);b([w()],m.prototype,"configSchemaVersion",2);b([w()],m.prototype,"configSchemaLoading",2);b([w()],m.prototype,"configUiHints",2);b([w()],m.prototype,"configForm",2);b([w()],m.prototype,"configFormOriginal",2);b([w()],m.prototype,"configFormDirty",2);b([w()],m.prototype,"configFormMode",2);b([w()],m.prototype,"configSearchQuery",2);b([w()],m.prototype,"configActiveSection",2);b([w()],m.prototype,"configActiveSubsection",2);b([w()],m.prototype,"channelsLoading",2);b([w()],m.prototype,"channelsSnapshot",2);b([w()],m.prototype,"channelsError",2);b([w()],m.prototype,"channelsLastSuccess",2);b([w()],m.prototype,"whatsappLoginMessage",2);b([w()],m.prototype,"whatsappLoginQrDataUrl",2);b([w()],m.prototype,"whatsappLoginConnected",2);b([w()],m.prototype,"whatsappBusy",2);b([w()],m.prototype,"nostrProfileFormState",2);b([w()],m.prototype,"nostrProfileAccountId",2);b([w()],m.prototype,"presenceLoading",2);b([w()],m.prototype,"presenceEntries",2);b([w()],m.prototype,"presenceError",2);b([w()],m.prototype,"presenceStatus",2);b([w()],m.prototype,"agentsLoading",2);b([w()],m.prototype,"agentsList",2);b([w()],m.prototype,"agentsError",2);b([w()],m.prototype,"sessionsLoading",2);b([w()],m.prototype,"sessionsResult",2);b([w()],m.prototype,"sessionsError",2);b([w()],m.prototype,"sessionsFilterActive",2);b([w()],m.prototype,"sessionsFilterLimit",2);b([w()],m.prototype,"sessionsIncludeGlobal",2);b([w()],m.prototype,"sessionsIncludeUnknown",2);b([w()],m.prototype,"cronLoading",2);b([w()],m.prototype,"cronJobs",2);b([w()],m.prototype,"cronStatus",2);b([w()],m.prototype,"cronError",2);b([w()],m.prototype,"cronForm",2);b([w()],m.prototype,"cronRunsJobId",2);b([w()],m.prototype,"cronRuns",2);b([w()],m.prototype,"cronBusy",2);b([w()],m.prototype,"skillsLoading",2);b([w()],m.prototype,"skillsReport",2);b([w()],m.prototype,"skillsError",2);b([w()],m.prototype,"skillsFilter",2);b([w()],m.prototype,"skillEdits",2);b([w()],m.prototype,"skillsBusyKey",2);b([w()],m.prototype,"skillMessages",2);b([w()],m.prototype,"debugLoading",2);b([w()],m.prototype,"debugStatus",2);b([w()],m.prototype,"debugHealth",2);b([w()],m.prototype,"debugModels",2);b([w()],m.prototype,"debugHeartbeat",2);b([w()],m.prototype,"debugCallMethod",2);b([w()],m.prototype,"debugCallParams",2);b([w()],m.prototype,"debugCallResult",2);b([w()],m.prototype,"debugCallError",2);b([w()],m.prototype,"logsLoading",2);b([w()],m.prototype,"logsError",2);b([w()],m.prototype,"logsFile",2);b([w()],m.prototype,"logsEntries",2);b([w()],m.prototype,"logsFilterText",2);b([w()],m.prototype,"logsLevelFilters",2);b([w()],m.prototype,"logsAutoFollow",2);b([w()],m.prototype,"logsTruncated",2);b([w()],m.prototype,"logsCursor",2);b([w()],m.prototype,"logsLastFetchAt",2);b([w()],m.prototype,"logsLimit",2);b([w()],m.prototype,"logsMaxBytes",2);b([w()],m.prototype,"logsAtBottom",2);m=b([lo("openclaw-app")],m);
3214
- //# sourceMappingURL=index-CNKLKKXX.js.map
3214
+ //# sourceMappingURL=index-Bpe27rQF.js.map