@keyueclaw/web-sdk 0.1.99 → 0.1.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-management.js +3 -0
- package/dist/api-management.js.map +1 -1
- package/dist/api-management.umd.cjs +1 -1
- package/dist/api-management.umd.cjs.map +1 -1
- package/dist/skill-components.js +3 -0
- package/dist/skill-components.js.map +1 -1
- package/dist/skill-components.umd.cjs +1 -1
- package/dist/skill-components.umd.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -2162,7 +2162,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
|
|
|
2162
2162
|
|
|
2163
2163
|
`);r=a.pop()??``;for(let e of a){let t=e.split(/\r?\n/).map(e=>e.trimEnd()).filter(Boolean),n=`message`,r=[];for(let e of t)e.startsWith(`event:`)?n=e.slice(6).trim():e.startsWith(`data:`)&&r.push(e.slice(5).trimStart());r.length>0&&(yield{event:n,data:r.join(`
|
|
2164
2164
|
`)})}if(e)break}}finally{t.releaseLock()}}async function iH(e,t){let n=await fetch(YV(e),{method:`POST`,headers:XV(e),body:JSON.stringify(t)});if(!n.ok){let e=await n.text(),t=e.trim()&&e.trim().startsWith(`{`)?ZV(e,`error`):null;throw Error(t?.error?.message?.trim()||`HTTP ${n.status}`)}if(!n.body)throw Error(`empty sse response body`);return n.body}function aH(e,t){t&&console.debug(`[客悦变量] 前端收到会话变量快照`,{count:Object.keys(t).length,names:Object.keys(t),sessionKey:e.sessionKey}),JM(e,t)}function oH(e){return Array.isArray(e.pendingChatMessages)||(e.pendingChatMessages=[]),e.pendingChatMessages}function sH(e,t){let n=Q(t);return n?oH(e).find(e=>e.runId===n||e.queryId===n)??null:null}function cH(e,t){let n=oH(e),r=n.findIndex(e=>e.runId===t.runId||t.queryId!=null&&t.queryId.trim()&&e.queryId===t.queryId);r>=0?e.pendingChatMessages=n.map((e,n)=>n===r?t:e):e.pendingChatMessages=[...n,t]}function lH(e,t,n){let r=n.trim();!r||r===t.runId||(t.runId=r)}function uH(e,t){t&&(e.pendingChatMessages=oH(e).filter(e=>e!==t))}function Q(e){return typeof e==`string`&&e.trim()||null}function dH(e){return Q(e?.queryId)??Q(e?.runId)}function fH(e,t){let n=Q(t);if(!n)return;let r=sH(e,n),i=r?SH(e,r):!1;if(r){uH(e,r),i&&TH(e);return}}function pH(e,t){fH(e,t.supersededRunId),fH(e,t.replacedRunId)}function mH(e,t){let n=t.queryId?.trim();if(n){let t=sH(e,n);if(t)return t}let r=t.runId?.trim();return sH(e,r)}function hH(e,t,n){return e.chatRunId?t?SH(e,t):e.chatRunId===n.runId||e.chatRunId===n.queryId:!1}function gH(e){e.chatStream=null,e.chatRouteNoticeStream=null,e.chatRunId=null,e.chatStreamStartedAt=null}function _H(e){return{runId:e.chatRunId,stream:e.chatStream,routeNoticeStream:e.chatRouteNoticeStream,streamStartedAt:e.chatStreamStartedAt}}function vH(e,t){e.chatRunId=t.runId,e.chatStream=t.stream,e.chatRouteNoticeStream=t.routeNoticeStream??null,e.chatStreamStartedAt=t.streamStartedAt}function yH(e){return e===`ok`||e===`final`||e===`aborted`||e===`timeout`}function bH(e){return(typeof e==`string`?e.trim():``)||OV}function xH(e,t,n,r,i){let a=SH(e,t),o=t.resetsSession===!0;if(t.status=n===`ok`?`final`:n,t.resetsSession===!0&&n!==`aborted`&&HH(e),n===`timeout`)FU(e,lW({role:`assistant`,content:[{type:`text`,text:bH(i)}],timestamp:Date.now()},dH(t),t.runId),dH(t));else if(n!==`aborted`){let n=aW(i);n&&!LV(n)?FU(e,lW(n,dH(t),t.runId),dH(t)):o=!0}uH(e,t),n!==`aborted`&&jH(e);let s=()=>{o&&tW(e,{preserveLastLatency:!0})};if(!a){s();return}CH(e,r)?vH(e,r):TH(e),s()}function SH(e,t){let n=Q(e.chatRunId);return!!(n&&(n===t.runId||n===t.queryId))}function CH(e,t){return t.runId?e.chatRunId===t.runId?!0:!!sH(e,t.runId):!1}function wH(e){if(e.chatRunId)return;let t=e.pendingChatMessages.find(e=>e.status===`waiting`||e.status===`queued`||e.status===`streaming`);t&&(e.chatRunId=t.runId,e.chatStream=t.stream||``,e.chatRouteNoticeStream=t.routeNoticeStream??null,e.chatStreamStartedAt=t.startedAt)}function TH(e){gH(e),wH(e)}function EH(e){if(!e.chatRunId)return!1;if(typeof e.chatStream==`string`&&e.chatStream.trim())return!FV(e.chatStream);if(typeof e.chatRouteNoticeStream==`string`&&e.chatRouteNoticeStream.trim())return!FV(e.chatRouteNoticeStream);let t=sH(e,e.chatRunId),n=dH(t)??Q(e.chatRunId);return n&&KH(e).some(e=>(!e.queryId||e.queryId===n)&&e.text.trim()&&!FV(e.text))?!0:!!(t?.hasVisibleDelta||t?.status===`streaming`)}function DH(e){return typeof e==`string`&&e.replace(/^Error:\s*/i,``).trim()||null}function OH(e){DH(e.lastError)===DV&&(e.lastError=null)}function kH(e){if(!e||typeof e!=`object`||!(`name`in e))return``;let t=e.name;return typeof t==`string`?t:``}function AH(e,t){let n=kH(e).trim().toLowerCase(),r=t.trim().toLowerCase();return n===`aborterror`||r===`aborted`||r.includes(`signal is aborted`)||r.includes(`aborterror`)}function jH(e){e.chatSendTimestamps=[],e.chatRateLimitBlockedUntil=null,e.chatRateLimitNoticeShownUntil=null,e.chatRateLimitRefreshAt=null,e.chatRateLimitRefreshTimer&&=(clearTimeout(e.chatRateLimitRefreshTimer),null),OH(e)}function MH(e,t){e.chatSendTimestamps=(Array.isArray(e.chatSendTimestamps)?e.chatSendTimestamps:[]).filter(e=>t-e<TV);let n=e.chatSendTimestamps[EV-1],r=e.chatSendTimestamps.length>=EV&&n!=null?n+TV:null;e.chatRateLimitBlockedUntil=r,(r==null||r<=t)&&(e.chatRateLimitBlockedUntil=null,e.chatRateLimitNoticeShownUntil=null,OH(e))}function NH(e,t){MH(e,t);let n=e.chatRateLimitBlockedUntil;return n==null||n<=t?!1:(e.chatRateLimitNoticeShownUntil=n,OH(e),!0)}function PH(e,t){return NH(e,t)?!1:(e.chatSendTimestamps=[...e.chatSendTimestamps,t],MH(e,t),!0)}function FH(e,t){let n=e.chatSendTimestamps.indexOf(t);n>=0&&(e.chatSendTimestamps=[...e.chatSendTimestamps.slice(0,n),...e.chatSendTimestamps.slice(n+1)]),MH(e,Date.now())}function IH(e){return e.chatSseAbortControllersByRunId instanceof Map||(e.chatSseAbortControllersByRunId=new Map),e.chatSseAbortControllersByRunId}function LH(e,t){let n=Q(e.chatRunId);if(!n||EH(e))return;let r=IH(e),i=r.get(n);if(i){mW(e,{runId:n,queryId:dH(sH(e,n))??n,sessionKey:e.sessionKey,state:`aborted`,stopReason:`superseded_by_new_query`,supersededByQueryId:t}),i.abort();for(let[e,t]of r)t===i&&r.delete(e)}}function RH(e){if(gH(e),e.chatSending=!1,e.pendingChatMessages=[],jH(e),e.chatSseAbortControllersByRunId instanceof Map){for(let t of e.chatSseAbortControllersByRunId.values())t.abort();e.chatSseAbortControllersByRunId.clear()}}function zH(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(!n||typeof n!=`object`)continue;let r=n;if((typeof r.role==`string`?r.role.toLowerCase():``)!==`assistant`)continue;let i=r.__runLatency,a=i&&typeof i==`object`?i:null;return typeof a?.ttftMs==`number`||typeof a?.totalMs==`number`}return!1}function BH(e,t){if(!t)return e;for(let n=e.length-1;n>=0;--n){let r=e[n];if(!r||typeof r!=`object`)continue;let i=r;if((typeof i.role==`string`?i.role.toLowerCase():``)!==`assistant`)continue;let a=[...e];return a[n]={...i,__runLatency:{ttftMs:t.ttftMs,totalMs:t.totalMs}},a}return e}function VH(e){let t=e;t.toolStreamById instanceof Map&&Array.isArray(t.toolStreamOrder)&&Array.isArray(t.chatToolMessages)&&Array.isArray(t.chatStreamSegments)&&rB(t)}function HH(e){e.chatMessages=[],VH(e),GH(e)}function UH(e,t){t?.resetsSession===!0&&HH(e)}function WH(e,t){let n=e;n.toolStreamById instanceof Map&&Array.isArray(n.toolStreamOrder)&&Array.isArray(n.chatToolMessages)&&Array.isArray(n.chatStreamSegments)&&uB(n,t)}function GH(e){let t=e;Array.isArray(t.chatStreamSegments)&&(t.chatStreamSegments=[])}function KH(e){let t=e;return Array.isArray(t.chatStreamSegments)?t.chatStreamSegments.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,n=typeof t.text==`string`?t.text:``,r=typeof t.ts==`number`&&Number.isFinite(t.ts)?t.ts:Date.now(),i=Q(t.queryId);return n.trim()?[{text:n,ts:r,...i?{queryId:i}:{}}]:[]}):[]}function qH(e,t){let n={...e,content:[{type:`text`,text:t}],...typeof e.text==`string`?{text:t}:{}},r=e[MV];return typeof r==`string`&&r.trim()&&Object.defineProperty(n,MV,{value:r.trim(),enumerable:!1}),n}function JH(e,t,n){let r=new Set,i=[],a=e=>{let t=e?.trim();!t||r.has(t)||FV(t)||!YH(t)||(r.add(t),i.push(t))};for(let t of KH(e))a(t.text);return a(t?.stream),a(n),i.toSorted((e,t)=>t.length-e.length)}function YH(e){return/[。!?!?;;.]$/.test(e.trim())}function XH(e){let t=AI(e.message)?.trim();if(!t)return{message:e.message};for(let n of e.prefixes){if(!t.startsWith(n)||t.length<=n.length)continue;let r=t.slice(n.length).trim();if(r)return{message:qH(e.message,r),strippedPrefix:n}}return{message:e.message}}function ZH(e){let t=e?.routeNoticeStream?.trim();if(!(!t||FV(t)||!YH(t)))return t}function QH(e){let t=e.chatRouteNoticeStream?.trim();if(!(!t||FV(t)||!YH(t)))return t}function $H(e,t){let n=e.trim(),r=t.trim();if(!(!n||!r||FV(n)||!YH(n)||r.startsWith(n)||n.startsWith(r)))return n}function eU(e,t,n){let r=$H(t,n);if(!r)return;let i=e.routeNoticeStream?.trim()??``;(!i||r.length>i.length)&&(e.routeNoticeStream=r)}function tU(e,t,n){let r=$H(t,n);if(!r)return;let i=e.chatRouteNoticeStream?.trim()??``;(!i||r.length>i.length)&&(e.chatRouteNoticeStream=r)}function nU(e,t){let n=e.trim(),r=t.trim();return!n||!r?!1:n===r||n.includes(r)||r.includes(n)||lU(n,r)}var rU=24,iU=.68,aU=.45,oU=new Set([` `,` `,`
|
|
2165
|
-
`,`\r`,`,`,`.`,`!`,`?`,`;`,`:`,`"`,`'`,`(`,`)`,`[`,`]`,`{`,`}`,`,`,`。`,`!`,`?`,`;`,`:`,`、`,`“`,`”`,`‘`,`’`,`(`,`)`,`【`,`】`,`《`,`》`,`~`,`~`]);function sU(e){let t=[];for(let n of e.trim())oU.has(n)||t.push(n.toLowerCase());return t.join(``)}function cU(e){let t=Array.from(e),n=new Set;for(let e=0;e<t.length-1;e+=1)n.add(`${t[e]}${t[e+1]}`);return n}function lU(e,t){let n=sU(e),r=sU(t);if(Math.min(n.length,r.length)<rU)return!1;let i=Math.max(n.length,r.length),a=n.length<=r.length?n:r;if((n.length>r.length?n:r).includes(a)&&a.length/i>=.55)return!0;let o=cU(n),s=cU(r),c=Math.min(o.size,s.size);if(c<=0)return!1;let l=0;for(let e of o)s.has(e)&&(l+=1);let u=o.size+s.size-l,d=l/c,f=u>0?l/u:0;return d>=iU&&f>=aU}function uU(e){let t=e.prefix?.trim();if(!t)return;let n=e.pending?.startedAt??e.state.chatStreamStartedAt??Date.now(),r=cW({role:`assistant`,content:[{type:`text`,text:t}],timestamp:n,__openclaw:{kind:`route_notice`},...e.runLatency?{__runLatency:e.runLatency}:{}},e.payload,{includeRunOnly:!0,queryIdentity:e.queryIdentity});FU(e.state,r,e.queryIdentity)}function dU(e){let t=e.streamedText.trim(),n=ZH(e.pending)??(e.currentRun?QH(e.state):void 0),r=NU(e.payload,e.pending);n?uU({state:e.state,payload:e.payload,pending:e.pending,queryIdentity:r,prefix:n}):t&&!FV(t)&&LU(e.state,cW({role:`assistant`,content:[{type:`text`,text:t}],timestamp:Date.now()},e.payload,{queryIdentity:r}),e.payload,e.pending),fU(e.state,e.payload,e.pending,{skipTexts:[n??``,t]}),pU(e.state,e.payload,e.pending)}function fU(e,t,n,r){let i=NU(t,n);if(!i)return;let a=(r?.skipTexts??[]).map(e=>e.trim()).filter(Boolean);for(let n of KH(e)){if(FV(n.text)||n.queryId&&n.queryId!==i||a.some(e=>nU(e,n.text)))continue;let r=n.queryId??i;FU(e,cW({role:`assistant`,content:[{type:`text`,text:n.text}],timestamp:n.ts},t,{includeRunOnly:!0,queryIdentity:r}),r)}}function pU(e,t,n,r){let i=NU(t,n)??Q(t.runId)??Q(n?.runId),a=Q(t.runId)??Q(n?.runId);if(!i||!a)return;let o=new Set([i,a,Q(t.queryId),SU(t.message),Q(t.runId),Q(n?.queryId),Q(n?.runId)].filter(e=>!!e)),s=e;if(!Array.isArray(s.chatToolMessages))return;let c=Q(t.sessionKey),l=[],u=!1,d=new Set;for(let t of s.chatToolMessages){let n=xU(t),f=CU(t),p=AU(t),m=p?DU(p):null,h=m&&s.toolStreamById instanceof Map?s.toolStreamById.get(m):void 0,g=Q(h?.queryId),_=Q(h?.runId),v=Q(t.sessionKey??h?.sessionKey),y=[n,f,g,_].some(e=>!!(e&&o.has(e))),ee=r?.adoptSessionScopedTools===!0&&!!h&&!n&&!g&&!!_&&_===f&&!!c&&(!v||v===c);if(!y&&!ee){l.push(t);continue}let b=lW({...t},i,f??a);jU(e.chatMessages,b)||FU(e,b,i),m&&d.add(m),u=!0}if(u&&(s.chatToolMessages=l,s.toolStreamById instanceof Map&&Array.isArray(s.toolStreamOrder))){let e=[];for(let t of s.toolStreamOrder){let n=s.toolStreamById.get(t);n?.queryId===i||n?.runId===a||d.has(DU(t))?s.toolStreamById.delete(t):e.push(t)}s.toolStreamOrder=e}}function mU(e,t){if(Object.is(e,t))return!0;if(e&&typeof e==`object`&&t&&typeof t==`object`){let n=e,r=t,i=typeof n.role==`string`?n.role.toLowerCase():``,a=typeof r.role==`string`?r.role.toLowerCase():``,o=AI(e),s=AI(t);if(i&&i===a&&typeof o==`string`&&typeof s==`string`)return o.trim()===s.trim()}try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}function hU(e){if(!e||typeof e!=`object`)return!1;let t=e;return!!(t.__mediaResult&&typeof t.__mediaResult==`object`||t.__debugInfo&&typeof t.__debugInfo==`object`)}function gU(e,t){if(RU(e)!==`assistant`||RU(t)!==`assistant`||!hU(t))return!1;let n=xU(e),r=xU(t);return n&&r?n===r:mU(e,t)}function _U(e,t){if(RU(e)!==`assistant`||RU(t)!==`assistant`||zU(e)||zU(t)||JU(e)||JU(t))return e;let n=AI(e)?.trim(),r=AI(t)?.trim();if(!n||!r||n===r||!n.endsWith(r))return e;let i=n.slice(0,n.length-r.length).trim();return!i||!YH(i)?e:qH(e,r)}function vU(e,t){let n=xU(t);return!n||SU(e)?e:lW(e,n,CU(t))}function yU(e,t){if(!e||typeof e!=`object`)return e;let n=e,r=t,i=vU(_U(n,t),t);if(!hU(t))return i;let a=i,o={...a,...a.__mediaResult===void 0&&r.__mediaResult?{__mediaResult:r.__mediaResult}:{},...a.__debugInfo===void 0&&r.__debugInfo?{__debugInfo:r.__debugInfo}:{}},s=a[MV];return typeof s==`string`&&s.trim()&&Object.defineProperty(o,MV,{value:s.trim(),enumerable:!1}),o}function bU(e,t){let n=t.filter(hU);if(n.length===0||e.length===0)return e;let r=!1,i=e.map(e=>{let t=n.find(t=>gU(e,t));if(!t)return e;let i=yU(e,t);return r||=i!==e,i});return r?i:e}function xU(e){if(!e||typeof e!=`object`)return null;let t=e,n=SU(e);if(n)return n;let r=t.__openclaw;if(r&&typeof r==`object`){let e=r,t=typeof e.optimisticQueryId==`string`?e.optimisticQueryId.trim():``;if(t)return t;let n=typeof e.optimisticRunId==`string`?e.optimisticRunId.trim():``;if(n)return n}let i=t[MV];return typeof i==`string`&&i.trim()?i.trim():null}function SU(e){if(!e||typeof e!=`object`)return null;let t=e.queryId;return typeof t==`string`&&t.trim()?t.trim():null}function CU(e){if(!e||typeof e!=`object`)return null;let t=e,n=Q(t.runId);if(n)return n;let r=Q(t[NV]);if(r)return r;let i=t.__openclaw;return!i||typeof i!=`object`?null:Q(i.optimisticRunId)}function wU(e){return typeof e==`string`&&e.trim()?e.trim():void 0}function TU(e){if(!e||typeof e!=`object`)return null;let t=e,n=Array.isArray(t.skillNames)?[...new Set(t.skillNames.map(e=>typeof e==`string`?e.trim():``).filter(Boolean))]:[],r=wU(t.skillName)??n[0];return r?{...wU(t.tenantId)?{tenantId:wU(t.tenantId)}:{},...wU(t.skillId)?{skillId:wU(t.skillId)}:{},...wU(t.skillKey)?{skillKey:wU(t.skillKey)}:{},skillName:r,...n.length?{skillNames:n}:{},...wU(t.description)?{description:wU(t.description)}:{},...wU(t.skillPath)?{skillPath:wU(t.skillPath)}:{}}:null}function EU(e,t,n){let r=TU(t.routeSkill);if(!r)return!1;let i=new Set([MU(t,n),Q(t.queryId),Q(t.runId),Q(n?.queryId),Q(n?.runId)].filter(e=>!!e));if(i.size===0)return!1;let a=!1,o=e.chatMessages.map(e=>{if(RU(e)!==`user`||!e||typeof e!=`object`||![xU(e),CU(e)].filter(e=>!!e).some(e=>i.has(e)))return e;let t=e,n=t.__openclaw&&typeof t.__openclaw==`object`?t.__openclaw:{};return n.routeSkill&&typeof n.routeSkill==`object`?e:(a=!0,{...t,__openclaw:{...n,routeSkill:r}})});return a&&(e.chatMessages=o),a}function DU(e){return e.startsWith(`tool-call:`)?e.slice(10):e}function OU(e){if(!e||typeof e!=`object`)return null;let t=e,n=RU(e),r=!1,i=n===`toolresult`||n===`tool_result`||n===`tool`||n===`function`||typeof t.toolName==`string`||typeof t.tool_name==`string`,a=Array.isArray(t.content)?t.content:[];for(let e of a){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.type==`string`?t.type.toLowerCase():``;[`toolcall`,`tool_call`,`tooluse`,`tool_use`].includes(n)&&(r=!0),[`toolresult`,`tool_result`].includes(n)&&(i=!0),typeof t.name==`string`&&(t.arguments!=null||t.args!=null)&&(r=!0)}return!r&&!i&&(typeof t.toolCallId==`string`||typeof t.tool_call_id==`string`)&&(i=!0),r&&i?`mixed`:i?`result`:r?`call`:null}function kU(e){if(!e||typeof e!=`object`)return null;let t=e,n=xU(e)??CU(e),r=OU(e),i=Q(t.toolCallId)??Q(t.tool_call_id)??Q(t.id);return!n||!r||!i?null:`${n}:${r}:${DU(i)}`}function AU(e){if(!e||typeof e!=`object`)return null;let t=e;return Q(t.toolCallId)??Q(t.tool_call_id)??Q(t.id)}function jU(e,t){let n=kU(t);return n?e.some(e=>kU(e)===n):!1}function MU(e,t){return Q(e.queryId)??SU(e.message)??Q(t?.queryId)??Q(e.runId)??Q(t?.runId)}function NU(e,t){return Q(e.queryId)??SU(e.message)??Q(t?.queryId)}function PU(e,t){return NU(e,t)??(t?dH(t):null)}function FU(e,t,n){let r=Q(n);if(!r){e.chatMessages=[...e.chatMessages,t];return}let i=-1;for(let t=0;t<e.chatMessages.length;t+=1)xU(e.chatMessages[t])===r&&(i=t);if(i<0){e.chatMessages=[...e.chatMessages,t];return}let a=[...e.chatMessages];a.splice(i+1,0,t),e.chatMessages=a}function IU(e,t,n,r){if(RU(t)!==`assistant`)return!1;let i=AI(t)?.trim();if(!i)return!1;let a=new Set([MU(n,r),NU(n,r),Q(n.queryId),Q(n.runId),Q(r?.queryId),Q(r?.runId),xU(t),CU(t)].filter(e=>!!e));if(a.size===0)return!1;let o=e.chatMessages.findIndex(e=>{if(RU(e)!==`assistant`)return!1;let t=AI(e)?.trim();return!t||t!==i?!1:[xU(e),CU(e)].some(e=>e!==null&&a.has(e))});if(o<0)return!1;let s=e.chatMessages[o],c=yU(s,t);if(c!==s){let t=[...e.chatMessages];t[o]=c,e.chatMessages=t}return!0}function LU(e,t,n,r){IU(e,t,n,r)||FU(e,t,MU(n,r))}function RU(e){if(!e||typeof e!=`object`)return``;let t=e;return typeof t.role==`string`?t.role.toLowerCase():``}function zU(e){if(RU(e)!==`assistant`||!e||typeof e!=`object`)return!1;let t=e.__openclaw;return!!(t&&typeof t==`object`&&t.kind===`route_notice`)}function BU(e){if(!e||typeof e!=`object`)return null;let t=e.timestamp;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`&&t.trim()){let e=Date.parse(t);return Number.isFinite(e)?e:null}return null}function VU(e){let t=new Set;for(let n of e){if(RU(n)!==`user`)continue;let e=xU(n);e&&t.add(e)}return t}function HU(e){let t=new Set;for(let n of e){if(!zU(n))continue;let e=xU(n);e&&t.add(e)}return t}function UU(e,t){let n=xU(e);return GU(e)&&n!==null&&t.has(n)}function WU(e,t){let n=xU(e);return zU(e)&&n!==null&&t.has(n)}function GU(e){return KU(e)}function KU(e){if(RU(e)!==`user`||!e||typeof e!=`object`)return!1;let t=e.__openclaw;if(!t||typeof t!=`object`)return!1;let n=t;return!!(Q(n.optimisticQueryId)??Q(n.optimisticRunId))}function qU(e){let t=null,n=!1,r=e.map(e=>{if(RU(e)===`user`)return t=xU(e),e;if(!t||xU(e)||!e||typeof e!=`object`)return e;n=!0;let r={...e};return Object.defineProperty(r,MV,{value:t,enumerable:!1}),r});return n?r:e}function JU(e){if(!e||typeof e!=`object`)return!1;let t=e,n=RU(e);return n===`toolresult`||n===`tool_result`||n===`tool`||n===`function`||typeof t.toolCallId==`string`||typeof t.tool_call_id==`string`||typeof t.toolName==`string`||typeof t.tool_name==`string`?!0:(Array.isArray(t.content)?t.content:[]).some(e=>{if(!e||typeof e!=`object`)return!1;let t=e,n=typeof t.type==`string`?t.type.toLowerCase():``;return n===`toolcall`||n===`tool_call`||n===`tooluse`||n===`tool_use`||n===`toolresult`||n===`tool_result`||typeof t.name==`string`&&(t.arguments!=null||t.args!=null)})}function YU(e){return RU(e)===`user`?0:1}function XU(e){let t=new Map;for(let n=0;n<e.length;n+=1){let r=e[n];if(!KU(r))continue;let i=xU(r);i&&!t.has(i)&&t.set(i,n)}return t}function ZU(e,t){let n=[...e],r=0;for(;r<n.length;){if(BU(n[r])===null){r+=1;continue}let e=r;for(;r<n.length&&BU(n[r])!==null;)r+=1;let i=n.slice(e,r);if(i.length<2)continue;let a=new Map,o=i.map((e,t)=>({message:e,order:t,timestampMs:BU(e)})).map(e=>{let n=xU(e.message);if(n&&RU(e.message)===`user`&&e.timestampMs!==null){let r=a.get(n),i=SU(e.message)===n,o=t?.queryOrderHints?.get(n);(!r||i&&!r.stableHistoryAnchor||i===r.stableHistoryAnchor&&e.order<r.order)&&a.set(n,{order:o??e.order,timestampMs:e.timestampMs,stableHistoryAnchor:i,hasOrderHint:o!==void 0})}return{...e,queryIdentity:n}}).toSorted((e,t)=>{let n=e.queryIdentity?a.get(e.queryIdentity):void 0,r=t.queryIdentity?a.get(t.queryIdentity):void 0,i=n?.timestampMs??e.timestampMs,o=r?.timestampMs??t.timestampMs,s=n?.stableHistoryAnchor===!0&&r?.stableHistoryAnchor===!0&&i!==null&&o!==null?Math.abs(i-o):1/0,c=n?.hasOrderHint===!0&&r?.hasOrderHint===!0||s<=AV,l=n?.order??e.order,u=r?.order??t.order;if(c&&l!==u)return l-u;if(!c&&i!==null&&o!==null&&i!==o)return i-o;let d=YU(e.message),f=YU(t.message);return d===f?e.timestampMs!==null&&t.timestampMs!==null&&e.timestampMs!==t.timestampMs?e.timestampMs-t.timestampMs:e.order-t.order:d-f}).map(e=>e.message);n.splice(e,i.length,...o)}return n}function QU(e,t,n){let r=xU(t),i=RU(t);for(let a=n;a<e.length;a+=1){let n=xU(e[a]);if(!(r&&n&&r!==n)&&(r&&n===r&&i===`assistant`&&RU(e[a])===`assistant`&&!zU(t)&&!zU(e[a])&&!JU(t)&&!JU(e[a])||mU(e[a],t)))return a}return-1}function $U(e,t){let n=[],r=[],i=[],a=VU(e),o=HU(e),s=XU(t),c=0,l=!1;for(let s of t){let t=QU(e,s,c);if(t>=0){if(n.push(...e.slice(c,t)),n.push(...r.splice(0)),l&&RU(s)===`assistant`){let e=[];for(let t of i.splice(0))RU(t)===`user`?e.push(t):n.push(t);i.push(...e)}n.push(yU(e[t],s)),l&&n.push(...i.splice(0)),c=t+1,l=!0;continue}if(!UU(s,a)&&!WU(s,o)){if(!l){r.push(s);continue}if(e.length>0&&c>=e.length){n.push(...i.splice(0)),n.push(s);continue}if(!GU(s)){i.push(s);continue}n.push(s)}}return l?(n.push(...e.slice(c)),n.push(...i),ZU(n,{queryOrderHints:s})):ZU([...e,...r],{queryOrderHints:s})}function eW(e,t){let n=[],r=VU(e),i=HU(e),a=XU(t),o=0;for(let a of t){let t=QU(e,a,o);if(t>=0){n.push(...e.slice(o,t)),n.push(yU(e[t],a)),o=t+1;continue}UU(a,r)||WU(a,i)||(e.length>0&&o>=e.length||GU(a))&&n.push(a)}return n.push(...e.slice(o)),ZU(n,{queryOrderHints:a})}async function tW(e,t){if((!e.client||!e.connected)&&!UV(e))return;e.chatLoading=!0,e.lastError=null;let n=e.sessionKey,r=VV(e);try{let i=UV(e)?await(async()=>{let t=await iH(e,{action:`history`,sessionKey:n,limit:200,...WV(e)?{preferLatestKeyueSession:!0}:{},...e.keyueDeployMode===`preview`||e.keyueDeployMode===`online`?{deployMode:`online`}:{}});for await(let e of rH(t)){if(e.event!==`result`)continue;let t=ZV(e.data,`history`);return QV(t,`history`),t}throw Error(`missing history result`)})():await JV(e).request(`chat.history`,{sessionKey:n,limit:200,...WV(e)?{preferLatestKeyueSession:!0}:{},...e.keyueDeployMode===`preview`||e.keyueDeployMode===`online`?{deployMode:`online`}:{}});if(!nH(e,n,i.sessionKey)||VV(e)!==r)return;let a=qU((Array.isArray(i.messages)?i.messages:[]).filter(e=>!LV(e)&&!RV(e)&&!zV(e))),o=bU(t?.preserveLastLatency&&!zH(a)?BH(a,e.lastLatency):a,e.chatMessages),s=Array.isArray(e.pendingChatMessages)&&e.pendingChatMessages.length>0;e.chatRunId||s?e.chatMessages=$U(o,e.chatMessages):e.chatMessages.some(GU)?e.chatMessages=eW(o,e.chatMessages):e.chatMessages=ZU(o),e.chatThinkingLevel=i.thinkingLevel??null,e.chatSessionId=typeof i.sessionId==`string`&&i.sessionId.trim()?i.sessionId:null,aH(e,i.variables),e.chatRunId||(VH(e),e.chatStream=null,e.chatStreamStartedAt=null),t?.preserveLastLatency&&!zH(a)||(e.lastLatency=null)}catch(t){e.lastError=String(t)}finally{e.chatLoading=!1}}function nW(e){let t=/^data:([^;]*);base64,(.+)$/.exec(e);return t?{mimeType:t[1],content:t[2]}:null}function rW(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=n.role;if(typeof r==`string`){if((t.roleCaseSensitive?r:r.toLowerCase())!==`assistant`)return null}else if(t.roleRequirement===`required`)return null;return t.requireContentArray?Array.isArray(n.content)?n:null:!(`content`in n)&&!(t.allowTextField&&`text`in n)?null:n}function iW(e){return rW(e,{roleRequirement:`required`,roleCaseSensitive:!0,requireContentArray:!0})}function aW(e){return rW(e,{roleRequirement:`optional`,allowTextField:!0})}function oW(e){if(!e||typeof e!=`object`)return null;let t=e.visibleAnswer;if(!t||typeof t!=`object`)return null;let n=t.answer;if(!n||typeof n!=`object`)return null;let r=n.text;return typeof r==`string`&&r.trim()?r.trim():null}function sW(e,t){let n=oW(t.debugInfo);return n?AI(e)?.trim()===n?e:qH(e,n):e}function cW(e,t,n){let r=Q(n?.queryIdentity)??Q(t.queryId);return!r&&!(n?.includeRunOnly&&t.runId)?e:lW(e,r,t.runId)}function lW(e,t,n){let r=Q(t),i=Q(n);if(!r&&!i)return e;let a=e.__openclaw&&typeof e.__openclaw==`object`?e.__openclaw:{};return{...e,...r&&typeof e.queryId!=`string`?{queryId:r}:{},__openclaw:{...a,...i?{optimisticRunId:i}:{},...r?{optimisticQueryId:r}:{}}}}function uW(e,t,n){let r=t.mediaResult&&typeof t.mediaResult==`object`?t.mediaResult:null,i=t.debugInfo&&typeof t.debugInfo==`object`?t.debugInfo:null,a=cW(e,t,n),o=!xU(a)&&t.runId?Q(t.runId):null;if(!r&&!i&&a===e){if(o){let t={...e};return Object.defineProperty(t,NV,{value:o,enumerable:!1}),t}return e}let s={...a,...r?{__mediaResult:r}:{},...i?{__debugInfo:i}:{}};return o&&Object.defineProperty(s,NV,{value:o,enumerable:!1}),s}function dW(e,t){if(!t.mediaResult||typeof t.mediaResult!=`object`)return!1;let n=e,r=n.toolStreamById,i=n.toolStreamOrder;if(!(r instanceof Map)||!Array.isArray(i))return!1;for(let e=i.length-1;e>=0;--e){let a=i[e],o=r.get(a);if(!(!o||o.name!==`keyue_uda_card_emit`))return o.message={...o.message,__mediaResult:t.mediaResult},Array.isArray(n.chatToolMessages)&&(n.chatToolMessages=n.chatToolMessages.map(e=>e&&typeof e==`object`&&e.toolCallId===a?{...e,__mediaResult:t.mediaResult}:e)),!0}return!1}async function fW(e,t,n,r){if((!e.client||!e.connected)&&!UV(e))return null;let i=t.trim(),a=n&&n.length>0;if(!i&&!a)return null;let o=$V(i),s=Date.now(),c=r?.countForRateLimit??r?.optimisticUserMessage!==!1;if(c&&!PH(e,s))return null;let l=g();UV(e)&&(qV(e,{rotate:o}),LH(e,l));let u=[];if(i&&u.push({type:`text`,text:i}),a)for(let e of n){let t=hI(e.mimeType,e.fileName);t===`image`?u.push({type:`image`,source:{type:`base64`,media_type:e.mimeType,data:e.dataUrl}}):t===`video`&&u.push({type:`video`,source:{type:`base64`,media_type:e.mimeType,data:e.dataUrl},name:e.fileName,url:e.previewUrl})}let d;r?.optimisticUserMessage!==!1&&(d={role:`user`,content:u,timestamp:s,__openclaw:{optimisticRunId:l,optimisticQueryId:l}},e.chatMessages=[...e.chatMessages,d]),e.chatSending=!0,e.lastError=null,e.lastLatency=null,HV(e);let f={runId:l,queryId:l,startedAt:s,status:`waiting`,stream:``,hasVisibleDelta:!1,optimisticUserMessage:d,resetsSession:o};cH(e,f);let p=_H(e);EH(e)||(e.chatRunId=l,e.chatStream=``,e.chatStreamStartedAt=s);let m=a?n.map(e=>{let t=nW(e.dataUrl);if(!t)return null;let n=mI(t.mimeType,e.fileName)||mI(e.mimeType,e.fileName),r=hI(n,e.fileName);return r?{type:r,mimeType:n,fileName:e.fileName,content:t.content}:null}).filter(e=>e!==null):void 0;try{let t=()=>{f.status=`queued`,CH(e,p)&&SH(e,f)&&vH(e,p)},n={sessionKey:e.sessionKey,message:i,routeSkillIds:r?.routeSkillIds?.length?r.routeSkillIds:void 0,deliver:!1,idempotencyKey:l,attachments:m,clientSentAt:s,variables:r?.variables,...e.keyueDeployMode===`preview`||e.keyueDeployMode===`online`?{deployMode:`online`}:{}};if(UV(e)){let r=e,i=n.sessionKey,a=new AbortController;IH(r).set(l,a);let o=await fetch(YV(r),{method:`POST`,headers:XV(r),body:JSON.stringify({action:`send`,...n}),signal:a.signal});if(!o.ok){let e=await o.text(),t=e.trim()&&e.trim().startsWith(`{`)?ZV(e,`error`):null;throw Error(t?.error?.message?.trim()||`HTTP ${o.status}`)}if(!o.body)throw Error(`empty sse response body`);(async()=>{try{for await(let n of rH(o.body)){if(n.event===`ack`){let o=ZV(n.data,`ack`);if(tH(e,o,i),eH(e,o),typeof o.runId==`string`&&o.runId.trim()){let t=o.runId.trim();lH(e,f,t),e.chatRunId===l&&(e.chatRunId=t);let n=IH(r);n.has(t)||n.set(t,a)}o.status===`queued`?t():yH(o.status)&&xH(e,f,o.status,p,o.message),pH(e,o);continue}if(n.event===`chat`){mW(e,ZV(n.data,`chat`));continue}if(n.event===`agent`){WH(e,ZV(n.data,`agent`));continue}if(n.event===`done`){eH(e,ZV(n.data,`done`));break}}}catch(t){if(!a.signal.aborted){let n=mV(t);e.lastError=kz(n)??n,SH(e,f)&&(p.runId?vH(e,p):gH(e)),uH(e,f)}}finally{IH(r).delete(l),IH(r).delete(f.runId)}})()}else{let r=await JV(e).request(`chat.send`,n);if(eH(e,r),typeof r?.runId==`string`&&r.runId.trim()){let t=r.runId.trim();lH(e,f,t),e.chatRunId===l&&(e.chatRunId=t)}r?.status===`queued`?t():yH(r?.status)&&xH(e,f,r.status,p,r.message),pH(e,r??{})}return MH(e,Date.now()),l}catch(t){let n=mV(t);if(c&&FH(e,s),SH(e,f)&&(CH(e,p)?vH(e,p):gH(e)),uH(e,f),r?.suppressDisconnectedError&&n.trim().toLowerCase()===`gateway not connected`||AH(t,n))return null;let i=kz(n);return e.lastError=i??n,i||(e.chatMessages=[...e.chatMessages,{role:`assistant`,content:[{type:`text`,text:`Error: `+n}],timestamp:Date.now()}]),null}finally{e.chatSending=!1}}async function pW(e){if((!e.client||!e.connected)&&!UV(e))return!1;let t=e.chatRunId;try{if(UV(e)){if(!t)return!1;let n=e,r=await iH(n,{action:`abort`,sessionKey:e.sessionKey,...t?{runId:t}:{}});for await(let e of rH(r))if(e.event===`result`&&QV(ZV(e.data,`abort`),`abort`),e.event===`done`)break;mW(e,{runId:t,sessionKey:e.sessionKey,state:`aborted`,stopReason:`user`}),IH(n).get(t)?.abort(),IH(n).delete(t)}else await JV(e).request(`chat.abort`,t?{sessionKey:e.sessionKey,runId:t}:{sessionKey:e.sessionKey});return!0}catch(t){return e.lastError=mV(t),!1}}function mW(e,t){if(!t||t.sessionKey!==e.sessionKey)return null;xV(t.sessionKey),eH(e,t),(t.state===`final`||t.state===`timeout`)&&jH(e);let n=mH(e,t);EU(e,t,n);let r=hH(e,n,t),i=IV(t);if(t.runId&&e.chatRunId&&t.runId!==e.chatRunId&&!n){if(t.state===`final`){aH(e,t.variables);let r=aW(t.message),i=r?sW(r,t):null,a=dW(e,t),o=i?a?i:uW(i,t):null;return o&&!LV(o)?(pU(e,t,n,{adoptSessionScopedTools:!0}),LU(e,o,t),null):`final`}return null}if(t.state===`delta`){n&&!e.chatRunId&&(e.chatRunId=n.runId,e.chatStream=n.stream||``,e.chatStreamStartedAt=n.startedAt,r=!0),i&&(r&&(VH(e),e.chatStream=null,e.chatRouteNoticeStream=null),n&&(n.stream=``,n.routeNoticeStream=void 0,n.hasVisibleDelta=!1));let a=t.message?AI(t.message):null;if(typeof a==`string`&&!FV(a)){if(n){let e=n.stream;(!e||a.length>=e.length)&&(e&&eU(n,e,a),n.stream=a,n.status=`streaming`,n.hasVisibleDelta=a.trim().length>0,zU(t.message)&&(n.routeNoticeStream=a))}let i=e.chatStream??``;r&&(!i||a.length>=i.length)&&(i&&tU(e,i,a),e.chatStream=a,zU(t.message)&&(e.chatRouteNoticeStream=a))}r&&t.firstTokenAt!=null&&e.chatStreamStartedAt!=null&&!e.lastLatency&&(e.lastLatency={ttftMs:t.firstTokenAt-e.chatStreamStartedAt,totalMs:null})}else if(t.state===`final`){let a=r||!!n,o=PU(t,n);aH(e,t.variables),UH(e,n);let s=aW(t.message),c=s?AI(s)?.trim():``,l=s?sW(s,t):null,u=i&&l&&!LV(l);i&&r&&!u&&VH(e),dW(e,t);let d=n?.startedAt??e.chatStreamStartedAt,f=i?void 0:r?e.chatStream:n?.stream,p=i?void 0:ZH(n)??(r?QH(e):void 0),m=l?XH({message:l,prefixes:[...p?[p]:[],...JH(e,n,f)]}):null,h=m?uW(m.message,t,{queryIdentity:o}):null,g=h?AI(h)?.trim():``,_=m?.strippedPrefix??(p&&!nU(g??``,p)?p:void 0),v=d==null?null:{ttftMs:t.firstTokenAt==null?null:t.firstTokenAt-d,totalMs:t.endedAt==null?null:t.endedAt-d};if(h&&!LV(h))v&&(h.__runLatency=v),uU({state:e,payload:t,pending:n,queryIdentity:o,prefix:_}),fU(e,t,n,{skipTexts:[_??``,g??``,c??``]}),pU(e,t,n,{adoptSessionScopedTools:!0}),LU(e,h,t,n);else if(_)uU({state:e,payload:t,pending:n,queryIdentity:o,prefix:_,runLatency:v}),fU(e,t,n,{skipTexts:[_,f??``]}),pU(e,t,n,{adoptSessionScopedTools:!i});else if(f?.trim()&&!FV(f)){let r={role:`assistant`,content:[{type:`text`,text:f}],timestamp:Date.now()};v&&(r.__runLatency=v),fU(e,t,n,{skipTexts:[f]}),pU(e,t,n,{adoptSessionScopedTools:!i}),LU(e,uW(r,t,{queryIdentity:o}),t,n)}e.lastLatency=v,uH(e,n),r&&(GH(e),TH(e)),a&&jH(e)}else if(t.state===`aborted`){let a=r?e.chatStream??``:n?.stream??``,o=!!n?.hasVisibleDelta||a.trim().length>0&&!FV(a);if(t.stopReason===`superseded_by_new_query`&&i)return dU({state:e,payload:t,pending:n,currentRun:r,streamedText:a}),uH(e,n),r&&(GH(e),TH(e)),t.state;if(t.stopReason===`superseded_by_new_query`&&!o)return uH(e,n),r&&TH(e),t.state;let s=iW(t.message),c=NU(t,n);s&&!LV(s)?LU(e,cW(s,t,{queryIdentity:c}),t,n):a.trim()&&!FV(a)&&LU(e,cW({role:`assistant`,content:[{type:`text`,text:a}],timestamp:Date.now()},t,{queryIdentity:c}),t,n);let l=n?.startedAt??e.chatStreamStartedAt;l!=null&&(e.lastLatency={ttftMs:e.lastLatency?.ttftMs??null,totalMs:Date.now()-l}),uH(e,n),r&&TH(e)}else if(t.state===`timeout`){let i=r||!!n,a=NU(t,n),o=aW(t.message),s=n?.startedAt??e.chatStreamStartedAt;UH(e,n);let c=s==null?null:{ttftMs:t.firstTokenAt==null?null:t.firstTokenAt-s,totalMs:t.endedAt==null?null:t.endedAt-s};o&&!LV(o)&&(c&&(o.__runLatency=c),LU(e,cW(o,t,{queryIdentity:a}),t,n),e.lastLatency=c),uH(e,n),r&&TH(e),i&&jH(e)}else t.state===`error`&&(uH(e,n),r&&TH(e),e.lastError=t.errorMessage??`chat error`);return t.state}async function hW(e){try{return(await e.request(`models.list`,{}))?.models??[]}catch{return[]}}var gW=`/new`,_W=new Set;function vW(e,t){console.debug(`[客悦变量] ${e}`,t??{})}function yW(e){return e.chatSending||!!e.chatRunId}function bW(e){if(!e.connected)return!1;let t=e.sessionKey.startsWith(`keyue:`);return e.tab!=null&&e.tab!==`chat`&&e.tab!==`tenantManagement`&&!(e.tab===`onlineChat`&&t)||e.chatLoading||e.chatSending||e.chatRunId||(e.chatQueue?.length??0)>0||e.chatMessages.length>0?!1:!e.chatStream?.trim()}function xW(e){let t=zM(e),n=e,r=new Set((n.keyueDialogVariables??[]).map(e=>e.name.trim()).filter(Boolean)),i=n.keyueExternalVariables,a=i&&r.size>0?Object.fromEntries(Object.entries(i).filter(([e])=>r.has(e))):i,o=i&&r.size>0?Object.keys(i).filter(e=>!r.has(e)):[];if(!(!t&&!a))return o.length>0&&vW(`SDK 外部变量被前端白名单忽略`,{count:o.length,names:o}),{...t,...a}}async function SW(e){let t=e;WM(t),await YM(t)}async function CW(e,t){e.chatLoading=!0;try{await tW(e,t)}finally{e.chatLoading=!1}let n=e;eN(n,!n.chatHasAutoScrolled);let r=e.sessionKey;if(r){if(e.chatMessages.length>0){_W.delete(r);return}if(bW(e)&&!_W.has(r)&&e.client?.connected){if(_W.add(r),!await fW(e,gW,void 0,{optimisticUserMessage:!1,suppressDisconnectedError:!0})){_W.delete(r);return}qM(e),Iz(e,r)}}}function wW(e){let t=e.trim();if(!t)return!1;let n=t.toLowerCase();return n===`/new`||n===`/reset`?!0:n.startsWith(`/new `)||n.startsWith(`/reset `)}function TW(e){let t=e.trim();if(!t)return!1;let n=t.toLowerCase();return n===`/new`||n===`/reset`}function EW(e,t){if(!e||typeof e!=`object`)return!1;let n=e,r=typeof n.runId==`string`?n.runId.trim():``,i=typeof n.queryId==`string`?n.queryId.trim():``;if(r===t||i===t)return!0;let a=n.__openclaw;if(!a||typeof a!=`object`)return!1;let o=a,s=typeof o.optimisticRunId==`string`?o.optimisticRunId.trim():``,c=typeof o.optimisticQueryId==`string`?o.optimisticQueryId.trim():``;return s===t||c===t}function DW(e,t){e.chatMessages=e.chatMessages.filter(e=>EW(e,t))}async function OW(e){e.connected&&(e.chatMessage=``,await pW(e))}async function kW(e,t,n){yW(e)||rB(e),tN(e);let r=wW(t),i=e.chatSessionId;r&&(e.chatSessionId=null);let a=r?void 0:xW(e);a&&vW(`准备发送 chat.send.variables`,{count:Object.keys(a).length,names:Object.keys(a),sessionKey:e.sessionKey,message:t});let o=await fW(e,t,n?.attachments,{optimisticUserMessage:!TW(t),routeSkillIds:n?.routeSkills?.map(e=>e.skillId),variables:a}),s=!!o;return!s&&n?.previousDraft!=null&&(e.chatMessage=n.previousDraft),!s&&n?.previousAttachments&&(e.chatAttachments=n.previousAttachments),!s&&n?.previousRouteSkills&&(e.chatRouteSkills=n.previousRouteSkills),!s&&r&&(e.chatSessionId=i),s&&(r?(o&&DW(e,o),await SW(e),vW(`新会话已重置前端调试参数面板`,{sessionKey:e.sessionKey,message:t})):qM(e),Iz(e,e.sessionKey)),s&&n?.restoreDraft&&n.previousDraft?.trim()&&(e.chatMessage=n.previousDraft),s&&n?.restoreAttachments&&n.previousAttachments?.length&&(e.chatAttachments=n.previousAttachments),s&&n?.restoreRouteSkills&&n.previousRouteSkills?.length&&(e.chatRouteSkills=n.previousRouteSkills),eN(e,!0),s&&!e.chatRunId&&AW(e),s&&n?.refreshSessions&&o&&e.refreshSessionsAfterChat.add(o),s}async function AW(e){if(!e.connected||yW(e))return;let[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n;let r=!1;try{t.localCommandName?(await jW(e,t.localCommandName,t.localCommandArgs??``),r=!0):r=await kW(e,t.text,{attachments:t.attachments,routeSkills:t.routeSkills,refreshSessions:t.refreshSessions})}catch(t){e.lastError=String(t)}r?e.chatQueue.length>0&&AW(e):e.chatQueue=[t,...e.chatQueue]}async function jW(e,t,n,r){switch(t){case`stop`:await OW(e);return;case`new`:await kW(e,`/new`,{refreshSessions:!0,previousDraft:r?.previousDraft,restoreDraft:r?.restoreDraft,routeSkills:r?.routeSkills}),e.onNewSession?.();return;case`reset`:await kW(e,`/reset`,{refreshSessions:!0,previousDraft:r?.previousDraft,restoreDraft:r?.restoreDraft,routeSkills:r?.routeSkills}),e.onNewSession?.();return;case`clear`:await MW(e);return;case`focus`:e.onSlashAction?.(`toggle-focus`);return;case`export`:e.onSlashAction?.(`export`);return}if(!e.client)return;let i=e.sessionKey,a=await OB(e.client,i,t,n);a.content&&NW(e,a.content),a.sessionPatch&&`modelOverride`in a.sessionPatch&&(e.chatModelOverrides={...e.chatModelOverrides,[i]:a.sessionPatch.modelOverride??null}),a.action===`refresh`&&await PW(e),eN(e)}async function MW(e){if(!(!e.client||!e.connected)){try{await e.client.request(`sessions.reset`,{key:e.sessionKey}),e.chatMessages=[],RH(e),await CW(e)}catch(t){e.lastError=String(t)}eN(e)}}function NW(e,t){e.chatMessages=[...e.chatMessages,{role:`system`,content:t,timestamp:Date.now()}]}async function PW(e,t){await Promise.all([CW(e),wF(e,{activeMinutes:0,limit:0,includeGlobal:!0,includeUnknown:!0}),zW(e),FW(e)]),t?.scheduleScroll!==!1&&eN(e)}async function FW(e){if(!e.client||!e.connected){e.chatModelsLoading=!1,e.chatModelCatalog=[];return}e.chatModelsLoading=!0;try{e.chatModelCatalog=await hW(e.client)}finally{e.chatModelsLoading=!1}}var IW=AW;function LW(e){let t=XM(e.sessionKey);return t?.agentId?t.agentId:(e.hello?.snapshot)?.sessionDefaults?.defaultAgentId?.trim()||`main`}function RW(e,t){let n=OF(e),r=encodeURIComponent(t);return n?`${n}/avatar/${r}?meta=1`:`avatar/${r}?meta=1`}async function zW(e){if(!e.connected){e.chatAvatarUrl=null;return}let t=LW(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;let n=RW(e.basePath,t);try{let t=await fetch(n,{method:`GET`});if(!t.ok){e.chatAvatarUrl=null;return}let r=await t.json();e.chatAvatarUrl=(typeof r.avatarUrl==`string`?r.avatarUrl.trim():``)||null}catch{e.chatAvatarUrl=null}}function BW(e){if(!e||e.state!==`final`)return!1;if(!e.message||typeof e.message!=`object`)return!0;let t=e.message,n=typeof t.role==`string`?t.role.toLowerCase():``;return!!(n&&n!==`assistant`)}function VW(e,t){if(typeof e!=`string`)return;let n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}var HW=50,UW=200;function WW(e){let t=VW(e?.name,HW)??`Assistant`,n=VW(e?.avatar??void 0,UW)??null;return{agentId:typeof e?.agentId==`string`&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}async function GW(e,t){if(!e.client||!e.connected)return;let n=t?.sessionKey?.trim()||e.sessionKey.trim(),r=n?{sessionKey:n}:{};try{let t=await e.client.request(`agent.identity.get`,r);if(!t)return;let n=WW(t);e.assistantName=n.name,e.assistantAvatar=n.avatar,e.assistantAgentId=n.agentId??null}catch{}}function KW(e){return typeof e==`object`&&!!e}function qW(e){if(!KW(e))return null;let t=typeof e.id==`string`?e.id.trim():``,n=e.request;if(!t||!KW(n))return null;let r=typeof n.command==`string`?n.command.trim():``;if(!r)return null;let i=typeof e.createdAtMs==`number`?e.createdAtMs:0,a=typeof e.expiresAtMs==`number`?e.expiresAtMs:0;return!i||!a?null:{id:t,request:{command:r,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 JW(e){if(!KW(e))return null;let 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 YW(e){let t=Date.now();return e.filter(e=>e.expiresAtMs>t)}function XW(e,t){let n=YW(e).filter(e=>e.id!==t.id);return n.push(t),n}function ZW(e,t){return YW(e).filter(e=>e.id!==t)}var QW={ok:!1,ts:0,durationMs:0,heartbeatSeconds:0,defaultAgentId:``,agents:[],sessions:{path:``,count:0,recent:[]}};async function $W(e){try{return await e.request(`health`,{})??QW}catch{return QW}}async function eG(e){if(!(!e.client||!e.connected)&&!e.healthLoading){e.healthLoading=!0,e.healthError=null;try{e.healthResult=await $W(e.client)}catch(t){e.healthError=String(t)}finally{e.healthLoading=!1}}}function tG(e,t){e.showErrorToast?.(ce(t))}function nG(e,t){return`${e}::${t}`}function rG(e,t,n){let r=Array.isArray(n)?new Set(n.map(e=>e.trim()).filter(Boolean)):null,i=`${t}::`,a={},o={};for(let[t,n]of Object.entries(e.skillFilesContents)){let e=t.startsWith(i),o=e?t.slice(i.length):``;e&&(!r||r.size===0||r.has(o))||(a[t]=n)}for(let[t,n]of Object.entries(e.skillFilesDrafts)){let a=t.startsWith(i),s=a?t.slice(i.length):``;if(!(a&&(!r||r.size===0||r.has(s)))){o[t]=n;continue}let c=e.skillFilesContents[t];Object.hasOwn(e.skillFilesDrafts,t)&&n!==c&&(o[t]=n)}e.skillFilesContents=a,e.skillFilesDrafts=o}async function iG(e,t,n){if(!e.client||!e.connected||!n?.force&&e.skillFilesLoading)return;e.skillFilesLoading=!0,e.skillFilesError=null;let r=null;try{let i={skillKey:t};n?.tenantId&&(i.tenantId=n.tenantId);let a=await e.client.request(`skills.files.list`,i);if(a&&(e.skillFilesLists={...e.skillFilesLists,[t]:a},!e.skillFilesActiveName&&a.files.length>0)){let t=a.files.find(e=>e.name===`SKILL.md`)??a.files[0];e.skillFilesActiveName=t.name,r=t.name}}catch(t){tG(e,t)}finally{e.skillFilesLoading=!1}r&&await aG(e,t,r,{tenantId:n?.tenantId,force:n?.force})}async function aG(e,t,n,r){if(!e.client||!e.connected||!r?.force&&e.skillFilesLoading)return;let i=nG(t,n);if(!(!r?.force&&Object.hasOwn(e.skillFilesContents,i))){e.skillFilesLoading=!0,e.skillFilesError=null;try{let a={skillKey:t,name:n};r?.tenantId&&(a.tenantId=r.tenantId);let o=await e.client.request(`skills.files.get`,a);if(o){let t=e.skillFilesContents[i],n=e.skillFilesDrafts[i];e.skillFilesContents={...e.skillFilesContents,[i]:o.content},(!Object.hasOwn(e.skillFilesDrafts,i)||n===t)&&(e.skillFilesDrafts={...e.skillFilesDrafts,[i]:o.content})}}catch(t){tG(e,t)}finally{e.skillFilesLoading=!1}}}function oG(e,t){return`tenant:${e}:skill:${t}`}function sG(e,t){return`platform-agent:skill-creator:${oG(e,t)}`}function cG(e){return/^(?:typeerror:\s*)?(?:fetch failed|failed to fetch)$/i.test(e.trim())}function lG(e){if(e?.variables&&typeof e.variables==`object`&&!Array.isArray(e.variables))return e.variables;if(e?.stream!==`tool`)return;let t=e.data;if(!t||typeof t!=`object`||typeof t.phase==`string`&&t.phase!==`result`)return;let n=t.result;if(!n||typeof n!=`object`||Array.isArray(n))return;let r=n.variables;if(!(!r||typeof r!=`object`||Array.isArray(r)))return r}function uG(e){let t=e.keyueSelectedTenantId?.trim(),n=e.skillAiBuilderSkillKey?.trim();return!t||!n?null:sG(t,n)}function dG(e){return!!uG(e)}function fG(e,t){return e.keyueChatTransport!==`sse`||!t?.sessionKey||!e.sessionKey.startsWith(`keyue:`)?!1:t.sessionKey===e.sessionKey}function pG(e){let t=e.serverVersion?.trim();if(!t)return;let n=e.pageUrl??(typeof window>`u`?void 0:window.location.href);if(n)try{let r=new URL(n),i=new URL(e.gatewayUrl,r);return!new Set([`ws:`,`wss:`,`http:`,`https:`]).has(i.protocol)||i.host!==r.host?void 0:t}catch{return}}function mG(e,t){let n=(e??``).trim(),r=t.mainSessionKey?.trim();if(!r)return n;if(!n)return r;let i=t.mainKey?.trim()||`main`,a=t.defaultAgentId?.trim();return n===`main`||n===i||a&&(n===`agent:${a}:main`||n===`agent:${a}:${i}`)?r:n}function hG(e,t){if(!t?.mainSessionKey||e.keyueSelectedTenantId&&(e.keyueSelectedBotId||e.keyueSelectedSkillId)&&e.keyueActivePhone||e.sessionKey.startsWith(`keyue:`))return;let n=e.userPhone&&/^\d{7,15}$/.test(e.userPhone)?`agent:phone-${e.userPhone}:webchat`:null;if(n){e.sessionKey!==n&&(e.sessionKey=n);return}let r=mG(e.sessionKey,t),i=mG(e.settings.sessionKey,t),a=mG(e.settings.lastActiveSessionKey,t),o=r||i||e.sessionKey,s={...e.settings,sessionKey:i||o,lastActiveSessionKey:a||o},c=s.sessionKey!==e.settings.sessionKey||s.lastActiveSessionKey!==e.settings.lastActiveSessionKey;o!==e.sessionKey&&(e.sessionKey=o),c&&Fz(e,s)}function gG(e){let t=e;t.pendingShutdownMessage=null,e.lastError=null,e.lastErrorCode=null,e.hello=null,e.connected=!1,e.execApprovalQueue=[],e.execApprovalError=null;let n=e.client,r=e.keyueSelectedTenantId&&e.keyueActivePhone?e.keyueSelectedBotId?{tenantId:e.keyueSelectedTenantId,botId:e.keyueSelectedBotId,userId:e.keyueActivePhone}:e.keyueSelectedSkillId?{tenantId:e.keyueSelectedTenantId,skillId:e.keyueSelectedSkillId,userId:e.keyueActivePhone}:void 0:void 0,i=pG({gatewayUrl:e.settings.gatewayUrl,serverVersion:e.serverVersion}),a=new dV({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`,clientVersion:i,mode:`webchat`,instanceId:e.clientInstanceId,phone:e.userPhone??e.keyueActivePhone??void 0,keyue:r,autoConnect:!0,onHello:n=>{e.client===a&&(t.pendingShutdownMessage=null,e.connected=!0,e.lastError=null,e.lastErrorCode=null,e.hello=n,OG(e,n),RH(e),rB(e),GW(e),rN(e),eG(e),nN(e,{quiet:!0}),CF(e,{quiet:!0}),e.userPhone&&!r&&a.request(`user.provision`,{}).catch(()=>{}),e.onConversationReady?.())},onClose:({code:n,reason:r,error:i,expected:o})=>{if(e.client===a){if(e.connected=!1,o){e.lastError=null,e.lastErrorCode=null;return}if(e.lastErrorCode=oV(i)??(typeof i?.code==`string`?i.code:null),n!==1012){if(i?.message){e.lastError=e.lastErrorCode&&cG(i.message)?mV({message:i.message,details:i.details,code:i.code}):i.message;return}e.lastError=t.pendingShutdownMessage??`disconnected (${n}): ${r||`no reason`}`}else e.lastError=t.pendingShutdownMessage??null,e.lastErrorCode=null}},onEvent:t=>{e.client===a&&_G(e,t)},onGap:({expected:t,received:n})=>{e.client===a&&console.warn(`[gateway] event gap (expected seq ${t}, got ${n})`)}});e.client=a,n?.stop(),a.start()}function _G(e,t){try{DG(e,t)}catch(e){console.error(`[gateway] handleGatewayEvent error:`,t.event,e)}}function vG(e,t,n,r){if(n!==`final`&&n!==`error`&&n!==`aborted`&&n!==`timeout`)return!1;if((n===`final`||n===`timeout`)&&jH(e),n===`final`&&e.keyueChatDebugEnabled&&t?.queryId){let n=t.externalSessionId??e.chatSessionId;n&&PM(e,{sessionId:n,queryId:t.queryId})}rB(e),IW(e);let i=t?.runId;return i&&e.refreshSessionsAfterChat.has(i)&&(e.refreshSessionsAfterChat.delete(i),n===`final`&&wF(e,{activeMinutes:120})),n===`final`&&(r||BW(t))?(CW(e,{preserveLastLatency:!0}),!0):!1}function yG(e,t){if(!(t.state===`delta`&&!e.skillAiChatRunId))if(t.state===`delta`){let n=AI(t.message);typeof n==`string`&&(e.skillAiChatStream=n)}else if(t.state===`final`){if(t.runId&&t.runId!==e.skillAiChatRunId)return;let n=e.skillAiPlanVisible&&e.skillAiPlanStatus===`running`;if(n&&(e.skillAiResolvedMode===`create`||e.skillAiResolvedMode===`modify`)){let n=t.message,r=``;if(n&&typeof n==`object`){let e=n;typeof e.role==`string`&&e.role.toLowerCase()===`assistant`&&(r=AI(e)?.trim()??``)}else e.skillAiChatStream?.trim()&&(r=e.skillAiChatStream.trim());if(r){let t=e.skillAiActiveStepId??e.skillAiPlanItems.find(e=>e.status===`in_progress`)?.id??null;t&&(e.skillAiPlanItems=e.skillAiPlanItems.map(e=>e.id===t?{...e,result:r}:e),wG(e))}}else{let n=t.message,r=``;if(n&&typeof n==`object`){let e=n;typeof e.role==`string`&&e.role.toLowerCase()===`assistant`&&(r=AI(e)?.trim()??``)}else e.skillAiChatStream?.trim()&&(r=e.skillAiChatStream.trim());if(e.skillAiResolvedMode===`chat`&&r){let n={role:`assistant`,kind:`skill_ai_chat`,timestamp:Date.now(),runId:t.runId??e.skillAiChatRunId??null,mode:`chat`,skillName:e.skillAiBuilderSkillName?.trim()||null,reason:e.skillAiPlanReason,message:r};e.skillAiChatMessages=[...e.skillAiChatMessages,n]}else if(n&&typeof n==`object`){let t=n;typeof t.role==`string`&&t.role.toLowerCase()===`assistant`&&(e.skillAiChatMessages=[...e.skillAiChatMessages,t])}else r&&(e.skillAiChatMessages=[...e.skillAiChatMessages,{role:`assistant`,content:[{type:`text`,text:r}],timestamp:Date.now()}])}e.skillAiChatStream=null,e.skillAiChatStreamStartedAt=null,n||(e.skillAiChatRunId=null,e.skillAiChatSending=!1,e.skillAiBuilderBuilding=!1);let r=t.skillKey,i=t.skillId;r&&r!==e.skillAiBuilderSkillKey&&(e.skillFilesActiveKey===e.skillAiBuilderSkillKey&&(e.skillFilesActiveKey=r),e.skillAiBuilderSkillKey=r),i&&(e.skillAiBuilderSkillId=i);let a=e.skillAiBuilderSkillKey;(async()=>{await EF(e),a&&await xG(e,a)})()}else (t.state===`aborted`||t.state===`error`||t.state===`timeout`)&&(e.skillAiChatStream=null,e.skillAiChatRunId=null,e.skillAiChatStreamStartedAt=null,e.skillAiChatSending=!1,e.skillAiBuilderBuilding=!1)}var bG=new Set([`write`,`edit`,`apply_patch`]);async function xG(e,t){rG(e,t);let n=e.keyueSelectedTenantId??void 0;await iG(e,t,{force:!0,tenantId:n});let r=new Set(e.skillFilesLists[t]?.files.map(e=>e.name).filter(Boolean)??[]),i=new Set;for(let t of e.skillAiBuilderOpenTabs)r.has(t)&&i.add(t);let a=e.skillFilesActiveName?.trim();a&&r.has(a)&&i.add(a);for(let r of i)await aG(e,t,r,{force:!0,tenantId:n})}function SG(e,t){if(!t)return e;let n=new Map((e??[]).map(e=>[e.id,e]));return t.map(e=>{let t=n.get(e.id);return{...t,...e,...e.result===void 0&&t?.result!==void 0?{result:t.result}:{}}})}function CG(e,t){let n=SG(e,t);if(!n)return n;let r=Date.now(),i=new Map((e??[]).map(e=>[e.id,e]));return n.map(e=>{let t=i.get(e.id);return e.status===`in_progress`?{...e,startedAtMs:t?.startedAtMs??r,durationMs:t?.durationMs}:(e.status===`done`||e.status===`failed`)&&t?.startedAtMs?{...e,startedAtMs:t.startedAtMs,durationMs:t.durationMs??Math.max(0,r-t.startedAtMs)}:{...e,startedAtMs:t?.startedAtMs,durationMs:t?.durationMs}})}function wG(e){let t=e.skillAiPlanRunId?.trim();if(!t)return;let n={role:`assistant`,kind:`skill_ai_plan`,timestamp:Date.now(),planRunId:t,mode:e.skillAiResolvedMode,reason:e.skillAiPlanReason,status:e.skillAiPlanStatus,items:e.skillAiPlanItems,error:e.skillAiPlanError},r=e.skillAiChatMessages,i=r.findIndex(e=>e&&typeof e==`object`&&e.kind===`skill_ai_plan`&&e.planRunId===t);if(i<0){e.skillAiChatMessages=[...r,n];return}e.skillAiChatMessages=r.map((e,t)=>t===i?n:e)}function TG(e,t){if(!t||!dG(e))return;let n=uG(e);if(!(t.sessionKey&&n&&t.sessionKey!==n)&&!(t.runId&&e.skillAiChatRunId&&t.runId!==e.skillAiChatRunId)){if(t.type===`skill_ai_plan_created`){e.skillAiResolvedMode=t.mode??null,e.skillAiPlanVisible=!0,e.skillAiPlanError=null,e.skillAiPlanReason=t.reason??null,e.skillAiPlanItems=CG(e.skillAiPlanItems,t.items)??[],e.skillAiActiveStepId=t.activeStepId??null,e.skillAiPlanRunId=t.planRunId??null,e.skillAiPlanStatus=t.status??`running`,e.skillAiWorkspaceDirtyButUnsynced=!1,e.skillAiReplanCount=t.replanCount??0,e.skillAiChatSending=!0,e.skillAiBuilderBuilding=!0,wG(e);return}if(t.type===`skill_ai_chat_started`){e.skillAiResolvedMode=`chat`,e.skillAiPlanVisible=!1,e.skillAiPlanError=null,e.skillAiPlanReason=t.reason??null,e.skillAiPlanStatus=t.status??`running`,e.skillAiChatSending=!0,e.skillAiBuilderBuilding=!0;return}if(t.type===`skill_ai_try_result`){e.skillAiResolvedMode=`try`,e.skillAiPlanVisible=!1,e.skillAiPlanStatus=`done`;let n={role:`assistant`,kind:`skill_ai_try`,timestamp:Date.now(),runId:t.runId??null,mode:`try`,skillName:e.skillAiBuilderSkillName?.trim()||null,reason:t.reason??null,status:t.status===`failed`?`failed`:`done`,message:t.message?.trim()||null};e.skillAiChatMessages=[...e.skillAiChatMessages,n],e.skillAiChatRunId=null,e.skillAiChatSending=!1,e.skillAiChatStream=null,e.skillAiChatStreamStartedAt=null,e.skillAiBuilderBuilding=!1;return}if(!(t.planRunId&&e.skillAiPlanRunId&&t.planRunId!==e.skillAiPlanRunId)){if(t.items&&(e.skillAiPlanItems=CG(e.skillAiPlanItems,t.items)??[]),t.mode&&(e.skillAiResolvedMode=t.mode),t.reason&&(e.skillAiPlanReason=t.reason),t.status&&(e.skillAiPlanStatus=t.status),`activeStepId`in t&&(e.skillAiActiveStepId=t.activeStepId??null),t.error&&(e.skillAiPlanError=t.error),typeof t.workspaceDirtyButUnsynced==`boolean`&&(e.skillAiWorkspaceDirtyButUnsynced=t.workspaceDirtyButUnsynced),typeof t.replanCount==`number`&&(e.skillAiReplanCount=t.replanCount),t.type===`skill_ai_plan_blocked`&&(e.skillAiPlanVisible=!0,e.skillAiPlanStatus=`blocked`),t.status===`running`){e.skillAiChatSending=!0,e.skillAiBuilderBuilding=!0,wG(e);return}(t.status===`done`||t.status===`failed`||t.status===`blocked`)&&(e.skillAiChatRunId=null,e.skillAiChatSending=!1,e.skillAiChatStream=null,e.skillAiChatStreamStartedAt=null,e.skillAiBuilderBuilding=!1),wG(e)}}}function EG(e,t){if(fG(e,t))return;t?.sessionKey&&Iz(e,t.sessionKey);let n=e,r=uG(n);if(r&&t){let e=t.sessionKey===r,i=!!n.skillAiChatRunId&&t.runId===n.skillAiChatRunId;if(e||i){yG(n,t);return}}let i=t?.state===`final`||t?.state===`error`||t?.state===`aborted`||t?.state===`timeout`;i&&eB(e);let a=i&&tB(e);vG(e,t,mW(e,t),a)}function DG(e,t){if(e.eventLogBuffer=[{ts:Date.now(),event:t.event,payload:t.payload},...e.eventLogBuffer].slice(0,250),(e.tab===`debug`||e.tab===`overview`)&&(e.eventLog=e.eventLogBuffer),t.event===`agent`){if(e.onboarding)return;let n=t.payload;if(n?.stream===`tool`){let t=e,r=uG(t),i=n.sessionKey,a=!!i&&!!r&&i===r,o=!!t.skillAiChatRunId&&n.runId===t.skillAiChatRunId;if(dG(t)&&(a||o)){let e=n.data??{},r=typeof e.toolCallId==`string`?e.toolCallId:``,i=typeof e.name==`string`?e.name:`tool`,a=typeof e.phase==`string`?e.phase:``;if(r){let e=t.skillAiToolCalls??[];e.find(e=>e.toolCallId===r)?a===`result`&&(t.skillAiToolCalls=e.map(e=>e.toolCallId===r?{...e,phase:`done`}:e)):t.skillAiToolCalls=[...e,{toolCallId:r,name:i,phase:`pending`}]}a===`result`&&bG.has(i.trim().toLowerCase())&&t.skillAiBuilderSkillKey&&xG(t,t.skillAiBuilderSkillKey);return}}let r=lG(n);r&&JM(e,r),uB(e,n);return}if(t.event===`chat`){EG(e,t.payload);return}if(t.event===`skill_ai_plan`){TG(e,t.payload);return}if(t.event===`presence`){let n=t.payload;n?.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event===`shutdown`){let n=t.payload,r=n&&typeof n.reason==`string`&&n.reason.trim()?n.reason.trim():`gateway stopping`,i=typeof n?.restartExpectedMs==`number`?`Restarting: ${r}`:`Disconnected: ${r}`;e.pendingShutdownMessage=i,e.lastError=i,e.lastErrorCode=null;return}if(t.event===`cron`&&e.tab===`cron`&&zz(e),(t.event===`device.pair.requested`||t.event===`device.pair.resolved`)&&CF(e,{quiet:!0}),t.event===`exec.approval.requested`){let n=qW(t.payload);if(n){e.execApprovalQueue=XW(e.execApprovalQueue,n),e.execApprovalError=null;let t=Math.max(0,n.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=ZW(e.execApprovalQueue,n.id)},t)}return}if(t.event===`exec.approval.resolved`){let n=JW(t.payload);n&&(e.execApprovalQueue=ZW(e.execApprovalQueue,n.id));return}t.event===`update.available`&&(e.updateAvailable=t.payload?.updateAvailable??null)}function OG(e,t){let n=t.snapshot;n?.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence),n?.health&&(e.debugHealth=n.health,e.healthResult=n.health),n?.sessionDefaults&&hG(e,n.sessionDefaults),e.updateAvailable=n?.updateAvailable??null}var kG=`/__openclaw/control-ui-config.json`;d(c(((e,t)=>{t.exports={}}))(),1);async function AG(e){if(typeof window>`u`||typeof fetch!=`function`)return;let t=OF(e.basePath||`/keyueclaw`),n=t?`${t}${kG}`:kG;try{let t=await fetch(n,{method:`GET`,headers:{Accept:`application/json`},credentials:`same-origin`});if(!t.ok)return;let r=await t.json(),i=WW({agentId:r.assistantAgentId??null,name:r.assistantName,avatar:r.assistantAvatar??null});e.assistantName=i.name,e.assistantAvatar=i.avatar,e.assistantAgentId=i.agentId??null,e.serverVersion=r.serverVersion??null,e.mediaUploadLimits=r.mediaUploadLimits??null;let a=r.gatewayToken?.trim();a&&e.settings&&!e.settings.token.trim()&&(e.settings={...e.settings,token:a})}catch{}}function jG(e){return e.replace(/^http:\/\//i,`ws://`).replace(/^https:\/\//i,`wss://`)}function MG(e,t){e.themeResolved=t;let n=t.endsWith(`light`)?`light`:`dark`;e.dataset.theme=t,e.dataset.themeMode=n,e.style.colorScheme=n}function NG(e){if(e.themeMode!==`system`){e.systemThemeCleanup?.(),e.systemThemeCleanup=null;return}if(e.systemThemeCleanup||typeof globalThis.matchMedia!=`function`)return;let t=globalThis.matchMedia(`(prefers-color-scheme: light)`),n=()=>{e.themeMode===`system`&&MG(e,LF(e.theme,`system`))};if(typeof t.addEventListener==`function`){t.addEventListener(`change`,n),e.systemThemeCleanup=()=>t.removeEventListener(`change`,n);return}try{t.addListener(n),e.systemThemeCleanup=()=>t.removeListener(n)}catch{}}function PG(e){e.theme=e.settings.theme??`dash`,e.themeMode=e.settings.themeMode??`system`,MG(e,LF(e.theme,e.themeMode)),NG(e)}function FG(e){let t=e.wsBaseUrl?.trim();return t?jG(t):``}function IG(e){let t=FG(e);t&&(e.settings={...e.settings,gatewayUrl:t},e.token&&(eI(t,e.token),e.settings={...e.settings,token:e.token}))}var LG=class extends On{constructor(...e){super(...e),this.wsBaseUrl=``,this.httpBaseUrl=``,this.token=``,this.theme=`dash`,this.clientInstanceId=g(),this.connectGeneration=0,this.settings=nI(),this.connected=!1,this.hello=null,this.lastError=null,this.lastErrorCode=null,this.themeMode=`system`,this.themeResolved=`dash`,this.themeOrder=[...jF],this.pendingGatewayUrl=null,this.systemThemeCleanup=null,this.pendingGatewayToken=null,this.basePath=``,this.client=null,this.password=``,this.serverVersion=null,this.assistantName=``,this.assistantAvatar=null,this.assistantAgentId=null,this.mediaUploadLimits=null,this.noUrlSync=!0,this.chatRunId=null,this.chatQueue=[],this.refreshSessionsAfterChat=new Set,this.eventLogBuffer=[],this.eventLog=[],this.presenceEntries=[],this.presenceError=null,this.presenceStatus=null,this.agentsLoading=!1,this.agentsList=null,this.agentsError=null,this.healthLoading=!1,this.healthResult=null,this.healthError=null,this.debugHealth=null,this.execApprovalQueue=[],this.execApprovalError=null,this.updateAvailable=null,this.gatewayBootstrapDone=!1}createRenderRoot(){return this}beforeGatewayConnectSetup(){}afterGatewayConnected(){}shouldReconnectOnPropChange(){return this.gatewayBootstrapDone}startEmbeddedGatewayConnection(){IG(this),this.settings={...this.settings,theme:this.theme},this.gatewayBootstrapDone=!1,++this.connectGeneration;let e=this.connectGeneration;PG(this),AG(this).finally(()=>{this.connectGeneration===e&&(this.gatewayBootstrapDone=!0,gG(this))})}stopEmbeddedGatewayConnection(){this.connectGeneration+=1,this.client?.stop(),this.client=null,this.connected=!1,Lz(this)}handleEmbeddedGatewayUpdates(e){this.shouldReconnectOnPropChange()&&(e.has(`wsBaseUrl`)||e.has(`httpBaseUrl`)||e.has(`token`))&&(IG(this),FG(this)&&gG(this)),e.has(`theme`)&&(this.settings={...this.settings,theme:this.theme},PG(this)),e.has(`connected`)&&this.connected&&this.afterGatewayConnected()}connectedCallback(){super.connectedCallback(),this.beforeGatewayConnectSetup(),this.startEmbeddedGatewayConnection()}disconnectedCallback(){super.disconnectedCallback(),this.stopEmbeddedGatewayConnection()}updated(e){super.updated(e),this.handleEmbeddedGatewayUpdates(e)}};q([G({type:String,attribute:`ws-base-url`})],LG.prototype,`wsBaseUrl`,void 0),q([G({type:String,attribute:`http-base-url`})],LG.prototype,`httpBaseUrl`,void 0),q([G({type:String})],LG.prototype,`token`,void 0),q([G({type:String})],LG.prototype,`theme`,void 0),q([K()],LG.prototype,`settings`,void 0),q([K()],LG.prototype,`connected`,void 0),q([K()],LG.prototype,`hello`,void 0),q([K()],LG.prototype,`lastError`,void 0),q([K()],LG.prototype,`lastErrorCode`,void 0),q([K()],LG.prototype,`themeMode`,void 0),q([K()],LG.prototype,`themeResolved`,void 0),q([K()],LG.prototype,`themeOrder`,void 0),q([K()],LG.prototype,`pendingGatewayUrl`,void 0),q([K()],LG.prototype,`systemThemeCleanup`,void 0),q([K()],LG.prototype,`mediaUploadLimits`,void 0);function RG(e,t,n=`text/plain`){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,a.click(),URL.revokeObjectURL(i)}var zG=[{id:`platform`,label:`平台接口`},{id:`personal`,label:`个人接口`},{id:`nengkai_credentials`,label:`能开密钥`}];function BG(e){if(!e.name.trim()||!e.url.trim()||e.interfaceType===`nengkai`&&!e.nengkaiId.trim()||e.interfaceType===`nengkai`&&!e.nengkaiCredentialName.trim())return!1;let t=e.headers.map(e=>e.name.trim().toLowerCase()).filter(Boolean);if(e.headers.some(e=>!!(e.name.trim()||e.description.trim()||(e.example??``).trim())&&(!e.name.trim()||!e.description.trim()))||new Set(t).size!==t.length)return!1;let n=e=>e.some(e=>e.name.trim()?Array.isArray(e.children)?n(e.children):!1:!0);return!(n(e.inputParams)||n(e.outputParams))}var $=class extends LG{constructor(...e){super(...e),this.serviceUrl=``,this.tenantId=``,this.sessionKey=`main`,this.tab=`apiManagement`,this.toolStreamById=new Map,this.toolStreamOrder=[],this.toolStreamSyncTimer=null,this.chatToolMessages=[],this.chatStreamSegments=[],this.chatStream=null,this.chatStreamStartedAt=null,this.keyueSelectedTenantId=null,this.keyueTenants=[],this.apiManagementTab=`platform`,this.apiDefinitionsLoading=!1,this.apiDefinitionsSaving=!1,this.apiDefinitionsExporting=!1,this.apiDefinitionsImporting=!1,this.apiDefinitionsError=null,this.apiDefinitionsSaveAttempted=!1,this.apiDefinitionsItems=[],this.apiDefinitionsPath=null,this.apiDefinitionsQuery=``,this.apiDefinitionsInterfaceTypeFilter=`all`,this.apiDefinitionsHash=null,this.apiDefinitionsMode=`list`,this.apiDefinitionsEditingId=null,this.apiDefinitionsForm=Ce(),this.globalToast=null,this.globalToastKind=`error`,this.apiDefinitionsDeleteConfirmItem=null,this.apiDefinitionsSelectedIds=[],this.apiDefinitionsDeleteConfirmItems=null,this.apiDefinitionsType=`platform`,this.apiDefinitionsPage=1,this.apiDefinitionsPageSize=20,this.apiDefinitionsTotal=0,this.nengkaiCredentialsLoading=!1,this.nengkaiCredentialsSaving=!1,this.nengkaiCredentialsError=null,this.nengkaiCredentialsItems=[],this.nengkaiCredentialsHash=null,this.nengkaiCredentialsPath=null,this.nengkaiCredentialsMode=`list`,this.nengkaiCredentialsEditingId=null,this.nengkaiCredentialsForm=lt(),this.nengkaiCredentialsSaveAttempted=!1}startEmbeddedGatewayConnection(){this.syncTenantId(),this.loadActiveTab(),this.loadTenantInfo()}updated(e){e.has(`tenantId`)&&(this.syncTenantId(),this.loadActiveTab(),this.loadTenantInfo()),super.updated(e)}disconnectedCallback(){je(this),mt(this),super.disconnectedCallback()}syncTenantId(){this.keyueSelectedTenantId=this.tenantId.trim()||null}async loadTenantInfo(){let e=this.keyueSelectedTenantId;if(!e){this.keyueTenants=[];return}if(!this.keyueTenants.some(t=>t.tenantId===e))try{let t=await new oe({serviceUrl:this.serviceUrl,settings:this.settings,password:this.password}).getTenant(e);t?.tenantId&&(this.keyueTenants=[t])}catch{}}async loadActiveTab(){if(this.apiManagementTab===`nengkai_credentials`){await dt(this);return}Ne(this,this.apiManagementTab),await Promise.all([Oe(this),dt(this)])}async switchApiManagementTab(e){this.apiManagementTab!==e&&(je(this),mt(this),this.apiManagementTab=e,await this.loadActiveTab())}handleEmbeddedGatewayUpdates(e){e.has(`serviceUrl`)&&(this.loadActiveTab(),this.loadTenantInfo()),super.handleEmbeddedGatewayUpdates(e)}render(){let e=this.apiManagementTab===`nengkai_credentials`,t=e?this.nengkaiCredentialsMode===`edit`:this.apiDefinitionsMode===`edit`,n=e?this.renderCredentialsView():this.renderDefinitionsView();return S`
|
|
2165
|
+
`,`\r`,`,`,`.`,`!`,`?`,`;`,`:`,`"`,`'`,`(`,`)`,`[`,`]`,`{`,`}`,`,`,`。`,`!`,`?`,`;`,`:`,`、`,`“`,`”`,`‘`,`’`,`(`,`)`,`【`,`】`,`《`,`》`,`~`,`~`]);function sU(e){let t=[];for(let n of e.trim())oU.has(n)||t.push(n.toLowerCase());return t.join(``)}function cU(e){let t=Array.from(e),n=new Set;for(let e=0;e<t.length-1;e+=1)n.add(`${t[e]}${t[e+1]}`);return n}function lU(e,t){let n=sU(e),r=sU(t);if(Math.min(n.length,r.length)<rU)return!1;let i=Math.max(n.length,r.length),a=n.length<=r.length?n:r;if((n.length>r.length?n:r).includes(a)&&a.length/i>=.55)return!0;let o=cU(n),s=cU(r),c=Math.min(o.size,s.size);if(c<=0)return!1;let l=0;for(let e of o)s.has(e)&&(l+=1);let u=o.size+s.size-l,d=l/c,f=u>0?l/u:0;return d>=iU&&f>=aU}function uU(e){let t=e.prefix?.trim();if(!t)return;let n=e.pending?.startedAt??e.state.chatStreamStartedAt??Date.now(),r=cW({role:`assistant`,content:[{type:`text`,text:t}],timestamp:n,__openclaw:{kind:`route_notice`},...e.runLatency?{__runLatency:e.runLatency}:{}},e.payload,{includeRunOnly:!0,queryIdentity:e.queryIdentity});FU(e.state,r,e.queryIdentity)}function dU(e){let t=e.streamedText.trim(),n=ZH(e.pending)??(e.currentRun?QH(e.state):void 0),r=NU(e.payload,e.pending);n?uU({state:e.state,payload:e.payload,pending:e.pending,queryIdentity:r,prefix:n}):t&&!FV(t)&&LU(e.state,cW({role:`assistant`,content:[{type:`text`,text:t}],timestamp:Date.now()},e.payload,{queryIdentity:r}),e.payload,e.pending),fU(e.state,e.payload,e.pending,{skipTexts:[n??``,t]}),pU(e.state,e.payload,e.pending)}function fU(e,t,n,r){let i=NU(t,n);if(!i)return;let a=(r?.skipTexts??[]).map(e=>e.trim()).filter(Boolean);for(let n of KH(e)){if(FV(n.text)||n.queryId&&n.queryId!==i||a.some(e=>nU(e,n.text)))continue;let r=n.queryId??i;FU(e,cW({role:`assistant`,content:[{type:`text`,text:n.text}],timestamp:n.ts},t,{includeRunOnly:!0,queryIdentity:r}),r)}}function pU(e,t,n,r){let i=NU(t,n)??Q(t.runId)??Q(n?.runId),a=Q(t.runId)??Q(n?.runId);if(!i||!a)return;let o=new Set([i,a,Q(t.queryId),SU(t.message),Q(t.runId),Q(n?.queryId),Q(n?.runId)].filter(e=>!!e)),s=e;if(!Array.isArray(s.chatToolMessages))return;let c=Q(t.sessionKey),l=[],u=!1,d=new Set;for(let t of s.chatToolMessages){let n=xU(t),f=CU(t),p=AU(t),m=p?DU(p):null,h=m&&s.toolStreamById instanceof Map?s.toolStreamById.get(m):void 0,g=Q(h?.queryId),_=Q(h?.runId),v=Q(t.sessionKey??h?.sessionKey),y=[n,f,g,_].some(e=>!!(e&&o.has(e))),ee=r?.adoptSessionScopedTools===!0&&!!h&&!n&&!g&&!!_&&_===f&&!!c&&(!v||v===c);if(!y&&!ee){l.push(t);continue}let b=lW({...t},i,f??a);jU(e.chatMessages,b)||FU(e,b,i),m&&d.add(m),u=!0}if(u&&(s.chatToolMessages=l,s.toolStreamById instanceof Map&&Array.isArray(s.toolStreamOrder))){let e=[];for(let t of s.toolStreamOrder){let n=s.toolStreamById.get(t);n?.queryId===i||n?.runId===a||d.has(DU(t))?s.toolStreamById.delete(t):e.push(t)}s.toolStreamOrder=e}}function mU(e,t){if(Object.is(e,t))return!0;if(e&&typeof e==`object`&&t&&typeof t==`object`){let n=e,r=t,i=typeof n.role==`string`?n.role.toLowerCase():``,a=typeof r.role==`string`?r.role.toLowerCase():``,o=AI(e),s=AI(t);if(i&&i===a&&typeof o==`string`&&typeof s==`string`)return o.trim()===s.trim()}try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}function hU(e){if(!e||typeof e!=`object`)return!1;let t=e;return!!(t.__mediaResult&&typeof t.__mediaResult==`object`||t.__debugInfo&&typeof t.__debugInfo==`object`)}function gU(e,t){if(RU(e)!==`assistant`||RU(t)!==`assistant`||!hU(t))return!1;let n=xU(e),r=xU(t);return n&&r?n===r:mU(e,t)}function _U(e,t){if(RU(e)!==`assistant`||RU(t)!==`assistant`||zU(e)||zU(t)||JU(e)||JU(t))return e;let n=AI(e)?.trim(),r=AI(t)?.trim();if(!n||!r||n===r||!n.endsWith(r))return e;let i=n.slice(0,n.length-r.length).trim();return!i||!YH(i)?e:qH(e,r)}function vU(e,t){let n=xU(t);return!n||SU(e)?e:lW(e,n,CU(t))}function yU(e,t){if(!e||typeof e!=`object`)return e;let n=e,r=t,i=vU(_U(n,t),t);if(!hU(t))return i;let a=i,o={...a,...a.__mediaResult===void 0&&r.__mediaResult?{__mediaResult:r.__mediaResult}:{},...a.__debugInfo===void 0&&r.__debugInfo?{__debugInfo:r.__debugInfo}:{}},s=a[MV];return typeof s==`string`&&s.trim()&&Object.defineProperty(o,MV,{value:s.trim(),enumerable:!1}),o}function bU(e,t){let n=t.filter(hU);if(n.length===0||e.length===0)return e;let r=!1,i=e.map(e=>{let t=n.find(t=>gU(e,t));if(!t)return e;let i=yU(e,t);return r||=i!==e,i});return r?i:e}function xU(e){if(!e||typeof e!=`object`)return null;let t=e,n=SU(e);if(n)return n;let r=t.__openclaw;if(r&&typeof r==`object`){let e=r,t=typeof e.optimisticQueryId==`string`?e.optimisticQueryId.trim():``;if(t)return t;let n=typeof e.optimisticRunId==`string`?e.optimisticRunId.trim():``;if(n)return n}let i=t[MV];return typeof i==`string`&&i.trim()?i.trim():null}function SU(e){if(!e||typeof e!=`object`)return null;let t=e.queryId;return typeof t==`string`&&t.trim()?t.trim():null}function CU(e){if(!e||typeof e!=`object`)return null;let t=e,n=Q(t.runId);if(n)return n;let r=Q(t[NV]);if(r)return r;let i=t.__openclaw;return!i||typeof i!=`object`?null:Q(i.optimisticRunId)}function wU(e){return typeof e==`string`&&e.trim()?e.trim():void 0}function TU(e){if(!e||typeof e!=`object`)return null;let t=e,n=Array.isArray(t.skillNames)?[...new Set(t.skillNames.map(e=>typeof e==`string`?e.trim():``).filter(Boolean))]:[],r=wU(t.skillName)??n[0];return r?{...wU(t.tenantId)?{tenantId:wU(t.tenantId)}:{},...wU(t.skillId)?{skillId:wU(t.skillId)}:{},...wU(t.skillKey)?{skillKey:wU(t.skillKey)}:{},skillName:r,...n.length?{skillNames:n}:{},...wU(t.description)?{description:wU(t.description)}:{},...wU(t.skillPath)?{skillPath:wU(t.skillPath)}:{}}:null}function EU(e,t,n){let r=TU(t.routeSkill);if(!r)return!1;let i=new Set([MU(t,n),Q(t.queryId),Q(t.runId),Q(n?.queryId),Q(n?.runId)].filter(e=>!!e));if(i.size===0)return!1;let a=!1,o=e.chatMessages.map(e=>{if(RU(e)!==`user`||!e||typeof e!=`object`||![xU(e),CU(e)].filter(e=>!!e).some(e=>i.has(e)))return e;let t=e,n=t.__openclaw&&typeof t.__openclaw==`object`?t.__openclaw:{};return n.routeSkill&&typeof n.routeSkill==`object`?e:(a=!0,{...t,__openclaw:{...n,routeSkill:r}})});return a&&(e.chatMessages=o),a}function DU(e){return e.startsWith(`tool-call:`)?e.slice(10):e}function OU(e){if(!e||typeof e!=`object`)return null;let t=e,n=RU(e),r=!1,i=n===`toolresult`||n===`tool_result`||n===`tool`||n===`function`||typeof t.toolName==`string`||typeof t.tool_name==`string`,a=Array.isArray(t.content)?t.content:[];for(let e of a){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.type==`string`?t.type.toLowerCase():``;[`toolcall`,`tool_call`,`tooluse`,`tool_use`].includes(n)&&(r=!0),[`toolresult`,`tool_result`].includes(n)&&(i=!0),typeof t.name==`string`&&(t.arguments!=null||t.args!=null)&&(r=!0)}return!r&&!i&&(typeof t.toolCallId==`string`||typeof t.tool_call_id==`string`)&&(i=!0),r&&i?`mixed`:i?`result`:r?`call`:null}function kU(e){if(!e||typeof e!=`object`)return null;let t=e,n=xU(e)??CU(e),r=OU(e),i=Q(t.toolCallId)??Q(t.tool_call_id)??Q(t.id);return!n||!r||!i?null:`${n}:${r}:${DU(i)}`}function AU(e){if(!e||typeof e!=`object`)return null;let t=e;return Q(t.toolCallId)??Q(t.tool_call_id)??Q(t.id)}function jU(e,t){let n=kU(t);return n?e.some(e=>kU(e)===n):!1}function MU(e,t){return Q(e.queryId)??SU(e.message)??Q(t?.queryId)??Q(e.runId)??Q(t?.runId)}function NU(e,t){return Q(e.queryId)??SU(e.message)??Q(t?.queryId)}function PU(e,t){return NU(e,t)??(t?dH(t):null)}function FU(e,t,n){let r=Q(n);if(!r){e.chatMessages=[...e.chatMessages,t];return}let i=-1;for(let t=0;t<e.chatMessages.length;t+=1)xU(e.chatMessages[t])===r&&(i=t);if(i<0){e.chatMessages=[...e.chatMessages,t];return}let a=[...e.chatMessages];a.splice(i+1,0,t),e.chatMessages=a}function IU(e,t,n,r){if(RU(t)!==`assistant`)return!1;let i=AI(t)?.trim();if(!i)return!1;let a=new Set([MU(n,r),NU(n,r),Q(n.queryId),Q(n.runId),Q(r?.queryId),Q(r?.runId),xU(t),CU(t)].filter(e=>!!e));if(a.size===0)return!1;let o=e.chatMessages.findIndex(e=>{if(RU(e)!==`assistant`)return!1;let t=AI(e)?.trim();return!t||t!==i?!1:[xU(e),CU(e)].some(e=>e!==null&&a.has(e))});if(o<0)return!1;let s=e.chatMessages[o],c=yU(s,t);if(c!==s){let t=[...e.chatMessages];t[o]=c,e.chatMessages=t}return!0}function LU(e,t,n,r){IU(e,t,n,r)||FU(e,t,MU(n,r))}function RU(e){if(!e||typeof e!=`object`)return``;let t=e;return typeof t.role==`string`?t.role.toLowerCase():``}function zU(e){if(RU(e)!==`assistant`||!e||typeof e!=`object`)return!1;let t=e.__openclaw;return!!(t&&typeof t==`object`&&t.kind===`route_notice`)}function BU(e){if(!e||typeof e!=`object`)return null;let t=e.timestamp;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`&&t.trim()){let e=Date.parse(t);return Number.isFinite(e)?e:null}return null}function VU(e){let t=new Set;for(let n of e){if(RU(n)!==`user`)continue;let e=xU(n);e&&t.add(e)}return t}function HU(e){let t=new Set;for(let n of e){if(!zU(n))continue;let e=xU(n);e&&t.add(e)}return t}function UU(e,t){let n=xU(e);return GU(e)&&n!==null&&t.has(n)}function WU(e,t){let n=xU(e);return zU(e)&&n!==null&&t.has(n)}function GU(e){return KU(e)}function KU(e){if(RU(e)!==`user`||!e||typeof e!=`object`)return!1;let t=e.__openclaw;if(!t||typeof t!=`object`)return!1;let n=t;return!!(Q(n.optimisticQueryId)??Q(n.optimisticRunId))}function qU(e){let t=null,n=!1,r=e.map(e=>{if(RU(e)===`user`)return t=xU(e),e;if(!t||xU(e)||!e||typeof e!=`object`)return e;n=!0;let r={...e};return Object.defineProperty(r,MV,{value:t,enumerable:!1}),r});return n?r:e}function JU(e){if(!e||typeof e!=`object`)return!1;let t=e,n=RU(e);return n===`toolresult`||n===`tool_result`||n===`tool`||n===`function`||typeof t.toolCallId==`string`||typeof t.tool_call_id==`string`||typeof t.toolName==`string`||typeof t.tool_name==`string`?!0:(Array.isArray(t.content)?t.content:[]).some(e=>{if(!e||typeof e!=`object`)return!1;let t=e,n=typeof t.type==`string`?t.type.toLowerCase():``;return n===`toolcall`||n===`tool_call`||n===`tooluse`||n===`tool_use`||n===`toolresult`||n===`tool_result`||typeof t.name==`string`&&(t.arguments!=null||t.args!=null)})}function YU(e){return RU(e)===`user`?0:1}function XU(e){let t=new Map;for(let n=0;n<e.length;n+=1){let r=e[n];if(!KU(r))continue;let i=xU(r);i&&!t.has(i)&&t.set(i,n)}return t}function ZU(e,t){let n=[...e],r=0;for(;r<n.length;){if(BU(n[r])===null){r+=1;continue}let e=r;for(;r<n.length&&BU(n[r])!==null;)r+=1;let i=n.slice(e,r);if(i.length<2)continue;let a=new Map,o=i.map((e,t)=>({message:e,order:t,timestampMs:BU(e)})).map(e=>{let n=xU(e.message);if(n&&RU(e.message)===`user`&&e.timestampMs!==null){let r=a.get(n),i=SU(e.message)===n,o=t?.queryOrderHints?.get(n);(!r||i&&!r.stableHistoryAnchor||i===r.stableHistoryAnchor&&e.order<r.order)&&a.set(n,{order:o??e.order,timestampMs:e.timestampMs,stableHistoryAnchor:i,hasOrderHint:o!==void 0})}return{...e,queryIdentity:n}}).toSorted((e,t)=>{let n=e.queryIdentity?a.get(e.queryIdentity):void 0,r=t.queryIdentity?a.get(t.queryIdentity):void 0,i=n?.timestampMs??e.timestampMs,o=r?.timestampMs??t.timestampMs,s=n?.stableHistoryAnchor===!0&&r?.stableHistoryAnchor===!0&&i!==null&&o!==null?Math.abs(i-o):1/0,c=n?.hasOrderHint===!0&&r?.hasOrderHint===!0||s<=AV,l=n?.order??e.order,u=r?.order??t.order;if(c&&l!==u)return l-u;if(!c&&i!==null&&o!==null&&i!==o)return i-o;let d=YU(e.message),f=YU(t.message);return d===f?e.timestampMs!==null&&t.timestampMs!==null&&e.timestampMs!==t.timestampMs?e.timestampMs-t.timestampMs:e.order-t.order:d-f}).map(e=>e.message);n.splice(e,i.length,...o)}return n}function QU(e,t,n){let r=xU(t),i=RU(t);for(let a=n;a<e.length;a+=1){let n=xU(e[a]);if(!(r&&n&&r!==n)&&(r&&n===r&&i===`assistant`&&RU(e[a])===`assistant`&&!zU(t)&&!zU(e[a])&&!JU(t)&&!JU(e[a])||mU(e[a],t)))return a}return-1}function $U(e,t){let n=[],r=[],i=[],a=VU(e),o=HU(e),s=XU(t),c=0,l=!1;for(let s of t){let t=QU(e,s,c);if(t>=0){if(n.push(...e.slice(c,t)),n.push(...r.splice(0)),l&&RU(s)===`assistant`){let e=[];for(let t of i.splice(0))RU(t)===`user`?e.push(t):n.push(t);i.push(...e)}n.push(yU(e[t],s)),l&&n.push(...i.splice(0)),c=t+1,l=!0;continue}if(!UU(s,a)&&!WU(s,o)){if(!l){r.push(s);continue}if(e.length>0&&c>=e.length){n.push(...i.splice(0)),n.push(s);continue}if(!GU(s)){i.push(s);continue}n.push(s)}}return l?(n.push(...e.slice(c)),n.push(...i),ZU(n,{queryOrderHints:s})):ZU([...e,...r],{queryOrderHints:s})}function eW(e,t){let n=[],r=VU(e),i=HU(e),a=XU(t),o=0;for(let a of t){let t=QU(e,a,o);if(t>=0){n.push(...e.slice(o,t)),n.push(yU(e[t],a)),o=t+1;continue}UU(a,r)||WU(a,i)||(e.length>0&&o>=e.length||GU(a))&&n.push(a)}return n.push(...e.slice(o)),ZU(n,{queryOrderHints:a})}async function tW(e,t){if((!e.client||!e.connected)&&!UV(e))return;e.chatLoading=!0,e.lastError=null;let n=e.sessionKey,r=VV(e);try{let i=UV(e)?await(async()=>{let t=await iH(e,{action:`history`,sessionKey:n,limit:200,...WV(e)?{preferLatestKeyueSession:!0}:{},...e.keyueDeployMode===`preview`||e.keyueDeployMode===`online`?{deployMode:`online`}:{}});for await(let e of rH(t)){if(e.event!==`result`)continue;let t=ZV(e.data,`history`);return QV(t,`history`),t}throw Error(`missing history result`)})():await JV(e).request(`chat.history`,{sessionKey:n,limit:200,...WV(e)?{preferLatestKeyueSession:!0}:{},...e.keyueDeployMode===`preview`||e.keyueDeployMode===`online`?{deployMode:`online`}:{}});if(!nH(e,n,i.sessionKey)||VV(e)!==r)return;let a=qU((Array.isArray(i.messages)?i.messages:[]).filter(e=>!LV(e)&&!RV(e)&&!zV(e))),o=bU(t?.preserveLastLatency&&!zH(a)?BH(a,e.lastLatency):a,e.chatMessages),s=Array.isArray(e.pendingChatMessages)&&e.pendingChatMessages.length>0;e.chatRunId||s?e.chatMessages=$U(o,e.chatMessages):e.chatMessages.some(GU)?e.chatMessages=eW(o,e.chatMessages):e.chatMessages=ZU(o),e.chatThinkingLevel=i.thinkingLevel??null,e.chatSessionId=typeof i.sessionId==`string`&&i.sessionId.trim()?i.sessionId:null,aH(e,i.variables),e.chatRunId||(VH(e),e.chatStream=null,e.chatStreamStartedAt=null),t?.preserveLastLatency&&!zH(a)||(e.lastLatency=null)}catch(t){e.lastError=String(t)}finally{e.chatLoading=!1}}function nW(e){let t=/^data:([^;]*);base64,(.+)$/.exec(e);return t?{mimeType:t[1],content:t[2]}:null}function rW(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=n.role;if(typeof r==`string`){if((t.roleCaseSensitive?r:r.toLowerCase())!==`assistant`)return null}else if(t.roleRequirement===`required`)return null;return t.requireContentArray?Array.isArray(n.content)?n:null:!(`content`in n)&&!(t.allowTextField&&`text`in n)?null:n}function iW(e){return rW(e,{roleRequirement:`required`,roleCaseSensitive:!0,requireContentArray:!0})}function aW(e){return rW(e,{roleRequirement:`optional`,allowTextField:!0})}function oW(e){if(!e||typeof e!=`object`)return null;let t=e.visibleAnswer;if(!t||typeof t!=`object`)return null;let n=t.answer;if(!n||typeof n!=`object`)return null;let r=n.text;return typeof r==`string`&&r.trim()?r.trim():null}function sW(e,t){let n=oW(t.debugInfo);return n?AI(e)?.trim()===n?e:qH(e,n):e}function cW(e,t,n){let r=Q(n?.queryIdentity)??Q(t.queryId);return!r&&!(n?.includeRunOnly&&t.runId)?e:lW(e,r,t.runId)}function lW(e,t,n){let r=Q(t),i=Q(n);if(!r&&!i)return e;let a=e.__openclaw&&typeof e.__openclaw==`object`?e.__openclaw:{};return{...e,...r&&typeof e.queryId!=`string`?{queryId:r}:{},__openclaw:{...a,...i?{optimisticRunId:i}:{},...r?{optimisticQueryId:r}:{}}}}function uW(e,t,n){let r=t.mediaResult&&typeof t.mediaResult==`object`?t.mediaResult:null,i=t.debugInfo&&typeof t.debugInfo==`object`?t.debugInfo:null,a=cW(e,t,n),o=!xU(a)&&t.runId?Q(t.runId):null;if(!r&&!i&&a===e){if(o){let t={...e};return Object.defineProperty(t,NV,{value:o,enumerable:!1}),t}return e}let s={...a,...r?{__mediaResult:r}:{},...i?{__debugInfo:i}:{}};return o&&Object.defineProperty(s,NV,{value:o,enumerable:!1}),s}function dW(e,t){if(!t.mediaResult||typeof t.mediaResult!=`object`)return!1;let n=e,r=n.toolStreamById,i=n.toolStreamOrder;if(!(r instanceof Map)||!Array.isArray(i))return!1;for(let e=i.length-1;e>=0;--e){let a=i[e],o=r.get(a);if(!(!o||o.name!==`keyue_uda_card_emit`))return o.message={...o.message,__mediaResult:t.mediaResult},Array.isArray(n.chatToolMessages)&&(n.chatToolMessages=n.chatToolMessages.map(e=>e&&typeof e==`object`&&e.toolCallId===a?{...e,__mediaResult:t.mediaResult}:e)),!0}return!1}async function fW(e,t,n,r){if((!e.client||!e.connected)&&!UV(e))return null;let i=t.trim(),a=n&&n.length>0;if(!i&&!a)return null;let o=$V(i),s=Date.now(),c=r?.countForRateLimit??r?.optimisticUserMessage!==!1;if(c&&!PH(e,s))return null;let l=g();UV(e)&&(qV(e,{rotate:o}),LH(e,l));let u=[];if(i&&u.push({type:`text`,text:i}),a)for(let e of n){let t=hI(e.mimeType,e.fileName);t===`image`?u.push({type:`image`,source:{type:`base64`,media_type:e.mimeType,data:e.dataUrl}}):t===`video`&&u.push({type:`video`,source:{type:`base64`,media_type:e.mimeType,data:e.dataUrl},name:e.fileName,url:e.previewUrl})}let d;r?.optimisticUserMessage!==!1&&(d={role:`user`,content:u,timestamp:s,__openclaw:{optimisticRunId:l,optimisticQueryId:l}},e.chatMessages=[...e.chatMessages,d]),e.chatSending=!0,e.lastError=null,e.lastLatency=null,HV(e);let f={runId:l,queryId:l,startedAt:s,status:`waiting`,stream:``,hasVisibleDelta:!1,optimisticUserMessage:d,resetsSession:o};cH(e,f);let p=_H(e);EH(e)||(e.chatRunId=l,e.chatStream=``,e.chatStreamStartedAt=s);let m=a?n.map(e=>{let t=nW(e.dataUrl);if(!t)return null;let n=mI(t.mimeType,e.fileName)||mI(e.mimeType,e.fileName),r=hI(n,e.fileName);return r?{type:r,mimeType:n,fileName:e.fileName,content:t.content}:null}).filter(e=>e!==null):void 0;try{let t=()=>{f.status=`queued`,CH(e,p)&&SH(e,f)&&vH(e,p)},n={sessionKey:e.sessionKey,message:i,routeSkillIds:r?.routeSkillIds?.length?r.routeSkillIds:void 0,deliver:!1,idempotencyKey:l,attachments:m,clientSentAt:s,variables:r?.variables,...e.keyueDeployMode===`preview`||e.keyueDeployMode===`online`?{deployMode:`online`}:{}};if(UV(e)){let r=e,i=n.sessionKey,a=new AbortController;IH(r).set(l,a);let o=await fetch(YV(r),{method:`POST`,headers:XV(r),body:JSON.stringify({action:`send`,...n}),signal:a.signal});if(!o.ok){let e=await o.text(),t=e.trim()&&e.trim().startsWith(`{`)?ZV(e,`error`):null;throw Error(t?.error?.message?.trim()||`HTTP ${o.status}`)}if(!o.body)throw Error(`empty sse response body`);(async()=>{try{for await(let n of rH(o.body)){if(n.event===`ack`){let o=ZV(n.data,`ack`);if(tH(e,o,i),eH(e,o),typeof o.runId==`string`&&o.runId.trim()){let t=o.runId.trim();lH(e,f,t),e.chatRunId===l&&(e.chatRunId=t);let n=IH(r);n.has(t)||n.set(t,a)}o.status===`queued`?t():yH(o.status)&&xH(e,f,o.status,p,o.message),pH(e,o);continue}if(n.event===`chat`){mW(e,ZV(n.data,`chat`));continue}if(n.event===`agent`){WH(e,ZV(n.data,`agent`));continue}if(n.event===`done`){eH(e,ZV(n.data,`done`));break}}}catch(t){if(!a.signal.aborted){let n=mV(t);e.lastError=kz(n)??n,SH(e,f)&&(p.runId?vH(e,p):gH(e)),uH(e,f)}}finally{IH(r).delete(l),IH(r).delete(f.runId)}})()}else{let r=await JV(e).request(`chat.send`,n);if(eH(e,r),typeof r?.runId==`string`&&r.runId.trim()){let t=r.runId.trim();lH(e,f,t),e.chatRunId===l&&(e.chatRunId=t)}r?.status===`queued`?t():yH(r?.status)&&xH(e,f,r.status,p,r.message),pH(e,r??{})}return MH(e,Date.now()),l}catch(t){let n=mV(t);if(c&&FH(e,s),SH(e,f)&&(CH(e,p)?vH(e,p):gH(e)),uH(e,f),r?.suppressDisconnectedError&&n.trim().toLowerCase()===`gateway not connected`||AH(t,n))return null;let i=kz(n);return e.lastError=i??n,i||(e.chatMessages=[...e.chatMessages,{role:`assistant`,content:[{type:`text`,text:`Error: `+n}],timestamp:Date.now()}]),null}finally{e.chatSending=!1}}async function pW(e){if((!e.client||!e.connected)&&!UV(e))return!1;let t=e.chatRunId;try{if(UV(e)){if(!t)return!1;let n=e,r=await iH(n,{action:`abort`,sessionKey:e.sessionKey,...t?{runId:t}:{}});for await(let e of rH(r))if(e.event===`result`&&QV(ZV(e.data,`abort`),`abort`),e.event===`done`)break;mW(e,{runId:t,sessionKey:e.sessionKey,state:`aborted`,stopReason:`user`}),IH(n).get(t)?.abort(),IH(n).delete(t)}else await JV(e).request(`chat.abort`,t?{sessionKey:e.sessionKey,runId:t}:{sessionKey:e.sessionKey});return!0}catch(t){return e.lastError=mV(t),!1}}function mW(e,t){if(!t||t.sessionKey!==e.sessionKey)return null;xV(t.sessionKey),eH(e,t),(t.state===`final`||t.state===`timeout`)&&jH(e);let n=mH(e,t);EU(e,t,n);let r=hH(e,n,t),i=IV(t);if(t.runId&&e.chatRunId&&t.runId!==e.chatRunId&&!n){if(t.state===`final`){aH(e,t.variables);let r=aW(t.message),i=r?sW(r,t):null,a=dW(e,t),o=i?a?i:uW(i,t):null;return o&&!LV(o)?(pU(e,t,n,{adoptSessionScopedTools:!0}),LU(e,o,t),null):`final`}return null}if(t.state===`delta`){n&&!e.chatRunId&&(e.chatRunId=n.runId,e.chatStream=n.stream||``,e.chatStreamStartedAt=n.startedAt,r=!0),i&&(r&&(VH(e),e.chatStream=null,e.chatRouteNoticeStream=null),n&&(n.stream=``,n.routeNoticeStream=void 0,n.hasVisibleDelta=!1));let a=t.message?AI(t.message):null;if(typeof a==`string`&&!FV(a)){if(n){let e=n.stream;(!e||a.length>=e.length)&&(e&&eU(n,e,a),n.stream=a,n.status=`streaming`,n.hasVisibleDelta=a.trim().length>0,zU(t.message)&&(n.routeNoticeStream=a))}let i=e.chatStream??``;r&&(!i||a.length>=i.length)&&(i&&tU(e,i,a),e.chatStream=a,zU(t.message)&&(e.chatRouteNoticeStream=a))}r&&t.firstTokenAt!=null&&e.chatStreamStartedAt!=null&&!e.lastLatency&&(e.lastLatency={ttftMs:t.firstTokenAt-e.chatStreamStartedAt,totalMs:null})}else if(t.state===`final`){let a=r||!!n,o=PU(t,n);aH(e,t.variables),UH(e,n);let s=aW(t.message),c=s?AI(s)?.trim():``,l=s?sW(s,t):null,u=i&&l&&!LV(l);i&&r&&!u&&VH(e),dW(e,t);let d=n?.startedAt??e.chatStreamStartedAt,f=i?void 0:r?e.chatStream:n?.stream,p=i?void 0:ZH(n)??(r?QH(e):void 0),m=l?XH({message:l,prefixes:[...p?[p]:[],...JH(e,n,f)]}):null,h=m?uW(m.message,t,{queryIdentity:o}):null,g=h?AI(h)?.trim():``,_=m?.strippedPrefix??(p&&!nU(g??``,p)?p:void 0),v=d==null?null:{ttftMs:t.firstTokenAt==null?null:t.firstTokenAt-d,totalMs:t.endedAt==null?null:t.endedAt-d};if(h&&!LV(h))v&&(h.__runLatency=v),uU({state:e,payload:t,pending:n,queryIdentity:o,prefix:_}),fU(e,t,n,{skipTexts:[_??``,g??``,c??``]}),pU(e,t,n,{adoptSessionScopedTools:!0}),LU(e,h,t,n);else if(_)uU({state:e,payload:t,pending:n,queryIdentity:o,prefix:_,runLatency:v}),fU(e,t,n,{skipTexts:[_,f??``]}),pU(e,t,n,{adoptSessionScopedTools:!i});else if(f?.trim()&&!FV(f)){let r={role:`assistant`,content:[{type:`text`,text:f}],timestamp:Date.now()};v&&(r.__runLatency=v),fU(e,t,n,{skipTexts:[f]}),pU(e,t,n,{adoptSessionScopedTools:!i}),LU(e,uW(r,t,{queryIdentity:o}),t,n)}e.lastLatency=v,uH(e,n),r&&(GH(e),TH(e)),a&&jH(e)}else if(t.state===`aborted`){let a=r?e.chatStream??``:n?.stream??``,o=!!n?.hasVisibleDelta||a.trim().length>0&&!FV(a);if(t.stopReason===`superseded_by_new_query`&&i)return dU({state:e,payload:t,pending:n,currentRun:r,streamedText:a}),uH(e,n),r&&(GH(e),TH(e)),t.state;if(t.stopReason===`superseded_by_new_query`&&!o)return uH(e,n),r&&TH(e),t.state;let s=iW(t.message),c=NU(t,n);s&&!LV(s)?LU(e,cW(s,t,{queryIdentity:c}),t,n):a.trim()&&!FV(a)&&LU(e,cW({role:`assistant`,content:[{type:`text`,text:a}],timestamp:Date.now()},t,{queryIdentity:c}),t,n);let l=n?.startedAt??e.chatStreamStartedAt;l!=null&&(e.lastLatency={ttftMs:e.lastLatency?.ttftMs??null,totalMs:Date.now()-l}),uH(e,n),r&&TH(e)}else if(t.state===`timeout`){let i=r||!!n,a=NU(t,n),o=aW(t.message),s=n?.startedAt??e.chatStreamStartedAt;UH(e,n);let c=s==null?null:{ttftMs:t.firstTokenAt==null?null:t.firstTokenAt-s,totalMs:t.endedAt==null?null:t.endedAt-s};o&&!LV(o)&&(c&&(o.__runLatency=c),LU(e,cW(o,t,{queryIdentity:a}),t,n),e.lastLatency=c),uH(e,n),r&&TH(e),i&&jH(e)}else t.state===`error`&&(uH(e,n),r&&TH(e),e.lastError=t.errorMessage??`chat error`);return t.state}async function hW(e){try{return(await e.request(`models.list`,{}))?.models??[]}catch{return[]}}var gW=`/new`,_W=new Set;function vW(e,t){console.debug(`[客悦变量] ${e}`,t??{})}function yW(e){return e.chatSending||!!e.chatRunId}function bW(e){if(!e.connected)return!1;let t=e.sessionKey.startsWith(`keyue:`);return e.tab!=null&&e.tab!==`chat`&&e.tab!==`tenantManagement`&&!(e.tab===`onlineChat`&&t)||e.chatLoading||e.chatSending||e.chatRunId||(e.chatQueue?.length??0)>0||e.chatMessages.length>0?!1:!e.chatStream?.trim()}function xW(e){let t=zM(e),n=e,r=new Set((n.keyueDialogVariables??[]).map(e=>e.name.trim()).filter(Boolean)),i=n.keyueExternalVariables,a=i&&r.size>0?Object.fromEntries(Object.entries(i).filter(([e])=>r.has(e))):i,o=i&&r.size>0?Object.keys(i).filter(e=>!r.has(e)):[];if(!(!t&&!a))return o.length>0&&vW(`SDK 外部变量被前端白名单忽略`,{count:o.length,names:o}),{...t,...a}}async function SW(e){let t=e;WM(t),await YM(t)}async function CW(e,t){e.chatLoading=!0;try{await tW(e,t)}finally{e.chatLoading=!1}let n=e;eN(n,!n.chatHasAutoScrolled);let r=e.sessionKey;if(r){if(e.chatMessages.length>0){_W.delete(r);return}if(bW(e)&&!_W.has(r)&&e.client?.connected){if(_W.add(r),!await fW(e,gW,void 0,{optimisticUserMessage:!1,suppressDisconnectedError:!0})){_W.delete(r);return}qM(e),Iz(e,r)}}}function wW(e){let t=e.trim();if(!t)return!1;let n=t.toLowerCase();return n===`/new`||n===`/reset`?!0:n.startsWith(`/new `)||n.startsWith(`/reset `)}function TW(e){let t=e.trim();if(!t)return!1;let n=t.toLowerCase();return n===`/new`||n===`/reset`}function EW(e,t){if(!e||typeof e!=`object`)return!1;let n=e,r=typeof n.runId==`string`?n.runId.trim():``,i=typeof n.queryId==`string`?n.queryId.trim():``;if(r===t||i===t)return!0;let a=n.__openclaw;if(!a||typeof a!=`object`)return!1;let o=a,s=typeof o.optimisticRunId==`string`?o.optimisticRunId.trim():``,c=typeof o.optimisticQueryId==`string`?o.optimisticQueryId.trim():``;return s===t||c===t}function DW(e,t){e.chatMessages=e.chatMessages.filter(e=>EW(e,t))}async function OW(e){e.connected&&(e.chatMessage=``,await pW(e))}async function kW(e,t,n){yW(e)||rB(e),tN(e);let r=wW(t),i=e.chatSessionId;r&&(e.chatSessionId=null);let a=r?void 0:xW(e);a&&vW(`准备发送 chat.send.variables`,{count:Object.keys(a).length,names:Object.keys(a),sessionKey:e.sessionKey,message:t});let o=await fW(e,t,n?.attachments,{optimisticUserMessage:!TW(t),routeSkillIds:n?.routeSkills?.map(e=>e.skillId),variables:a}),s=!!o;return!s&&n?.previousDraft!=null&&(e.chatMessage=n.previousDraft),!s&&n?.previousAttachments&&(e.chatAttachments=n.previousAttachments),!s&&n?.previousRouteSkills&&(e.chatRouteSkills=n.previousRouteSkills),!s&&r&&(e.chatSessionId=i),s&&(r?(o&&DW(e,o),await SW(e),vW(`新会话已重置前端调试参数面板`,{sessionKey:e.sessionKey,message:t})):qM(e),Iz(e,e.sessionKey)),s&&n?.restoreDraft&&n.previousDraft?.trim()&&(e.chatMessage=n.previousDraft),s&&n?.restoreAttachments&&n.previousAttachments?.length&&(e.chatAttachments=n.previousAttachments),s&&n?.restoreRouteSkills&&n.previousRouteSkills?.length&&(e.chatRouteSkills=n.previousRouteSkills),eN(e,!0),s&&!e.chatRunId&&AW(e),s&&n?.refreshSessions&&o&&e.refreshSessionsAfterChat.add(o),s}async function AW(e){if(!e.connected||yW(e))return;let[t,...n]=e.chatQueue;if(!t)return;e.chatQueue=n;let r=!1;try{t.localCommandName?(await jW(e,t.localCommandName,t.localCommandArgs??``),r=!0):r=await kW(e,t.text,{attachments:t.attachments,routeSkills:t.routeSkills,refreshSessions:t.refreshSessions})}catch(t){e.lastError=String(t)}r?e.chatQueue.length>0&&AW(e):e.chatQueue=[t,...e.chatQueue]}async function jW(e,t,n,r){switch(t){case`stop`:await OW(e);return;case`new`:await kW(e,`/new`,{refreshSessions:!0,previousDraft:r?.previousDraft,restoreDraft:r?.restoreDraft,routeSkills:r?.routeSkills}),e.onNewSession?.();return;case`reset`:await kW(e,`/reset`,{refreshSessions:!0,previousDraft:r?.previousDraft,restoreDraft:r?.restoreDraft,routeSkills:r?.routeSkills}),e.onNewSession?.();return;case`clear`:await MW(e);return;case`focus`:e.onSlashAction?.(`toggle-focus`);return;case`export`:e.onSlashAction?.(`export`);return}if(!e.client)return;let i=e.sessionKey,a=await OB(e.client,i,t,n);a.content&&NW(e,a.content),a.sessionPatch&&`modelOverride`in a.sessionPatch&&(e.chatModelOverrides={...e.chatModelOverrides,[i]:a.sessionPatch.modelOverride??null}),a.action===`refresh`&&await PW(e),eN(e)}async function MW(e){if(!(!e.client||!e.connected)){try{await e.client.request(`sessions.reset`,{key:e.sessionKey}),e.chatMessages=[],RH(e),await CW(e)}catch(t){e.lastError=String(t)}eN(e)}}function NW(e,t){e.chatMessages=[...e.chatMessages,{role:`system`,content:t,timestamp:Date.now()}]}async function PW(e,t){await Promise.all([CW(e),wF(e,{activeMinutes:0,limit:0,includeGlobal:!0,includeUnknown:!0}),zW(e),FW(e)]),t?.scheduleScroll!==!1&&eN(e)}async function FW(e){if(!e.client||!e.connected){e.chatModelsLoading=!1,e.chatModelCatalog=[];return}e.chatModelsLoading=!0;try{e.chatModelCatalog=await hW(e.client)}finally{e.chatModelsLoading=!1}}var IW=AW;function LW(e){let t=XM(e.sessionKey);return t?.agentId?t.agentId:(e.hello?.snapshot)?.sessionDefaults?.defaultAgentId?.trim()||`main`}function RW(e,t){let n=OF(e),r=encodeURIComponent(t);return n?`${n}/avatar/${r}?meta=1`:`avatar/${r}?meta=1`}async function zW(e){if(!e.connected){e.chatAvatarUrl=null;return}let t=LW(e);if(!t){e.chatAvatarUrl=null;return}e.chatAvatarUrl=null;let n=RW(e.basePath,t);try{let t=await fetch(n,{method:`GET`});if(!t.ok){e.chatAvatarUrl=null;return}let r=await t.json();e.chatAvatarUrl=(typeof r.avatarUrl==`string`?r.avatarUrl.trim():``)||null}catch{e.chatAvatarUrl=null}}function BW(e){if(!e||e.state!==`final`)return!1;if(!e.message||typeof e.message!=`object`)return!0;let t=e.message,n=typeof t.role==`string`?t.role.toLowerCase():``;return!!(n&&n!==`assistant`)}function VW(e,t){if(typeof e!=`string`)return;let n=e.trim();if(n)return n.length<=t?n:n.slice(0,t)}var HW=50,UW=200;function WW(e){let t=VW(e?.name,HW)??`Assistant`,n=VW(e?.avatar??void 0,UW)??null;return{agentId:typeof e?.agentId==`string`&&e.agentId.trim()?e.agentId.trim():null,name:t,avatar:n}}async function GW(e,t){if(!e.client||!e.connected)return;let n=t?.sessionKey?.trim()||e.sessionKey.trim(),r=n?{sessionKey:n}:{};try{let t=await e.client.request(`agent.identity.get`,r);if(!t)return;let n=WW(t);e.assistantName=n.name,e.assistantAvatar=n.avatar,e.assistantAgentId=n.agentId??null}catch{}}function KW(e){return typeof e==`object`&&!!e}function qW(e){if(!KW(e))return null;let t=typeof e.id==`string`?e.id.trim():``,n=e.request;if(!t||!KW(n))return null;let r=typeof n.command==`string`?n.command.trim():``;if(!r)return null;let i=typeof e.createdAtMs==`number`?e.createdAtMs:0,a=typeof e.expiresAtMs==`number`?e.expiresAtMs:0;return!i||!a?null:{id:t,request:{command:r,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 JW(e){if(!KW(e))return null;let 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 YW(e){let t=Date.now();return e.filter(e=>e.expiresAtMs>t)}function XW(e,t){let n=YW(e).filter(e=>e.id!==t.id);return n.push(t),n}function ZW(e,t){return YW(e).filter(e=>e.id!==t)}var QW={ok:!1,ts:0,durationMs:0,heartbeatSeconds:0,defaultAgentId:``,agents:[],sessions:{path:``,count:0,recent:[]}};async function $W(e){try{return await e.request(`health`,{})??QW}catch{return QW}}async function eG(e){if(!(!e.client||!e.connected)&&!e.healthLoading){e.healthLoading=!0,e.healthError=null;try{e.healthResult=await $W(e.client)}catch(t){e.healthError=String(t)}finally{e.healthLoading=!1}}}function tG(e,t){e.showErrorToast?.(ce(t))}function nG(e,t){return`${e}::${t}`}function rG(e,t,n){let r=Array.isArray(n)?new Set(n.map(e=>e.trim()).filter(Boolean)):null,i=`${t}::`,a={},o={};for(let[t,n]of Object.entries(e.skillFilesContents)){let e=t.startsWith(i),o=e?t.slice(i.length):``;e&&(!r||r.size===0||r.has(o))||(a[t]=n)}for(let[t,n]of Object.entries(e.skillFilesDrafts)){let a=t.startsWith(i),s=a?t.slice(i.length):``;if(!(a&&(!r||r.size===0||r.has(s)))){o[t]=n;continue}let c=e.skillFilesContents[t];Object.hasOwn(e.skillFilesDrafts,t)&&n!==c&&(o[t]=n)}e.skillFilesContents=a,e.skillFilesDrafts=o}async function iG(e,t,n){if(!e.client||!e.connected||!n?.force&&e.skillFilesLoading)return;e.skillFilesLoading=!0,e.skillFilesError=null;let r=null;try{let i={skillKey:t};n?.tenantId&&(i.tenantId=n.tenantId);let a=await e.client.request(`skills.files.list`,i);if(a&&(e.skillFilesLists={...e.skillFilesLists,[t]:a},!e.skillFilesActiveName&&a.files.length>0)){let t=a.files.find(e=>e.name===`SKILL.md`)??a.files[0];e.skillFilesActiveName=t.name,r=t.name}}catch(t){tG(e,t)}finally{e.skillFilesLoading=!1}r&&await aG(e,t,r,{tenantId:n?.tenantId,force:n?.force})}async function aG(e,t,n,r){if(!e.client||!e.connected||!r?.force&&e.skillFilesLoading)return;let i=nG(t,n);if(!(!r?.force&&Object.hasOwn(e.skillFilesContents,i))){e.skillFilesLoading=!0,e.skillFilesError=null;try{let a={skillKey:t,name:n};r?.tenantId&&(a.tenantId=r.tenantId);let o=await e.client.request(`skills.files.get`,a);if(o){let t=e.skillFilesContents[i],n=e.skillFilesDrafts[i];e.skillFilesContents={...e.skillFilesContents,[i]:o.content},(!Object.hasOwn(e.skillFilesDrafts,i)||n===t)&&(e.skillFilesDrafts={...e.skillFilesDrafts,[i]:o.content})}}catch(t){tG(e,t)}finally{e.skillFilesLoading=!1}}}function oG(e,t){return`tenant:${e}:skill:${t}`}function sG(e,t){return`platform-agent:skill-creator:${oG(e,t)}`}function cG(e){return/^(?:typeerror:\s*)?(?:fetch failed|failed to fetch)$/i.test(e.trim())}function lG(e){if(e?.variables&&typeof e.variables==`object`&&!Array.isArray(e.variables))return e.variables;if(e?.stream!==`tool`)return;let t=e.data;if(!t||typeof t!=`object`||typeof t.phase==`string`&&t.phase!==`result`)return;let n=t.result;if(!n||typeof n!=`object`||Array.isArray(n))return;let r=n.variables;if(!(!r||typeof r!=`object`||Array.isArray(r)))return r}function uG(e){let t=e.keyueSelectedTenantId?.trim(),n=e.skillAiBuilderSkillKey?.trim();return!t||!n?null:sG(t,n)}function dG(e){return!!uG(e)}function fG(e,t){return e.keyueChatTransport!==`sse`||!t?.sessionKey||!e.sessionKey.startsWith(`keyue:`)?!1:t.sessionKey===e.sessionKey}function pG(e){let t=e.serverVersion?.trim();if(!t)return;let n=e.pageUrl??(typeof window>`u`?void 0:window.location.href);if(n)try{let r=new URL(n),i=new URL(e.gatewayUrl,r);return!new Set([`ws:`,`wss:`,`http:`,`https:`]).has(i.protocol)||i.host!==r.host?void 0:t}catch{return}}function mG(e,t){let n=(e??``).trim(),r=t.mainSessionKey?.trim();if(!r)return n;if(!n)return r;let i=t.mainKey?.trim()||`main`,a=t.defaultAgentId?.trim();return n===`main`||n===i||a&&(n===`agent:${a}:main`||n===`agent:${a}:${i}`)?r:n}function hG(e,t){if(!t?.mainSessionKey||e.keyueSelectedTenantId&&(e.keyueSelectedBotId||e.keyueSelectedSkillId)&&e.keyueActivePhone||e.sessionKey.startsWith(`keyue:`))return;let n=e.userPhone&&/^\d{7,15}$/.test(e.userPhone)?`agent:phone-${e.userPhone}:webchat`:null;if(n){e.sessionKey!==n&&(e.sessionKey=n);return}let r=mG(e.sessionKey,t),i=mG(e.settings.sessionKey,t),a=mG(e.settings.lastActiveSessionKey,t),o=r||i||e.sessionKey,s={...e.settings,sessionKey:i||o,lastActiveSessionKey:a||o},c=s.sessionKey!==e.settings.sessionKey||s.lastActiveSessionKey!==e.settings.lastActiveSessionKey;o!==e.sessionKey&&(e.sessionKey=o),c&&Fz(e,s)}function gG(e){let t=e;t.pendingShutdownMessage=null,e.lastError=null,e.lastErrorCode=null,e.hello=null,e.connected=!1,e.execApprovalQueue=[],e.execApprovalError=null;let n=e.client,r=e.keyueSelectedTenantId&&e.keyueActivePhone?e.keyueSelectedBotId?{tenantId:e.keyueSelectedTenantId,botId:e.keyueSelectedBotId,userId:e.keyueActivePhone}:e.keyueSelectedSkillId?{tenantId:e.keyueSelectedTenantId,skillId:e.keyueSelectedSkillId,userId:e.keyueActivePhone}:void 0:void 0,i=pG({gatewayUrl:e.settings.gatewayUrl,serverVersion:e.serverVersion}),a=new dV({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`,clientVersion:i,mode:`webchat`,instanceId:e.clientInstanceId,phone:e.userPhone??e.keyueActivePhone??void 0,keyue:r,autoConnect:!0,onHello:n=>{e.client===a&&(t.pendingShutdownMessage=null,e.connected=!0,e.lastError=null,e.lastErrorCode=null,e.hello=n,OG(e,n),RH(e),rB(e),GW(e),rN(e),eG(e),nN(e,{quiet:!0}),CF(e,{quiet:!0}),e.userPhone&&!r&&a.request(`user.provision`,{}).catch(()=>{}),e.onConversationReady?.())},onClose:({code:n,reason:r,error:i,expected:o})=>{if(e.client===a){if(e.connected=!1,o){e.lastError=null,e.lastErrorCode=null;return}if(e.lastErrorCode=oV(i)??(typeof i?.code==`string`?i.code:null),n!==1012){if(i?.message){e.lastError=e.lastErrorCode&&cG(i.message)?mV({message:i.message,details:i.details,code:i.code}):i.message;return}e.lastError=t.pendingShutdownMessage??`disconnected (${n}): ${r||`no reason`}`}else e.lastError=t.pendingShutdownMessage??null,e.lastErrorCode=null}},onEvent:t=>{e.client===a&&_G(e,t)},onGap:({expected:t,received:n})=>{e.client===a&&console.warn(`[gateway] event gap (expected seq ${t}, got ${n})`)}});e.client=a,n?.stop(),a.start()}function _G(e,t){try{DG(e,t)}catch(e){console.error(`[gateway] handleGatewayEvent error:`,t.event,e)}}function vG(e,t,n,r){if(n!==`final`&&n!==`error`&&n!==`aborted`&&n!==`timeout`)return!1;if((n===`final`||n===`timeout`)&&jH(e),n===`final`&&e.keyueChatDebugEnabled&&t?.queryId){let n=t.externalSessionId??e.chatSessionId;n&&PM(e,{sessionId:n,queryId:t.queryId})}rB(e),IW(e);let i=t?.runId;return i&&e.refreshSessionsAfterChat.has(i)&&(e.refreshSessionsAfterChat.delete(i),n===`final`&&wF(e,{activeMinutes:120})),n===`final`&&(r||BW(t))?(CW(e,{preserveLastLatency:!0}),!0):!1}function yG(e,t){if(!(t.state===`delta`&&!e.skillAiChatRunId))if(t.state===`delta`){let n=AI(t.message);typeof n==`string`&&(e.skillAiChatStream=n)}else if(t.state===`final`){if(t.runId&&t.runId!==e.skillAiChatRunId)return;let n=e.skillAiPlanVisible&&e.skillAiPlanStatus===`running`;if(n&&(e.skillAiResolvedMode===`create`||e.skillAiResolvedMode===`modify`)){let n=t.message,r=``;if(n&&typeof n==`object`){let e=n;typeof e.role==`string`&&e.role.toLowerCase()===`assistant`&&(r=AI(e)?.trim()??``)}else e.skillAiChatStream?.trim()&&(r=e.skillAiChatStream.trim());if(r){let t=e.skillAiActiveStepId??e.skillAiPlanItems.find(e=>e.status===`in_progress`)?.id??null;t&&(e.skillAiPlanItems=e.skillAiPlanItems.map(e=>e.id===t?{...e,result:r}:e),wG(e))}}else{let n=t.message,r=``;if(n&&typeof n==`object`){let e=n;typeof e.role==`string`&&e.role.toLowerCase()===`assistant`&&(r=AI(e)?.trim()??``)}else e.skillAiChatStream?.trim()&&(r=e.skillAiChatStream.trim());if(e.skillAiResolvedMode===`chat`&&r){let n={role:`assistant`,kind:`skill_ai_chat`,timestamp:Date.now(),runId:t.runId??e.skillAiChatRunId??null,mode:`chat`,skillName:e.skillAiBuilderSkillName?.trim()||null,reason:e.skillAiPlanReason,message:r};e.skillAiChatMessages=[...e.skillAiChatMessages,n]}else if(n&&typeof n==`object`){let t=n;typeof t.role==`string`&&t.role.toLowerCase()===`assistant`&&(e.skillAiChatMessages=[...e.skillAiChatMessages,t])}else r&&(e.skillAiChatMessages=[...e.skillAiChatMessages,{role:`assistant`,content:[{type:`text`,text:r}],timestamp:Date.now()}])}e.skillAiChatStream=null,e.skillAiChatStreamStartedAt=null,n||(e.skillAiChatRunId=null,e.skillAiChatSending=!1,e.skillAiBuilderBuilding=!1);let r=t.skillKey,i=t.skillId;r&&r!==e.skillAiBuilderSkillKey&&(e.skillFilesActiveKey===e.skillAiBuilderSkillKey&&(e.skillFilesActiveKey=r),e.skillAiBuilderSkillKey=r),i&&(e.skillAiBuilderSkillId=i);let a=e.skillAiBuilderSkillKey;(async()=>{await EF(e),a&&await xG(e,a)})()}else (t.state===`aborted`||t.state===`error`||t.state===`timeout`)&&(e.skillAiChatStream=null,e.skillAiChatRunId=null,e.skillAiChatStreamStartedAt=null,e.skillAiChatSending=!1,e.skillAiBuilderBuilding=!1)}var bG=new Set([`write`,`edit`,`apply_patch`]);async function xG(e,t){rG(e,t);let n=e.keyueSelectedTenantId??void 0;await iG(e,t,{force:!0,tenantId:n});let r=new Set(e.skillFilesLists[t]?.files.map(e=>e.name).filter(Boolean)??[]),i=new Set;for(let t of e.skillAiBuilderOpenTabs)r.has(t)&&i.add(t);let a=e.skillFilesActiveName?.trim();a&&r.has(a)&&i.add(a);for(let r of i)await aG(e,t,r,{force:!0,tenantId:n})}function SG(e,t){if(!t)return e;let n=new Map((e??[]).map(e=>[e.id,e]));return t.map(e=>{let t=n.get(e.id);return{...t,...e,...e.result===void 0&&t?.result!==void 0?{result:t.result}:{}}})}function CG(e,t){let n=SG(e,t);if(!n)return n;let r=Date.now(),i=new Map((e??[]).map(e=>[e.id,e]));return n.map(e=>{let t=i.get(e.id);return e.status===`in_progress`?{...e,startedAtMs:t?.startedAtMs??r,durationMs:t?.durationMs}:(e.status===`done`||e.status===`failed`)&&t?.startedAtMs?{...e,startedAtMs:t.startedAtMs,durationMs:t.durationMs??Math.max(0,r-t.startedAtMs)}:{...e,startedAtMs:t?.startedAtMs,durationMs:t?.durationMs}})}function wG(e){let t=e.skillAiPlanRunId?.trim();if(!t)return;let n={role:`assistant`,kind:`skill_ai_plan`,timestamp:Date.now(),planRunId:t,mode:e.skillAiResolvedMode,reason:e.skillAiPlanReason,status:e.skillAiPlanStatus,items:e.skillAiPlanItems,error:e.skillAiPlanError},r=e.skillAiChatMessages,i=r.findIndex(e=>e&&typeof e==`object`&&e.kind===`skill_ai_plan`&&e.planRunId===t);if(i<0){e.skillAiChatMessages=[...r,n];return}e.skillAiChatMessages=r.map((e,t)=>t===i?n:e)}function TG(e,t){if(!t||!dG(e))return;let n=uG(e);if(!(t.sessionKey&&n&&t.sessionKey!==n)&&!(t.runId&&e.skillAiChatRunId&&t.runId!==e.skillAiChatRunId)){if(t.type===`skill_ai_plan_created`){e.skillAiResolvedMode=t.mode??null,e.skillAiPlanVisible=!0,e.skillAiPlanError=null,e.skillAiPlanReason=t.reason??null,e.skillAiPlanItems=CG(e.skillAiPlanItems,t.items)??[],e.skillAiActiveStepId=t.activeStepId??null,e.skillAiPlanRunId=t.planRunId??null,e.skillAiPlanStatus=t.status??`running`,e.skillAiWorkspaceDirtyButUnsynced=!1,e.skillAiReplanCount=t.replanCount??0,e.skillAiChatSending=!0,e.skillAiBuilderBuilding=!0,wG(e);return}if(t.type===`skill_ai_chat_started`){e.skillAiResolvedMode=`chat`,e.skillAiPlanVisible=!1,e.skillAiPlanError=null,e.skillAiPlanReason=t.reason??null,e.skillAiPlanStatus=t.status??`running`,e.skillAiChatSending=!0,e.skillAiBuilderBuilding=!0;return}if(t.type===`skill_ai_try_result`){e.skillAiResolvedMode=`try`,e.skillAiPlanVisible=!1,e.skillAiPlanStatus=`done`;let n={role:`assistant`,kind:`skill_ai_try`,timestamp:Date.now(),runId:t.runId??null,mode:`try`,skillName:e.skillAiBuilderSkillName?.trim()||null,reason:t.reason??null,status:t.status===`failed`?`failed`:`done`,message:t.message?.trim()||null};e.skillAiChatMessages=[...e.skillAiChatMessages,n],e.skillAiChatRunId=null,e.skillAiChatSending=!1,e.skillAiChatStream=null,e.skillAiChatStreamStartedAt=null,e.skillAiBuilderBuilding=!1;return}if(!(t.planRunId&&e.skillAiPlanRunId&&t.planRunId!==e.skillAiPlanRunId)){if(t.items&&(e.skillAiPlanItems=CG(e.skillAiPlanItems,t.items)??[]),t.mode&&(e.skillAiResolvedMode=t.mode),t.reason&&(e.skillAiPlanReason=t.reason),t.status&&(e.skillAiPlanStatus=t.status),`activeStepId`in t&&(e.skillAiActiveStepId=t.activeStepId??null),t.error&&(e.skillAiPlanError=t.error),typeof t.workspaceDirtyButUnsynced==`boolean`&&(e.skillAiWorkspaceDirtyButUnsynced=t.workspaceDirtyButUnsynced),typeof t.replanCount==`number`&&(e.skillAiReplanCount=t.replanCount),t.type===`skill_ai_plan_blocked`&&(e.skillAiPlanVisible=!0,e.skillAiPlanStatus=`blocked`),t.status===`running`){e.skillAiChatSending=!0,e.skillAiBuilderBuilding=!0,wG(e);return}(t.status===`done`||t.status===`failed`||t.status===`blocked`)&&(e.skillAiChatRunId=null,e.skillAiChatSending=!1,e.skillAiChatStream=null,e.skillAiChatStreamStartedAt=null,e.skillAiBuilderBuilding=!1),wG(e)}}}function EG(e,t){if(fG(e,t))return;t?.sessionKey&&Iz(e,t.sessionKey);let n=e,r=uG(n);if(r&&t){let e=t.sessionKey===r,i=!!n.skillAiChatRunId&&t.runId===n.skillAiChatRunId;if(e||i){yG(n,t);return}}let i=t?.state===`final`||t?.state===`error`||t?.state===`aborted`||t?.state===`timeout`;i&&eB(e);let a=i&&tB(e);vG(e,t,mW(e,t),a)}function DG(e,t){if(e.eventLogBuffer=[{ts:Date.now(),event:t.event,payload:t.payload},...e.eventLogBuffer].slice(0,250),(e.tab===`debug`||e.tab===`overview`)&&(e.eventLog=e.eventLogBuffer),t.event===`agent`){if(e.onboarding)return;let n=t.payload;if(n?.stream===`tool`){let t=e,r=uG(t),i=n.sessionKey,a=!!i&&!!r&&i===r,o=!!t.skillAiChatRunId&&n.runId===t.skillAiChatRunId;if(dG(t)&&(a||o)){let e=n.data??{},r=typeof e.toolCallId==`string`?e.toolCallId:``,i=typeof e.name==`string`?e.name:`tool`,a=typeof e.phase==`string`?e.phase:``;if(r){let e=t.skillAiToolCalls??[];e.find(e=>e.toolCallId===r)?a===`result`&&(t.skillAiToolCalls=e.map(e=>e.toolCallId===r?{...e,phase:`done`}:e)):t.skillAiToolCalls=[...e,{toolCallId:r,name:i,phase:`pending`}]}a===`result`&&bG.has(i.trim().toLowerCase())&&t.skillAiBuilderSkillKey&&xG(t,t.skillAiBuilderSkillKey);return}}let r=lG(n);r&&JM(e,r),uB(e,n);return}if(t.event===`chat`){EG(e,t.payload);return}if(t.event===`skill_ai_plan`){TG(e,t.payload);return}if(t.event===`presence`){let n=t.payload;n?.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence,e.presenceError=null,e.presenceStatus=null);return}if(t.event===`shutdown`){let n=t.payload,r=n&&typeof n.reason==`string`&&n.reason.trim()?n.reason.trim():`gateway stopping`,i=typeof n?.restartExpectedMs==`number`?`Restarting: ${r}`:`Disconnected: ${r}`;e.pendingShutdownMessage=i,e.lastError=i,e.lastErrorCode=null;return}if(t.event===`cron`&&e.tab===`cron`&&zz(e),(t.event===`device.pair.requested`||t.event===`device.pair.resolved`)&&CF(e,{quiet:!0}),t.event===`exec.approval.requested`){let n=qW(t.payload);if(n){e.execApprovalQueue=XW(e.execApprovalQueue,n),e.execApprovalError=null;let t=Math.max(0,n.expiresAtMs-Date.now()+500);window.setTimeout(()=>{e.execApprovalQueue=ZW(e.execApprovalQueue,n.id)},t)}return}if(t.event===`exec.approval.resolved`){let n=JW(t.payload);n&&(e.execApprovalQueue=ZW(e.execApprovalQueue,n.id));return}t.event===`update.available`&&(e.updateAvailable=t.payload?.updateAvailable??null)}function OG(e,t){let n=t.snapshot;n?.presence&&Array.isArray(n.presence)&&(e.presenceEntries=n.presence),n?.health&&(e.debugHealth=n.health,e.healthResult=n.health),n?.sessionDefaults&&hG(e,n.sessionDefaults),e.updateAvailable=n?.updateAvailable??null}var kG=`/__openclaw/control-ui-config.json`;d(c(((e,t)=>{t.exports={}}))(),1);async function AG(e){if(typeof window>`u`||typeof fetch!=`function`)return;let t=OF(e.basePath||`/keyueclaw`),n=t?`${t}${kG}`:kG;try{let t=await fetch(n,{method:`GET`,headers:{Accept:`application/json`},credentials:`same-origin`});if(!t.ok)return;let r=await t.json(),i=WW({agentId:r.assistantAgentId??null,name:r.assistantName,avatar:r.assistantAvatar??null});e.assistantName=i.name,e.assistantAvatar=i.avatar,e.assistantAgentId=i.agentId??null,e.serverVersion=r.serverVersion??null,e.mediaUploadLimits=r.mediaUploadLimits??null;let a=r.gatewayToken?.trim();a&&e.settings&&!e.settings.token.trim()&&(e.settings={...e.settings,token:a})}catch{}}function jG(e){return e.replace(/^http:\/\//i,`ws://`).replace(/^https:\/\//i,`wss://`)}function MG(e,t){e.themeResolved=t;let n=t.endsWith(`light`)?`light`:`dark`;e.dataset.theme=t,e.dataset.themeMode=n,e.style.colorScheme=n}function NG(e){if(e.themeMode!==`system`){e.systemThemeCleanup?.(),e.systemThemeCleanup=null;return}if(e.systemThemeCleanup||typeof globalThis.matchMedia!=`function`)return;let t=globalThis.matchMedia(`(prefers-color-scheme: light)`),n=()=>{e.themeMode===`system`&&MG(e,LF(e.theme,`system`))};if(typeof t.addEventListener==`function`){t.addEventListener(`change`,n),e.systemThemeCleanup=()=>t.removeEventListener(`change`,n);return}try{t.addListener(n),e.systemThemeCleanup=()=>t.removeListener(n)}catch{}}function PG(e){e.theme=e.settings.theme??`dash`,e.themeMode=e.settings.themeMode??`system`,MG(e,LF(e.theme,e.themeMode)),NG(e)}function FG(e){let t=e.wsBaseUrl?.trim();return t?jG(t):``}function IG(e){let t=FG(e);t&&(e.settings={...e.settings,gatewayUrl:t},e.token&&(eI(t,e.token),e.settings={...e.settings,token:e.token}))}var LG=class extends On{constructor(...e){super(...e),this.wsBaseUrl=``,this.httpBaseUrl=``,this.token=``,this.theme=`dash`,this.clientInstanceId=g(),this.connectGeneration=0,this.settings=nI(),this.connected=!1,this.hello=null,this.lastError=null,this.lastErrorCode=null,this.themeMode=`system`,this.themeResolved=`dash`,this.themeOrder=[...jF],this.pendingGatewayUrl=null,this.systemThemeCleanup=null,this.pendingGatewayToken=null,this.basePath=``,this.client=null,this.password=``,this.serverVersion=null,this.assistantName=``,this.assistantAvatar=null,this.assistantAgentId=null,this.mediaUploadLimits=null,this.noUrlSync=!0,this.chatRunId=null,this.chatQueue=[],this.refreshSessionsAfterChat=new Set,this.eventLogBuffer=[],this.eventLog=[],this.presenceEntries=[],this.presenceError=null,this.presenceStatus=null,this.agentsLoading=!1,this.agentsList=null,this.agentsError=null,this.healthLoading=!1,this.healthResult=null,this.healthError=null,this.debugHealth=null,this.execApprovalQueue=[],this.execApprovalError=null,this.updateAvailable=null,this.gatewayBootstrapDone=!1}createRenderRoot(){return this}beforeGatewayConnectSetup(){}afterGatewayConnected(){}shouldReconnectOnPropChange(){return this.gatewayBootstrapDone}startEmbeddedGatewayConnection(){IG(this),this.settings={...this.settings,theme:this.theme},this.gatewayBootstrapDone=!1,++this.connectGeneration;let e=this.connectGeneration;PG(this),AG(this).finally(()=>{this.connectGeneration===e&&(this.gatewayBootstrapDone=!0,gG(this))})}stopEmbeddedGatewayConnection(){this.connectGeneration+=1,this.client?.stop(),this.client=null,this.connected=!1,Lz(this)}handleEmbeddedGatewayUpdates(e){this.shouldReconnectOnPropChange()&&(e.has(`wsBaseUrl`)||e.has(`httpBaseUrl`)||e.has(`token`))&&(IG(this),FG(this)&&gG(this)),e.has(`theme`)&&(this.settings={...this.settings,theme:this.theme},PG(this)),e.has(`connected`)&&this.connected&&this.afterGatewayConnected()}connectedCallback(){super.connectedCallback(),this.beforeGatewayConnectSetup(),this.startEmbeddedGatewayConnection()}disconnectedCallback(){super.disconnectedCallback(),this.stopEmbeddedGatewayConnection()}updated(e){super.updated(e),this.handleEmbeddedGatewayUpdates(e)}};q([G({type:String,attribute:`ws-base-url`})],LG.prototype,`wsBaseUrl`,void 0),q([G({type:String,attribute:`http-base-url`})],LG.prototype,`httpBaseUrl`,void 0),q([G({type:String})],LG.prototype,`token`,void 0),q([G({type:String})],LG.prototype,`theme`,void 0),q([K()],LG.prototype,`settings`,void 0),q([K()],LG.prototype,`connected`,void 0),q([K()],LG.prototype,`hello`,void 0),q([K()],LG.prototype,`lastError`,void 0),q([K()],LG.prototype,`lastErrorCode`,void 0),q([K()],LG.prototype,`themeMode`,void 0),q([K()],LG.prototype,`themeResolved`,void 0),q([K()],LG.prototype,`themeOrder`,void 0),q([K()],LG.prototype,`pendingGatewayUrl`,void 0),q([K()],LG.prototype,`systemThemeCleanup`,void 0),q([K()],LG.prototype,`mediaUploadLimits`,void 0);function RG(e,t,n=`text/plain`){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,a.click(),URL.revokeObjectURL(i)}var zG=[{id:`platform`,label:`平台接口`},{id:`personal`,label:`个人接口`},{id:`nengkai_credentials`,label:`能开密钥`}];function BG(e){if(!e.name.trim()||!e.url.trim()||e.interfaceType===`nengkai`&&!e.nengkaiId.trim()||e.interfaceType===`nengkai`&&!e.nengkaiCredentialName.trim())return!1;let t=e.headers.map(e=>e.name.trim().toLowerCase()).filter(Boolean);if(e.headers.some(e=>!!(e.name.trim()||e.description.trim()||(e.example??``).trim())&&(!e.name.trim()||!e.description.trim()))||new Set(t).size!==t.length)return!1;let n=e=>e.some(e=>e.name.trim()?Array.isArray(e.children)?n(e.children):!1:!0);return!(n(e.inputParams)||n(e.outputParams))}var $=class extends LG{constructor(...e){super(...e),this.serviceUrl=``,this.tenantId=``,this.sessionKey=`main`,this.tab=`apiManagement`,this.toolStreamById=new Map,this.toolStreamOrder=[],this.toolStreamSyncTimer=null,this.chatToolMessages=[],this.chatStreamSegments=[],this.chatStream=null,this.chatStreamStartedAt=null,this.keyueSelectedTenantId=null,this.keyueTenants=[],this.apiManagementTab=`platform`,this.apiDefinitionsLoading=!1,this.apiDefinitionsSaving=!1,this.apiDefinitionsExporting=!1,this.apiDefinitionsImporting=!1,this.apiDefinitionsError=null,this.apiDefinitionsSaveAttempted=!1,this.apiDefinitionsItems=[],this.apiDefinitionsPath=null,this.apiDefinitionsQuery=``,this.apiDefinitionsInterfaceTypeFilter=`all`,this.apiDefinitionsHash=null,this.apiDefinitionsMode=`list`,this.apiDefinitionsEditingId=null,this.apiDefinitionsForm=Ce(),this.globalToast=null,this.globalToastKind=`error`,this.apiDefinitionsDeleteConfirmItem=null,this.apiDefinitionsSelectedIds=[],this.apiDefinitionsDeleteConfirmItems=null,this.apiDefinitionsType=`platform`,this.apiDefinitionsPage=1,this.apiDefinitionsPageSize=20,this.apiDefinitionsTotal=0,this.nengkaiCredentialsLoading=!1,this.nengkaiCredentialsSaving=!1,this.nengkaiCredentialsError=null,this.nengkaiCredentialsItems=[],this.nengkaiCredentialsHash=null,this.nengkaiCredentialsPath=null,this.nengkaiCredentialsMode=`list`,this.nengkaiCredentialsEditingId=null,this.nengkaiCredentialsForm=lt(),this.nengkaiCredentialsSaveAttempted=!1}shouldReconnectOnPropChange(){return!0}startEmbeddedGatewayConnection(){this.syncTenantId(),this.loadActiveTab(),this.loadTenantInfo()}updated(e){e.has(`tenantId`)&&(this.syncTenantId(),this.loadActiveTab(),this.loadTenantInfo()),super.updated(e)}disconnectedCallback(){je(this),mt(this),super.disconnectedCallback()}syncTenantId(){this.keyueSelectedTenantId=this.tenantId.trim()||null}async loadTenantInfo(){let e=this.keyueSelectedTenantId;if(!e){this.keyueTenants=[];return}if(!this.keyueTenants.some(t=>t.tenantId===e))try{let t=await new oe({serviceUrl:this.serviceUrl,settings:this.settings,password:this.password}).getTenant(e);t?.tenantId&&(this.keyueTenants=[t])}catch{}}async loadActiveTab(){if(this.apiManagementTab===`nengkai_credentials`){await dt(this);return}Ne(this,this.apiManagementTab),await Promise.all([Oe(this),dt(this)])}async switchApiManagementTab(e){this.apiManagementTab!==e&&(je(this),mt(this),this.apiManagementTab=e,await this.loadActiveTab())}handleEmbeddedGatewayUpdates(e){e.has(`serviceUrl`)&&(this.loadActiveTab(),this.loadTenantInfo()),super.handleEmbeddedGatewayUpdates(e)}render(){let e=this.apiManagementTab===`nengkai_credentials`,t=e?this.nengkaiCredentialsMode===`edit`:this.apiDefinitionsMode===`edit`,n=e?this.renderCredentialsView():this.renderDefinitionsView();return S`
|
|
2166
2166
|
<div class="keyueclaw-api-management-scope content--api">
|
|
2167
2167
|
${t?S`
|
|
2168
2168
|
<div
|