From 757858a9aaafa2e16a9b6b4a58721f7be4ffd251 Mon Sep 17 00:00:00 2001 From: baiyanyun Date: Sun, 7 Jun 2026 17:56:37 +0800 Subject: [PATCH] fix(client): limit workday decisions to approvals --- .../sgrobot-digital/src/lib/qimingclawAdapter.ts | 2 +- .../assets/{index-D4dFc9EL.js => index-Ijt5OOd3.js} | 10 +++++----- .../public/sgrobot-digital/index.html | 2 +- .../docs/digital-employee-frontend-integration-plan.md | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) rename qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/{index-D4dFc9EL.js => index-Ijt5OOd3.js} (92%) diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts index 253ce326..6cb2042b 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts @@ -1149,7 +1149,7 @@ function buildWorkdayDecisions( const plansById = new Map(runtimePlans(snapshot).map((plan) => [plan.id, plan])); const tasksById = new Map(runtimeTasks(snapshot).map((task) => [task.id, task])); const resultByDecisionId = state.decisionResultsByDate?.[date] ?? {}; - return buildApprovals(snapshot).map((approval) => { + return buildApprovals(snapshot).filter((approval) => stringValue(approval.source) === 'qimingclaw-runtime').map((approval) => { const payload = asRecord(approval.payload); const decisionId = stringValue(approval.approval_id) || `approval-${slugifyIdPart(stringValue(approval.task_id) || stringValue(approval.title) || 'item')}`; diff --git a/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-D4dFc9EL.js b/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Ijt5OOd3.js similarity index 92% rename from qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-D4dFc9EL.js rename to qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Ijt5OOd3.js index ed7d4e71..d74d3298 100644 --- a/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-D4dFc9EL.js +++ b/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Ijt5OOd3.js @@ -45,8 +45,8 @@ `);for(s=l=0;ls||x[l]!==C[s]){var q=` `+x[l].replace(" at new "," at ");return e.displayName&&q.includes("")&&(q=q.replace("",e.displayName)),q}while(1<=l&&0<=s);break}}}finally{Tt=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?ct(a):""}function jt(e,t){switch(e.tag){case 26:case 27:case 5:return ct(e.type);case 16:return ct("Lazy");case 13:return e.child!==t&&t!==null?ct("Suspense Fallback"):ct("Suspense");case 19:return ct("SuspenseList");case 0:case 15:return Oe(e.type,!1);case 11:return Oe(e.type.render,!1);case 1:return Oe(e.type,!0);case 31:return ct("Activity");default:return""}}function qa(e){try{var t="",a=null;do t+=jt(e,a),a=e,e=e.return;while(e);return t}catch(l){return` Error generating stack: `+l.message+` -`+l.stack}}var Gn=Object.prototype.hasOwnProperty,vi=n.unstable_scheduleCallback,vt=n.unstable_cancelCallback,Ts=n.unstable_shouldYield,Ne=n.unstable_requestPaint,ht=n.unstable_now,ja=n.unstable_getCurrentPriorityLevel,wa=n.unstable_ImmediatePriority,Qn=n.unstable_UserBlockingPriority,Mt=n.unstable_NormalPriority,At=n.unstable_LowPriority,Xn=n.unstable_IdlePriority,Ua=n.log,Kn=n.unstable_setDisableYieldValue,Ba=null,He=null;function Ea(e){if(typeof Ua=="function"&&Kn(e),He&&typeof He.setStrictMode=="function")try{He.setStrictMode(Ba,e)}catch{}}var wt=Math.clz32?Math.clz32:bi,mn=Math.log,Tc=Math.LN2;function bi(e){return e>>>=0,e===0?32:31-(mn(e)/Tc|0)|0}var Sl=256,xl=262144,jl=4194304;function Ha(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ot(e,t,a){var l=e.pendingLanes;if(l===0)return 0;var s=0,u=e.suspendedLanes,f=e.pingedLanes;e=e.warmLanes;var g=l&134217727;return g!==0?(l=g&~u,l!==0?s=Ha(l):(f&=g,f!==0?s=Ha(f):a||(a=g&~e,a!==0&&(s=Ha(a))))):(g=l&~u,g!==0?s=Ha(g):f!==0?s=Ha(f):a||(a=l&~e,a!==0&&(s=Ha(a)))),s===0?0:t!==0&&t!==s&&(t&u)===0&&(u=s&-s,a=t&-t,u>=a||u===32&&(a&4194048)!==0)?t:s}function ze(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function we(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function wl(){var e=jl;return jl<<=1,(jl&62914560)===0&&(jl=4194304),e}function oe(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function hn(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Zn(e,t,a,l,s,u){var f=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var g=e.entanglements,x=e.expirationTimes,C=e.hiddenUpdates;for(a=f&~a;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Dc=/[\n"\\]/g;function Lt(e){return e.replace(Dc,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Ei(e,t,a,l,s,u,f,g){e.name="",f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?e.type=f:e.removeAttribute("type"),t!=null?f==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Dt(t)):e.value!==""+Dt(t)&&(e.value=""+Dt(t)):f!=="submit"&&f!=="reset"||e.removeAttribute("value"),t!=null?Ni(e,f,Dt(t)):a!=null?Ni(e,f,Dt(a)):l!=null&&e.removeAttribute("value"),s==null&&u!=null&&(e.defaultChecked=!!u),s!=null&&(e.checked=s&&typeof s!="function"&&typeof s!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.name=""+Dt(g):e.removeAttribute("name")}function ki(e,t,a,l,s,u,f,g){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.type=u),t!=null||a!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){wi(e);return}a=a!=null?""+Dt(a):"",t=t!=null?""+Dt(t):a,g||t===e.value||(e.value=t),e.defaultValue=t}l=l??s,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=g?e.checked:!!l,e.defaultChecked=!!l,f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(e.name=f),wi(e)}function Ni(e,t,a){t==="number"&&Al(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function ha(e,t,a,l){if(e=e.options,t){t={};for(var s=0;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),et=!1;if(kt)try{var zt={};Object.defineProperty(zt,"passive",{get:function(){et=!0}}),window.addEventListener("test",zt,zt),window.removeEventListener("test",zt,zt)}catch{et=!1}var $t=null,ea=null,Hs=null;function Md(){if(Hs)return Hs;var e,t=ea,a=t.length,l,s="value"in $t?$t.value:$t.textContent,u=s.length;for(e=0;e=Ci),Bd=" ",Hd=!1;function Yd(e,t){switch(e){case"keyup":return Oy.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ol=!1;function $y(e,t){switch(e){case"compositionend":return Gd(t);case"keypress":return t.which!==32?null:(Hd=!0,Bd);case"textInput":return e=t.data,e===Bd&&Hd?null:e;default:return null}}function qy(e,t){if(Ol)return e==="compositionend"||!$c&&Yd(e,t)?(e=Md(),Hs=ea=$t=null,Ol=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-e};e=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Wd(a)}}function Pd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Pd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ef(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Al(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=Al(e.document)}return t}function Bc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Ky=kt&&"documentMode"in document&&11>=document.documentMode,Ll=null,Hc=null,Mi=null,Yc=!1;function tf(e,t,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Yc||Ll==null||Ll!==Al(l)||(l=Ll,"selectionStart"in l&&Bc(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Mi&&Ri(Mi,l)||(Mi=l,l=Mr(Hc,"onSelect"),0>=f,s-=f,Da=1<<32-wt(t)+s|a<ye?(je=ae,ae=null):je=ae.sibling;var De=z(N,ae,A[ye],U);if(De===null){ae===null&&(ae=je);break}e&&ae&&De.alternate===null&&t(N,ae),w=u(De,w,ye),Ce===null?le=De:Ce.sibling=De,Ce=De,ae=je}if(ye===A.length)return a(N,ae),Ee&&Za(N,ye),le;if(ae===null){for(;yeye?(je=ae,ae=null):je=ae.sibling;var qn=z(N,ae,De.value,U);if(qn===null){ae===null&&(ae=je);break}e&&ae&&qn.alternate===null&&t(N,ae),w=u(qn,w,ye),Ce===null?le=qn:Ce.sibling=qn,Ce=qn,ae=je}if(De.done)return a(N,ae),Ee&&Za(N,ye),le;if(ae===null){for(;!De.done;ye++,De=A.next())De=B(N,De.value,U),De!==null&&(w=u(De,w,ye),Ce===null?le=De:Ce.sibling=De,Ce=De);return Ee&&Za(N,ye),le}for(ae=l(ae);!De.done;ye++,De=A.next())De=M(ae,N,ye,De.value,U),De!==null&&(e&&De.alternate!==null&&ae.delete(De.key===null?ye:De.key),w=u(De,w,ye),Ce===null?le=De:Ce.sibling=De,Ce=De);return e&&ae.forEach(function(fb){return t(N,fb)}),Ee&&Za(N,ye),le}function Be(N,w,A,U){if(typeof A=="object"&&A!==null&&A.type===L&&A.key===null&&(A=A.props.children),typeof A=="object"&&A!==null){switch(A.$$typeof){case R:e:{for(var le=A.key;w!==null;){if(w.key===le){if(le=A.type,le===L){if(w.tag===7){a(N,w.sibling),U=s(w,A.props.children),U.return=N,N=U;break e}}else if(w.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===ee&&rl(le)===w.type){a(N,w.sibling),U=s(w,A.props),Bi(U,A),U.return=N,N=U;break e}a(N,w);break}else t(N,w);w=w.sibling}A.type===L?(U=al(A.props.children,N.mode,U,A.key),U.return=N,N=U):(U=Ws(A.type,A.key,A.props,null,N.mode,U),Bi(U,A),U.return=N,N=U)}return f(N);case T:e:{for(le=A.key;w!==null;){if(w.key===le)if(w.tag===4&&w.stateNode.containerInfo===A.containerInfo&&w.stateNode.implementation===A.implementation){a(N,w.sibling),U=s(w,A.children||[]),U.return=N,N=U;break e}else{a(N,w);break}else t(N,w);w=w.sibling}U=Jc(A,N.mode,U),U.return=N,N=U}return f(N);case ee:return A=rl(A),Be(N,w,A,U)}if(H(A))return P(N,w,A,U);if(de(A)){if(le=de(A),typeof le!="function")throw Error(o(150));return A=le.call(A),ce(N,w,A,U)}if(typeof A.then=="function")return Be(N,w,lr(A),U);if(A.$$typeof===F)return Be(N,w,er(N,A),U);ir(N,A)}return typeof A=="string"&&A!==""||typeof A=="number"||typeof A=="bigint"?(A=""+A,w!==null&&w.tag===6?(a(N,w.sibling),U=s(w,A),U.return=N,N=U):(a(N,w),U=Vc(A,N.mode,U),U.return=N,N=U),f(N)):a(N,w)}return function(N,w,A,U){try{Ui=0;var le=Be(N,w,A,U);return Zl=null,le}catch(ae){if(ae===Kl||ae===ar)throw ae;var Ce=Kt(29,ae,null,N.mode);return Ce.lanes=U,Ce.return=N,Ce}finally{}}}var ul=Ef(!0),kf=Ef(!1),Sn=!1;function ru(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function cu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function xn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function jn(e,t,a){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(Re&2)!==0){var s=l.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),l.pending=t,t=Fs(e),uf(e,null,a),t}return Js(e,l,t,a),Fs(e)}function Hi(e,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,a|=l,t.lanes=a,fa(e,a)}}function uu(e,t){var a=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var s=null,u=null;if(a=a.firstBaseUpdate,a!==null){do{var f={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};u===null?s=u=f:u=u.next=f,a=a.next}while(a!==null);u===null?s=u=t:u=u.next=t}else s=u=t;a={baseState:l.baseState,firstBaseUpdate:s,lastBaseUpdate:u,shared:l.shared,callbacks:l.callbacks},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=t:e.next=t,a.lastBaseUpdate=t}var ou=!1;function Yi(){if(ou){var e=Xl;if(e!==null)throw e}}function Gi(e,t,a,l){ou=!1;var s=e.updateQueue;Sn=!1;var u=s.firstBaseUpdate,f=s.lastBaseUpdate,g=s.shared.pending;if(g!==null){s.shared.pending=null;var x=g,C=x.next;x.next=null,f===null?u=C:f.next=C,f=x;var q=e.alternate;q!==null&&(q=q.updateQueue,g=q.lastBaseUpdate,g!==f&&(g===null?q.firstBaseUpdate=C:g.next=C,q.lastBaseUpdate=x))}if(u!==null){var B=s.baseState;f=0,q=C=x=null,g=u;do{var z=g.lane&-536870913,M=z!==g.lane;if(M?(xe&z)===z:(l&z)===z){z!==0&&z===Ql&&(ou=!0),q!==null&&(q=q.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var P=e,ce=g;z=t;var Be=a;switch(ce.tag){case 1:if(P=ce.payload,typeof P=="function"){B=P.call(Be,B,z);break e}B=P;break e;case 3:P.flags=P.flags&-65537|128;case 0:if(P=ce.payload,z=typeof P=="function"?P.call(Be,B,z):P,z==null)break e;B=S({},B,z);break e;case 2:Sn=!0}}z=g.callback,z!==null&&(e.flags|=64,M&&(e.flags|=8192),M=s.callbacks,M===null?s.callbacks=[z]:M.push(z))}else M={lane:z,tag:g.tag,payload:g.payload,callback:g.callback,next:null},q===null?(C=q=M,x=B):q=q.next=M,f|=z;if(g=g.next,g===null){if(g=s.shared.pending,g===null)break;M=g,g=M.next,M.next=null,s.lastBaseUpdate=M,s.shared.pending=null}}while(!0);q===null&&(x=B),s.baseState=x,s.firstBaseUpdate=C,s.lastBaseUpdate=q,u===null&&(s.shared.lanes=0),Tn|=f,e.lanes=f,e.memoizedState=B}}function Nf(e,t){if(typeof e!="function")throw Error(o(191,e));e.call(t)}function Tf(e,t){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;eu?u:8;var f=D.T,g={};D.T=g,Au(e,!1,t,a);try{var x=s(),C=D.S;if(C!==null&&C(g,x),x!==null&&typeof x=="object"&&typeof x.then=="function"){var q=tv(x,l);Ki(e,t,q,Wt(e))}else Ki(e,t,l,Wt(e))}catch(B){Ki(e,t,{then:function(){},status:"rejected",reason:B},Wt())}finally{Y.p=u,f!==null&&g.types!==null&&(f.types=g.types),D.T=f}}function rv(){}function Nu(e,t,a,l){if(e.tag!==5)throw Error(o(476));var s=sm(e).queue;im(e,s,t,te,a===null?rv:function(){return rm(e),a(l)})}function sm(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wa,lastRenderedState:te},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wa,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rm(e){var t=sm(e);t.next===null&&(t=e.alternate.memoizedState),Ki(e,t.next.queue,{},Wt())}function Tu(){return _t(us)}function cm(){return st().memoizedState}function um(){return st().memoizedState}function cv(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=Wt();e=xn(a);var l=jn(t,e,a);l!==null&&(Gt(l,t,a),Hi(l,t,a)),t={cache:nu()},e.payload=t;return}t=t.return}}function uv(e,t,a){var l=Wt();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},pr(e)?dm(t,a):(a=Kc(e,t,a,l),a!==null&&(Gt(a,e,l),fm(a,t,l)))}function om(e,t,a){var l=Wt();Ki(e,t,a,l)}function Ki(e,t,a,l){var s={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(pr(e))dm(t,s);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var f=t.lastRenderedState,g=u(f,a);if(s.hasEagerState=!0,s.eagerState=g,Xt(g,f))return Js(e,t,s,0),Ye===null&&Vs(),!1}catch{}finally{}if(a=Kc(e,t,s,l),a!==null)return Gt(a,e,l),fm(a,t,l),!0}return!1}function Au(e,t,a,l){if(l={lane:2,revertLane:ro(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},pr(e)){if(t)throw Error(o(479))}else t=Kc(e,a,l,2),t!==null&&Gt(t,e,2)}function pr(e){var t=e.alternate;return e===ge||t!==null&&t===ge}function dm(e,t){Jl=cr=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function fm(e,t,a){if((a&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,a|=l,t.lanes=a,fa(e,a)}}var Zi={readContext:_t,use:dr,useCallback:tt,useContext:tt,useEffect:tt,useImperativeHandle:tt,useLayoutEffect:tt,useInsertionEffect:tt,useMemo:tt,useReducer:tt,useRef:tt,useState:tt,useDebugValue:tt,useDeferredValue:tt,useTransition:tt,useSyncExternalStore:tt,useId:tt,useHostTransitionStatus:tt,useFormState:tt,useActionState:tt,useOptimistic:tt,useMemoCache:tt,useCacheRefresh:tt};Zi.useEffectEvent=tt;var mm={readContext:_t,use:dr,useCallback:function(e,t){return Rt().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Ff,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,mr(4194308,4,em.bind(null,t,e),a)},useLayoutEffect:function(e,t){return mr(4194308,4,e,t)},useInsertionEffect:function(e,t){mr(4,2,e,t)},useMemo:function(e,t){var a=Rt();t=t===void 0?null:t;var l=e();if(ol){Ea(!0);try{e()}finally{Ea(!1)}}return a.memoizedState=[l,t],l},useReducer:function(e,t,a){var l=Rt();if(a!==void 0){var s=a(t);if(ol){Ea(!0);try{a(t)}finally{Ea(!1)}}}else s=t;return l.memoizedState=l.baseState=s,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:s},l.queue=e,e=e.dispatch=uv.bind(null,ge,e),[l.memoizedState,e]},useRef:function(e){var t=Rt();return e={current:e},t.memoizedState=e},useState:function(e){e=xu(e);var t=e.queue,a=om.bind(null,ge,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:Eu,useDeferredValue:function(e,t){var a=Rt();return ku(a,e,t)},useTransition:function(){var e=xu(!1);return e=im.bind(null,ge,e.queue,!0,!1),Rt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var l=ge,s=Rt();if(Ee){if(a===void 0)throw Error(o(407));a=a()}else{if(a=t(),Ye===null)throw Error(o(349));(xe&127)!==0||Mf(l,t,a)}s.memoizedState=a;var u={value:a,getSnapshot:t};return s.queue=u,Ff(Lf.bind(null,l,u,e),[e]),l.flags|=2048,Wl(9,{destroy:void 0},Of.bind(null,l,u,a,t),null),a},useId:function(){var e=Rt(),t=Ye.identifierPrefix;if(Ee){var a=za,l=Da;a=(l&~(1<<32-wt(l)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ur++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof l.is=="string"?f.createElement("select",{is:l.is}):f.createElement("select"),l.multiple?u.multiple=!0:l.size&&(u.size=l.size);break;default:u=typeof l.is=="string"?f.createElement(s,{is:l.is}):f.createElement(s)}}u[pt]=t,u[Et]=l;e:for(f=t.child;f!==null;){if(f.tag===5||f.tag===6)u.appendChild(f.stateNode);else if(f.tag!==4&&f.tag!==27&&f.child!==null){f.child.return=f,f=f.child;continue}if(f===t)break e;for(;f.sibling===null;){if(f.return===null||f.return===t)break e;f=f.return}f.sibling.return=f.return,f=f.sibling}t.stateNode=u;e:switch(xt(u,s,l),s){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Pa(t)}}return Ke(t),Gu(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,a),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&Pa(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(o(166));if(e=pe.current,Yl(t)){if(e=t.stateNode,a=t.memoizedProps,l=null,s=bt,s!==null)switch(s.tag){case 27:case 5:l=s.memoizedProps}e[pt]=t,e=!!(e.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||zh(e.nodeValue,a)),e||bn(t,!0)}else e=Or(e).createTextNode(l),e[pt]=t,t.stateNode=e}return Ke(t),null;case 31:if(a=t.memoizedState,e===null||e.memoizedState!==null){if(l=Yl(t),a!==null){if(e===null){if(!l)throw Error(o(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[pt]=t}else nl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ke(t),e=!1}else a=Pc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return t.flags&256?(Vt(t),t):(Vt(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Ke(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(s=Yl(t),l!==null&&l.dehydrated!==null){if(e===null){if(!s)throw Error(o(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(o(317));s[pt]=t}else nl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ke(t),s=!1}else s=Pc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=s),s=!0;if(!s)return t.flags&256?(Vt(t),t):(Vt(t),null)}return Vt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=l!==null,e=e!==null&&e.memoizedState!==null,a&&(l=t.child,s=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(s=l.alternate.memoizedState.cachePool.pool),u=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),u!==s&&(l.flags|=2048)),a!==e&&a&&(t.child.flags|=8192),_r(t,t.updateQueue),Ke(t),null);case 4:return Q(),e===null&&fo(t.stateNode.containerInfo),Ke(t),null;case 10:return Ja(t.type),Ke(t),null;case 19:if($(it),l=t.memoizedState,l===null)return Ke(t),null;if(s=(t.flags&128)!==0,u=l.rendering,u===null)if(s)Ji(l,!1);else{if(at!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=rr(e),u!==null){for(t.flags|=128,Ji(l,!1),e=u.updateQueue,t.updateQueue=e,_r(t,e),t.subtreeFlags=0,e=a,a=t.child;a!==null;)of(a,e),a=a.sibling;return K(it,it.current&1|2),Ee&&Za(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&ht()>Er&&(t.flags|=128,s=!0,Ji(l,!1),t.lanes=4194304)}else{if(!s)if(e=rr(u),e!==null){if(t.flags|=128,s=!0,e=e.updateQueue,t.updateQueue=e,_r(t,e),Ji(l,!0),l.tail===null&&l.tailMode==="hidden"&&!u.alternate&&!Ee)return Ke(t),null}else 2*ht()-l.renderingStartTime>Er&&a!==536870912&&(t.flags|=128,s=!0,Ji(l,!1),t.lanes=4194304);l.isBackwards?(u.sibling=t.child,t.child=u):(e=l.last,e!==null?e.sibling=u:t.child=u,l.last=u)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=ht(),e.sibling=null,a=it.current,K(it,s?a&1|2:a&1),Ee&&Za(t,l.treeForkCount),e):(Ke(t),null);case 22:case 23:return Vt(t),fu(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(a&536870912)!==0&&(t.flags&128)===0&&(Ke(t),t.subtreeFlags&6&&(t.flags|=8192)):Ke(t),a=t.updateQueue,a!==null&&_r(t,a.retryQueue),a=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==a&&(t.flags|=2048),e!==null&&$(sl),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Ja(ot),Ke(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function hv(e,t){switch(Wc(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ja(ot),Q(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ve(t),null;case 31:if(t.memoizedState!==null){if(Vt(t),t.alternate===null)throw Error(o(340));nl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Vt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));nl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return $(it),null;case 4:return Q(),null;case 10:return Ja(t.type),null;case 22:case 23:return Vt(t),fu(),e!==null&&$(sl),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ja(ot),null;case 25:return null;default:return null}}function $m(e,t){switch(Wc(t),t.tag){case 3:Ja(ot),Q();break;case 26:case 27:case 5:ve(t);break;case 4:Q();break;case 31:t.memoizedState!==null&&Vt(t);break;case 13:Vt(t);break;case 19:$(it);break;case 10:Ja(t.type);break;case 22:case 23:Vt(t),fu(),e!==null&&$(sl);break;case 24:Ja(ot)}}function Fi(e,t){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var s=l.next;a=s;do{if((a.tag&e)===e){l=void 0;var u=a.create,f=a.inst;l=u(),f.destroy=l}a=a.next}while(a!==s)}}catch(g){$e(t,t.return,g)}}function kn(e,t,a){try{var l=t.updateQueue,s=l!==null?l.lastEffect:null;if(s!==null){var u=s.next;l=u;do{if((l.tag&e)===e){var f=l.inst,g=f.destroy;if(g!==void 0){f.destroy=void 0,s=t;var x=a,C=g;try{C()}catch(q){$e(s,x,q)}}}l=l.next}while(l!==u)}}catch(q){$e(t,t.return,q)}}function qm(e){var t=e.updateQueue;if(t!==null){var a=e.stateNode;try{Tf(t,a)}catch(l){$e(e,e.return,l)}}}function Um(e,t,a){a.props=dl(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(l){$e(e,t,l)}}function Wi(e,t){try{var a=e.ref;if(a!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof a=="function"?e.refCleanup=a(l):a.current=l}}catch(s){$e(e,t,s)}}function Ra(e,t){var a=e.ref,l=e.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(s){$e(e,t,s)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(s){$e(e,t,s)}else a.current=null}function Bm(e){var t=e.type,a=e.memoizedProps,l=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(s){$e(e,e.return,s)}}function Qu(e,t,a){try{var l=e.stateNode;Lv(l,e.type,a,t),l[Et]=t}catch(s){$e(e,e.return,s)}}function Hm(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Rn(e.type)||e.tag===4}function Xu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Hm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Rn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ku(e,t,a){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(e,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(e),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=pa));else if(l!==4&&(l===27&&Rn(e.type)&&(a=e.stateNode,t=null),e=e.child,e!==null))for(Ku(e,t,a),e=e.sibling;e!==null;)Ku(e,t,a),e=e.sibling}function Sr(e,t,a){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?a.insertBefore(e,t):a.appendChild(e);else if(l!==4&&(l===27&&Rn(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(Sr(e,t,a),e=e.sibling;e!==null;)Sr(e,t,a),e=e.sibling}function Ym(e){var t=e.stateNode,a=e.memoizedProps;try{for(var l=e.type,s=t.attributes;s.length;)t.removeAttributeNode(s[0]);xt(t,l,a),t[pt]=e,t[Et]=a}catch(u){$e(e,e.return,u)}}var en=!1,mt=!1,Zu=!1,Gm=typeof WeakSet=="function"?WeakSet:Set,yt=null;function pv(e,t){if(e=e.containerInfo,po=Yr,e=ef(e),Bc(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var s=l.anchorOffset,u=l.focusNode;l=l.focusOffset;try{a.nodeType,u.nodeType}catch{a=null;break e}var f=0,g=-1,x=-1,C=0,q=0,B=e,z=null;t:for(;;){for(var M;B!==a||s!==0&&B.nodeType!==3||(g=f+s),B!==u||l!==0&&B.nodeType!==3||(x=f+l),B.nodeType===3&&(f+=B.nodeValue.length),(M=B.firstChild)!==null;)z=B,B=M;for(;;){if(B===e)break t;if(z===a&&++C===s&&(g=f),z===u&&++q===l&&(x=f),(M=B.nextSibling)!==null)break;B=z,z=B.parentNode}B=M}a=g===-1||x===-1?null:{start:g,end:x}}else a=null}a=a||{start:0,end:0}}else a=null;for(go={focusedElem:e,selectionRange:a},Yr=!1,yt=t;yt!==null;)if(t=yt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,yt=e;else for(;yt!==null;){switch(t=yt,u=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(a=0;a title"))),xt(u,l,a),u[pt]=e,ut(u),l=u;break e;case"link":var f=Jh("link","href",s).get(l+(a.href||""));if(f){for(var g=0;gBe&&(f=Be,Be=ce,ce=f);var N=Id(g,ce),w=Id(g,Be);if(N&&w&&(M.rangeCount!==1||M.anchorNode!==N.node||M.anchorOffset!==N.offset||M.focusNode!==w.node||M.focusOffset!==w.offset)){var A=B.createRange();A.setStart(N.node,N.offset),M.removeAllRanges(),ce>Be?(M.addRange(A),M.extend(w.node,w.offset)):(A.setEnd(w.node,w.offset),M.addRange(A))}}}}for(B=[],M=g;M=M.parentNode;)M.nodeType===1&&B.push({element:M,left:M.scrollLeft,top:M.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,D.T=null,a=eo,eo=null;var u=Cn,f=sn;if(gt=0,ai=Cn=null,sn=0,(Re&6)!==0)throw Error(o(331));var g=Re;if(Re|=4,eh(u.current),Wm(u,u.current,f,a),Re=g,ns(0,!1),He&&typeof He.onPostCommitFiberRoot=="function")try{He.onPostCommitFiberRoot(Ba,u)}catch{}return!0}finally{Y.p=s,D.T=l,vh(e,t)}}function _h(e,t,a){t=aa(a,t),t=Ru(e.stateNode,t,2),e=jn(e,t,2),e!==null&&(hn(e,2),Ma(e))}function $e(e,t,a){if(e.tag===3)_h(e,e,a);else for(;t!==null;){if(t.tag===3){_h(t,e,a);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(An===null||!An.has(l))){e=aa(a,e),a=Sm(2),l=jn(t,a,2),l!==null&&(xm(a,l,t,e),hn(l,2),Ma(l));break}}t=t.return}}function lo(e,t,a){var l=e.pingCache;if(l===null){l=e.pingCache=new vv;var s=new Set;l.set(t,s)}else s=l.get(t),s===void 0&&(s=new Set,l.set(t,s));s.has(a)||(Fu=!0,s.add(a),e=jv.bind(null,e,t,a),t.then(e,e))}function jv(e,t,a){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,Ye===e&&(xe&a)===a&&(at===4||at===3&&(xe&62914560)===xe&&300>ht()-wr?(Re&2)===0&&ni(e,0):Wu|=a,ti===xe&&(ti=0)),Ma(e)}function Sh(e,t){t===0&&(t=wl()),e=tl(e,t),e!==null&&(hn(e,t),Ma(e))}function wv(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),Sh(e,a)}function Ev(e,t){var a=0;switch(e.tag){case 31:case 13:var l=e.stateNode,s=e.memoizedState;s!==null&&(a=s.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(o(314))}l!==null&&l.delete(t),Sh(e,a)}function kv(e,t){return vi(e,t)}var Dr=null,ii=null,io=!1,zr=!1,so=!1,zn=0;function Ma(e){e!==ii&&e.next===null&&(ii===null?Dr=ii=e:ii=ii.next=e),zr=!0,io||(io=!0,Tv())}function ns(e,t){if(!so&&zr){so=!0;do for(var a=!1,l=Dr;l!==null;){if(e!==0){var s=l.pendingLanes;if(s===0)var u=0;else{var f=l.suspendedLanes,g=l.pingedLanes;u=(1<<31-wt(42|e)+1)-1,u&=s&~(f&~g),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(a=!0,Eh(l,u))}else u=xe,u=Ot(l,l===Ye?u:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(u&3)===0||ze(l,u)||(a=!0,Eh(l,u));l=l.next}while(a);so=!1}}function Nv(){xh()}function xh(){zr=io=!1;var e=0;zn!==0&&qv()&&(e=zn);for(var t=ht(),a=null,l=Dr;l!==null;){var s=l.next,u=jh(l,t);u===0?(l.next=null,a===null?Dr=s:a.next=s,s===null&&(ii=a)):(a=l,(e!==0||(u&3)!==0)&&(zr=!0)),l=s}gt!==0&>!==5||ns(e),zn!==0&&(zn=0)}function jh(e,t){for(var a=e.suspendedLanes,l=e.pingedLanes,s=e.expirationTimes,u=e.pendingLanes&-62914561;0g)break;var q=x.transferSize,B=x.initiatorType;q&&Rh(B)&&(x=x.responseEnd,f+=q*(x"u"?null:document;function Xh(e,t,a){var l=si;if(l&&typeof t=="string"&&t){var s=Lt(t);s='link[rel="'+e+'"][href="'+s+'"]',typeof a=="string"&&(s+='[crossorigin="'+a+'"]'),Qh.has(s)||(Qh.add(s),e={rel:e,crossOrigin:a,href:t},l.querySelector(s)===null&&(t=l.createElement("link"),xt(t,"link",e),ut(t),l.head.appendChild(t)))}}function Zv(e){rn.D(e),Xh("dns-prefetch",e,null)}function Vv(e,t){rn.C(e,t),Xh("preconnect",e,t)}function Jv(e,t,a){rn.L(e,t,a);var l=si;if(l&&e&&t){var s='link[rel="preload"][as="'+Lt(t)+'"]';t==="image"&&a&&a.imageSrcSet?(s+='[imagesrcset="'+Lt(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(s+='[imagesizes="'+Lt(a.imageSizes)+'"]')):s+='[href="'+Lt(e)+'"]';var u=s;switch(t){case"style":u=ri(e);break;case"script":u=ci(e)}ca.has(u)||(e=S({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:e,as:t},a),ca.set(u,e),l.querySelector(s)!==null||t==="style"&&l.querySelector(rs(u))||t==="script"&&l.querySelector(cs(u))||(t=l.createElement("link"),xt(t,"link",e),ut(t),l.head.appendChild(t)))}}function Fv(e,t){rn.m(e,t);var a=si;if(a&&e){var l=t&&typeof t.as=="string"?t.as:"script",s='link[rel="modulepreload"][as="'+Lt(l)+'"][href="'+Lt(e)+'"]',u=s;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=ci(e)}if(!ca.has(u)&&(e=S({rel:"modulepreload",href:e},t),ca.set(u,e),a.querySelector(s)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(cs(u)))return}l=a.createElement("link"),xt(l,"link",e),ut(l),a.head.appendChild(l)}}}function Wv(e,t,a){rn.S(e,t,a);var l=si;if(l&&e){var s=Qa(l).hoistableStyles,u=ri(e);t=t||"default";var f=s.get(u);if(!f){var g={loading:0,preload:null};if(f=l.querySelector(rs(u)))g.loading=5;else{e=S({rel:"stylesheet",href:e,"data-precedence":t},a),(a=ca.get(u))&&jo(e,a);var x=f=l.createElement("link");ut(x),xt(x,"link",e),x._p=new Promise(function(C,q){x.onload=C,x.onerror=q}),x.addEventListener("load",function(){g.loading|=1}),x.addEventListener("error",function(){g.loading|=2}),g.loading|=4,$r(f,t,l)}f={type:"stylesheet",instance:f,count:1,state:g},s.set(u,f)}}}function Iv(e,t){rn.X(e,t);var a=si;if(a&&e){var l=Qa(a).hoistableScripts,s=ci(e),u=l.get(s);u||(u=a.querySelector(cs(s)),u||(e=S({src:e,async:!0},t),(t=ca.get(s))&&wo(e,t),u=a.createElement("script"),ut(u),xt(u,"link",e),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(s,u))}}function Pv(e,t){rn.M(e,t);var a=si;if(a&&e){var l=Qa(a).hoistableScripts,s=ci(e),u=l.get(s);u||(u=a.querySelector(cs(s)),u||(e=S({src:e,async:!0,type:"module"},t),(t=ca.get(s))&&wo(e,t),u=a.createElement("script"),ut(u),xt(u,"link",e),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(s,u))}}function Kh(e,t,a,l){var s=(s=pe.current)?Lr(s):null;if(!s)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=ri(a.href),a=Qa(s).hoistableStyles,l=a.get(t),l||(l={type:"style",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){e=ri(a.href);var u=Qa(s).hoistableStyles,f=u.get(e);if(f||(s=s.ownerDocument||s,f={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,f),(u=s.querySelector(rs(e)))&&!u._p&&(f.instance=u,f.state.loading=5),ca.has(e)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ca.set(e,a),u||eb(s,e,a,f.state))),t&&l===null)throw Error(o(528,""));return f}if(t&&l!==null)throw Error(o(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ci(a),a=Qa(s).hoistableScripts,l=a.get(t),l||(l={type:"script",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function ri(e){return'href="'+Lt(e)+'"'}function rs(e){return'link[rel="stylesheet"]['+e+"]"}function Zh(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function eb(e,t,a,l){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=e.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),xt(t,"link",a),ut(t),e.head.appendChild(t))}function ci(e){return'[src="'+Lt(e)+'"]'}function cs(e){return"script[async]"+e}function Vh(e,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+Lt(a.href)+'"]');if(l)return t.instance=l,ut(l),l;var s=S({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),ut(l),xt(l,"style",s),$r(l,a.precedence,e),t.instance=l;case"stylesheet":s=ri(a.href);var u=e.querySelector(rs(s));if(u)return t.state.loading|=4,t.instance=u,ut(u),u;l=Zh(a),(s=ca.get(s))&&jo(l,s),u=(e.ownerDocument||e).createElement("link"),ut(u);var f=u;return f._p=new Promise(function(g,x){f.onload=g,f.onerror=x}),xt(u,"link",l),t.state.loading|=4,$r(u,a.precedence,e),t.instance=u;case"script":return u=ci(a.src),(s=e.querySelector(cs(u)))?(t.instance=s,ut(s),s):(l=a,(s=ca.get(u))&&(l=S({},a),wo(l,s)),e=e.ownerDocument||e,s=e.createElement("script"),ut(s),xt(s,"link",l),e.head.appendChild(s),t.instance=s);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,$r(l,a.precedence,e));return t.instance}function $r(e,t,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),s=l.length?l[l.length-1]:null,u=s,f=0;f title"):null)}function tb(e,t,a){if(a===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Wh(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function ab(e,t,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var s=ri(l.href),u=t.querySelector(rs(s));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Ur.bind(e),t.then(e,e)),a.state.loading|=4,a.instance=u,ut(u);return}u=t.ownerDocument||t,l=Zh(l),(s=ca.get(s))&&jo(l,s),u=u.createElement("link"),ut(u);var f=u;f._p=new Promise(function(g,x){f.onload=g,f.onerror=x}),xt(u,"link",l),a.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(e.count++,a=Ur.bind(e),t.addEventListener("load",a),t.addEventListener("error",a))}}var Eo=0;function nb(e,t){return e.stylesheets&&e.count===0&&Hr(e,e.stylesheets),0Eo?50:800)+t);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(s)}}:null}function Ur(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hr(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Br=null;function Hr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Br=new Map,t.forEach(lb,e),Br=null,Ur.call(e))}function lb(e,t){if(!(t.state.loading&4)){var a=Br.get(e);if(a)var l=a.get(null);else{a=new Map,Br.set(e,a);for(var s=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(i){console.error(i)}}return n(),Mo.exports=xb(),Mo.exports}var wb=jb();/** +`+l.stack}}var Gn=Object.prototype.hasOwnProperty,vi=n.unstable_scheduleCallback,vt=n.unstable_cancelCallback,Ts=n.unstable_shouldYield,Ne=n.unstable_requestPaint,ht=n.unstable_now,ja=n.unstable_getCurrentPriorityLevel,wa=n.unstable_ImmediatePriority,Qn=n.unstable_UserBlockingPriority,Mt=n.unstable_NormalPriority,At=n.unstable_LowPriority,Xn=n.unstable_IdlePriority,Ua=n.log,Kn=n.unstable_setDisableYieldValue,Ba=null,Ye=null;function Ea(e){if(typeof Ua=="function"&&Kn(e),Ye&&typeof Ye.setStrictMode=="function")try{Ye.setStrictMode(Ba,e)}catch{}}var wt=Math.clz32?Math.clz32:bi,mn=Math.log,Tc=Math.LN2;function bi(e){return e>>>=0,e===0?32:31-(mn(e)/Tc|0)|0}var Sl=256,xl=262144,jl=4194304;function Ha(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ot(e,t,a){var l=e.pendingLanes;if(l===0)return 0;var s=0,u=e.suspendedLanes,f=e.pingedLanes;e=e.warmLanes;var g=l&134217727;return g!==0?(l=g&~u,l!==0?s=Ha(l):(f&=g,f!==0?s=Ha(f):a||(a=g&~e,a!==0&&(s=Ha(a))))):(g=l&~u,g!==0?s=Ha(g):f!==0?s=Ha(f):a||(a=l&~e,a!==0&&(s=Ha(a)))),s===0?0:t!==0&&t!==s&&(t&u)===0&&(u=s&-s,a=t&-t,u>=a||u===32&&(a&4194048)!==0)?t:s}function ze(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function we(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function wl(){var e=jl;return jl<<=1,(jl&62914560)===0&&(jl=4194304),e}function oe(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function hn(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Zn(e,t,a,l,s,u){var f=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var g=e.entanglements,x=e.expirationTimes,C=e.hiddenUpdates;for(a=f&~a;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Dc=/[\n"\\]/g;function Lt(e){return e.replace(Dc,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Ei(e,t,a,l,s,u,f,g){e.name="",f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?e.type=f:e.removeAttribute("type"),t!=null?f==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Dt(t)):e.value!==""+Dt(t)&&(e.value=""+Dt(t)):f!=="submit"&&f!=="reset"||e.removeAttribute("value"),t!=null?Ni(e,f,Dt(t)):a!=null?Ni(e,f,Dt(a)):l!=null&&e.removeAttribute("value"),s==null&&u!=null&&(e.defaultChecked=!!u),s!=null&&(e.checked=s&&typeof s!="function"&&typeof s!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.name=""+Dt(g):e.removeAttribute("name")}function ki(e,t,a,l,s,u,f,g){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.type=u),t!=null||a!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){wi(e);return}a=a!=null?""+Dt(a):"",t=t!=null?""+Dt(t):a,g||t===e.value||(e.value=t),e.defaultValue=t}l=l??s,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=g?e.checked:!!l,e.defaultChecked=!!l,f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(e.name=f),wi(e)}function Ni(e,t,a){t==="number"&&Al(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function ha(e,t,a,l){if(e=e.options,t){t={};for(var s=0;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),et=!1;if(kt)try{var zt={};Object.defineProperty(zt,"passive",{get:function(){et=!0}}),window.addEventListener("test",zt,zt),window.removeEventListener("test",zt,zt)}catch{et=!1}var $t=null,ea=null,Hs=null;function Md(){if(Hs)return Hs;var e,t=ea,a=t.length,l,s="value"in $t?$t.value:$t.textContent,u=s.length;for(e=0;e=Ci),Bd=" ",Hd=!1;function Yd(e,t){switch(e){case"keyup":return Oy.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ol=!1;function $y(e,t){switch(e){case"compositionend":return Gd(t);case"keypress":return t.which!==32?null:(Hd=!0,Bd);case"textInput":return e=t.data,e===Bd&&Hd?null:e;default:return null}}function qy(e,t){if(Ol)return e==="compositionend"||!$c&&Yd(e,t)?(e=Md(),Hs=ea=$t=null,Ol=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-e};e=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Wd(a)}}function Pd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Pd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ef(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Al(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=Al(e.document)}return t}function Bc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Ky=kt&&"documentMode"in document&&11>=document.documentMode,Ll=null,Hc=null,Mi=null,Yc=!1;function tf(e,t,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Yc||Ll==null||Ll!==Al(l)||(l=Ll,"selectionStart"in l&&Bc(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Mi&&Ri(Mi,l)||(Mi=l,l=Mr(Hc,"onSelect"),0>=f,s-=f,Da=1<<32-wt(t)+s|a<ye?(je=ae,ae=null):je=ae.sibling;var De=z(N,ae,A[ye],U);if(De===null){ae===null&&(ae=je);break}e&&ae&&De.alternate===null&&t(N,ae),w=u(De,w,ye),Ce===null?le=De:Ce.sibling=De,Ce=De,ae=je}if(ye===A.length)return a(N,ae),Ee&&Za(N,ye),le;if(ae===null){for(;yeye?(je=ae,ae=null):je=ae.sibling;var qn=z(N,ae,De.value,U);if(qn===null){ae===null&&(ae=je);break}e&&ae&&qn.alternate===null&&t(N,ae),w=u(qn,w,ye),Ce===null?le=qn:Ce.sibling=qn,Ce=qn,ae=je}if(De.done)return a(N,ae),Ee&&Za(N,ye),le;if(ae===null){for(;!De.done;ye++,De=A.next())De=B(N,De.value,U),De!==null&&(w=u(De,w,ye),Ce===null?le=De:Ce.sibling=De,Ce=De);return Ee&&Za(N,ye),le}for(ae=l(ae);!De.done;ye++,De=A.next())De=M(ae,N,ye,De.value,U),De!==null&&(e&&De.alternate!==null&&ae.delete(De.key===null?ye:De.key),w=u(De,w,ye),Ce===null?le=De:Ce.sibling=De,Ce=De);return e&&ae.forEach(function(fb){return t(N,fb)}),Ee&&Za(N,ye),le}function Be(N,w,A,U){if(typeof A=="object"&&A!==null&&A.type===L&&A.key===null&&(A=A.props.children),typeof A=="object"&&A!==null){switch(A.$$typeof){case R:e:{for(var le=A.key;w!==null;){if(w.key===le){if(le=A.type,le===L){if(w.tag===7){a(N,w.sibling),U=s(w,A.props.children),U.return=N,N=U;break e}}else if(w.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===ee&&rl(le)===w.type){a(N,w.sibling),U=s(w,A.props),Bi(U,A),U.return=N,N=U;break e}a(N,w);break}else t(N,w);w=w.sibling}A.type===L?(U=al(A.props.children,N.mode,U,A.key),U.return=N,N=U):(U=Ws(A.type,A.key,A.props,null,N.mode,U),Bi(U,A),U.return=N,N=U)}return f(N);case T:e:{for(le=A.key;w!==null;){if(w.key===le)if(w.tag===4&&w.stateNode.containerInfo===A.containerInfo&&w.stateNode.implementation===A.implementation){a(N,w.sibling),U=s(w,A.children||[]),U.return=N,N=U;break e}else{a(N,w);break}else t(N,w);w=w.sibling}U=Jc(A,N.mode,U),U.return=N,N=U}return f(N);case ee:return A=rl(A),Be(N,w,A,U)}if(H(A))return P(N,w,A,U);if(de(A)){if(le=de(A),typeof le!="function")throw Error(o(150));return A=le.call(A),ce(N,w,A,U)}if(typeof A.then=="function")return Be(N,w,lr(A),U);if(A.$$typeof===F)return Be(N,w,er(N,A),U);ir(N,A)}return typeof A=="string"&&A!==""||typeof A=="number"||typeof A=="bigint"?(A=""+A,w!==null&&w.tag===6?(a(N,w.sibling),U=s(w,A),U.return=N,N=U):(a(N,w),U=Vc(A,N.mode,U),U.return=N,N=U),f(N)):a(N,w)}return function(N,w,A,U){try{Ui=0;var le=Be(N,w,A,U);return Zl=null,le}catch(ae){if(ae===Kl||ae===ar)throw ae;var Ce=Kt(29,ae,null,N.mode);return Ce.lanes=U,Ce.return=N,Ce}finally{}}}var ul=Ef(!0),kf=Ef(!1),Sn=!1;function ru(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function cu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function xn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function jn(e,t,a){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(Re&2)!==0){var s=l.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),l.pending=t,t=Fs(e),uf(e,null,a),t}return Js(e,l,t,a),Fs(e)}function Hi(e,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,a|=l,t.lanes=a,fa(e,a)}}function uu(e,t){var a=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var s=null,u=null;if(a=a.firstBaseUpdate,a!==null){do{var f={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};u===null?s=u=f:u=u.next=f,a=a.next}while(a!==null);u===null?s=u=t:u=u.next=t}else s=u=t;a={baseState:l.baseState,firstBaseUpdate:s,lastBaseUpdate:u,shared:l.shared,callbacks:l.callbacks},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=t:e.next=t,a.lastBaseUpdate=t}var ou=!1;function Yi(){if(ou){var e=Xl;if(e!==null)throw e}}function Gi(e,t,a,l){ou=!1;var s=e.updateQueue;Sn=!1;var u=s.firstBaseUpdate,f=s.lastBaseUpdate,g=s.shared.pending;if(g!==null){s.shared.pending=null;var x=g,C=x.next;x.next=null,f===null?u=C:f.next=C,f=x;var q=e.alternate;q!==null&&(q=q.updateQueue,g=q.lastBaseUpdate,g!==f&&(g===null?q.firstBaseUpdate=C:g.next=C,q.lastBaseUpdate=x))}if(u!==null){var B=s.baseState;f=0,q=C=x=null,g=u;do{var z=g.lane&-536870913,M=z!==g.lane;if(M?(xe&z)===z:(l&z)===z){z!==0&&z===Ql&&(ou=!0),q!==null&&(q=q.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var P=e,ce=g;z=t;var Be=a;switch(ce.tag){case 1:if(P=ce.payload,typeof P=="function"){B=P.call(Be,B,z);break e}B=P;break e;case 3:P.flags=P.flags&-65537|128;case 0:if(P=ce.payload,z=typeof P=="function"?P.call(Be,B,z):P,z==null)break e;B=S({},B,z);break e;case 2:Sn=!0}}z=g.callback,z!==null&&(e.flags|=64,M&&(e.flags|=8192),M=s.callbacks,M===null?s.callbacks=[z]:M.push(z))}else M={lane:z,tag:g.tag,payload:g.payload,callback:g.callback,next:null},q===null?(C=q=M,x=B):q=q.next=M,f|=z;if(g=g.next,g===null){if(g=s.shared.pending,g===null)break;M=g,g=M.next,M.next=null,s.lastBaseUpdate=M,s.shared.pending=null}}while(!0);q===null&&(x=B),s.baseState=x,s.firstBaseUpdate=C,s.lastBaseUpdate=q,u===null&&(s.shared.lanes=0),Tn|=f,e.lanes=f,e.memoizedState=B}}function Nf(e,t){if(typeof e!="function")throw Error(o(191,e));e.call(t)}function Tf(e,t){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;eu?u:8;var f=D.T,g={};D.T=g,Au(e,!1,t,a);try{var x=s(),C=D.S;if(C!==null&&C(g,x),x!==null&&typeof x=="object"&&typeof x.then=="function"){var q=tv(x,l);Ki(e,t,q,Wt(e))}else Ki(e,t,l,Wt(e))}catch(B){Ki(e,t,{then:function(){},status:"rejected",reason:B},Wt())}finally{Y.p=u,f!==null&&g.types!==null&&(f.types=g.types),D.T=f}}function rv(){}function Nu(e,t,a,l){if(e.tag!==5)throw Error(o(476));var s=sm(e).queue;im(e,s,t,te,a===null?rv:function(){return rm(e),a(l)})}function sm(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wa,lastRenderedState:te},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Wa,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rm(e){var t=sm(e);t.next===null&&(t=e.alternate.memoizedState),Ki(e,t.next.queue,{},Wt())}function Tu(){return _t(us)}function cm(){return st().memoizedState}function um(){return st().memoizedState}function cv(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=Wt();e=xn(a);var l=jn(t,e,a);l!==null&&(Gt(l,t,a),Hi(l,t,a)),t={cache:nu()},e.payload=t;return}t=t.return}}function uv(e,t,a){var l=Wt();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},pr(e)?dm(t,a):(a=Kc(e,t,a,l),a!==null&&(Gt(a,e,l),fm(a,t,l)))}function om(e,t,a){var l=Wt();Ki(e,t,a,l)}function Ki(e,t,a,l){var s={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(pr(e))dm(t,s);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var f=t.lastRenderedState,g=u(f,a);if(s.hasEagerState=!0,s.eagerState=g,Xt(g,f))return Js(e,t,s,0),Ge===null&&Vs(),!1}catch{}finally{}if(a=Kc(e,t,s,l),a!==null)return Gt(a,e,l),fm(a,t,l),!0}return!1}function Au(e,t,a,l){if(l={lane:2,revertLane:ro(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},pr(e)){if(t)throw Error(o(479))}else t=Kc(e,a,l,2),t!==null&&Gt(t,e,2)}function pr(e){var t=e.alternate;return e===ge||t!==null&&t===ge}function dm(e,t){Jl=cr=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function fm(e,t,a){if((a&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,a|=l,t.lanes=a,fa(e,a)}}var Zi={readContext:_t,use:dr,useCallback:tt,useContext:tt,useEffect:tt,useImperativeHandle:tt,useLayoutEffect:tt,useInsertionEffect:tt,useMemo:tt,useReducer:tt,useRef:tt,useState:tt,useDebugValue:tt,useDeferredValue:tt,useTransition:tt,useSyncExternalStore:tt,useId:tt,useHostTransitionStatus:tt,useFormState:tt,useActionState:tt,useOptimistic:tt,useMemoCache:tt,useCacheRefresh:tt};Zi.useEffectEvent=tt;var mm={readContext:_t,use:dr,useCallback:function(e,t){return Rt().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Ff,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,mr(4194308,4,em.bind(null,t,e),a)},useLayoutEffect:function(e,t){return mr(4194308,4,e,t)},useInsertionEffect:function(e,t){mr(4,2,e,t)},useMemo:function(e,t){var a=Rt();t=t===void 0?null:t;var l=e();if(ol){Ea(!0);try{e()}finally{Ea(!1)}}return a.memoizedState=[l,t],l},useReducer:function(e,t,a){var l=Rt();if(a!==void 0){var s=a(t);if(ol){Ea(!0);try{a(t)}finally{Ea(!1)}}}else s=t;return l.memoizedState=l.baseState=s,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:s},l.queue=e,e=e.dispatch=uv.bind(null,ge,e),[l.memoizedState,e]},useRef:function(e){var t=Rt();return e={current:e},t.memoizedState=e},useState:function(e){e=xu(e);var t=e.queue,a=om.bind(null,ge,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:Eu,useDeferredValue:function(e,t){var a=Rt();return ku(a,e,t)},useTransition:function(){var e=xu(!1);return e=im.bind(null,ge,e.queue,!0,!1),Rt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var l=ge,s=Rt();if(Ee){if(a===void 0)throw Error(o(407));a=a()}else{if(a=t(),Ge===null)throw Error(o(349));(xe&127)!==0||Mf(l,t,a)}s.memoizedState=a;var u={value:a,getSnapshot:t};return s.queue=u,Ff(Lf.bind(null,l,u,e),[e]),l.flags|=2048,Wl(9,{destroy:void 0},Of.bind(null,l,u,a,t),null),a},useId:function(){var e=Rt(),t=Ge.identifierPrefix;if(Ee){var a=za,l=Da;a=(l&~(1<<32-wt(l)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ur++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof l.is=="string"?f.createElement("select",{is:l.is}):f.createElement("select"),l.multiple?u.multiple=!0:l.size&&(u.size=l.size);break;default:u=typeof l.is=="string"?f.createElement(s,{is:l.is}):f.createElement(s)}}u[pt]=t,u[Et]=l;e:for(f=t.child;f!==null;){if(f.tag===5||f.tag===6)u.appendChild(f.stateNode);else if(f.tag!==4&&f.tag!==27&&f.child!==null){f.child.return=f,f=f.child;continue}if(f===t)break e;for(;f.sibling===null;){if(f.return===null||f.return===t)break e;f=f.return}f.sibling.return=f.return,f=f.sibling}t.stateNode=u;e:switch(xt(u,s,l),s){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Pa(t)}}return Ke(t),Gu(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,a),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&Pa(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(o(166));if(e=pe.current,Yl(t)){if(e=t.stateNode,a=t.memoizedProps,l=null,s=bt,s!==null)switch(s.tag){case 27:case 5:l=s.memoizedProps}e[pt]=t,e=!!(e.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||zh(e.nodeValue,a)),e||bn(t,!0)}else e=Or(e).createTextNode(l),e[pt]=t,t.stateNode=e}return Ke(t),null;case 31:if(a=t.memoizedState,e===null||e.memoizedState!==null){if(l=Yl(t),a!==null){if(e===null){if(!l)throw Error(o(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[pt]=t}else nl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ke(t),e=!1}else a=Pc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return t.flags&256?(Vt(t),t):(Vt(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Ke(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(s=Yl(t),l!==null&&l.dehydrated!==null){if(e===null){if(!s)throw Error(o(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(o(317));s[pt]=t}else nl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ke(t),s=!1}else s=Pc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=s),s=!0;if(!s)return t.flags&256?(Vt(t),t):(Vt(t),null)}return Vt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=l!==null,e=e!==null&&e.memoizedState!==null,a&&(l=t.child,s=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(s=l.alternate.memoizedState.cachePool.pool),u=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),u!==s&&(l.flags|=2048)),a!==e&&a&&(t.child.flags|=8192),_r(t,t.updateQueue),Ke(t),null);case 4:return Q(),e===null&&fo(t.stateNode.containerInfo),Ke(t),null;case 10:return Ja(t.type),Ke(t),null;case 19:if($(it),l=t.memoizedState,l===null)return Ke(t),null;if(s=(t.flags&128)!==0,u=l.rendering,u===null)if(s)Ji(l,!1);else{if(at!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=rr(e),u!==null){for(t.flags|=128,Ji(l,!1),e=u.updateQueue,t.updateQueue=e,_r(t,e),t.subtreeFlags=0,e=a,a=t.child;a!==null;)of(a,e),a=a.sibling;return K(it,it.current&1|2),Ee&&Za(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&ht()>Er&&(t.flags|=128,s=!0,Ji(l,!1),t.lanes=4194304)}else{if(!s)if(e=rr(u),e!==null){if(t.flags|=128,s=!0,e=e.updateQueue,t.updateQueue=e,_r(t,e),Ji(l,!0),l.tail===null&&l.tailMode==="hidden"&&!u.alternate&&!Ee)return Ke(t),null}else 2*ht()-l.renderingStartTime>Er&&a!==536870912&&(t.flags|=128,s=!0,Ji(l,!1),t.lanes=4194304);l.isBackwards?(u.sibling=t.child,t.child=u):(e=l.last,e!==null?e.sibling=u:t.child=u,l.last=u)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=ht(),e.sibling=null,a=it.current,K(it,s?a&1|2:a&1),Ee&&Za(t,l.treeForkCount),e):(Ke(t),null);case 22:case 23:return Vt(t),fu(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(a&536870912)!==0&&(t.flags&128)===0&&(Ke(t),t.subtreeFlags&6&&(t.flags|=8192)):Ke(t),a=t.updateQueue,a!==null&&_r(t,a.retryQueue),a=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==a&&(t.flags|=2048),e!==null&&$(sl),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Ja(ot),Ke(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function hv(e,t){switch(Wc(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ja(ot),Q(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ve(t),null;case 31:if(t.memoizedState!==null){if(Vt(t),t.alternate===null)throw Error(o(340));nl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Vt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));nl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return $(it),null;case 4:return Q(),null;case 10:return Ja(t.type),null;case 22:case 23:return Vt(t),fu(),e!==null&&$(sl),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ja(ot),null;case 25:return null;default:return null}}function $m(e,t){switch(Wc(t),t.tag){case 3:Ja(ot),Q();break;case 26:case 27:case 5:ve(t);break;case 4:Q();break;case 31:t.memoizedState!==null&&Vt(t);break;case 13:Vt(t);break;case 19:$(it);break;case 10:Ja(t.type);break;case 22:case 23:Vt(t),fu(),e!==null&&$(sl);break;case 24:Ja(ot)}}function Fi(e,t){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var s=l.next;a=s;do{if((a.tag&e)===e){l=void 0;var u=a.create,f=a.inst;l=u(),f.destroy=l}a=a.next}while(a!==s)}}catch(g){$e(t,t.return,g)}}function kn(e,t,a){try{var l=t.updateQueue,s=l!==null?l.lastEffect:null;if(s!==null){var u=s.next;l=u;do{if((l.tag&e)===e){var f=l.inst,g=f.destroy;if(g!==void 0){f.destroy=void 0,s=t;var x=a,C=g;try{C()}catch(q){$e(s,x,q)}}}l=l.next}while(l!==u)}}catch(q){$e(t,t.return,q)}}function qm(e){var t=e.updateQueue;if(t!==null){var a=e.stateNode;try{Tf(t,a)}catch(l){$e(e,e.return,l)}}}function Um(e,t,a){a.props=dl(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(l){$e(e,t,l)}}function Wi(e,t){try{var a=e.ref;if(a!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof a=="function"?e.refCleanup=a(l):a.current=l}}catch(s){$e(e,t,s)}}function Ra(e,t){var a=e.ref,l=e.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(s){$e(e,t,s)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(s){$e(e,t,s)}else a.current=null}function Bm(e){var t=e.type,a=e.memoizedProps,l=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(s){$e(e,e.return,s)}}function Qu(e,t,a){try{var l=e.stateNode;Lv(l,e.type,a,t),l[Et]=t}catch(s){$e(e,e.return,s)}}function Hm(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Rn(e.type)||e.tag===4}function Xu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Hm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Rn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ku(e,t,a){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(e,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(e),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=pa));else if(l!==4&&(l===27&&Rn(e.type)&&(a=e.stateNode,t=null),e=e.child,e!==null))for(Ku(e,t,a),e=e.sibling;e!==null;)Ku(e,t,a),e=e.sibling}function Sr(e,t,a){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?a.insertBefore(e,t):a.appendChild(e);else if(l!==4&&(l===27&&Rn(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(Sr(e,t,a),e=e.sibling;e!==null;)Sr(e,t,a),e=e.sibling}function Ym(e){var t=e.stateNode,a=e.memoizedProps;try{for(var l=e.type,s=t.attributes;s.length;)t.removeAttributeNode(s[0]);xt(t,l,a),t[pt]=e,t[Et]=a}catch(u){$e(e,e.return,u)}}var en=!1,mt=!1,Zu=!1,Gm=typeof WeakSet=="function"?WeakSet:Set,yt=null;function pv(e,t){if(e=e.containerInfo,po=Yr,e=ef(e),Bc(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var s=l.anchorOffset,u=l.focusNode;l=l.focusOffset;try{a.nodeType,u.nodeType}catch{a=null;break e}var f=0,g=-1,x=-1,C=0,q=0,B=e,z=null;t:for(;;){for(var M;B!==a||s!==0&&B.nodeType!==3||(g=f+s),B!==u||l!==0&&B.nodeType!==3||(x=f+l),B.nodeType===3&&(f+=B.nodeValue.length),(M=B.firstChild)!==null;)z=B,B=M;for(;;){if(B===e)break t;if(z===a&&++C===s&&(g=f),z===u&&++q===l&&(x=f),(M=B.nextSibling)!==null)break;B=z,z=B.parentNode}B=M}a=g===-1||x===-1?null:{start:g,end:x}}else a=null}a=a||{start:0,end:0}}else a=null;for(go={focusedElem:e,selectionRange:a},Yr=!1,yt=t;yt!==null;)if(t=yt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,yt=e;else for(;yt!==null;){switch(t=yt,u=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(a=0;a title"))),xt(u,l,a),u[pt]=e,ut(u),l=u;break e;case"link":var f=Jh("link","href",s).get(l+(a.href||""));if(f){for(var g=0;gBe&&(f=Be,Be=ce,ce=f);var N=Id(g,ce),w=Id(g,Be);if(N&&w&&(M.rangeCount!==1||M.anchorNode!==N.node||M.anchorOffset!==N.offset||M.focusNode!==w.node||M.focusOffset!==w.offset)){var A=B.createRange();A.setStart(N.node,N.offset),M.removeAllRanges(),ce>Be?(M.addRange(A),M.extend(w.node,w.offset)):(A.setEnd(w.node,w.offset),M.addRange(A))}}}}for(B=[],M=g;M=M.parentNode;)M.nodeType===1&&B.push({element:M,left:M.scrollLeft,top:M.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,D.T=null,a=eo,eo=null;var u=Cn,f=sn;if(gt=0,ai=Cn=null,sn=0,(Re&6)!==0)throw Error(o(331));var g=Re;if(Re|=4,eh(u.current),Wm(u,u.current,f,a),Re=g,ns(0,!1),Ye&&typeof Ye.onPostCommitFiberRoot=="function")try{Ye.onPostCommitFiberRoot(Ba,u)}catch{}return!0}finally{Y.p=s,D.T=l,vh(e,t)}}function _h(e,t,a){t=aa(a,t),t=Ru(e.stateNode,t,2),e=jn(e,t,2),e!==null&&(hn(e,2),Ma(e))}function $e(e,t,a){if(e.tag===3)_h(e,e,a);else for(;t!==null;){if(t.tag===3){_h(t,e,a);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(An===null||!An.has(l))){e=aa(a,e),a=Sm(2),l=jn(t,a,2),l!==null&&(xm(a,l,t,e),hn(l,2),Ma(l));break}}t=t.return}}function lo(e,t,a){var l=e.pingCache;if(l===null){l=e.pingCache=new vv;var s=new Set;l.set(t,s)}else s=l.get(t),s===void 0&&(s=new Set,l.set(t,s));s.has(a)||(Fu=!0,s.add(a),e=jv.bind(null,e,t,a),t.then(e,e))}function jv(e,t,a){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,Ge===e&&(xe&a)===a&&(at===4||at===3&&(xe&62914560)===xe&&300>ht()-wr?(Re&2)===0&&ni(e,0):Wu|=a,ti===xe&&(ti=0)),Ma(e)}function Sh(e,t){t===0&&(t=wl()),e=tl(e,t),e!==null&&(hn(e,t),Ma(e))}function wv(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),Sh(e,a)}function Ev(e,t){var a=0;switch(e.tag){case 31:case 13:var l=e.stateNode,s=e.memoizedState;s!==null&&(a=s.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(o(314))}l!==null&&l.delete(t),Sh(e,a)}function kv(e,t){return vi(e,t)}var Dr=null,ii=null,io=!1,zr=!1,so=!1,zn=0;function Ma(e){e!==ii&&e.next===null&&(ii===null?Dr=ii=e:ii=ii.next=e),zr=!0,io||(io=!0,Tv())}function ns(e,t){if(!so&&zr){so=!0;do for(var a=!1,l=Dr;l!==null;){if(e!==0){var s=l.pendingLanes;if(s===0)var u=0;else{var f=l.suspendedLanes,g=l.pingedLanes;u=(1<<31-wt(42|e)+1)-1,u&=s&~(f&~g),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(a=!0,Eh(l,u))}else u=xe,u=Ot(l,l===Ge?u:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(u&3)===0||ze(l,u)||(a=!0,Eh(l,u));l=l.next}while(a);so=!1}}function Nv(){xh()}function xh(){zr=io=!1;var e=0;zn!==0&&qv()&&(e=zn);for(var t=ht(),a=null,l=Dr;l!==null;){var s=l.next,u=jh(l,t);u===0?(l.next=null,a===null?Dr=s:a.next=s,s===null&&(ii=a)):(a=l,(e!==0||(u&3)!==0)&&(zr=!0)),l=s}gt!==0&>!==5||ns(e),zn!==0&&(zn=0)}function jh(e,t){for(var a=e.suspendedLanes,l=e.pingedLanes,s=e.expirationTimes,u=e.pendingLanes&-62914561;0g)break;var q=x.transferSize,B=x.initiatorType;q&&Rh(B)&&(x=x.responseEnd,f+=q*(x"u"?null:document;function Xh(e,t,a){var l=si;if(l&&typeof t=="string"&&t){var s=Lt(t);s='link[rel="'+e+'"][href="'+s+'"]',typeof a=="string"&&(s+='[crossorigin="'+a+'"]'),Qh.has(s)||(Qh.add(s),e={rel:e,crossOrigin:a,href:t},l.querySelector(s)===null&&(t=l.createElement("link"),xt(t,"link",e),ut(t),l.head.appendChild(t)))}}function Zv(e){rn.D(e),Xh("dns-prefetch",e,null)}function Vv(e,t){rn.C(e,t),Xh("preconnect",e,t)}function Jv(e,t,a){rn.L(e,t,a);var l=si;if(l&&e&&t){var s='link[rel="preload"][as="'+Lt(t)+'"]';t==="image"&&a&&a.imageSrcSet?(s+='[imagesrcset="'+Lt(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(s+='[imagesizes="'+Lt(a.imageSizes)+'"]')):s+='[href="'+Lt(e)+'"]';var u=s;switch(t){case"style":u=ri(e);break;case"script":u=ci(e)}ca.has(u)||(e=S({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:e,as:t},a),ca.set(u,e),l.querySelector(s)!==null||t==="style"&&l.querySelector(rs(u))||t==="script"&&l.querySelector(cs(u))||(t=l.createElement("link"),xt(t,"link",e),ut(t),l.head.appendChild(t)))}}function Fv(e,t){rn.m(e,t);var a=si;if(a&&e){var l=t&&typeof t.as=="string"?t.as:"script",s='link[rel="modulepreload"][as="'+Lt(l)+'"][href="'+Lt(e)+'"]',u=s;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=ci(e)}if(!ca.has(u)&&(e=S({rel:"modulepreload",href:e},t),ca.set(u,e),a.querySelector(s)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(cs(u)))return}l=a.createElement("link"),xt(l,"link",e),ut(l),a.head.appendChild(l)}}}function Wv(e,t,a){rn.S(e,t,a);var l=si;if(l&&e){var s=Qa(l).hoistableStyles,u=ri(e);t=t||"default";var f=s.get(u);if(!f){var g={loading:0,preload:null};if(f=l.querySelector(rs(u)))g.loading=5;else{e=S({rel:"stylesheet",href:e,"data-precedence":t},a),(a=ca.get(u))&&jo(e,a);var x=f=l.createElement("link");ut(x),xt(x,"link",e),x._p=new Promise(function(C,q){x.onload=C,x.onerror=q}),x.addEventListener("load",function(){g.loading|=1}),x.addEventListener("error",function(){g.loading|=2}),g.loading|=4,$r(f,t,l)}f={type:"stylesheet",instance:f,count:1,state:g},s.set(u,f)}}}function Iv(e,t){rn.X(e,t);var a=si;if(a&&e){var l=Qa(a).hoistableScripts,s=ci(e),u=l.get(s);u||(u=a.querySelector(cs(s)),u||(e=S({src:e,async:!0},t),(t=ca.get(s))&&wo(e,t),u=a.createElement("script"),ut(u),xt(u,"link",e),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(s,u))}}function Pv(e,t){rn.M(e,t);var a=si;if(a&&e){var l=Qa(a).hoistableScripts,s=ci(e),u=l.get(s);u||(u=a.querySelector(cs(s)),u||(e=S({src:e,async:!0,type:"module"},t),(t=ca.get(s))&&wo(e,t),u=a.createElement("script"),ut(u),xt(u,"link",e),a.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(s,u))}}function Kh(e,t,a,l){var s=(s=pe.current)?Lr(s):null;if(!s)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=ri(a.href),a=Qa(s).hoistableStyles,l=a.get(t),l||(l={type:"style",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){e=ri(a.href);var u=Qa(s).hoistableStyles,f=u.get(e);if(f||(s=s.ownerDocument||s,f={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,f),(u=s.querySelector(rs(e)))&&!u._p&&(f.instance=u,f.state.loading=5),ca.has(e)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ca.set(e,a),u||eb(s,e,a,f.state))),t&&l===null)throw Error(o(528,""));return f}if(t&&l!==null)throw Error(o(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ci(a),a=Qa(s).hoistableScripts,l=a.get(t),l||(l={type:"script",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function ri(e){return'href="'+Lt(e)+'"'}function rs(e){return'link[rel="stylesheet"]['+e+"]"}function Zh(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function eb(e,t,a,l){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=e.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),xt(t,"link",a),ut(t),e.head.appendChild(t))}function ci(e){return'[src="'+Lt(e)+'"]'}function cs(e){return"script[async]"+e}function Vh(e,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+Lt(a.href)+'"]');if(l)return t.instance=l,ut(l),l;var s=S({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),ut(l),xt(l,"style",s),$r(l,a.precedence,e),t.instance=l;case"stylesheet":s=ri(a.href);var u=e.querySelector(rs(s));if(u)return t.state.loading|=4,t.instance=u,ut(u),u;l=Zh(a),(s=ca.get(s))&&jo(l,s),u=(e.ownerDocument||e).createElement("link"),ut(u);var f=u;return f._p=new Promise(function(g,x){f.onload=g,f.onerror=x}),xt(u,"link",l),t.state.loading|=4,$r(u,a.precedence,e),t.instance=u;case"script":return u=ci(a.src),(s=e.querySelector(cs(u)))?(t.instance=s,ut(s),s):(l=a,(s=ca.get(u))&&(l=S({},a),wo(l,s)),e=e.ownerDocument||e,s=e.createElement("script"),ut(s),xt(s,"link",l),e.head.appendChild(s),t.instance=s);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,$r(l,a.precedence,e));return t.instance}function $r(e,t,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),s=l.length?l[l.length-1]:null,u=s,f=0;f title"):null)}function tb(e,t,a){if(a===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Wh(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function ab(e,t,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var s=ri(l.href),u=t.querySelector(rs(s));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Ur.bind(e),t.then(e,e)),a.state.loading|=4,a.instance=u,ut(u);return}u=t.ownerDocument||t,l=Zh(l),(s=ca.get(s))&&jo(l,s),u=u.createElement("link"),ut(u);var f=u;f._p=new Promise(function(g,x){f.onload=g,f.onerror=x}),xt(u,"link",l),a.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(e.count++,a=Ur.bind(e),t.addEventListener("load",a),t.addEventListener("error",a))}}var Eo=0;function nb(e,t){return e.stylesheets&&e.count===0&&Hr(e,e.stylesheets),0Eo?50:800)+t);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(s)}}:null}function Ur(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hr(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Br=null;function Hr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Br=new Map,t.forEach(lb,e),Br=null,Ur.call(e))}function lb(e,t){if(!(t.state.loading&4)){var a=Br.get(e);if(a)var l=a.get(null);else{a=new Map,Br.set(e,a);for(var s=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(i){console.error(i)}}return n(),Mo.exports=xb(),Mo.exports}var wb=jb();/** * react-router v7.17.0 * * Copyright (c) Remix Software Inc. @@ -122,7 +122,7 @@ Please change the parent to {r(m);try{localStorage.setItem(Cg,m)}catch{}},[]),d=dc[i];return c.jsx(Ag.Provider,{value:{role:i,profile:d,setRole:o},children:c.jsx("div",{style:d.cssVars,"data-role":i,children:n})})}function m0(){const n=b.useContext(Ag);if(!n)throw new Error("useRole must be used within RoleProvider");return n}function Ho({className:n=""}){return c.jsx("div",{className:`de-gem ${n}`,"aria-hidden":"true"})}function h0(){return c.jsxs("div",{className:"de-stage","aria-hidden":"true",children:[c.jsx("div",{className:"de-stage-glow"}),c.jsx("div",{className:"de-stage-layer de-stage-layer-1"}),c.jsx("div",{className:"de-stage-layer de-stage-layer-2"}),c.jsx("div",{className:"de-stage-layer de-stage-layer-3"})]})}function p0({avatarSrc:n,altText:i="数字员工",statusLabel:r}){return c.jsxs("div",{className:"de-avatar-container","aria-hidden":"true",children:[c.jsxs("div",{className:"de-avatar-glass-space",children:[c.jsxs("div",{className:"de-avatar-roof",children:[c.jsx("div",{className:"de-avatar-roof-face"}),c.jsx("div",{className:"de-avatar-roof-glow"})]}),c.jsx("div",{className:"de-avatar-glass-left"}),c.jsx("div",{className:"de-avatar-glass-right"}),c.jsx(Ho,{className:"de-gem-1"}),c.jsx(Ho,{className:"de-gem-2"}),c.jsx(Ho,{className:"de-gem-3"})]}),r&&c.jsx("div",{className:"de-avatar-state-label",children:r}),c.jsx("img",{src:n,alt:i,className:"de-avatar-img"}),c.jsx(h0,{})]})}const g0=".",y0=(()=>{var i;return((i=window.__QIMINGCLAW_DIGITAL_API_BASE__)==null?void 0:i.replace(/\/+$/,""))??""})(),v0=()=>"",Dg="zeroclaw_token";function b0(){try{return localStorage.getItem(Dg)}catch{return null}}function _0(){try{localStorage.removeItem(Dg)}catch{}}const zg="qimingclaw:digital-employee-adapter-state",S0="18:00",x0=[{skill_id:"qimingclaw-acp-session",name:"ACP 会话执行",version:"1.0.0",enabled:!0,description:"通过 qimingclaw 的 ACP 引擎创建会话、执行任务并跟踪结果。",category:"执行",capability_level:"core"},{skill_id:"qimingclaw-mcp-tools",name:"MCP 工具编排",version:"1.0.0",enabled:!0,description:"读取已配置 MCP 服务与工具,作为数字员工的工具能力池。",category:"工具",capability_level:"core"},{skill_id:"qimingclaw-computer-control",name:"客户端电脑控制",version:"1.0.0",enabled:!0,description:"承接 /computer/chat 执行入口,面向远程任务和本地自动化操作。",category:"桌面",capability_level:"specialized"},{skill_id:"qimingclaw-artifact-report",name:"产物与日报整理",version:"1.0.0",enabled:!0,description:"把执行记录、关键产物和异常汇总成数字员工日报。",category:"汇报",capability_level:"standard"}],on=[{plan_id:"qimingclaw-client-readiness",title:"客户端运行状态巡检",objective:"确认 qimingclaw 客户端、Agent、MCP 和远程接入能力是否处于可执行状态。",status:"running",created_at:cn(9,0),steps:[{step_id:"agent-status",title:"检查 Agent 引擎状态",depends_on:[],preferred_skills:["qimingclaw-acp-session"],tasks:[{task_id:"task-agent-status",title:"读取 Agent 服务状态",status:"running"}]},{step_id:"mcp-status",title:"检查 MCP 工具能力",depends_on:["agent-status"],preferred_skills:["qimingclaw-mcp-tools"],tasks:[{task_id:"task-mcp-status",title:"同步 MCP 工具列表",status:"pending"}]}]},{plan_id:"qimingclaw-remote-task-ingress",title:"远程任务接入准备",objective:"检查 lanproxy、computer server 和文件服务,为后端下发数字员工任务做准备。",status:"pending",created_at:cn(9,30),steps:[{step_id:"computer-server",title:"确认 /computer/chat 执行入口",depends_on:[],preferred_skills:["qimingclaw-computer-control"],tasks:[{task_id:"task-computer-server",title:"检查电脑控制服务",status:"pending"}]},{step_id:"file-artifact",title:"准备产物回传目录",depends_on:["computer-server"],preferred_skills:["qimingclaw-artifact-report"],tasks:[{task_id:"task-file-artifact",title:"整理执行产物通道",status:"pending"}]}]},{plan_id:"qimingclaw-daily-report",title:"数字员工日报生成",objective:"汇总今日执行记录、服务状态和待介入事项,生成面向业务的日报。",status:"pending",created_at:cn(17,30),steps:[{step_id:"collect-events",title:"汇总运行事件",depends_on:[],preferred_skills:["qimingclaw-artifact-report"],tasks:[{task_id:"task-collect-events",title:"整理今日运行明细",status:"pending"}]},{step_id:"write-report",title:"生成日报摘要",depends_on:["collect-events"],preferred_skills:["qimingclaw-artifact-report"],tasks:[{task_id:"task-write-report",title:"生成数字员工日报",status:"pending"}]}]}],fc={"qimingclaw-client-readiness":{expression:"0 9 * * *",nextRun:cn(9,0),scheduleText:"已定时 09:00 执行"},"qimingclaw-remote-task-ingress":{expression:"30 9 * * *",nextRun:cn(9,30),scheduleText:"已定时 09:30 执行"},"qimingclaw-daily-report":{expression:"0 18 * * *",nextRun:cn(18,0),scheduleText:"已定时 18:00 执行"}};function j0(){return window.__QIMINGCLAW_EMBEDDED_DIGITAL__===!0}async function w0(n,i={}){if(!j0())return;const r=new URL(n,window.location.origin),o=(i.method||"GET").toUpperCase(),d=r.pathname;if(o==="GET"&&d==="/api/digital-employee/workday")return Gg(r.searchParams.get("date")||Ed(),await It());if(o==="POST"&&d==="/api/digital-employee/workday/actions")return await tS(Go(i.body),await It());if(o==="POST"&&d==="/api/governance/command")return await aS(Go(i.body),await It());if(o==="GET"&&d==="/api/scheduler/jobs")return{jobs:$0(await It())};if(o==="GET"&&d==="/api/debug/plans")return{plans:Yg(r.searchParams.get("q"),await It())};if(o==="GET"&&d==="/api/debug/tasks"){const m=r.searchParams.get("plan_id");return Ad(m,await It())}if(o==="GET"&&d==="/api/debug/store")return B0(await It());if(o==="GET"&&d==="/api/dashboard")return H0(await It());if(o==="GET"&&d==="/api/artifact")return{artifacts:Ug(await It())};if(o==="GET"&&d.startsWith("/api/debug/plan/")&&d.endsWith("/flow"))return Qg(decodeURIComponent(d.split("/")[4]||""),await It());if(o==="GET"&&d.startsWith("/api/debug/task/")&&d.endsWith("/flow"))return nS(decodeURIComponent(d.split("/")[4]||""),await It());if(o==="POST"&&d.startsWith("/api/debug/plan/")&&d.endsWith("/dispatch"))return await Xg(decodeURIComponent(d.split("/")[4]||""),await It());if(o==="GET"&&d.startsWith("/api/plan/")&&d.endsWith("/messages"))return{messages:lS(decodeURIComponent(d.split("/")[3]||""),await It())};if(o==="GET"&&d==="/api/skill")return{skills:await N0()};if(o==="POST"&&d.startsWith("/api/skill/")&&d.endsWith("/enabled")){const m=decodeURIComponent(d.split("/")[3]||""),p=Go(i.body);return{ok:!0,skill_id:m,enabled:p.enabled??!0}}}function Yo(){return{selectedDutyIdsByDate:{},confirmedDates:{},reportScheduleTime:S0,reportGeneratedAtByDate:{},decisionResultsByDate:{},profile:{name:"飞天数字员工",company:"qimingclaw 客户端",position:"客户端任务执行员",currentStatus:"working"}}}function jd(){try{const n=window.localStorage.getItem(zg);return n?{...Yo(),...JSON.parse(n)}:Yo()}catch{return Yo()}}function E0(n){window.localStorage.setItem(zg,JSON.stringify(n))}async function It(){var n,i,r,o,d,m,p,v,h;try{const y=await((r=(i=(n=window.QimingClawBridge)==null?void 0:n.digital)==null?void 0:i.getSnapshot)==null?void 0:r.call(i))??null;if(!y)return null;const[E,S,k]=await Promise.all([((m=(d=(o=window.QimingClawBridge)==null?void 0:o.digital)==null?void 0:d.getSyncStatus)==null?void 0:m.call(d).catch(()=>null))??null,((h=(v=(p=window.QimingClawBridge)==null?void 0:p.digital)==null?void 0:v.getRuntimeRecords)==null?void 0:h.call(v).catch(()=>null))??null,wd()]);return{...y,sync:E,runtime:S,uiState:k}}catch{return null}}async function wd(){var n,i,r;try{return await((r=(i=(n=window.QimingClawBridge)==null?void 0:n.digital)==null?void 0:i.getUiState)==null?void 0:r.call(i))??null}catch{return null}}async function k0(){var n,i,r;try{const o=await((r=(i=(n=window.QimingClawBridge)==null?void 0:n.digital)==null?void 0:i.getSkillCapabilities)==null?void 0:r.call(i))??null;return Array.isArray(o==null?void 0:o.skills)?o.skills:[]}catch{return[]}}async function N0(){return T0([...x0,...await k0()])}function T0(n){const i=new Set,r=[];for(const o of n){const d=typeof o.skill_id=="string"?o.skill_id.trim():"";!d||i.has(d)||(i.add(d),r.push({...o,skill_id:d}))}return r}async function Rg(n,i,r,o){var d,m,p;E0(n);try{return await((p=(m=(d=window.QimingClawBridge)==null?void 0:d.digital)==null?void 0:m.saveUiState)==null?void 0:p.call(m,{state:n,action:i,date:r,metadata:o}))??n}catch{return n}}function Go(n){return typeof n!="string"||!n.trim()?{}:JSON.parse(n)}function Ed(){const n=new Date;return[n.getFullYear(),String(n.getMonth()+1).padStart(2,"0"),String(n.getDate()).padStart(2,"0")].join("-")}function cn(n,i){const r=new Date;return r.setHours(n,i,0,0),r.toISOString()}function Fr(n){return n.split("-").join("/")}function mc(n){if(!n)return"未知";const i=new Date(n);return Number.isNaN(i.getTime())?n:new Intl.DateTimeFormat("zh-CN",{hour:"2-digit",minute:"2-digit"}).format(i)}function A0(n,i){return new Set(n.selectedDutyIdsByDate[i]??[])}function C0(n){return["completed","succeeded","success"].includes(n)?"success":["running","active"].includes(n)?"running":["failed","error"].includes(n)?"danger":"waiting"}function gs(n,i){var r;return((r=n==null?void 0:n.services[i])==null?void 0:r.running)===!0}function ys(n,i){var r;return(r=n==null?void 0:n.services[i])==null?void 0:r.error}function D0(n,i){return i?n.plan_id==="qimingclaw-client-readiness"?gs(i,"agent")&&gs(i,"mcp")?"running":ys(i,"agent")||ys(i,"mcp")?"failed":"pending":n.plan_id==="qimingclaw-remote-task-ingress"?gs(i,"computerServer")||gs(i,"lanproxy")||gs(i,"fileServer")?"running":ys(i,"computerServer")||ys(i,"lanproxy")||ys(i,"fileServer")?"failed":"pending":n.status:n.status}function Bn(n,i,r){const o=n==null?void 0:n.services[i];if(!o)return`${r}:未连接`;if(o.running){const d=o.port?`(端口 ${o.port})`:"";return`${r}:运行中${d}`}return`${r}:未运行${o.error?`,${o.error}`:""}`}function ld(n){const i=n==null?void 0:n.sync;return i?i.enabled?i.endpoint?i.syncing?`管理端同步:同步中,待同步 ${i.pending} 条`:i.failed>0?`管理端同步:${i.failed} 条失败,待同步 ${i.pending} 条`:i.pending>0?`管理端同步:待同步 ${i.pending} 条`:i.lastSyncAt?`管理端同步:已同步,最近 ${i.lastSyncAt}`:"管理端同步:等待本地数据":"管理端同步:未配置地址":"管理端同步:已停用":"管理端同步:未连接"}function z0(n){return String(n||"").replace(/\s+/g," ").trim()}function Oa(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.plans)??[]}function Sa(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.tasks)??[]}function _c(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.runs)??[]}function dn(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.events)??[]}function Mg(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.artifacts)??[]}function Og(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.approvals)??[]}function Yn(n){return Oa(n).length>0||Sa(n).length>0||Mg(n).length>0||Og(n).length>0}function Lg(n,i){const r=[n.updatedAt,...i.map(o=>o.updatedAt)].filter(Boolean).sort();return r[r.length-1]??n.updatedAt??n.createdAt}function nt(n){const i=n.toLowerCase();return["completed","succeeded","success","done"].includes(i)?"success":["failed","error","rejected"].includes(i)?"danger":["running","active","leased","syncing"].includes(i)?"running":"waiting"}function Hn(n){const i=nt(n);return i==="success"?"已完成":i==="danger"?"异常":i==="running"?"执行中":"待执行"}function kd(n,i){return Sa(n).filter(r=>r.planId===i)}function Nd(n,i){return i.some(r=>nt(r.status)==="danger")?"failed":i.some(r=>nt(r.status)==="running")?"running":i.length>0&&i.every(r=>nt(r.status)==="success")?"completed":n.status||"pending"}function R0(n,i){const r=kd(i,n.id),o=Nd(n,r);return{plan_id:n.id,title:n.title,objective:n.objective??void 0,status:o,created_at:n.createdAt,updated_at:Lg(n,r),source:n.source,sync_status:n.syncStatus,steps:[{step_id:`${n.id}:runtime`,title:"qimingclaw 执行记录",depends_on:[],preferred_skills:[...new Set(r.map(d=>d.assignedSkillId).filter(d=>!!d))],tasks:r.map(d=>({task_id:d.id,title:d.title,status:d.status}))}]}}function M0(n){return{task_id:n.id,title:n.title,status:n.status,plan_id:n.planId??null,step_id:n.planId?`${n.planId}:runtime`:"qimingclaw-runtime",assigned_skill_id:n.assignedSkillId??"",description:n.syncError??"",created_at:n.createdAt,updated_at:n.updatedAt,started_at:n.createdAt,finished_at:nt(n.status)==="success"||nt(n.status)==="danger"?n.updatedAt:null,error_message:n.syncError??null,sync_status:n.syncStatus}}function O0(n,i){return{run_id:n.id,task_id:n.taskId??"",plan_id:n.planId??null,skill_id:void 0,attempt_no:1,lifecycle:nt(n.status)==="success"?"Succeeded":nt(n.status)==="danger"?"Failed":nt(n.status)==="running"?"Running":n.status,created_at:n.startedAt??n.createdAt,completed_at:n.finishedAt??null,events:i.filter(r=>r.runId===n.id).map(r=>({event_id:r.id,kind:r.kind,occurred_at:r.occurredAt,message:r.message})),artifacts:Bg(n,i),sync_status:n.syncStatus}}function $g(n){const i=z0(n.error),r=i.length>120?`${i.slice(0,120)}...`:i,o=n.dueForRetry?"等待补偿":n.nextRetryAt?`下次重试 ${n.nextRetryAt}`:"等待重试";return`${n.entityType}/${n.operation} ${n.id} 重试 ${n.attempts} 次,${o}${r?`,${r}`:""}`}function Sc(n,i){return{...n,status:D0(n,i)}}function L0(n){return n==="running"?"执行中":n==="completed"||n==="succeeded"?"已完成":n==="failed"?"异常":"待执行"}function Td(n){const i=Oa(n);if(i.length>0)return i.map(o=>R0(o,n));const r=Sa(n);return r.length===0?[]:r.map(o=>({plan_id:o.id,title:o.title,objective:"未绑定 Plan 的 qimingclaw 本地任务记录。",status:o.status,created_at:o.createdAt,updated_at:o.updatedAt,source:"qimingclaw",sync_status:o.syncStatus,steps:[{step_id:`${o.id}:runtime`,title:"qimingclaw 执行记录",depends_on:[],preferred_skills:o.assignedSkillId?[o.assignedSkillId]:[],tasks:[{task_id:o.id,title:o.title,status:o.status}]}]}))}function $0(n=null){return Yn(n)?Td(n).map(i=>{var r;return{id:`runtime-${i.plan_id}`,name:i.title,expression:"",command:`qimingclaw-runtime:${i.plan_id}`,prompt:i.objective??null,job_type:"qimingclaw_runtime",schedule:{mode:"runtime_record",plan_id:i.plan_id},enabled:!0,delivery:{mode:"qimingclaw_runtime",plan_id:i.plan_id},template_id:i.plan_id,trigger_kind:"runtime_record",step_count:((r=i.steps)==null?void 0:r.length)??0,skill_ids:[...new Set((i.steps??[]).flatMap(o=>o.preferred_skills??[]))],delete_after_run:!1,created_at:i.created_at,next_run:i.updated_at??i.created_at,last_run:i.updated_at??i.created_at,last_status:i.status,last_output:null}}):on.map(i=>{var o;const r=fc[i.plan_id]??fc["qimingclaw-client-readiness"];return{id:`schedule-${i.plan_id}`,name:i.title,expression:r.expression,command:`digital-employee:${i.plan_id}`,prompt:i.objective??null,job_type:"plan_template",schedule:{expression:r.expression,template_id:i.plan_id},enabled:!0,delivery:{mode:"plan_template",template_id:i.plan_id},template_id:i.plan_id,trigger_kind:"scheduled",step_count:((o=i.steps)==null?void 0:o.length)??0,skill_ids:[...new Set((i.steps??[]).flatMap(d=>d.preferred_skills??[]))],delete_after_run:!1,created_at:i.created_at,next_run:r.nextRun,last_run:i.status==="running"?cn(9,5):null,last_status:i.status==="running"?"running":null,last_output:null}})}function q0(n,i,r){const o=A0(n,i);if(Yn(r)){const d=Oa(r),m=Sa(r).filter(h=>!h.planId),p=d.map((h,y)=>{const E=kd(r,h.id),S=Nd(h,E),k=E.filter(L=>nt(L.status)==="success").length,R=E.filter(L=>nt(L.status)==="danger").length,T=o.size===0?y<3:o.has(h.id);return{id:h.id,title:h.title,summary:h.objective||"qimingclaw 本地执行记录已同步到数字员工。",implemented:!0,selectable:!0,selected:T,status:S,status_label:Hn(S),status_tone:nt(S),schedule_text:E.length>0?`最近更新 ${mc(Lg(h,E))}`:"等待任务记录",result_text:E.length>0?`${E.length} 项任务,${k} 项完成,${R} 项异常`:`同步状态:${h.syncStatus}`,conversation_id:h.id}}),v=m.map((h,y)=>({id:h.id,title:h.title,summary:"未绑定 Plan 的 qimingclaw 本地任务记录。",implemented:!0,selectable:!0,selected:o.size===0?p.length+y<3:o.has(h.id),status:h.status,status_label:Hn(h.status),status_tone:nt(h.status),schedule_text:`最近更新 ${mc(h.updatedAt)}`,result_text:h.syncError||`同步状态:${h.syncStatus}`,conversation_id:h.id}));return[...p,...v]}return on.map(d=>{const m=Sc(d,r),p=fc[m.plan_id]??fc["qimingclaw-client-readiness"];return{id:m.plan_id,title:m.title,summary:m.objective??"等待 qimingclaw 执行链路补充任务说明。",implemented:!0,selectable:!0,selected:o.has(m.plan_id),status:m.status,status_label:L0(m.status),status_tone:C0(m.status),schedule_text:p.scheduleText,result_text:qg(m,r),conversation_id:m.plan_id}})}function qg(n,i){return n.plan_id==="qimingclaw-client-readiness"?[Bn(i,"agent","Agent"),Bn(i,"mcp","MCP"),`活跃会话:${(i==null?void 0:i.sessions.active)??0}`].join(";"):n.plan_id==="qimingclaw-remote-task-ingress"?[Bn(i,"computerServer","Computer Server"),Bn(i,"lanproxy","Lanproxy"),Bn(i,"fileServer","File Server")].join(";"):n.status==="running"?"正在同步客户端运行状态":"等待任务执行"}function Ns(n,i=null){return Yn(i)?Sa(i).filter(r=>!n||r.planId===n||r.id===n).map(M0):on.filter(r=>!n||r.plan_id===n).map(r=>Sc(r,i)).flatMap(r=>(r.steps??[]).flatMap(o=>(o.tasks??[]).map(d=>{var m;return{task_id:d.task_id,title:d.title,status:r.status==="running"&&d.status==="pending"?"running":d.status,plan_id:r.plan_id,step_id:o.step_id,assigned_skill_id:((m=o.preferred_skills)==null?void 0:m[0])??"",description:`${r.title} · ${o.title}`,created_at:r.created_at,updated_at:r.status==="running"?new Date().toISOString():r.created_at,started_at:d.status==="running"?cn(9,5):null,finished_at:d.status==="completed"?cn(9,10):null}})))}function U0(n){return n.filter(i=>i.status==="running"||i.status==="completed").map((i,r)=>({run_id:`qimingclaw-run-${r+1}`,task_id:i.task_id,plan_id:i.plan_id,skill_id:i.assigned_skill_id,attempt_no:1,lifecycle:i.status==="running"?"Running":"Succeeded",created_at:i.started_at??i.created_at,completed_at:i.finished_at,events:[{event_id:`${i.task_id}-event-start`,kind:"RunStarted",occurred_at:i.started_at??i.created_at,message:`${i.title} 已进入 qimingclaw 执行链路`}]}))}function Ad(n,i=null){const r=Ns(n,i);if(Yn(i)){const o=new Set(r.map(m=>m.task_id)),d=_c(i).filter(m=>!m.taskId||o.has(m.taskId)).map(m=>O0(m,dn(i)));return{tasks:r,runs:d,total:r.length,truncated:!1}}return{tasks:r,runs:U0(r),total:r.length,truncated:!1}}function B0(n){const i=Yg(null,n),r=Ns(null,n),o=Ad(null,n).runs;return{tables:{canonical_events:Y0(n,r,o),tasks:r,runs:o,plans:i,plan_steps:i.flatMap(d=>d.steps??[]),approvals:Cd(n),artifacts:Ug(n)}}}function H0(n){const i=Ns(null,n),r=i.filter(v=>nt(v.status)==="waiting").length,o=i.filter(v=>nt(v.status)==="running").length,d=i.filter(v=>nt(v.status)==="success").length,m=i.filter(v=>nt(v.status)==="danger").length,p=Cd(n);return{runtime:{active_tasks:o,failed_tasks:m,pending_confirmations:p.filter(v=>v.status==="pending").length},tasks:{total:i.length,queued:r,running:o,succeeded:d,failed:m},approvals:{total:p.length,pending:p.filter(v=>v.status==="pending").length}}}function Y0(n,i,r){var v;const o=dn(n).map(h=>({event_id:h.id,aggregate_type:h.runId?"run":h.taskId?"task":"plan",aggregate_id:h.runId??h.taskId??h.planId??h.id,event_type:h.kind,kind:h.kind,message:h.message,occurred_at:h.occurredAt,timestamp:h.occurredAt,plan_id:h.planId??null,task_id:h.taskId??null})),d=r.flatMap(h=>(h.events??[]).map(y=>({event_id:y.event_id??`${h.run_id}:${y.kind??"event"}:${y.occurred_at??h.created_at}`,aggregate_type:"run",aggregate_id:h.run_id,event_type:y.kind??h.lifecycle,kind:y.kind??h.lifecycle,message:y.message??h.lifecycle,occurred_at:y.occurred_at??h.completed_at??h.created_at,timestamp:y.occurred_at??h.completed_at??h.created_at,plan_id:h.plan_id??null,task_id:h.task_id||null}))),m=i.map(h=>({event_id:`task-status-${h.task_id}`,aggregate_type:"task",aggregate_id:h.task_id,event_type:"task_status",kind:h.status,message:`${h.title}:${Hn(h.status)}`,occurred_at:h.updated_at??h.created_at,timestamp:h.updated_at??h.created_at,plan_id:h.plan_id??null,task_id:h.task_id})),p=(((v=n==null?void 0:n.sync)==null?void 0:v.recentFailures)??[]).map(h=>({event_id:`digital-sync-failure-${h.id}`,aggregate_type:"sync_outbox",aggregate_id:h.id,event_type:"digital_sync_failed",kind:"digital_sync_failed",message:$g(h),occurred_at:h.lastAttemptAt??h.updatedAt??h.createdAt,timestamp:h.lastAttemptAt??h.updatedAt??h.createdAt,plan_id:null,task_id:null}));return G0([...o,...d,...m,...p]).sort((h,y)=>(y.occurred_at??"").localeCompare(h.occurred_at??""))}function G0(n){const i=new Set;return n.filter(r=>!r.event_id||i.has(r.event_id)?!1:(i.add(r.event_id),!0))}function Cd(n){var d;const i=Og(n).map(m=>({approval_id:m.id,task_id:m.taskId??"",status:m.status,created_at:m.createdAt,plan_id:m.planId??null,run_id:m.runId??null,title:m.title,reversible:m.status==="pending",source:"qimingclaw-runtime",sync_status:m.syncStatus,sync_error:m.syncError,payload:m.payload})),o=(((d=n==null?void 0:n.sync)==null?void 0:d.recentFailures)??[]).filter(m=>m.dueForRetry===!1||/credential|auth|token|unauthor/i.test(m.error??"")).slice(0,20).map(m=>({approval_id:`sync-review-${m.id}`,task_id:m.entityId,status:"pending",created_at:m.createdAt,title:`同步异常待处理:${m.entityType}/${m.entityId}`,reversible:!1,source:"qimingclaw-sync",error:m.error}));return[...i,...o]}function Q0(n,i,r){var p;const o=new Map(Oa(r).map(v=>[v.id,v])),d=new Map(Sa(r).map(v=>[v.id,v])),m=((p=n.decisionResultsByDate)==null?void 0:p[i])??{};return Cd(r).map(v=>{const h=xc(v.payload),y=Ge(v.approval_id)||`approval-${hc(Ge(v.task_id)||Ge(v.title)||"item")}`,E=m[y],S=K0(E,Ge(v.status)||"pending"),k=Ge(v.plan_id),R=Ge(v.task_id),T=k?o.get(k):null,L=R?d.get(R):null;return{id:y,title:Ge(v.title)||Ge(h==null?void 0:h.title)||"待确认事项",scenario:X0(v,h),status:S,status_label:Z0(S,E),plan_title:(T==null?void 0:T.title)||Ge(h==null?void 0:h.plan_title)||Ge(v.plan_id)||"qimingclaw 本地记录",task_title:(L==null?void 0:L.title)||Ge(h==null?void 0:h.task_title)||Ge(v.task_id)||"待确认任务",actions:V0(S)?[{id:"approved",label:"同意",tone:"primary"},{id:"rejected",label:"驳回",tone:"secondary"}]:[]}})}function X0(n,i){return Ge(i==null?void 0:i.scenario)||Ge(i==null?void 0:i.summary)||Ge(i==null?void 0:i.reason)||Ge(i==null?void 0:i.message)||Ge(n.error)||"来自 qimingclaw 本地运行记录的人工确认项。"}function K0(n,i){const r=String(n||"").toLowerCase();return["approve","approved","accept","accepted"].includes(r)?"approved":["reject","rejected","deny","denied"].includes(r)?"rejected":["dismiss","dismissed","skip","skipped"].includes(r)?"dismissed":i||"pending"}function Z0(n,i){return i?n==="approved"?"已同意":n==="rejected"?"已驳回":n==="dismissed"?"已忽略":"已处理":n==="approved"?"已同意":n==="rejected"?"已驳回":n==="completed"?"已完成":n==="failed"?"异常":"待确认"}function V0(n){return["pending","requested"].includes(String(n||"").toLowerCase())}function Ug(n){const i=[...Mg(n).map(J0),..._c(n).flatMap(r=>Bg(r,dn(n))),...dn(n).flatMap(r=>id(r.id,r.payload,r.occurredAt))];return Hg(i)}function J0(n){const i=xc(n.payload);return{artifact_id:n.id,subject_id:n.runId??n.taskId??n.planId??n.id,kind:n.kind,name:n.name||Ge((i==null?void 0:i.name)??(i==null?void 0:i.title))||sd(n.uri??"")||n.kind,uri:n.uri||Ge((i==null?void 0:i.uri)??(i==null?void 0:i.url)??(i==null?void 0:i.path))||void 0,value:Ge((i==null?void 0:i.value)??(i==null?void 0:i.summary)??(i==null?void 0:i.text))||n.uri||n.name||n.kind,plan_id:n.planId??null,task_id:n.taskId??null,run_id:n.runId??null,created_at:n.createdAt,source:"qimingclaw-runtime",sync_status:n.syncStatus,sync_error:n.syncError,payload:n.payload}}function Bg(n,i){return Hg([...id(n.id,n.payload,n.finishedAt??n.startedAt??n.createdAt),...i.filter(r=>r.runId===n.id).flatMap(r=>id(n.id,r.payload,r.occurredAt))])}function id(n,i,r){const o=xc(i);if(!o)return typeof i=="string"?[Qo(n,i,0,r)]:[];const m=[...Wr(o.artifacts),...Wr(o.outputs),...Wr(o.files),...Wr(o.attachments)].map((p,v)=>Qo(n,p,v,r));for(const p of["artifact","outputPath","output_path","filePath","file_path","path","uri","url"])o[p]&&m.push(Qo(n,o[p],m.length,r));return m.filter(p=>p.name||p.uri||p.value)}function Qo(n,i,r,o){const d=xc(i);if(d){const p=Ge(d.uri??d.url??d.path??d.filePath??d.file_path??d.outputPath??d.output_path),v=Ge(d.name??d.title??d.filename)||sd(p)||`产物 ${r+1}`;return{artifact_id:Ge(d.artifact_id??d.id)||`artifact-${hc(n)}-${r+1}`,subject_id:Ge(d.subject_id)||n,kind:Ge(d.kind??d.type)||"artifact",name:v,uri:p,value:Ge(d.value??d.summary??d.text)||p,created_at:(Ge(d.created_at??d.createdAt)||o)??void 0,source:"qimingclaw-runtime"}}const m=String(i??"").trim();return{artifact_id:`artifact-${hc(n)}-${r+1}`,subject_id:n,kind:"artifact",name:sd(m)||`产物 ${r+1}`,uri:F0(m)?m:void 0,value:m,created_at:o??void 0,source:"qimingclaw-runtime"}}function Hg(n){const i=new Set;return n.filter(r=>{const o=r.artifact_id||`${r.subject_id}:${r.uri||r.value||r.name}`;return!o||i.has(o)?!1:(i.add(o),!!(r.name||r.uri||r.value))})}function xc(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:null}function Wr(n){return Array.isArray(n)?n:[]}function Ge(n){return typeof n=="string"?n.trim():""}function F0(n){return/^(file|https?):\/\//i.test(n)||n.includes("/")||n.includes("\\")}function sd(n){return n?(n.split(/[?#]/)[0]||n).split(/[\\/]/).filter(Boolean).pop()??"":""}function hc(n){const i=n.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(i)return i;let r=0;for(let o=0;o>>0;return`item-${r.toString(36)}`}function Yg(n,i=null){const r=(n??"").trim().toLowerCase(),o=Yn(i)?Td(i):on.map(d=>Sc(d,i));return r?o.filter(d=>d.title.toLowerCase().includes(r)||d.plan_id.toLowerCase().includes(r)||(d.objective??"").toLowerCase().includes(r)):o}function W0(n){const i=new Map(Oa(n).map(d=>[d.id,d])),r=new Map(Sa(n).map(d=>[d.id,d])),o=dn(n).map(d=>{const m=d.taskId?r.get(d.taskId):void 0,p=d.planId??(m==null?void 0:m.planId)??null,v=p?i.get(p):void 0,h=(m==null?void 0:m.status)??(v==null?void 0:v.status)??(d.kind.includes("failed")||d.kind.includes("error")?"failed":"running"),y=nt(h);return{id:d.id,time:mc(d.occurredAt),plan_title:(v==null?void 0:v.title)??"qimingclaw 本地执行",task_title:(m==null?void 0:m.title)??d.message,step_title:d.kind,detail:d.message||d.kind,status:h,status_label:Hn(h),status_tone:y,updated_at:d.occurredAt,conversation_id:p??(m==null?void 0:m.id)??d.id}});return o.length>0?o:Sa(n).map(d=>{const m=d.planId?i.get(d.planId):void 0;return{id:`task-event-${d.id}`,time:mc(d.updatedAt),plan_title:(m==null?void 0:m.title)??"qimingclaw 本地任务",task_title:d.title,step_title:d.assignedSkillId||"qimingclaw-runtime",detail:d.syncError||`${d.title}:${Hn(d.status)},同步状态 ${d.syncStatus}`,status:d.status,status_label:Hn(d.status),status_tone:nt(d.status),updated_at:d.updatedAt,conversation_id:d.planId??d.id}})}function I0(n,i,r){if(Yn(r)){const m=W0(r);return Dp(m,r)}if(!i)return[{id:"event-await-confirmation",time:"待确认",plan_title:"任务设置",task_title:"等待确认今日任务",step_title:"选择职责",detail:"请先确认今天要执行的任务,确认后数字员工会开始执行。",status:"pending",status_label:"待确认",status_tone:"waiting",updated_at:new Date().toISOString(),conversation_id:null}];const d=n.filter(m=>m.selected).map(m=>({id:`event-${m.id}`,time:m.status==="running"?"实时":"待执行",plan_title:m.title,task_title:m.title,step_title:m.status==="running"?"同步 qimingclaw 服务状态":"等待调度",detail:m.status==="running"?`${m.result_text}。快照时间:${(r==null?void 0:r.generatedAt)??"未连接 bridge"}`:"任务已确认,将在后续阶段接入 ACP/MCP 真实执行事件。",status:m.status==="running"?"running":"pending",status_label:m.status==="running"?"执行中":"待执行",status_tone:m.status==="running"?"running":"waiting",updated_at:new Date().toISOString(),conversation_id:m.conversation_id}));return Dp(d,r)}function Dp(n,i){const r=i==null?void 0:i.sync;if(r&&(r.pending>0||r.failed>0||r.lastSyncAt)){const o=(r.recentFailures||[]).slice(0,3).map($g).join(";");return[...n,{id:"event-management-sync",time:r.syncing?"实时":"同步",plan_title:"管理端联动",task_title:"同步数字员工本地状态",step_title:r.failed>0?"同步补偿":"outbox 推送",detail:[ld(i),r.lastSyncError?`错误:${r.lastSyncError}`:"",o?`最近失败:${o}`:""].filter(Boolean).join("。"),status:r.failed>0?"failed":r.syncing||r.pending>0?"running":"completed",status_label:r.failed>0?"异常":r.syncing||r.pending>0?"同步中":"已同步",status_tone:r.failed>0?"danger":r.syncing||r.pending>0?"running":"success",updated_at:r.lastSyncAt??new Date().toISOString(),conversation_id:"qimingclaw-management-sync"}]}return n}function P0(n,i){return(n.some(o=>o.selected)?n.filter(o=>o.selected):n).map(o=>{const d=i.filter(y=>y.conversation_id===o.conversation_id),m=d.filter(y=>y.status==="running").length,p=d.filter(y=>y.status==="completed").length,v=d.filter(y=>nt(y.status)==="danger").length,h=Math.max(0,d.length-m-p-v);return{id:o.id,plan_id:o.id,title:o.title,description:o.summary,selected:o.selected,total_count:Math.max(d.length,1),success_count:p,failure_count:v,running_count:m,waiting_count:d.length===0?1:h,latest_status_label:v>0?"异常":m>0?"执行中":p>0?"已完成":"待执行",latest_status_tone:v>0?"danger":m>0?"running":p>0?"success":"waiting",business_summary:o.result_text,ai_summary:"当前由 qimingclaw 本地运行记录生成。"}})}function eS(n){return n.map(i=>({id:`run-detail-${i.id}`,time:i.time,task_name:i.task_title,step_name:i.step_title,operation_name:i.plan_title,status_label:i.status_label,status_tone:i.status_tone,business_detail:i.detail,raw_detail:i.detail,updated_at:i.updated_at,conversation_id:i.conversation_id}))}function Gg(n,i){const r=(i==null?void 0:i.uiState)??jd(),o=r.confirmedDates[n]??null,d=!!o,m=q0(r,n,i),p=I0(m,d,i),v=P0(m,p),h=r.reportGeneratedAtByDate[n]??null,y=m.filter(O=>O.selected).length,E=p.filter(O=>O.status==="running").length,S=p.filter(O=>nt(O.status)==="success").length,k=p.filter(O=>nt(O.status)==="danger").length,R=Oa(i).length+Sa(i).length,T=Yn(i),L=i==null?void 0:i.sync;return{source:"live",date:n,employee:{name:r.profile.name,title:"数字员工",major:"qimingclaw 客户端任务执行",company:r.profile.company,position:r.profile.position,current_status:r.profile.currentStatus,current_status_label:r.profile.currentStatus==="resting"?"休息中":"工作中",motto:"承接客户端任务,调度 ACP 与 MCP 能力完成执行。"},workday:{confirmed:d,confirmed_at:o,current_status:r.profile.currentStatus,current_status_label:r.profile.currentStatus==="resting"?"休息中":"工作中",status_label:T?k>0?"有异常":E>0?"执行中":"已同步":d?"运行中":"待确认",status_tone:T?k>0?"danger":E>0?"running":"success":d?"running":"waiting",summary:T?`当前日期 ${Fr(n)} 已读取 ${R} 条 qimingclaw 本地运行记录。`:d?`当前日期 ${Fr(n)} 已确认 ${y} 项任务。`:`当前日期 ${Fr(n)} 待确认今日任务。`,bubble_text:T?"我已接入 qimingclaw 本地运行记录,会持续展示真实任务、事件和同步状态。":d?"我已接入 qimingclaw 客户端执行链路,正在等待真实 Run/Event 数据接入。":"请先确认今天要执行的任务,我会把它们映射到 qimingclaw 执行链路。"},overview:{title:"今日执行",status_label:T?"本地真实记录":d?"真实数据":"待确认",status_tone:k>0?"danger":T||d?"success":"waiting",metrics:[{label:"已选任务",value:String(y)},{label:"运行记录",value:String(p.length)},{label:"执行中",value:String(E)},{label:"已完成",value:String(S)},{label:"异常",value:String(k)},{label:"待同步",value:String((L==null?void 0:L.pending)??0)},{label:"同步异常",value:String((L==null?void 0:L.failed)??0)}]},duties:m,events:p,execution_summaries:v,run_details:eS(p),decisions:Q0(r,n,i),delivery:{headline:T?"qimingclaw 本地记录已接入":d?"qimingclaw 执行链路已接入":"等待确认任务设置",summary:T?"数字员工页面正在读取本地 Plan / Task / Run / Event,并同步展示管理端 outbox 状态。":"当前阶段已将数字员工页面切换到 qimingclaw adapter,并开始读取客户端服务状态。",lines:["已吸收 sgRobot 数字员工 UI 和核心展示模型。",T?`已读取本地记录:Plan ${Oa(i).length} / Task ${Sa(i).length} / Run ${_c(i).length} / Event ${dn(i).length}。`:"已建立 qimingclaw workday/plans/tasks/skills API adapter。",Bn(i,"agent","Agent"),Bn(i,"mcp","MCP"),Bn(i,"computerServer","Computer Server"),ld(i),`活跃会话:${(i==null?void 0:i.sessions.active)??0} / ${(i==null?void 0:i.sessions.total)??0}`],artifacts:[{name:"数字员工运行摘要",status:h?"ready":"pending"}]},daily_report:{date:n,title:`${Fr(n)} 飞天数字员工日报`,report_schedule_time:r.reportScheduleTime,status:h?"ready":"not_generated",generated_at:h,generated_by:h?"ai":"fallback",model:"qimingclaw-adapter",source:"qimingclaw",summary:h?`今日已完成数字员工页面到 qimingclaw adapter 的接入,并读取了 qimingclaw 服务状态。${ld(i)}。`:"日报将在生成后汇总任务选择、运行明细和后续接入建议。",totals:{task_count:y,execution_count:p.length,success_count:S,failure_count:k,running_count:E},task_sections:v,detail_lines:p.map(O=>`${O.time} ${O.task_title}:${O.detail}`),pdf_available:!!h,pdf_url:null}}}async function tS(n,i){const r=(i==null?void 0:i.uiState)??await wd()??jd(),o=n.date||Ed();n.action==="confirm_workday"&&(r.selectedDutyIdsByDate[o]=n.duty_ids??[],r.confirmedDates[o]=new Date().toISOString()),n.action==="update_profile"&&(r.profile={name:n.name||r.profile.name,company:n.company||r.profile.company,position:n.position||r.profile.position,currentStatus:n.current_status||r.profile.currentStatus}),n.action==="update_report_schedule"&&(r.reportScheduleTime=n.report_schedule_time||r.reportScheduleTime),n.action==="generate_daily_report"&&(n.duty_ids&&(r.selectedDutyIdsByDate[o]=n.duty_ids),n.report_schedule_time&&(r.reportScheduleTime=n.report_schedule_time),r.reportGeneratedAtByDate[o]=new Date().toISOString()),n.action==="decide_approval"&&n.decision_id&&(r.decisionResultsByDate=r.decisionResultsByDate??{},r.decisionResultsByDate[o]={...r.decisionResultsByDate[o]??{},[n.decision_id]:n.decision||"resolved"});const d=await Rg(r,n.action,o,n.action==="decide_approval"?{decision_id:n.decision_id,decision:n.decision}:void 0);return Gg(o,{...i??{generatedAt:new Date().toISOString(),services:{},sessions:{total:0,active:0,items:[]}},uiState:d})}async function aS(n,i){var p,v,h,y,E,S,k,R,T,L;const r=`qimingclaw-digital-${n.command_kind}-${Date.now()}`,o=n.correlation_id||r,d=oi((p=n.context_refs)==null?void 0:p.plan_id)||oi((v=n.payload)==null?void 0:v.plan_id)||oi((h=n.payload)==null?void 0:h.original_plan_id),m=oi((y=n.context_refs)==null?void 0:y.schedule_id)||oi((E=n.payload)==null?void 0:E.schedule_id);if(n.command_kind==="create_plan"){const O=`qimingclaw-local-${hc(oi((S=n.payload)==null?void 0:S.title)||d||"plan")}-${Date.now()}`;return Ir(r,o,"已在 qimingclaw 兼容层创建本地计划草稿。",{plan_id:O,status:"draft",source:"qimingclaw-adapter",requested_action:(k=n.payload)==null?void 0:k.requested_action,original_plan_id:((R=n.payload)==null?void 0:R.original_plan_id)??d})}if(n.command_kind==="activate_plan"||n.command_kind==="run_schedule_now"){const O=d||((T=Td(i)[0])==null?void 0:T.plan_id)||((L=on[0])==null?void 0:L.plan_id)||"qimingclaw-client-readiness",G=await Xg(O,i);return Ir(r,o,"已映射为 qimingclaw 本地任务激活。",{plan_id:O,status:"active",dispatched_tasks:G.dispatched_tasks,source:"qimingclaw-adapter"})}return n.command_kind==="create_schedule"?Ir(r,o,"已记录 qimingclaw 兼容定时任务请求。",{schedule_id:m||`qimingclaw-schedule-${Date.now()}`,plan_id:d,status:"enabled",source:"qimingclaw-adapter"}):["submit_plan","approve_plan","amend_plan","resume_plan","pause_plan","cancel_plan"].includes(n.command_kind)?Ir(r,o,`已接受 ${n.command_kind},当前由 qimingclaw 本地 adapter 记录兼容状态。`,{plan_id:d,status:n.command_kind==="approve_plan"?"approved":n.command_kind==="submit_plan"?"reviewing":"accepted",source:"qimingclaw-adapter"}):{command_id:r,accepted:!1,correlation_id:o,error:"missing_capability",message:`qimingclaw 数字员工兼容层尚未支持 ${n.command_kind}。`}}function Ir(n,i,r,o){return{command_id:n,accepted:!0,correlation_id:i,message:r,result:o}}function oi(n){return typeof n=="string"&&n.trim()?n.trim():""}function Qg(n,i=null){var d,m,p;if(Yn(i)){const v=Oa(i).find(R=>R.id===n),h=Ns(n,i),y=Ad(n,i).runs,E=dn(i).filter(R=>R.planId===n||h.some(T=>T.task_id===R.taskId)),S=(v==null?void 0:v.title)??((d=h[0])==null?void 0:d.title)??n,k=(v==null?void 0:v.objective)??"qimingclaw 本地运行记录";return{plan_id:n,plan_title:S,plan_status:v?Nd(v,kd(i,v.id)):(m=h[0])==null?void 0:m.status,plan_objective:k,lanes:[{key:"intent",label:"目标",color:"#38bdf8"},{key:"qimingclaw",label:"qimingclaw",color:"#22c55e"},{key:"execution",label:"执行",color:"#f59e0b"}],steps:[{seq:1,lane:"intent",label:S,sub_label:k,timestamp:(v==null?void 0:v.createdAt)??((p=h[0])==null?void 0:p.created_at)??new Date().toISOString(),color:"#38bdf8",source_type:"plan"},...h.map((R,T)=>({seq:T+2,lane:"qimingclaw",label:R.title,sub_label:`${Hn(R.status)} · ${R.assigned_skill_id||"qimingclaw-runtime"}`,timestamp:R.updated_at,color:"#22c55e",source_type:"task"})),...y.map((R,T)=>({seq:h.length+T+2,lane:"execution",label:R.lifecycle||"Run",sub_label:R.run_id,timestamp:R.completed_at??R.created_at,color:"#f59e0b",source_type:"run"}))],events:E.map(R=>({event_id:R.id,kind:R.kind,occurred_at:R.occurredAt,message:R.message}))}}const r=Sc(on.find(v=>v.plan_id===n)??on[0],i),o=new Date().toISOString();return{plan_id:r.plan_id,plan_title:r.title,plan_status:r.status,plan_objective:r.objective,lanes:[{key:"intent",label:"目标",color:"#38bdf8"},{key:"qimingclaw",label:"qimingclaw",color:"#22c55e"},{key:"execution",label:"执行",color:"#f59e0b"}],steps:[{seq:1,lane:"intent",label:r.title,sub_label:r.objective,timestamp:r.created_at,color:"#38bdf8",source_type:"plan"},{seq:2,lane:"qimingclaw",label:"接入客户端能力",sub_label:"ACP / MCP / computer server adapter",timestamp:o,color:"#22c55e",source_type:"adapter"},{seq:3,lane:"execution",label:r.status==="running"?"已读取 qimingclaw 服务状态":"等待调度",sub_label:qg(r,i),timestamp:o,color:"#f59e0b",source_type:"run"}],events:[{event_id:`${r.plan_id}-adapter-event`,kind:"qimingclaw_adapter",occurred_at:o,message:"数字员工页面已通过 qimingclaw adapter 获取数据。"}]}}function nS(n,i=null){const r=Sa(i).find(p=>p.id===n);if(!r)return Qg(n,i);const o=r.planId?Oa(i).find(p=>p.id===r.planId):null,d=_c(i).filter(p=>p.taskId===r.id),m=dn(i).filter(p=>p.taskId===r.id||d.some(v=>v.id===p.runId));return{plan_id:r.planId??r.id,plan_title:(o==null?void 0:o.title)??r.title,plan_status:r.status,plan_objective:(o==null?void 0:o.objective)??"qimingclaw 本地任务记录",lanes:[{key:"task",label:"任务",color:"#38bdf8"},{key:"execution",label:"执行",color:"#22c55e"},{key:"event",label:"事件",color:"#f59e0b"}],steps:[{seq:1,lane:"task",label:r.title,sub_label:`${Hn(r.status)} · ${r.assignedSkillId||"qimingclaw-runtime"}`,timestamp:r.updatedAt,color:"#38bdf8",source_type:"task"},...d.map((p,v)=>({seq:v+2,lane:"execution",label:p.status||"Run",sub_label:p.id,timestamp:p.finishedAt??p.startedAt??p.createdAt,color:"#22c55e",source_type:"run"})),...m.map((p,v)=>({seq:d.length+v+2,lane:"event",label:p.kind,sub_label:p.message,timestamp:p.occurredAt,color:"#f59e0b",source_type:"event"}))],events:m.map(p=>({event_id:p.id,kind:p.kind,occurred_at:p.occurredAt,message:p.message}))}}async function Xg(n,i=null){const r=(i==null?void 0:i.uiState)??await wd()??jd(),o=Ed(),d=new Set(r.selectedDutyIdsByDate[o]??[]);return d.add(n),r.selectedDutyIdsByDate[o]=[...d],r.confirmedDates[o]=r.confirmedDates[o]??new Date().toISOString(),await Rg(r,"confirm_workday",o),{ok:!0,plan_id:n,source_plan_id:n,dispatched_tasks:Ns(n,i).map(m=>({task_id:m.task_id,title:m.title,status:m.status==="pending"?"running":m.status}))}}function lS(n,i=null){const r=Oa(i).find(d=>d.id===n);if(r){const d=dn(i).filter(m=>m.planId===n).slice(0,12);return[{role:"user",content:`查看 qimingclaw 本地任务:${r.title}`,created_at:r.createdAt},...d.map(m=>({role:"assistant",content:`${m.kind}:${m.message}`,created_at:m.occurredAt}))]}const o=on.find(d=>d.plan_id===n)??on[0];return[{role:"user",content:`执行数字员工任务:${o.title}`,created_at:o.created_at},{role:"assistant",content:`已接入 qimingclaw adapter。目标:${o.objective??o.title}`,created_at:new Date().toISOString()}]}const iS=9e3,Kg=2e4;class sS extends Error{constructor(){super("Unauthorized"),this.name="UnauthorizedError"}}async function da(n,i={}){const r=await w0(n,i);if(r!==void 0)return r;const{timeoutMs:o=iS,...d}=i,m=b0(),p=new Headers(d.headers),v=new AbortController;let h=!1;const y=window.setTimeout(()=>{h=!0,v.abort()},o),E=d.signal,S=()=>v.abort();E&&(E.aborted?v.abort():E.addEventListener("abort",S,{once:!0})),m&&p.set("Authorization",`Bearer ${m}`),d.body&&typeof d.body=="string"&&!p.has("Content-Type")&&p.set("Content-Type","application/json");let k;try{k=await fetch(`${v0()}${y0}${n}`,{...d,headers:p,signal:v.signal})}catch(R){throw R instanceof DOMException&&R.name==="AbortError"&&h?new Error(`API request timed out after ${o/1e3}s: ${n}`):R}finally{window.clearTimeout(y),E==null||E.removeEventListener("abort",S)}if(k.status===401)throw _0(),window.dispatchEvent(new Event("zeroclaw-unauthorized")),new sS;if(!k.ok){const R=await k.text().catch(()=>"");let T=R||k.statusText;if(R)try{const L=JSON.parse(R);typeof L.message=="string"&&L.message.trim()?T=L.message.trim():typeof L.error=="string"&&L.error.trim()&&(T=L.error.trim())}catch{T=R}throw new Error(`API ${k.status}: ${T}`)}if(k.status!==204)return k.json()}function rS(n,i){if(n!==null&&typeof n=="object"&&!Array.isArray(n)&&i in n){const r=n[i];if(r!==void 0)return r}return n}function cS(){return da("/api/scheduler/jobs").then(n=>rS(n,"jobs"))}function zp(n){return da(`/api/plan/${encodeURIComponent(n)}/messages`).then(i=>({messages:i.messages||[]}))}function Zg(n){return da("/api/governance/command",{method:"POST",body:JSON.stringify(n)})}function ic(n){const i=n?`?date=${encodeURIComponent(n)}`:"";return da(`/api/digital-employee/workday${i}`,{timeoutMs:Kg})}function gl(n){return da("/api/digital-employee/workday/actions",{method:"POST",body:JSON.stringify(n)})}function uS(n){return da(`/api/debug/plan/${encodeURIComponent(n)}/dispatch`,{method:"POST",timeoutMs:Kg})}function oS(){return da("/api/debug/plans?limit=80").then(n=>n.plans??[])}function Rp(n,i=50){const r=new URLSearchParams({limit:String(i),q:n});return da(`/api/debug/plans?${r}`).then(o=>o.plans??[])}function dS(n){const i=new URLSearchParams({limit:"50",plan_id:n});return da(`/api/debug/tasks?${i}`).then(r=>({tasks:r.tasks??[],runs:r.runs??[],total:r.total,truncated:r.truncated}))}function fS(n){return da(`/api/debug/plan/${encodeURIComponent(n)}/flow`)}function mS(){return da("/api/skill").then(n=>n.skills??[])}function hS(n,i){return da(`/api/skill/${encodeURIComponent(n)}/enabled`,{method:"POST",body:JSON.stringify({enabled:i})})}const pS=g0,gS=`${pS}/digital-assets`,hl=`${gS}/avatars`,yS="Asia/Shanghai",vS=["skill","browser","call","redial","evidence","decision","reporting"],bS=[{id:"all",label:"全部"},{id:"running",label:"执行中"},{id:"success",label:"已完成"},{id:"danger",label:"异常"}],Vg="sgrobot:digital-workday-guide-dismissed-date",_S=80,Mp=300,SS=[{title:"确认日期",body:"先确认今天的值班日期,避免把昨天或明天的任务混在一起。"},{title:"选择任务",body:"从岗位职责里勾选今天要执行的任务,未接入能力保持待扩展。"},{title:"任务执行",body:"点击任务执行后,数字员工开始按已选任务推进工作。"},{title:"查看过程",body:"右侧滚动显示运行明细,任务中心可继续查看明细。"}],xS={skill:{id:"skill",label:"查看Skill",shortLabel:"技能",phase:"查看Skill与计划",src:`${hl}/states/employee-idle.png`,bubble:"我正在查看可用Skill、任务计划和今天要勾选的执行内容。"},browser:{id:"browser",label:"操作浏览器",shortLabel:"浏览器",phase:"操作浏览器执行",src:`${hl}/states/employee-browser.png`,bubble:"我正在打开页面、读取信息、填写表单,并把执行过程同步到右侧。"},call:{id:"call",label:"电话外呼",shortLabel:"外呼",phase:"电话外呼与重拨",src:`${hl}/states/employee-running.png`,bubble:"我正在按工单名单外呼现场人员,记录接通、未接通和后续重拨。"},redial:{id:"redial",label:"重拨跟进",shortLabel:"重拨",phase:"未接通人员重拨",src:`${hl}/states/employee-redial.png`,bubble:"我正在跟进未接通人员,按间隔重拨并更新每个人的通知状态。"},evidence:{id:"evidence",label:"数据核验",shortLabel:"核验",phase:"核验执行证据",src:`${hl}/states/employee-evidence.png`,bubble:"我正在核验页面数据、执行证据和任务结果,确认交付内容可信。"},decision:{id:"decision",label:"等待决策",shortLabel:"决策",phase:"等待人工确认",src:`${hl}/states/employee-decision.png`,bubble:"我已完成前置处理,现在需要人工确认后再继续推进。"},reporting:{id:"reporting",label:"汇报成果",shortLabel:"汇报",phase:"汇报今日成果",src:`${hl}/states/employee-reporting.png`,bubble:"我正在整理运行明细和日报,方便你直接查看成果和异常。"}};function rd(){const n=new Date;return[n.getFullYear(),String(n.getMonth()+1).padStart(2,"0"),String(n.getDate()).padStart(2,"0")].join("-")}function jS(n){return(n||rd()).split("-").join("/")}function Pr(n){return n==="success"?"de-badge-success":n==="danger"?"de-badge-danger":n==="warning"||n==="running"?"de-badge-warning":"de-badge-info"}function wS(n,i){const r=["de-template-card-row","de-duty-card","de-duty-card--compact"];return n.implemented||r.push("de-duty-card--disabled"),i&&r.push("de-duty-card--selected"),n.statusTone==="running"&&r.push("de-duty-card--running"),r.join(" ")}function La(n){return String(n||"").replace(/\s+/g," ").trim()}function ES(n){if(!n)return"";if(n.expression)return n.expression;if(typeof n.schedule=="string")return n.schedule;if(n.schedule&&typeof n.schedule=="object"){const i=n.schedule,r=i.expr??i.expression??i.cron;if(typeof r=="string")return r}return""}function kS(n){const i=ES(n);if(!i)return"未定时";const r=i.trim().split(/\s+/),o=r[0]??"",d=r[1]??"";return r.length>=2&&/^\d+$/.test(o)&&/^\d+$/.test(d)?`已定时 ${d.padStart(2,"0")}:${o.padStart(2,"0")} 执行`:`调度注册 ${i}`}function pc(n,i){if(!n||typeof n!="object")return"";const r=n;for(const o of i){const d=r[o];if(typeof d=="string"&&d.trim())return d.trim()}return""}function mi(n){const i=La(n.template_id);if(i)return i;const r=pc(n.delivery,["template_id","plan_template_id","templateId"]);if(r)return r;const o=pc(n.schedule,["template_id","plan_template_id","templateId"]);return o||n.id.replace(/^schedule-/,"")}function NS(n,i,r){return n.has(i)||r?!0:Array.from(n).some(o=>js(o,i))}function js(n,i){return n.startsWith(`${i}-`)?/^-\d{8,}$/.test(n.slice(i.length)):!1}function TS(n,i,r){if(n.id===i||n.conversation_id===i||js(n.id,i)||n.conversation_id&&js(n.conversation_id,i))return!0;const o=La(r).toLowerCase();return!!(o&&La(n.title).toLowerCase()===o)}function Jg(n,i,r){const o=r.filter(d=>TS(d,n,i));return o.find(d=>d.selected)??o.find(d=>d.id===n||d.conversation_id===n)??o[0]??null}function AS(n,i){var r;return((r=Jg(n.id,n.title,i))==null?void 0:r.id)??n.id}function CS(n){return typeof n.step_count=="number"&&Number.isFinite(n.step_count)?n.step_count:Array.isArray(n.skill_ids)?n.skill_ids.length:0}function DS(n){const i=La(n.trigger_kind||pc(n.schedule,["kind"])).toLowerCase();return i==="cron"?"定时任务":i==="webhook"?"触发任务":"手动任务"}function zS(n,i,r){const o=mi(n),d=Jg(o,n.name,i),m=CS(n),p=Array.isArray(n.skill_ids)?n.skill_ids.length:m,v=(d==null?void 0:d.status)??n.last_status??(n.enabled?"plan_template":"disabled"),h=(d==null?void 0:d.status_label)??(n.enabled?DS(n):"已停用"),y=(d==null?void 0:d.status_tone)??(n.enabled?"info":"waiting");return{id:o,planId:o,title:La(n.name)||o,summary:La(n.prompt)||`任务:${o}`,implemented:n.enabled,selectable:!0,selected:r,status:v,statusLabel:h,statusTone:y,scheduleText:(d==null?void 0:d.schedule_text)??kS(n),resultText:(d==null?void 0:d.result_text)??`${m} 个步骤,${p} 个Skill`,conversationId:(d==null?void 0:d.conversation_id)??o,stepCount:m,taskCount:p,schedulerJob:n,source:"plan_template"}}function ec(n){return n.implemented}function tc(n){return n.implemented?"":"当前任务未接入执行能力。"}function RS(n,i){const r=`${n.conversation_id??""} ${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`;return r.includes(i.id)||r.includes(i.title)}function MS(n,i){const r=i.filter(h=>RS(h,n)),o=r.filter(wc).length,d=r.filter(Ec).length,m=r.filter(jc).length,p=Math.max(r.length-o-d-m,0),v=r.length>0?r[r.length-1]:void 0;return{id:n.id,plan_id:n.planId,title:n.title,description:n.summary,selected:!0,total_count:r.length,success_count:o,failure_count:d,running_count:m,waiting_count:p,latest_status_label:(v==null?void 0:v.status_label)??n.statusLabel,latest_status_tone:(v==null?void 0:v.status_tone)??n.statusTone,business_summary:r.length>0?`${n.title} 今日执行 ${r.length} 次,成功 ${o} 次,失败 ${d} 次。`:`${n.title} 尚未产生执行记录。`,ai_summary:r.length>0?`${n.title} 今日执行 ${r.length} 次,成功 ${o} 次,失败 ${d} 次。`:`${n.title} 尚未产生执行记录。`}}function OS(n,i){const r=n.plan_id??"";return n.id===i.id||r===i.planId||js(n.id,i.id)||js(r,i.planId)?!0:La(n.title).toLowerCase()===La(i.title).toLowerCase()}function LS(n){return{id:n.id,time:n.time,task_name:n.plan_title,step_name:n.step_title,operation_name:n.task_title,status_label:n.status_label,status_tone:n.status_tone,business_detail:sc(n),raw_detail:n.detail,updated_at:n.updated_at,conversation_id:n.conversation_id}}function Op(n){const[i="9",r="0"]=n.split(":"),o=Math.min(Math.max(Number(i)||9,0),23);return`${Math.min(Math.max(Number(r)||0,0),59)} ${o} * * *`}function Lp(n){return n.status_label||n.status||"已同步"}function gi(n){return String(n||"").replace(/\s+/g," ").trim()}function Fg(n){const r=`${n.plan_title} ${n.step_title??""}`.match(/(?:^|\D)(\d{1,2})[::](\d{2})(?:\D|$)/);return r!=null&&r[1]&&r[2]?`${r[1].padStart(2,"0")}:${r[2]}`:gi(n.time)||"即时触发"}function _l(n){const i=gi(n);if(!i)return"";const r=new Date(i);if(Number.isNaN(r.getTime()))return"";const o=new Intl.DateTimeFormat("zh-CN",{timeZone:yS,month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).formatToParts(r),d=m=>{var p;return((p=o.find(v=>v.type===m))==null?void 0:p.value)??""};return`${d("month")}/${d("day")} ${d("hour")}:${d("minute")}`}function Dd(n){const i=gi(n);return i?i.length>140?`${i.slice(0,140)}...`:i:""}function $S(n){var i;return n?!n.enabled||!n.endpoint||(((i=n.missingCredentials)==null?void 0:i.length)??0)>0?"warning":n.failed>0||n.lastSyncError?"danger":n.syncing||n.pending>0?"warning":n.lastSyncAt?"success":"info":"info"}function qS(n){var i;return n?n.enabled?n.endpoint?(((i=n.missingCredentials)==null?void 0:i.length)??0)>0?"缺少凭据":n.syncing?"同步中":n.failed>0||n.lastSyncError?"同步异常":n.pending>0?"待同步":n.lastSyncAt?"已同步":"等待数据":"未配置":"已停用":"未连接"}function US(n){var r,o;if(!n)return"当前环境未连接 qimingclaw 同步桥。";if(!n.enabled)return"管理端同步已停用。";if(!n.endpoint)return"管理端同步地址未配置。";if((((r=n.missingCredentials)==null?void 0:r.length)??0)>0)return`管理端同步凭据未完整:${(o=n.missingCredentials)==null?void 0:o.join("、")}`;const i=Dd(n.lastSyncError);if(n.failed>0||i){const d=n.failureSummary?[n.failureSummary.dueForRetry>0?`${n.failureSummary.dueForRetry} 条可重试`:"",n.failureSummary.backoff>0?`${n.failureSummary.backoff} 条退避中`:"",BS(n.failureSummary)].filter(Boolean).join(","):"";return[n.failed>0?`${n.failed} 条失败`:"",n.pending>0?`${n.pending} 条待同步`:"",d,i?`失败原因:${i}`:""].filter(Boolean).join(",")}return n.syncing?`正在同步,待同步 ${n.pending} 条。`:n.pending>0?`仍有 ${n.pending} 条待同步记录。`:n.lastSyncAt?`最近同步:${_l(n.lastSyncAt)||n.lastSyncAt}`:"等待本地 outbox 数据。"}function bs(n){return{plan:"Plan",task:"Task",run:"Run",event:"Event",artifact:"Artifact",approval:"Approval"}[n]||n||"Entity"}function BS(n){const i=n.byEntityType.slice(0,3).map(r=>`${bs(r.entityType)} ${r.count}`).join(" / ");return i?`类型:${i}`:""}function HS(n){const i=Dd(n.error);return[`${bs(n.entityType)} / ${n.operation}`,`重试 ${n.attempts} 次`,n.dueForRetry?"等待补偿":`下次 ${Wg(n)}`,i].filter(Boolean).join(" · ")}function $p(n){return _l(n.lastAttemptAt||n.updatedAt||n.createdAt)||"未尝试"}function Wg(n){return n.dueForRetry?"可重试":_l(n.nextRetryAt)||"待计算"}function YS(n){return n==="synced"?"已同步":n==="failed"?"失败":n||"未知"}function GS(n){return n==="synced"?"success":n==="failed"?"danger":"info"}function qp(n,i){return JSON.stringify({generatedAt:new Date().toISOString(),source:"qimingclaw-digital-employee",failure:n,sync:i?{running:i.running,syncing:i.syncing,enabled:i.enabled,endpoint:i.endpoint,missingCredentials:i.missingCredentials??[],pending:i.pending,failed:i.failed,lastSyncAt:i.lastSyncAt,lastSyncError:i.lastSyncError,failureSummary:i.failureSummary??null}:null},null,2)}function QS(n){return`qimingclaw-sync-failure-${[n.entityType,n.entityId].filter(Boolean).join("-").replace(/[^a-z0-9._-]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,80)||n.id||"diagnostic"}.json`}function Up(n,i,r="application/json;charset=utf-8"){const o=new Blob([i],{type:r}),d=URL.createObjectURL(o),m=document.createElement("a");m.href=d,m.download=n,document.body.appendChild(m),m.click(),m.remove(),window.setTimeout(()=>URL.revokeObjectURL(d),1e3)}function XS(n){return`qimingclaw-digital-report-${n}.txt`}function KS(n,i,r,o){return[i.title||`${n} 数字员工日报`,`日期:${n}`,`生成时间:${i.generated_at?_l(i.generated_at):"暂未生成"}`,`生成来源:${i.generated_by==="ai"?"AI":"qimingclaw adapter"}`,"","## 摘要",i.summary||"暂无摘要。","","## 指标",`任务总数:${i.totals.task_count}`,`执行次数:${i.totals.execution_count}`,`成功次数:${i.totals.success_count}`,`失败次数:${i.totals.failure_count}`,`运行中:${i.totals.running_count??0}`,"","## 任务汇总",...r.length>0?r.map(d=>`- ${d.title}:${d.latest_status_label},执行 ${d.total_count} 次,成功 ${d.success_count},失败 ${d.failure_count}。${d.ai_summary||d.business_summary||""}`):["暂无任务汇总。"],"","## 运行明细",...o.length>0?o.map(d=>`- ${d.time||"--:--"} ${d.task_name} / ${d.step_name||d.operation_name||"任务执行"}:${d.status_label},${d.business_detail}`):["暂无运行明细。"],"","## 详情",...(i.detail_lines??[]).length>0?i.detail_lines:["暂无详情。"]].join(` -`)}async function ZS(){var i;const n=(i=window.QimingClawBridge)==null?void 0:i.digital;if(!(n!=null&&n.getSyncStatus))return null;try{return await n.getSyncStatus()}catch{return null}}function Ig(n){const i=_l(n.updated_at);return i||gi(n.time)||"待同步"}function VS(n){return _l(n.updated_at)||gi(n.time)||"--:--"}function sc(n){const i=gi(n.detail).replace(/^触发来源[::]\s*$/u,"").replace(/触发来源[::]\s*(?=。|,|,|;|;|$)/u,"").trim();return i?/^runner unavailable/i.test(i)?"执行链路异常,点击查看详情。":i.length>72?`${i.slice(0,72)}...`:i:wc(n)?"真实事件已完成,结果详情未回传。":jc(n)?"真实事件执行中,等待结果回传。":Ec(n)?"执行异常,点击查看详情。":"结果详情待同步。"}function Bp(n){return`计划时间 ${Fg(n)} · 执行时间 ${Ig(n)}`}function JS(n,i){return i==="all"?!0:i==="running"?jc(n):i==="success"?wc(n):Ec(n)}function FS(n){return new Set(n.duties.filter(i=>i.selected).map(i=>i.id))}function Xo(n){return["pending","requested"].includes(String(n||"").toLowerCase())}function Hp(n){if(!(n instanceof Element))return!1;if(n.closest('button, a, input, select, textarea, [role="tab"]'))return!0;const i=n.closest('[role="button"]');return!!(i&&!i.classList.contains("de-workday-execution--clickable"))}function WS(n,i){return n.length<=4?n:n.slice(i).concat(n.slice(0,i)).slice(0,4)}function jc(n){const i=`${n.status} ${n.status_tone}`.toLowerCase();return i.includes("running")||i.includes("execut")||i.includes("progress")}function wc(n){const i=`${n.status} ${n.status_tone}`.toLowerCase();return i.includes("success")||i.includes("complete")||i.includes("done")}function Ec(n){const i=`${n.status} ${n.status_tone}`.toLowerCase();return i.includes("danger")||i.includes("fail")||i.includes("error")||i.includes("异常")}function IS(n){const i=`${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`.toLowerCase();return["外呼","电话","拨打","接通","未接通","重拨","人员"].some(r=>i.includes(r))}function PS(n){const i=`${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`.toLowerCase();return["重拨","未接通","再拨","回拨","retry","callback"].some(r=>i.includes(r))}function ex(n){const i=`${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`.toLowerCase();return["核验","校验","证据","汇总","报告","结果","交付","看板","同步"].some(r=>i.includes(r))}function tx(){if(typeof window>"u")return null;const n=new URLSearchParams(window.location.search).get("visual");return vS.includes(n)?n:null}function ax(n){return PS(n)?"redial":IS(n)?"call":ex(n)?"evidence":"browser"}function nx(n){return n.currentEvent?ax(n.currentEvent):!n.confirmed&&n.eventsCount===0?"skill":n.pendingDecisionCount>0?"decision":n.eventsCount>0?"browser":"skill"}function lx(){if(typeof window>"u")return null;try{return window.sessionStorage.getItem(Vg)}catch{return null}}function ix(n){if(!(typeof window>"u"))try{window.sessionStorage.setItem(Vg,n)}catch{}}function sx({onNavigate:n}){var Rl,Ml,Xa;const[i,r]=b.useState(rd()),[o,d]=b.useState(null),[m,p]=b.useState([]),[v,h]=b.useState(new Set),[y,E]=b.useState(!0),[S,k]=b.useState(null),[R,T]=b.useState(null),[L,O]=b.useState(null),[G,I]=b.useState(null),[F,ne]=b.useState(!1),[ie,he]=b.useState("selected"),[Z,ee]=b.useState(0),[Te,rt]=b.useState(!1),[Ze,de]=b.useState(!1),[X,se]=b.useState(!1),[H,D]=b.useState(null),[Y,te]=b.useState("all"),[fe,be]=b.useState(!1),[j,$]=b.useState(null),[K,W]=b.useState(null),[re,pe]=b.useState("09:00"),[ke,We]=b.useState(!1),[Q,V]=b.useState(!1),[ve,Me]=b.useState(null),[Ie,ct]=b.useState({name:"",company:"",position:"",currentStatus:"working"}),[Tt,Oe]=b.useState("18:00"),[jt,qa]=b.useState(!1),[Gn,vi]=b.useState(()=>lx()),[vt,Ts]=b.useState(null),Ne=b.useRef(!1),ht=b.useRef(!1);b.useEffect(()=>(Ne.current=!0,()=>{Ne.current=!1}),[]);const ja=b.useCallback(async()=>{let _=null,J=null;const ue=()=>{if(ht.current||!J)return;const et=(_==null?void 0:_.source)==="live"?FS(_):new Set,zt=J.map(ea=>mi(ea)).filter(ea=>NS(et,ea)),$t=zt.length>0?zt:J.slice(0,3).map(ea=>mi(ea));h(new Set($t))},Qe=ic(i).then(et=>{Ne.current&&(_=et,d(et),O(null),ue())}).catch(et=>{Ne.current&&O(et instanceof Error?et.message:"数字员工首页数据同步失败")}),lt=cS().then(et=>{Ne.current&&(J=et.filter(zt=>zt.job_type==="plan_template"||pc(zt.delivery,["mode"])==="plan_template"),p(J),I(null),ue())}).catch(et=>{Ne.current&&I(et instanceof Error?et.message:"任务加载失败")}),kt=ZS().then(et=>{Ne.current&&Ts(et)});await Promise.allSettled([Qe,lt,kt]),Ne.current&&E(!1)},[i]);b.useEffect(()=>{E(!0),ja()},[ja]),b.useEffect(()=>{const _=o!=null&&o.workday.confirmed?8e3:3e4,J=window.setInterval(()=>{ja()},_);return()=>window.clearInterval(J)},[ja,o==null?void 0:o.workday.confirmed]),b.useEffect(()=>{if(Te||Ze||X||H!==null)return;const J=window.setInterval(()=>{ee(ue=>{const Qe=(o==null?void 0:o.source)==="live"?o.events.length:0;return Qe>0?(ue+1)%Qe:0})},3200);return()=>window.clearInterval(J)},[X,Ze,Te,H,o==null?void 0:o.events.length,o==null?void 0:o.source]);const wa=(o==null?void 0:o.source)==="live",Qn=b.useMemo(()=>wa?(o==null?void 0:o.duties)??[]:[],[wa,o==null?void 0:o.duties]),Mt=b.useMemo(()=>m.slice().sort((_,J)=>{const ue=mi(_),Qe=mi(J),lt=v.has(ue)?1:0,kt=v.has(Qe)?1:0;if(lt!==kt)return kt-lt;const et=new Date(_.next_run||"").getTime(),zt=new Date(J.next_run||"").getTime(),$t=Number.isFinite(et),ea=Number.isFinite(zt);return $t!==ea?$t?-1:1:$t&&ea&&et!==zt?et-zt:La(_.name).localeCompare(La(J.name),"zh-CN")}).map(_=>{const J=mi(_);return zS(_,Qn,v.has(J))}),[Qn,m,v]),At=b.useMemo(()=>Mt.filter(_=>v.has(_.id)),[Mt,v]),Xn=b.useMemo(()=>At.map(_=>AS(_,Qn)),[Qn,At]),Ua=Mt,Kn=Mt.filter(_=>!v.has(_.id)),Ba=ie==="selected"?At:ie==="pending"?Kn:Ua,He=wa?(o==null?void 0:o.events)??[]:[],Ea=WS(He,Z),wt=He,mn=(wa?(o==null?void 0:o.decisions)??[]:[]).filter(_=>Xo(_.status)),Tc=Te||Ze||X||H!==null,bi=b.useMemo(()=>He.filter(_=>JS(_,Y)),[He,Y]),Sl=bi.slice(0,Mp),xl=He.filter(jc),jl=He.filter(wc),Ha=He.filter(Ec),Ot=Ea[0]??xl[0]??null,ze=o==null?void 0:o.employee,we=o==null?void 0:o.workday,wl=o==null?void 0:o.delivery,oe=wa?o==null?void 0:o.daily_report:void 0,hn=wa?(Rl=o==null?void 0:o.run_details)!=null&&Rl.length?o.run_details:He.map(LS):[],Zn=hn.slice(0,_S),As=wa?(o==null?void 0:o.execution_summaries)??[]:[],fa=At.map(_=>As.find(J=>OS(J,_))??MS(_,He)),ka=jS(i),_i=ie==="all"?"全部任务":ie==="pending"?"待选择任务":"今日已选任务",Si=ie==="all"?`总任务 ${Ua.length} 项,不代表当天都会执行。`:ie==="pending"?`当前日期 ${ka} 还有 ${Kn.length} 项未选择。`:`当前日期 ${ka} 已选择 ${At.length} 项任务。`,Ct=(oe==null?void 0:oe.status)==="ready"?oe.totals:null,Cs=(Ct==null?void 0:Ct.task_count)??fa.length,Na=(Ct==null?void 0:Ct.execution_count)??fa.reduce((_,J)=>_+J.total_count,0),pt=(Ct==null?void 0:Ct.success_count)??fa.reduce((_,J)=>_+J.success_count,0),Et=(Ct==null?void 0:Ct.failure_count)??fa.reduce((_,J)=>_+J.failure_count,0),Ta=oe?[oe.summary,...oe.detail_lines??[]].filter(_=>!!(_&&_.trim())):[],El=(oe==null?void 0:oe.status)==="ready"&&Ta.length>0,Ds=(we==null?void 0:we.current_status)??(ze==null?void 0:ze.current_status)??"working",Ac=(we==null?void 0:we.current_status_label)??(ze==null?void 0:ze.current_status_label)??(Ds==="resting"?"休息中":"工作中"),kl=Ds==="resting",pn=(o==null?void 0:o.source)==="demo",Vn=pn?"演示兜底":"真实数据",Ya=pn?"de-badge-warning":"de-badge-success",Ga=$S(vt),Jn=qS(vt),Qa=US(vt),ut=Dd(vt==null?void 0:vt.lastSyncError),xi=(vt==null?void 0:vt.recentFailures)??[],zs=nx({confirmed:!!(we!=null&&we.confirmed),currentEvent:Ot,pendingDecisionCount:mn.length,eventsCount:He.length}),Aa=tx(),Wn=xS[Aa??zs],Rs=Aa||Ot||mn.length>0?Wn.bubble:(we==null?void 0:we.bubble_text)??Wn.bubble,Ms=Ua.length>0?`已加载 ${Ua.length} 项任务,当前选择 ${At.length} 项;右侧展示真实执行状态、运行明细和日报。`:(we==null?void 0:we.summary)??"等待同步当天任务计划。",Cc=(Ot==null?void 0:Ot.task_title)??(we!=null&&we.confirmed?"等待下一条执行事件":"等待确认任务设置"),Nl=Ot?`${Ot.plan_title}:${sc(Ot)}(${Bp(Ot)})`:"任务执行后会显示正在处理的任务、步骤或汇总动作。",Tl=mn[0]?`等待人工确认:${mn[0].title}`:we!=null&&we.confirmed?(wl==null?void 0:wl.lines[0])??"继续按计划轮询新工单,并把结果同步到运行明细。":"请先确认今天要执行的任务,确认后数字员工会开始执行。",ma=!!(o&&!(we!=null&&we.confirmed));b.useEffect(()=>{if(!(y||!o)&&o.workday.confirmed){qa(!1);return}},[Gn,y,i,o]),b.useEffect(()=>{ze&&ct({name:ze.name||"",company:ze.company||"",position:ze.position||ze.major||"",currentStatus:ze.current_status||(we==null?void 0:we.current_status)||"working"})},[ze,we==null?void 0:we.current_status]),b.useEffect(()=>{Oe((oe==null?void 0:oe.report_schedule_time)||"18:00")},[oe==null?void 0:oe.report_schedule_time]),b.useEffect(()=>{V(!1)},[i]);const Dt=b.useCallback(_=>{!_.selectable||!_.implemented||(h(J=>{const ue=new Set(J);return ue.has(_.id)?ue.delete(_.id):ue.add(_.id),ue}),ht.current=!0,ne(!0),T(null))},[]),ji=b.useCallback(async()=>{if(v.size===0){O("请至少选择一项今天要执行的任务。");return}if(kl){O("当前状态为休息中,请切换为工作中后再执行任务。");return}k("confirm_workday"),O(null),T(null);try{const _=await gl({action:"confirm_workday",date:i,duty_ids:Xn});if(!Ne.current)return;d(_),h(new Set(v)),ht.current=!0,ne(!1),qa(!1),T("任务设置已确认,数字员工开始按任务执行。")}catch(_){Ne.current&&O(_ instanceof Error?_.message:"确认任务设置失败")}finally{Ne.current&&k(null)}},[kl,i,v,Xn]),Os=b.useCallback(async()=>{var _;k("flush_management_sync"),O(null),T(null);try{const J=(_=window.QimingClawBridge)==null?void 0:_.digital;if(!(J!=null&&J.flushSync)){T("当前环境未连接 qimingclaw 同步桥。");return}const ue=await J.flushSync();if(!Ne.current)return;Ts(ue);const Qe=await ic(i);if(!Ne.current)return;d(Qe);const lt=ue.failed>0?`同步完成,仍有 ${ue.failed} 条失败记录。`:ue.pending>0?`同步完成,仍有 ${ue.pending} 条待同步记录。`:"管理端同步完成。";T(lt)}catch(J){Ne.current&&O(J instanceof Error?J.message:"同步管理端失败")}finally{Ne.current&&k(null)}},[i]),wi=b.useCallback(async _=>{const J=qp(_,vt);try{await navigator.clipboard.writeText(J),O(null),T("同步失败诊断已复制。")}catch(ue){T(null),O(ue instanceof Error?ue.message:"复制同步失败诊断失败")}},[vt]),Ls=b.useCallback(_=>{Up(QS(_),qp(_,vt)),O(null),T("同步失败诊断已导出。")},[vt]),Al=b.useCallback(()=>{h(new Set),ht.current=!0,ne(!0),T("已一键取消当前选择,重新选择后点击任务执行生效。"),O(null)},[]),Dc=b.useCallback(async()=>{k("update_profile"),O(null),T(null);try{const _=await gl({action:"update_profile",date:i,name:Ie.name,company:Ie.company,position:Ie.position,current_status:Ie.currentStatus});if(!Ne.current)return;d(_),We(!1),T("数字员工特性设置已保存。")}catch(_){Ne.current&&O(_ instanceof Error?_.message:"保存特性设置失败")}finally{Ne.current&&k(null)}},[Ie,i]),Lt=b.useCallback(async()=>{k("update_report_schedule"),O(null),T(null);try{const _=await gl({action:"update_report_schedule",date:i,report_schedule_time:Tt});if(!Ne.current)return;d(_),T(`日报生成时间已设置为 ${Tt}。`)}catch(_){Ne.current&&O(_ instanceof Error?_.message:"设置日报时间失败")}finally{Ne.current&&k(null)}},[Tt,i]),Ei=b.useCallback(async()=>{var _,J;k("generate_daily_report"),O(null),T(null);try{const ue=await gl({action:"generate_daily_report",date:i,duty_ids:Xn,report_schedule_time:Tt});if(!Ne.current)return;const Qe=((_=ue.daily_report)==null?void 0:_.status)==="ready"?ue:await ic(i);if(!Ne.current)return;d(Qe),T("日报已生成,可下载本地文本。"),((J=Qe.daily_report)==null?void 0:J.status)==="ready"&&V(!0)}catch(ue){Ne.current&&O(ue instanceof Error?ue.message:"生成日报失败")}finally{Ne.current&&k(null)}},[Tt,i,v,Xn]),ki=b.useCallback(()=>{!oe||oe.status!=="ready"||(Up(XS(i),KS(ka,oe,fa,Zn),"text/plain;charset=utf-8"),T("日报文本已下载。"))},[oe,i,ka,fa,Zn]),Ni=b.useCallback(async(_,J)=>{var ue;k(`${_.id}:${J}`),O(null),T(null);try{const Qe=await gl({action:"decide_approval",date:i,decision_id:_.id,decision:J});if(!Ne.current)return;const lt=((ue=_.actions.find(kt=>kt.id===J))==null?void 0:ue.label)??J;d(Qe),T(`已记录“${lt}”处理结果,并写入 qimingclaw 本地运行状态。`)}catch(Qe){Ne.current&&O(Qe instanceof Error?Qe.message:"处理决策失败")}finally{Ne.current&&k(null)}},[i]),ha=b.useCallback(_=>{n({tab:"missions",date:i,missionId:_.conversationId||_.id})},[n,i]),$s=b.useCallback(async _=>{const J=Op(re),ue=Date.now(),Qe=`digital-home-${_.planId}-${re.replace(":","")}`;k(`schedule:${_.id}`),O(null),T(null);try{const lt=await Zg({command_kind:"create_schedule",context_refs:{plan_id:_.planId,schedule_id:Qe},payload:{source:"digital-home",plan_id:_.planId,name:`定时执行:${_.title}`,description:`按首页任务管理定时任务:${_.title}`,prompt:`请按计划执行:${_.title}。${_.summary}`,cron_expr:J,schedule:J},correlation_id:`digital-home-create-schedule-${_.planId}-${ue}`,idempotency_key:`digital-home-create-schedule-${_.planId}-${re}-${ue}`});if(!lt.accepted)throw new Error(lt.message||`调度命令未被接受:${lt.command_id||"create_schedule"}`);$(null),T(`已提交定时:${_.title},${re} 按 cron 计划执行。`),await ja()}catch(lt){Ne.current&&O(lt instanceof Error?lt.message:"定时执行失败")}finally{Ne.current&&k(null)}},[ja,re]),qs=b.useCallback(async _=>{var J;if(!ec(_)){O(tc(_)),T(null);return}k(`execute:${_.id}`),O(null),T(null);try{const ue=await uS(_.planId);if(ue.ok!==!0)throw new Error(ue.error||"执行接口未接受请求");const Qe=((J=ue.dispatched_tasks)==null?void 0:J.length)??0;W(null),T(`已触发执行:${_.title},已派发 ${Qe} 个步骤。`),await ja()}catch(ue){Ne.current&&O(ue instanceof Error?ue.message:"执行失败")}finally{Ne.current&&k(null)}},[ja]),Ca=b.useCallback(()=>{qa(!1),vi(i),ix(i)},[i]),Us=b.useCallback((_,J)=>{const ue=v.has(_.id),Qe=tc(_);return c.jsxs("div",{className:`${wS(_,ue)} ${J==="guide"?"de-duty-card--guide":""}`,title:_.summary,children:[c.jsxs("label",{className:"de-task-manager-duty-check",children:[c.jsx("input",{type:"checkbox",checked:ue,disabled:!_.selectable||!_.implemented,onChange:()=>Dt(_)}),c.jsx("span",{children:ue?"已选":_.implemented?"未选":"待扩展"})]}),c.jsxs("div",{className:"de-template-card-main",children:[c.jsxs("div",{className:"de-template-card-head",children:[c.jsx("span",{className:"de-template-card-name",children:_.title}),c.jsx("span",{className:`de-badge ${Pr(_.statusTone)}`,children:_.implemented?_.statusLabel:"待扩展"})]}),c.jsx("p",{className:"de-template-card-desc",children:_.summary}),c.jsxs("div",{className:"de-template-card-meta",children:[c.jsx("span",{children:_.scheduleText}),c.jsx("span",{children:_.resultText})]}),c.jsxs("div",{className:"de-duty-card-foot",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:!_.implemented,onClick:()=>ha(_),children:"进入处理"}),c.jsxs("div",{className:"de-duty-card-actions",children:[c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:!_.implemented||S===`schedule:${_.id}`,onClick:()=>$(_),children:[c.jsx(Ap,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"定时"})]}),c.jsxs("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:!_.implemented||S===`execute:${_.id}`,title:Qe||"立即执行此任务",onClick:()=>W(_),children:[c.jsx(Tp,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"执行"})]})]}),!_.implemented&&c.jsx("span",{className:"de-duty-selected-mark",children:"待扩展"})]})]})]},`${J}-${_.id}`)},[S,ha,v,Dt]),Bs=b.useCallback(_=>{D(_),de(!0)},[]),Cl=b.useCallback(()=>{D(null),de(!1)},[]),Dl=b.useCallback(()=>{se(!1),de(!1)},[]),gn=b.useCallback(()=>{se(!0),de(!0)},[]),zc=b.useCallback(_=>{Hp(_.target)||gn()},[gn]),zl=b.useCallback(_=>{_.key!=="Enter"&&_.key!==" "||Hp(_.target)||(_.preventDefault(),gn())},[gn]),pa=b.useCallback(_=>{D(null),se(!1),de(!1),n({tab:"missions",date:i,missionId:_.conversation_id||_.id})},[n,i]);return c.jsxs("div",{className:"de-dashboard de-dashboard--compact",style:{position:"relative",height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[c.jsx("div",{className:"de-connection-layer","aria-hidden":"true",children:c.jsxs("svg",{className:"de-connection-svg",viewBox:"0 0 1200 800",preserveAspectRatio:"none",children:[c.jsxs("defs",{children:[c.jsxs("linearGradient",{id:"connGrad1",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[c.jsx("stop",{offset:"0%",stopColor:"rgba(79,172,254,0.25)"}),c.jsx("stop",{offset:"100%",stopColor:"rgba(0,242,254,0.1)"})]}),c.jsx("filter",{id:"connGlow",children:c.jsx("feGaussianBlur",{stdDeviation:"3"})})]}),c.jsx("path",{d:"M 80 180 Q 420 400, 580 350",stroke:"url(#connGrad1)",strokeWidth:"1.5",fill:"none",filter:"url(#connGlow)"}),c.jsx("path",{d:"M 120 620 Q 380 400, 560 380",stroke:"url(#connGrad1)",strokeWidth:"1.2",fill:"none",filter:"url(#connGlow)"}),c.jsx("path",{d:"M 640 360 Q 780 200, 1100 160",stroke:"url(#connGrad1)",strokeWidth:"1.3",fill:"none",filter:"url(#connGlow)"})]})}),c.jsxs("div",{className:"de-dashboard-content",children:[c.jsxs("div",{className:"de-dashboard-left",children:[c.jsxs("div",{className:"de-card de-person-card de-person-card--compact",children:[c.jsxs("div",{className:"de-card-title-bar",children:[c.jsx("span",{className:"de-card-title-bar-text",children:"数字员工"}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>We(!0),children:"特性设置"})]}),c.jsx("div",{className:"de-card-body",children:c.jsxs("div",{className:"de-info-grid",children:[c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"姓名"}),c.jsx("span",{children:(ze==null?void 0:ze.name)??"同步中"})]}),c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"单位"}),c.jsx("span",{children:(ze==null?void 0:ze.company)??"同步中"})]}),c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"岗位"}),c.jsx("span",{children:(ze==null?void 0:ze.position)??(ze==null?void 0:ze.major)??"同步中"})]}),c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"当前状态"}),c.jsx("span",{className:kl?"de-status-resting":"de-status-working",children:Ac})]})]})})]}),c.jsxs("div",{className:"de-card de-template-manager-card",children:[c.jsx("div",{className:"de-card-title-bar",children:c.jsx("span",{className:"de-card-title-bar-text",children:"任务设置"})}),c.jsxs("div",{className:"de-card-body de-template-manager-body",children:[c.jsxs("div",{className:"de-workday-toolbar",children:[c.jsxs("label",{children:[c.jsx("span",{children:"日期"}),c.jsx("input",{type:"date",value:i,onChange:_=>{ht.current=!1,ne(!1),T(null),r(_.target.value||rd())}})]}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:y,onClick:()=>be(!0),children:"任务设置"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:y||S==="flush_management_sync",onClick:Os,title:"立即同步数字员工本地状态到管理端",children:[c.jsx(u0,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:S==="flush_management_sync"?"同步中...":"同步管理端"})]})]}),c.jsxs("div",{className:`de-management-sync-strip de-management-sync-strip--${Ga}`,title:ut||Qa,children:[c.jsx("span",{className:`de-badge ${Pr(Ga)}`,children:Jn}),c.jsx("span",{children:Qa})]}),xi.length>0&&c.jsx("div",{className:"de-management-sync-failures","aria-label":"同步失败明细",children:xi.map(_=>c.jsxs("button",{type:"button",className:"de-management-sync-failure",title:_.error||_.id,onClick:()=>Me(_),children:[c.jsx("span",{children:$p(_)}),c.jsx("strong",{children:bs(_.entityType)}),c.jsx("em",{children:_.id}),c.jsx("small",{children:HS(_)})]},_.id))}),(R||L||G||(o==null?void 0:o.demo_reason))&&c.jsx("div",{className:`de-schedule-result ${L?"de-schedule-result--error":"de-schedule-result--success"}`,style:{marginBottom:10},children:L||R||G||(o==null?void 0:o.demo_reason)}),F&&!R&&!L&&c.jsx("div",{className:"de-schedule-result de-schedule-result--success",style:{marginBottom:10},children:"当前选择尚未确认,自动刷新不会覆盖你的勾选。"}),c.jsxs("div",{className:"de-template-overview",children:[c.jsxs("button",{type:"button",className:`de-template-overview-item de-template-overview-item--total ${ie==="all"?"active":""}`,onClick:()=>he("all"),children:[c.jsx("span",{className:"de-template-overview-label",children:"总任务"}),c.jsx("span",{className:"de-template-overview-value",children:Ua.length})]}),c.jsxs("button",{type:"button",className:`de-template-overview-item de-template-overview-item--scheduled ${ie==="selected"?"active":""}`,onClick:()=>he("selected"),children:[c.jsx("span",{className:"de-template-overview-label",children:"已选择"}),c.jsx("span",{className:"de-template-overview-value",children:At.length})]}),c.jsxs("button",{type:"button",className:`de-template-overview-item de-template-overview-item--runnable ${ie==="pending"?"active":""}`,onClick:()=>he("pending"),children:[c.jsx("span",{className:"de-template-overview-label",children:"待选择"}),c.jsx("span",{className:"de-template-overview-value",children:Kn.length})]})]}),c.jsxs("div",{className:"de-task-date-context",children:[c.jsxs("span",{children:["当前日期 ",ka]}),c.jsx("em",{children:Si}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:Al,disabled:At.length===0,children:"一键取消"})]}),c.jsxs("div",{className:"de-task-manager-preview de-task-manager-preview-scroll de-template-task-list",children:[c.jsxs("div",{className:"de-task-manager-preview-head",children:[c.jsx("span",{children:ka}),c.jsxs("strong",{children:[_i," ",Ba.length]})]}),y?c.jsx("div",{className:"de-loading-skeleton",style:{height:96}}):Mt.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无任务,首页不会再展示硬编码任务。"}):Ba.length===0?c.jsx("p",{className:"de-empty-text",children:"当前筛选下暂无任务,点击总任务查看全部内容。"}):Ba.map(_=>c.jsxs("div",{className:`de-task-manager-preview-row ${v.has(_.id)?"is-selected":""}`,title:_.summary,children:[c.jsxs("button",{type:"button",className:"de-template-task-main",onClick:()=>ha(_),children:[c.jsx("strong",{children:_.title}),c.jsx("span",{children:_.resultText})]}),c.jsxs("div",{className:"de-template-item-actions",children:[c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:!_.implemented||S===`schedule:${_.id}`,onClick:()=>$(_),children:[c.jsx(Ap,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"定时"})]}),c.jsxs("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:!_.implemented||S===`execute:${_.id}`,title:tc(_)||"立即执行此任务",onClick:()=>W(_),children:[c.jsx(Tp,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"执行"})]})]})]},_.id))]})]})]})]}),c.jsxs("div",{className:"de-dashboard-center",style:{justifyContent:"center",padding:"0 0 16px",overflow:"visible"},children:[c.jsx("div",{className:"de-avatar-wrapper",style:{minHeight:470,maxWidth:560,transform:"translateY(-6px)",display:"flex",alignItems:"flex-end",justifyContent:"center"},children:c.jsx(p0,{avatarSrc:Wn.src,altText:`数字员工-${Wn.label}`,statusLabel:Wn.label})}),c.jsxs("div",{className:"de-speech-bubble de-speech-bubble--employee",style:{top:"38%",left:"29%",right:"auto",transform:"translateX(-50%)",width:268,padding:"10px 12px",zIndex:16},children:[c.jsx("span",{className:"de-speech-label",children:"数字员工播报"}),c.jsx("p",{className:"de-speech-text",children:Rs}),c.jsxs("button",{type:"button",className:"de-speech-workflow de-execution-detail-trigger",onClick:gn,title:"打开运行明细",children:[c.jsx("span",{children:"当前动作"}),c.jsx("strong",{children:Cc}),c.jsx("small",{children:Nl}),c.jsx("span",{children:"下一步"}),c.jsx("small",{children:Tl})]})]})]}),c.jsx("div",{className:"de-dashboard-right",children:c.jsxs("div",{className:"de-right-panels",children:[c.jsxs("div",{className:"de-workbench de-workday-execution de-workday-execution--clickable",role:"button",tabIndex:0,"aria-label":"打开运行明细",title:"打开运行明细",onClick:zc,onKeyDown:zl,children:[c.jsxs("div",{className:"de-card-title-bar de-workbench-head de-workbench-head--bar",children:[c.jsx("div",{className:"de-workbench-title-row",children:c.jsx("h3",{children:"今日执行"})}),c.jsx("span",{className:`de-badge ${Ya}`,children:Vn})]}),c.jsxs("div",{className:"de-workday-execution-body","aria-live":"polite",children:[c.jsxs("div",{className:"de-execution-status-strip",children:[c.jsxs("span",{children:[c.jsx("em",{children:"已选任务"}),c.jsx("strong",{children:At.length})]}),c.jsxs("span",{children:[c.jsx("em",{children:"运行记录"}),c.jsx("strong",{children:wt.length})]}),c.jsxs("span",{children:[c.jsx("em",{children:"已完成"}),c.jsx("strong",{children:jl.length})]}),c.jsxs("span",{children:[c.jsx("em",{children:"异常"}),c.jsx("strong",{children:Ha.length})]})]}),c.jsx("div",{className:"de-task-summary-scroll",children:c.jsx("div",{className:"de-task-summary-grid","aria-label":"任务执行汇总",children:fa.length===0?c.jsx("p",{className:"de-empty-text",children:"左侧选择任务后,这里会按任务生成执行次数和成功情况。"}):fa.map(_=>c.jsxs("button",{type:"button",className:`de-task-summary-card de-live-feed-row--${_.latest_status_tone||"info"}`,onClick:()=>ha(At.find(J=>J.id===_.id)??At[0]),title:[_.description,_.ai_summary||_.business_summary].filter(Boolean).join(` -`),children:[c.jsx("span",{className:"de-task-summary-title",children:_.title}),c.jsx("span",{className:`de-badge ${Pr(_.latest_status_tone)}`,children:_.latest_status_label}),c.jsxs("div",{className:"de-task-summary-counts",children:[c.jsxs("span",{children:[c.jsx("em",{children:"执行"}),c.jsx("strong",{children:_.total_count})]}),c.jsxs("span",{children:[c.jsx("em",{children:"成功"}),c.jsx("strong",{children:_.success_count})]}),c.jsxs("span",{children:[c.jsx("em",{children:"失败"}),c.jsx("strong",{children:_.failure_count})]})]})]},_.id))})}),c.jsxs("div",{className:"de-stage-feed-tools",children:[c.jsxs("span",{children:["展示 ",wt.length," / 共 ",He.length," 条",Tc?" · 已暂停":" · 自动滚动"]}),c.jsxs("div",{children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>rt(_=>!_),children:Te?"继续滚动":"暂停滚动"}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:gn,children:"查看全部记录"})]})]}),c.jsxs("div",{className:"de-run-detail-panel",children:[c.jsxs("div",{className:"de-run-detail-head",children:[c.jsx("span",{children:"运行明细"}),c.jsxs("small",{children:["展示 ",Zn.length," / 共 ",hn.length," 条"]})]}),c.jsxs("div",{className:"de-run-detail-list de-run-detail-list-scroll","aria-label":"运行明细",children:[c.jsxs("div",{className:"de-run-detail-row de-run-detail-row--head",children:[c.jsx("span",{children:"时间"}),c.jsx("span",{children:"任务名称"}),c.jsx("span",{children:"步骤名称"}),c.jsx("span",{children:"执行状态"}),c.jsx("span",{children:"结果"})]}),Zn.length===0?c.jsx("p",{className:"de-empty-text",children:"任务执行后,这里会滚动显示每个步骤的时间、任务、步骤和结果。"}):Zn.map(_=>c.jsxs("button",{type:"button",className:`de-run-detail-row de-live-feed-row--${_.status_tone||"info"}`,onClick:()=>{const J=He.find(ue=>ue.id===_.id);J&&Bs(J)},title:_.business_detail,children:[c.jsx("span",{children:VS(_)}),c.jsx("strong",{children:_.task_name}),c.jsx("span",{children:_.step_name||_.operation_name||"执行步骤"}),c.jsx("span",{children:c.jsx("i",{className:`de-badge ${Pr(_.status_tone)}`,children:_.status_label})}),c.jsx("em",{children:_.business_detail})]},_.id))]})]})]})]}),c.jsxs("div",{className:"de-report-summary",children:[c.jsxs("div",{className:"de-card-title-bar de-report-summary-head de-report-summary-head--bar",children:[c.jsx("div",{className:"de-report-summary-title-row",children:c.jsx("h3",{children:"日报生成"})}),c.jsx("span",{className:`de-report-badge ${(oe==null?void 0:oe.status)==="ready"?"de-report-badge--ready":"de-report-badge--waiting"}`,children:(oe==null?void 0:oe.status)==="ready"?"已生成":"待生成"})]}),c.jsxs("div",{className:"de-report-summary-body",children:[c.jsxs("div",{className:"de-report-schedule-row",children:[c.jsxs("label",{children:[c.jsx("span",{children:"生成时间"}),c.jsx("input",{type:"time",value:Tt,onChange:_=>Oe(_.target.value||"18:00")})]}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:S==="update_report_schedule",onClick:()=>{Lt()},children:"设置时间"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="generate_daily_report",onClick:()=>{Ei()},children:S==="generate_daily_report"?"生成中...":"生成日报"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm de-report-preview-btn",disabled:!El,onClick:()=>V(!0),title:El?"预览日报文字内容":"生成日报后可预览文字内容",children:[c.jsx(Cp,{size:14,"aria-hidden":"true"}),"预览日报"]}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm de-report-download-btn",disabled:!(oe!=null&&oe.pdf_available),onClick:ki,title:oe!=null&&oe.pdf_available?"下载本地日报文本":"生成日报后可下载本地日报",children:[c.jsx(lc,{size:14,"aria-hidden":"true"}),"下载日报"]})]}),c.jsxs("div",{className:"de-report-meta",children:[c.jsx("p",{children:(oe==null?void 0:oe.summary)??"点击生成日报后,AI 会基于当天所有任务写出总分结构日报。"}),((oe==null?void 0:oe.detail_lines)??[]).slice(0,3).map(_=>c.jsx("p",{children:_},_))]})]})]})]})})]}),Q&&oe&&c.jsx("div",{className:"de-task-manager-modal-overlay de-report-preview-overlay",role:"presentation",onClick:()=>V(!1),children:c.jsxs("div",{className:"de-report-preview-modal",role:"dialog","aria-modal":"true","aria-label":"日报预览",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"DAILY REPORT"}),c.jsx("h3",{children:oe.title||"数字员工日报"}),c.jsxs("p",{children:[ka," 生成时间 ",oe.report_schedule_time,",来源:",oe.generated_by==="ai"?"AI 生成":"规则兜底"]})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>V(!1),children:"×"})]}),c.jsxs("div",{className:"de-report-preview-summary",children:[c.jsxs("div",{children:[c.jsx("span",{children:"任务总数"}),c.jsx("strong",{children:Cs})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行次数"}),c.jsx("strong",{children:Na})]}),c.jsxs("div",{children:[c.jsx("span",{children:"成功次数"}),c.jsx("strong",{children:pt})]}),c.jsxs("div",{children:[c.jsx("span",{children:"失败次数"}),c.jsx("strong",{children:Et})]})]}),c.jsx("div",{className:"de-report-preview-content",children:Ta.length===0?c.jsx("p",{className:"de-empty-text",children:"当前日报暂无可预览文字。"}):Ta.map((_,J)=>c.jsx("p",{children:_},`${J}-${_}`))}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>V(!1),children:"关闭"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm de-report-download-btn",disabled:!oe.pdf_available,onClick:ki,children:[c.jsx(lc,{size:14,"aria-hidden":"true"}),"下载日报"]})]})]})}),ke&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:()=>We(!1),children:c.jsxs("div",{className:"de-profile-settings-modal",role:"dialog","aria-modal":"true","aria-label":"数字员工特性设置",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"PROFILE"}),c.jsx("h3",{children:"特性设置"}),c.jsx("p",{children:"维护数字员工在首页展示的姓名、单位、岗位和当前状态。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>We(!1),children:"×"})]}),c.jsxs("div",{className:"de-profile-settings-grid",children:[c.jsxs("label",{children:[c.jsx("span",{children:"姓名"}),c.jsx("input",{value:Ie.name,onChange:_=>ct(J=>({...J,name:_.target.value}))})]}),c.jsxs("label",{children:[c.jsx("span",{children:"单位"}),c.jsx("input",{value:Ie.company,onChange:_=>ct(J=>({...J,company:_.target.value}))})]}),c.jsxs("label",{children:[c.jsx("span",{children:"岗位"}),c.jsx("input",{value:Ie.position,onChange:_=>ct(J=>({...J,position:_.target.value}))})]}),c.jsxs("div",{className:"de-profile-status-toggle",children:[c.jsx("span",{children:"当前状态"}),c.jsxs("div",{children:[c.jsx("button",{type:"button",className:Ie.currentStatus==="working"?"active":"",onClick:()=>ct(_=>({..._,currentStatus:"working"})),children:"工作中"}),c.jsx("button",{type:"button",className:Ie.currentStatus==="resting"?"active":"",onClick:()=>ct(_=>({..._,currentStatus:"resting"})),children:"休息中"})]})]})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>We(!1),children:"取消"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="update_profile",onClick:()=>{Dc()},children:S==="update_profile"?"保存中...":"保存设置"})]})]})}),ve&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:()=>Me(null),children:c.jsxs("div",{className:"de-event-detail-modal",role:"dialog","aria-modal":"true","aria-label":"同步失败详情",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"SYNC FAILURE"}),c.jsx("h3",{children:"同步失败详情"}),c.jsxs("p",{children:[bs(ve.entityType)," / ",ve.operation]})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>Me(null),children:"×"})]}),c.jsxs("div",{className:"de-event-detail-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"Outbox"}),c.jsx("strong",{children:ve.id})]}),c.jsxs("div",{children:[c.jsx("span",{children:"实体"}),c.jsx("strong",{children:ve.entityId})]}),c.jsxs("div",{children:[c.jsx("span",{children:"类型"}),c.jsx("strong",{children:bs(ve.entityType)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"操作"}),c.jsx("strong",{children:ve.operation})]}),c.jsxs("div",{children:[c.jsx("span",{children:"重试"}),c.jsxs("strong",{children:[ve.attempts," 次"]})]}),c.jsxs("div",{children:[c.jsx("span",{children:"上次尝试"}),c.jsx("strong",{children:$p(ve)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"下次重试"}),c.jsx("strong",{children:Wg(ve)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"状态"}),c.jsx("strong",{children:ve.dueForRetry?"等待补偿":"退避中"})]})]}),c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"失败原因"}),c.jsx("p",{children:ve.error||"暂无错误详情。"})]}),(((Ml=ve.attemptHistory)==null?void 0:Ml.length)??0)>0&&c.jsxs("div",{className:"de-sync-attempt-history",children:[c.jsx("span",{children:"重试历史"}),c.jsx("div",{className:"de-sync-attempt-list",children:(Xa=ve.attemptHistory)==null?void 0:Xa.map(_=>c.jsxs("div",{className:`de-sync-attempt-row de-sync-attempt-row--${GS(_.status)}`,children:[c.jsxs("div",{children:[c.jsxs("strong",{children:["第 ",_.attemptNo," 次"]}),c.jsx("em",{children:YS(_.status)}),c.jsx("span",{children:_l(_.finishedAt)||_.finishedAt})]}),_.error&&c.jsx("small",{children:_.error})]},`${_.attemptNo}-${_.finishedAt}`))})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>Me(null),children:"关闭"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>{wi(ve)},children:[c.jsx(r0,{size:14}),"复制诊断"]}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>Ls(ve),children:[c.jsx(lc,{size:14}),"导出诊断"]}),ve.managementRecordUrl&&c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>window.open(ve.managementRecordUrl||"","_blank","noopener,noreferrer"),children:[c.jsx(Cp,{size:14}),"查看管理端记录"]}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="flush_management_sync",onClick:()=>{Os().then(()=>Me(null))},children:S==="flush_management_sync"?"同步中...":"立即重试"})]})]})}),H&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:Cl,children:c.jsxs("div",{className:"de-event-detail-modal",role:"dialog","aria-modal":"true","aria-label":"执行记录详情",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"EXECUTION DETAIL"}),c.jsx("h3",{children:"执行记录详情"}),c.jsx("p",{children:"这条记录已被锁定,滚动不会把它刷掉。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:Cl,children:"×"})]}),c.jsxs("div",{className:"de-event-detail-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"业务"}),c.jsx("strong",{children:H.plan_title})]}),c.jsxs("div",{children:[c.jsx("span",{children:"操作"}),c.jsx("strong",{children:H.task_title})]}),c.jsxs("div",{children:[c.jsx("span",{children:"状态"}),c.jsx("strong",{children:Lp(H)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"计划时间"}),c.jsx("strong",{children:Fg(H)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行时间"}),c.jsx("strong",{children:Ig(H)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"数据来源"}),c.jsx("strong",{children:Vn})]})]}),c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"操作结果"}),c.jsx("p",{children:sc(H)})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:Cl,children:"关闭"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",onClick:()=>pa(H),children:"打开任务中心详情"})]})]})}),X&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:Dl,children:c.jsxs("div",{className:"de-event-history-modal",role:"dialog","aria-modal":"true","aria-label":"全部执行记录",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"EXECUTION HISTORY"}),c.jsx("h3",{children:"运行明细"}),c.jsxs("p",{children:["当前日期共 ",He.length," 条记录,本窗口展示最新 ",Math.min(bi.length,Mp)," 条。"]})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:Dl,children:"×"})]}),c.jsx("div",{className:"de-event-history-toolbar",children:bS.map(_=>c.jsx("button",{type:"button",className:`de-filter-chip ${Y===_.id?"active":""}`,onClick:()=>te(_.id),children:_.label},_.id))}),c.jsx("div",{className:"de-event-history-list",children:bi.length===0?c.jsx("p",{className:"de-empty-text",children:"当前筛选下没有执行记录。"}):Sl.map(_=>c.jsxs("button",{type:"button",className:`de-event-history-row de-live-feed-row--${_.status_tone||"info"}`,onClick:()=>{D(_),se(!1),de(!0)},children:[c.jsxs("span",{children:[c.jsx("em",{children:"业务"}),c.jsx("strong",{children:_.plan_title})]}),c.jsxs("span",{children:[c.jsx("em",{children:"操作"}),c.jsx("strong",{children:_.task_title})]}),c.jsxs("span",{children:[c.jsx("em",{children:"状态"}),c.jsx("strong",{children:Lp(_)})]}),c.jsxs("span",{children:[c.jsx("em",{children:"操作结果"}),c.jsx("strong",{children:sc(_)}),c.jsx("small",{children:Bp(_)})]})]},_.id))})]})}),j&&c.jsx("div",{className:"de-task-manager-modal-overlay de-plan-action-overlay",role:"presentation",onClick:()=>$(null),children:c.jsxs("div",{className:"de-plan-action-modal",role:"dialog","aria-modal":"true","aria-label":"定时任务",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"PLAN SCHEDULE"}),c.jsx("h3",{children:"定时任务"}),c.jsx("p",{children:"定时会把任务注册到后端调度链路,每天按设置时间自动派发。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>$(null),children:"×"})]}),c.jsxs("div",{className:"de-plan-action-body",children:[c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"任务"}),c.jsx("p",{children:j.title})]}),c.jsxs("label",{className:"de-plan-action-field",children:[c.jsx("span",{children:"每日定时时间"}),c.jsx("input",{type:"time",value:re,onChange:_=>pe(_.target.value||"09:00")})]}),c.jsxs("div",{className:"de-event-detail-grid de-plan-action-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"调度注册"}),c.jsx("strong",{children:Op(re)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"任务步骤"}),c.jsxs("strong",{children:[j.stepCount," 步"]})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行步骤"}),c.jsxs("strong",{children:[j.taskCount," 项"]})]})]}),c.jsx("div",{className:"de-schedule-result de-schedule-result--success",children:"这里不是本地假定时;提交后如果后端调度链路不可用,会直接显示真实失败原因。"})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>$(null),children:"取消"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S===`schedule:${j.id}`,onClick:()=>{$s(j)},children:S===`schedule:${j.id}`?"注册中...":"确认定时"})]})]})}),K&&c.jsx("div",{className:"de-task-manager-modal-overlay de-plan-action-overlay",role:"presentation",onClick:()=>W(null),children:c.jsxs("div",{className:"de-plan-action-modal",role:"dialog","aria-modal":"true","aria-label":"执行任务",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"PLAN EXECUTION"}),c.jsx("h3",{children:"执行任务"}),c.jsx("p",{children:"确认后立即创建并派发任务步骤,不需要先进入任务中心设置。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>W(null),children:"×"})]}),c.jsxs("div",{className:"de-plan-action-body",children:[c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"任务"}),c.jsx("p",{children:K.title})]}),c.jsxs("div",{className:"de-event-detail-grid de-plan-action-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"当前状态"}),c.jsx("strong",{children:K.statusLabel})]}),c.jsxs("div",{children:[c.jsx("span",{children:"任务步骤"}),c.jsxs("strong",{children:[K.stepCount," 步"]})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行步骤"}),c.jsxs("strong",{children:[K.taskCount," 项"]})]})]}),c.jsx("div",{className:`de-schedule-result ${ec(K)?"de-schedule-result--success":"de-schedule-result--pending"}`,children:ec(K)?"确认后立即调用后端派发接口,按任务步骤进入真实执行链路。":tc(K)})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>W(null),children:"取消"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S===`execute:${K.id}`||!ec(K),onClick:()=>{qs(K)},children:S===`execute:${K.id}`?"触发中...":"确认执行"})]})]})}),jt&&ma&&c.jsx("div",{className:"de-task-manager-modal-overlay de-workday-guide-overlay",role:"presentation",onClick:Ca,children:c.jsxs("div",{className:"de-task-manager-modal de-workday-guide-modal",role:"dialog","aria-modal":"true","aria-label":"开始今天的任务",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head de-workday-guide-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"WORKDAY START"}),c.jsx("h3",{children:"开始今天的任务"}),c.jsx("p",{children:"像值班员早上交接一样,先确认日期和执行内容,再让数字员工开始接单、外呼、汇总和汇报。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:Ca,children:"×"})]}),c.jsx("div",{className:"de-workday-guide-steps","aria-label":"开工引导步骤",children:SS.map((_,J)=>c.jsxs("div",{className:"de-workday-guide-step",children:[c.jsx("span",{children:J+1}),c.jsx("strong",{children:_.title}),c.jsx("p",{children:_.body})]},_.title))}),c.jsxs("div",{className:"de-workday-guide-body",children:[c.jsxs("section",{className:"de-task-manager-column de-workday-guide-column",children:[c.jsxs("div",{className:"de-task-manager-section-head",children:[c.jsxs("div",{children:[c.jsx("strong",{children:"选择今天要执行的任务"}),c.jsxs("span",{children:[At.length," 项已选,",Ua.length," 项总任务,",Kn.length," 项待选择"]})]}),c.jsx("span",{className:`de-badge ${Ya}`,children:Vn})]}),c.jsx("div",{className:"de-workday-guide-duty-list",children:y?c.jsx("div",{className:"de-loading-skeleton",style:{height:220}}):Mt.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无任务,首页不再展示硬编码任务。请先在任务中心创建或同步。"}):Mt.map(_=>Us(_,"guide"))})]}),c.jsxs("aside",{className:"de-workday-guide-side",children:[c.jsxs("div",{className:"de-workday-guide-summary",children:[c.jsx("span",{children:"日期"}),c.jsx("strong",{children:i}),c.jsx("p",{children:Ms})]}),c.jsxs("div",{className:"de-workday-guide-summary",children:[c.jsx("span",{children:"确认后会发生什么"}),c.jsx("strong",{children:"右侧进入执行滚动"}),c.jsx("p",{children:"首页会展示当前动作、下一步、操作状态和操作结果;需要人工决策时会在右侧停下来提示。"})]}),(L||F||(o==null?void 0:o.demo_reason))&&c.jsx("div",{className:`de-schedule-result ${L?"de-schedule-result--error":"de-schedule-result--success"}`,children:L||(F?"已调整任务勾选,点击确认后生效。":o==null?void 0:o.demo_reason)}),c.jsxs("div",{className:"de-workday-guide-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:Ca,children:"稍后设置"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="confirm_workday"||y,onClick:()=>{ji()},children:S==="confirm_workday"?"确认中...":"确认并开始任务"})]})]})]})]})}),fe&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:()=>be(!1),children:c.jsxs("div",{className:"de-task-manager-modal",role:"dialog","aria-modal":"true","aria-label":"任务设置",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"TASK MANAGER"}),c.jsx("h3",{children:"任务设置"}),c.jsx("p",{children:"像员工早上确认工作一样,勾选今天要执行的内容,必要时进入详情或处理待决策事项。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>be(!1),children:"×"})]}),c.jsxs("div",{className:"de-task-manager-modal-body",children:[c.jsxs("section",{className:"de-task-manager-column de-task-manager-column--duties",children:[c.jsxs("div",{className:"de-task-manager-section-head",children:[c.jsxs("div",{children:[c.jsx("strong",{children:"任务设置清单"}),c.jsxs("span",{children:[At.length," 项已选,",Ua.length," 项总任务,",Kn.length," 项待选择"]})]}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="confirm_workday"||y,onClick:()=>{ji()},children:S==="confirm_workday"?"确认中...":we!=null&&we.confirmed?"重新任务执行":"确认并开始任务"})]}),c.jsx("div",{className:"de-task-manager-duty-list",children:y?c.jsx("div",{className:"de-loading-skeleton",style:{height:180}}):Mt.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无任务,首页不会显示硬编码任务。可进入任务中心创建。"}):Mt.map(_=>Us(_,"manager"))})]}),c.jsxs("aside",{className:"de-task-manager-column de-task-manager-column--actions",children:[c.jsx("div",{className:"de-task-manager-section-head",children:c.jsxs("div",{children:[c.jsx("strong",{children:"待解决事项"}),c.jsx("span",{children:mn.length>0?`${mn.length} 项需要人处理`:"暂无阻塞事项"})]})}),c.jsx("div",{className:"de-task-manager-decision-list",children:((o==null?void 0:o.decisions)??[]).length===0?c.jsx("p",{className:"de-empty-text",children:"没有需要你确认的事项。"}):((o==null?void 0:o.decisions)??[]).map(_=>c.jsxs("div",{className:"de-task-manager-decision-card",children:[c.jsxs("div",{className:"de-log-entry-meta",children:[c.jsx("strong",{children:_.title}),c.jsx("span",{children:_.status_label})]}),c.jsx("p",{children:_.scenario}),c.jsxs("div",{className:"de-decision-chain-note",children:[c.jsx("span",{className:"de-badge de-badge-success",children:"本地记录"}),c.jsx("span",{children:Xo(_.status)?"处理结果会写入 qimingclaw runtime event。":"该事项已在本地状态中处理。"})]}),c.jsxs("div",{className:"de-workbench-actions",children:[_.actions.map(J=>c.jsx("button",{type:"button",className:J.tone==="primary"?"de-workbench-action-accent":"",disabled:S===`${_.id}:${J.id}`||!Xo(_.status),onClick:()=>{Ni(_,J.id)},children:S===`${_.id}:${J.id}`?"处理中...":J.label},J.id)),c.jsx("button",{type:"button",onClick:()=>n({tab:"missions",date:i,missionId:_.id}),children:"查看上下文"})]})]},_.id))})]})]})]})})]})}function ws({children:n,className:i="",style:r}){return c.jsx("div",{className:`de-card ${i}`,style:r,children:n})}function kc({title:n,children:i}){return c.jsxs("div",{className:"de-card-title-bar",children:[c.jsx("span",{className:"de-card-title-bar-text",children:n}),i]})}const rx={info:"de-badge-info",success:"de-badge-success",warning:"de-badge-warning",danger:"de-badge-danger"};function cd({variant:n,label:i}){return c.jsx("span",{className:`de-badge ${rx[n]}`,children:i})}function Yp(n){return Array.isArray(n)?n:[]}function Je(n,i=""){return typeof n=="string"?n:typeof n=="number"?String(n):i}function yi(n){return/[\u4e00-\u9fff]/.test(n)}const Gp={queued:"排队中",ready:"就绪",idle:"待执行",pending:"待处理",pending_authorization:"待授权",waiting_input:"待输入",draft:"草稿",reviewing:"审核中",approved:"已批准",preparing:"准备中",running:"执行中",active:"运行中",blocked:"已阻塞",succeeded:"已完成",success:"成功",finished:"已完成",complete:"已完成",completed:"已完成",failed:"失败",error:"错误",cancelled:"已取消",canceled:"已取消",aborted:"已终止",rejected:"已拒绝",deferred:"已暂缓",dispatched:"已下发",scheduled:"已设置定时",enabled:"已启用",disabled:"已停用",paused:"已暂停",unknown:"未知"},Qp={plan:"计划",task:"任务",task_running:"处理中",task_done:"任务完成",run:"执行开始",run_done:"执行完成",skill_tool:"技能调用",artifact:"产物",task_summary:"结果",entered_session:"会话",start:"目标",RunStarted:"开始调用",RequestDispatched:"请求已发出",ResponseReceived:"收到返回",RunSkipped:"本次跳过",RunCompleted:"执行完成",waiting_for_authorization:"等待授权",pending_authorization:"等待授权",authorization_approved:"授权通过",authorization_rejected:"授权拒绝",authorization_deferred:"稍后处理",failed:"执行失败",completed:"执行完成"};function Qt(n,i="未知"){const r=Je(n).trim();if(!r)return i;const o=Gp[r]??Gp[r.toLowerCase()];return o||(yi(r)?r:i)}function cx(n){const i=Je(n).trim();return i?Qp[i]??Qp[i.toLowerCase()]??(yi(i)?i:"事件"):"事件"}function Pg(n,i="暂无事件内容"){const r=Je(n).trim();if(!r)return i;if(yi(r))return r;const o=Qt(r,"");if(o)return o;const d=r.match(/^(Succeeded|Failed|Running|Completed)\s*\(attempt\s*#(\d+)\)$/i);return d?`${Qt(d[1])}(第 ${d[2]} 次)`:/request failed/i.test(r)?"请求失败":/backend unavailable/i.test(r)?"后端服务不可达":/not found/i.test(r)?"未找到对应资源":i}function vs(n,i="未命名内容"){const r=Je(n).trim();if(!r||/unnamed/i.test(r))return i;if(yi(r))return r;const o=Qt(r,"");if(o)return o;const d=ey(r);return d||r}function ud(n){return["succeeded","success","finished","complete","completed"].includes(n.toLowerCase())}function od(n){return["failed","error","cancelled","canceled","aborted","rejected","deadletter"].includes(n.toLowerCase())}function ux(n,i){const r=Je(n).trim().toLowerCase();return i.length===0?r||"pending":i.some(o=>od(o.status))?"failed":i.some(o=>["running","active","leased"].includes(o.status.toLowerCase()))?"running":i.some(o=>["queued","ready","pending"].includes(o.status.toLowerCase()))?"queued":i.every(o=>ud(o.status))?"succeeded":r||"pending"}function ox(n,i){const r=Je(n,"unknown").trim().toLowerCase();return ud(r)||od(r)?r:i.some(o=>od(o.status))?"failed":i.some(o=>["running","active","queued","leased"].includes(o.status.toLowerCase()))?"running":i.length>0&&i.every(o=>ud(o.status))?"succeeded":r||"unknown"}function Xp(n){return n?n.map(i=>{const r=Je(i.plan_id),d=Yp(i.steps).map(p=>{const h=Yp(p.tasks).map(y=>({id:Je(y.task_id),title:vs(y.title,"子任务"),description:Je(y.description),status:Je(y.status,"pending"),assignedSkillId:y.assigned_skill_id?Je(y.assigned_skill_id):null,startedAt:y.started_at?Je(y.started_at):null,finishedAt:y.finished_at?Je(y.finished_at):null}));return{id:Je(p.step_id),title:vs(p.title,"任务步骤"),description:Je(p.description),status:ux(p.status,h),preferredSkills:Array.isArray(p.preferred_skills)?p.preferred_skills:[],tasks:h}}),m=[];for(const p of d)for(const v of p.tasks)m.push(v.id);return{id:r,title:vs(i.title,"未命名任务"),objective:vs(i.objective||i.description,"暂无任务说明"),status:ox(i.status,d),createdAt:i.created_at?Je(i.created_at):null,updatedAt:i.updated_at?Je(i.updated_at):null,steps:d,sourceIds:{planId:r||void 0,taskIds:m}}}):[]}const Ko={"decision-analyzer":"决策分析","git-log-collector":"Git 日志采集","number-generator":"数据生成","office-export-xlsx":"Excel 导出","task-tracker":"任务跟踪","weekly-report-writer":"周报撰写","zhihu-hotlist-detail":"知乎热榜明细","zhihu-hotlist":"知乎热榜","tq-lineloss-report":"台区线损报表","archive-workorder-grid-push-monitor":"归档工单推送监控","available-balance-below-zero-monitor":"可用余额监控","command-center-fee-control-monitor":"费用管控监控","sgcc-todo-crawler":"SGCC 待办爬取","appointment-workorder-monitor":"约时工单监控","fault-location-monitor":"故障定位监控","fudian-failure-monitor":"复电失败监控","important-service-expiry-monitor":"服务到期预警","by-95598-customer-satisfaction-report":"95598 满意率日报","by-daily-report-statistics":"日报统计","by-fire-fault-monthly-report":"火警故障月报","by-risk-control-next-day-plan-report":"风控次日计划","by-risk-control-week-plan-report":"风控周计划","by-supervision-workorder-detail-report":"督办工单明细","age-file-encryption":"文件加解密","anonymous-file-upload":"匿名文件上传","browser-automation-agent":"浏览器自动化","bulk-github-star":"批量仓库标星","changelog-generator":"更新日志生成","code-reviewer":"代码审查","commit-automation":"自动提交","crypto-trading-signal":"交易信号分析","csv-to-json":"CSV 转 JSON","data-analysis":"数据分析","deep-research":"深度调研","dependency-updater":"依赖更新","deploy-automation":"自动部署","dns-lookup":"DNS 查询","document-generator":"文档生成","email-automation":"邮件自动化","file-converter":"文件格式转换","git-history-analyzer":"Git 历史分析","github-issue-manager":"Issue 管理","image-optimizer":"图片优化","json-schema-validator":"JSON Schema 校验","log-analyzer":"日志分析","markdown-to-pdf":"Markdown 转 PDF","meeting-summarizer":"会议纪要","news-aggregator":"新闻聚合","pdf-extractor":"PDF 提取","performance-profiler":"性能分析","pr-review-bot":"PR 审查","release-notes-generator":"发布说明生成","screenshot-automation":"截图自动化","search-engine-scraper":"搜索引擎抓取","sentiment-analysis":"情感分析","shell-command-runner":"命令执行","slack-notification":"Slack 通知","spreadsheet-generator":"电子表格生成","text-summarizer":"文本摘要","torrent-search":"资源搜索","translate-text":"文本翻译","web-scraper":"网页抓取","website-monitor":"网站监控","whitepaper-analyzer":"白皮书分析","xml-to-json":"XML 转 JSON"};function ey(n){if(Ko[n])return Ko[n];for(const[i,r]of Object.entries(Ko))if(n.includes(i)||i.includes(n))return r;return null}function Kp(n,i){const r=ey(n);return r||(yi(i)?i:"自动化技能")}const Zp={"decision-analyzer":"数字化","git-log-collector":"数字化","number-generator":"数字化","office-export-xlsx":"办公","task-tracker":"办公","weekly-report-writer":"报表","zhihu-hotlist-detail":"数字化","zhihu-hotlist":"数字化","tq-lineloss-report":"报表","archive-workorder-grid-push-monitor":"监控巡检","available-balance-below-zero-monitor":"监控巡检","command-center-fee-control-monitor":"监控巡检","sgcc-todo-crawler":"监控巡检","appointment-workorder-monitor":"监控巡检","fault-location-monitor":"监控巡检","fudian-failure-monitor":"监控巡检","important-service-expiry-monitor":"监控巡检","by-95598-customer-satisfaction-report":"报表","by-daily-report-statistics":"报表","by-fire-fault-monthly-report":"报表","by-risk-control-next-day-plan-report":"报表","by-risk-control-week-plan-report":"报表","by-supervision-workorder-detail-report":"报表","age-file-encryption":"数字化","anonymous-file-upload":"通信","browser-automation-agent":"数字化","bulk-github-star":"发展","changelog-generator":"发展","chat-logger":"通信","check-crypto-address-balance":"财务","city-distance":"发展","city-tourism-website-builder":"营销","crawl-websites-at-scale":"数字化","csv-data-summarizer":"财务","d3js-data-visualization":"数字化","database-query-and-export":"数字化","file-tracker":"综合","free-geocoding-and-maps":"发展","free-translation-api":"综合","free-weather-data":"综合","generate-asset-price-chart":"财务","generate-qr-code-natively":"数字化","get-crypto-price":"财务","git-worktree-cli":"发展","github-stats":"发展","html-to-markdown":"数字化","image-compressor":"综合","json-to-csv":"数字化","llm-council":"数字化","markdown-table-generator":"综合","multi-format-converter":"综合","npm-package-info":"发展","pdf-generator":"综合","random-number-generator":"综合","readability-score":"综合","rss-feed-reader":"通信","sql-formatter":"数字化","text-diff":"综合","torrent-search":"通信","unit-converter":"综合","url-shortener":"通信","youtube-transcript":"通信","zip-extractor":"综合"};function Vp(n){return Zp[n]?Zp[n]:"综合"}function dx(n){return n==="core"||n==="standard"||n==="specialized"||n==="experimental"?n:"standard"}function fx(n,i,r){const o=Je(i).trim();return o&&yi(o)?o:n.includes("monitor")?`${r}能力,用于按排班自动巡检并提示异常。`:n.includes("report")?`${r}能力,用于自动生成和整理业务报表。`:`${r}能力,可由数字员工按需执行或定时处理。`}function mx(n){return n?n.map(i=>{const r=Je(i.skill_id,Je(i.id));return{id:r,name:Kp(r,Je(i.name,r)),version:i.version?Je(i.version):null,enabled:!!i.enabled,description:fx(r,i.description,Kp(r,Je(i.name,r))),category:i.category?Je(i.category,Vp(r)):Vp(r),capabilityLevel:dx(i.capability_level??i.capabilityLevel),source:"skill-api"}}):[]}function Nc(n){return n.replace(/[^a-zA-Z0-9_-]/g,"_")}function hx(n){switch(n){case"succeeded":case"completed":return"success";case"failed":case"error":return"danger";case"running":case"active":return"info";default:return"warning"}}function px(n){return["draft","reviewing","approved"].includes(n.toLowerCase())}function gx(n){const i=`${n.id} ${n.title} ${n.objective}`.toLowerCase();return i.includes("month")||i.includes("monthly")||i.includes("月")?"月度任务":i.includes("week")||i.includes("weekly")||i.includes("周")?"周任务":i.includes("临时")||i.includes("adhoc")||i.includes("hotlist")||i.includes("monitor")?"临时任务":"日常任务"}function yl(n){return["succeeded","success","finished","complete","completed"].includes(n.toLowerCase())}function ty(n){return["failed","error","cancelled","canceled","aborted","rejected","deadletter"].includes(n.toLowerCase())}function yx(n){const i=n.steps.length;if(i===0)return Qt(n.status);const r=n.steps.filter(p=>yl(p.status)).length,o=n.steps.filter(p=>ty(p.status)).length,d=n.steps.filter(p=>["running","active","queued","leased"].includes(p.status.toLowerCase())).length,m=[`已完成 ${r}/${i}`];return o>0&&m.push(`失败 ${o}`),d>0&&o===0&&m.push(`处理中 ${d}`),m.join(",")}function vx(n){const i=n.steps.find(d=>ty(d.status));if(i)return`执行失败:${i.title}`;const r=n.steps.find(d=>["running","active"].includes(d.status.toLowerCase()));if(r)return`正在处理:${r.title}`;const o=n.steps.find(d=>!yl(d.status));return o?`准备处理:${o.title}`:yl(n.status)?"本轮任务已完成,等待你查看结果":n.status.toLowerCase()==="failed"?"执行遇到异常,等待你检查后重新执行":"等待你委托数字员工开始处理"}function bx(n,i){const r=n.status.toLowerCase();return r==="failed"||r==="error"?"查看详情后重新执行本任务":["running","active"].includes(r)?"等待完成或查看过程":yl(r)?"查看产物,必要时重新执行":i?"确认目标后点击委托执行":"查看详情确认当前状态"}function _x(n){const i=`${n.title} ${n.objective}`.toLowerCase();return i.includes("excel")||i.includes("xlsx")||i.includes("导出")||i.includes("报表")?"导出报表":i.includes("brief")||i.includes("简报")||i.includes("日程")?"工作简报":i.includes("snapshot")||i.includes("快照")||i.includes("热榜")?"结果快照":yl(n.status)?"查看完成结果":"完成后生成"}function ay(n){if(!n)return"";const i=new Date(n);return Number.isNaN(i.getTime())?"":[i.getFullYear(),String(i.getMonth()+1).padStart(2,"0"),String(i.getDate()).padStart(2,"0")].join("-")}function ny(){return ay(new Date().toISOString())}function Sx(n){if(!n)return"时间未记录";const i=new Date(n);return Number.isNaN(i.getTime())?"时间未记录":i.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit",hour12:!1})}function xx(n){if(!n)return"";const i=new Date(n);return Number.isNaN(i.getTime())?"":i.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}function jx(n){const i=`${n.title} ${n.id}`.match(/(?:^|\D)(\d{1,2})[::](\d{2})(?:\D|$)/);if(!i)return null;const r=Number(i[1]),o=Number(i[2]);return!Number.isInteger(r)||!Number.isInteger(o)||r>23||o>59?null:`${String(r).padStart(2,"0")}:${String(o).padStart(2,"0")}`}function wx(n){return n.steps.flatMap(i=>i.tasks.flatMap(r=>[r.startedAt,r.finishedAt])).filter(i=>!!i)}function Ex(n,i){return wx(n).filter(o=>ay(o)===i).sort((o,d)=>d.localeCompare(o))[0]??null}function kx(n,i){const r=Ex(n,i);if(r)return`实际执行 ${Sx(r)}`;const o=i===ny()?"今日未执行":"当日未执行";return`计划执行 ${jx(n)||"待确认"};${o}`}function Nx({mission:n,onSelect:i,onRun:r,onRestart:o,dateFilter:d,selected:m,focusLabel:p,running:v}){const h=px(n.status),y=yl(n.status)||n.steps.some(k=>yl(k.status)),E=d||ny(),S=xx(n.updatedAt||n.createdAt);return c.jsxs("div",{id:`mission-card-${Nc(n.id)}`,className:`de-mission-card ${m?"de-mission-card--selected":""}`,onClick:()=>i(n),onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),i(n))},role:"button",tabIndex:0,children:[c.jsxs("div",{className:"de-mission-card-header",children:[c.jsx("span",{className:"de-mission-card-title",children:n.title}),c.jsxs("div",{className:"de-mission-card-badges",children:[p&&c.jsx("span",{className:"de-mission-card-focus-chip",children:p}),c.jsx(cd,{variant:hx(n.status),label:Qt(n.status)})]})]}),n.objective&&c.jsxs("p",{className:"de-mission-card-desc",children:["业务目标:",n.objective]}),c.jsxs("div",{className:"de-mission-card-meta",children:[c.jsxs("span",{children:["周期:",gx(n)]}),c.jsxs("span",{children:["当前进度:",yx(n)]}),S&&c.jsxs("span",{children:["同步于 ",S]})]}),c.jsx("div",{className:"de-mission-card-meta",children:c.jsx("span",{children:vx(n)})}),c.jsxs("div",{className:"de-mission-card-meta",children:[c.jsxs("span",{children:["下一步:",bx(n,h)]}),c.jsxs("span",{children:["产物入口:",_x(n)]})]}),c.jsxs("div",{className:"de-mission-card-actions",children:[c.jsxs("span",{className:"de-mission-card-time",children:[kx(n,E),y?";重新执行可能覆盖本任务结果":""]}),c.jsx("button",{type:"button",className:"de-btn-restart",disabled:v,onClick:k=>{k.stopPropagation(),v||o==null||o(n)},title:y?"重新执行本任务,可能覆盖已有结果":"重新执行本任务",children:"重新执行本任务"}),c.jsx("button",{type:"button",className:"de-btn-run",disabled:!h||v,onClick:k=>{k.stopPropagation(),h&&!v&&(r==null||r(n))},children:v?"执行中...":h?"委托执行":Qt(n.status)})]})]})}function Ae(n,i){const r=new Date;return r.setHours(n,i,0,0),r.toISOString()}function Pe(n,i,r,o,d,m,p){return{id:`${n}-${i}-task`,title:r,status:o,assignedSkillId:d,startedAt:m,finishedAt:p}}function ua(n,i,r,o,d,m){return{id:n,title:i,objective:r,status:o,createdAt:Ae(8,0),updatedAt:d,steps:m,sourceIds:{planId:n,taskIds:m.flatMap(p=>p.tasks.map(v=>v.id))}}}const Tx=[{id:"whitecollar-day-browser-portal-check",name:"工作台巡检",version:"1.0.0",enabled:!0,description:"检查工作台首页、待办数量和重点入口是否可用。",category:"办公",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-inbox-triage",name:"收件箱分拣",version:"1.0.0",enabled:!0,description:"读取邮件和通知列表,按紧急程度整理待办。",category:"通信",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-calendar-brief",name:"日程简报",version:"1.0.0",enabled:!0,description:"生成当日会议、回访和报表节点的时间提醒。",category:"办公",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-crm-followup",name:"客户跟进",version:"1.0.0",enabled:!0,description:"读取客户跟进页面,形成回访摘要和下一步建议。",category:"营销",capabilityLevel:"specialized",source:"skill-api"},{id:"whitecollar-day-browser-expense-approval",name:"费用审批核对",version:"1.0.0",enabled:!0,description:"检查待审批费用单,筛出异常和超限项。",category:"财务",capabilityLevel:"specialized",source:"skill-api"},{id:"whitecollar-day-sales-snapshot",name:"经营快照",version:"1.0.0",enabled:!0,description:"汇总客户、项目和当日经营看板。",category:"报表",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-report-export",name:"报表导出",version:"1.0.0",enabled:!0,description:"整理并导出面向领导汇报的简版报表。",category:"报表",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-knowledge-check",name:"知识库核查",version:"1.0.0",enabled:!0,description:"检索知识库资料,确认制度和模板是否最新。",category:"数字化",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-task-board-sync",name:"任务看板同步",version:"1.0.0",enabled:!0,description:"把今日处理结果同步到任务看板和协同清单。",category:"办公",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-day-close",name:"日终收口",version:"1.0.0",enabled:!0,description:"汇总今日动作、风险和明日重点。",category:"办公",capabilityLevel:"specialized",source:"skill-api"}],Ax=[ua("whitecollar-day","白领一天端到端验收","模拟业务人员一天内通过数字员工完成网页采集、客户回访、资料整理和日报输出。","active",Ae(10,35),[{id:"contact",title:"读取供应商联系人",status:"completed",preferredSkills:["whitecollar-day-legacy-contact"],tasks:[Pe("whitecollar-day","contact","整理联系人名单","completed","whitecollar-day-legacy-contact",Ae(8,30),Ae(8,33))]},{id:"news",title:"读取行业动态",status:"completed",preferredSkills:["whitecollar-day-legacy-news"],tasks:[Pe("whitecollar-day","news","整理行业动态摘要","completed","whitecollar-day-legacy-news",Ae(8,35),Ae(8,41))]},{id:"form",title:"预填客户回访登记",status:"completed",preferredSkills:["whitecollar-day-legacy-form"],tasks:[Pe("whitecollar-day","form","填充回访登记表","completed","whitecollar-day-legacy-form",Ae(8,45),Ae(8,51))]},{id:"compare",title:"比对设备方案",status:"running",preferredSkills:["whitecollar-day-legacy-compare"],tasks:[Pe("whitecollar-day","compare","生成方案差异结论","running","whitecollar-day-legacy-compare",Ae(10,28),null)]},{id:"todos",title:"读取待办系统",status:"pending",preferredSkills:["whitecollar-day-legacy-todos"],tasks:[Pe("whitecollar-day","todos","汇总个人待办","pending","whitecollar-day-legacy-todos",null,null)]},{id:"customers",title:"读取客户清单",status:"pending",preferredSkills:["whitecollar-day-legacy-customers"],tasks:[Pe("whitecollar-day","customers","提取重点客户","pending","whitecollar-day-legacy-customers",null,null)]},{id:"download",title:"识别最新资料下载链接",status:"pending",preferredSkills:["whitecollar-day-legacy-download"],tasks:[Pe("whitecollar-day","download","识别最新制度材料","pending","whitecollar-day-legacy-download",null,null)]},{id:"email",title:"生成客户跟进邮件",status:"pending",preferredSkills:["whitecollar-day-legacy-email"],tasks:[Pe("whitecollar-day","email","生成回访邮件草稿","pending","whitecollar-day-legacy-email",null,null)]},{id:"daily-report",title:"生成工作日报",status:"pending",preferredSkills:["whitecollar-day-legacy-daily-report"],tasks:[Pe("whitecollar-day","daily-report","生成工作日报","pending","whitecollar-day-legacy-daily-report",null,null)]},{id:"tomorrow-plan",title:"生成明日计划",status:"pending",preferredSkills:["whitecollar-day-legacy-tomorrow-plan"],tasks:[Pe("whitecollar-day","tomorrow-plan","整理明日计划","pending","whitecollar-day-legacy-tomorrow-plan",null,null)]}]),ua("whitecollar-day-0830-browser-portal-check","白领一天 08:30 工作台巡检","巡检工作台首页、待办数量和关键入口状态。","completed",Ae(8,34),[{id:"browser-portal-check",title:"浏览器工作台巡检",status:"completed",preferredSkills:["whitecollar-day-browser-portal-check"],tasks:[Pe("whitecollar-day-0830-browser-portal-check","browser-portal-check","检查门户首页与入口","completed","whitecollar-day-browser-portal-check",Ae(8,30),Ae(8,34))]}]),ua("whitecollar-day-0900-browser-inbox-triage","白领一天 09:00 收件箱分拣","识别高优先级通知并形成今日待办。","completed",Ae(9,6),[{id:"browser-inbox-triage",title:"浏览器收件箱分拣",status:"completed",preferredSkills:["whitecollar-day-browser-inbox-triage"],tasks:[Pe("whitecollar-day-0900-browser-inbox-triage","browser-inbox-triage","分拣通知与邮件","completed","whitecollar-day-browser-inbox-triage",Ae(9,0),Ae(9,6))]}]),ua("whitecollar-day-0930-calendar-brief","白领一天 09:30 日程简报","整理会议、回访与汇报节点,形成上午排程。","completed",Ae(9,32),[{id:"calendar-brief",title:"生成日程简报",status:"completed",preferredSkills:["whitecollar-day-calendar-brief"],tasks:[Pe("whitecollar-day-0930-calendar-brief","calendar-brief","整理今日日程","completed","whitecollar-day-calendar-brief",Ae(9,30),Ae(9,32))]}]),ua("whitecollar-day-1030-browser-crm-followup","白领一天 10:30 客户跟进","汇总重点客户情况,生成下一步回访建议。","running",Ae(10,35),[{id:"browser-crm-followup",title:"浏览器客户跟进",status:"running",preferredSkills:["whitecollar-day-browser-crm-followup"],tasks:[Pe("whitecollar-day-1030-browser-crm-followup","browser-crm-followup","提取客户回访摘要","running","whitecollar-day-browser-crm-followup",Ae(10,30),null)]}]),ua("whitecollar-day-1130-browser-expense-approval","白领一天 11:30 费用审批核对","检查待审批单据并输出异常说明。","approved",Ae(11,20),[{id:"browser-expense-approval",title:"浏览器费用审批核对",status:"pending",preferredSkills:["whitecollar-day-browser-expense-approval"],tasks:[Pe("whitecollar-day-1130-browser-expense-approval","browser-expense-approval","核对费用审批单","pending","whitecollar-day-browser-expense-approval",null,null)]}]),ua("whitecollar-day-1330-sales-snapshot","白领一天 13:30 经营快照","汇总客户、项目和经营看板,形成午后快照。","draft",Ae(13,20),[{id:"sales-snapshot",title:"生成经营快照",status:"pending",preferredSkills:["whitecollar-day-sales-snapshot"],tasks:[Pe("whitecollar-day-1330-sales-snapshot","sales-snapshot","整理经营快照","pending","whitecollar-day-sales-snapshot",null,null)]}]),ua("whitecollar-day-1430-report-export","白领一天 14:30 报表导出","导出领导汇报所需的简版统计报表。","draft",Ae(14,10),[{id:"report-export",title:"导出汇报报表",status:"pending",preferredSkills:["whitecollar-day-report-export"],tasks:[Pe("whitecollar-day-1430-report-export","report-export","导出统计报表","pending","whitecollar-day-report-export",null,null)]}]),ua("whitecollar-day-1530-browser-knowledge-check","白领一天 15:30 知识库核查","核查制度、模板与常见问题资料是否最新。","draft",Ae(15,15),[{id:"browser-knowledge-check",title:"浏览器知识库核查",status:"pending",preferredSkills:["whitecollar-day-browser-knowledge-check"],tasks:[Pe("whitecollar-day-1530-browser-knowledge-check","browser-knowledge-check","核查知识库资料","pending","whitecollar-day-browser-knowledge-check",null,null)]}]),ua("whitecollar-day-1630-task-board-sync","白领一天 16:30 任务看板同步","把今日处理结果同步到看板和协同清单。","draft",Ae(16,10),[{id:"task-board-sync",title:"同步任务看板",status:"pending",preferredSkills:["whitecollar-day-task-board-sync"],tasks:[Pe("whitecollar-day-1630-task-board-sync","task-board-sync","同步任务状态","pending","whitecollar-day-task-board-sync",null,null)]}]),ua("whitecollar-day-1730-browser-day-close","白领一天 17:30 日终收口","汇总今日成果、风险和明日重点,形成日终总结。","draft",Ae(17,10),[{id:"task-board-sync",title:"同步任务看板",status:"pending",preferredSkills:["whitecollar-day-task-board-sync"],tasks:[Pe("whitecollar-day-1730-browser-day-close","task-board-sync","同步看板结果","pending","whitecollar-day-task-board-sync",null,null)]},{id:"browser-day-close",title:"浏览器日终收口",status:"pending",preferredSkills:["whitecollar-day-browser-day-close"],tasks:[Pe("whitecollar-day-1730-browser-day-close","browser-day-close","整理日终收口","pending","whitecollar-day-browser-day-close",null,null)]}]),ua("zhihu-hotlist-monitor","知乎热榜采集","通过计划模板调用知乎热榜采集技能,导出表格文件并生成当天热点摘要。","approved",Ae(10,12),[{id:"collect-zhihu",title:"采集知乎热榜",status:"pending",preferredSkills:["zhihu-hotlist"],tasks:[Pe("zhihu-hotlist-monitor","collect-zhihu","采集知乎热榜","pending","zhihu-hotlist",null,null)]},{id:"export-xlsx",title:"导出表格文件",status:"pending",preferredSkills:["office-export-xlsx"],tasks:[Pe("zhihu-hotlist-monitor","export-xlsx","导出热榜表格","pending","office-export-xlsx",null,null)]}])];function Cx(n){return{...n,steps:n.steps.map(i=>({...i,preferredSkills:[...i.preferredSkills],tasks:i.tasks.map(r=>({...r}))})),sourceIds:{planId:n.sourceIds.planId,taskIds:[...n.sourceIds.taskIds]}}}function _s(){return Ax.map(Cx)}function Jp(){return Tx.map(n=>({...n}))}function Dx(n){return n.flatMap(i=>i.steps.flatMap(r=>r.tasks.map(o=>({task_id:o.id,title:o.title,status:o.status,plan_id:i.id,step_id:r.id,assigned_skill_id:o.assignedSkillId||"",description:`${i.title} · ${r.title}`,created_at:i.createdAt||Ae(8,0),updated_at:i.updatedAt||i.createdAt||Ae(8,0),started_at:o.startedAt,finished_at:o.finishedAt}))))}function zx(n){return n.filter(i=>["completed","running"].includes(i.status)).map((i,r)=>({run_id:`demo-run-${r+1}`,task_id:i.task_id,plan_id:i.plan_id,attempt_no:1,lifecycle:i.status==="running"?"Running":"Succeeded",created_at:i.started_at||i.created_at,completed_at:i.finished_at}))}function Rx(n){const i=n.steps.find(o=>o.status==="running")||n.steps.find(o=>o.status==="pending")||n.steps[0],r=[{event_id:`${n.id}-event-1`,kind:"entered_session",occurred_at:n.createdAt||Ae(8,0),message:`已接收场景:${n.title}`},{event_id:`${n.id}-event-2`,kind:"start",occurred_at:n.updatedAt||n.createdAt||Ae(8,0),message:`当前目标:${n.objective}`}];return i&&r.push({event_id:`${n.id}-event-3`,kind:n.status==="completed"?"completed":n.status==="approved"||n.status==="draft"?"pending_authorization":"RunStarted",occurred_at:n.updatedAt||n.createdAt||Ae(8,0),message:`${i.title}`}),n.status==="completed"&&r.push({event_id:`${n.id}-event-4`,kind:"RunCompleted",occurred_at:n.updatedAt||n.createdAt||Ae(8,0),message:"已完成本场景执行并回写结果。"}),r}function Zo(n){const i=n.steps.filter(d=>d.status==="completed").length,r=n.steps.find(d=>d.status==="running"),o=n.status==="completed"?`当前已完成全部 ${n.steps.length} 个步骤,结果已整理完毕。`:r?`当前正在处理“${r.title}”,已完成 ${i} 个步骤。`:"当前场景已准备就绪,可直接发起执行。";return[{role:"user",content:`请执行场景:${n.title}`},{role:"assistant",content:`已接收。业务目标:${n.objective}`},{role:"assistant",content:o}]}function Vo(n,i){return n.map(r=>r.id!==i?r:{...r,status:"running",updatedAt:new Date().toISOString(),steps:r.steps.map((o,d)=>({...o,status:d===0?"running":o.status==="completed"?"completed":"pending",tasks:o.tasks.map(m=>({...m,status:d===0?"running":m.status==="completed"?"completed":"pending",startedAt:d===0?new Date().toISOString():m.startedAt,finishedAt:d===0?null:m.finishedAt}))}))})}function Jo(n,i){return n.map(r=>r.id!==i?r:{...r,status:"completed",updatedAt:new Date().toISOString(),steps:r.steps.map(o=>({...o,status:"completed",tasks:o.tasks.map(d=>({...d,status:"completed",startedAt:d.startedAt||new Date().toISOString(),finishedAt:new Date().toISOString()}))}))})}function Fp(n){switch(n){case"succeeded":case"completed":case"Succeeded":return"success";case"failed":return"danger";case"Failed":return"danger";case"running":case"active":case"Running":return"info";default:return"warning"}}function Un(n){return n?new Date(n).toLocaleString("zh-CN",{hour12:!1}):"未记录"}function Wp(n){const i=`${n.id} ${n.title} ${n.objective}`.toLowerCase();return i.includes("month")||i.includes("monthly")||i.includes("月")?"月度任务":i.includes("week")||i.includes("weekly")||i.includes("周")?"周任务":i.includes("临时")||i.includes("adhoc")||i.includes("hotlist")||i.includes("monitor")?"临时任务":"日常任务"}function Mx(n){return["succeeded","success","finished","complete","completed"].includes(n.toLowerCase())}function Ss(n){return["failed","error","cancelled","canceled","aborted","rejected","deadletter"].includes(n.toLowerCase())}function Ip(n){const i=n.steps.length;if(i===0)return Qt(n.status);const r=n.steps.filter(p=>Mx(p.status)).length,o=n.steps.filter(p=>Ss(p.status)).length,d=n.steps.filter(p=>["running","active","queued","leased"].includes(p.status.toLowerCase())).length,m=[`已完成 ${r}/${i}`];return o>0&&m.push(`失败 ${o}`),d>0&&o===0&&m.push(`处理中 ${d}`),m.join(",")}function Pp(n){return n.replace(/^启动计划:/,"接收委托:").replace(/^准备步骤:/,"准备工作:").replace(/^创建任务:/,"安排工作:").replace(/^任务失败:/,"工作失败:").replace(/^开始处理:/,"开始处理:").replace(/^完成任务:/,"完成工作:").replace(/^调用技能:/,"数字员工处理:").replace(/^执行开始:/,"开始执行:").replace(/^执行完成:/,"执行完成:").replace(/^执行失败:/,"执行失败:").replace(/,将使用[^,。]+/,"").replace(/,分配给[^,。]+/,"")}function rc(n){return/失败|failed|error|timeout|unavailable/i.test(n)}function eg(n,i=""){return rc(i)?"失败":n==="artifact"?"产物":n==="task_summary"?"结果":n==="task_running"||n==="run"?"处理中":n==="task_done"||n==="run_done"?"完成":"过程"}function Ox(n){return n==="user"?"用户":n==="assistant"?"数字员工":n==="system"?"系统":"消息"}function Fo(n){return vs(n||"",n||"自动化技能")}function Lx(n,i,r){const o=i==="true"?"成功":"失败";return n.includes("zhihu-hotlist")&&n.includes("extract_hotlist")?`调用技能:知乎热榜采集,结果:${o},耗时 ${r}ms`:n.includes("office-export-xlsx")&&n.includes("export_xlsx")?`调用技能:Excel 导出,结果:${o},耗时 ${r}ms`:`调用技能:${n},结果:${o},耗时 ${r}ms`}function Wo(n){return typeof n=="string"?n:""}function gc(n){return n.occurred_at||""}function tg(n){return n.filter(i=>!!i).sort((i,r)=>i.localeCompare(r))[0]||null}function $x(n){var r;const i=new Map;for(const o of n){const d=((r=o.message.split(",结果:")[0])==null?void 0:r.split(",状态:")[0])||o.message,m=i.get(d);(!m||gc(o).localeCompare(gc(m))>0)&&i.set(d,o)}return Array.from(i.values())}function qx(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:null}function ag(n){return n.replace(/\\\\/g,"\\")}function Ux(n,i,r,o,d){const m=[],p=(h,y,E,S)=>{E.trim()&&m.push({event_id:S,kind:h,occurred_at:y??null,message:E})},v=(h,y,E,S)=>{let k=!1;try{const O=qx(JSON.parse(h));if(O){const G=typeof O.label=="string"?O.label.trim():"",I=O.value;G&&I!==void 0&&I!==null&&p("task_summary",y,`${G}:${String(I)}`,`metric-${E}-${S}`);const F=typeof O.output_path=="string"?O.output_path.trim():"";F&&(k=!0,p("artifact",y,`产物生成:${ag(F)}`,`artifact-${E}-${S}`))}}catch{}const R=h.match(/"row_count"\s*:\s*(\d+)/);R!=null&&R[1]&&p("task_summary",y,`数据处理完成:共 ${R[1]} 条记录`,`rows-${E}-${S}`);const T=h.match(/"output_path"\s*:\s*"([^"]+\.(?:xlsx|xls|csv|json|html|pdf|png|jpg|jpeg|txt))"/i),L=T==null?void 0:T[1];L&&!k&&p("artifact",y,`产物生成:${ag(L)}`,`artifact-regex-${E}-${S}`)};if(p("plan",n.createdAt||n.updatedAt,`启动计划:${n.title},目标:${n.objective}`,`plan-${n.id}`),i.length===0)for(const h of n.steps){const y=h.preferredSkills.map(Fo).join("、")||"自动化技能";p("task",n.updatedAt||n.createdAt,`准备步骤:${h.title},将使用 ${y}`,`step-${h.id}`)}for(const h of i){const y=Fo(h.assigned_skill_id),E=r.filter(R=>R.task_id===h.task_id),S=tg(E.map(R=>R.created_at)),k=tg([h.created_at,h.started_at,S]);if(p("task",k,`创建任务:${h.title||"子任务"},分配给 ${y}`,`task-create-${h.task_id}`),h.started_at&&p("task_running",h.started_at,`开始处理:${h.title||"子任务"}`,`task-start-${h.task_id}`),h.finished_at){const R=Ss(h.status)?"任务失败":"完成任务",T=Ss(h.status)&&h.error_message?`,原因:${h.error_message}`:"";p("task_done",h.finished_at,`${R}:${h.title||"子任务"},状态:${Qt(h.status)}${T}`,`task-finish-${h.task_id}`)}}for(const h of r){const y=i.find(R=>R.task_id===h.task_id),E=(y==null?void 0:y.title)||"任务执行",S=Fo(h.skill_id||(y==null?void 0:y.assigned_skill_id));if(o.some(R=>(R.content||"").includes(`[Task ${h.task_id}] tool_call`))||p("skill_tool",h.created_at,`调用技能:${S},处理:${E}`,`run-skill-${h.run_id}`),p("run",h.created_at,`执行开始:${E},第 ${h.attempt_no||1} 次`,`run-start-${h.run_id}`),h.completed_at){const R=Ss(h.lifecycle)?"执行失败":"执行完成";p("run_done",h.completed_at,`${R}:${E},结果:${Qt(h.lifecycle)}`,`run-done-${h.run_id}`)}for(const[R,T]of(h.events||[]).entries())v(Wo(T.message),T.occurred_at||h.completed_at||h.created_at,`run-${h.run_id}-${T.event_id||R}`,h.skill_id||(y==null?void 0:y.assigned_skill_id)||"run");for(const[R,T]of(h.artifacts||[]).entries()){const L=Wo(T.uri),O=Wo(T.name)||L;(L||O)&&p("artifact",h.completed_at||h.created_at,`产物生成:${O}${L&&L!==O?`(${L})`:""}`,`run-artifact-${h.run_id}-${R}`)}}for(const h of o){const y=h.content||"",E=y.match(/\[Task ([^\]]+)\] tool_call name=([^\s]+) success=(true|false) elapsed_ms=(\d+) args=(.*?) output=(.*)$/s);if(E){const k=E[1]||"",R=E[2]||"",T=E[3]||"false",L=E[4]||"0",O=E[6]||"";p("skill_tool",h.created_at,Lx(R,T,L),`tool-${k}-${h.created_at}-${R}`),v(O,h.created_at,`message-${h.created_at}`,R);continue}const S=y.match(/共采集到\s*\**\s*(\d+)\s*条/);if(S!=null&&S[1]){p("task_summary",h.created_at,`采集完成:获得 ${S[1]} 条知乎热榜数据`,`summary-hotlist-${h.created_at}`);continue}y.includes("[Task ")&&y.includes("Excel")&&p("task_summary",h.created_at,"导出完成:Excel 文件已生成",`summary-excel-${h.created_at}`)}if(m.length<=1)for(const h of d||[])p(h.kind,h.occurred_at,Pg(h.message,h.message),h.event_id);return m.sort((h,y)=>(h.occurred_at||"").localeCompare(y.occurred_at||"")).slice(-40)}function Bx({mission:n,onClose:i}){const[r,o]=b.useState([]),[d,m]=b.useState([]),[p,v]=b.useState(null),[h,y]=b.useState(!0),[E,S]=b.useState([]),[k,R]=b.useState(!1),[T,L]=b.useState(!1),[O,G]=b.useState(!1),[I,F]=b.useState(null),ne=n.sourceIds.planId||n.id;b.useEffect(()=>{let X=!1;const se=()=>{y(!0),Promise.allSettled([dS(ne),fS(ne),zp(ne)]).then(([D,Y,te])=>{var $;if(X)return;const fe=_s().find(K=>K.id===ne),be=fe?Dx([fe]):[],j=be.length>0?zx(be):[];D.status==="fulfilled"?(o(D.value.tasks&&D.value.tasks.length>0?D.value.tasks:be),m(D.value.runs&&D.value.runs.length>0?D.value.runs:j)):(o(be),m(j)),Y.status==="fulfilled"&&(($=Y.value)!=null&&$.events)&&Y.value.events.length>0?v(Y.value):v(fe?{events:Rx(fe)}:null),te.status==="fulfilled"&&te.value.messages.length>0?S(te.value.messages):S(fe?Zo(fe):[])}).finally(()=>{X||y(!1)})};se();const H=window.setInterval(se,3e3);return()=>{X=!0,window.clearInterval(H)}},[ne]),b.useEffect(()=>{S([]),R(!1),L(!1),F(null)},[ne]);const ie=async()=>{if(!O){R(!0),G(!0),F(null);try{const X=await zp(ne);if(X.messages&&X.messages.length>0)S(X.messages);else{const se=_s().find(H=>H.id===ne);S(se?Zo(se):[])}}catch(X){const se=_s().find(H=>H.id===ne);se?(S(Zo(se)),F(null)):(S([]),F(X instanceof Error?X.message:"读取会话失败"))}finally{G(!1)}}},he=b.useMemo(()=>{const X=new Map;for(const se of d){const H=X.get(se.task_id)||[];H.push(se),X.set(se.task_id,H)}for(const se of X.values())se.sort((H,D)=>(D.created_at||"").localeCompare(H.created_at||""));return X},[d]),Z=b.useMemo(()=>Ux(n,r,d,E,p==null?void 0:p.events),[p==null?void 0:p.events,n,d,E,r]),ee=b.useMemo(()=>Z.filter(X=>X.kind!=="skill_tool").slice(-12),[Z]),Te=b.useMemo(()=>{const X=Z.filter(Y=>["artifact","task_summary"].includes(Y.kind)),se=Z.filter(Y=>Y.kind==="task_done"),H=$x(Z.filter(Y=>Y.kind==="run_done")),D=se.length>0?se:H;return[...X,...D].sort((Y,te)=>gc(Y).localeCompare(gc(te))).slice(-6)},[Z]),rt=b.useMemo(()=>Z.reduce((X,se)=>se.occurred_at&&(!X||se.occurred_at.localeCompare(X)>0)?se.occurred_at:X,null),[Z]),Ze=n.updatedAt||rt,de=()=>{const X=!T;L(X),X&&!k&&ie()};return c.jsxs("div",{className:"de-drawer",role:"dialog","aria-label":n.title,children:[c.jsxs("div",{className:"de-drawer-head",children:[c.jsxs("div",{className:"de-drawer-title-group",children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"委托详情"}),c.jsx("h3",{children:n.title})]}),c.jsx("button",{className:"de-btn-secondary",onClick:i,"aria-label":"关闭",children:"✕"})]}),c.jsxs("div",{className:"de-drawer-status-line",children:[c.jsx(cd,{variant:Fp(n.status),label:Qt(n.status)}),c.jsx("span",{className:"de-drawer-meta",children:Wp(n)}),c.jsx("span",{className:"de-drawer-meta",children:Ip(n)})]}),c.jsxs("div",{className:"de-drawer-timeline",children:[c.jsxs("section",{className:"de-detail-section",children:[c.jsx("div",{className:"de-detail-section-head",children:c.jsx("h4",{children:"委托概览"})}),c.jsxs("div",{className:"de-detail-kv",children:[c.jsx("span",{children:"业务目标"}),c.jsx("strong",{children:n.objective||"未填写"}),c.jsx("span",{children:"周期"}),c.jsx("strong",{children:Wp(n)}),c.jsx("span",{children:"当前进度"}),c.jsx("strong",{children:Ip(n)}),c.jsx("span",{children:"启动时间"}),c.jsx("strong",{children:Un(n.createdAt)}),c.jsx("span",{children:"状态"}),c.jsx("strong",{children:Qt(n.status)}),c.jsx("span",{children:"更新时间"}),c.jsx("strong",{children:Un(Ze)})]})]}),c.jsxs("section",{className:"de-detail-section de-execution-chain",children:[c.jsxs("div",{className:"de-detail-section-head",children:[c.jsx("h4",{children:"业务过程"}),c.jsxs("span",{className:"de-chain-plan-id",children:["最近更新:",Un(Ze||n.createdAt)]})]}),h&&ee.length===0?c.jsx("p",{className:"de-empty-text",children:"正在读取业务过程..."}):ee.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无业务过程。重新执行本任务后会显示处理进展。"}):c.jsx("div",{className:"de-chain-list",children:ee.map(X=>c.jsxs("div",{className:`de-chain-row de-chain-row--${X.kind} ${rc(X.message)?"de-chain-row--danger":""}`,children:[c.jsx("strong",{children:eg(X.kind,X.message)}),c.jsx("span",{children:Pp(X.message)}),c.jsx("time",{children:Un(X.occurred_at)})]},`chain-${X.event_id}`))})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsx("h4",{children:"结果与产物"}),Te.length>0?c.jsx("div",{className:"de-event-list",children:[...Te].reverse().map(X=>c.jsxs("div",{className:`de-event-row ${rc(X.message)?"de-event-row--danger":""}`,children:[c.jsx("strong",{children:eg(X.kind,X.message)}),c.jsx("span",{children:Pp(X.message)}),c.jsx("time",{children:Un(X.occurred_at)})]},`result-${X.event_id}`))}):c.jsx("p",{className:"de-empty-text",children:"任务完成后,这里会显示结果摘要和产物入口。"})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsx("h4",{children:"步骤进展"}),h?c.jsx("p",{className:"de-empty-text",children:"正在读取执行情况..."}):null,n.steps.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无步骤进展"}):n.steps.map((X,se)=>c.jsxs("div",{className:"de-step-node",children:[c.jsx("div",{className:`de-step-dot de-step-dot--${X.status}`}),se0?c.jsx("div",{className:"de-event-list",children:Z.slice(-20).reverse().map(X=>c.jsxs("div",{className:`de-event-row ${rc(X.message)?"de-event-row--danger":""}`,children:[c.jsx("strong",{children:cx(X.kind)}),c.jsx("span",{children:X.message}),c.jsx("time",{children:Un(X.occurred_at)})]},X.event_id))}):c.jsx("p",{className:"de-empty-text",children:"暂无事件日志"})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsxs("div",{className:"de-detail-section-head",children:[c.jsx("h4",{children:"会话记录"}),c.jsx("button",{className:"de-btn-secondary de-btn-sm",onClick:ie,disabled:O,children:"刷新"})]}),I?c.jsxs("p",{className:"de-empty-text",children:["会话读取失败:",I]}):O?c.jsx("p",{className:"de-empty-text",children:"正在读取会话..."}):E.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无会话消息。"}):c.jsx("div",{className:"de-session-message-list",children:E.map((X,se)=>c.jsxs("div",{className:`de-session-message de-session-message--${X.role==="user"?"user":"agent"}`,children:[c.jsx("div",{className:"de-session-message-role",children:Ox(X.role)}),c.jsx("p",{children:Pg(X.content,X.content)})]},`${X.role}-${se}`))})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsx("h4",{children:"任务与执行记录"}),r.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无原始任务记录"}):r.map(X=>{const se=he.get(X.task_id)||[],H=se[0];return c.jsxs("div",{className:"de-task-run-card",children:[c.jsxs("div",{className:"de-task-run-head",children:[c.jsx("span",{children:X.title||"子任务"}),c.jsx(cd,{variant:Fp(X.status),label:Qt(X.status)})]}),c.jsxs("div",{className:"de-task-run-meta",children:[c.jsxs("span",{children:["skill_id:",X.assigned_skill_id||"未分配"]}),c.jsxs("span",{children:["开始:",Un(X.started_at)]}),c.jsxs("span",{children:["结束:",Un(X.finished_at)]})]}),c.jsxs("div",{className:"de-task-run-meta",children:[c.jsxs("span",{children:["task_id:",X.task_id]}),c.jsxs("span",{children:["执行记录:",se.length," 次"]}),H?c.jsxs("span",{children:["最近结果:",Qt(H.lifecycle)]}):null]}),Ss(X.status)&&X.error_message?c.jsxs("div",{className:"de-task-run-error",children:[c.jsx("strong",{children:"失败原因:"}),X.error_message]}):null]},X.task_id)})]})]}):c.jsx("p",{className:"de-empty-text",children:"默认隐藏排障信息;需要排障时可展开。"})]})]})]})}const ng={zh:{"nav.dashboard":"仪表盘","nav.plans":"计划","nav.execution":"执行","nav.governance":"治理","nav.scheduler":"调度器","nav.skills":"技能","nav.agent":"智能体","nav.tools":"工具","nav.cron":"Cron 任务","nav.integrations":"集成","nav.memory":"记忆","nav.config":"配置","nav.cost":"成本追踪","nav.logs":"日志","nav.devtools":"工具","nav.swimlane":"泳道","nav.doctor":"诊断","nav.canvas":"画布","planb.nav.chat":"对话","planb.nav.browser":"AI浏览器","planb.nav.monitor":"运行监测","planb.nav.dashboard":"仪表盘","planb.nav.settings":"设置","planb.nav.more":"更多工具","planb.layout.switch_to_wide":"切换到宽屏模式","planb.layout.switch_to_compact":"切换到紧凑模式","planb.layout.pop_out":"弹出独立窗口","planb.browser.title":"AI浏览器","planb.browser.subtitle":"启动 SuperRPA 浏览器自动化","planb.browser.launch":"启动浏览器","planb.browser.url_placeholder":"https://example.com","planb.browser.active_sessions":"活跃会话","planb.browser.no_sessions":"没有活跃的浏览器会话,在上方输入 URL 启动。","planb.browser.status_launching":"启动中","planb.browser.status_running":"运行中","planb.browser.status_idle":"空闲","planb.browser.status_error":"错误","planb.browser.status_stopped":"已停止","planb.browser.launch_error":"启动浏览器失败","planb.browser.close_error":"关闭会话失败","planb.browser.backend_not_configured":"SuperRPA 未配置,请设置 SGCLAW_SUPERRPA_PATH 环境变量。","planb.chat.welcome":"今天我能帮你什么?","planb.chat.placeholder":"问点什么...","planb.chat.sessions":"对话历史","planb.chat.new_chat":"新对话","planb.chat.no_sessions":"暂无对话历史","planb.chat.untitled":"未命名对话","planb.chat.thought":"思考","planb.chat.chip_browse":"浏览网页","planb.chat.chip_code":"写代码","planb.chat.chip_analyze":"分析数据","planb.chat.chip_plan":"帮我规划","planb.chat.regenerate":"重新生成","planb.settings.quick":"快速设置","planb.settings.advanced":"高级配置","planb.settings.quick_hint":"快速设置功能即将推出。现在请使用高级配置编辑器修改 TOML 配置。","planb.settings.open_advanced":"打开高级配置","dashboard.title":"仪表盘","dashboard.provider":"提供商","dashboard.model":"模型","dashboard.uptime":"运行时间","dashboard.temperature":"温度","dashboard.gateway_port":"网关端口","dashboard.memory_backend":"记忆后端","dashboard.paired":"已配对","dashboard.channels":"频道","dashboard.health":"健康状态","dashboard.status":"状态","dashboard.overview":"概览","dashboard.system_info":"系统信息","dashboard.quick_actions":"快速操作","agent.title":"智能体对话","agent.send":"发送","agent.placeholder":"输入消息...","agent.start_conversation":"发送消息开始对话","agent.type_message":"输入消息...","agent.connecting":"连接中...","agent.connected":"已连接","agent.disconnected":"已断开","agent.reconnecting":"重新连接中...","agent.thinking":"思考中...","agent.tool_call":"工具调用","agent.tool_result":"工具结果","agent.connection_error":"连接错误,正在尝试重连...","agent.tool_call_prefix":"[工具调用]","agent.tool_result_prefix":"[工具结果]","agent.error_prefix":"[错误]","agent.unknown_error":"未知错误","agent.send_error":"发送消息失败,请重试。","agent.copy_message":"复制消息","agent.connected_status":"已连接","agent.disconnected_status":"已断开","tools.title":"可用工具","tools.name":"名称","tools.description":"描述","tools.parameters":"参数","tools.search":"搜索工具...","tools.empty":"暂无可用工具。","tools.count":"工具总数","tools.agent_tools":"智能体工具箱","tools.cli_tools":"CLI 工具箱","tools.parameter_schema":"参数结构","tools.path":"路径","tools.version":"版本","tools.category":"类别","tools.load_error":"加载工具失败","cron.title":"定时任务","cron.scheduled_tasks":"定时任务","cron.add":"添加任务","cron.add_job":"添加任务","cron.add_modal_title":"添加 Cron 任务","cron.delete":"删除","cron.enable":"启用","cron.disable":"禁用","cron.name":"名称","cron.name_optional":"名称(可选)","cron.command":"命令","cron.command_required":"命令","cron.schedule":"计划","cron.schedule_required":"计划","cron.next_run":"下次执行","cron.last_run":"上次执行","cron.last_status":"上次状态","cron.enabled":"已启用","cron.enabled_status":"启用","cron.disabled_status":"禁用","cron.empty":"暂无定时任务。","cron.confirm_delete":"确定要删除此任务吗?","cron.load_error":"加载定时任务失败","cron.validation_error":"计划和命令是必需的。","cron.add_error":"添加任务失败","cron.delete_error":"删除任务失败","cron.cancel":"取消","cron.adding":"添加中...","cron.id":"ID","cron.actions":"操作","cron.loading_run_history":"加载运行历史...","cron.load_run_history_error":"加载运行历史失败","cron.no_runs":"暂无运行记录。","cron.recent_runs":"最近运行","cron.yes":"是","cron.no":"否","cron.edit":"编辑","cron.edit_modal_title":"编辑 Cron 任务","cron.edit_error":"更新任务失败","cron.saving":"保存中...","cron.save":"保存","integrations.title":"集成","integrations.available":"可用","integrations.active":"活跃","integrations.coming_soon":"即将推出","integrations.category":"类别","integrations.status":"状态","integrations.search":"搜索集成...","integrations.empty":"未找到集成。","integrations.activate":"激活","integrations.deactivate":"停用","integrations.load_error":"加载集成失败","integrations.status_active":"活跃","integrations.status_available":"可用","integrations.status_coming_soon":"即将推出","memory.title":"记忆存储","memory.memory_title":"记忆","memory.search":"搜索记忆...","memory.search_placeholder":"搜索记忆条目...","memory.add":"存储记忆","memory.add_memory":"添加记忆","memory.add_modal_title":"添加记忆","memory.delete":"删除","memory.key":"键","memory.key_required":"键","memory.content":"内容","memory.content_required":"内容","memory.category":"类别","memory.category_optional":"类别(可选)","memory.timestamp":"时间戳","memory.session":"会话","memory.score":"分数","memory.empty":"未找到记忆条目。","memory.confirm_delete":"确定要删除此记忆条目吗?","memory.all_categories":"所有类别","memory.search_button":"搜索","memory.load_error":"加载记忆失败","memory.saving":"保存中...","memory.validation_error":"键和内容是必需的。","memory.store_error":"保存记忆失败","memory.delete_error":"删除记忆失败","memory.delete_confirm":"删除?","memory.yes":"是","memory.no":"否","memory.cancel":"取消","config.title":"配置","config.save":"保存","config.saving":"保存中...","config.reset":"重置","config.saved":"配置保存成功。","config.error":"配置保存失败。","config.loading":"加载配置中...","config.editor_placeholder":"TOML 配置...","config.configuration_title":"配置","config.sensitive_title":"敏感字段已隐藏","config.sensitive_hint":"API 密钥、令牌和密码已隐藏以保护安全。要更新已隐藏的字段,请将整个隐藏值替换为您的新值。","config.save_success":"配置保存成功。","config.save_error":"保存配置失败","config.toml_label":"TOML 配置","config.lines":"行","cost.title":"成本追踪","cost.session":"会话成本","cost.daily":"每日成本","cost.monthly":"每月成本","cost.total_tokens":"总 Tokens","cost.request_count":"请求数","cost.by_model":"按模型统计","cost.model":"模型","cost.tokens":"Token","cost.requests":"请求","cost.usd":"成本(美元)","cost.load_error":"加载成本数据失败","cost.session_cost":"会话成本","cost.daily_cost":"每日成本","cost.monthly_cost":"每月成本","cost.total_requests":"总请求数","cost.token_statistics":"Token 统计","cost.avg_tokens_per_request":"平均 Token / 请求","cost.cost_per_1k_tokens":"每 1K Token 成本","cost.model_breakdown":"模型细分","cost.no_model_data":"没有模型数据可用。","cost.cost":"成本","cost.share":"占比","logs.title":"实时日志","logs.live_logs":"实时日志","logs.clear":"清除","logs.pause":"暂停","logs.resume":"继续","logs.filter":"筛选日志...","logs.filter_label":"筛选","logs.empty":"暂无日志条目。","logs.connected":"已连接","logs.disconnected":"已断开","logs.events":"事件","logs.jump_to_bottom":"跳转到底部","logs.paused_hint":"日志流已暂停。","logs.waiting_hint":"等待事件...","doctor.title":"系统诊断","doctor.diagnostics_title":"系统诊断","doctor.run":"运行诊断","doctor.run_diagnostics":"运行诊断","doctor.running":"正在运行诊断...","doctor.running_btn":"运行中...","doctor.running_desc":"正在运行诊断...","doctor.running_hint":"这可能需要几秒钟。","doctor.ok":"正常","doctor.warn":"警告","doctor.error":"错误","doctor.severity":"严重程度","doctor.category":"类别","doctor.message":"消息","doctor.empty":"尚未运行诊断。","doctor.summary":"诊断摘要","doctor.issues_found":"发现问题","doctor.warnings_summary":"警告","doctor.all_clear":"一切正常","doctor.system_diagnostics":"系统诊断","doctor.empty_hint":'点击"运行诊断"检查您的 ZeroClaw 安装。',"auth.pair":"配对设备","auth.pairing_code":"配对码","auth.pair_button":"配对","auth.logout":"退出","auth.pairing_success":"配对成功!","auth.pairing_failed":"配对失败,请重试。","auth.enter_code":"请输入配对码以连接到智能体。","common.loading":"加载中...","common.error":"发生错误。","common.retry":"重试","common.cancel":"取消","common.confirm":"确认","common.save":"保存","common.delete":"删除","common.edit":"编辑","common.close":"关闭","common.yes":"是","common.no":"否","common.search":"搜索...","common.no_data":"暂无数据。","common.refresh":"刷新","common.back":"返回","common.actions":"操作","common.name":"名称","common.description":"描述","common.status":"状态","common.created":"创建时间","common.updated":"更新时间","health.title":"系统健康","health.component":"组件","health.status":"状态","health.last_ok":"上次正常","health.last_error":"上次错误","health.restart_count":"重启次数","health.pid":"进程 ID","health.uptime":"运行时间","health.updated_at":"最后更新","dashboard.provider_model":"提供商 / 模型","dashboard.since_last_restart":"自上次重启","dashboard.paired_yes":"是","dashboard.paired_no":"否","dashboard.cost_overview":"成本概览","dashboard.active_channels":"活跃频道","dashboard.filter_active":"活跃","dashboard.filter_all":"全部","dashboard.no_active_channels":"没有活跃频道","dashboard.component_health":"组件健康","dashboard.load_error":"加载仪表盘失败","dashboard.session_label":"会话","dashboard.daily_label":"每日","dashboard.monthly_label":"每月","dashboard.total_tokens_label":"总 Tokens","dashboard.requests_label":"请求","dashboard.no_channels":"未配置频道","dashboard.active":"活跃","dashboard.inactive":"非活跃","dashboard.no_components":"没有组件报告","dashboard.restarts":"重启次数","dashboard.tab_overview":"概览","dashboard.tab_sessions":"会话","dashboard.tab_channels":"频道","dashboard.sessions_title":"活跃会话","dashboard.no_sessions":"没有活跃会话","dashboard.session_id":"会话 ID","dashboard.session_channel":"频道","dashboard.session_started":"开始时间","dashboard.session_last_activity":"最近活动","dashboard.session_status":"状态","dashboard.session_messages":"消息数","dashboard.session_details":"会话详情","dashboard.session_history":"查看历史","dashboard.channels_title":"频道状态","dashboard.no_channels_detail":"没有频道详情","dashboard.channel_type":"类型","dashboard.channel_messages":"消息数","dashboard.channel_last_message":"最近消息","dashboard.channel_config":"配置摘要","dashboard.channel_enabled":"已启用","dashboard.channel_disabled":"已禁用","dashboard.loading_sessions":"加载会话中...","dashboard.loading_channels":"加载频道中...","dashboard.load_sessions_error":"加载会话失败","dashboard.load_channels_error":"加载频道失败","dashboard.never":"从未","settings.title":"设置","settings.tab.appearance":"外观","settings.tab.typography":"排版","settings.appearance":"外观设置","settings.typography":"字体设置","settings.fontUi":"界面字体","settings.fontMono":"代码字体","settings.fontSize":"界面字号","settings.fontMonoSize":"代码字号","settings.preview":"预览","settings.previewText":"界面字体预览文本","settings.fontNote":"字体设置需要刷新页面后生效","settings.language":"界面语言","theme.mode":"主题模式","theme.accent":"强调色","theme.system":"跟随系统","theme.dark":"深色","theme.light":"浅色","theme.oled":"纯黑","console.nav.commandDeck":"指挥舱","console.nav.missionCenter":"任务中心","console.nav.skillLibrary":"技能库","console.nav.dailyReport":"日报","console.nav.settings":"设置","console.role.finance":"财务","console.role.engineering":"工程","console.role.executive":"管理","console.role.hr":"人事","console.role.sales":"销售","console.state.loading":"加载中...","console.state.empty":"暂无数据","console.state.backendDown":"后端服务不可达","console.state.partialData":"部分数据源加载失败","console.state.stale":"数据已过期","console.state.unauthorized":"未授权","console.action.refresh":"刷新","console.action.approve":"批准","console.action.reject":"驳回","console.action.retry":"重试","console.action.create":"新建任务","console.skill.capabilityLevel":"能力等级","console.skill.enable":"启用","console.skill.disable":"停用","console.skill.core":"核心","console.skill.standard":"标准","console.skill.specialized":"专业","console.skill.experimental":"实验","console.report.dailyTitle":"日报","console.report.sourceLinks":"数据来源","console.report.noEvents":"当日无执行记录"},en:{"nav.dashboard":"Dashboard","nav.plans":"Plans","nav.execution":"Execution","nav.governance":"Governance","nav.scheduler":"Scheduler","nav.skills":"Skills","nav.agent":"Agent","nav.tools":"Tools","nav.cron":"Cron Jobs","nav.integrations":"Integrations","nav.memory":"Memory","nav.config":"Configuration","nav.cost":"Cost Tracker","nav.logs":"Logs","nav.devtools":"Tools","nav.swimlane":"Swimlane","nav.doctor":"Doctor","nav.canvas":"Canvas","planb.nav.chat":"Chat","planb.nav.browser":"AI Browser","planb.nav.dashboard":"Dashboard","planb.nav.settings":"Settings","planb.nav.more":"More Tools","planb.layout.switch_to_wide":"Switch to Desktop","planb.layout.switch_to_compact":"Switch to Compact","planb.layout.pop_out":"Pop Out Window","planb.browser.title":"AI Browser","planb.browser.subtitle":"Launch SuperRPA browser automation","planb.browser.launch":"Launch Browser","planb.browser.url_placeholder":"https://example.com","planb.browser.active_sessions":"Active Sessions","planb.browser.no_sessions":"No active browser sessions. Launch one above.","planb.browser.status_launching":"Launching","planb.browser.status_running":"Running","planb.browser.status_idle":"Idle","planb.browser.status_error":"Error","planb.browser.status_stopped":"Stopped","planb.browser.launch_error":"Failed to launch browser","planb.browser.close_error":"Failed to close session","planb.browser.backend_not_configured":"SuperRPA is not configured. Set SGCLAW_SUPERRPA_PATH environment variable.","planb.chat.welcome":"How can I help you today?","planb.chat.placeholder":"Ask anything...","planb.chat.sessions":"Chat History","planb.chat.new_chat":"New Chat","planb.chat.no_sessions":"No chat history","planb.chat.untitled":"Untitled","planb.chat.thought":"Thought","planb.chat.chip_browse":"Browse Web","planb.chat.chip_code":"Write Code","planb.chat.chip_analyze":"Analyze Data","planb.chat.chip_plan":"Plan Project","planb.chat.regenerate":"Regenerate","planb.settings.quick":"Quick Settings","planb.settings.advanced":"Advanced","planb.settings.quick_hint":"Quick settings are coming soon. Use the advanced editor to modify TOML configuration for now.","planb.settings.open_advanced":"Open Advanced Editor","dashboard.title":"Dashboard","dashboard.provider":"Provider","dashboard.model":"Model","dashboard.uptime":"Uptime","dashboard.temperature":"Temperature","dashboard.gateway_port":"Gateway Port","dashboard.memory_backend":"Memory Backend","dashboard.paired":"Paired","dashboard.channels":"Channels","dashboard.health":"Health","dashboard.status":"Status","dashboard.overview":"Overview","dashboard.system_info":"System Information","dashboard.quick_actions":"Quick Actions","agent.title":"Agent Chat","agent.send":"Send","agent.placeholder":"Type a message...","agent.start_conversation":"Send a message to start the conversation","agent.type_message":"Type a message...","agent.connecting":"Connecting...","agent.connected":"Connected","agent.disconnected":"Disconnected","agent.reconnecting":"Reconnecting...","agent.thinking":"Thinking...","agent.tool_call":"Tool Call","agent.tool_result":"Tool Result","agent.connection_error":"Connection error. Attempting to reconnect...","agent.tool_call_prefix":"[Tool Call]","agent.tool_result_prefix":"[Tool Result]","agent.error_prefix":"[Error]","agent.unknown_error":"Unknown error","agent.send_error":"Failed to send message. Please try again.","agent.copy_message":"Copy message","agent.connected_status":"Connected","agent.disconnected_status":"Disconnected","tools.title":"Available Tools","tools.name":"Name","tools.description":"Description","tools.parameters":"Parameters","tools.search":"Search tools...","tools.empty":"No tools available.","tools.count":"Total tools","tools.agent_tools":"Agent Tools","tools.cli_tools":"CLI Tools","tools.parameter_schema":"Parameter Schema","tools.path":"Path","tools.version":"Version","tools.category":"Category","tools.load_error":"Failed to load tools","cron.title":"Scheduled Jobs","cron.scheduled_tasks":"Scheduled Tasks","cron.add":"Add Job","cron.add_job":"Add Job","cron.add_modal_title":"Add Cron Job","cron.delete":"Delete","cron.enable":"Enable","cron.disable":"Disable","cron.name":"Name","cron.name_optional":"Name (optional)","cron.command":"Command","cron.command_required":"Command","cron.schedule":"Schedule","cron.schedule_required":"Schedule","cron.next_run":"Next Run","cron.last_run":"Last Run","cron.last_status":"Last Status","cron.enabled":"Enabled","cron.enabled_status":"Enabled","cron.disabled_status":"Disabled","cron.empty":"No scheduled jobs.","cron.confirm_delete":"Are you sure you want to delete this job?","cron.load_error":"Failed to load cron jobs","cron.validation_error":"Schedule and command are required.","cron.add_error":"Failed to add job","cron.delete_error":"Failed to delete job","cron.cancel":"Cancel","cron.adding":"Adding...","cron.id":"ID","cron.actions":"Actions","cron.loading_run_history":"Loading run history...","cron.load_run_history_error":"Failed to load run history","cron.no_runs":"No runs recorded yet.","cron.recent_runs":"Recent Runs","cron.yes":"Yes","cron.no":"No","cron.edit":"Edit","cron.edit_modal_title":"Edit Cron Job","cron.edit_error":"Failed to update job","cron.saving":"Saving...","cron.save":"Save","integrations.title":"Integrations","integrations.available":"Available","integrations.active":"Active","integrations.coming_soon":"Coming Soon","integrations.category":"Category","integrations.status":"Status","integrations.search":"Search integrations...","integrations.empty":"No integrations found.","integrations.activate":"Activate","integrations.deactivate":"Deactivate","integrations.load_error":"Failed to load integrations","integrations.status_active":"Active","integrations.status_available":"Available","integrations.status_coming_soon":"Coming Soon","memory.title":"Memory Store","memory.memory_title":"Memory","memory.search":"Search memory...","memory.search_placeholder":"Search memory entries...","memory.add":"Store Memory","memory.add_memory":"Add Memory","memory.add_modal_title":"Add Memory","memory.delete":"Delete","memory.key":"Key","memory.key_required":"Key","memory.content":"Content","memory.content_required":"Content","memory.category":"Category","memory.category_optional":"Category (optional)","memory.timestamp":"Timestamp","memory.session":"Session","memory.score":"Score","memory.empty":"No memory entries found.","memory.confirm_delete":"Are you sure you want to delete this memory entry?","memory.all_categories":"All Categories","memory.search_button":"Search","memory.load_error":"Failed to load memory","memory.saving":"Saving...","memory.validation_error":"Key and content are required.","memory.store_error":"Failed to store memory","memory.delete_error":"Failed to delete memory","memory.delete_confirm":"Delete?","memory.yes":"Yes","memory.no":"No","memory.cancel":"Cancel","config.title":"Configuration","config.save":"Save","config.saving":"Saving...","config.reset":"Reset","config.saved":"Configuration saved successfully.","config.error":"Failed to save configuration.","config.loading":"Loading configuration...","config.editor_placeholder":"TOML configuration...","config.configuration_title":"Configuration","config.sensitive_title":"Sensitive fields are masked","config.sensitive_hint":"API keys, tokens, and passwords are hidden for security. To update a masked field, replace the entire masked value with your new value.","config.save_success":"Configuration saved successfully.","config.save_error":"Failed to save configuration","config.toml_label":"TOML Configuration","config.lines":"lines","cost.title":"Cost Tracker","cost.session":"Session Cost","cost.daily":"Daily Cost","cost.monthly":"Monthly Cost","cost.total_tokens":"Total Tokens","cost.request_count":"Requests","cost.by_model":"Cost by Model","cost.model":"Model","cost.tokens":"Tokens","cost.requests":"Requests","cost.usd":"Cost (USD)","cost.load_error":"Failed to load cost data","cost.session_cost":"Session Cost","cost.daily_cost":"Daily Cost","cost.monthly_cost":"Monthly Cost","cost.total_requests":"Total Requests","cost.token_statistics":"Token Statistics","cost.avg_tokens_per_request":"Avg Tokens / Request","cost.cost_per_1k_tokens":"Cost per 1K Tokens","cost.model_breakdown":"Model Breakdown","cost.no_model_data":"No model data available.","cost.cost":"Cost","cost.share":"Share","logs.title":"Live Logs","logs.live_logs":"Live Logs","logs.clear":"Clear","logs.pause":"Pause","logs.resume":"Resume","logs.filter":"Filter logs...","logs.filter_label":"Filter","logs.empty":"No log entries.","logs.connected":"Connected","logs.disconnected":"Disconnected","logs.events":"events","logs.jump_to_bottom":"Jump to bottom","logs.paused_hint":"Log streaming is paused.","logs.waiting_hint":"Waiting for events...","doctor.title":"System Diagnostics","doctor.diagnostics_title":"Diagnostics","doctor.run":"Run Diagnostics","doctor.run_diagnostics":"Run Diagnostics","doctor.running":"Running diagnostics...","doctor.running_btn":"Running...","doctor.running_desc":"Running diagnostics...","doctor.running_hint":"This may take a few seconds.","doctor.ok":"OK","doctor.warn":"Warning","doctor.error":"Error","doctor.severity":"Severity","doctor.category":"Category","doctor.message":"Message","doctor.empty":"No diagnostics have been run yet.","doctor.summary":"Diagnostic Summary","doctor.issues_found":"Issues Found","doctor.warnings_summary":"Warnings","doctor.all_clear":"All Clear","doctor.system_diagnostics":"System Diagnostics","doctor.empty_hint":'Click "Run Diagnostics" to check your ZeroClaw installation.',"auth.pair":"Pair Device","auth.pairing_code":"Pairing Code","auth.pair_button":"Pair","auth.logout":"Logout","auth.pairing_success":"Pairing successful!","auth.pairing_failed":"Pairing failed. Please try again.","auth.enter_code":"Enter your pairing code to connect to the agent.","common.loading":"Loading...","common.error":"An error occurred.","common.retry":"Retry","common.cancel":"Cancel","common.confirm":"Confirm","common.save":"Save","common.delete":"Delete","common.edit":"Edit","common.close":"Close","common.yes":"Yes","common.no":"No","common.search":"Search...","common.no_data":"No data available.","common.refresh":"Refresh","common.back":"Back","common.actions":"Actions","common.name":"Name","common.description":"Description","common.status":"Status","common.created":"Created","common.updated":"Updated","health.title":"System Health","health.component":"Component","health.status":"Status","health.last_ok":"Last OK","health.last_error":"Last Error","health.restart_count":"Restarts","health.pid":"Process ID","health.uptime":"Uptime","health.updated_at":"Last Updated","dashboard.provider_model":"Provider / Model","dashboard.since_last_restart":"Since last restart","dashboard.paired_yes":"Yes","dashboard.paired_no":"No","dashboard.cost_overview":"Cost Overview","dashboard.active_channels":"Active Channels","dashboard.filter_active":"Active","dashboard.filter_all":"All","dashboard.no_active_channels":"No active channels","dashboard.component_health":"Component Health","dashboard.load_error":"Failed to load dashboard","dashboard.session_label":"Session","dashboard.daily_label":"Daily","dashboard.monthly_label":"Monthly","dashboard.total_tokens_label":"Total Tokens","dashboard.requests_label":"Requests","dashboard.no_channels":"No channels configured","dashboard.active":"Active","dashboard.inactive":"Inactive","dashboard.no_components":"No components reporting","dashboard.restarts":"Restarts","dashboard.tab_overview":"Overview","dashboard.tab_sessions":"Sessions","dashboard.tab_channels":"Channels","dashboard.sessions_title":"Active Sessions","dashboard.no_sessions":"No active sessions","dashboard.session_id":"Session ID","dashboard.session_channel":"Channel","dashboard.session_started":"Started","dashboard.session_last_activity":"Last Activity","dashboard.session_status":"Status","dashboard.session_messages":"Messages","dashboard.session_details":"Session Details","dashboard.session_history":"View History","dashboard.channels_title":"Channel Status","dashboard.no_channels_detail":"No channel details available","dashboard.channel_type":"Type","dashboard.channel_messages":"Messages","dashboard.channel_last_message":"Last Message","dashboard.channel_config":"Configuration","dashboard.channel_enabled":"Enabled","dashboard.channel_disabled":"Disabled","dashboard.loading_sessions":"Loading sessions...","dashboard.loading_channels":"Loading channels...","dashboard.load_sessions_error":"Failed to load sessions","dashboard.load_channels_error":"Failed to load channels","dashboard.never":"Never","settings.title":"Settings","settings.tab.appearance":"Appearance","settings.tab.typography":"Typography","settings.appearance":"Appearance","settings.typography":"Typography","settings.fontUi":"UI Font","settings.fontMono":"Code Font","settings.fontSize":"UI Font Size","settings.fontMonoSize":"Code Font Size","settings.preview":"Preview","settings.previewText":"The quick brown fox jumps over the lazy dog.","settings.fontNote":"Font changes apply on page reload.","settings.language":"Language","theme.mode":"Theme Mode","theme.accent":"Accent Color","theme.system":"System","theme.dark":"Dark","theme.light":"Light","theme.oled":"OLED Black","console.nav.commandDeck":"Command Deck","console.nav.missionCenter":"Mission Center","console.nav.skillLibrary":"Skill Library","console.nav.dailyReport":"Daily Report","console.nav.settings":"Settings","console.role.finance":"Finance","console.role.engineering":"Engineering","console.role.executive":"Executive","console.role.hr":"HR","console.role.sales":"Sales","console.state.loading":"Loading...","console.state.empty":"No data","console.state.backendDown":"Backend unreachable","console.state.partialData":"Partial data loaded","console.state.stale":"Data stale","console.state.unauthorized":"Unauthorized","console.action.refresh":"Refresh","console.action.approve":"Approve","console.action.reject":"Reject","console.action.retry":"Retry","console.action.create":"Create","console.skill.capabilityLevel":"Capability Level","console.skill.enable":"Enable","console.skill.disable":"Disable","console.skill.core":"Core","console.skill.standard":"Standard","console.skill.specialized":"Specialized","console.skill.experimental":"Experimental","console.report.dailyTitle":"Daily Report","console.report.sourceLinks":"Source Links","console.report.noEvents":"No events today"},tr:{"nav.dashboard":"Kontrol Paneli","nav.plans":"Planlar","nav.execution":"Yürütme","nav.governance":"Yönetişim","nav.scheduler":"Zamanlayıcı","nav.skills":"Beceriler","nav.agent":"Ajan","nav.tools":"Araçlar","nav.cron":"Cron Görevleri","nav.integrations":"Entegrasyonlar","nav.memory":"Hafıza","nav.config":"Yapılandırma","nav.cost":"Maliyet Takibi","nav.logs":"Kayıtlar","nav.devtools":"Araçlar","nav.swimlane":"Yüzme Şeridi","nav.doctor":"Doktor","nav.canvas":"Tuval","planb.nav.chat":"Sohbet","planb.nav.browser":"AI Tarayıcı","planb.nav.dashboard":"Kontrol Paneli","planb.nav.settings":"Ayarlar","planb.nav.more":"Daha Fazla","planb.layout.switch_to_wide":"Masaüstüne Geç","planb.layout.switch_to_compact":"Kompakta Geç","planb.layout.pop_out":"Pencereyi Ayır","planb.browser.title":"AI Tarayıcı","planb.browser.subtitle":"SuperRPA tarayıcı otomasyonunu başlat","planb.browser.launch":"Tarayıcıyı Başlat","planb.browser.url_placeholder":"https://example.com","planb.browser.active_sessions":"Aktif Oturumlar","planb.browser.no_sessions":"Aktif tarayıcı oturumu yok.","planb.browser.status_launching":"Başlatılıyor","planb.browser.status_running":"Çalışıyor","planb.browser.status_idle":"Boşta","planb.browser.status_error":"Hata","planb.browser.status_stopped":"Durduruldu","planb.browser.launch_error":"Tarayıcı başlatılamadı","planb.browser.close_error":"Oturum kapatılamadı","planb.browser.backend_not_configured":"SuperRPA yapılandırılmamış.","planb.chat.welcome":"Bugün size nasıl yardımcı olabilirim?","planb.chat.placeholder":"Bir şey sor...","planb.chat.sessions":"Sohbet Geçmişi","planb.chat.new_chat":"Yeni Sohbet","planb.chat.no_sessions":"Sohbet geçmişi yok","planb.chat.untitled":"Başlıksız","planb.chat.thought":"Düşünce","planb.chat.chip_browse":"Webde Gezin","planb.chat.chip_code":"Kod Yaz","planb.chat.chip_analyze":"Veri Analizi","planb.chat.chip_plan":"Proje Planla","planb.chat.regenerate":"Yeniden Oluştur","planb.settings.quick":"Hızlı Ayarlar","planb.settings.advanced":"Gelişmiş","planb.settings.quick_hint":"Hızlı ayarlar yakında gelecek. Şimdilik gelişmiş düzenleyiciyi kullanın.","planb.settings.open_advanced":"Gelişmiş Düzenleyiciyi Aç","dashboard.title":"Kontrol Paneli","dashboard.provider":"Sağlayıcı","dashboard.model":"Model","dashboard.uptime":"Çalışma Süresi","dashboard.temperature":"Sıcaklık","dashboard.gateway_port":"Ağ Geçidi Portu","dashboard.locale":"Dil","dashboard.memory_backend":"Hafıza Motoru","dashboard.paired":"Eşleştirilmiş","dashboard.channels":"Kanallar","dashboard.health":"Sağlık","dashboard.status":"Durum","dashboard.overview":"Genel Bakış","dashboard.system_info":"Sistem Bilgisi","dashboard.quick_actions":"Hızlı İşlemler","dashboard.provider_model":"Sağlayıcı / Model","dashboard.since_last_restart":"Son Yeniden Başlatmadan Beri","dashboard.paired_yes":"Evet","dashboard.paired_no":"Hayır","dashboard.cost_overview":"Maliyet Genel Bakışı","dashboard.active_channels":"Aktif Kanallar","dashboard.filter_active":"Aktif","dashboard.filter_all":"Tümü","dashboard.no_active_channels":"Aktif kanal yok","dashboard.component_health":"Bileşen Sağlığı","dashboard.load_error":"Kontrol paneli yüklenemedi","dashboard.session_label":"Oturum","dashboard.daily_label":"Günlük","dashboard.monthly_label":"Aylık","dashboard.total_tokens_label":"Toplam Token","dashboard.requests_label":"İstekler","dashboard.no_channels":"Kanal yapılandırılmamış","dashboard.active":"Aktif","dashboard.inactive":"Aktif Değil","dashboard.no_components":"Bileşen raporlamıyor","dashboard.restarts":"Yeniden Başlatmalar","dashboard.tab_overview":"Genel Bakış","dashboard.tab_sessions":"Oturumlar","dashboard.tab_channels":"Kanallar","dashboard.sessions_title":"Aktif Oturumlar","dashboard.no_sessions":"Aktif oturum yok","dashboard.session_id":"Oturum Kimliği","dashboard.session_channel":"Kanal","dashboard.session_started":"Başlangıç","dashboard.session_last_activity":"Son Etkinlik","dashboard.session_status":"Durum","dashboard.session_messages":"Mesajlar","dashboard.session_details":"Oturum Ayrıntıları","dashboard.session_history":"Geçmişi Görüntüle","dashboard.channels_title":"Kanal Durumu","dashboard.no_channels_detail":"Kanal ayrıntısı yok","dashboard.channel_type":"Tür","dashboard.channel_messages":"Mesajlar","dashboard.channel_last_message":"Son Mesaj","dashboard.channel_config":"Yapılandırma","dashboard.channel_enabled":"Etkin","dashboard.channel_disabled":"Devre Dışı","dashboard.loading_sessions":"Oturumlar yükleniyor...","dashboard.loading_channels":"Kanallar yükleniyor...","dashboard.load_sessions_error":"Oturumlar yüklenemedi","dashboard.load_channels_error":"Kanallar yüklenemedi","dashboard.never":"Hiç","agent.title":"Ajan Sohbeti","agent.send":"Gönder","agent.placeholder":"Bir mesaj yazın...","agent.start_conversation":"Sohbeti başlatmak için mesaj gönderin","agent.type_message":"Bir mesaj yazın...","agent.connecting":"Bağlanıyor...","agent.connected":"Bağlandı","agent.disconnected":"Bağlantı kesildi","agent.reconnecting":"Yeniden bağlanıyor...","agent.thinking":"Düşünüyor...","agent.tool_call":"Araç Çağrısı","agent.tool_result":"Araç Sonucu","agent.connection_error":"Bağlantı hatası. Yeniden bağlanmaya çalışılıyor...","agent.tool_call_prefix":"[Araç Çağrısı]","agent.tool_result_prefix":"[Araç Sonucu]","agent.error_prefix":"[Hata]","agent.unknown_error":"Bilinmeyen hata","agent.send_error":"Mesaj gönderilemedi. Lütfen tekrar deneyin.","agent.copy_message":"Mesajı kopyala","agent.connected_status":"Bağlandı","agent.disconnected_status":"Bağlantı kesildi","tools.title":"Mevcut Araçlar","tools.name":"Ad","tools.description":"Açıklama","tools.parameters":"Parametreler","tools.search":"Araç ara...","tools.empty":"Araç bulunamadı.","tools.count":"Toplam araç","tools.agent_tools":"Ajan Araçları","tools.cli_tools":"CLI Araçları","tools.parameter_schema":"Parametre Şeması","tools.path":"Yol","tools.version":"Sürüm","tools.category":"Kategori","tools.load_error":"Araçlar yüklenemedi","cron.title":"Zamanlanmış Görevler","cron.scheduled_tasks":"Zamanlanmış Görevler","cron.add":"Görev Ekle","cron.add_job":"Görev Ekle","cron.add_modal_title":"Cron Görevi Ekle","cron.delete":"Sil","cron.enable":"Etkinleştir","cron.disable":"Devre Dışı Bırak","cron.name":"Ad","cron.name_optional":"Ad (isteğe bağlı)","cron.command":"Komut","cron.command_required":"Komut","cron.schedule":"Zamanlama","cron.schedule_required":"Zamanlama","cron.next_run":"Sonraki Çalıştırma","cron.last_run":"Son Çalıştırma","cron.last_status":"Son Durum","cron.enabled":"Etkin","cron.enabled_status":"Etkin","cron.disabled_status":"Devre Dışı","cron.empty":"Zamanlanmış görev bulunamadı.","cron.confirm_delete":"Bu görevi silmek istediğinizden emin misiniz?","cron.load_error":"Cron görevleri yüklenemedi","cron.validation_error":"Zamanlama ve komut gereklidir.","cron.add_error":"Görev eklenemedi","cron.delete_error":"Görev silinemedi","cron.cancel":"İptal","cron.adding":"Ekleniyor...","cron.id":"ID","cron.actions":"İşlemler","cron.loading_run_history":"Çalıştırma geçmişi yükleniyor...","cron.load_run_history_error":"Çalıştırma geçmişi yüklenemedi","cron.no_runs":"Henüz çalıştırma kaydı yok.","cron.recent_runs":"Son Çalıştırmalar","cron.yes":"Evet","cron.no":"Hayır","cron.edit":"Düzenle","cron.edit_modal_title":"Cron Görevini Düzenle","cron.edit_error":"Görev güncellenemedi","cron.saving":"Kaydediliyor...","cron.save":"Kaydet","integrations.title":"Entegrasyonlar","integrations.available":"Mevcut","integrations.active":"Aktif","integrations.coming_soon":"Yakında","integrations.category":"Kategori","integrations.status":"Durum","integrations.search":"Entegrasyon ara...","integrations.empty":"Entegrasyon bulunamadı.","integrations.activate":"Etkinleştir","integrations.deactivate":"Devre Dışı Bırak","integrations.load_error":"Entegrasyonlar yüklenemedi","integrations.all":"Tümü","integrations.status_active":"Aktif","integrations.status_available":"Mevcut","integrations.status_coming_soon":"Yakında","memory.title":"Hafıza Deposu","memory.memory_title":"Hafıza","memory.search":"Hafıza ara...","memory.search_placeholder":"Hafıza girişleri ara...","memory.add":"Hafıza Ekle","memory.add_memory":"Hafıza Ekle","memory.add_modal_title":"Hafıza Ekle","memory.delete":"Sil","memory.key":"Anahtar","memory.key_required":"Anahtar","memory.content":"İçerik","memory.content_required":"İçerik","memory.category":"Kategori","memory.category_optional":"Kategori (isteğe bağlı)","memory.timestamp":"Zaman Damgası","memory.session":"Oturum","memory.score":"Puan","memory.empty":"Hafıza girişi bulunamadı.","memory.confirm_delete":"Bu hafıza girişini silmek istediğinizden emin misiniz?","memory.all_categories":"Tüm Kategoriler","memory.search_button":"Ara","memory.load_error":"Hafıza yüklenemedi","memory.saving":"Kaydediliyor...","memory.validation_error":"Anahtar ve içerik gereklidir.","memory.store_error":"Hafıza kaydedilemedi","memory.delete_error":"Hafıza silinemedi","memory.delete_confirm":"Sil?","memory.yes":"Evet","memory.no":"Hayır","memory.cancel":"İptal","config.title":"Yapılandırma","config.save":"Kaydet","config.saving":"Kaydediliyor...","config.reset":"Sıfırla","config.saved":"Yapılandırma başarıyla kaydedildi.","config.error":"Yapılandırma kaydedilemedi.","config.loading":"Yapılandırma yükleniyor...","config.editor_placeholder":"TOML yapılandırması...","config.configuration_title":"Yapılandırma","config.sensitive_title":"Hassas alanlar gizlendi","config.sensitive_hint":"API anahtarları, belirteçler ve parolalar güvenlik için gizlendi. Maskeli bir alanı güncellemek için, tüm maskeli değeri yeni değerinizle değiştirin.","config.save_success":"Yapılandırma başarıyla kaydedildi.","config.save_error":"Yapılandırma kaydedilemedi","config.toml_label":"TOML Yapılandırması","config.lines":"satır","cost.title":"Maliyet Takibi","cost.session":"Oturum Maliyeti","cost.daily":"Günlük Maliyet","cost.monthly":"Aylık Maliyet","cost.total_tokens":"Toplam Token","cost.request_count":"İstek Sayısı","cost.by_model":"Modele Göre Maliyet","cost.model":"Model","cost.tokens":"Token","cost.requests":"İstekler","cost.usd":"Maliyet (USD)","cost.load_error":"Maliyet verileri yüklenemedi","cost.session_cost":"Oturum Maliyeti","cost.daily_cost":"Günlük Maliyet","cost.monthly_cost":"Aylık Maliyet","cost.total_requests":"Toplam İstek","cost.token_statistics":"Token İstatistikleri","cost.avg_tokens_per_request":"Ortalama Token / İstek","cost.cost_per_1k_tokens":"1K Token Başına Maliyet","cost.model_breakdown":"Model Detayı","cost.no_model_data":"Model verisi mevcut değil.","cost.cost":"Maliyet","cost.share":"Pay","logs.title":"Canlı Kayıtlar","logs.live_logs":"Canlı Kayıtlar","logs.clear":"Temizle","logs.pause":"Duraklat","logs.resume":"Devam Et","logs.filter":"Kayıtları filtrele...","logs.filter_label":"Filtre","logs.empty":"Kayıt girişi bulunamadı.","logs.connected":"Bağlandı","logs.disconnected":"Bağlantı kesildi","logs.events":"olay","logs.jump_to_bottom":"En alta atla","logs.paused_hint":"Kayıt akışı duraklatıldı.","logs.waiting_hint":"Olay bekleniyor...","doctor.title":"Sistem Tanıları","doctor.diagnostics_title":"Tanılar","doctor.run":"Tanı Çalıştır","doctor.run_diagnostics":"Tanı Çalıştır","doctor.running":"Tanı çalıştırılıyor...","doctor.running_btn":"Çalıştırılıyor...","doctor.running_desc":"Tanı çalıştırılıyor...","doctor.running_hint":"Bu birkaç saniye sürebilir.","doctor.ok":"Tamam","doctor.warn":"Uyarı","doctor.error":"Hata","doctor.severity":"Şiddet","doctor.category":"Kategori","doctor.message":"Mesaj","doctor.empty":"Henüz tanı çalıştırılmadı.","doctor.summary":"Tanı Özeti","doctor.issues_found":"Sorunlar Bulundu","doctor.warnings_summary":"Uyarılar","doctor.all_clear":"Her Şey Yolunda","doctor.system_diagnostics":"Sistem Tanıları","doctor.empty_hint":'ZeroClaw kurulumunuzu kontrol etmek için "Tanı Çalıştır" düğmesine tıklayın.',"auth.pair":"Cihaz Eşleştir","auth.pairing_code":"Eşleştirme Kodu","auth.pair_button":"Eşleştir","auth.logout":"Çıkış Yap","auth.pairing_success":"Eşleştirme başarılı!","auth.pairing_failed":"Eşleştirme başarısız. Lütfen tekrar deneyin.","auth.enter_code":"Akıllı birine bağlanmak için eşleştirme kodunuzu girin.","common.loading":"Yükleniyor...","common.error":"Bir hata oluştu.","common.retry":"Tekrar Dene","common.cancel":"İptal","common.confirm":"Onayla","common.save":"Kaydet","common.delete":"Sil","common.edit":"Düzenle","common.close":"Kapat","common.yes":"Evet","common.no":"Hayır","common.search":"Ara...","common.no_data":"Veri mevcut değil.","common.refresh":"Yenile","common.back":"Geri","common.actions":"İşlemler","common.name":"Ad","common.description":"Açıklama","common.status":"Durum","common.created":"Oluşturulma","common.updated":"Güncellenme","health.title":"Sistem Sağlığı","health.component":"Bileşen","health.status":"Durum","health.last_ok":"Son Başarılı","health.last_error":"Son Hata","health.restart_count":"Yeniden Başlatmalar","health.pid":"İşlem Kimliği","health.uptime":"Çalışma Süresi","health.updated_at":"Son Güncelleme","settings.title":"Ayarlar","settings.tab.appearance":"Görünüm","settings.tab.typography":"Tipografi","settings.appearance":"Görünüm","settings.typography":"Tipografi","settings.fontUi":"Arayüz Yazı Tipi","settings.fontMono":"Kod Yazı Tipi","settings.fontSize":"Arayüz Boyutu","settings.fontMonoSize":"Kod Boyutu","settings.preview":"Önizleme","settings.previewText":"Tembel köpek üzerinde hızlı kahverengi tilki zıplar.","settings.fontNote":"Yazı tipi değişiklikleri sayfa yeniden yüklendikten sonra geçerli olur.","settings.language":"Dil","theme.mode":"Tema Modu","theme.accent":"Vurgu Rengi","theme.system":"Sistem","theme.dark":"Koyu","theme.light":"Açık","theme.oled":"OLED Siyah","console.nav.commandDeck":"Command Deck","console.nav.missionCenter":"Mission Center","console.nav.skillLibrary":"Skill Library","console.nav.dailyReport":"Daily Report","console.nav.settings":"Settings","console.role.finance":"Finance","console.role.engineering":"Engineering","console.role.executive":"Executive","console.role.hr":"HR","console.role.sales":"Sales","console.state.loading":"Loading...","console.state.empty":"No data","console.state.backendDown":"Backend unreachable","console.state.partialData":"Partial data loaded","console.state.stale":"Data stale","console.state.unauthorized":"Unauthorized","console.action.refresh":"Refresh","console.action.approve":"Approve","console.action.reject":"Reject","console.action.retry":"Retry","console.action.create":"Create","console.skill.capabilityLevel":"Capability Level","console.skill.enable":"Enable","console.skill.disable":"Disable","console.skill.core":"Core","console.skill.standard":"Standard","console.skill.specialized":"Specialized","console.skill.experimental":"Experimental","console.report.dailyTitle":"Daily Report","console.report.sourceLinks":"Source Links","console.report.noEvents":"No events today"}};let Hx="zh";function dd(n){var i;return((i=ng[Hx])==null?void 0:i[n])??ng.en[n]??n}const cc=["qimingclaw-client-readiness","qimingclaw-remote-task-ingress","qimingclaw-daily-report"],Yx=[{key:"all",label:"全部委托"},{key:"daily",label:"日常任务"},{key:"weekly",label:"周任务"},{key:"monthly",label:"月度任务"},{key:"adhoc",label:"临时任务"}];function fd(n){const i=typeof n.updated_at=="string"?n.updated_at:typeof n.created_at=="string"?n.created_at:"",r=i?new Date(i).getTime():0;return Number.isFinite(r)?r:0}function vl(n){if(!n)return"";const i=new Date(n);return Number.isNaN(i.getTime())?"":[i.getFullYear(),String(i.getMonth()+1).padStart(2,"0"),String(i.getDate()).padStart(2,"0")].join("-")}function pl(){return vl(new Date().toISOString())}function lg(n,i){const r=n?new Date(`${n}T12:00:00`):new Date;return Number.isNaN(r.getTime())?pl():(r.setDate(r.getDate()+i),vl(r.toISOString()))}function zd(n){const i=`${n.title} ${n.id}`.match(/(?:^|\D)(\d{1,2})[::](\d{2})(?:\D|$)/);if(!i)return null;const r=Number(i[1]),o=Number(i[2]);return!Number.isInteger(r)||!Number.isInteger(o)||r>23||o>59?null:{text:`${String(r).padStart(2,"0")}:${String(o).padStart(2,"0")}`,minutes:r*60+o}}function Rd(n){return n.steps.flatMap(i=>i.tasks.flatMap(r=>[r.startedAt,r.finishedAt])).filter(i=>!!i)}function Gx(n,i){return Rd(n).map(vl).filter(Boolean).includes(i)||zd(n)?!0:[n.updatedAt,n.createdAt].map(vl).includes(i)}function Qx(n){return zd(n)&&`${n.title}`.trim().toLowerCase()||n.id}function Xx(n,i){return Rd(n).some(r=>vl(r)===i)}function ig(n,i){const r=Xx(n,i)?1e4:0,o=cc.includes(n.id)?1e3:0,d=[n.updatedAt,n.createdAt].map(vl).includes(i)?100:0;return r+o+d+fd({updated_at:n.updatedAt||"",created_at:n.createdAt||""})/1e13}function Kx(n,i){const r=new Map;for(const o of n){const d=Qx(o),m=r.get(d);(!m||ig(o,i)>ig(m,i))&&r.set(d,o)}return Array.from(r.values())}function sg(n,i){const r=zd(n);if(r)return r.minutes;const o=Rd(n).filter(d=>vl(d)===i).sort();if(o[0]){const d=new Date(o[0]);return d.getHours()*60+d.getMinutes()}return 1440}function Zx(n){const i=`${n.id} ${n.title} ${n.objective}`.toLowerCase();return i.includes("month")||i.includes("monthly")||i.includes("月")?"monthly":i.includes("week")||i.includes("weekly")||i.includes("周")?"weekly":i.includes("临时")||i.includes("adhoc")||i.includes("hotlist")||i.includes("monitor")?"adhoc":"daily"}async function ly(n,i,r={}){const o=Date.now(),d=await Zg({command_kind:n,context_refs:i,payload:{source:"digital-mission-center",...r},correlation_id:`mission-${n}-${o}`,idempotency_key:`mission-${n}-${Object.values(i).join("-")||"new"}-${o}`});if(!d.accepted)throw new Error(d.message||`command 未被接受:${d.command_id||n}`);return d}async function ba(n,i,r={}){return ly(i,{plan_id:n},r)}async function rg(n){const i=n.sourceIds.planId;if(!i)return null;const r=n.status.toLowerCase();if(r==="draft")await ba(i,"submit_plan",{requested_action:"mission_dispatch"}),await ba(i,"approve_plan",{requested_action:"mission_dispatch"});else if(r==="reviewing")await ba(i,"approve_plan",{requested_action:"mission_dispatch"});else if(!["approved","active","running"].includes(r))return await ba(i,"amend_plan",{requested_action:"reopen_for_execution",summary:"数字员工任务中心请求重新执行任务"}),null;return await ba(i,"activate_plan",{requested_action:"mission_dispatch"}),i}function Vx(n){const i=n.steps.map((r,o)=>{const d=new Set;r.preferredSkills.forEach(p=>{p.trim()&&d.add(p)}),r.tasks.forEach(p=>{var v;(v=p.assignedSkillId)!=null&&v.trim()&&d.add(p.assignedSkillId)});const m=[r.description,...r.tasks.map(p=>p.description),r.title,n.objective,n.title].find(p=>typeof p=="string"&&p.trim());return{title:r.title||`${n.title} 第 ${o+1} 步`,description:m||r.title||n.objective||n.title,skills:Array.from(d),depends_on:o===0?[]:[`step-${o}`]}}).filter(r=>r.skills.length>0);if(i.length===0)throw new Error("当前任务没有可复用的 skill,不能创建真实重新执行计划。");return i}function iy(n){return`${n.replace(/(\s*重新执行)+$/u,"").trim()||n} 重新执行`}async function Jx(n){var d,m;const i=await ly("create_plan",{session_id:"digital-mission-center",plan_id:n.sourceIds.planId||n.id},{requested_action:"mission_restart",title:iy(n.title),description:n.objective||n.title,steps:Vx(n),original_plan_id:n.sourceIds.planId||n.id}),r=typeof((d=i.result)==null?void 0:d.plan_id)=="string"?i.result.plan_id:"";if(!r)throw new Error("重新执行计划已提交,但后端没有返回 plan_id。");const o=typeof((m=i.result)==null?void 0:m.status)=="string"?i.result.status.toLowerCase():"";return o==="draft"?(await ba(r,"submit_plan",{requested_action:"mission_restart"}),await ba(r,"approve_plan",{requested_action:"mission_restart"}),await ba(r,"activate_plan",{requested_action:"mission_restart"})):o==="reviewing"?(await ba(r,"approve_plan",{requested_action:"mission_restart"}),await ba(r,"activate_plan",{requested_action:"mission_restart"})):o==="approved"&&await ba(r,"activate_plan",{requested_action:"mission_restart"}),r}function Fx({focusMissionId:n,focusTaskId:i,focusDate:r}){const o=r||pl(),[d,m]=b.useState([]),[p,v]=b.useState(null),[h,y]=b.useState(!0),[E,S]=b.useState(!1),[k,R]=b.useState("all"),[T,L]=b.useState(()=>o),[O,G]=b.useState(!1),[I,F]=b.useState(null),[ne,ie]=b.useState(!1),[he,Z]=b.useState(!1),[ee,Te]=b.useState(null),[rt,Ze]=b.useState(null),[de,X]=b.useState(null),se=b.useRef(null),H=b.useRef(!1);b.useEffect(()=>(H.current=!0,()=>{H.current=!1}),[]);const D=b.useCallback(async()=>{y(!0),S(!1);try{const Q=await oS();if(!H.current)return[];const V=new Map,ve=Oe=>{const jt=typeof Oe.plan_id=="string"?Oe.plan_id:"";jt&&!V.has(jt)&&V.set(jt,Oe)};(Array.isArray(Q)?Q:[]).forEach(ve);const Me=cc.filter(Oe=>!V.has(Oe));if(Me.length>0){const Oe=await Promise.allSettled(Me.map(async jt=>({id:jt,plans:await Rp(jt,20)})));for(const jt of Oe)if(jt.status==="fulfilled"){const qa=jt.value.plans.find(Gn=>Gn.plan_id===jt.value.id);qa&&ve(qa)}}const Ie=cc.map(Oe=>V.get(Oe)).filter(Oe=>!!Oe),Tt=[...[...V.entries()].filter(([Oe])=>!cc.includes(Oe)).map(([,Oe])=>Oe).sort((Oe,jt)=>fd(jt)-fd(Oe)),...Ie];if(Tt.length>0){const Oe=Xp(Tt);return Z(!1),m(Oe),Oe}else{const Oe=_s();return Z(!0),m(Oe),Oe}}catch(Q){if(!H.current)return[];console.error("[MissionCenter] fetch failed:",Q);const V=_s();return Z(!0),m(V),S(!1),V}finally{H.current&&y(!1)}},[]);b.useEffect(()=>{D()},[D]),b.useEffect(()=>{L(r||pl()),G(!1)},[r]);const Y=b.useCallback(Q=>{v(Q),Ze(Q.id),window.setTimeout(()=>{var V;(V=se.current)==null||V.scrollIntoView({block:"start",inline:"nearest",behavior:"smooth"})},40)},[]),te=b.useCallback(Q=>{Y(Q),X({kind:"selected",missionId:Q.id,title:Q.title,planId:Q.sourceIds.planId})},[Y]);b.useEffect(()=>{if(!n&&!i)return;const Q=d.find(V=>V.id===n||V.sourceIds.planId===n||(i?V.sourceIds.taskIds.includes(i):!1));Q&&(R("all"),te(Q),window.setTimeout(()=>{var V;(V=document.getElementById(`mission-card-${Nc(Q.id)}`))==null||V.scrollIntoView({block:"center",behavior:"smooth"})},80))},[n,i,d,te]);const fe=b.useCallback(async Q=>{if(F(Q.id),S(!1),Te(null),he||!Q.sourceIds.planId){m(V=>Vo(V,Q.id)),v(V=>(V==null?void 0:V.id)!==Q.id?V:Vo([V],Q.id)[0]??V),window.setTimeout(()=>{H.current&&(m(V=>Jo(V,Q.id)),v(V=>(V==null?void 0:V.id)!==Q.id?V:Jo([V],Q.id)[0]??V),F(null))},1200);return}try{const V=await rg(Q),ve=await D();if(R("all"),V){const Me=ve.find(Ie=>Ie.id===V||Ie.sourceIds.planId===V);if(Me)Y(Me),X({kind:"dispatched",missionId:Me.id,title:Me.title,planId:V});else{const Ie=await Rp(V,5),ct=Xp(Ie).find(Tt=>Tt.id===V);ct?(Y(ct),X({kind:"dispatched",missionId:ct.id,title:ct.title,planId:V})):v(null)}}else v(Me=>(Me==null?void 0:Me.id)===Q.id?null:Me)}catch(V){console.error("[MissionCenter] dispatch failed:",V),S(!1),Te(V instanceof Error?V.message:"任务委托失败")}finally{F(null)}},[he,D,Y]),be=b.useCallback(async Q=>{if(F(Q.id),S(!1),Te(null),he||!Q.sourceIds.planId){await fe(Q);return}try{const V=await Jx(Q),ve=await D();R("all");const Me=ve.find(Ie=>Ie.id===V||Ie.sourceIds.planId===V);Me?(Y(Me),X({kind:"created",missionId:Me.id,title:Me.title,planId:V})):(Ze(V),X({kind:"created",missionId:V,title:iy(Q.title),planId:V}))}catch(V){console.error("[MissionCenter] restart failed:",V),S(!1),Te(V instanceof Error?V.message:"重新执行失败")}finally{F(null)}},[he,D,Y,fe]),j=T||pl(),$=Kx(O?d:d.filter(Q=>Gx(Q,j)),j),K=$.filter(Q=>Q.sourceIds.planId&&["draft","reviewing","approved"].includes(Q.status.toLowerCase())),W=b.useCallback(async()=>{if(K.length!==0){if(ie(!0),S(!1),he){let Q=0;for(const V of K.slice(0,4))window.setTimeout(()=>{H.current&&(F(V.id),m(ve=>Vo(ve,V.id)))},Q),Q+=400,window.setTimeout(()=>{H.current&&m(ve=>Jo(ve,V.id))},Q+900);window.setTimeout(()=>{H.current&&(F(null),ie(!1))},Q+1200);return}try{for(const Q of K)F(Q.id),await rg(Q);await D(),v(null)}catch(Q){console.error("[MissionCenter] batch dispatch failed:",Q),S(!1),Te(Q instanceof Error?Q.message:"批量委托失败")}finally{F(null),ie(!1)}}},[he,D,K]),pe=(k==="all"?$:$.filter(Q=>Zx(Q)===k)).map((Q,V)=>({mission:Q,index:V})).sort((Q,V)=>{const ve=Me=>(Me.id===rt?2:0)+(Me.id===(p==null?void 0:p.id)?1:0);return ve(V.mission)-ve(Q.mission)||sg(Q.mission,j)-sg(V.mission,j)||Q.index-V.index}).map(({mission:Q})=>Q),ke=(de==null?void 0:de.kind)==="created"?"刚创建重新执行任务":(de==null?void 0:de.kind)==="dispatched"?"刚委托执行任务":"当前查看任务",We=Q=>Q.id!==rt?null:(de==null?void 0:de.missionId)===Q.id&&de.kind==="created"?"刚创建":(de==null?void 0:de.missionId)===Q.id&&de.kind==="dispatched"?"刚委托":"当前查看";return c.jsx("div",{className:"de-mission-center-page",children:c.jsxs("div",{className:"de-mission-center-layout",children:[c.jsx("div",{className:"de-mc-list",children:c.jsxs(ws,{children:[c.jsxs(kc,{title:"任务委托",children:[c.jsx("button",{onClick:W,className:"de-btn-primary de-btn-sm",disabled:ne||K.length===0,children:ne?"委托中...":`委托可执行任务(${K.length})`}),c.jsx("button",{onClick:D,className:"de-btn-secondary de-btn-sm",children:dd("console.action.refresh")})]}),c.jsxs("div",{className:"de-card-body",children:[he&&c.jsx("div",{className:"de-schedule-result de-schedule-result--success",style:{marginBottom:12},children:"当前没有加载到 qimingclaw 任务记录,页面暂时展示本地示例数据。"}),ee&&c.jsx("div",{className:"de-schedule-result de-schedule-result--error",style:{marginBottom:12},children:ee}),de&&c.jsxs("div",{className:"de-mission-focus-notice",children:[c.jsx("strong",{children:ke}),c.jsx("span",{children:de.title}),de.planId&&c.jsx("code",{children:de.planId})]}),c.jsxs("div",{className:"de-date-filter-row",children:[c.jsxs("label",{className:"de-date-filter-field",children:[c.jsx("span",{children:"选择日期"}),c.jsx("input",{type:"date",value:j,onChange:Q=>{G(!1),L(Q.target.value||pl())}})]}),c.jsxs("div",{className:"de-date-filter-actions","aria-label":"日期切换",children:[c.jsx("button",{type:"button",className:"de-filter-chip",onClick:()=>{G(!1),L(lg(j,-1))},children:"前一天"}),c.jsx("button",{type:"button",className:"de-filter-chip active",onClick:()=>{G(!1),L(pl())},children:"今天"}),c.jsx("button",{type:"button",className:"de-filter-chip",onClick:()=>{G(!1),L(lg(j,1))},children:"后一天"})]}),c.jsx("span",{className:"de-date-filter-summary",children:O?`全部 ${$.length} 项任务`:`${$.length} 项任务`})]}),c.jsx("div",{className:"de-filter-row",children:Yx.map(Q=>c.jsx("button",{className:`de-filter-chip ${k===Q.key?"active":""}`,onClick:()=>R(Q.key),children:Q.label},Q.key))}),h?c.jsx("div",{className:"de-loading-skeleton",style:{height:300}}):E?c.jsx("p",{className:"de-empty-text",children:dd("console.state.backendDown")}):pe.length===0?c.jsxs("div",{className:"de-mission-empty-panel",children:[c.jsx("strong",{children:"当前日期暂无任务"}),c.jsx("p",{children:"这个日期没有匹配到 qimingclaw 任务记录,可以临时查看全部任务。"}),c.jsxs("div",{className:"de-mission-empty-actions",children:[c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",onClick:()=>{G(!0),R("all")},children:"查看全部任务"}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>{G(!1),L(r||pl())},children:"返回当前日期"})]})]}):c.jsx("div",{className:"de-mc-card-list",children:pe.map(Q=>c.jsx(Nx,{mission:Q,selected:(p==null?void 0:p.id)===Q.id,focusLabel:We(Q),dateFilter:j,running:I===Q.id,onSelect:te,onRun:fe,onRestart:be},Q.id))})]})]})}),c.jsx("div",{className:"de-mc-detail",ref:se,children:p?c.jsx(Bx,{mission:p,onClose:()=>v(null)}):c.jsx(ws,{children:c.jsx("div",{className:"de-card-body",children:c.jsxs("div",{className:"de-mission-empty-panel de-mission-empty-panel--detail",children:[c.jsx("strong",{children:"选择一个任务后,右侧会显示执行步骤、运行记录和交付结果。"}),c.jsx("p",{children:"任务详情会优先展示 qimingclaw 本地 Plan / Task / Run / Event 记录,以及从执行 payload 中整理出的产物线索。"})]})})})})]})})}const Wx=[{value:"all",label:"全部任务"},{value:"daily",label:"日常任务"},{value:"weekly",label:"周任务"},{value:"monthly",label:"月度任务"},{value:"adhoc",label:"临时任务"}],Ix={daily:"日常",weekly:"周",monthly:"月度",adhoc:"临时"};function sy(n){const i=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return/weekly|week|周/.test(i)?"weekly":/monthly|month|月报|月度/.test(i)?"monthly":/monitor|crawler|巡检|监控|待办|日程|日报|日终|收件箱|工作台|客户跟进/.test(i)?"daily":"adhoc"}function Io(n){const i=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return n.capabilityLevel==="specialized"||n.capabilityLevel==="experimental"||/加密|深度|分析|自动化|部署|代码|审查|调研|批量|converter|crypto|github|deploy|review|research/.test(i)}function Px(n){const i=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return/日报|周报|报表|待办|日程|巡检|客户|知识库|经营|费用|收件箱|工作台/.test(i)}function e1(n){const i=n.name,r=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return/report|报表|日报|周报|月报|汇报/.test(r)?`自动整理${i}材料,减少手工汇总和重复填报。`:/monitor|巡检|监控|预警/.test(r)?`按约定频率完成${i},及时提示异常和遗漏。`:/todo|待办|task|看板|日程/.test(r)?`帮你梳理${i},把后续处理事项集中呈现。`:/客户|crm|回访|满意/.test(r)?"汇总客户相关信息,形成可直接跟进的处理建议。":/知识|文档|制度|模板/.test(r)?"查找和核对资料内容,减少人工翻找和版本确认。":n.description}function t1(n,i,r){return n.enabled?"已学习":n.enabled?r?"需确认后学习":i?"建议学习":"可学习":"暂不使用"}function a1({skill:n,recommended:i=!1,advanced:r=!1,selected:o=!1,updating:d=!1,onSelect:m,onToggle:p}){const v=sy(n),h=t1(n,i,r);return c.jsxs("div",{id:`skill-card-${Nc(n.id)}`,className:`de-skill-card ${o?"de-skill-card--selected":""}`,role:"button",tabIndex:0,onClick:()=>m==null?void 0:m(n),onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),m==null||m(n))},children:[c.jsxs("div",{className:"de-skill-card-head",children:[c.jsx("span",{className:"de-skill-name",children:n.name}),c.jsx("span",{className:`de-skill-status ${n.enabled?"enabled":"disabled"}`,children:h})]}),c.jsx("p",{className:"de-skill-desc",children:e1(n)}),c.jsxs("div",{className:"de-skill-card-foot",children:[c.jsxs("span",{className:"de-skill-version",children:["适用任务:",Ix[v]]}),c.jsx("button",{className:`de-skill-btn ${n.enabled?"de-skill-btn--danger":""}`,disabled:d,title:n.enabled?"暂时停用此技能,后续路由不会选择它。":"恢复使用此技能。",onClick:y=>{y.stopPropagation(),d||p==null||p(n)},children:d?"处理中...":n.enabled?"暂不使用":"恢复使用"})]})]})}function n1({focusSkillId:n}){const[i,r]=b.useState([]),[o,d]=b.useState(!0),[m,p]=b.useState(!1),[v,h]=b.useState(""),[y,E]=b.useState("all"),[S,k]=b.useState(n??null),[R,T]=b.useState(null),[L,O]=b.useState(null),G=b.useRef(!1);b.useEffect(()=>(G.current=!0,()=>{G.current=!1}),[]);const I=b.useCallback(async()=>{d(!0),p(!1);try{const H=await mS();if(!G.current)return;r(Array.isArray(H)&&H.length>0?mx(H):Jp())}catch(H){if(!G.current)return;console.error("[SkillLibrary] fetch failed:",H),r(Jp()),p(!1)}finally{G.current&&d(!1)}},[]);b.useEffect(()=>{I()},[I]),b.useEffect(()=>{n&&(k(n),E("all"),h(""),window.setTimeout(()=>{var H;(H=document.getElementById(`skill-card-${Nc(n)}`))==null||H.scrollIntoView({block:"center",behavior:"smooth"})},80))},[n,i.length]);const F=b.useCallback(async H=>{const D=!H.enabled;T(H.id),O(null);try{const Y=await hS(H.id,D);if(!Y.ok)throw new Error(Y.error||"技能状态变更失败");r(te=>te.map(fe=>fe.id===H.id?{...fe,enabled:D}:fe)),k(H.id)}catch(Y){O(Y instanceof Error?Y.message:"技能状态变更失败")}finally{T(null)}},[]),ne=i.filter(H=>y==="all"||sy(H)===y).filter(H=>!v||H.name.includes(v)||H.description.includes(v)||H.category.includes(v)),ie=ne.filter(Io),he=new Set(ie.map(H=>H.id)),Z=ne.filter(H=>H.enabled&&!he.has(H.id)),ee=ne.filter(H=>!H.enabled&&Px(H)&&!Io(H)),Te=ne.filter(H=>!H.enabled&&!Io(H)),rt=(ee.length>0?ee:Te).slice(0,4),Ze=new Set(rt.map(H=>H.id)),de=Te.filter(H=>!Ze.has(H.id)),X=[{key:"recommended",title:"推荐学习",hint:"优先补齐高频工作能力,适合让数字员工尽快接手重复事务。",skills:rt,emptyText:"暂无推荐学习项。"},{key:"learnable",title:"可学习技能",hint:"可纳入数字员工日常工作的业务能力,学习入口待接入后启用。",skills:de,emptyText:"当前没有可学习技能。"},{key:"learned",title:"已学技能",hint:"数字员工已经掌握并可被业务场景调用的能力。",skills:Z,emptyText:"当前还没有已学习技能。"},{key:"advanced",title:"高级技能",hint:"适合有明确边界或需要确认后再交给数字员工处理的能力。",skills:ie,emptyText:"暂无高级技能。"}],se=H=>c.jsxs("section",{style:{display:"grid",gap:10},children:[c.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12},children:[c.jsxs("div",{children:[c.jsx("h3",{style:{margin:0,fontSize:16,color:"var(--de-text-primary)"},children:H.title}),c.jsx("p",{style:{margin:"4px 0 0",fontSize:12,color:"var(--de-text-muted)"},children:H.hint})]}),c.jsxs("span",{className:"de-capability-badge de-capability-standard",children:[H.skills.length," 项"]})]}),H.skills.length===0?c.jsx("p",{className:"de-empty-text",style:{margin:0},children:H.emptyText}):c.jsx("div",{className:"de-skill-grid",children:H.skills.map(D=>c.jsx(a1,{skill:D,recommended:H.key==="recommended",advanced:H.key==="advanced",selected:S===D.id,updating:R===D.id,onSelect:Y=>k(Y.id),onToggle:F},`${H.key}-${D.id}`))})]},H.key);return c.jsx("div",{style:{padding:"14px 18px"},children:c.jsxs(ws,{children:[c.jsx(kc,{title:"学习技能",children:c.jsx("button",{onClick:I,className:"de-btn-secondary de-btn-sm",children:"刷新"})}),c.jsxs("div",{className:"de-card-body",children:[L&&c.jsx("div",{className:"de-schedule-result de-schedule-result--error",style:{marginBottom:12},children:L}),c.jsxs("div",{className:"de-skill-toolbar",children:[c.jsx("input",{type:"text",className:"de-input",placeholder:"搜索业务能力...",value:v,onChange:H=>h(H.target.value)}),c.jsx("div",{className:"de-filter-row",children:Wx.map(H=>c.jsx("button",{className:`de-filter-chip ${y===H.value?"active":""}`,onClick:()=>E(H.value),children:H.label},H.value))})]}),o?c.jsx("div",{className:"de-loading-skeleton",style:{height:300}}):m?c.jsx("p",{className:"de-empty-text",children:"服务暂不可用,已保留本地示例供预览。"}):ne.length===0&&i.length>0?c.jsx("p",{className:"de-empty-text",children:"无匹配技能,请调整搜索或筛选条件"}):ne.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无可展示的学习技能。"}):c.jsx("div",{style:{display:"grid",gap:18},children:X.map(se)})]})]})})}const l1={display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12},Po={border:"1px solid var(--de-glass-border-lighter)",borderRadius:10,padding:"12px 14px",background:"linear-gradient(180deg, rgba(244,250,255,0.82), rgba(235,246,255,0.58))"};function i1(){const n=new Date;return[n.getFullYear(),String(n.getMonth()+1).padStart(2,"0"),String(n.getDate()).padStart(2,"0")].join("-")}function s1(n){return(n==null?void 0:n.status)==="ready"?"已生成":(n==null?void 0:n.status)==="generating"?"生成中":(n==null?void 0:n.status)==="failed"?"生成失败":"待生成"}function r1(n){return(n==null?void 0:n.status)==="ready"?"de-report-badge--ready":"de-report-badge--waiting"}function c1(n){return n?n.generated_by==="ai"?`AI 已生成日报${n.model?`:${n.model}`:""}`:"AI 不可用时已使用规则兜底生成日报":"AI 将基于当天任务和运行明细生成日报"}function u1(n){if(!n)return[];const i=n.duties.filter(r=>r.selected).map(r=>r.id);return i.length>0?i:n.duties.filter(r=>r.implemented).map(r=>r.id)}function ry(n){if(!n)return"暂未生成";const i=new Date(n);return Number.isNaN(i.getTime())?n:i.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}function o1(n,i){const r=new Blob([i],{type:"text/plain;charset=utf-8"}),o=URL.createObjectURL(r),d=document.createElement("a");d.href=o,d.download=n,document.body.appendChild(d),d.click(),d.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}function d1(n){return`qimingclaw-digital-report-${n}.txt`}function f1(n,i,r,o){return[i.title||`${n} 数字员工日报`,`日期:${n}`,`生成时间:${ry(i.generated_at)}`,`生成来源:${i.generated_by==="ai"?"AI":"qimingclaw adapter"}`,"","## 摘要",i.summary||"暂无摘要。","","## 指标",`任务总数:${i.totals.task_count}`,`执行次数:${i.totals.execution_count}`,`成功次数:${i.totals.success_count}`,`失败次数:${i.totals.failure_count}`,`运行中:${i.totals.running_count??0}`,"","## 任务汇总",...r.length>0?r.map(d=>`- ${d.title}:${d.latest_status_label},执行 ${d.total_count} 次,成功 ${d.success_count},失败 ${d.failure_count}。${d.ai_summary||d.business_summary||""}`):["暂无任务汇总。"],"","## 运行明细",...o.length>0?o.map(d=>`- ${d.time||"--:--"} ${d.task_name} / ${d.step_name||d.operation_name||"任务执行"}:${d.status_label},${d.business_detail}`):["暂无运行明细。"],"","## 详情",...(i.detail_lines??[]).length>0?i.detail_lines:["暂无详情。"]].join(` + */const o0=fn("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),dc={finance:{id:"finance",labelKey:"console.role.finance",density:"compact",tone:"strict",contentPriority:["audit","sources","exactNumbers"],motion:{defaultLevel:"none",allowParticles:!1,allowCelebrations:!1,allowDecorativeBadges:!1},actionPolicy:{requireConfirmationForDestructive:!0,showReversalHint:!0,preferOneClickApproval:!1},staleDataThresholdMs:3e4,cssVars:{"--role-accent":"#2563eb","--role-accent-soft":"rgba(37,99,235,0.12)","--role-surface-tint":"rgba(248,250,252,0.78)","--role-border":"rgba(37,99,235,0.22)","--role-focus-ring":"#1d4ed8"}},engineering:{id:"engineering",labelKey:"console.role.engineering",density:"compact",tone:"technical",contentPriority:["alarms","timestamps","reliability"],motion:{defaultLevel:"none",allowParticles:!1,allowCelebrations:!1,allowDecorativeBadges:!1},actionPolicy:{requireConfirmationForDestructive:!0,showReversalHint:!0,preferOneClickApproval:!1},staleDataThresholdMs:15e3,cssVars:{"--role-accent":"#0f766e","--role-accent-soft":"rgba(15,118,110,0.12)","--role-surface-tint":"rgba(240,253,250,0.72)","--role-border":"rgba(15,118,110,0.24)","--role-focus-ring":"#0f766e"}},executive:{id:"executive",labelKey:"console.role.executive",density:"presentation",tone:"executive",contentPriority:["kpi","approvals","exactNumbers"],motion:{defaultLevel:"minimal",allowParticles:!1,allowCelebrations:!1,allowDecorativeBadges:!1},actionPolicy:{requireConfirmationForDestructive:!0,showReversalHint:!0,preferOneClickApproval:!0},staleDataThresholdMs:6e4,cssVars:{"--role-accent":"#334155","--role-accent-soft":"rgba(51,65,85,0.10)","--role-surface-tint":"rgba(248,250,252,0.82)","--role-border":"rgba(51,65,85,0.20)","--role-focus-ring":"#475569"}},hr:{id:"hr",labelKey:"console.role.hr",density:"balanced",tone:"warm-professional",contentPriority:["queues","timestamps","approvals"],motion:{defaultLevel:"minimal",allowParticles:!1,allowCelebrations:!1,allowDecorativeBadges:!1},actionPolicy:{requireConfirmationForDestructive:!0,showReversalHint:!0,preferOneClickApproval:!1},staleDataThresholdMs:45e3,cssVars:{"--role-accent":"#7c3aed","--role-accent-soft":"rgba(124,58,237,0.10)","--role-surface-tint":"rgba(250,245,255,0.72)","--role-border":"rgba(124,58,237,0.20)","--role-focus-ring":"#6d28d9"}},sales:{id:"sales",labelKey:"console.role.sales",density:"balanced",tone:"warm-professional",contentPriority:["pipeline","sources","exactNumbers"],motion:{defaultLevel:"minimal",allowParticles:!1,allowCelebrations:!1,allowDecorativeBadges:!1},actionPolicy:{requireConfirmationForDestructive:!0,showReversalHint:!0,preferOneClickApproval:!1},staleDataThresholdMs:45e3,cssVars:{"--role-accent":"#b45309","--role-accent-soft":"rgba(180,83,9,0.10)","--role-surface-tint":"rgba(255,251,235,0.70)","--role-border":"rgba(180,83,9,0.20)","--role-focus-ring":"#92400e"}}},Ag=b.createContext(null),Cg="sgrobot-console-role";function d0(){try{const n=localStorage.getItem(Cg);if(n&&n in dc)return n}catch{}return"sales"}function f0({children:n}){const[i,r]=b.useState(d0),o=b.useCallback(m=>{r(m);try{localStorage.setItem(Cg,m)}catch{}},[]),d=dc[i];return c.jsx(Ag.Provider,{value:{role:i,profile:d,setRole:o},children:c.jsx("div",{style:d.cssVars,"data-role":i,children:n})})}function m0(){const n=b.useContext(Ag);if(!n)throw new Error("useRole must be used within RoleProvider");return n}function Ho({className:n=""}){return c.jsx("div",{className:`de-gem ${n}`,"aria-hidden":"true"})}function h0(){return c.jsxs("div",{className:"de-stage","aria-hidden":"true",children:[c.jsx("div",{className:"de-stage-glow"}),c.jsx("div",{className:"de-stage-layer de-stage-layer-1"}),c.jsx("div",{className:"de-stage-layer de-stage-layer-2"}),c.jsx("div",{className:"de-stage-layer de-stage-layer-3"})]})}function p0({avatarSrc:n,altText:i="数字员工",statusLabel:r}){return c.jsxs("div",{className:"de-avatar-container","aria-hidden":"true",children:[c.jsxs("div",{className:"de-avatar-glass-space",children:[c.jsxs("div",{className:"de-avatar-roof",children:[c.jsx("div",{className:"de-avatar-roof-face"}),c.jsx("div",{className:"de-avatar-roof-glow"})]}),c.jsx("div",{className:"de-avatar-glass-left"}),c.jsx("div",{className:"de-avatar-glass-right"}),c.jsx(Ho,{className:"de-gem-1"}),c.jsx(Ho,{className:"de-gem-2"}),c.jsx(Ho,{className:"de-gem-3"})]}),r&&c.jsx("div",{className:"de-avatar-state-label",children:r}),c.jsx("img",{src:n,alt:i,className:"de-avatar-img"}),c.jsx(h0,{})]})}const g0=".",y0=(()=>{var i;return((i=window.__QIMINGCLAW_DIGITAL_API_BASE__)==null?void 0:i.replace(/\/+$/,""))??""})(),v0=()=>"",Dg="zeroclaw_token";function b0(){try{return localStorage.getItem(Dg)}catch{return null}}function _0(){try{localStorage.removeItem(Dg)}catch{}}const zg="qimingclaw:digital-employee-adapter-state",S0="18:00",x0=[{skill_id:"qimingclaw-acp-session",name:"ACP 会话执行",version:"1.0.0",enabled:!0,description:"通过 qimingclaw 的 ACP 引擎创建会话、执行任务并跟踪结果。",category:"执行",capability_level:"core"},{skill_id:"qimingclaw-mcp-tools",name:"MCP 工具编排",version:"1.0.0",enabled:!0,description:"读取已配置 MCP 服务与工具,作为数字员工的工具能力池。",category:"工具",capability_level:"core"},{skill_id:"qimingclaw-computer-control",name:"客户端电脑控制",version:"1.0.0",enabled:!0,description:"承接 /computer/chat 执行入口,面向远程任务和本地自动化操作。",category:"桌面",capability_level:"specialized"},{skill_id:"qimingclaw-artifact-report",name:"产物与日报整理",version:"1.0.0",enabled:!0,description:"把执行记录、关键产物和异常汇总成数字员工日报。",category:"汇报",capability_level:"standard"}],on=[{plan_id:"qimingclaw-client-readiness",title:"客户端运行状态巡检",objective:"确认 qimingclaw 客户端、Agent、MCP 和远程接入能力是否处于可执行状态。",status:"running",created_at:cn(9,0),steps:[{step_id:"agent-status",title:"检查 Agent 引擎状态",depends_on:[],preferred_skills:["qimingclaw-acp-session"],tasks:[{task_id:"task-agent-status",title:"读取 Agent 服务状态",status:"running"}]},{step_id:"mcp-status",title:"检查 MCP 工具能力",depends_on:["agent-status"],preferred_skills:["qimingclaw-mcp-tools"],tasks:[{task_id:"task-mcp-status",title:"同步 MCP 工具列表",status:"pending"}]}]},{plan_id:"qimingclaw-remote-task-ingress",title:"远程任务接入准备",objective:"检查 lanproxy、computer server 和文件服务,为后端下发数字员工任务做准备。",status:"pending",created_at:cn(9,30),steps:[{step_id:"computer-server",title:"确认 /computer/chat 执行入口",depends_on:[],preferred_skills:["qimingclaw-computer-control"],tasks:[{task_id:"task-computer-server",title:"检查电脑控制服务",status:"pending"}]},{step_id:"file-artifact",title:"准备产物回传目录",depends_on:["computer-server"],preferred_skills:["qimingclaw-artifact-report"],tasks:[{task_id:"task-file-artifact",title:"整理执行产物通道",status:"pending"}]}]},{plan_id:"qimingclaw-daily-report",title:"数字员工日报生成",objective:"汇总今日执行记录、服务状态和待介入事项,生成面向业务的日报。",status:"pending",created_at:cn(17,30),steps:[{step_id:"collect-events",title:"汇总运行事件",depends_on:[],preferred_skills:["qimingclaw-artifact-report"],tasks:[{task_id:"task-collect-events",title:"整理今日运行明细",status:"pending"}]},{step_id:"write-report",title:"生成日报摘要",depends_on:["collect-events"],preferred_skills:["qimingclaw-artifact-report"],tasks:[{task_id:"task-write-report",title:"生成数字员工日报",status:"pending"}]}]}],fc={"qimingclaw-client-readiness":{expression:"0 9 * * *",nextRun:cn(9,0),scheduleText:"已定时 09:00 执行"},"qimingclaw-remote-task-ingress":{expression:"30 9 * * *",nextRun:cn(9,30),scheduleText:"已定时 09:30 执行"},"qimingclaw-daily-report":{expression:"0 18 * * *",nextRun:cn(18,0),scheduleText:"已定时 18:00 执行"}};function j0(){return window.__QIMINGCLAW_EMBEDDED_DIGITAL__===!0}async function w0(n,i={}){if(!j0())return;const r=new URL(n,window.location.origin),o=(i.method||"GET").toUpperCase(),d=r.pathname;if(o==="GET"&&d==="/api/digital-employee/workday")return Gg(r.searchParams.get("date")||Ed(),await It());if(o==="POST"&&d==="/api/digital-employee/workday/actions")return await tS(Go(i.body),await It());if(o==="POST"&&d==="/api/governance/command")return await aS(Go(i.body),await It());if(o==="GET"&&d==="/api/scheduler/jobs")return{jobs:$0(await It())};if(o==="GET"&&d==="/api/debug/plans")return{plans:Yg(r.searchParams.get("q"),await It())};if(o==="GET"&&d==="/api/debug/tasks"){const m=r.searchParams.get("plan_id");return Ad(m,await It())}if(o==="GET"&&d==="/api/debug/store")return B0(await It());if(o==="GET"&&d==="/api/dashboard")return H0(await It());if(o==="GET"&&d==="/api/artifact")return{artifacts:Ug(await It())};if(o==="GET"&&d.startsWith("/api/debug/plan/")&&d.endsWith("/flow"))return Qg(decodeURIComponent(d.split("/")[4]||""),await It());if(o==="GET"&&d.startsWith("/api/debug/task/")&&d.endsWith("/flow"))return nS(decodeURIComponent(d.split("/")[4]||""),await It());if(o==="POST"&&d.startsWith("/api/debug/plan/")&&d.endsWith("/dispatch"))return await Xg(decodeURIComponent(d.split("/")[4]||""),await It());if(o==="GET"&&d.startsWith("/api/plan/")&&d.endsWith("/messages"))return{messages:lS(decodeURIComponent(d.split("/")[3]||""),await It())};if(o==="GET"&&d==="/api/skill")return{skills:await N0()};if(o==="POST"&&d.startsWith("/api/skill/")&&d.endsWith("/enabled")){const m=decodeURIComponent(d.split("/")[3]||""),p=Go(i.body);return{ok:!0,skill_id:m,enabled:p.enabled??!0}}}function Yo(){return{selectedDutyIdsByDate:{},confirmedDates:{},reportScheduleTime:S0,reportGeneratedAtByDate:{},decisionResultsByDate:{},profile:{name:"飞天数字员工",company:"qimingclaw 客户端",position:"客户端任务执行员",currentStatus:"working"}}}function jd(){try{const n=window.localStorage.getItem(zg);return n?{...Yo(),...JSON.parse(n)}:Yo()}catch{return Yo()}}function E0(n){window.localStorage.setItem(zg,JSON.stringify(n))}async function It(){var n,i,r,o,d,m,p,v,h;try{const y=await((r=(i=(n=window.QimingClawBridge)==null?void 0:n.digital)==null?void 0:i.getSnapshot)==null?void 0:r.call(i))??null;if(!y)return null;const[E,S,k]=await Promise.all([((m=(d=(o=window.QimingClawBridge)==null?void 0:o.digital)==null?void 0:d.getSyncStatus)==null?void 0:m.call(d).catch(()=>null))??null,((h=(v=(p=window.QimingClawBridge)==null?void 0:p.digital)==null?void 0:v.getRuntimeRecords)==null?void 0:h.call(v).catch(()=>null))??null,wd()]);return{...y,sync:E,runtime:S,uiState:k}}catch{return null}}async function wd(){var n,i,r;try{return await((r=(i=(n=window.QimingClawBridge)==null?void 0:n.digital)==null?void 0:i.getUiState)==null?void 0:r.call(i))??null}catch{return null}}async function k0(){var n,i,r;try{const o=await((r=(i=(n=window.QimingClawBridge)==null?void 0:n.digital)==null?void 0:i.getSkillCapabilities)==null?void 0:r.call(i))??null;return Array.isArray(o==null?void 0:o.skills)?o.skills:[]}catch{return[]}}async function N0(){return T0([...x0,...await k0()])}function T0(n){const i=new Set,r=[];for(const o of n){const d=typeof o.skill_id=="string"?o.skill_id.trim():"";!d||i.has(d)||(i.add(d),r.push({...o,skill_id:d}))}return r}async function Rg(n,i,r,o){var d,m,p;E0(n);try{return await((p=(m=(d=window.QimingClawBridge)==null?void 0:d.digital)==null?void 0:m.saveUiState)==null?void 0:p.call(m,{state:n,action:i,date:r,metadata:o}))??n}catch{return n}}function Go(n){return typeof n!="string"||!n.trim()?{}:JSON.parse(n)}function Ed(){const n=new Date;return[n.getFullYear(),String(n.getMonth()+1).padStart(2,"0"),String(n.getDate()).padStart(2,"0")].join("-")}function cn(n,i){const r=new Date;return r.setHours(n,i,0,0),r.toISOString()}function Fr(n){return n.split("-").join("/")}function mc(n){if(!n)return"未知";const i=new Date(n);return Number.isNaN(i.getTime())?n:new Intl.DateTimeFormat("zh-CN",{hour:"2-digit",minute:"2-digit"}).format(i)}function A0(n,i){return new Set(n.selectedDutyIdsByDate[i]??[])}function C0(n){return["completed","succeeded","success"].includes(n)?"success":["running","active"].includes(n)?"running":["failed","error"].includes(n)?"danger":"waiting"}function gs(n,i){var r;return((r=n==null?void 0:n.services[i])==null?void 0:r.running)===!0}function ys(n,i){var r;return(r=n==null?void 0:n.services[i])==null?void 0:r.error}function D0(n,i){return i?n.plan_id==="qimingclaw-client-readiness"?gs(i,"agent")&&gs(i,"mcp")?"running":ys(i,"agent")||ys(i,"mcp")?"failed":"pending":n.plan_id==="qimingclaw-remote-task-ingress"?gs(i,"computerServer")||gs(i,"lanproxy")||gs(i,"fileServer")?"running":ys(i,"computerServer")||ys(i,"lanproxy")||ys(i,"fileServer")?"failed":"pending":n.status:n.status}function Bn(n,i,r){const o=n==null?void 0:n.services[i];if(!o)return`${r}:未连接`;if(o.running){const d=o.port?`(端口 ${o.port})`:"";return`${r}:运行中${d}`}return`${r}:未运行${o.error?`,${o.error}`:""}`}function ld(n){const i=n==null?void 0:n.sync;return i?i.enabled?i.endpoint?i.syncing?`管理端同步:同步中,待同步 ${i.pending} 条`:i.failed>0?`管理端同步:${i.failed} 条失败,待同步 ${i.pending} 条`:i.pending>0?`管理端同步:待同步 ${i.pending} 条`:i.lastSyncAt?`管理端同步:已同步,最近 ${i.lastSyncAt}`:"管理端同步:等待本地数据":"管理端同步:未配置地址":"管理端同步:已停用":"管理端同步:未连接"}function z0(n){return String(n||"").replace(/\s+/g," ").trim()}function Oa(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.plans)??[]}function Sa(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.tasks)??[]}function _c(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.runs)??[]}function dn(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.events)??[]}function Mg(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.artifacts)??[]}function Og(n){var i;return((i=n==null?void 0:n.runtime)==null?void 0:i.approvals)??[]}function Yn(n){return Oa(n).length>0||Sa(n).length>0||Mg(n).length>0||Og(n).length>0}function Lg(n,i){const r=[n.updatedAt,...i.map(o=>o.updatedAt)].filter(Boolean).sort();return r[r.length-1]??n.updatedAt??n.createdAt}function nt(n){const i=n.toLowerCase();return["completed","succeeded","success","done"].includes(i)?"success":["failed","error","rejected"].includes(i)?"danger":["running","active","leased","syncing"].includes(i)?"running":"waiting"}function Hn(n){const i=nt(n);return i==="success"?"已完成":i==="danger"?"异常":i==="running"?"执行中":"待执行"}function kd(n,i){return Sa(n).filter(r=>r.planId===i)}function Nd(n,i){return i.some(r=>nt(r.status)==="danger")?"failed":i.some(r=>nt(r.status)==="running")?"running":i.length>0&&i.every(r=>nt(r.status)==="success")?"completed":n.status||"pending"}function R0(n,i){const r=kd(i,n.id),o=Nd(n,r);return{plan_id:n.id,title:n.title,objective:n.objective??void 0,status:o,created_at:n.createdAt,updated_at:Lg(n,r),source:n.source,sync_status:n.syncStatus,steps:[{step_id:`${n.id}:runtime`,title:"qimingclaw 执行记录",depends_on:[],preferred_skills:[...new Set(r.map(d=>d.assignedSkillId).filter(d=>!!d))],tasks:r.map(d=>({task_id:d.id,title:d.title,status:d.status}))}]}}function M0(n){return{task_id:n.id,title:n.title,status:n.status,plan_id:n.planId??null,step_id:n.planId?`${n.planId}:runtime`:"qimingclaw-runtime",assigned_skill_id:n.assignedSkillId??"",description:n.syncError??"",created_at:n.createdAt,updated_at:n.updatedAt,started_at:n.createdAt,finished_at:nt(n.status)==="success"||nt(n.status)==="danger"?n.updatedAt:null,error_message:n.syncError??null,sync_status:n.syncStatus}}function O0(n,i){return{run_id:n.id,task_id:n.taskId??"",plan_id:n.planId??null,skill_id:void 0,attempt_no:1,lifecycle:nt(n.status)==="success"?"Succeeded":nt(n.status)==="danger"?"Failed":nt(n.status)==="running"?"Running":n.status,created_at:n.startedAt??n.createdAt,completed_at:n.finishedAt??null,events:i.filter(r=>r.runId===n.id).map(r=>({event_id:r.id,kind:r.kind,occurred_at:r.occurredAt,message:r.message})),artifacts:Bg(n,i),sync_status:n.syncStatus}}function $g(n){const i=z0(n.error),r=i.length>120?`${i.slice(0,120)}...`:i,o=n.dueForRetry?"等待补偿":n.nextRetryAt?`下次重试 ${n.nextRetryAt}`:"等待重试";return`${n.entityType}/${n.operation} ${n.id} 重试 ${n.attempts} 次,${o}${r?`,${r}`:""}`}function Sc(n,i){return{...n,status:D0(n,i)}}function L0(n){return n==="running"?"执行中":n==="completed"||n==="succeeded"?"已完成":n==="failed"?"异常":"待执行"}function Td(n){const i=Oa(n);if(i.length>0)return i.map(o=>R0(o,n));const r=Sa(n);return r.length===0?[]:r.map(o=>({plan_id:o.id,title:o.title,objective:"未绑定 Plan 的 qimingclaw 本地任务记录。",status:o.status,created_at:o.createdAt,updated_at:o.updatedAt,source:"qimingclaw",sync_status:o.syncStatus,steps:[{step_id:`${o.id}:runtime`,title:"qimingclaw 执行记录",depends_on:[],preferred_skills:o.assignedSkillId?[o.assignedSkillId]:[],tasks:[{task_id:o.id,title:o.title,status:o.status}]}]}))}function $0(n=null){return Yn(n)?Td(n).map(i=>{var r;return{id:`runtime-${i.plan_id}`,name:i.title,expression:"",command:`qimingclaw-runtime:${i.plan_id}`,prompt:i.objective??null,job_type:"qimingclaw_runtime",schedule:{mode:"runtime_record",plan_id:i.plan_id},enabled:!0,delivery:{mode:"qimingclaw_runtime",plan_id:i.plan_id},template_id:i.plan_id,trigger_kind:"runtime_record",step_count:((r=i.steps)==null?void 0:r.length)??0,skill_ids:[...new Set((i.steps??[]).flatMap(o=>o.preferred_skills??[]))],delete_after_run:!1,created_at:i.created_at,next_run:i.updated_at??i.created_at,last_run:i.updated_at??i.created_at,last_status:i.status,last_output:null}}):on.map(i=>{var o;const r=fc[i.plan_id]??fc["qimingclaw-client-readiness"];return{id:`schedule-${i.plan_id}`,name:i.title,expression:r.expression,command:`digital-employee:${i.plan_id}`,prompt:i.objective??null,job_type:"plan_template",schedule:{expression:r.expression,template_id:i.plan_id},enabled:!0,delivery:{mode:"plan_template",template_id:i.plan_id},template_id:i.plan_id,trigger_kind:"scheduled",step_count:((o=i.steps)==null?void 0:o.length)??0,skill_ids:[...new Set((i.steps??[]).flatMap(d=>d.preferred_skills??[]))],delete_after_run:!1,created_at:i.created_at,next_run:r.nextRun,last_run:i.status==="running"?cn(9,5):null,last_status:i.status==="running"?"running":null,last_output:null}})}function q0(n,i,r){const o=A0(n,i);if(Yn(r)){const d=Oa(r),m=Sa(r).filter(h=>!h.planId),p=d.map((h,y)=>{const E=kd(r,h.id),S=Nd(h,E),k=E.filter(L=>nt(L.status)==="success").length,R=E.filter(L=>nt(L.status)==="danger").length,T=o.size===0?y<3:o.has(h.id);return{id:h.id,title:h.title,summary:h.objective||"qimingclaw 本地执行记录已同步到数字员工。",implemented:!0,selectable:!0,selected:T,status:S,status_label:Hn(S),status_tone:nt(S),schedule_text:E.length>0?`最近更新 ${mc(Lg(h,E))}`:"等待任务记录",result_text:E.length>0?`${E.length} 项任务,${k} 项完成,${R} 项异常`:`同步状态:${h.syncStatus}`,conversation_id:h.id}}),v=m.map((h,y)=>({id:h.id,title:h.title,summary:"未绑定 Plan 的 qimingclaw 本地任务记录。",implemented:!0,selectable:!0,selected:o.size===0?p.length+y<3:o.has(h.id),status:h.status,status_label:Hn(h.status),status_tone:nt(h.status),schedule_text:`最近更新 ${mc(h.updatedAt)}`,result_text:h.syncError||`同步状态:${h.syncStatus}`,conversation_id:h.id}));return[...p,...v]}return on.map(d=>{const m=Sc(d,r),p=fc[m.plan_id]??fc["qimingclaw-client-readiness"];return{id:m.plan_id,title:m.title,summary:m.objective??"等待 qimingclaw 执行链路补充任务说明。",implemented:!0,selectable:!0,selected:o.has(m.plan_id),status:m.status,status_label:L0(m.status),status_tone:C0(m.status),schedule_text:p.scheduleText,result_text:qg(m,r),conversation_id:m.plan_id}})}function qg(n,i){return n.plan_id==="qimingclaw-client-readiness"?[Bn(i,"agent","Agent"),Bn(i,"mcp","MCP"),`活跃会话:${(i==null?void 0:i.sessions.active)??0}`].join(";"):n.plan_id==="qimingclaw-remote-task-ingress"?[Bn(i,"computerServer","Computer Server"),Bn(i,"lanproxy","Lanproxy"),Bn(i,"fileServer","File Server")].join(";"):n.status==="running"?"正在同步客户端运行状态":"等待任务执行"}function Ns(n,i=null){return Yn(i)?Sa(i).filter(r=>!n||r.planId===n||r.id===n).map(M0):on.filter(r=>!n||r.plan_id===n).map(r=>Sc(r,i)).flatMap(r=>(r.steps??[]).flatMap(o=>(o.tasks??[]).map(d=>{var m;return{task_id:d.task_id,title:d.title,status:r.status==="running"&&d.status==="pending"?"running":d.status,plan_id:r.plan_id,step_id:o.step_id,assigned_skill_id:((m=o.preferred_skills)==null?void 0:m[0])??"",description:`${r.title} · ${o.title}`,created_at:r.created_at,updated_at:r.status==="running"?new Date().toISOString():r.created_at,started_at:d.status==="running"?cn(9,5):null,finished_at:d.status==="completed"?cn(9,10):null}})))}function U0(n){return n.filter(i=>i.status==="running"||i.status==="completed").map((i,r)=>({run_id:`qimingclaw-run-${r+1}`,task_id:i.task_id,plan_id:i.plan_id,skill_id:i.assigned_skill_id,attempt_no:1,lifecycle:i.status==="running"?"Running":"Succeeded",created_at:i.started_at??i.created_at,completed_at:i.finished_at,events:[{event_id:`${i.task_id}-event-start`,kind:"RunStarted",occurred_at:i.started_at??i.created_at,message:`${i.title} 已进入 qimingclaw 执行链路`}]}))}function Ad(n,i=null){const r=Ns(n,i);if(Yn(i)){const o=new Set(r.map(m=>m.task_id)),d=_c(i).filter(m=>!m.taskId||o.has(m.taskId)).map(m=>O0(m,dn(i)));return{tasks:r,runs:d,total:r.length,truncated:!1}}return{tasks:r,runs:U0(r),total:r.length,truncated:!1}}function B0(n){const i=Yg(null,n),r=Ns(null,n),o=Ad(null,n).runs;return{tables:{canonical_events:Y0(n,r,o),tasks:r,runs:o,plans:i,plan_steps:i.flatMap(d=>d.steps??[]),approvals:Cd(n),artifacts:Ug(n)}}}function H0(n){const i=Ns(null,n),r=i.filter(v=>nt(v.status)==="waiting").length,o=i.filter(v=>nt(v.status)==="running").length,d=i.filter(v=>nt(v.status)==="success").length,m=i.filter(v=>nt(v.status)==="danger").length,p=Cd(n);return{runtime:{active_tasks:o,failed_tasks:m,pending_confirmations:p.filter(v=>v.status==="pending").length},tasks:{total:i.length,queued:r,running:o,succeeded:d,failed:m},approvals:{total:p.length,pending:p.filter(v=>v.status==="pending").length}}}function Y0(n,i,r){var v;const o=dn(n).map(h=>({event_id:h.id,aggregate_type:h.runId?"run":h.taskId?"task":"plan",aggregate_id:h.runId??h.taskId??h.planId??h.id,event_type:h.kind,kind:h.kind,message:h.message,occurred_at:h.occurredAt,timestamp:h.occurredAt,plan_id:h.planId??null,task_id:h.taskId??null})),d=r.flatMap(h=>(h.events??[]).map(y=>({event_id:y.event_id??`${h.run_id}:${y.kind??"event"}:${y.occurred_at??h.created_at}`,aggregate_type:"run",aggregate_id:h.run_id,event_type:y.kind??h.lifecycle,kind:y.kind??h.lifecycle,message:y.message??h.lifecycle,occurred_at:y.occurred_at??h.completed_at??h.created_at,timestamp:y.occurred_at??h.completed_at??h.created_at,plan_id:h.plan_id??null,task_id:h.task_id||null}))),m=i.map(h=>({event_id:`task-status-${h.task_id}`,aggregate_type:"task",aggregate_id:h.task_id,event_type:"task_status",kind:h.status,message:`${h.title}:${Hn(h.status)}`,occurred_at:h.updated_at??h.created_at,timestamp:h.updated_at??h.created_at,plan_id:h.plan_id??null,task_id:h.task_id})),p=(((v=n==null?void 0:n.sync)==null?void 0:v.recentFailures)??[]).map(h=>({event_id:`digital-sync-failure-${h.id}`,aggregate_type:"sync_outbox",aggregate_id:h.id,event_type:"digital_sync_failed",kind:"digital_sync_failed",message:$g(h),occurred_at:h.lastAttemptAt??h.updatedAt??h.createdAt,timestamp:h.lastAttemptAt??h.updatedAt??h.createdAt,plan_id:null,task_id:null}));return G0([...o,...d,...m,...p]).sort((h,y)=>(y.occurred_at??"").localeCompare(h.occurred_at??""))}function G0(n){const i=new Set;return n.filter(r=>!r.event_id||i.has(r.event_id)?!1:(i.add(r.event_id),!0))}function Cd(n){var d;const i=Og(n).map(m=>({approval_id:m.id,task_id:m.taskId??"",status:m.status,created_at:m.createdAt,plan_id:m.planId??null,run_id:m.runId??null,title:m.title,reversible:m.status==="pending",source:"qimingclaw-runtime",sync_status:m.syncStatus,sync_error:m.syncError,payload:m.payload})),o=(((d=n==null?void 0:n.sync)==null?void 0:d.recentFailures)??[]).filter(m=>m.dueForRetry===!1||/credential|auth|token|unauthor/i.test(m.error??"")).slice(0,20).map(m=>({approval_id:`sync-review-${m.id}`,task_id:m.entityId,status:"pending",created_at:m.createdAt,title:`同步异常待处理:${m.entityType}/${m.entityId}`,reversible:!1,source:"qimingclaw-sync",error:m.error}));return[...i,...o]}function Q0(n,i,r){var p;const o=new Map(Oa(r).map(v=>[v.id,v])),d=new Map(Sa(r).map(v=>[v.id,v])),m=((p=n.decisionResultsByDate)==null?void 0:p[i])??{};return Cd(r).filter(v=>He(v.source)==="qimingclaw-runtime").map(v=>{const h=xc(v.payload),y=He(v.approval_id)||`approval-${hc(He(v.task_id)||He(v.title)||"item")}`,E=m[y],S=K0(E,He(v.status)||"pending"),k=He(v.plan_id),R=He(v.task_id),T=k?o.get(k):null,L=R?d.get(R):null;return{id:y,title:He(v.title)||He(h==null?void 0:h.title)||"待确认事项",scenario:X0(v,h),status:S,status_label:Z0(S,E),plan_title:(T==null?void 0:T.title)||He(h==null?void 0:h.plan_title)||He(v.plan_id)||"qimingclaw 本地记录",task_title:(L==null?void 0:L.title)||He(h==null?void 0:h.task_title)||He(v.task_id)||"待确认任务",actions:V0(S)?[{id:"approved",label:"同意",tone:"primary"},{id:"rejected",label:"驳回",tone:"secondary"}]:[]}})}function X0(n,i){return He(i==null?void 0:i.scenario)||He(i==null?void 0:i.summary)||He(i==null?void 0:i.reason)||He(i==null?void 0:i.message)||He(n.error)||"来自 qimingclaw 本地运行记录的人工确认项。"}function K0(n,i){const r=String(n||"").toLowerCase();return["approve","approved","accept","accepted"].includes(r)?"approved":["reject","rejected","deny","denied"].includes(r)?"rejected":["dismiss","dismissed","skip","skipped"].includes(r)?"dismissed":i||"pending"}function Z0(n,i){return i?n==="approved"?"已同意":n==="rejected"?"已驳回":n==="dismissed"?"已忽略":"已处理":n==="approved"?"已同意":n==="rejected"?"已驳回":n==="completed"?"已完成":n==="failed"?"异常":"待确认"}function V0(n){return["pending","requested"].includes(String(n||"").toLowerCase())}function Ug(n){const i=[...Mg(n).map(J0),..._c(n).flatMap(r=>Bg(r,dn(n))),...dn(n).flatMap(r=>id(r.id,r.payload,r.occurredAt))];return Hg(i)}function J0(n){const i=xc(n.payload);return{artifact_id:n.id,subject_id:n.runId??n.taskId??n.planId??n.id,kind:n.kind,name:n.name||He((i==null?void 0:i.name)??(i==null?void 0:i.title))||sd(n.uri??"")||n.kind,uri:n.uri||He((i==null?void 0:i.uri)??(i==null?void 0:i.url)??(i==null?void 0:i.path))||void 0,value:He((i==null?void 0:i.value)??(i==null?void 0:i.summary)??(i==null?void 0:i.text))||n.uri||n.name||n.kind,plan_id:n.planId??null,task_id:n.taskId??null,run_id:n.runId??null,created_at:n.createdAt,source:"qimingclaw-runtime",sync_status:n.syncStatus,sync_error:n.syncError,payload:n.payload}}function Bg(n,i){return Hg([...id(n.id,n.payload,n.finishedAt??n.startedAt??n.createdAt),...i.filter(r=>r.runId===n.id).flatMap(r=>id(n.id,r.payload,r.occurredAt))])}function id(n,i,r){const o=xc(i);if(!o)return typeof i=="string"?[Qo(n,i,0,r)]:[];const m=[...Wr(o.artifacts),...Wr(o.outputs),...Wr(o.files),...Wr(o.attachments)].map((p,v)=>Qo(n,p,v,r));for(const p of["artifact","outputPath","output_path","filePath","file_path","path","uri","url"])o[p]&&m.push(Qo(n,o[p],m.length,r));return m.filter(p=>p.name||p.uri||p.value)}function Qo(n,i,r,o){const d=xc(i);if(d){const p=He(d.uri??d.url??d.path??d.filePath??d.file_path??d.outputPath??d.output_path),v=He(d.name??d.title??d.filename)||sd(p)||`产物 ${r+1}`;return{artifact_id:He(d.artifact_id??d.id)||`artifact-${hc(n)}-${r+1}`,subject_id:He(d.subject_id)||n,kind:He(d.kind??d.type)||"artifact",name:v,uri:p,value:He(d.value??d.summary??d.text)||p,created_at:(He(d.created_at??d.createdAt)||o)??void 0,source:"qimingclaw-runtime"}}const m=String(i??"").trim();return{artifact_id:`artifact-${hc(n)}-${r+1}`,subject_id:n,kind:"artifact",name:sd(m)||`产物 ${r+1}`,uri:F0(m)?m:void 0,value:m,created_at:o??void 0,source:"qimingclaw-runtime"}}function Hg(n){const i=new Set;return n.filter(r=>{const o=r.artifact_id||`${r.subject_id}:${r.uri||r.value||r.name}`;return!o||i.has(o)?!1:(i.add(o),!!(r.name||r.uri||r.value))})}function xc(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:null}function Wr(n){return Array.isArray(n)?n:[]}function He(n){return typeof n=="string"?n.trim():""}function F0(n){return/^(file|https?):\/\//i.test(n)||n.includes("/")||n.includes("\\")}function sd(n){return n?(n.split(/[?#]/)[0]||n).split(/[\\/]/).filter(Boolean).pop()??"":""}function hc(n){const i=n.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(i)return i;let r=0;for(let o=0;o>>0;return`item-${r.toString(36)}`}function Yg(n,i=null){const r=(n??"").trim().toLowerCase(),o=Yn(i)?Td(i):on.map(d=>Sc(d,i));return r?o.filter(d=>d.title.toLowerCase().includes(r)||d.plan_id.toLowerCase().includes(r)||(d.objective??"").toLowerCase().includes(r)):o}function W0(n){const i=new Map(Oa(n).map(d=>[d.id,d])),r=new Map(Sa(n).map(d=>[d.id,d])),o=dn(n).map(d=>{const m=d.taskId?r.get(d.taskId):void 0,p=d.planId??(m==null?void 0:m.planId)??null,v=p?i.get(p):void 0,h=(m==null?void 0:m.status)??(v==null?void 0:v.status)??(d.kind.includes("failed")||d.kind.includes("error")?"failed":"running"),y=nt(h);return{id:d.id,time:mc(d.occurredAt),plan_title:(v==null?void 0:v.title)??"qimingclaw 本地执行",task_title:(m==null?void 0:m.title)??d.message,step_title:d.kind,detail:d.message||d.kind,status:h,status_label:Hn(h),status_tone:y,updated_at:d.occurredAt,conversation_id:p??(m==null?void 0:m.id)??d.id}});return o.length>0?o:Sa(n).map(d=>{const m=d.planId?i.get(d.planId):void 0;return{id:`task-event-${d.id}`,time:mc(d.updatedAt),plan_title:(m==null?void 0:m.title)??"qimingclaw 本地任务",task_title:d.title,step_title:d.assignedSkillId||"qimingclaw-runtime",detail:d.syncError||`${d.title}:${Hn(d.status)},同步状态 ${d.syncStatus}`,status:d.status,status_label:Hn(d.status),status_tone:nt(d.status),updated_at:d.updatedAt,conversation_id:d.planId??d.id}})}function I0(n,i,r){if(Yn(r)){const m=W0(r);return Dp(m,r)}if(!i)return[{id:"event-await-confirmation",time:"待确认",plan_title:"任务设置",task_title:"等待确认今日任务",step_title:"选择职责",detail:"请先确认今天要执行的任务,确认后数字员工会开始执行。",status:"pending",status_label:"待确认",status_tone:"waiting",updated_at:new Date().toISOString(),conversation_id:null}];const d=n.filter(m=>m.selected).map(m=>({id:`event-${m.id}`,time:m.status==="running"?"实时":"待执行",plan_title:m.title,task_title:m.title,step_title:m.status==="running"?"同步 qimingclaw 服务状态":"等待调度",detail:m.status==="running"?`${m.result_text}。快照时间:${(r==null?void 0:r.generatedAt)??"未连接 bridge"}`:"任务已确认,将在后续阶段接入 ACP/MCP 真实执行事件。",status:m.status==="running"?"running":"pending",status_label:m.status==="running"?"执行中":"待执行",status_tone:m.status==="running"?"running":"waiting",updated_at:new Date().toISOString(),conversation_id:m.conversation_id}));return Dp(d,r)}function Dp(n,i){const r=i==null?void 0:i.sync;if(r&&(r.pending>0||r.failed>0||r.lastSyncAt)){const o=(r.recentFailures||[]).slice(0,3).map($g).join(";");return[...n,{id:"event-management-sync",time:r.syncing?"实时":"同步",plan_title:"管理端联动",task_title:"同步数字员工本地状态",step_title:r.failed>0?"同步补偿":"outbox 推送",detail:[ld(i),r.lastSyncError?`错误:${r.lastSyncError}`:"",o?`最近失败:${o}`:""].filter(Boolean).join("。"),status:r.failed>0?"failed":r.syncing||r.pending>0?"running":"completed",status_label:r.failed>0?"异常":r.syncing||r.pending>0?"同步中":"已同步",status_tone:r.failed>0?"danger":r.syncing||r.pending>0?"running":"success",updated_at:r.lastSyncAt??new Date().toISOString(),conversation_id:"qimingclaw-management-sync"}]}return n}function P0(n,i){return(n.some(o=>o.selected)?n.filter(o=>o.selected):n).map(o=>{const d=i.filter(y=>y.conversation_id===o.conversation_id),m=d.filter(y=>y.status==="running").length,p=d.filter(y=>y.status==="completed").length,v=d.filter(y=>nt(y.status)==="danger").length,h=Math.max(0,d.length-m-p-v);return{id:o.id,plan_id:o.id,title:o.title,description:o.summary,selected:o.selected,total_count:Math.max(d.length,1),success_count:p,failure_count:v,running_count:m,waiting_count:d.length===0?1:h,latest_status_label:v>0?"异常":m>0?"执行中":p>0?"已完成":"待执行",latest_status_tone:v>0?"danger":m>0?"running":p>0?"success":"waiting",business_summary:o.result_text,ai_summary:"当前由 qimingclaw 本地运行记录生成。"}})}function eS(n){return n.map(i=>({id:`run-detail-${i.id}`,time:i.time,task_name:i.task_title,step_name:i.step_title,operation_name:i.plan_title,status_label:i.status_label,status_tone:i.status_tone,business_detail:i.detail,raw_detail:i.detail,updated_at:i.updated_at,conversation_id:i.conversation_id}))}function Gg(n,i){const r=(i==null?void 0:i.uiState)??jd(),o=r.confirmedDates[n]??null,d=!!o,m=q0(r,n,i),p=I0(m,d,i),v=P0(m,p),h=r.reportGeneratedAtByDate[n]??null,y=m.filter(O=>O.selected).length,E=p.filter(O=>O.status==="running").length,S=p.filter(O=>nt(O.status)==="success").length,k=p.filter(O=>nt(O.status)==="danger").length,R=Oa(i).length+Sa(i).length,T=Yn(i),L=i==null?void 0:i.sync;return{source:"live",date:n,employee:{name:r.profile.name,title:"数字员工",major:"qimingclaw 客户端任务执行",company:r.profile.company,position:r.profile.position,current_status:r.profile.currentStatus,current_status_label:r.profile.currentStatus==="resting"?"休息中":"工作中",motto:"承接客户端任务,调度 ACP 与 MCP 能力完成执行。"},workday:{confirmed:d,confirmed_at:o,current_status:r.profile.currentStatus,current_status_label:r.profile.currentStatus==="resting"?"休息中":"工作中",status_label:T?k>0?"有异常":E>0?"执行中":"已同步":d?"运行中":"待确认",status_tone:T?k>0?"danger":E>0?"running":"success":d?"running":"waiting",summary:T?`当前日期 ${Fr(n)} 已读取 ${R} 条 qimingclaw 本地运行记录。`:d?`当前日期 ${Fr(n)} 已确认 ${y} 项任务。`:`当前日期 ${Fr(n)} 待确认今日任务。`,bubble_text:T?"我已接入 qimingclaw 本地运行记录,会持续展示真实任务、事件和同步状态。":d?"我已接入 qimingclaw 客户端执行链路,正在等待真实 Run/Event 数据接入。":"请先确认今天要执行的任务,我会把它们映射到 qimingclaw 执行链路。"},overview:{title:"今日执行",status_label:T?"本地真实记录":d?"真实数据":"待确认",status_tone:k>0?"danger":T||d?"success":"waiting",metrics:[{label:"已选任务",value:String(y)},{label:"运行记录",value:String(p.length)},{label:"执行中",value:String(E)},{label:"已完成",value:String(S)},{label:"异常",value:String(k)},{label:"待同步",value:String((L==null?void 0:L.pending)??0)},{label:"同步异常",value:String((L==null?void 0:L.failed)??0)}]},duties:m,events:p,execution_summaries:v,run_details:eS(p),decisions:Q0(r,n,i),delivery:{headline:T?"qimingclaw 本地记录已接入":d?"qimingclaw 执行链路已接入":"等待确认任务设置",summary:T?"数字员工页面正在读取本地 Plan / Task / Run / Event,并同步展示管理端 outbox 状态。":"当前阶段已将数字员工页面切换到 qimingclaw adapter,并开始读取客户端服务状态。",lines:["已吸收 sgRobot 数字员工 UI 和核心展示模型。",T?`已读取本地记录:Plan ${Oa(i).length} / Task ${Sa(i).length} / Run ${_c(i).length} / Event ${dn(i).length}。`:"已建立 qimingclaw workday/plans/tasks/skills API adapter。",Bn(i,"agent","Agent"),Bn(i,"mcp","MCP"),Bn(i,"computerServer","Computer Server"),ld(i),`活跃会话:${(i==null?void 0:i.sessions.active)??0} / ${(i==null?void 0:i.sessions.total)??0}`],artifacts:[{name:"数字员工运行摘要",status:h?"ready":"pending"}]},daily_report:{date:n,title:`${Fr(n)} 飞天数字员工日报`,report_schedule_time:r.reportScheduleTime,status:h?"ready":"not_generated",generated_at:h,generated_by:h?"ai":"fallback",model:"qimingclaw-adapter",source:"qimingclaw",summary:h?`今日已完成数字员工页面到 qimingclaw adapter 的接入,并读取了 qimingclaw 服务状态。${ld(i)}。`:"日报将在生成后汇总任务选择、运行明细和后续接入建议。",totals:{task_count:y,execution_count:p.length,success_count:S,failure_count:k,running_count:E},task_sections:v,detail_lines:p.map(O=>`${O.time} ${O.task_title}:${O.detail}`),pdf_available:!!h,pdf_url:null}}}async function tS(n,i){const r=(i==null?void 0:i.uiState)??await wd()??jd(),o=n.date||Ed();n.action==="confirm_workday"&&(r.selectedDutyIdsByDate[o]=n.duty_ids??[],r.confirmedDates[o]=new Date().toISOString()),n.action==="update_profile"&&(r.profile={name:n.name||r.profile.name,company:n.company||r.profile.company,position:n.position||r.profile.position,currentStatus:n.current_status||r.profile.currentStatus}),n.action==="update_report_schedule"&&(r.reportScheduleTime=n.report_schedule_time||r.reportScheduleTime),n.action==="generate_daily_report"&&(n.duty_ids&&(r.selectedDutyIdsByDate[o]=n.duty_ids),n.report_schedule_time&&(r.reportScheduleTime=n.report_schedule_time),r.reportGeneratedAtByDate[o]=new Date().toISOString()),n.action==="decide_approval"&&n.decision_id&&(r.decisionResultsByDate=r.decisionResultsByDate??{},r.decisionResultsByDate[o]={...r.decisionResultsByDate[o]??{},[n.decision_id]:n.decision||"resolved"});const d=await Rg(r,n.action,o,n.action==="decide_approval"?{decision_id:n.decision_id,decision:n.decision}:void 0);return Gg(o,{...i??{generatedAt:new Date().toISOString(),services:{},sessions:{total:0,active:0,items:[]}},uiState:d})}async function aS(n,i){var p,v,h,y,E,S,k,R,T,L;const r=`qimingclaw-digital-${n.command_kind}-${Date.now()}`,o=n.correlation_id||r,d=oi((p=n.context_refs)==null?void 0:p.plan_id)||oi((v=n.payload)==null?void 0:v.plan_id)||oi((h=n.payload)==null?void 0:h.original_plan_id),m=oi((y=n.context_refs)==null?void 0:y.schedule_id)||oi((E=n.payload)==null?void 0:E.schedule_id);if(n.command_kind==="create_plan"){const O=`qimingclaw-local-${hc(oi((S=n.payload)==null?void 0:S.title)||d||"plan")}-${Date.now()}`;return Ir(r,o,"已在 qimingclaw 兼容层创建本地计划草稿。",{plan_id:O,status:"draft",source:"qimingclaw-adapter",requested_action:(k=n.payload)==null?void 0:k.requested_action,original_plan_id:((R=n.payload)==null?void 0:R.original_plan_id)??d})}if(n.command_kind==="activate_plan"||n.command_kind==="run_schedule_now"){const O=d||((T=Td(i)[0])==null?void 0:T.plan_id)||((L=on[0])==null?void 0:L.plan_id)||"qimingclaw-client-readiness",G=await Xg(O,i);return Ir(r,o,"已映射为 qimingclaw 本地任务激活。",{plan_id:O,status:"active",dispatched_tasks:G.dispatched_tasks,source:"qimingclaw-adapter"})}return n.command_kind==="create_schedule"?Ir(r,o,"已记录 qimingclaw 兼容定时任务请求。",{schedule_id:m||`qimingclaw-schedule-${Date.now()}`,plan_id:d,status:"enabled",source:"qimingclaw-adapter"}):["submit_plan","approve_plan","amend_plan","resume_plan","pause_plan","cancel_plan"].includes(n.command_kind)?Ir(r,o,`已接受 ${n.command_kind},当前由 qimingclaw 本地 adapter 记录兼容状态。`,{plan_id:d,status:n.command_kind==="approve_plan"?"approved":n.command_kind==="submit_plan"?"reviewing":"accepted",source:"qimingclaw-adapter"}):{command_id:r,accepted:!1,correlation_id:o,error:"missing_capability",message:`qimingclaw 数字员工兼容层尚未支持 ${n.command_kind}。`}}function Ir(n,i,r,o){return{command_id:n,accepted:!0,correlation_id:i,message:r,result:o}}function oi(n){return typeof n=="string"&&n.trim()?n.trim():""}function Qg(n,i=null){var d,m,p;if(Yn(i)){const v=Oa(i).find(R=>R.id===n),h=Ns(n,i),y=Ad(n,i).runs,E=dn(i).filter(R=>R.planId===n||h.some(T=>T.task_id===R.taskId)),S=(v==null?void 0:v.title)??((d=h[0])==null?void 0:d.title)??n,k=(v==null?void 0:v.objective)??"qimingclaw 本地运行记录";return{plan_id:n,plan_title:S,plan_status:v?Nd(v,kd(i,v.id)):(m=h[0])==null?void 0:m.status,plan_objective:k,lanes:[{key:"intent",label:"目标",color:"#38bdf8"},{key:"qimingclaw",label:"qimingclaw",color:"#22c55e"},{key:"execution",label:"执行",color:"#f59e0b"}],steps:[{seq:1,lane:"intent",label:S,sub_label:k,timestamp:(v==null?void 0:v.createdAt)??((p=h[0])==null?void 0:p.created_at)??new Date().toISOString(),color:"#38bdf8",source_type:"plan"},...h.map((R,T)=>({seq:T+2,lane:"qimingclaw",label:R.title,sub_label:`${Hn(R.status)} · ${R.assigned_skill_id||"qimingclaw-runtime"}`,timestamp:R.updated_at,color:"#22c55e",source_type:"task"})),...y.map((R,T)=>({seq:h.length+T+2,lane:"execution",label:R.lifecycle||"Run",sub_label:R.run_id,timestamp:R.completed_at??R.created_at,color:"#f59e0b",source_type:"run"}))],events:E.map(R=>({event_id:R.id,kind:R.kind,occurred_at:R.occurredAt,message:R.message}))}}const r=Sc(on.find(v=>v.plan_id===n)??on[0],i),o=new Date().toISOString();return{plan_id:r.plan_id,plan_title:r.title,plan_status:r.status,plan_objective:r.objective,lanes:[{key:"intent",label:"目标",color:"#38bdf8"},{key:"qimingclaw",label:"qimingclaw",color:"#22c55e"},{key:"execution",label:"执行",color:"#f59e0b"}],steps:[{seq:1,lane:"intent",label:r.title,sub_label:r.objective,timestamp:r.created_at,color:"#38bdf8",source_type:"plan"},{seq:2,lane:"qimingclaw",label:"接入客户端能力",sub_label:"ACP / MCP / computer server adapter",timestamp:o,color:"#22c55e",source_type:"adapter"},{seq:3,lane:"execution",label:r.status==="running"?"已读取 qimingclaw 服务状态":"等待调度",sub_label:qg(r,i),timestamp:o,color:"#f59e0b",source_type:"run"}],events:[{event_id:`${r.plan_id}-adapter-event`,kind:"qimingclaw_adapter",occurred_at:o,message:"数字员工页面已通过 qimingclaw adapter 获取数据。"}]}}function nS(n,i=null){const r=Sa(i).find(p=>p.id===n);if(!r)return Qg(n,i);const o=r.planId?Oa(i).find(p=>p.id===r.planId):null,d=_c(i).filter(p=>p.taskId===r.id),m=dn(i).filter(p=>p.taskId===r.id||d.some(v=>v.id===p.runId));return{plan_id:r.planId??r.id,plan_title:(o==null?void 0:o.title)??r.title,plan_status:r.status,plan_objective:(o==null?void 0:o.objective)??"qimingclaw 本地任务记录",lanes:[{key:"task",label:"任务",color:"#38bdf8"},{key:"execution",label:"执行",color:"#22c55e"},{key:"event",label:"事件",color:"#f59e0b"}],steps:[{seq:1,lane:"task",label:r.title,sub_label:`${Hn(r.status)} · ${r.assignedSkillId||"qimingclaw-runtime"}`,timestamp:r.updatedAt,color:"#38bdf8",source_type:"task"},...d.map((p,v)=>({seq:v+2,lane:"execution",label:p.status||"Run",sub_label:p.id,timestamp:p.finishedAt??p.startedAt??p.createdAt,color:"#22c55e",source_type:"run"})),...m.map((p,v)=>({seq:d.length+v+2,lane:"event",label:p.kind,sub_label:p.message,timestamp:p.occurredAt,color:"#f59e0b",source_type:"event"}))],events:m.map(p=>({event_id:p.id,kind:p.kind,occurred_at:p.occurredAt,message:p.message}))}}async function Xg(n,i=null){const r=(i==null?void 0:i.uiState)??await wd()??jd(),o=Ed(),d=new Set(r.selectedDutyIdsByDate[o]??[]);return d.add(n),r.selectedDutyIdsByDate[o]=[...d],r.confirmedDates[o]=r.confirmedDates[o]??new Date().toISOString(),await Rg(r,"confirm_workday",o),{ok:!0,plan_id:n,source_plan_id:n,dispatched_tasks:Ns(n,i).map(m=>({task_id:m.task_id,title:m.title,status:m.status==="pending"?"running":m.status}))}}function lS(n,i=null){const r=Oa(i).find(d=>d.id===n);if(r){const d=dn(i).filter(m=>m.planId===n).slice(0,12);return[{role:"user",content:`查看 qimingclaw 本地任务:${r.title}`,created_at:r.createdAt},...d.map(m=>({role:"assistant",content:`${m.kind}:${m.message}`,created_at:m.occurredAt}))]}const o=on.find(d=>d.plan_id===n)??on[0];return[{role:"user",content:`执行数字员工任务:${o.title}`,created_at:o.created_at},{role:"assistant",content:`已接入 qimingclaw adapter。目标:${o.objective??o.title}`,created_at:new Date().toISOString()}]}const iS=9e3,Kg=2e4;class sS extends Error{constructor(){super("Unauthorized"),this.name="UnauthorizedError"}}async function da(n,i={}){const r=await w0(n,i);if(r!==void 0)return r;const{timeoutMs:o=iS,...d}=i,m=b0(),p=new Headers(d.headers),v=new AbortController;let h=!1;const y=window.setTimeout(()=>{h=!0,v.abort()},o),E=d.signal,S=()=>v.abort();E&&(E.aborted?v.abort():E.addEventListener("abort",S,{once:!0})),m&&p.set("Authorization",`Bearer ${m}`),d.body&&typeof d.body=="string"&&!p.has("Content-Type")&&p.set("Content-Type","application/json");let k;try{k=await fetch(`${v0()}${y0}${n}`,{...d,headers:p,signal:v.signal})}catch(R){throw R instanceof DOMException&&R.name==="AbortError"&&h?new Error(`API request timed out after ${o/1e3}s: ${n}`):R}finally{window.clearTimeout(y),E==null||E.removeEventListener("abort",S)}if(k.status===401)throw _0(),window.dispatchEvent(new Event("zeroclaw-unauthorized")),new sS;if(!k.ok){const R=await k.text().catch(()=>"");let T=R||k.statusText;if(R)try{const L=JSON.parse(R);typeof L.message=="string"&&L.message.trim()?T=L.message.trim():typeof L.error=="string"&&L.error.trim()&&(T=L.error.trim())}catch{T=R}throw new Error(`API ${k.status}: ${T}`)}if(k.status!==204)return k.json()}function rS(n,i){if(n!==null&&typeof n=="object"&&!Array.isArray(n)&&i in n){const r=n[i];if(r!==void 0)return r}return n}function cS(){return da("/api/scheduler/jobs").then(n=>rS(n,"jobs"))}function zp(n){return da(`/api/plan/${encodeURIComponent(n)}/messages`).then(i=>({messages:i.messages||[]}))}function Zg(n){return da("/api/governance/command",{method:"POST",body:JSON.stringify(n)})}function ic(n){const i=n?`?date=${encodeURIComponent(n)}`:"";return da(`/api/digital-employee/workday${i}`,{timeoutMs:Kg})}function gl(n){return da("/api/digital-employee/workday/actions",{method:"POST",body:JSON.stringify(n)})}function uS(n){return da(`/api/debug/plan/${encodeURIComponent(n)}/dispatch`,{method:"POST",timeoutMs:Kg})}function oS(){return da("/api/debug/plans?limit=80").then(n=>n.plans??[])}function Rp(n,i=50){const r=new URLSearchParams({limit:String(i),q:n});return da(`/api/debug/plans?${r}`).then(o=>o.plans??[])}function dS(n){const i=new URLSearchParams({limit:"50",plan_id:n});return da(`/api/debug/tasks?${i}`).then(r=>({tasks:r.tasks??[],runs:r.runs??[],total:r.total,truncated:r.truncated}))}function fS(n){return da(`/api/debug/plan/${encodeURIComponent(n)}/flow`)}function mS(){return da("/api/skill").then(n=>n.skills??[])}function hS(n,i){return da(`/api/skill/${encodeURIComponent(n)}/enabled`,{method:"POST",body:JSON.stringify({enabled:i})})}const pS=g0,gS=`${pS}/digital-assets`,hl=`${gS}/avatars`,yS="Asia/Shanghai",vS=["skill","browser","call","redial","evidence","decision","reporting"],bS=[{id:"all",label:"全部"},{id:"running",label:"执行中"},{id:"success",label:"已完成"},{id:"danger",label:"异常"}],Vg="sgrobot:digital-workday-guide-dismissed-date",_S=80,Mp=300,SS=[{title:"确认日期",body:"先确认今天的值班日期,避免把昨天或明天的任务混在一起。"},{title:"选择任务",body:"从岗位职责里勾选今天要执行的任务,未接入能力保持待扩展。"},{title:"任务执行",body:"点击任务执行后,数字员工开始按已选任务推进工作。"},{title:"查看过程",body:"右侧滚动显示运行明细,任务中心可继续查看明细。"}],xS={skill:{id:"skill",label:"查看Skill",shortLabel:"技能",phase:"查看Skill与计划",src:`${hl}/states/employee-idle.png`,bubble:"我正在查看可用Skill、任务计划和今天要勾选的执行内容。"},browser:{id:"browser",label:"操作浏览器",shortLabel:"浏览器",phase:"操作浏览器执行",src:`${hl}/states/employee-browser.png`,bubble:"我正在打开页面、读取信息、填写表单,并把执行过程同步到右侧。"},call:{id:"call",label:"电话外呼",shortLabel:"外呼",phase:"电话外呼与重拨",src:`${hl}/states/employee-running.png`,bubble:"我正在按工单名单外呼现场人员,记录接通、未接通和后续重拨。"},redial:{id:"redial",label:"重拨跟进",shortLabel:"重拨",phase:"未接通人员重拨",src:`${hl}/states/employee-redial.png`,bubble:"我正在跟进未接通人员,按间隔重拨并更新每个人的通知状态。"},evidence:{id:"evidence",label:"数据核验",shortLabel:"核验",phase:"核验执行证据",src:`${hl}/states/employee-evidence.png`,bubble:"我正在核验页面数据、执行证据和任务结果,确认交付内容可信。"},decision:{id:"decision",label:"等待决策",shortLabel:"决策",phase:"等待人工确认",src:`${hl}/states/employee-decision.png`,bubble:"我已完成前置处理,现在需要人工确认后再继续推进。"},reporting:{id:"reporting",label:"汇报成果",shortLabel:"汇报",phase:"汇报今日成果",src:`${hl}/states/employee-reporting.png`,bubble:"我正在整理运行明细和日报,方便你直接查看成果和异常。"}};function rd(){const n=new Date;return[n.getFullYear(),String(n.getMonth()+1).padStart(2,"0"),String(n.getDate()).padStart(2,"0")].join("-")}function jS(n){return(n||rd()).split("-").join("/")}function Pr(n){return n==="success"?"de-badge-success":n==="danger"?"de-badge-danger":n==="warning"||n==="running"?"de-badge-warning":"de-badge-info"}function wS(n,i){const r=["de-template-card-row","de-duty-card","de-duty-card--compact"];return n.implemented||r.push("de-duty-card--disabled"),i&&r.push("de-duty-card--selected"),n.statusTone==="running"&&r.push("de-duty-card--running"),r.join(" ")}function La(n){return String(n||"").replace(/\s+/g," ").trim()}function ES(n){if(!n)return"";if(n.expression)return n.expression;if(typeof n.schedule=="string")return n.schedule;if(n.schedule&&typeof n.schedule=="object"){const i=n.schedule,r=i.expr??i.expression??i.cron;if(typeof r=="string")return r}return""}function kS(n){const i=ES(n);if(!i)return"未定时";const r=i.trim().split(/\s+/),o=r[0]??"",d=r[1]??"";return r.length>=2&&/^\d+$/.test(o)&&/^\d+$/.test(d)?`已定时 ${d.padStart(2,"0")}:${o.padStart(2,"0")} 执行`:`调度注册 ${i}`}function pc(n,i){if(!n||typeof n!="object")return"";const r=n;for(const o of i){const d=r[o];if(typeof d=="string"&&d.trim())return d.trim()}return""}function mi(n){const i=La(n.template_id);if(i)return i;const r=pc(n.delivery,["template_id","plan_template_id","templateId"]);if(r)return r;const o=pc(n.schedule,["template_id","plan_template_id","templateId"]);return o||n.id.replace(/^schedule-/,"")}function NS(n,i,r){return n.has(i)||r?!0:Array.from(n).some(o=>js(o,i))}function js(n,i){return n.startsWith(`${i}-`)?/^-\d{8,}$/.test(n.slice(i.length)):!1}function TS(n,i,r){if(n.id===i||n.conversation_id===i||js(n.id,i)||n.conversation_id&&js(n.conversation_id,i))return!0;const o=La(r).toLowerCase();return!!(o&&La(n.title).toLowerCase()===o)}function Jg(n,i,r){const o=r.filter(d=>TS(d,n,i));return o.find(d=>d.selected)??o.find(d=>d.id===n||d.conversation_id===n)??o[0]??null}function AS(n,i){var r;return((r=Jg(n.id,n.title,i))==null?void 0:r.id)??n.id}function CS(n){return typeof n.step_count=="number"&&Number.isFinite(n.step_count)?n.step_count:Array.isArray(n.skill_ids)?n.skill_ids.length:0}function DS(n){const i=La(n.trigger_kind||pc(n.schedule,["kind"])).toLowerCase();return i==="cron"?"定时任务":i==="webhook"?"触发任务":"手动任务"}function zS(n,i,r){const o=mi(n),d=Jg(o,n.name,i),m=CS(n),p=Array.isArray(n.skill_ids)?n.skill_ids.length:m,v=(d==null?void 0:d.status)??n.last_status??(n.enabled?"plan_template":"disabled"),h=(d==null?void 0:d.status_label)??(n.enabled?DS(n):"已停用"),y=(d==null?void 0:d.status_tone)??(n.enabled?"info":"waiting");return{id:o,planId:o,title:La(n.name)||o,summary:La(n.prompt)||`任务:${o}`,implemented:n.enabled,selectable:!0,selected:r,status:v,statusLabel:h,statusTone:y,scheduleText:(d==null?void 0:d.schedule_text)??kS(n),resultText:(d==null?void 0:d.result_text)??`${m} 个步骤,${p} 个Skill`,conversationId:(d==null?void 0:d.conversation_id)??o,stepCount:m,taskCount:p,schedulerJob:n,source:"plan_template"}}function ec(n){return n.implemented}function tc(n){return n.implemented?"":"当前任务未接入执行能力。"}function RS(n,i){const r=`${n.conversation_id??""} ${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`;return r.includes(i.id)||r.includes(i.title)}function MS(n,i){const r=i.filter(h=>RS(h,n)),o=r.filter(wc).length,d=r.filter(Ec).length,m=r.filter(jc).length,p=Math.max(r.length-o-d-m,0),v=r.length>0?r[r.length-1]:void 0;return{id:n.id,plan_id:n.planId,title:n.title,description:n.summary,selected:!0,total_count:r.length,success_count:o,failure_count:d,running_count:m,waiting_count:p,latest_status_label:(v==null?void 0:v.status_label)??n.statusLabel,latest_status_tone:(v==null?void 0:v.status_tone)??n.statusTone,business_summary:r.length>0?`${n.title} 今日执行 ${r.length} 次,成功 ${o} 次,失败 ${d} 次。`:`${n.title} 尚未产生执行记录。`,ai_summary:r.length>0?`${n.title} 今日执行 ${r.length} 次,成功 ${o} 次,失败 ${d} 次。`:`${n.title} 尚未产生执行记录。`}}function OS(n,i){const r=n.plan_id??"";return n.id===i.id||r===i.planId||js(n.id,i.id)||js(r,i.planId)?!0:La(n.title).toLowerCase()===La(i.title).toLowerCase()}function LS(n){return{id:n.id,time:n.time,task_name:n.plan_title,step_name:n.step_title,operation_name:n.task_title,status_label:n.status_label,status_tone:n.status_tone,business_detail:sc(n),raw_detail:n.detail,updated_at:n.updated_at,conversation_id:n.conversation_id}}function Op(n){const[i="9",r="0"]=n.split(":"),o=Math.min(Math.max(Number(i)||9,0),23);return`${Math.min(Math.max(Number(r)||0,0),59)} ${o} * * *`}function Lp(n){return n.status_label||n.status||"已同步"}function gi(n){return String(n||"").replace(/\s+/g," ").trim()}function Fg(n){const r=`${n.plan_title} ${n.step_title??""}`.match(/(?:^|\D)(\d{1,2})[::](\d{2})(?:\D|$)/);return r!=null&&r[1]&&r[2]?`${r[1].padStart(2,"0")}:${r[2]}`:gi(n.time)||"即时触发"}function _l(n){const i=gi(n);if(!i)return"";const r=new Date(i);if(Number.isNaN(r.getTime()))return"";const o=new Intl.DateTimeFormat("zh-CN",{timeZone:yS,month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).formatToParts(r),d=m=>{var p;return((p=o.find(v=>v.type===m))==null?void 0:p.value)??""};return`${d("month")}/${d("day")} ${d("hour")}:${d("minute")}`}function Dd(n){const i=gi(n);return i?i.length>140?`${i.slice(0,140)}...`:i:""}function $S(n){var i;return n?!n.enabled||!n.endpoint||(((i=n.missingCredentials)==null?void 0:i.length)??0)>0?"warning":n.failed>0||n.lastSyncError?"danger":n.syncing||n.pending>0?"warning":n.lastSyncAt?"success":"info":"info"}function qS(n){var i;return n?n.enabled?n.endpoint?(((i=n.missingCredentials)==null?void 0:i.length)??0)>0?"缺少凭据":n.syncing?"同步中":n.failed>0||n.lastSyncError?"同步异常":n.pending>0?"待同步":n.lastSyncAt?"已同步":"等待数据":"未配置":"已停用":"未连接"}function US(n){var r,o;if(!n)return"当前环境未连接 qimingclaw 同步桥。";if(!n.enabled)return"管理端同步已停用。";if(!n.endpoint)return"管理端同步地址未配置。";if((((r=n.missingCredentials)==null?void 0:r.length)??0)>0)return`管理端同步凭据未完整:${(o=n.missingCredentials)==null?void 0:o.join("、")}`;const i=Dd(n.lastSyncError);if(n.failed>0||i){const d=n.failureSummary?[n.failureSummary.dueForRetry>0?`${n.failureSummary.dueForRetry} 条可重试`:"",n.failureSummary.backoff>0?`${n.failureSummary.backoff} 条退避中`:"",BS(n.failureSummary)].filter(Boolean).join(","):"";return[n.failed>0?`${n.failed} 条失败`:"",n.pending>0?`${n.pending} 条待同步`:"",d,i?`失败原因:${i}`:""].filter(Boolean).join(",")}return n.syncing?`正在同步,待同步 ${n.pending} 条。`:n.pending>0?`仍有 ${n.pending} 条待同步记录。`:n.lastSyncAt?`最近同步:${_l(n.lastSyncAt)||n.lastSyncAt}`:"等待本地 outbox 数据。"}function bs(n){return{plan:"Plan",task:"Task",run:"Run",event:"Event",artifact:"Artifact",approval:"Approval"}[n]||n||"Entity"}function BS(n){const i=n.byEntityType.slice(0,3).map(r=>`${bs(r.entityType)} ${r.count}`).join(" / ");return i?`类型:${i}`:""}function HS(n){const i=Dd(n.error);return[`${bs(n.entityType)} / ${n.operation}`,`重试 ${n.attempts} 次`,n.dueForRetry?"等待补偿":`下次 ${Wg(n)}`,i].filter(Boolean).join(" · ")}function $p(n){return _l(n.lastAttemptAt||n.updatedAt||n.createdAt)||"未尝试"}function Wg(n){return n.dueForRetry?"可重试":_l(n.nextRetryAt)||"待计算"}function YS(n){return n==="synced"?"已同步":n==="failed"?"失败":n||"未知"}function GS(n){return n==="synced"?"success":n==="failed"?"danger":"info"}function qp(n,i){return JSON.stringify({generatedAt:new Date().toISOString(),source:"qimingclaw-digital-employee",failure:n,sync:i?{running:i.running,syncing:i.syncing,enabled:i.enabled,endpoint:i.endpoint,missingCredentials:i.missingCredentials??[],pending:i.pending,failed:i.failed,lastSyncAt:i.lastSyncAt,lastSyncError:i.lastSyncError,failureSummary:i.failureSummary??null}:null},null,2)}function QS(n){return`qimingclaw-sync-failure-${[n.entityType,n.entityId].filter(Boolean).join("-").replace(/[^a-z0-9._-]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,80)||n.id||"diagnostic"}.json`}function Up(n,i,r="application/json;charset=utf-8"){const o=new Blob([i],{type:r}),d=URL.createObjectURL(o),m=document.createElement("a");m.href=d,m.download=n,document.body.appendChild(m),m.click(),m.remove(),window.setTimeout(()=>URL.revokeObjectURL(d),1e3)}function XS(n){return`qimingclaw-digital-report-${n}.txt`}function KS(n,i,r,o){return[i.title||`${n} 数字员工日报`,`日期:${n}`,`生成时间:${i.generated_at?_l(i.generated_at):"暂未生成"}`,`生成来源:${i.generated_by==="ai"?"AI":"qimingclaw adapter"}`,"","## 摘要",i.summary||"暂无摘要。","","## 指标",`任务总数:${i.totals.task_count}`,`执行次数:${i.totals.execution_count}`,`成功次数:${i.totals.success_count}`,`失败次数:${i.totals.failure_count}`,`运行中:${i.totals.running_count??0}`,"","## 任务汇总",...r.length>0?r.map(d=>`- ${d.title}:${d.latest_status_label},执行 ${d.total_count} 次,成功 ${d.success_count},失败 ${d.failure_count}。${d.ai_summary||d.business_summary||""}`):["暂无任务汇总。"],"","## 运行明细",...o.length>0?o.map(d=>`- ${d.time||"--:--"} ${d.task_name} / ${d.step_name||d.operation_name||"任务执行"}:${d.status_label},${d.business_detail}`):["暂无运行明细。"],"","## 详情",...(i.detail_lines??[]).length>0?i.detail_lines:["暂无详情。"]].join(` +`)}async function ZS(){var i;const n=(i=window.QimingClawBridge)==null?void 0:i.digital;if(!(n!=null&&n.getSyncStatus))return null;try{return await n.getSyncStatus()}catch{return null}}function Ig(n){const i=_l(n.updated_at);return i||gi(n.time)||"待同步"}function VS(n){return _l(n.updated_at)||gi(n.time)||"--:--"}function sc(n){const i=gi(n.detail).replace(/^触发来源[::]\s*$/u,"").replace(/触发来源[::]\s*(?=。|,|,|;|;|$)/u,"").trim();return i?/^runner unavailable/i.test(i)?"执行链路异常,点击查看详情。":i.length>72?`${i.slice(0,72)}...`:i:wc(n)?"真实事件已完成,结果详情未回传。":jc(n)?"真实事件执行中,等待结果回传。":Ec(n)?"执行异常,点击查看详情。":"结果详情待同步。"}function Bp(n){return`计划时间 ${Fg(n)} · 执行时间 ${Ig(n)}`}function JS(n,i){return i==="all"?!0:i==="running"?jc(n):i==="success"?wc(n):Ec(n)}function FS(n){return new Set(n.duties.filter(i=>i.selected).map(i=>i.id))}function Xo(n){return["pending","requested"].includes(String(n||"").toLowerCase())}function Hp(n){if(!(n instanceof Element))return!1;if(n.closest('button, a, input, select, textarea, [role="tab"]'))return!0;const i=n.closest('[role="button"]');return!!(i&&!i.classList.contains("de-workday-execution--clickable"))}function WS(n,i){return n.length<=4?n:n.slice(i).concat(n.slice(0,i)).slice(0,4)}function jc(n){const i=`${n.status} ${n.status_tone}`.toLowerCase();return i.includes("running")||i.includes("execut")||i.includes("progress")}function wc(n){const i=`${n.status} ${n.status_tone}`.toLowerCase();return i.includes("success")||i.includes("complete")||i.includes("done")}function Ec(n){const i=`${n.status} ${n.status_tone}`.toLowerCase();return i.includes("danger")||i.includes("fail")||i.includes("error")||i.includes("异常")}function IS(n){const i=`${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`.toLowerCase();return["外呼","电话","拨打","接通","未接通","重拨","人员"].some(r=>i.includes(r))}function PS(n){const i=`${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`.toLowerCase();return["重拨","未接通","再拨","回拨","retry","callback"].some(r=>i.includes(r))}function ex(n){const i=`${n.plan_title} ${n.task_title} ${n.step_title??""} ${n.detail}`.toLowerCase();return["核验","校验","证据","汇总","报告","结果","交付","看板","同步"].some(r=>i.includes(r))}function tx(){if(typeof window>"u")return null;const n=new URLSearchParams(window.location.search).get("visual");return vS.includes(n)?n:null}function ax(n){return PS(n)?"redial":IS(n)?"call":ex(n)?"evidence":"browser"}function nx(n){return n.currentEvent?ax(n.currentEvent):!n.confirmed&&n.eventsCount===0?"skill":n.pendingDecisionCount>0?"decision":n.eventsCount>0?"browser":"skill"}function lx(){if(typeof window>"u")return null;try{return window.sessionStorage.getItem(Vg)}catch{return null}}function ix(n){if(!(typeof window>"u"))try{window.sessionStorage.setItem(Vg,n)}catch{}}function sx({onNavigate:n}){var Rl,Ml,Xa;const[i,r]=b.useState(rd()),[o,d]=b.useState(null),[m,p]=b.useState([]),[v,h]=b.useState(new Set),[y,E]=b.useState(!0),[S,k]=b.useState(null),[R,T]=b.useState(null),[L,O]=b.useState(null),[G,I]=b.useState(null),[F,ne]=b.useState(!1),[ie,he]=b.useState("selected"),[Z,ee]=b.useState(0),[Te,rt]=b.useState(!1),[Ze,de]=b.useState(!1),[X,se]=b.useState(!1),[H,D]=b.useState(null),[Y,te]=b.useState("all"),[fe,be]=b.useState(!1),[j,$]=b.useState(null),[K,W]=b.useState(null),[re,pe]=b.useState("09:00"),[ke,We]=b.useState(!1),[Q,V]=b.useState(!1),[ve,Me]=b.useState(null),[Ie,ct]=b.useState({name:"",company:"",position:"",currentStatus:"working"}),[Tt,Oe]=b.useState("18:00"),[jt,qa]=b.useState(!1),[Gn,vi]=b.useState(()=>lx()),[vt,Ts]=b.useState(null),Ne=b.useRef(!1),ht=b.useRef(!1);b.useEffect(()=>(Ne.current=!0,()=>{Ne.current=!1}),[]);const ja=b.useCallback(async()=>{let _=null,J=null;const ue=()=>{if(ht.current||!J)return;const et=(_==null?void 0:_.source)==="live"?FS(_):new Set,zt=J.map(ea=>mi(ea)).filter(ea=>NS(et,ea)),$t=zt.length>0?zt:J.slice(0,3).map(ea=>mi(ea));h(new Set($t))},Qe=ic(i).then(et=>{Ne.current&&(_=et,d(et),O(null),ue())}).catch(et=>{Ne.current&&O(et instanceof Error?et.message:"数字员工首页数据同步失败")}),lt=cS().then(et=>{Ne.current&&(J=et.filter(zt=>zt.job_type==="plan_template"||pc(zt.delivery,["mode"])==="plan_template"),p(J),I(null),ue())}).catch(et=>{Ne.current&&I(et instanceof Error?et.message:"任务加载失败")}),kt=ZS().then(et=>{Ne.current&&Ts(et)});await Promise.allSettled([Qe,lt,kt]),Ne.current&&E(!1)},[i]);b.useEffect(()=>{E(!0),ja()},[ja]),b.useEffect(()=>{const _=o!=null&&o.workday.confirmed?8e3:3e4,J=window.setInterval(()=>{ja()},_);return()=>window.clearInterval(J)},[ja,o==null?void 0:o.workday.confirmed]),b.useEffect(()=>{if(Te||Ze||X||H!==null)return;const J=window.setInterval(()=>{ee(ue=>{const Qe=(o==null?void 0:o.source)==="live"?o.events.length:0;return Qe>0?(ue+1)%Qe:0})},3200);return()=>window.clearInterval(J)},[X,Ze,Te,H,o==null?void 0:o.events.length,o==null?void 0:o.source]);const wa=(o==null?void 0:o.source)==="live",Qn=b.useMemo(()=>wa?(o==null?void 0:o.duties)??[]:[],[wa,o==null?void 0:o.duties]),Mt=b.useMemo(()=>m.slice().sort((_,J)=>{const ue=mi(_),Qe=mi(J),lt=v.has(ue)?1:0,kt=v.has(Qe)?1:0;if(lt!==kt)return kt-lt;const et=new Date(_.next_run||"").getTime(),zt=new Date(J.next_run||"").getTime(),$t=Number.isFinite(et),ea=Number.isFinite(zt);return $t!==ea?$t?-1:1:$t&&ea&&et!==zt?et-zt:La(_.name).localeCompare(La(J.name),"zh-CN")}).map(_=>{const J=mi(_);return zS(_,Qn,v.has(J))}),[Qn,m,v]),At=b.useMemo(()=>Mt.filter(_=>v.has(_.id)),[Mt,v]),Xn=b.useMemo(()=>At.map(_=>AS(_,Qn)),[Qn,At]),Ua=Mt,Kn=Mt.filter(_=>!v.has(_.id)),Ba=ie==="selected"?At:ie==="pending"?Kn:Ua,Ye=wa?(o==null?void 0:o.events)??[]:[],Ea=WS(Ye,Z),wt=Ye,mn=(wa?(o==null?void 0:o.decisions)??[]:[]).filter(_=>Xo(_.status)),Tc=Te||Ze||X||H!==null,bi=b.useMemo(()=>Ye.filter(_=>JS(_,Y)),[Ye,Y]),Sl=bi.slice(0,Mp),xl=Ye.filter(jc),jl=Ye.filter(wc),Ha=Ye.filter(Ec),Ot=Ea[0]??xl[0]??null,ze=o==null?void 0:o.employee,we=o==null?void 0:o.workday,wl=o==null?void 0:o.delivery,oe=wa?o==null?void 0:o.daily_report:void 0,hn=wa?(Rl=o==null?void 0:o.run_details)!=null&&Rl.length?o.run_details:Ye.map(LS):[],Zn=hn.slice(0,_S),As=wa?(o==null?void 0:o.execution_summaries)??[]:[],fa=At.map(_=>As.find(J=>OS(J,_))??MS(_,Ye)),ka=jS(i),_i=ie==="all"?"全部任务":ie==="pending"?"待选择任务":"今日已选任务",Si=ie==="all"?`总任务 ${Ua.length} 项,不代表当天都会执行。`:ie==="pending"?`当前日期 ${ka} 还有 ${Kn.length} 项未选择。`:`当前日期 ${ka} 已选择 ${At.length} 项任务。`,Ct=(oe==null?void 0:oe.status)==="ready"?oe.totals:null,Cs=(Ct==null?void 0:Ct.task_count)??fa.length,Na=(Ct==null?void 0:Ct.execution_count)??fa.reduce((_,J)=>_+J.total_count,0),pt=(Ct==null?void 0:Ct.success_count)??fa.reduce((_,J)=>_+J.success_count,0),Et=(Ct==null?void 0:Ct.failure_count)??fa.reduce((_,J)=>_+J.failure_count,0),Ta=oe?[oe.summary,...oe.detail_lines??[]].filter(_=>!!(_&&_.trim())):[],El=(oe==null?void 0:oe.status)==="ready"&&Ta.length>0,Ds=(we==null?void 0:we.current_status)??(ze==null?void 0:ze.current_status)??"working",Ac=(we==null?void 0:we.current_status_label)??(ze==null?void 0:ze.current_status_label)??(Ds==="resting"?"休息中":"工作中"),kl=Ds==="resting",pn=(o==null?void 0:o.source)==="demo",Vn=pn?"演示兜底":"真实数据",Ya=pn?"de-badge-warning":"de-badge-success",Ga=$S(vt),Jn=qS(vt),Qa=US(vt),ut=Dd(vt==null?void 0:vt.lastSyncError),xi=(vt==null?void 0:vt.recentFailures)??[],zs=nx({confirmed:!!(we!=null&&we.confirmed),currentEvent:Ot,pendingDecisionCount:mn.length,eventsCount:Ye.length}),Aa=tx(),Wn=xS[Aa??zs],Rs=Aa||Ot||mn.length>0?Wn.bubble:(we==null?void 0:we.bubble_text)??Wn.bubble,Ms=Ua.length>0?`已加载 ${Ua.length} 项任务,当前选择 ${At.length} 项;右侧展示真实执行状态、运行明细和日报。`:(we==null?void 0:we.summary)??"等待同步当天任务计划。",Cc=(Ot==null?void 0:Ot.task_title)??(we!=null&&we.confirmed?"等待下一条执行事件":"等待确认任务设置"),Nl=Ot?`${Ot.plan_title}:${sc(Ot)}(${Bp(Ot)})`:"任务执行后会显示正在处理的任务、步骤或汇总动作。",Tl=mn[0]?`等待人工确认:${mn[0].title}`:we!=null&&we.confirmed?(wl==null?void 0:wl.lines[0])??"继续按计划轮询新工单,并把结果同步到运行明细。":"请先确认今天要执行的任务,确认后数字员工会开始执行。",ma=!!(o&&!(we!=null&&we.confirmed));b.useEffect(()=>{if(!(y||!o)&&o.workday.confirmed){qa(!1);return}},[Gn,y,i,o]),b.useEffect(()=>{ze&&ct({name:ze.name||"",company:ze.company||"",position:ze.position||ze.major||"",currentStatus:ze.current_status||(we==null?void 0:we.current_status)||"working"})},[ze,we==null?void 0:we.current_status]),b.useEffect(()=>{Oe((oe==null?void 0:oe.report_schedule_time)||"18:00")},[oe==null?void 0:oe.report_schedule_time]),b.useEffect(()=>{V(!1)},[i]);const Dt=b.useCallback(_=>{!_.selectable||!_.implemented||(h(J=>{const ue=new Set(J);return ue.has(_.id)?ue.delete(_.id):ue.add(_.id),ue}),ht.current=!0,ne(!0),T(null))},[]),ji=b.useCallback(async()=>{if(v.size===0){O("请至少选择一项今天要执行的任务。");return}if(kl){O("当前状态为休息中,请切换为工作中后再执行任务。");return}k("confirm_workday"),O(null),T(null);try{const _=await gl({action:"confirm_workday",date:i,duty_ids:Xn});if(!Ne.current)return;d(_),h(new Set(v)),ht.current=!0,ne(!1),qa(!1),T("任务设置已确认,数字员工开始按任务执行。")}catch(_){Ne.current&&O(_ instanceof Error?_.message:"确认任务设置失败")}finally{Ne.current&&k(null)}},[kl,i,v,Xn]),Os=b.useCallback(async()=>{var _;k("flush_management_sync"),O(null),T(null);try{const J=(_=window.QimingClawBridge)==null?void 0:_.digital;if(!(J!=null&&J.flushSync)){T("当前环境未连接 qimingclaw 同步桥。");return}const ue=await J.flushSync();if(!Ne.current)return;Ts(ue);const Qe=await ic(i);if(!Ne.current)return;d(Qe);const lt=ue.failed>0?`同步完成,仍有 ${ue.failed} 条失败记录。`:ue.pending>0?`同步完成,仍有 ${ue.pending} 条待同步记录。`:"管理端同步完成。";T(lt)}catch(J){Ne.current&&O(J instanceof Error?J.message:"同步管理端失败")}finally{Ne.current&&k(null)}},[i]),wi=b.useCallback(async _=>{const J=qp(_,vt);try{await navigator.clipboard.writeText(J),O(null),T("同步失败诊断已复制。")}catch(ue){T(null),O(ue instanceof Error?ue.message:"复制同步失败诊断失败")}},[vt]),Ls=b.useCallback(_=>{Up(QS(_),qp(_,vt)),O(null),T("同步失败诊断已导出。")},[vt]),Al=b.useCallback(()=>{h(new Set),ht.current=!0,ne(!0),T("已一键取消当前选择,重新选择后点击任务执行生效。"),O(null)},[]),Dc=b.useCallback(async()=>{k("update_profile"),O(null),T(null);try{const _=await gl({action:"update_profile",date:i,name:Ie.name,company:Ie.company,position:Ie.position,current_status:Ie.currentStatus});if(!Ne.current)return;d(_),We(!1),T("数字员工特性设置已保存。")}catch(_){Ne.current&&O(_ instanceof Error?_.message:"保存特性设置失败")}finally{Ne.current&&k(null)}},[Ie,i]),Lt=b.useCallback(async()=>{k("update_report_schedule"),O(null),T(null);try{const _=await gl({action:"update_report_schedule",date:i,report_schedule_time:Tt});if(!Ne.current)return;d(_),T(`日报生成时间已设置为 ${Tt}。`)}catch(_){Ne.current&&O(_ instanceof Error?_.message:"设置日报时间失败")}finally{Ne.current&&k(null)}},[Tt,i]),Ei=b.useCallback(async()=>{var _,J;k("generate_daily_report"),O(null),T(null);try{const ue=await gl({action:"generate_daily_report",date:i,duty_ids:Xn,report_schedule_time:Tt});if(!Ne.current)return;const Qe=((_=ue.daily_report)==null?void 0:_.status)==="ready"?ue:await ic(i);if(!Ne.current)return;d(Qe),T("日报已生成,可下载本地文本。"),((J=Qe.daily_report)==null?void 0:J.status)==="ready"&&V(!0)}catch(ue){Ne.current&&O(ue instanceof Error?ue.message:"生成日报失败")}finally{Ne.current&&k(null)}},[Tt,i,v,Xn]),ki=b.useCallback(()=>{!oe||oe.status!=="ready"||(Up(XS(i),KS(ka,oe,fa,Zn),"text/plain;charset=utf-8"),T("日报文本已下载。"))},[oe,i,ka,fa,Zn]),Ni=b.useCallback(async(_,J)=>{var ue;k(`${_.id}:${J}`),O(null),T(null);try{const Qe=await gl({action:"decide_approval",date:i,decision_id:_.id,decision:J});if(!Ne.current)return;const lt=((ue=_.actions.find(kt=>kt.id===J))==null?void 0:ue.label)??J;d(Qe),T(`已记录“${lt}”处理结果,并写入 qimingclaw 本地运行状态。`)}catch(Qe){Ne.current&&O(Qe instanceof Error?Qe.message:"处理决策失败")}finally{Ne.current&&k(null)}},[i]),ha=b.useCallback(_=>{n({tab:"missions",date:i,missionId:_.conversationId||_.id})},[n,i]),$s=b.useCallback(async _=>{const J=Op(re),ue=Date.now(),Qe=`digital-home-${_.planId}-${re.replace(":","")}`;k(`schedule:${_.id}`),O(null),T(null);try{const lt=await Zg({command_kind:"create_schedule",context_refs:{plan_id:_.planId,schedule_id:Qe},payload:{source:"digital-home",plan_id:_.planId,name:`定时执行:${_.title}`,description:`按首页任务管理定时任务:${_.title}`,prompt:`请按计划执行:${_.title}。${_.summary}`,cron_expr:J,schedule:J},correlation_id:`digital-home-create-schedule-${_.planId}-${ue}`,idempotency_key:`digital-home-create-schedule-${_.planId}-${re}-${ue}`});if(!lt.accepted)throw new Error(lt.message||`调度命令未被接受:${lt.command_id||"create_schedule"}`);$(null),T(`已提交定时:${_.title},${re} 按 cron 计划执行。`),await ja()}catch(lt){Ne.current&&O(lt instanceof Error?lt.message:"定时执行失败")}finally{Ne.current&&k(null)}},[ja,re]),qs=b.useCallback(async _=>{var J;if(!ec(_)){O(tc(_)),T(null);return}k(`execute:${_.id}`),O(null),T(null);try{const ue=await uS(_.planId);if(ue.ok!==!0)throw new Error(ue.error||"执行接口未接受请求");const Qe=((J=ue.dispatched_tasks)==null?void 0:J.length)??0;W(null),T(`已触发执行:${_.title},已派发 ${Qe} 个步骤。`),await ja()}catch(ue){Ne.current&&O(ue instanceof Error?ue.message:"执行失败")}finally{Ne.current&&k(null)}},[ja]),Ca=b.useCallback(()=>{qa(!1),vi(i),ix(i)},[i]),Us=b.useCallback((_,J)=>{const ue=v.has(_.id),Qe=tc(_);return c.jsxs("div",{className:`${wS(_,ue)} ${J==="guide"?"de-duty-card--guide":""}`,title:_.summary,children:[c.jsxs("label",{className:"de-task-manager-duty-check",children:[c.jsx("input",{type:"checkbox",checked:ue,disabled:!_.selectable||!_.implemented,onChange:()=>Dt(_)}),c.jsx("span",{children:ue?"已选":_.implemented?"未选":"待扩展"})]}),c.jsxs("div",{className:"de-template-card-main",children:[c.jsxs("div",{className:"de-template-card-head",children:[c.jsx("span",{className:"de-template-card-name",children:_.title}),c.jsx("span",{className:`de-badge ${Pr(_.statusTone)}`,children:_.implemented?_.statusLabel:"待扩展"})]}),c.jsx("p",{className:"de-template-card-desc",children:_.summary}),c.jsxs("div",{className:"de-template-card-meta",children:[c.jsx("span",{children:_.scheduleText}),c.jsx("span",{children:_.resultText})]}),c.jsxs("div",{className:"de-duty-card-foot",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:!_.implemented,onClick:()=>ha(_),children:"进入处理"}),c.jsxs("div",{className:"de-duty-card-actions",children:[c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:!_.implemented||S===`schedule:${_.id}`,onClick:()=>$(_),children:[c.jsx(Ap,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"定时"})]}),c.jsxs("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:!_.implemented||S===`execute:${_.id}`,title:Qe||"立即执行此任务",onClick:()=>W(_),children:[c.jsx(Tp,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"执行"})]})]}),!_.implemented&&c.jsx("span",{className:"de-duty-selected-mark",children:"待扩展"})]})]})]},`${J}-${_.id}`)},[S,ha,v,Dt]),Bs=b.useCallback(_=>{D(_),de(!0)},[]),Cl=b.useCallback(()=>{D(null),de(!1)},[]),Dl=b.useCallback(()=>{se(!1),de(!1)},[]),gn=b.useCallback(()=>{se(!0),de(!0)},[]),zc=b.useCallback(_=>{Hp(_.target)||gn()},[gn]),zl=b.useCallback(_=>{_.key!=="Enter"&&_.key!==" "||Hp(_.target)||(_.preventDefault(),gn())},[gn]),pa=b.useCallback(_=>{D(null),se(!1),de(!1),n({tab:"missions",date:i,missionId:_.conversation_id||_.id})},[n,i]);return c.jsxs("div",{className:"de-dashboard de-dashboard--compact",style:{position:"relative",height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[c.jsx("div",{className:"de-connection-layer","aria-hidden":"true",children:c.jsxs("svg",{className:"de-connection-svg",viewBox:"0 0 1200 800",preserveAspectRatio:"none",children:[c.jsxs("defs",{children:[c.jsxs("linearGradient",{id:"connGrad1",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[c.jsx("stop",{offset:"0%",stopColor:"rgba(79,172,254,0.25)"}),c.jsx("stop",{offset:"100%",stopColor:"rgba(0,242,254,0.1)"})]}),c.jsx("filter",{id:"connGlow",children:c.jsx("feGaussianBlur",{stdDeviation:"3"})})]}),c.jsx("path",{d:"M 80 180 Q 420 400, 580 350",stroke:"url(#connGrad1)",strokeWidth:"1.5",fill:"none",filter:"url(#connGlow)"}),c.jsx("path",{d:"M 120 620 Q 380 400, 560 380",stroke:"url(#connGrad1)",strokeWidth:"1.2",fill:"none",filter:"url(#connGlow)"}),c.jsx("path",{d:"M 640 360 Q 780 200, 1100 160",stroke:"url(#connGrad1)",strokeWidth:"1.3",fill:"none",filter:"url(#connGlow)"})]})}),c.jsxs("div",{className:"de-dashboard-content",children:[c.jsxs("div",{className:"de-dashboard-left",children:[c.jsxs("div",{className:"de-card de-person-card de-person-card--compact",children:[c.jsxs("div",{className:"de-card-title-bar",children:[c.jsx("span",{className:"de-card-title-bar-text",children:"数字员工"}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>We(!0),children:"特性设置"})]}),c.jsx("div",{className:"de-card-body",children:c.jsxs("div",{className:"de-info-grid",children:[c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"姓名"}),c.jsx("span",{children:(ze==null?void 0:ze.name)??"同步中"})]}),c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"单位"}),c.jsx("span",{children:(ze==null?void 0:ze.company)??"同步中"})]}),c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"岗位"}),c.jsx("span",{children:(ze==null?void 0:ze.position)??(ze==null?void 0:ze.major)??"同步中"})]}),c.jsxs("div",{className:"de-info-item",children:[c.jsx("label",{children:"当前状态"}),c.jsx("span",{className:kl?"de-status-resting":"de-status-working",children:Ac})]})]})})]}),c.jsxs("div",{className:"de-card de-template-manager-card",children:[c.jsx("div",{className:"de-card-title-bar",children:c.jsx("span",{className:"de-card-title-bar-text",children:"任务设置"})}),c.jsxs("div",{className:"de-card-body de-template-manager-body",children:[c.jsxs("div",{className:"de-workday-toolbar",children:[c.jsxs("label",{children:[c.jsx("span",{children:"日期"}),c.jsx("input",{type:"date",value:i,onChange:_=>{ht.current=!1,ne(!1),T(null),r(_.target.value||rd())}})]}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:y,onClick:()=>be(!0),children:"任务设置"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:y||S==="flush_management_sync",onClick:Os,title:"立即同步数字员工本地状态到管理端",children:[c.jsx(u0,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:S==="flush_management_sync"?"同步中...":"同步管理端"})]})]}),c.jsxs("div",{className:`de-management-sync-strip de-management-sync-strip--${Ga}`,title:ut||Qa,children:[c.jsx("span",{className:`de-badge ${Pr(Ga)}`,children:Jn}),c.jsx("span",{children:Qa})]}),xi.length>0&&c.jsx("div",{className:"de-management-sync-failures","aria-label":"同步失败明细",children:xi.map(_=>c.jsxs("button",{type:"button",className:"de-management-sync-failure",title:_.error||_.id,onClick:()=>Me(_),children:[c.jsx("span",{children:$p(_)}),c.jsx("strong",{children:bs(_.entityType)}),c.jsx("em",{children:_.id}),c.jsx("small",{children:HS(_)})]},_.id))}),(R||L||G||(o==null?void 0:o.demo_reason))&&c.jsx("div",{className:`de-schedule-result ${L?"de-schedule-result--error":"de-schedule-result--success"}`,style:{marginBottom:10},children:L||R||G||(o==null?void 0:o.demo_reason)}),F&&!R&&!L&&c.jsx("div",{className:"de-schedule-result de-schedule-result--success",style:{marginBottom:10},children:"当前选择尚未确认,自动刷新不会覆盖你的勾选。"}),c.jsxs("div",{className:"de-template-overview",children:[c.jsxs("button",{type:"button",className:`de-template-overview-item de-template-overview-item--total ${ie==="all"?"active":""}`,onClick:()=>he("all"),children:[c.jsx("span",{className:"de-template-overview-label",children:"总任务"}),c.jsx("span",{className:"de-template-overview-value",children:Ua.length})]}),c.jsxs("button",{type:"button",className:`de-template-overview-item de-template-overview-item--scheduled ${ie==="selected"?"active":""}`,onClick:()=>he("selected"),children:[c.jsx("span",{className:"de-template-overview-label",children:"已选择"}),c.jsx("span",{className:"de-template-overview-value",children:At.length})]}),c.jsxs("button",{type:"button",className:`de-template-overview-item de-template-overview-item--runnable ${ie==="pending"?"active":""}`,onClick:()=>he("pending"),children:[c.jsx("span",{className:"de-template-overview-label",children:"待选择"}),c.jsx("span",{className:"de-template-overview-value",children:Kn.length})]})]}),c.jsxs("div",{className:"de-task-date-context",children:[c.jsxs("span",{children:["当前日期 ",ka]}),c.jsx("em",{children:Si}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:Al,disabled:At.length===0,children:"一键取消"})]}),c.jsxs("div",{className:"de-task-manager-preview de-task-manager-preview-scroll de-template-task-list",children:[c.jsxs("div",{className:"de-task-manager-preview-head",children:[c.jsx("span",{children:ka}),c.jsxs("strong",{children:[_i," ",Ba.length]})]}),y?c.jsx("div",{className:"de-loading-skeleton",style:{height:96}}):Mt.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无任务,首页不会再展示硬编码任务。"}):Ba.length===0?c.jsx("p",{className:"de-empty-text",children:"当前筛选下暂无任务,点击总任务查看全部内容。"}):Ba.map(_=>c.jsxs("div",{className:`de-task-manager-preview-row ${v.has(_.id)?"is-selected":""}`,title:_.summary,children:[c.jsxs("button",{type:"button",className:"de-template-task-main",onClick:()=>ha(_),children:[c.jsx("strong",{children:_.title}),c.jsx("span",{children:_.resultText})]}),c.jsxs("div",{className:"de-template-item-actions",children:[c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:!_.implemented||S===`schedule:${_.id}`,onClick:()=>$(_),children:[c.jsx(Ap,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"定时"})]}),c.jsxs("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:!_.implemented||S===`execute:${_.id}`,title:tc(_)||"立即执行此任务",onClick:()=>W(_),children:[c.jsx(Tp,{size:13,"aria-hidden":"true"}),c.jsx("span",{children:"执行"})]})]})]},_.id))]})]})]})]}),c.jsxs("div",{className:"de-dashboard-center",style:{justifyContent:"center",padding:"0 0 16px",overflow:"visible"},children:[c.jsx("div",{className:"de-avatar-wrapper",style:{minHeight:470,maxWidth:560,transform:"translateY(-6px)",display:"flex",alignItems:"flex-end",justifyContent:"center"},children:c.jsx(p0,{avatarSrc:Wn.src,altText:`数字员工-${Wn.label}`,statusLabel:Wn.label})}),c.jsxs("div",{className:"de-speech-bubble de-speech-bubble--employee",style:{top:"38%",left:"29%",right:"auto",transform:"translateX(-50%)",width:268,padding:"10px 12px",zIndex:16},children:[c.jsx("span",{className:"de-speech-label",children:"数字员工播报"}),c.jsx("p",{className:"de-speech-text",children:Rs}),c.jsxs("button",{type:"button",className:"de-speech-workflow de-execution-detail-trigger",onClick:gn,title:"打开运行明细",children:[c.jsx("span",{children:"当前动作"}),c.jsx("strong",{children:Cc}),c.jsx("small",{children:Nl}),c.jsx("span",{children:"下一步"}),c.jsx("small",{children:Tl})]})]})]}),c.jsx("div",{className:"de-dashboard-right",children:c.jsxs("div",{className:"de-right-panels",children:[c.jsxs("div",{className:"de-workbench de-workday-execution de-workday-execution--clickable",role:"button",tabIndex:0,"aria-label":"打开运行明细",title:"打开运行明细",onClick:zc,onKeyDown:zl,children:[c.jsxs("div",{className:"de-card-title-bar de-workbench-head de-workbench-head--bar",children:[c.jsx("div",{className:"de-workbench-title-row",children:c.jsx("h3",{children:"今日执行"})}),c.jsx("span",{className:`de-badge ${Ya}`,children:Vn})]}),c.jsxs("div",{className:"de-workday-execution-body","aria-live":"polite",children:[c.jsxs("div",{className:"de-execution-status-strip",children:[c.jsxs("span",{children:[c.jsx("em",{children:"已选任务"}),c.jsx("strong",{children:At.length})]}),c.jsxs("span",{children:[c.jsx("em",{children:"运行记录"}),c.jsx("strong",{children:wt.length})]}),c.jsxs("span",{children:[c.jsx("em",{children:"已完成"}),c.jsx("strong",{children:jl.length})]}),c.jsxs("span",{children:[c.jsx("em",{children:"异常"}),c.jsx("strong",{children:Ha.length})]})]}),c.jsx("div",{className:"de-task-summary-scroll",children:c.jsx("div",{className:"de-task-summary-grid","aria-label":"任务执行汇总",children:fa.length===0?c.jsx("p",{className:"de-empty-text",children:"左侧选择任务后,这里会按任务生成执行次数和成功情况。"}):fa.map(_=>c.jsxs("button",{type:"button",className:`de-task-summary-card de-live-feed-row--${_.latest_status_tone||"info"}`,onClick:()=>ha(At.find(J=>J.id===_.id)??At[0]),title:[_.description,_.ai_summary||_.business_summary].filter(Boolean).join(` +`),children:[c.jsx("span",{className:"de-task-summary-title",children:_.title}),c.jsx("span",{className:`de-badge ${Pr(_.latest_status_tone)}`,children:_.latest_status_label}),c.jsxs("div",{className:"de-task-summary-counts",children:[c.jsxs("span",{children:[c.jsx("em",{children:"执行"}),c.jsx("strong",{children:_.total_count})]}),c.jsxs("span",{children:[c.jsx("em",{children:"成功"}),c.jsx("strong",{children:_.success_count})]}),c.jsxs("span",{children:[c.jsx("em",{children:"失败"}),c.jsx("strong",{children:_.failure_count})]})]})]},_.id))})}),c.jsxs("div",{className:"de-stage-feed-tools",children:[c.jsxs("span",{children:["展示 ",wt.length," / 共 ",Ye.length," 条",Tc?" · 已暂停":" · 自动滚动"]}),c.jsxs("div",{children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>rt(_=>!_),children:Te?"继续滚动":"暂停滚动"}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:gn,children:"查看全部记录"})]})]}),c.jsxs("div",{className:"de-run-detail-panel",children:[c.jsxs("div",{className:"de-run-detail-head",children:[c.jsx("span",{children:"运行明细"}),c.jsxs("small",{children:["展示 ",Zn.length," / 共 ",hn.length," 条"]})]}),c.jsxs("div",{className:"de-run-detail-list de-run-detail-list-scroll","aria-label":"运行明细",children:[c.jsxs("div",{className:"de-run-detail-row de-run-detail-row--head",children:[c.jsx("span",{children:"时间"}),c.jsx("span",{children:"任务名称"}),c.jsx("span",{children:"步骤名称"}),c.jsx("span",{children:"执行状态"}),c.jsx("span",{children:"结果"})]}),Zn.length===0?c.jsx("p",{className:"de-empty-text",children:"任务执行后,这里会滚动显示每个步骤的时间、任务、步骤和结果。"}):Zn.map(_=>c.jsxs("button",{type:"button",className:`de-run-detail-row de-live-feed-row--${_.status_tone||"info"}`,onClick:()=>{const J=Ye.find(ue=>ue.id===_.id);J&&Bs(J)},title:_.business_detail,children:[c.jsx("span",{children:VS(_)}),c.jsx("strong",{children:_.task_name}),c.jsx("span",{children:_.step_name||_.operation_name||"执行步骤"}),c.jsx("span",{children:c.jsx("i",{className:`de-badge ${Pr(_.status_tone)}`,children:_.status_label})}),c.jsx("em",{children:_.business_detail})]},_.id))]})]})]})]}),c.jsxs("div",{className:"de-report-summary",children:[c.jsxs("div",{className:"de-card-title-bar de-report-summary-head de-report-summary-head--bar",children:[c.jsx("div",{className:"de-report-summary-title-row",children:c.jsx("h3",{children:"日报生成"})}),c.jsx("span",{className:`de-report-badge ${(oe==null?void 0:oe.status)==="ready"?"de-report-badge--ready":"de-report-badge--waiting"}`,children:(oe==null?void 0:oe.status)==="ready"?"已生成":"待生成"})]}),c.jsxs("div",{className:"de-report-summary-body",children:[c.jsxs("div",{className:"de-report-schedule-row",children:[c.jsxs("label",{children:[c.jsx("span",{children:"生成时间"}),c.jsx("input",{type:"time",value:Tt,onChange:_=>Oe(_.target.value||"18:00")})]}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:S==="update_report_schedule",onClick:()=>{Lt()},children:"设置时间"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="generate_daily_report",onClick:()=>{Ei()},children:S==="generate_daily_report"?"生成中...":"生成日报"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm de-report-preview-btn",disabled:!El,onClick:()=>V(!0),title:El?"预览日报文字内容":"生成日报后可预览文字内容",children:[c.jsx(Cp,{size:14,"aria-hidden":"true"}),"预览日报"]}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm de-report-download-btn",disabled:!(oe!=null&&oe.pdf_available),onClick:ki,title:oe!=null&&oe.pdf_available?"下载本地日报文本":"生成日报后可下载本地日报",children:[c.jsx(lc,{size:14,"aria-hidden":"true"}),"下载日报"]})]}),c.jsxs("div",{className:"de-report-meta",children:[c.jsx("p",{children:(oe==null?void 0:oe.summary)??"点击生成日报后,AI 会基于当天所有任务写出总分结构日报。"}),((oe==null?void 0:oe.detail_lines)??[]).slice(0,3).map(_=>c.jsx("p",{children:_},_))]})]})]})]})})]}),Q&&oe&&c.jsx("div",{className:"de-task-manager-modal-overlay de-report-preview-overlay",role:"presentation",onClick:()=>V(!1),children:c.jsxs("div",{className:"de-report-preview-modal",role:"dialog","aria-modal":"true","aria-label":"日报预览",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"DAILY REPORT"}),c.jsx("h3",{children:oe.title||"数字员工日报"}),c.jsxs("p",{children:[ka," 生成时间 ",oe.report_schedule_time,",来源:",oe.generated_by==="ai"?"AI 生成":"规则兜底"]})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>V(!1),children:"×"})]}),c.jsxs("div",{className:"de-report-preview-summary",children:[c.jsxs("div",{children:[c.jsx("span",{children:"任务总数"}),c.jsx("strong",{children:Cs})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行次数"}),c.jsx("strong",{children:Na})]}),c.jsxs("div",{children:[c.jsx("span",{children:"成功次数"}),c.jsx("strong",{children:pt})]}),c.jsxs("div",{children:[c.jsx("span",{children:"失败次数"}),c.jsx("strong",{children:Et})]})]}),c.jsx("div",{className:"de-report-preview-content",children:Ta.length===0?c.jsx("p",{className:"de-empty-text",children:"当前日报暂无可预览文字。"}):Ta.map((_,J)=>c.jsx("p",{children:_},`${J}-${_}`))}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>V(!1),children:"关闭"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm de-report-download-btn",disabled:!oe.pdf_available,onClick:ki,children:[c.jsx(lc,{size:14,"aria-hidden":"true"}),"下载日报"]})]})]})}),ke&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:()=>We(!1),children:c.jsxs("div",{className:"de-profile-settings-modal",role:"dialog","aria-modal":"true","aria-label":"数字员工特性设置",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"PROFILE"}),c.jsx("h3",{children:"特性设置"}),c.jsx("p",{children:"维护数字员工在首页展示的姓名、单位、岗位和当前状态。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>We(!1),children:"×"})]}),c.jsxs("div",{className:"de-profile-settings-grid",children:[c.jsxs("label",{children:[c.jsx("span",{children:"姓名"}),c.jsx("input",{value:Ie.name,onChange:_=>ct(J=>({...J,name:_.target.value}))})]}),c.jsxs("label",{children:[c.jsx("span",{children:"单位"}),c.jsx("input",{value:Ie.company,onChange:_=>ct(J=>({...J,company:_.target.value}))})]}),c.jsxs("label",{children:[c.jsx("span",{children:"岗位"}),c.jsx("input",{value:Ie.position,onChange:_=>ct(J=>({...J,position:_.target.value}))})]}),c.jsxs("div",{className:"de-profile-status-toggle",children:[c.jsx("span",{children:"当前状态"}),c.jsxs("div",{children:[c.jsx("button",{type:"button",className:Ie.currentStatus==="working"?"active":"",onClick:()=>ct(_=>({..._,currentStatus:"working"})),children:"工作中"}),c.jsx("button",{type:"button",className:Ie.currentStatus==="resting"?"active":"",onClick:()=>ct(_=>({..._,currentStatus:"resting"})),children:"休息中"})]})]})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>We(!1),children:"取消"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="update_profile",onClick:()=>{Dc()},children:S==="update_profile"?"保存中...":"保存设置"})]})]})}),ve&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:()=>Me(null),children:c.jsxs("div",{className:"de-event-detail-modal",role:"dialog","aria-modal":"true","aria-label":"同步失败详情",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"SYNC FAILURE"}),c.jsx("h3",{children:"同步失败详情"}),c.jsxs("p",{children:[bs(ve.entityType)," / ",ve.operation]})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>Me(null),children:"×"})]}),c.jsxs("div",{className:"de-event-detail-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"Outbox"}),c.jsx("strong",{children:ve.id})]}),c.jsxs("div",{children:[c.jsx("span",{children:"实体"}),c.jsx("strong",{children:ve.entityId})]}),c.jsxs("div",{children:[c.jsx("span",{children:"类型"}),c.jsx("strong",{children:bs(ve.entityType)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"操作"}),c.jsx("strong",{children:ve.operation})]}),c.jsxs("div",{children:[c.jsx("span",{children:"重试"}),c.jsxs("strong",{children:[ve.attempts," 次"]})]}),c.jsxs("div",{children:[c.jsx("span",{children:"上次尝试"}),c.jsx("strong",{children:$p(ve)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"下次重试"}),c.jsx("strong",{children:Wg(ve)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"状态"}),c.jsx("strong",{children:ve.dueForRetry?"等待补偿":"退避中"})]})]}),c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"失败原因"}),c.jsx("p",{children:ve.error||"暂无错误详情。"})]}),(((Ml=ve.attemptHistory)==null?void 0:Ml.length)??0)>0&&c.jsxs("div",{className:"de-sync-attempt-history",children:[c.jsx("span",{children:"重试历史"}),c.jsx("div",{className:"de-sync-attempt-list",children:(Xa=ve.attemptHistory)==null?void 0:Xa.map(_=>c.jsxs("div",{className:`de-sync-attempt-row de-sync-attempt-row--${GS(_.status)}`,children:[c.jsxs("div",{children:[c.jsxs("strong",{children:["第 ",_.attemptNo," 次"]}),c.jsx("em",{children:YS(_.status)}),c.jsx("span",{children:_l(_.finishedAt)||_.finishedAt})]}),_.error&&c.jsx("small",{children:_.error})]},`${_.attemptNo}-${_.finishedAt}`))})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>Me(null),children:"关闭"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>{wi(ve)},children:[c.jsx(r0,{size:14}),"复制诊断"]}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>Ls(ve),children:[c.jsx(lc,{size:14}),"导出诊断"]}),ve.managementRecordUrl&&c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>window.open(ve.managementRecordUrl||"","_blank","noopener,noreferrer"),children:[c.jsx(Cp,{size:14}),"查看管理端记录"]}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="flush_management_sync",onClick:()=>{Os().then(()=>Me(null))},children:S==="flush_management_sync"?"同步中...":"立即重试"})]})]})}),H&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:Cl,children:c.jsxs("div",{className:"de-event-detail-modal",role:"dialog","aria-modal":"true","aria-label":"执行记录详情",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"EXECUTION DETAIL"}),c.jsx("h3",{children:"执行记录详情"}),c.jsx("p",{children:"这条记录已被锁定,滚动不会把它刷掉。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:Cl,children:"×"})]}),c.jsxs("div",{className:"de-event-detail-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"业务"}),c.jsx("strong",{children:H.plan_title})]}),c.jsxs("div",{children:[c.jsx("span",{children:"操作"}),c.jsx("strong",{children:H.task_title})]}),c.jsxs("div",{children:[c.jsx("span",{children:"状态"}),c.jsx("strong",{children:Lp(H)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"计划时间"}),c.jsx("strong",{children:Fg(H)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行时间"}),c.jsx("strong",{children:Ig(H)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"数据来源"}),c.jsx("strong",{children:Vn})]})]}),c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"操作结果"}),c.jsx("p",{children:sc(H)})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:Cl,children:"关闭"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",onClick:()=>pa(H),children:"打开任务中心详情"})]})]})}),X&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:Dl,children:c.jsxs("div",{className:"de-event-history-modal",role:"dialog","aria-modal":"true","aria-label":"全部执行记录",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"EXECUTION HISTORY"}),c.jsx("h3",{children:"运行明细"}),c.jsxs("p",{children:["当前日期共 ",Ye.length," 条记录,本窗口展示最新 ",Math.min(bi.length,Mp)," 条。"]})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:Dl,children:"×"})]}),c.jsx("div",{className:"de-event-history-toolbar",children:bS.map(_=>c.jsx("button",{type:"button",className:`de-filter-chip ${Y===_.id?"active":""}`,onClick:()=>te(_.id),children:_.label},_.id))}),c.jsx("div",{className:"de-event-history-list",children:bi.length===0?c.jsx("p",{className:"de-empty-text",children:"当前筛选下没有执行记录。"}):Sl.map(_=>c.jsxs("button",{type:"button",className:`de-event-history-row de-live-feed-row--${_.status_tone||"info"}`,onClick:()=>{D(_),se(!1),de(!0)},children:[c.jsxs("span",{children:[c.jsx("em",{children:"业务"}),c.jsx("strong",{children:_.plan_title})]}),c.jsxs("span",{children:[c.jsx("em",{children:"操作"}),c.jsx("strong",{children:_.task_title})]}),c.jsxs("span",{children:[c.jsx("em",{children:"状态"}),c.jsx("strong",{children:Lp(_)})]}),c.jsxs("span",{children:[c.jsx("em",{children:"操作结果"}),c.jsx("strong",{children:sc(_)}),c.jsx("small",{children:Bp(_)})]})]},_.id))})]})}),j&&c.jsx("div",{className:"de-task-manager-modal-overlay de-plan-action-overlay",role:"presentation",onClick:()=>$(null),children:c.jsxs("div",{className:"de-plan-action-modal",role:"dialog","aria-modal":"true","aria-label":"定时任务",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"PLAN SCHEDULE"}),c.jsx("h3",{children:"定时任务"}),c.jsx("p",{children:"定时会把任务注册到后端调度链路,每天按设置时间自动派发。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>$(null),children:"×"})]}),c.jsxs("div",{className:"de-plan-action-body",children:[c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"任务"}),c.jsx("p",{children:j.title})]}),c.jsxs("label",{className:"de-plan-action-field",children:[c.jsx("span",{children:"每日定时时间"}),c.jsx("input",{type:"time",value:re,onChange:_=>pe(_.target.value||"09:00")})]}),c.jsxs("div",{className:"de-event-detail-grid de-plan-action-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"调度注册"}),c.jsx("strong",{children:Op(re)})]}),c.jsxs("div",{children:[c.jsx("span",{children:"任务步骤"}),c.jsxs("strong",{children:[j.stepCount," 步"]})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行步骤"}),c.jsxs("strong",{children:[j.taskCount," 项"]})]})]}),c.jsx("div",{className:"de-schedule-result de-schedule-result--success",children:"这里不是本地假定时;提交后如果后端调度链路不可用,会直接显示真实失败原因。"})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>$(null),children:"取消"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S===`schedule:${j.id}`,onClick:()=>{$s(j)},children:S===`schedule:${j.id}`?"注册中...":"确认定时"})]})]})}),K&&c.jsx("div",{className:"de-task-manager-modal-overlay de-plan-action-overlay",role:"presentation",onClick:()=>W(null),children:c.jsxs("div",{className:"de-plan-action-modal",role:"dialog","aria-modal":"true","aria-label":"执行任务",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"PLAN EXECUTION"}),c.jsx("h3",{children:"执行任务"}),c.jsx("p",{children:"确认后立即创建并派发任务步骤,不需要先进入任务中心设置。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>W(null),children:"×"})]}),c.jsxs("div",{className:"de-plan-action-body",children:[c.jsxs("div",{className:"de-event-detail-result",children:[c.jsx("span",{children:"任务"}),c.jsx("p",{children:K.title})]}),c.jsxs("div",{className:"de-event-detail-grid de-plan-action-grid",children:[c.jsxs("div",{children:[c.jsx("span",{children:"当前状态"}),c.jsx("strong",{children:K.statusLabel})]}),c.jsxs("div",{children:[c.jsx("span",{children:"任务步骤"}),c.jsxs("strong",{children:[K.stepCount," 步"]})]}),c.jsxs("div",{children:[c.jsx("span",{children:"执行步骤"}),c.jsxs("strong",{children:[K.taskCount," 项"]})]})]}),c.jsx("div",{className:`de-schedule-result ${ec(K)?"de-schedule-result--success":"de-schedule-result--pending"}`,children:ec(K)?"确认后立即调用后端派发接口,按任务步骤进入真实执行链路。":tc(K)})]}),c.jsxs("div",{className:"de-event-modal-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>W(null),children:"取消"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S===`execute:${K.id}`||!ec(K),onClick:()=>{qs(K)},children:S===`execute:${K.id}`?"触发中...":"确认执行"})]})]})}),jt&&ma&&c.jsx("div",{className:"de-task-manager-modal-overlay de-workday-guide-overlay",role:"presentation",onClick:Ca,children:c.jsxs("div",{className:"de-task-manager-modal de-workday-guide-modal",role:"dialog","aria-modal":"true","aria-label":"开始今天的任务",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head de-workday-guide-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"WORKDAY START"}),c.jsx("h3",{children:"开始今天的任务"}),c.jsx("p",{children:"像值班员早上交接一样,先确认日期和执行内容,再让数字员工开始接单、外呼、汇总和汇报。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:Ca,children:"×"})]}),c.jsx("div",{className:"de-workday-guide-steps","aria-label":"开工引导步骤",children:SS.map((_,J)=>c.jsxs("div",{className:"de-workday-guide-step",children:[c.jsx("span",{children:J+1}),c.jsx("strong",{children:_.title}),c.jsx("p",{children:_.body})]},_.title))}),c.jsxs("div",{className:"de-workday-guide-body",children:[c.jsxs("section",{className:"de-task-manager-column de-workday-guide-column",children:[c.jsxs("div",{className:"de-task-manager-section-head",children:[c.jsxs("div",{children:[c.jsx("strong",{children:"选择今天要执行的任务"}),c.jsxs("span",{children:[At.length," 项已选,",Ua.length," 项总任务,",Kn.length," 项待选择"]})]}),c.jsx("span",{className:`de-badge ${Ya}`,children:Vn})]}),c.jsx("div",{className:"de-workday-guide-duty-list",children:y?c.jsx("div",{className:"de-loading-skeleton",style:{height:220}}):Mt.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无任务,首页不再展示硬编码任务。请先在任务中心创建或同步。"}):Mt.map(_=>Us(_,"guide"))})]}),c.jsxs("aside",{className:"de-workday-guide-side",children:[c.jsxs("div",{className:"de-workday-guide-summary",children:[c.jsx("span",{children:"日期"}),c.jsx("strong",{children:i}),c.jsx("p",{children:Ms})]}),c.jsxs("div",{className:"de-workday-guide-summary",children:[c.jsx("span",{children:"确认后会发生什么"}),c.jsx("strong",{children:"右侧进入执行滚动"}),c.jsx("p",{children:"首页会展示当前动作、下一步、操作状态和操作结果;需要人工决策时会在右侧停下来提示。"})]}),(L||F||(o==null?void 0:o.demo_reason))&&c.jsx("div",{className:`de-schedule-result ${L?"de-schedule-result--error":"de-schedule-result--success"}`,children:L||(F?"已调整任务勾选,点击确认后生效。":o==null?void 0:o.demo_reason)}),c.jsxs("div",{className:"de-workday-guide-actions",children:[c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:Ca,children:"稍后设置"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="confirm_workday"||y,onClick:()=>{ji()},children:S==="confirm_workday"?"确认中...":"确认并开始任务"})]})]})]})]})}),fe&&c.jsx("div",{className:"de-task-manager-modal-overlay",role:"presentation",onClick:()=>be(!1),children:c.jsxs("div",{className:"de-task-manager-modal",role:"dialog","aria-modal":"true","aria-label":"任务设置",onClick:_=>_.stopPropagation(),children:[c.jsxs("div",{className:"de-task-manager-modal-head",children:[c.jsxs("div",{children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"TASK MANAGER"}),c.jsx("h3",{children:"任务设置"}),c.jsx("p",{children:"像员工早上确认工作一样,勾选今天要执行的内容,必要时进入详情或处理待决策事项。"})]}),c.jsx("button",{type:"button",className:"de-schedule-close",onClick:()=>be(!1),children:"×"})]}),c.jsxs("div",{className:"de-task-manager-modal-body",children:[c.jsxs("section",{className:"de-task-manager-column de-task-manager-column--duties",children:[c.jsxs("div",{className:"de-task-manager-section-head",children:[c.jsxs("div",{children:[c.jsx("strong",{children:"任务设置清单"}),c.jsxs("span",{children:[At.length," 项已选,",Ua.length," 项总任务,",Kn.length," 项待选择"]})]}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:S==="confirm_workday"||y,onClick:()=>{ji()},children:S==="confirm_workday"?"确认中...":we!=null&&we.confirmed?"重新任务执行":"确认并开始任务"})]}),c.jsx("div",{className:"de-task-manager-duty-list",children:y?c.jsx("div",{className:"de-loading-skeleton",style:{height:180}}):Mt.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无任务,首页不会显示硬编码任务。可进入任务中心创建。"}):Mt.map(_=>Us(_,"manager"))})]}),c.jsxs("aside",{className:"de-task-manager-column de-task-manager-column--actions",children:[c.jsx("div",{className:"de-task-manager-section-head",children:c.jsxs("div",{children:[c.jsx("strong",{children:"待解决事项"}),c.jsx("span",{children:mn.length>0?`${mn.length} 项需要人处理`:"暂无阻塞事项"})]})}),c.jsx("div",{className:"de-task-manager-decision-list",children:((o==null?void 0:o.decisions)??[]).length===0?c.jsx("p",{className:"de-empty-text",children:"没有需要你确认的事项。"}):((o==null?void 0:o.decisions)??[]).map(_=>c.jsxs("div",{className:"de-task-manager-decision-card",children:[c.jsxs("div",{className:"de-log-entry-meta",children:[c.jsx("strong",{children:_.title}),c.jsx("span",{children:_.status_label})]}),c.jsx("p",{children:_.scenario}),c.jsxs("div",{className:"de-decision-chain-note",children:[c.jsx("span",{className:"de-badge de-badge-success",children:"本地记录"}),c.jsx("span",{children:Xo(_.status)?"处理结果会写入 qimingclaw runtime event。":"该事项已在本地状态中处理。"})]}),c.jsxs("div",{className:"de-workbench-actions",children:[_.actions.map(J=>c.jsx("button",{type:"button",className:J.tone==="primary"?"de-workbench-action-accent":"",disabled:S===`${_.id}:${J.id}`||!Xo(_.status),onClick:()=>{Ni(_,J.id)},children:S===`${_.id}:${J.id}`?"处理中...":J.label},J.id)),c.jsx("button",{type:"button",onClick:()=>n({tab:"missions",date:i,missionId:_.id}),children:"查看上下文"})]})]},_.id))})]})]})]})})]})}function ws({children:n,className:i="",style:r}){return c.jsx("div",{className:`de-card ${i}`,style:r,children:n})}function kc({title:n,children:i}){return c.jsxs("div",{className:"de-card-title-bar",children:[c.jsx("span",{className:"de-card-title-bar-text",children:n}),i]})}const rx={info:"de-badge-info",success:"de-badge-success",warning:"de-badge-warning",danger:"de-badge-danger"};function cd({variant:n,label:i}){return c.jsx("span",{className:`de-badge ${rx[n]}`,children:i})}function Yp(n){return Array.isArray(n)?n:[]}function Je(n,i=""){return typeof n=="string"?n:typeof n=="number"?String(n):i}function yi(n){return/[\u4e00-\u9fff]/.test(n)}const Gp={queued:"排队中",ready:"就绪",idle:"待执行",pending:"待处理",pending_authorization:"待授权",waiting_input:"待输入",draft:"草稿",reviewing:"审核中",approved:"已批准",preparing:"准备中",running:"执行中",active:"运行中",blocked:"已阻塞",succeeded:"已完成",success:"成功",finished:"已完成",complete:"已完成",completed:"已完成",failed:"失败",error:"错误",cancelled:"已取消",canceled:"已取消",aborted:"已终止",rejected:"已拒绝",deferred:"已暂缓",dispatched:"已下发",scheduled:"已设置定时",enabled:"已启用",disabled:"已停用",paused:"已暂停",unknown:"未知"},Qp={plan:"计划",task:"任务",task_running:"处理中",task_done:"任务完成",run:"执行开始",run_done:"执行完成",skill_tool:"技能调用",artifact:"产物",task_summary:"结果",entered_session:"会话",start:"目标",RunStarted:"开始调用",RequestDispatched:"请求已发出",ResponseReceived:"收到返回",RunSkipped:"本次跳过",RunCompleted:"执行完成",waiting_for_authorization:"等待授权",pending_authorization:"等待授权",authorization_approved:"授权通过",authorization_rejected:"授权拒绝",authorization_deferred:"稍后处理",failed:"执行失败",completed:"执行完成"};function Qt(n,i="未知"){const r=Je(n).trim();if(!r)return i;const o=Gp[r]??Gp[r.toLowerCase()];return o||(yi(r)?r:i)}function cx(n){const i=Je(n).trim();return i?Qp[i]??Qp[i.toLowerCase()]??(yi(i)?i:"事件"):"事件"}function Pg(n,i="暂无事件内容"){const r=Je(n).trim();if(!r)return i;if(yi(r))return r;const o=Qt(r,"");if(o)return o;const d=r.match(/^(Succeeded|Failed|Running|Completed)\s*\(attempt\s*#(\d+)\)$/i);return d?`${Qt(d[1])}(第 ${d[2]} 次)`:/request failed/i.test(r)?"请求失败":/backend unavailable/i.test(r)?"后端服务不可达":/not found/i.test(r)?"未找到对应资源":i}function vs(n,i="未命名内容"){const r=Je(n).trim();if(!r||/unnamed/i.test(r))return i;if(yi(r))return r;const o=Qt(r,"");if(o)return o;const d=ey(r);return d||r}function ud(n){return["succeeded","success","finished","complete","completed"].includes(n.toLowerCase())}function od(n){return["failed","error","cancelled","canceled","aborted","rejected","deadletter"].includes(n.toLowerCase())}function ux(n,i){const r=Je(n).trim().toLowerCase();return i.length===0?r||"pending":i.some(o=>od(o.status))?"failed":i.some(o=>["running","active","leased"].includes(o.status.toLowerCase()))?"running":i.some(o=>["queued","ready","pending"].includes(o.status.toLowerCase()))?"queued":i.every(o=>ud(o.status))?"succeeded":r||"pending"}function ox(n,i){const r=Je(n,"unknown").trim().toLowerCase();return ud(r)||od(r)?r:i.some(o=>od(o.status))?"failed":i.some(o=>["running","active","queued","leased"].includes(o.status.toLowerCase()))?"running":i.length>0&&i.every(o=>ud(o.status))?"succeeded":r||"unknown"}function Xp(n){return n?n.map(i=>{const r=Je(i.plan_id),d=Yp(i.steps).map(p=>{const h=Yp(p.tasks).map(y=>({id:Je(y.task_id),title:vs(y.title,"子任务"),description:Je(y.description),status:Je(y.status,"pending"),assignedSkillId:y.assigned_skill_id?Je(y.assigned_skill_id):null,startedAt:y.started_at?Je(y.started_at):null,finishedAt:y.finished_at?Je(y.finished_at):null}));return{id:Je(p.step_id),title:vs(p.title,"任务步骤"),description:Je(p.description),status:ux(p.status,h),preferredSkills:Array.isArray(p.preferred_skills)?p.preferred_skills:[],tasks:h}}),m=[];for(const p of d)for(const v of p.tasks)m.push(v.id);return{id:r,title:vs(i.title,"未命名任务"),objective:vs(i.objective||i.description,"暂无任务说明"),status:ox(i.status,d),createdAt:i.created_at?Je(i.created_at):null,updatedAt:i.updated_at?Je(i.updated_at):null,steps:d,sourceIds:{planId:r||void 0,taskIds:m}}}):[]}const Ko={"decision-analyzer":"决策分析","git-log-collector":"Git 日志采集","number-generator":"数据生成","office-export-xlsx":"Excel 导出","task-tracker":"任务跟踪","weekly-report-writer":"周报撰写","zhihu-hotlist-detail":"知乎热榜明细","zhihu-hotlist":"知乎热榜","tq-lineloss-report":"台区线损报表","archive-workorder-grid-push-monitor":"归档工单推送监控","available-balance-below-zero-monitor":"可用余额监控","command-center-fee-control-monitor":"费用管控监控","sgcc-todo-crawler":"SGCC 待办爬取","appointment-workorder-monitor":"约时工单监控","fault-location-monitor":"故障定位监控","fudian-failure-monitor":"复电失败监控","important-service-expiry-monitor":"服务到期预警","by-95598-customer-satisfaction-report":"95598 满意率日报","by-daily-report-statistics":"日报统计","by-fire-fault-monthly-report":"火警故障月报","by-risk-control-next-day-plan-report":"风控次日计划","by-risk-control-week-plan-report":"风控周计划","by-supervision-workorder-detail-report":"督办工单明细","age-file-encryption":"文件加解密","anonymous-file-upload":"匿名文件上传","browser-automation-agent":"浏览器自动化","bulk-github-star":"批量仓库标星","changelog-generator":"更新日志生成","code-reviewer":"代码审查","commit-automation":"自动提交","crypto-trading-signal":"交易信号分析","csv-to-json":"CSV 转 JSON","data-analysis":"数据分析","deep-research":"深度调研","dependency-updater":"依赖更新","deploy-automation":"自动部署","dns-lookup":"DNS 查询","document-generator":"文档生成","email-automation":"邮件自动化","file-converter":"文件格式转换","git-history-analyzer":"Git 历史分析","github-issue-manager":"Issue 管理","image-optimizer":"图片优化","json-schema-validator":"JSON Schema 校验","log-analyzer":"日志分析","markdown-to-pdf":"Markdown 转 PDF","meeting-summarizer":"会议纪要","news-aggregator":"新闻聚合","pdf-extractor":"PDF 提取","performance-profiler":"性能分析","pr-review-bot":"PR 审查","release-notes-generator":"发布说明生成","screenshot-automation":"截图自动化","search-engine-scraper":"搜索引擎抓取","sentiment-analysis":"情感分析","shell-command-runner":"命令执行","slack-notification":"Slack 通知","spreadsheet-generator":"电子表格生成","text-summarizer":"文本摘要","torrent-search":"资源搜索","translate-text":"文本翻译","web-scraper":"网页抓取","website-monitor":"网站监控","whitepaper-analyzer":"白皮书分析","xml-to-json":"XML 转 JSON"};function ey(n){if(Ko[n])return Ko[n];for(const[i,r]of Object.entries(Ko))if(n.includes(i)||i.includes(n))return r;return null}function Kp(n,i){const r=ey(n);return r||(yi(i)?i:"自动化技能")}const Zp={"decision-analyzer":"数字化","git-log-collector":"数字化","number-generator":"数字化","office-export-xlsx":"办公","task-tracker":"办公","weekly-report-writer":"报表","zhihu-hotlist-detail":"数字化","zhihu-hotlist":"数字化","tq-lineloss-report":"报表","archive-workorder-grid-push-monitor":"监控巡检","available-balance-below-zero-monitor":"监控巡检","command-center-fee-control-monitor":"监控巡检","sgcc-todo-crawler":"监控巡检","appointment-workorder-monitor":"监控巡检","fault-location-monitor":"监控巡检","fudian-failure-monitor":"监控巡检","important-service-expiry-monitor":"监控巡检","by-95598-customer-satisfaction-report":"报表","by-daily-report-statistics":"报表","by-fire-fault-monthly-report":"报表","by-risk-control-next-day-plan-report":"报表","by-risk-control-week-plan-report":"报表","by-supervision-workorder-detail-report":"报表","age-file-encryption":"数字化","anonymous-file-upload":"通信","browser-automation-agent":"数字化","bulk-github-star":"发展","changelog-generator":"发展","chat-logger":"通信","check-crypto-address-balance":"财务","city-distance":"发展","city-tourism-website-builder":"营销","crawl-websites-at-scale":"数字化","csv-data-summarizer":"财务","d3js-data-visualization":"数字化","database-query-and-export":"数字化","file-tracker":"综合","free-geocoding-and-maps":"发展","free-translation-api":"综合","free-weather-data":"综合","generate-asset-price-chart":"财务","generate-qr-code-natively":"数字化","get-crypto-price":"财务","git-worktree-cli":"发展","github-stats":"发展","html-to-markdown":"数字化","image-compressor":"综合","json-to-csv":"数字化","llm-council":"数字化","markdown-table-generator":"综合","multi-format-converter":"综合","npm-package-info":"发展","pdf-generator":"综合","random-number-generator":"综合","readability-score":"综合","rss-feed-reader":"通信","sql-formatter":"数字化","text-diff":"综合","torrent-search":"通信","unit-converter":"综合","url-shortener":"通信","youtube-transcript":"通信","zip-extractor":"综合"};function Vp(n){return Zp[n]?Zp[n]:"综合"}function dx(n){return n==="core"||n==="standard"||n==="specialized"||n==="experimental"?n:"standard"}function fx(n,i,r){const o=Je(i).trim();return o&&yi(o)?o:n.includes("monitor")?`${r}能力,用于按排班自动巡检并提示异常。`:n.includes("report")?`${r}能力,用于自动生成和整理业务报表。`:`${r}能力,可由数字员工按需执行或定时处理。`}function mx(n){return n?n.map(i=>{const r=Je(i.skill_id,Je(i.id));return{id:r,name:Kp(r,Je(i.name,r)),version:i.version?Je(i.version):null,enabled:!!i.enabled,description:fx(r,i.description,Kp(r,Je(i.name,r))),category:i.category?Je(i.category,Vp(r)):Vp(r),capabilityLevel:dx(i.capability_level??i.capabilityLevel),source:"skill-api"}}):[]}function Nc(n){return n.replace(/[^a-zA-Z0-9_-]/g,"_")}function hx(n){switch(n){case"succeeded":case"completed":return"success";case"failed":case"error":return"danger";case"running":case"active":return"info";default:return"warning"}}function px(n){return["draft","reviewing","approved"].includes(n.toLowerCase())}function gx(n){const i=`${n.id} ${n.title} ${n.objective}`.toLowerCase();return i.includes("month")||i.includes("monthly")||i.includes("月")?"月度任务":i.includes("week")||i.includes("weekly")||i.includes("周")?"周任务":i.includes("临时")||i.includes("adhoc")||i.includes("hotlist")||i.includes("monitor")?"临时任务":"日常任务"}function yl(n){return["succeeded","success","finished","complete","completed"].includes(n.toLowerCase())}function ty(n){return["failed","error","cancelled","canceled","aborted","rejected","deadletter"].includes(n.toLowerCase())}function yx(n){const i=n.steps.length;if(i===0)return Qt(n.status);const r=n.steps.filter(p=>yl(p.status)).length,o=n.steps.filter(p=>ty(p.status)).length,d=n.steps.filter(p=>["running","active","queued","leased"].includes(p.status.toLowerCase())).length,m=[`已完成 ${r}/${i}`];return o>0&&m.push(`失败 ${o}`),d>0&&o===0&&m.push(`处理中 ${d}`),m.join(",")}function vx(n){const i=n.steps.find(d=>ty(d.status));if(i)return`执行失败:${i.title}`;const r=n.steps.find(d=>["running","active"].includes(d.status.toLowerCase()));if(r)return`正在处理:${r.title}`;const o=n.steps.find(d=>!yl(d.status));return o?`准备处理:${o.title}`:yl(n.status)?"本轮任务已完成,等待你查看结果":n.status.toLowerCase()==="failed"?"执行遇到异常,等待你检查后重新执行":"等待你委托数字员工开始处理"}function bx(n,i){const r=n.status.toLowerCase();return r==="failed"||r==="error"?"查看详情后重新执行本任务":["running","active"].includes(r)?"等待完成或查看过程":yl(r)?"查看产物,必要时重新执行":i?"确认目标后点击委托执行":"查看详情确认当前状态"}function _x(n){const i=`${n.title} ${n.objective}`.toLowerCase();return i.includes("excel")||i.includes("xlsx")||i.includes("导出")||i.includes("报表")?"导出报表":i.includes("brief")||i.includes("简报")||i.includes("日程")?"工作简报":i.includes("snapshot")||i.includes("快照")||i.includes("热榜")?"结果快照":yl(n.status)?"查看完成结果":"完成后生成"}function ay(n){if(!n)return"";const i=new Date(n);return Number.isNaN(i.getTime())?"":[i.getFullYear(),String(i.getMonth()+1).padStart(2,"0"),String(i.getDate()).padStart(2,"0")].join("-")}function ny(){return ay(new Date().toISOString())}function Sx(n){if(!n)return"时间未记录";const i=new Date(n);return Number.isNaN(i.getTime())?"时间未记录":i.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit",hour12:!1})}function xx(n){if(!n)return"";const i=new Date(n);return Number.isNaN(i.getTime())?"":i.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}function jx(n){const i=`${n.title} ${n.id}`.match(/(?:^|\D)(\d{1,2})[::](\d{2})(?:\D|$)/);if(!i)return null;const r=Number(i[1]),o=Number(i[2]);return!Number.isInteger(r)||!Number.isInteger(o)||r>23||o>59?null:`${String(r).padStart(2,"0")}:${String(o).padStart(2,"0")}`}function wx(n){return n.steps.flatMap(i=>i.tasks.flatMap(r=>[r.startedAt,r.finishedAt])).filter(i=>!!i)}function Ex(n,i){return wx(n).filter(o=>ay(o)===i).sort((o,d)=>d.localeCompare(o))[0]??null}function kx(n,i){const r=Ex(n,i);if(r)return`实际执行 ${Sx(r)}`;const o=i===ny()?"今日未执行":"当日未执行";return`计划执行 ${jx(n)||"待确认"};${o}`}function Nx({mission:n,onSelect:i,onRun:r,onRestart:o,dateFilter:d,selected:m,focusLabel:p,running:v}){const h=px(n.status),y=yl(n.status)||n.steps.some(k=>yl(k.status)),E=d||ny(),S=xx(n.updatedAt||n.createdAt);return c.jsxs("div",{id:`mission-card-${Nc(n.id)}`,className:`de-mission-card ${m?"de-mission-card--selected":""}`,onClick:()=>i(n),onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),i(n))},role:"button",tabIndex:0,children:[c.jsxs("div",{className:"de-mission-card-header",children:[c.jsx("span",{className:"de-mission-card-title",children:n.title}),c.jsxs("div",{className:"de-mission-card-badges",children:[p&&c.jsx("span",{className:"de-mission-card-focus-chip",children:p}),c.jsx(cd,{variant:hx(n.status),label:Qt(n.status)})]})]}),n.objective&&c.jsxs("p",{className:"de-mission-card-desc",children:["业务目标:",n.objective]}),c.jsxs("div",{className:"de-mission-card-meta",children:[c.jsxs("span",{children:["周期:",gx(n)]}),c.jsxs("span",{children:["当前进度:",yx(n)]}),S&&c.jsxs("span",{children:["同步于 ",S]})]}),c.jsx("div",{className:"de-mission-card-meta",children:c.jsx("span",{children:vx(n)})}),c.jsxs("div",{className:"de-mission-card-meta",children:[c.jsxs("span",{children:["下一步:",bx(n,h)]}),c.jsxs("span",{children:["产物入口:",_x(n)]})]}),c.jsxs("div",{className:"de-mission-card-actions",children:[c.jsxs("span",{className:"de-mission-card-time",children:[kx(n,E),y?";重新执行可能覆盖本任务结果":""]}),c.jsx("button",{type:"button",className:"de-btn-restart",disabled:v,onClick:k=>{k.stopPropagation(),v||o==null||o(n)},title:y?"重新执行本任务,可能覆盖已有结果":"重新执行本任务",children:"重新执行本任务"}),c.jsx("button",{type:"button",className:"de-btn-run",disabled:!h||v,onClick:k=>{k.stopPropagation(),h&&!v&&(r==null||r(n))},children:v?"执行中...":h?"委托执行":Qt(n.status)})]})]})}function Ae(n,i){const r=new Date;return r.setHours(n,i,0,0),r.toISOString()}function Pe(n,i,r,o,d,m,p){return{id:`${n}-${i}-task`,title:r,status:o,assignedSkillId:d,startedAt:m,finishedAt:p}}function ua(n,i,r,o,d,m){return{id:n,title:i,objective:r,status:o,createdAt:Ae(8,0),updatedAt:d,steps:m,sourceIds:{planId:n,taskIds:m.flatMap(p=>p.tasks.map(v=>v.id))}}}const Tx=[{id:"whitecollar-day-browser-portal-check",name:"工作台巡检",version:"1.0.0",enabled:!0,description:"检查工作台首页、待办数量和重点入口是否可用。",category:"办公",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-inbox-triage",name:"收件箱分拣",version:"1.0.0",enabled:!0,description:"读取邮件和通知列表,按紧急程度整理待办。",category:"通信",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-calendar-brief",name:"日程简报",version:"1.0.0",enabled:!0,description:"生成当日会议、回访和报表节点的时间提醒。",category:"办公",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-crm-followup",name:"客户跟进",version:"1.0.0",enabled:!0,description:"读取客户跟进页面,形成回访摘要和下一步建议。",category:"营销",capabilityLevel:"specialized",source:"skill-api"},{id:"whitecollar-day-browser-expense-approval",name:"费用审批核对",version:"1.0.0",enabled:!0,description:"检查待审批费用单,筛出异常和超限项。",category:"财务",capabilityLevel:"specialized",source:"skill-api"},{id:"whitecollar-day-sales-snapshot",name:"经营快照",version:"1.0.0",enabled:!0,description:"汇总客户、项目和当日经营看板。",category:"报表",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-report-export",name:"报表导出",version:"1.0.0",enabled:!0,description:"整理并导出面向领导汇报的简版报表。",category:"报表",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-knowledge-check",name:"知识库核查",version:"1.0.0",enabled:!0,description:"检索知识库资料,确认制度和模板是否最新。",category:"数字化",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-task-board-sync",name:"任务看板同步",version:"1.0.0",enabled:!0,description:"把今日处理结果同步到任务看板和协同清单。",category:"办公",capabilityLevel:"standard",source:"skill-api"},{id:"whitecollar-day-browser-day-close",name:"日终收口",version:"1.0.0",enabled:!0,description:"汇总今日动作、风险和明日重点。",category:"办公",capabilityLevel:"specialized",source:"skill-api"}],Ax=[ua("whitecollar-day","白领一天端到端验收","模拟业务人员一天内通过数字员工完成网页采集、客户回访、资料整理和日报输出。","active",Ae(10,35),[{id:"contact",title:"读取供应商联系人",status:"completed",preferredSkills:["whitecollar-day-legacy-contact"],tasks:[Pe("whitecollar-day","contact","整理联系人名单","completed","whitecollar-day-legacy-contact",Ae(8,30),Ae(8,33))]},{id:"news",title:"读取行业动态",status:"completed",preferredSkills:["whitecollar-day-legacy-news"],tasks:[Pe("whitecollar-day","news","整理行业动态摘要","completed","whitecollar-day-legacy-news",Ae(8,35),Ae(8,41))]},{id:"form",title:"预填客户回访登记",status:"completed",preferredSkills:["whitecollar-day-legacy-form"],tasks:[Pe("whitecollar-day","form","填充回访登记表","completed","whitecollar-day-legacy-form",Ae(8,45),Ae(8,51))]},{id:"compare",title:"比对设备方案",status:"running",preferredSkills:["whitecollar-day-legacy-compare"],tasks:[Pe("whitecollar-day","compare","生成方案差异结论","running","whitecollar-day-legacy-compare",Ae(10,28),null)]},{id:"todos",title:"读取待办系统",status:"pending",preferredSkills:["whitecollar-day-legacy-todos"],tasks:[Pe("whitecollar-day","todos","汇总个人待办","pending","whitecollar-day-legacy-todos",null,null)]},{id:"customers",title:"读取客户清单",status:"pending",preferredSkills:["whitecollar-day-legacy-customers"],tasks:[Pe("whitecollar-day","customers","提取重点客户","pending","whitecollar-day-legacy-customers",null,null)]},{id:"download",title:"识别最新资料下载链接",status:"pending",preferredSkills:["whitecollar-day-legacy-download"],tasks:[Pe("whitecollar-day","download","识别最新制度材料","pending","whitecollar-day-legacy-download",null,null)]},{id:"email",title:"生成客户跟进邮件",status:"pending",preferredSkills:["whitecollar-day-legacy-email"],tasks:[Pe("whitecollar-day","email","生成回访邮件草稿","pending","whitecollar-day-legacy-email",null,null)]},{id:"daily-report",title:"生成工作日报",status:"pending",preferredSkills:["whitecollar-day-legacy-daily-report"],tasks:[Pe("whitecollar-day","daily-report","生成工作日报","pending","whitecollar-day-legacy-daily-report",null,null)]},{id:"tomorrow-plan",title:"生成明日计划",status:"pending",preferredSkills:["whitecollar-day-legacy-tomorrow-plan"],tasks:[Pe("whitecollar-day","tomorrow-plan","整理明日计划","pending","whitecollar-day-legacy-tomorrow-plan",null,null)]}]),ua("whitecollar-day-0830-browser-portal-check","白领一天 08:30 工作台巡检","巡检工作台首页、待办数量和关键入口状态。","completed",Ae(8,34),[{id:"browser-portal-check",title:"浏览器工作台巡检",status:"completed",preferredSkills:["whitecollar-day-browser-portal-check"],tasks:[Pe("whitecollar-day-0830-browser-portal-check","browser-portal-check","检查门户首页与入口","completed","whitecollar-day-browser-portal-check",Ae(8,30),Ae(8,34))]}]),ua("whitecollar-day-0900-browser-inbox-triage","白领一天 09:00 收件箱分拣","识别高优先级通知并形成今日待办。","completed",Ae(9,6),[{id:"browser-inbox-triage",title:"浏览器收件箱分拣",status:"completed",preferredSkills:["whitecollar-day-browser-inbox-triage"],tasks:[Pe("whitecollar-day-0900-browser-inbox-triage","browser-inbox-triage","分拣通知与邮件","completed","whitecollar-day-browser-inbox-triage",Ae(9,0),Ae(9,6))]}]),ua("whitecollar-day-0930-calendar-brief","白领一天 09:30 日程简报","整理会议、回访与汇报节点,形成上午排程。","completed",Ae(9,32),[{id:"calendar-brief",title:"生成日程简报",status:"completed",preferredSkills:["whitecollar-day-calendar-brief"],tasks:[Pe("whitecollar-day-0930-calendar-brief","calendar-brief","整理今日日程","completed","whitecollar-day-calendar-brief",Ae(9,30),Ae(9,32))]}]),ua("whitecollar-day-1030-browser-crm-followup","白领一天 10:30 客户跟进","汇总重点客户情况,生成下一步回访建议。","running",Ae(10,35),[{id:"browser-crm-followup",title:"浏览器客户跟进",status:"running",preferredSkills:["whitecollar-day-browser-crm-followup"],tasks:[Pe("whitecollar-day-1030-browser-crm-followup","browser-crm-followup","提取客户回访摘要","running","whitecollar-day-browser-crm-followup",Ae(10,30),null)]}]),ua("whitecollar-day-1130-browser-expense-approval","白领一天 11:30 费用审批核对","检查待审批单据并输出异常说明。","approved",Ae(11,20),[{id:"browser-expense-approval",title:"浏览器费用审批核对",status:"pending",preferredSkills:["whitecollar-day-browser-expense-approval"],tasks:[Pe("whitecollar-day-1130-browser-expense-approval","browser-expense-approval","核对费用审批单","pending","whitecollar-day-browser-expense-approval",null,null)]}]),ua("whitecollar-day-1330-sales-snapshot","白领一天 13:30 经营快照","汇总客户、项目和经营看板,形成午后快照。","draft",Ae(13,20),[{id:"sales-snapshot",title:"生成经营快照",status:"pending",preferredSkills:["whitecollar-day-sales-snapshot"],tasks:[Pe("whitecollar-day-1330-sales-snapshot","sales-snapshot","整理经营快照","pending","whitecollar-day-sales-snapshot",null,null)]}]),ua("whitecollar-day-1430-report-export","白领一天 14:30 报表导出","导出领导汇报所需的简版统计报表。","draft",Ae(14,10),[{id:"report-export",title:"导出汇报报表",status:"pending",preferredSkills:["whitecollar-day-report-export"],tasks:[Pe("whitecollar-day-1430-report-export","report-export","导出统计报表","pending","whitecollar-day-report-export",null,null)]}]),ua("whitecollar-day-1530-browser-knowledge-check","白领一天 15:30 知识库核查","核查制度、模板与常见问题资料是否最新。","draft",Ae(15,15),[{id:"browser-knowledge-check",title:"浏览器知识库核查",status:"pending",preferredSkills:["whitecollar-day-browser-knowledge-check"],tasks:[Pe("whitecollar-day-1530-browser-knowledge-check","browser-knowledge-check","核查知识库资料","pending","whitecollar-day-browser-knowledge-check",null,null)]}]),ua("whitecollar-day-1630-task-board-sync","白领一天 16:30 任务看板同步","把今日处理结果同步到看板和协同清单。","draft",Ae(16,10),[{id:"task-board-sync",title:"同步任务看板",status:"pending",preferredSkills:["whitecollar-day-task-board-sync"],tasks:[Pe("whitecollar-day-1630-task-board-sync","task-board-sync","同步任务状态","pending","whitecollar-day-task-board-sync",null,null)]}]),ua("whitecollar-day-1730-browser-day-close","白领一天 17:30 日终收口","汇总今日成果、风险和明日重点,形成日终总结。","draft",Ae(17,10),[{id:"task-board-sync",title:"同步任务看板",status:"pending",preferredSkills:["whitecollar-day-task-board-sync"],tasks:[Pe("whitecollar-day-1730-browser-day-close","task-board-sync","同步看板结果","pending","whitecollar-day-task-board-sync",null,null)]},{id:"browser-day-close",title:"浏览器日终收口",status:"pending",preferredSkills:["whitecollar-day-browser-day-close"],tasks:[Pe("whitecollar-day-1730-browser-day-close","browser-day-close","整理日终收口","pending","whitecollar-day-browser-day-close",null,null)]}]),ua("zhihu-hotlist-monitor","知乎热榜采集","通过计划模板调用知乎热榜采集技能,导出表格文件并生成当天热点摘要。","approved",Ae(10,12),[{id:"collect-zhihu",title:"采集知乎热榜",status:"pending",preferredSkills:["zhihu-hotlist"],tasks:[Pe("zhihu-hotlist-monitor","collect-zhihu","采集知乎热榜","pending","zhihu-hotlist",null,null)]},{id:"export-xlsx",title:"导出表格文件",status:"pending",preferredSkills:["office-export-xlsx"],tasks:[Pe("zhihu-hotlist-monitor","export-xlsx","导出热榜表格","pending","office-export-xlsx",null,null)]}])];function Cx(n){return{...n,steps:n.steps.map(i=>({...i,preferredSkills:[...i.preferredSkills],tasks:i.tasks.map(r=>({...r}))})),sourceIds:{planId:n.sourceIds.planId,taskIds:[...n.sourceIds.taskIds]}}}function _s(){return Ax.map(Cx)}function Jp(){return Tx.map(n=>({...n}))}function Dx(n){return n.flatMap(i=>i.steps.flatMap(r=>r.tasks.map(o=>({task_id:o.id,title:o.title,status:o.status,plan_id:i.id,step_id:r.id,assigned_skill_id:o.assignedSkillId||"",description:`${i.title} · ${r.title}`,created_at:i.createdAt||Ae(8,0),updated_at:i.updatedAt||i.createdAt||Ae(8,0),started_at:o.startedAt,finished_at:o.finishedAt}))))}function zx(n){return n.filter(i=>["completed","running"].includes(i.status)).map((i,r)=>({run_id:`demo-run-${r+1}`,task_id:i.task_id,plan_id:i.plan_id,attempt_no:1,lifecycle:i.status==="running"?"Running":"Succeeded",created_at:i.started_at||i.created_at,completed_at:i.finished_at}))}function Rx(n){const i=n.steps.find(o=>o.status==="running")||n.steps.find(o=>o.status==="pending")||n.steps[0],r=[{event_id:`${n.id}-event-1`,kind:"entered_session",occurred_at:n.createdAt||Ae(8,0),message:`已接收场景:${n.title}`},{event_id:`${n.id}-event-2`,kind:"start",occurred_at:n.updatedAt||n.createdAt||Ae(8,0),message:`当前目标:${n.objective}`}];return i&&r.push({event_id:`${n.id}-event-3`,kind:n.status==="completed"?"completed":n.status==="approved"||n.status==="draft"?"pending_authorization":"RunStarted",occurred_at:n.updatedAt||n.createdAt||Ae(8,0),message:`${i.title}`}),n.status==="completed"&&r.push({event_id:`${n.id}-event-4`,kind:"RunCompleted",occurred_at:n.updatedAt||n.createdAt||Ae(8,0),message:"已完成本场景执行并回写结果。"}),r}function Zo(n){const i=n.steps.filter(d=>d.status==="completed").length,r=n.steps.find(d=>d.status==="running"),o=n.status==="completed"?`当前已完成全部 ${n.steps.length} 个步骤,结果已整理完毕。`:r?`当前正在处理“${r.title}”,已完成 ${i} 个步骤。`:"当前场景已准备就绪,可直接发起执行。";return[{role:"user",content:`请执行场景:${n.title}`},{role:"assistant",content:`已接收。业务目标:${n.objective}`},{role:"assistant",content:o}]}function Vo(n,i){return n.map(r=>r.id!==i?r:{...r,status:"running",updatedAt:new Date().toISOString(),steps:r.steps.map((o,d)=>({...o,status:d===0?"running":o.status==="completed"?"completed":"pending",tasks:o.tasks.map(m=>({...m,status:d===0?"running":m.status==="completed"?"completed":"pending",startedAt:d===0?new Date().toISOString():m.startedAt,finishedAt:d===0?null:m.finishedAt}))}))})}function Jo(n,i){return n.map(r=>r.id!==i?r:{...r,status:"completed",updatedAt:new Date().toISOString(),steps:r.steps.map(o=>({...o,status:"completed",tasks:o.tasks.map(d=>({...d,status:"completed",startedAt:d.startedAt||new Date().toISOString(),finishedAt:new Date().toISOString()}))}))})}function Fp(n){switch(n){case"succeeded":case"completed":case"Succeeded":return"success";case"failed":return"danger";case"Failed":return"danger";case"running":case"active":case"Running":return"info";default:return"warning"}}function Un(n){return n?new Date(n).toLocaleString("zh-CN",{hour12:!1}):"未记录"}function Wp(n){const i=`${n.id} ${n.title} ${n.objective}`.toLowerCase();return i.includes("month")||i.includes("monthly")||i.includes("月")?"月度任务":i.includes("week")||i.includes("weekly")||i.includes("周")?"周任务":i.includes("临时")||i.includes("adhoc")||i.includes("hotlist")||i.includes("monitor")?"临时任务":"日常任务"}function Mx(n){return["succeeded","success","finished","complete","completed"].includes(n.toLowerCase())}function Ss(n){return["failed","error","cancelled","canceled","aborted","rejected","deadletter"].includes(n.toLowerCase())}function Ip(n){const i=n.steps.length;if(i===0)return Qt(n.status);const r=n.steps.filter(p=>Mx(p.status)).length,o=n.steps.filter(p=>Ss(p.status)).length,d=n.steps.filter(p=>["running","active","queued","leased"].includes(p.status.toLowerCase())).length,m=[`已完成 ${r}/${i}`];return o>0&&m.push(`失败 ${o}`),d>0&&o===0&&m.push(`处理中 ${d}`),m.join(",")}function Pp(n){return n.replace(/^启动计划:/,"接收委托:").replace(/^准备步骤:/,"准备工作:").replace(/^创建任务:/,"安排工作:").replace(/^任务失败:/,"工作失败:").replace(/^开始处理:/,"开始处理:").replace(/^完成任务:/,"完成工作:").replace(/^调用技能:/,"数字员工处理:").replace(/^执行开始:/,"开始执行:").replace(/^执行完成:/,"执行完成:").replace(/^执行失败:/,"执行失败:").replace(/,将使用[^,。]+/,"").replace(/,分配给[^,。]+/,"")}function rc(n){return/失败|failed|error|timeout|unavailable/i.test(n)}function eg(n,i=""){return rc(i)?"失败":n==="artifact"?"产物":n==="task_summary"?"结果":n==="task_running"||n==="run"?"处理中":n==="task_done"||n==="run_done"?"完成":"过程"}function Ox(n){return n==="user"?"用户":n==="assistant"?"数字员工":n==="system"?"系统":"消息"}function Fo(n){return vs(n||"",n||"自动化技能")}function Lx(n,i,r){const o=i==="true"?"成功":"失败";return n.includes("zhihu-hotlist")&&n.includes("extract_hotlist")?`调用技能:知乎热榜采集,结果:${o},耗时 ${r}ms`:n.includes("office-export-xlsx")&&n.includes("export_xlsx")?`调用技能:Excel 导出,结果:${o},耗时 ${r}ms`:`调用技能:${n},结果:${o},耗时 ${r}ms`}function Wo(n){return typeof n=="string"?n:""}function gc(n){return n.occurred_at||""}function tg(n){return n.filter(i=>!!i).sort((i,r)=>i.localeCompare(r))[0]||null}function $x(n){var r;const i=new Map;for(const o of n){const d=((r=o.message.split(",结果:")[0])==null?void 0:r.split(",状态:")[0])||o.message,m=i.get(d);(!m||gc(o).localeCompare(gc(m))>0)&&i.set(d,o)}return Array.from(i.values())}function qx(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:null}function ag(n){return n.replace(/\\\\/g,"\\")}function Ux(n,i,r,o,d){const m=[],p=(h,y,E,S)=>{E.trim()&&m.push({event_id:S,kind:h,occurred_at:y??null,message:E})},v=(h,y,E,S)=>{let k=!1;try{const O=qx(JSON.parse(h));if(O){const G=typeof O.label=="string"?O.label.trim():"",I=O.value;G&&I!==void 0&&I!==null&&p("task_summary",y,`${G}:${String(I)}`,`metric-${E}-${S}`);const F=typeof O.output_path=="string"?O.output_path.trim():"";F&&(k=!0,p("artifact",y,`产物生成:${ag(F)}`,`artifact-${E}-${S}`))}}catch{}const R=h.match(/"row_count"\s*:\s*(\d+)/);R!=null&&R[1]&&p("task_summary",y,`数据处理完成:共 ${R[1]} 条记录`,`rows-${E}-${S}`);const T=h.match(/"output_path"\s*:\s*"([^"]+\.(?:xlsx|xls|csv|json|html|pdf|png|jpg|jpeg|txt))"/i),L=T==null?void 0:T[1];L&&!k&&p("artifact",y,`产物生成:${ag(L)}`,`artifact-regex-${E}-${S}`)};if(p("plan",n.createdAt||n.updatedAt,`启动计划:${n.title},目标:${n.objective}`,`plan-${n.id}`),i.length===0)for(const h of n.steps){const y=h.preferredSkills.map(Fo).join("、")||"自动化技能";p("task",n.updatedAt||n.createdAt,`准备步骤:${h.title},将使用 ${y}`,`step-${h.id}`)}for(const h of i){const y=Fo(h.assigned_skill_id),E=r.filter(R=>R.task_id===h.task_id),S=tg(E.map(R=>R.created_at)),k=tg([h.created_at,h.started_at,S]);if(p("task",k,`创建任务:${h.title||"子任务"},分配给 ${y}`,`task-create-${h.task_id}`),h.started_at&&p("task_running",h.started_at,`开始处理:${h.title||"子任务"}`,`task-start-${h.task_id}`),h.finished_at){const R=Ss(h.status)?"任务失败":"完成任务",T=Ss(h.status)&&h.error_message?`,原因:${h.error_message}`:"";p("task_done",h.finished_at,`${R}:${h.title||"子任务"},状态:${Qt(h.status)}${T}`,`task-finish-${h.task_id}`)}}for(const h of r){const y=i.find(R=>R.task_id===h.task_id),E=(y==null?void 0:y.title)||"任务执行",S=Fo(h.skill_id||(y==null?void 0:y.assigned_skill_id));if(o.some(R=>(R.content||"").includes(`[Task ${h.task_id}] tool_call`))||p("skill_tool",h.created_at,`调用技能:${S},处理:${E}`,`run-skill-${h.run_id}`),p("run",h.created_at,`执行开始:${E},第 ${h.attempt_no||1} 次`,`run-start-${h.run_id}`),h.completed_at){const R=Ss(h.lifecycle)?"执行失败":"执行完成";p("run_done",h.completed_at,`${R}:${E},结果:${Qt(h.lifecycle)}`,`run-done-${h.run_id}`)}for(const[R,T]of(h.events||[]).entries())v(Wo(T.message),T.occurred_at||h.completed_at||h.created_at,`run-${h.run_id}-${T.event_id||R}`,h.skill_id||(y==null?void 0:y.assigned_skill_id)||"run");for(const[R,T]of(h.artifacts||[]).entries()){const L=Wo(T.uri),O=Wo(T.name)||L;(L||O)&&p("artifact",h.completed_at||h.created_at,`产物生成:${O}${L&&L!==O?`(${L})`:""}`,`run-artifact-${h.run_id}-${R}`)}}for(const h of o){const y=h.content||"",E=y.match(/\[Task ([^\]]+)\] tool_call name=([^\s]+) success=(true|false) elapsed_ms=(\d+) args=(.*?) output=(.*)$/s);if(E){const k=E[1]||"",R=E[2]||"",T=E[3]||"false",L=E[4]||"0",O=E[6]||"";p("skill_tool",h.created_at,Lx(R,T,L),`tool-${k}-${h.created_at}-${R}`),v(O,h.created_at,`message-${h.created_at}`,R);continue}const S=y.match(/共采集到\s*\**\s*(\d+)\s*条/);if(S!=null&&S[1]){p("task_summary",h.created_at,`采集完成:获得 ${S[1]} 条知乎热榜数据`,`summary-hotlist-${h.created_at}`);continue}y.includes("[Task ")&&y.includes("Excel")&&p("task_summary",h.created_at,"导出完成:Excel 文件已生成",`summary-excel-${h.created_at}`)}if(m.length<=1)for(const h of d||[])p(h.kind,h.occurred_at,Pg(h.message,h.message),h.event_id);return m.sort((h,y)=>(h.occurred_at||"").localeCompare(y.occurred_at||"")).slice(-40)}function Bx({mission:n,onClose:i}){const[r,o]=b.useState([]),[d,m]=b.useState([]),[p,v]=b.useState(null),[h,y]=b.useState(!0),[E,S]=b.useState([]),[k,R]=b.useState(!1),[T,L]=b.useState(!1),[O,G]=b.useState(!1),[I,F]=b.useState(null),ne=n.sourceIds.planId||n.id;b.useEffect(()=>{let X=!1;const se=()=>{y(!0),Promise.allSettled([dS(ne),fS(ne),zp(ne)]).then(([D,Y,te])=>{var $;if(X)return;const fe=_s().find(K=>K.id===ne),be=fe?Dx([fe]):[],j=be.length>0?zx(be):[];D.status==="fulfilled"?(o(D.value.tasks&&D.value.tasks.length>0?D.value.tasks:be),m(D.value.runs&&D.value.runs.length>0?D.value.runs:j)):(o(be),m(j)),Y.status==="fulfilled"&&(($=Y.value)!=null&&$.events)&&Y.value.events.length>0?v(Y.value):v(fe?{events:Rx(fe)}:null),te.status==="fulfilled"&&te.value.messages.length>0?S(te.value.messages):S(fe?Zo(fe):[])}).finally(()=>{X||y(!1)})};se();const H=window.setInterval(se,3e3);return()=>{X=!0,window.clearInterval(H)}},[ne]),b.useEffect(()=>{S([]),R(!1),L(!1),F(null)},[ne]);const ie=async()=>{if(!O){R(!0),G(!0),F(null);try{const X=await zp(ne);if(X.messages&&X.messages.length>0)S(X.messages);else{const se=_s().find(H=>H.id===ne);S(se?Zo(se):[])}}catch(X){const se=_s().find(H=>H.id===ne);se?(S(Zo(se)),F(null)):(S([]),F(X instanceof Error?X.message:"读取会话失败"))}finally{G(!1)}}},he=b.useMemo(()=>{const X=new Map;for(const se of d){const H=X.get(se.task_id)||[];H.push(se),X.set(se.task_id,H)}for(const se of X.values())se.sort((H,D)=>(D.created_at||"").localeCompare(H.created_at||""));return X},[d]),Z=b.useMemo(()=>Ux(n,r,d,E,p==null?void 0:p.events),[p==null?void 0:p.events,n,d,E,r]),ee=b.useMemo(()=>Z.filter(X=>X.kind!=="skill_tool").slice(-12),[Z]),Te=b.useMemo(()=>{const X=Z.filter(Y=>["artifact","task_summary"].includes(Y.kind)),se=Z.filter(Y=>Y.kind==="task_done"),H=$x(Z.filter(Y=>Y.kind==="run_done")),D=se.length>0?se:H;return[...X,...D].sort((Y,te)=>gc(Y).localeCompare(gc(te))).slice(-6)},[Z]),rt=b.useMemo(()=>Z.reduce((X,se)=>se.occurred_at&&(!X||se.occurred_at.localeCompare(X)>0)?se.occurred_at:X,null),[Z]),Ze=n.updatedAt||rt,de=()=>{const X=!T;L(X),X&&!k&&ie()};return c.jsxs("div",{className:"de-drawer",role:"dialog","aria-label":n.title,children:[c.jsxs("div",{className:"de-drawer-head",children:[c.jsxs("div",{className:"de-drawer-title-group",children:[c.jsx("span",{className:"de-drawer-eyebrow",children:"委托详情"}),c.jsx("h3",{children:n.title})]}),c.jsx("button",{className:"de-btn-secondary",onClick:i,"aria-label":"关闭",children:"✕"})]}),c.jsxs("div",{className:"de-drawer-status-line",children:[c.jsx(cd,{variant:Fp(n.status),label:Qt(n.status)}),c.jsx("span",{className:"de-drawer-meta",children:Wp(n)}),c.jsx("span",{className:"de-drawer-meta",children:Ip(n)})]}),c.jsxs("div",{className:"de-drawer-timeline",children:[c.jsxs("section",{className:"de-detail-section",children:[c.jsx("div",{className:"de-detail-section-head",children:c.jsx("h4",{children:"委托概览"})}),c.jsxs("div",{className:"de-detail-kv",children:[c.jsx("span",{children:"业务目标"}),c.jsx("strong",{children:n.objective||"未填写"}),c.jsx("span",{children:"周期"}),c.jsx("strong",{children:Wp(n)}),c.jsx("span",{children:"当前进度"}),c.jsx("strong",{children:Ip(n)}),c.jsx("span",{children:"启动时间"}),c.jsx("strong",{children:Un(n.createdAt)}),c.jsx("span",{children:"状态"}),c.jsx("strong",{children:Qt(n.status)}),c.jsx("span",{children:"更新时间"}),c.jsx("strong",{children:Un(Ze)})]})]}),c.jsxs("section",{className:"de-detail-section de-execution-chain",children:[c.jsxs("div",{className:"de-detail-section-head",children:[c.jsx("h4",{children:"业务过程"}),c.jsxs("span",{className:"de-chain-plan-id",children:["最近更新:",Un(Ze||n.createdAt)]})]}),h&&ee.length===0?c.jsx("p",{className:"de-empty-text",children:"正在读取业务过程..."}):ee.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无业务过程。重新执行本任务后会显示处理进展。"}):c.jsx("div",{className:"de-chain-list",children:ee.map(X=>c.jsxs("div",{className:`de-chain-row de-chain-row--${X.kind} ${rc(X.message)?"de-chain-row--danger":""}`,children:[c.jsx("strong",{children:eg(X.kind,X.message)}),c.jsx("span",{children:Pp(X.message)}),c.jsx("time",{children:Un(X.occurred_at)})]},`chain-${X.event_id}`))})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsx("h4",{children:"结果与产物"}),Te.length>0?c.jsx("div",{className:"de-event-list",children:[...Te].reverse().map(X=>c.jsxs("div",{className:`de-event-row ${rc(X.message)?"de-event-row--danger":""}`,children:[c.jsx("strong",{children:eg(X.kind,X.message)}),c.jsx("span",{children:Pp(X.message)}),c.jsx("time",{children:Un(X.occurred_at)})]},`result-${X.event_id}`))}):c.jsx("p",{className:"de-empty-text",children:"任务完成后,这里会显示结果摘要和产物入口。"})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsx("h4",{children:"步骤进展"}),h?c.jsx("p",{className:"de-empty-text",children:"正在读取执行情况..."}):null,n.steps.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无步骤进展"}):n.steps.map((X,se)=>c.jsxs("div",{className:"de-step-node",children:[c.jsx("div",{className:`de-step-dot de-step-dot--${X.status}`}),se0?c.jsx("div",{className:"de-event-list",children:Z.slice(-20).reverse().map(X=>c.jsxs("div",{className:`de-event-row ${rc(X.message)?"de-event-row--danger":""}`,children:[c.jsx("strong",{children:cx(X.kind)}),c.jsx("span",{children:X.message}),c.jsx("time",{children:Un(X.occurred_at)})]},X.event_id))}):c.jsx("p",{className:"de-empty-text",children:"暂无事件日志"})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsxs("div",{className:"de-detail-section-head",children:[c.jsx("h4",{children:"会话记录"}),c.jsx("button",{className:"de-btn-secondary de-btn-sm",onClick:ie,disabled:O,children:"刷新"})]}),I?c.jsxs("p",{className:"de-empty-text",children:["会话读取失败:",I]}):O?c.jsx("p",{className:"de-empty-text",children:"正在读取会话..."}):E.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无会话消息。"}):c.jsx("div",{className:"de-session-message-list",children:E.map((X,se)=>c.jsxs("div",{className:`de-session-message de-session-message--${X.role==="user"?"user":"agent"}`,children:[c.jsx("div",{className:"de-session-message-role",children:Ox(X.role)}),c.jsx("p",{children:Pg(X.content,X.content)})]},`${X.role}-${se}`))})]}),c.jsxs("section",{className:"de-detail-section",children:[c.jsx("h4",{children:"任务与执行记录"}),r.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无原始任务记录"}):r.map(X=>{const se=he.get(X.task_id)||[],H=se[0];return c.jsxs("div",{className:"de-task-run-card",children:[c.jsxs("div",{className:"de-task-run-head",children:[c.jsx("span",{children:X.title||"子任务"}),c.jsx(cd,{variant:Fp(X.status),label:Qt(X.status)})]}),c.jsxs("div",{className:"de-task-run-meta",children:[c.jsxs("span",{children:["skill_id:",X.assigned_skill_id||"未分配"]}),c.jsxs("span",{children:["开始:",Un(X.started_at)]}),c.jsxs("span",{children:["结束:",Un(X.finished_at)]})]}),c.jsxs("div",{className:"de-task-run-meta",children:[c.jsxs("span",{children:["task_id:",X.task_id]}),c.jsxs("span",{children:["执行记录:",se.length," 次"]}),H?c.jsxs("span",{children:["最近结果:",Qt(H.lifecycle)]}):null]}),Ss(X.status)&&X.error_message?c.jsxs("div",{className:"de-task-run-error",children:[c.jsx("strong",{children:"失败原因:"}),X.error_message]}):null]},X.task_id)})]})]}):c.jsx("p",{className:"de-empty-text",children:"默认隐藏排障信息;需要排障时可展开。"})]})]})]})}const ng={zh:{"nav.dashboard":"仪表盘","nav.plans":"计划","nav.execution":"执行","nav.governance":"治理","nav.scheduler":"调度器","nav.skills":"技能","nav.agent":"智能体","nav.tools":"工具","nav.cron":"Cron 任务","nav.integrations":"集成","nav.memory":"记忆","nav.config":"配置","nav.cost":"成本追踪","nav.logs":"日志","nav.devtools":"工具","nav.swimlane":"泳道","nav.doctor":"诊断","nav.canvas":"画布","planb.nav.chat":"对话","planb.nav.browser":"AI浏览器","planb.nav.monitor":"运行监测","planb.nav.dashboard":"仪表盘","planb.nav.settings":"设置","planb.nav.more":"更多工具","planb.layout.switch_to_wide":"切换到宽屏模式","planb.layout.switch_to_compact":"切换到紧凑模式","planb.layout.pop_out":"弹出独立窗口","planb.browser.title":"AI浏览器","planb.browser.subtitle":"启动 SuperRPA 浏览器自动化","planb.browser.launch":"启动浏览器","planb.browser.url_placeholder":"https://example.com","planb.browser.active_sessions":"活跃会话","planb.browser.no_sessions":"没有活跃的浏览器会话,在上方输入 URL 启动。","planb.browser.status_launching":"启动中","planb.browser.status_running":"运行中","planb.browser.status_idle":"空闲","planb.browser.status_error":"错误","planb.browser.status_stopped":"已停止","planb.browser.launch_error":"启动浏览器失败","planb.browser.close_error":"关闭会话失败","planb.browser.backend_not_configured":"SuperRPA 未配置,请设置 SGCLAW_SUPERRPA_PATH 环境变量。","planb.chat.welcome":"今天我能帮你什么?","planb.chat.placeholder":"问点什么...","planb.chat.sessions":"对话历史","planb.chat.new_chat":"新对话","planb.chat.no_sessions":"暂无对话历史","planb.chat.untitled":"未命名对话","planb.chat.thought":"思考","planb.chat.chip_browse":"浏览网页","planb.chat.chip_code":"写代码","planb.chat.chip_analyze":"分析数据","planb.chat.chip_plan":"帮我规划","planb.chat.regenerate":"重新生成","planb.settings.quick":"快速设置","planb.settings.advanced":"高级配置","planb.settings.quick_hint":"快速设置功能即将推出。现在请使用高级配置编辑器修改 TOML 配置。","planb.settings.open_advanced":"打开高级配置","dashboard.title":"仪表盘","dashboard.provider":"提供商","dashboard.model":"模型","dashboard.uptime":"运行时间","dashboard.temperature":"温度","dashboard.gateway_port":"网关端口","dashboard.memory_backend":"记忆后端","dashboard.paired":"已配对","dashboard.channels":"频道","dashboard.health":"健康状态","dashboard.status":"状态","dashboard.overview":"概览","dashboard.system_info":"系统信息","dashboard.quick_actions":"快速操作","agent.title":"智能体对话","agent.send":"发送","agent.placeholder":"输入消息...","agent.start_conversation":"发送消息开始对话","agent.type_message":"输入消息...","agent.connecting":"连接中...","agent.connected":"已连接","agent.disconnected":"已断开","agent.reconnecting":"重新连接中...","agent.thinking":"思考中...","agent.tool_call":"工具调用","agent.tool_result":"工具结果","agent.connection_error":"连接错误,正在尝试重连...","agent.tool_call_prefix":"[工具调用]","agent.tool_result_prefix":"[工具结果]","agent.error_prefix":"[错误]","agent.unknown_error":"未知错误","agent.send_error":"发送消息失败,请重试。","agent.copy_message":"复制消息","agent.connected_status":"已连接","agent.disconnected_status":"已断开","tools.title":"可用工具","tools.name":"名称","tools.description":"描述","tools.parameters":"参数","tools.search":"搜索工具...","tools.empty":"暂无可用工具。","tools.count":"工具总数","tools.agent_tools":"智能体工具箱","tools.cli_tools":"CLI 工具箱","tools.parameter_schema":"参数结构","tools.path":"路径","tools.version":"版本","tools.category":"类别","tools.load_error":"加载工具失败","cron.title":"定时任务","cron.scheduled_tasks":"定时任务","cron.add":"添加任务","cron.add_job":"添加任务","cron.add_modal_title":"添加 Cron 任务","cron.delete":"删除","cron.enable":"启用","cron.disable":"禁用","cron.name":"名称","cron.name_optional":"名称(可选)","cron.command":"命令","cron.command_required":"命令","cron.schedule":"计划","cron.schedule_required":"计划","cron.next_run":"下次执行","cron.last_run":"上次执行","cron.last_status":"上次状态","cron.enabled":"已启用","cron.enabled_status":"启用","cron.disabled_status":"禁用","cron.empty":"暂无定时任务。","cron.confirm_delete":"确定要删除此任务吗?","cron.load_error":"加载定时任务失败","cron.validation_error":"计划和命令是必需的。","cron.add_error":"添加任务失败","cron.delete_error":"删除任务失败","cron.cancel":"取消","cron.adding":"添加中...","cron.id":"ID","cron.actions":"操作","cron.loading_run_history":"加载运行历史...","cron.load_run_history_error":"加载运行历史失败","cron.no_runs":"暂无运行记录。","cron.recent_runs":"最近运行","cron.yes":"是","cron.no":"否","cron.edit":"编辑","cron.edit_modal_title":"编辑 Cron 任务","cron.edit_error":"更新任务失败","cron.saving":"保存中...","cron.save":"保存","integrations.title":"集成","integrations.available":"可用","integrations.active":"活跃","integrations.coming_soon":"即将推出","integrations.category":"类别","integrations.status":"状态","integrations.search":"搜索集成...","integrations.empty":"未找到集成。","integrations.activate":"激活","integrations.deactivate":"停用","integrations.load_error":"加载集成失败","integrations.status_active":"活跃","integrations.status_available":"可用","integrations.status_coming_soon":"即将推出","memory.title":"记忆存储","memory.memory_title":"记忆","memory.search":"搜索记忆...","memory.search_placeholder":"搜索记忆条目...","memory.add":"存储记忆","memory.add_memory":"添加记忆","memory.add_modal_title":"添加记忆","memory.delete":"删除","memory.key":"键","memory.key_required":"键","memory.content":"内容","memory.content_required":"内容","memory.category":"类别","memory.category_optional":"类别(可选)","memory.timestamp":"时间戳","memory.session":"会话","memory.score":"分数","memory.empty":"未找到记忆条目。","memory.confirm_delete":"确定要删除此记忆条目吗?","memory.all_categories":"所有类别","memory.search_button":"搜索","memory.load_error":"加载记忆失败","memory.saving":"保存中...","memory.validation_error":"键和内容是必需的。","memory.store_error":"保存记忆失败","memory.delete_error":"删除记忆失败","memory.delete_confirm":"删除?","memory.yes":"是","memory.no":"否","memory.cancel":"取消","config.title":"配置","config.save":"保存","config.saving":"保存中...","config.reset":"重置","config.saved":"配置保存成功。","config.error":"配置保存失败。","config.loading":"加载配置中...","config.editor_placeholder":"TOML 配置...","config.configuration_title":"配置","config.sensitive_title":"敏感字段已隐藏","config.sensitive_hint":"API 密钥、令牌和密码已隐藏以保护安全。要更新已隐藏的字段,请将整个隐藏值替换为您的新值。","config.save_success":"配置保存成功。","config.save_error":"保存配置失败","config.toml_label":"TOML 配置","config.lines":"行","cost.title":"成本追踪","cost.session":"会话成本","cost.daily":"每日成本","cost.monthly":"每月成本","cost.total_tokens":"总 Tokens","cost.request_count":"请求数","cost.by_model":"按模型统计","cost.model":"模型","cost.tokens":"Token","cost.requests":"请求","cost.usd":"成本(美元)","cost.load_error":"加载成本数据失败","cost.session_cost":"会话成本","cost.daily_cost":"每日成本","cost.monthly_cost":"每月成本","cost.total_requests":"总请求数","cost.token_statistics":"Token 统计","cost.avg_tokens_per_request":"平均 Token / 请求","cost.cost_per_1k_tokens":"每 1K Token 成本","cost.model_breakdown":"模型细分","cost.no_model_data":"没有模型数据可用。","cost.cost":"成本","cost.share":"占比","logs.title":"实时日志","logs.live_logs":"实时日志","logs.clear":"清除","logs.pause":"暂停","logs.resume":"继续","logs.filter":"筛选日志...","logs.filter_label":"筛选","logs.empty":"暂无日志条目。","logs.connected":"已连接","logs.disconnected":"已断开","logs.events":"事件","logs.jump_to_bottom":"跳转到底部","logs.paused_hint":"日志流已暂停。","logs.waiting_hint":"等待事件...","doctor.title":"系统诊断","doctor.diagnostics_title":"系统诊断","doctor.run":"运行诊断","doctor.run_diagnostics":"运行诊断","doctor.running":"正在运行诊断...","doctor.running_btn":"运行中...","doctor.running_desc":"正在运行诊断...","doctor.running_hint":"这可能需要几秒钟。","doctor.ok":"正常","doctor.warn":"警告","doctor.error":"错误","doctor.severity":"严重程度","doctor.category":"类别","doctor.message":"消息","doctor.empty":"尚未运行诊断。","doctor.summary":"诊断摘要","doctor.issues_found":"发现问题","doctor.warnings_summary":"警告","doctor.all_clear":"一切正常","doctor.system_diagnostics":"系统诊断","doctor.empty_hint":'点击"运行诊断"检查您的 ZeroClaw 安装。',"auth.pair":"配对设备","auth.pairing_code":"配对码","auth.pair_button":"配对","auth.logout":"退出","auth.pairing_success":"配对成功!","auth.pairing_failed":"配对失败,请重试。","auth.enter_code":"请输入配对码以连接到智能体。","common.loading":"加载中...","common.error":"发生错误。","common.retry":"重试","common.cancel":"取消","common.confirm":"确认","common.save":"保存","common.delete":"删除","common.edit":"编辑","common.close":"关闭","common.yes":"是","common.no":"否","common.search":"搜索...","common.no_data":"暂无数据。","common.refresh":"刷新","common.back":"返回","common.actions":"操作","common.name":"名称","common.description":"描述","common.status":"状态","common.created":"创建时间","common.updated":"更新时间","health.title":"系统健康","health.component":"组件","health.status":"状态","health.last_ok":"上次正常","health.last_error":"上次错误","health.restart_count":"重启次数","health.pid":"进程 ID","health.uptime":"运行时间","health.updated_at":"最后更新","dashboard.provider_model":"提供商 / 模型","dashboard.since_last_restart":"自上次重启","dashboard.paired_yes":"是","dashboard.paired_no":"否","dashboard.cost_overview":"成本概览","dashboard.active_channels":"活跃频道","dashboard.filter_active":"活跃","dashboard.filter_all":"全部","dashboard.no_active_channels":"没有活跃频道","dashboard.component_health":"组件健康","dashboard.load_error":"加载仪表盘失败","dashboard.session_label":"会话","dashboard.daily_label":"每日","dashboard.monthly_label":"每月","dashboard.total_tokens_label":"总 Tokens","dashboard.requests_label":"请求","dashboard.no_channels":"未配置频道","dashboard.active":"活跃","dashboard.inactive":"非活跃","dashboard.no_components":"没有组件报告","dashboard.restarts":"重启次数","dashboard.tab_overview":"概览","dashboard.tab_sessions":"会话","dashboard.tab_channels":"频道","dashboard.sessions_title":"活跃会话","dashboard.no_sessions":"没有活跃会话","dashboard.session_id":"会话 ID","dashboard.session_channel":"频道","dashboard.session_started":"开始时间","dashboard.session_last_activity":"最近活动","dashboard.session_status":"状态","dashboard.session_messages":"消息数","dashboard.session_details":"会话详情","dashboard.session_history":"查看历史","dashboard.channels_title":"频道状态","dashboard.no_channels_detail":"没有频道详情","dashboard.channel_type":"类型","dashboard.channel_messages":"消息数","dashboard.channel_last_message":"最近消息","dashboard.channel_config":"配置摘要","dashboard.channel_enabled":"已启用","dashboard.channel_disabled":"已禁用","dashboard.loading_sessions":"加载会话中...","dashboard.loading_channels":"加载频道中...","dashboard.load_sessions_error":"加载会话失败","dashboard.load_channels_error":"加载频道失败","dashboard.never":"从未","settings.title":"设置","settings.tab.appearance":"外观","settings.tab.typography":"排版","settings.appearance":"外观设置","settings.typography":"字体设置","settings.fontUi":"界面字体","settings.fontMono":"代码字体","settings.fontSize":"界面字号","settings.fontMonoSize":"代码字号","settings.preview":"预览","settings.previewText":"界面字体预览文本","settings.fontNote":"字体设置需要刷新页面后生效","settings.language":"界面语言","theme.mode":"主题模式","theme.accent":"强调色","theme.system":"跟随系统","theme.dark":"深色","theme.light":"浅色","theme.oled":"纯黑","console.nav.commandDeck":"指挥舱","console.nav.missionCenter":"任务中心","console.nav.skillLibrary":"技能库","console.nav.dailyReport":"日报","console.nav.settings":"设置","console.role.finance":"财务","console.role.engineering":"工程","console.role.executive":"管理","console.role.hr":"人事","console.role.sales":"销售","console.state.loading":"加载中...","console.state.empty":"暂无数据","console.state.backendDown":"后端服务不可达","console.state.partialData":"部分数据源加载失败","console.state.stale":"数据已过期","console.state.unauthorized":"未授权","console.action.refresh":"刷新","console.action.approve":"批准","console.action.reject":"驳回","console.action.retry":"重试","console.action.create":"新建任务","console.skill.capabilityLevel":"能力等级","console.skill.enable":"启用","console.skill.disable":"停用","console.skill.core":"核心","console.skill.standard":"标准","console.skill.specialized":"专业","console.skill.experimental":"实验","console.report.dailyTitle":"日报","console.report.sourceLinks":"数据来源","console.report.noEvents":"当日无执行记录"},en:{"nav.dashboard":"Dashboard","nav.plans":"Plans","nav.execution":"Execution","nav.governance":"Governance","nav.scheduler":"Scheduler","nav.skills":"Skills","nav.agent":"Agent","nav.tools":"Tools","nav.cron":"Cron Jobs","nav.integrations":"Integrations","nav.memory":"Memory","nav.config":"Configuration","nav.cost":"Cost Tracker","nav.logs":"Logs","nav.devtools":"Tools","nav.swimlane":"Swimlane","nav.doctor":"Doctor","nav.canvas":"Canvas","planb.nav.chat":"Chat","planb.nav.browser":"AI Browser","planb.nav.dashboard":"Dashboard","planb.nav.settings":"Settings","planb.nav.more":"More Tools","planb.layout.switch_to_wide":"Switch to Desktop","planb.layout.switch_to_compact":"Switch to Compact","planb.layout.pop_out":"Pop Out Window","planb.browser.title":"AI Browser","planb.browser.subtitle":"Launch SuperRPA browser automation","planb.browser.launch":"Launch Browser","planb.browser.url_placeholder":"https://example.com","planb.browser.active_sessions":"Active Sessions","planb.browser.no_sessions":"No active browser sessions. Launch one above.","planb.browser.status_launching":"Launching","planb.browser.status_running":"Running","planb.browser.status_idle":"Idle","planb.browser.status_error":"Error","planb.browser.status_stopped":"Stopped","planb.browser.launch_error":"Failed to launch browser","planb.browser.close_error":"Failed to close session","planb.browser.backend_not_configured":"SuperRPA is not configured. Set SGCLAW_SUPERRPA_PATH environment variable.","planb.chat.welcome":"How can I help you today?","planb.chat.placeholder":"Ask anything...","planb.chat.sessions":"Chat History","planb.chat.new_chat":"New Chat","planb.chat.no_sessions":"No chat history","planb.chat.untitled":"Untitled","planb.chat.thought":"Thought","planb.chat.chip_browse":"Browse Web","planb.chat.chip_code":"Write Code","planb.chat.chip_analyze":"Analyze Data","planb.chat.chip_plan":"Plan Project","planb.chat.regenerate":"Regenerate","planb.settings.quick":"Quick Settings","planb.settings.advanced":"Advanced","planb.settings.quick_hint":"Quick settings are coming soon. Use the advanced editor to modify TOML configuration for now.","planb.settings.open_advanced":"Open Advanced Editor","dashboard.title":"Dashboard","dashboard.provider":"Provider","dashboard.model":"Model","dashboard.uptime":"Uptime","dashboard.temperature":"Temperature","dashboard.gateway_port":"Gateway Port","dashboard.memory_backend":"Memory Backend","dashboard.paired":"Paired","dashboard.channels":"Channels","dashboard.health":"Health","dashboard.status":"Status","dashboard.overview":"Overview","dashboard.system_info":"System Information","dashboard.quick_actions":"Quick Actions","agent.title":"Agent Chat","agent.send":"Send","agent.placeholder":"Type a message...","agent.start_conversation":"Send a message to start the conversation","agent.type_message":"Type a message...","agent.connecting":"Connecting...","agent.connected":"Connected","agent.disconnected":"Disconnected","agent.reconnecting":"Reconnecting...","agent.thinking":"Thinking...","agent.tool_call":"Tool Call","agent.tool_result":"Tool Result","agent.connection_error":"Connection error. Attempting to reconnect...","agent.tool_call_prefix":"[Tool Call]","agent.tool_result_prefix":"[Tool Result]","agent.error_prefix":"[Error]","agent.unknown_error":"Unknown error","agent.send_error":"Failed to send message. Please try again.","agent.copy_message":"Copy message","agent.connected_status":"Connected","agent.disconnected_status":"Disconnected","tools.title":"Available Tools","tools.name":"Name","tools.description":"Description","tools.parameters":"Parameters","tools.search":"Search tools...","tools.empty":"No tools available.","tools.count":"Total tools","tools.agent_tools":"Agent Tools","tools.cli_tools":"CLI Tools","tools.parameter_schema":"Parameter Schema","tools.path":"Path","tools.version":"Version","tools.category":"Category","tools.load_error":"Failed to load tools","cron.title":"Scheduled Jobs","cron.scheduled_tasks":"Scheduled Tasks","cron.add":"Add Job","cron.add_job":"Add Job","cron.add_modal_title":"Add Cron Job","cron.delete":"Delete","cron.enable":"Enable","cron.disable":"Disable","cron.name":"Name","cron.name_optional":"Name (optional)","cron.command":"Command","cron.command_required":"Command","cron.schedule":"Schedule","cron.schedule_required":"Schedule","cron.next_run":"Next Run","cron.last_run":"Last Run","cron.last_status":"Last Status","cron.enabled":"Enabled","cron.enabled_status":"Enabled","cron.disabled_status":"Disabled","cron.empty":"No scheduled jobs.","cron.confirm_delete":"Are you sure you want to delete this job?","cron.load_error":"Failed to load cron jobs","cron.validation_error":"Schedule and command are required.","cron.add_error":"Failed to add job","cron.delete_error":"Failed to delete job","cron.cancel":"Cancel","cron.adding":"Adding...","cron.id":"ID","cron.actions":"Actions","cron.loading_run_history":"Loading run history...","cron.load_run_history_error":"Failed to load run history","cron.no_runs":"No runs recorded yet.","cron.recent_runs":"Recent Runs","cron.yes":"Yes","cron.no":"No","cron.edit":"Edit","cron.edit_modal_title":"Edit Cron Job","cron.edit_error":"Failed to update job","cron.saving":"Saving...","cron.save":"Save","integrations.title":"Integrations","integrations.available":"Available","integrations.active":"Active","integrations.coming_soon":"Coming Soon","integrations.category":"Category","integrations.status":"Status","integrations.search":"Search integrations...","integrations.empty":"No integrations found.","integrations.activate":"Activate","integrations.deactivate":"Deactivate","integrations.load_error":"Failed to load integrations","integrations.status_active":"Active","integrations.status_available":"Available","integrations.status_coming_soon":"Coming Soon","memory.title":"Memory Store","memory.memory_title":"Memory","memory.search":"Search memory...","memory.search_placeholder":"Search memory entries...","memory.add":"Store Memory","memory.add_memory":"Add Memory","memory.add_modal_title":"Add Memory","memory.delete":"Delete","memory.key":"Key","memory.key_required":"Key","memory.content":"Content","memory.content_required":"Content","memory.category":"Category","memory.category_optional":"Category (optional)","memory.timestamp":"Timestamp","memory.session":"Session","memory.score":"Score","memory.empty":"No memory entries found.","memory.confirm_delete":"Are you sure you want to delete this memory entry?","memory.all_categories":"All Categories","memory.search_button":"Search","memory.load_error":"Failed to load memory","memory.saving":"Saving...","memory.validation_error":"Key and content are required.","memory.store_error":"Failed to store memory","memory.delete_error":"Failed to delete memory","memory.delete_confirm":"Delete?","memory.yes":"Yes","memory.no":"No","memory.cancel":"Cancel","config.title":"Configuration","config.save":"Save","config.saving":"Saving...","config.reset":"Reset","config.saved":"Configuration saved successfully.","config.error":"Failed to save configuration.","config.loading":"Loading configuration...","config.editor_placeholder":"TOML configuration...","config.configuration_title":"Configuration","config.sensitive_title":"Sensitive fields are masked","config.sensitive_hint":"API keys, tokens, and passwords are hidden for security. To update a masked field, replace the entire masked value with your new value.","config.save_success":"Configuration saved successfully.","config.save_error":"Failed to save configuration","config.toml_label":"TOML Configuration","config.lines":"lines","cost.title":"Cost Tracker","cost.session":"Session Cost","cost.daily":"Daily Cost","cost.monthly":"Monthly Cost","cost.total_tokens":"Total Tokens","cost.request_count":"Requests","cost.by_model":"Cost by Model","cost.model":"Model","cost.tokens":"Tokens","cost.requests":"Requests","cost.usd":"Cost (USD)","cost.load_error":"Failed to load cost data","cost.session_cost":"Session Cost","cost.daily_cost":"Daily Cost","cost.monthly_cost":"Monthly Cost","cost.total_requests":"Total Requests","cost.token_statistics":"Token Statistics","cost.avg_tokens_per_request":"Avg Tokens / Request","cost.cost_per_1k_tokens":"Cost per 1K Tokens","cost.model_breakdown":"Model Breakdown","cost.no_model_data":"No model data available.","cost.cost":"Cost","cost.share":"Share","logs.title":"Live Logs","logs.live_logs":"Live Logs","logs.clear":"Clear","logs.pause":"Pause","logs.resume":"Resume","logs.filter":"Filter logs...","logs.filter_label":"Filter","logs.empty":"No log entries.","logs.connected":"Connected","logs.disconnected":"Disconnected","logs.events":"events","logs.jump_to_bottom":"Jump to bottom","logs.paused_hint":"Log streaming is paused.","logs.waiting_hint":"Waiting for events...","doctor.title":"System Diagnostics","doctor.diagnostics_title":"Diagnostics","doctor.run":"Run Diagnostics","doctor.run_diagnostics":"Run Diagnostics","doctor.running":"Running diagnostics...","doctor.running_btn":"Running...","doctor.running_desc":"Running diagnostics...","doctor.running_hint":"This may take a few seconds.","doctor.ok":"OK","doctor.warn":"Warning","doctor.error":"Error","doctor.severity":"Severity","doctor.category":"Category","doctor.message":"Message","doctor.empty":"No diagnostics have been run yet.","doctor.summary":"Diagnostic Summary","doctor.issues_found":"Issues Found","doctor.warnings_summary":"Warnings","doctor.all_clear":"All Clear","doctor.system_diagnostics":"System Diagnostics","doctor.empty_hint":'Click "Run Diagnostics" to check your ZeroClaw installation.',"auth.pair":"Pair Device","auth.pairing_code":"Pairing Code","auth.pair_button":"Pair","auth.logout":"Logout","auth.pairing_success":"Pairing successful!","auth.pairing_failed":"Pairing failed. Please try again.","auth.enter_code":"Enter your pairing code to connect to the agent.","common.loading":"Loading...","common.error":"An error occurred.","common.retry":"Retry","common.cancel":"Cancel","common.confirm":"Confirm","common.save":"Save","common.delete":"Delete","common.edit":"Edit","common.close":"Close","common.yes":"Yes","common.no":"No","common.search":"Search...","common.no_data":"No data available.","common.refresh":"Refresh","common.back":"Back","common.actions":"Actions","common.name":"Name","common.description":"Description","common.status":"Status","common.created":"Created","common.updated":"Updated","health.title":"System Health","health.component":"Component","health.status":"Status","health.last_ok":"Last OK","health.last_error":"Last Error","health.restart_count":"Restarts","health.pid":"Process ID","health.uptime":"Uptime","health.updated_at":"Last Updated","dashboard.provider_model":"Provider / Model","dashboard.since_last_restart":"Since last restart","dashboard.paired_yes":"Yes","dashboard.paired_no":"No","dashboard.cost_overview":"Cost Overview","dashboard.active_channels":"Active Channels","dashboard.filter_active":"Active","dashboard.filter_all":"All","dashboard.no_active_channels":"No active channels","dashboard.component_health":"Component Health","dashboard.load_error":"Failed to load dashboard","dashboard.session_label":"Session","dashboard.daily_label":"Daily","dashboard.monthly_label":"Monthly","dashboard.total_tokens_label":"Total Tokens","dashboard.requests_label":"Requests","dashboard.no_channels":"No channels configured","dashboard.active":"Active","dashboard.inactive":"Inactive","dashboard.no_components":"No components reporting","dashboard.restarts":"Restarts","dashboard.tab_overview":"Overview","dashboard.tab_sessions":"Sessions","dashboard.tab_channels":"Channels","dashboard.sessions_title":"Active Sessions","dashboard.no_sessions":"No active sessions","dashboard.session_id":"Session ID","dashboard.session_channel":"Channel","dashboard.session_started":"Started","dashboard.session_last_activity":"Last Activity","dashboard.session_status":"Status","dashboard.session_messages":"Messages","dashboard.session_details":"Session Details","dashboard.session_history":"View History","dashboard.channels_title":"Channel Status","dashboard.no_channels_detail":"No channel details available","dashboard.channel_type":"Type","dashboard.channel_messages":"Messages","dashboard.channel_last_message":"Last Message","dashboard.channel_config":"Configuration","dashboard.channel_enabled":"Enabled","dashboard.channel_disabled":"Disabled","dashboard.loading_sessions":"Loading sessions...","dashboard.loading_channels":"Loading channels...","dashboard.load_sessions_error":"Failed to load sessions","dashboard.load_channels_error":"Failed to load channels","dashboard.never":"Never","settings.title":"Settings","settings.tab.appearance":"Appearance","settings.tab.typography":"Typography","settings.appearance":"Appearance","settings.typography":"Typography","settings.fontUi":"UI Font","settings.fontMono":"Code Font","settings.fontSize":"UI Font Size","settings.fontMonoSize":"Code Font Size","settings.preview":"Preview","settings.previewText":"The quick brown fox jumps over the lazy dog.","settings.fontNote":"Font changes apply on page reload.","settings.language":"Language","theme.mode":"Theme Mode","theme.accent":"Accent Color","theme.system":"System","theme.dark":"Dark","theme.light":"Light","theme.oled":"OLED Black","console.nav.commandDeck":"Command Deck","console.nav.missionCenter":"Mission Center","console.nav.skillLibrary":"Skill Library","console.nav.dailyReport":"Daily Report","console.nav.settings":"Settings","console.role.finance":"Finance","console.role.engineering":"Engineering","console.role.executive":"Executive","console.role.hr":"HR","console.role.sales":"Sales","console.state.loading":"Loading...","console.state.empty":"No data","console.state.backendDown":"Backend unreachable","console.state.partialData":"Partial data loaded","console.state.stale":"Data stale","console.state.unauthorized":"Unauthorized","console.action.refresh":"Refresh","console.action.approve":"Approve","console.action.reject":"Reject","console.action.retry":"Retry","console.action.create":"Create","console.skill.capabilityLevel":"Capability Level","console.skill.enable":"Enable","console.skill.disable":"Disable","console.skill.core":"Core","console.skill.standard":"Standard","console.skill.specialized":"Specialized","console.skill.experimental":"Experimental","console.report.dailyTitle":"Daily Report","console.report.sourceLinks":"Source Links","console.report.noEvents":"No events today"},tr:{"nav.dashboard":"Kontrol Paneli","nav.plans":"Planlar","nav.execution":"Yürütme","nav.governance":"Yönetişim","nav.scheduler":"Zamanlayıcı","nav.skills":"Beceriler","nav.agent":"Ajan","nav.tools":"Araçlar","nav.cron":"Cron Görevleri","nav.integrations":"Entegrasyonlar","nav.memory":"Hafıza","nav.config":"Yapılandırma","nav.cost":"Maliyet Takibi","nav.logs":"Kayıtlar","nav.devtools":"Araçlar","nav.swimlane":"Yüzme Şeridi","nav.doctor":"Doktor","nav.canvas":"Tuval","planb.nav.chat":"Sohbet","planb.nav.browser":"AI Tarayıcı","planb.nav.dashboard":"Kontrol Paneli","planb.nav.settings":"Ayarlar","planb.nav.more":"Daha Fazla","planb.layout.switch_to_wide":"Masaüstüne Geç","planb.layout.switch_to_compact":"Kompakta Geç","planb.layout.pop_out":"Pencereyi Ayır","planb.browser.title":"AI Tarayıcı","planb.browser.subtitle":"SuperRPA tarayıcı otomasyonunu başlat","planb.browser.launch":"Tarayıcıyı Başlat","planb.browser.url_placeholder":"https://example.com","planb.browser.active_sessions":"Aktif Oturumlar","planb.browser.no_sessions":"Aktif tarayıcı oturumu yok.","planb.browser.status_launching":"Başlatılıyor","planb.browser.status_running":"Çalışıyor","planb.browser.status_idle":"Boşta","planb.browser.status_error":"Hata","planb.browser.status_stopped":"Durduruldu","planb.browser.launch_error":"Tarayıcı başlatılamadı","planb.browser.close_error":"Oturum kapatılamadı","planb.browser.backend_not_configured":"SuperRPA yapılandırılmamış.","planb.chat.welcome":"Bugün size nasıl yardımcı olabilirim?","planb.chat.placeholder":"Bir şey sor...","planb.chat.sessions":"Sohbet Geçmişi","planb.chat.new_chat":"Yeni Sohbet","planb.chat.no_sessions":"Sohbet geçmişi yok","planb.chat.untitled":"Başlıksız","planb.chat.thought":"Düşünce","planb.chat.chip_browse":"Webde Gezin","planb.chat.chip_code":"Kod Yaz","planb.chat.chip_analyze":"Veri Analizi","planb.chat.chip_plan":"Proje Planla","planb.chat.regenerate":"Yeniden Oluştur","planb.settings.quick":"Hızlı Ayarlar","planb.settings.advanced":"Gelişmiş","planb.settings.quick_hint":"Hızlı ayarlar yakında gelecek. Şimdilik gelişmiş düzenleyiciyi kullanın.","planb.settings.open_advanced":"Gelişmiş Düzenleyiciyi Aç","dashboard.title":"Kontrol Paneli","dashboard.provider":"Sağlayıcı","dashboard.model":"Model","dashboard.uptime":"Çalışma Süresi","dashboard.temperature":"Sıcaklık","dashboard.gateway_port":"Ağ Geçidi Portu","dashboard.locale":"Dil","dashboard.memory_backend":"Hafıza Motoru","dashboard.paired":"Eşleştirilmiş","dashboard.channels":"Kanallar","dashboard.health":"Sağlık","dashboard.status":"Durum","dashboard.overview":"Genel Bakış","dashboard.system_info":"Sistem Bilgisi","dashboard.quick_actions":"Hızlı İşlemler","dashboard.provider_model":"Sağlayıcı / Model","dashboard.since_last_restart":"Son Yeniden Başlatmadan Beri","dashboard.paired_yes":"Evet","dashboard.paired_no":"Hayır","dashboard.cost_overview":"Maliyet Genel Bakışı","dashboard.active_channels":"Aktif Kanallar","dashboard.filter_active":"Aktif","dashboard.filter_all":"Tümü","dashboard.no_active_channels":"Aktif kanal yok","dashboard.component_health":"Bileşen Sağlığı","dashboard.load_error":"Kontrol paneli yüklenemedi","dashboard.session_label":"Oturum","dashboard.daily_label":"Günlük","dashboard.monthly_label":"Aylık","dashboard.total_tokens_label":"Toplam Token","dashboard.requests_label":"İstekler","dashboard.no_channels":"Kanal yapılandırılmamış","dashboard.active":"Aktif","dashboard.inactive":"Aktif Değil","dashboard.no_components":"Bileşen raporlamıyor","dashboard.restarts":"Yeniden Başlatmalar","dashboard.tab_overview":"Genel Bakış","dashboard.tab_sessions":"Oturumlar","dashboard.tab_channels":"Kanallar","dashboard.sessions_title":"Aktif Oturumlar","dashboard.no_sessions":"Aktif oturum yok","dashboard.session_id":"Oturum Kimliği","dashboard.session_channel":"Kanal","dashboard.session_started":"Başlangıç","dashboard.session_last_activity":"Son Etkinlik","dashboard.session_status":"Durum","dashboard.session_messages":"Mesajlar","dashboard.session_details":"Oturum Ayrıntıları","dashboard.session_history":"Geçmişi Görüntüle","dashboard.channels_title":"Kanal Durumu","dashboard.no_channels_detail":"Kanal ayrıntısı yok","dashboard.channel_type":"Tür","dashboard.channel_messages":"Mesajlar","dashboard.channel_last_message":"Son Mesaj","dashboard.channel_config":"Yapılandırma","dashboard.channel_enabled":"Etkin","dashboard.channel_disabled":"Devre Dışı","dashboard.loading_sessions":"Oturumlar yükleniyor...","dashboard.loading_channels":"Kanallar yükleniyor...","dashboard.load_sessions_error":"Oturumlar yüklenemedi","dashboard.load_channels_error":"Kanallar yüklenemedi","dashboard.never":"Hiç","agent.title":"Ajan Sohbeti","agent.send":"Gönder","agent.placeholder":"Bir mesaj yazın...","agent.start_conversation":"Sohbeti başlatmak için mesaj gönderin","agent.type_message":"Bir mesaj yazın...","agent.connecting":"Bağlanıyor...","agent.connected":"Bağlandı","agent.disconnected":"Bağlantı kesildi","agent.reconnecting":"Yeniden bağlanıyor...","agent.thinking":"Düşünüyor...","agent.tool_call":"Araç Çağrısı","agent.tool_result":"Araç Sonucu","agent.connection_error":"Bağlantı hatası. Yeniden bağlanmaya çalışılıyor...","agent.tool_call_prefix":"[Araç Çağrısı]","agent.tool_result_prefix":"[Araç Sonucu]","agent.error_prefix":"[Hata]","agent.unknown_error":"Bilinmeyen hata","agent.send_error":"Mesaj gönderilemedi. Lütfen tekrar deneyin.","agent.copy_message":"Mesajı kopyala","agent.connected_status":"Bağlandı","agent.disconnected_status":"Bağlantı kesildi","tools.title":"Mevcut Araçlar","tools.name":"Ad","tools.description":"Açıklama","tools.parameters":"Parametreler","tools.search":"Araç ara...","tools.empty":"Araç bulunamadı.","tools.count":"Toplam araç","tools.agent_tools":"Ajan Araçları","tools.cli_tools":"CLI Araçları","tools.parameter_schema":"Parametre Şeması","tools.path":"Yol","tools.version":"Sürüm","tools.category":"Kategori","tools.load_error":"Araçlar yüklenemedi","cron.title":"Zamanlanmış Görevler","cron.scheduled_tasks":"Zamanlanmış Görevler","cron.add":"Görev Ekle","cron.add_job":"Görev Ekle","cron.add_modal_title":"Cron Görevi Ekle","cron.delete":"Sil","cron.enable":"Etkinleştir","cron.disable":"Devre Dışı Bırak","cron.name":"Ad","cron.name_optional":"Ad (isteğe bağlı)","cron.command":"Komut","cron.command_required":"Komut","cron.schedule":"Zamanlama","cron.schedule_required":"Zamanlama","cron.next_run":"Sonraki Çalıştırma","cron.last_run":"Son Çalıştırma","cron.last_status":"Son Durum","cron.enabled":"Etkin","cron.enabled_status":"Etkin","cron.disabled_status":"Devre Dışı","cron.empty":"Zamanlanmış görev bulunamadı.","cron.confirm_delete":"Bu görevi silmek istediğinizden emin misiniz?","cron.load_error":"Cron görevleri yüklenemedi","cron.validation_error":"Zamanlama ve komut gereklidir.","cron.add_error":"Görev eklenemedi","cron.delete_error":"Görev silinemedi","cron.cancel":"İptal","cron.adding":"Ekleniyor...","cron.id":"ID","cron.actions":"İşlemler","cron.loading_run_history":"Çalıştırma geçmişi yükleniyor...","cron.load_run_history_error":"Çalıştırma geçmişi yüklenemedi","cron.no_runs":"Henüz çalıştırma kaydı yok.","cron.recent_runs":"Son Çalıştırmalar","cron.yes":"Evet","cron.no":"Hayır","cron.edit":"Düzenle","cron.edit_modal_title":"Cron Görevini Düzenle","cron.edit_error":"Görev güncellenemedi","cron.saving":"Kaydediliyor...","cron.save":"Kaydet","integrations.title":"Entegrasyonlar","integrations.available":"Mevcut","integrations.active":"Aktif","integrations.coming_soon":"Yakında","integrations.category":"Kategori","integrations.status":"Durum","integrations.search":"Entegrasyon ara...","integrations.empty":"Entegrasyon bulunamadı.","integrations.activate":"Etkinleştir","integrations.deactivate":"Devre Dışı Bırak","integrations.load_error":"Entegrasyonlar yüklenemedi","integrations.all":"Tümü","integrations.status_active":"Aktif","integrations.status_available":"Mevcut","integrations.status_coming_soon":"Yakında","memory.title":"Hafıza Deposu","memory.memory_title":"Hafıza","memory.search":"Hafıza ara...","memory.search_placeholder":"Hafıza girişleri ara...","memory.add":"Hafıza Ekle","memory.add_memory":"Hafıza Ekle","memory.add_modal_title":"Hafıza Ekle","memory.delete":"Sil","memory.key":"Anahtar","memory.key_required":"Anahtar","memory.content":"İçerik","memory.content_required":"İçerik","memory.category":"Kategori","memory.category_optional":"Kategori (isteğe bağlı)","memory.timestamp":"Zaman Damgası","memory.session":"Oturum","memory.score":"Puan","memory.empty":"Hafıza girişi bulunamadı.","memory.confirm_delete":"Bu hafıza girişini silmek istediğinizden emin misiniz?","memory.all_categories":"Tüm Kategoriler","memory.search_button":"Ara","memory.load_error":"Hafıza yüklenemedi","memory.saving":"Kaydediliyor...","memory.validation_error":"Anahtar ve içerik gereklidir.","memory.store_error":"Hafıza kaydedilemedi","memory.delete_error":"Hafıza silinemedi","memory.delete_confirm":"Sil?","memory.yes":"Evet","memory.no":"Hayır","memory.cancel":"İptal","config.title":"Yapılandırma","config.save":"Kaydet","config.saving":"Kaydediliyor...","config.reset":"Sıfırla","config.saved":"Yapılandırma başarıyla kaydedildi.","config.error":"Yapılandırma kaydedilemedi.","config.loading":"Yapılandırma yükleniyor...","config.editor_placeholder":"TOML yapılandırması...","config.configuration_title":"Yapılandırma","config.sensitive_title":"Hassas alanlar gizlendi","config.sensitive_hint":"API anahtarları, belirteçler ve parolalar güvenlik için gizlendi. Maskeli bir alanı güncellemek için, tüm maskeli değeri yeni değerinizle değiştirin.","config.save_success":"Yapılandırma başarıyla kaydedildi.","config.save_error":"Yapılandırma kaydedilemedi","config.toml_label":"TOML Yapılandırması","config.lines":"satır","cost.title":"Maliyet Takibi","cost.session":"Oturum Maliyeti","cost.daily":"Günlük Maliyet","cost.monthly":"Aylık Maliyet","cost.total_tokens":"Toplam Token","cost.request_count":"İstek Sayısı","cost.by_model":"Modele Göre Maliyet","cost.model":"Model","cost.tokens":"Token","cost.requests":"İstekler","cost.usd":"Maliyet (USD)","cost.load_error":"Maliyet verileri yüklenemedi","cost.session_cost":"Oturum Maliyeti","cost.daily_cost":"Günlük Maliyet","cost.monthly_cost":"Aylık Maliyet","cost.total_requests":"Toplam İstek","cost.token_statistics":"Token İstatistikleri","cost.avg_tokens_per_request":"Ortalama Token / İstek","cost.cost_per_1k_tokens":"1K Token Başına Maliyet","cost.model_breakdown":"Model Detayı","cost.no_model_data":"Model verisi mevcut değil.","cost.cost":"Maliyet","cost.share":"Pay","logs.title":"Canlı Kayıtlar","logs.live_logs":"Canlı Kayıtlar","logs.clear":"Temizle","logs.pause":"Duraklat","logs.resume":"Devam Et","logs.filter":"Kayıtları filtrele...","logs.filter_label":"Filtre","logs.empty":"Kayıt girişi bulunamadı.","logs.connected":"Bağlandı","logs.disconnected":"Bağlantı kesildi","logs.events":"olay","logs.jump_to_bottom":"En alta atla","logs.paused_hint":"Kayıt akışı duraklatıldı.","logs.waiting_hint":"Olay bekleniyor...","doctor.title":"Sistem Tanıları","doctor.diagnostics_title":"Tanılar","doctor.run":"Tanı Çalıştır","doctor.run_diagnostics":"Tanı Çalıştır","doctor.running":"Tanı çalıştırılıyor...","doctor.running_btn":"Çalıştırılıyor...","doctor.running_desc":"Tanı çalıştırılıyor...","doctor.running_hint":"Bu birkaç saniye sürebilir.","doctor.ok":"Tamam","doctor.warn":"Uyarı","doctor.error":"Hata","doctor.severity":"Şiddet","doctor.category":"Kategori","doctor.message":"Mesaj","doctor.empty":"Henüz tanı çalıştırılmadı.","doctor.summary":"Tanı Özeti","doctor.issues_found":"Sorunlar Bulundu","doctor.warnings_summary":"Uyarılar","doctor.all_clear":"Her Şey Yolunda","doctor.system_diagnostics":"Sistem Tanıları","doctor.empty_hint":'ZeroClaw kurulumunuzu kontrol etmek için "Tanı Çalıştır" düğmesine tıklayın.',"auth.pair":"Cihaz Eşleştir","auth.pairing_code":"Eşleştirme Kodu","auth.pair_button":"Eşleştir","auth.logout":"Çıkış Yap","auth.pairing_success":"Eşleştirme başarılı!","auth.pairing_failed":"Eşleştirme başarısız. Lütfen tekrar deneyin.","auth.enter_code":"Akıllı birine bağlanmak için eşleştirme kodunuzu girin.","common.loading":"Yükleniyor...","common.error":"Bir hata oluştu.","common.retry":"Tekrar Dene","common.cancel":"İptal","common.confirm":"Onayla","common.save":"Kaydet","common.delete":"Sil","common.edit":"Düzenle","common.close":"Kapat","common.yes":"Evet","common.no":"Hayır","common.search":"Ara...","common.no_data":"Veri mevcut değil.","common.refresh":"Yenile","common.back":"Geri","common.actions":"İşlemler","common.name":"Ad","common.description":"Açıklama","common.status":"Durum","common.created":"Oluşturulma","common.updated":"Güncellenme","health.title":"Sistem Sağlığı","health.component":"Bileşen","health.status":"Durum","health.last_ok":"Son Başarılı","health.last_error":"Son Hata","health.restart_count":"Yeniden Başlatmalar","health.pid":"İşlem Kimliği","health.uptime":"Çalışma Süresi","health.updated_at":"Son Güncelleme","settings.title":"Ayarlar","settings.tab.appearance":"Görünüm","settings.tab.typography":"Tipografi","settings.appearance":"Görünüm","settings.typography":"Tipografi","settings.fontUi":"Arayüz Yazı Tipi","settings.fontMono":"Kod Yazı Tipi","settings.fontSize":"Arayüz Boyutu","settings.fontMonoSize":"Kod Boyutu","settings.preview":"Önizleme","settings.previewText":"Tembel köpek üzerinde hızlı kahverengi tilki zıplar.","settings.fontNote":"Yazı tipi değişiklikleri sayfa yeniden yüklendikten sonra geçerli olur.","settings.language":"Dil","theme.mode":"Tema Modu","theme.accent":"Vurgu Rengi","theme.system":"Sistem","theme.dark":"Koyu","theme.light":"Açık","theme.oled":"OLED Siyah","console.nav.commandDeck":"Command Deck","console.nav.missionCenter":"Mission Center","console.nav.skillLibrary":"Skill Library","console.nav.dailyReport":"Daily Report","console.nav.settings":"Settings","console.role.finance":"Finance","console.role.engineering":"Engineering","console.role.executive":"Executive","console.role.hr":"HR","console.role.sales":"Sales","console.state.loading":"Loading...","console.state.empty":"No data","console.state.backendDown":"Backend unreachable","console.state.partialData":"Partial data loaded","console.state.stale":"Data stale","console.state.unauthorized":"Unauthorized","console.action.refresh":"Refresh","console.action.approve":"Approve","console.action.reject":"Reject","console.action.retry":"Retry","console.action.create":"Create","console.skill.capabilityLevel":"Capability Level","console.skill.enable":"Enable","console.skill.disable":"Disable","console.skill.core":"Core","console.skill.standard":"Standard","console.skill.specialized":"Specialized","console.skill.experimental":"Experimental","console.report.dailyTitle":"Daily Report","console.report.sourceLinks":"Source Links","console.report.noEvents":"No events today"}};let Hx="zh";function dd(n){var i;return((i=ng[Hx])==null?void 0:i[n])??ng.en[n]??n}const cc=["qimingclaw-client-readiness","qimingclaw-remote-task-ingress","qimingclaw-daily-report"],Yx=[{key:"all",label:"全部委托"},{key:"daily",label:"日常任务"},{key:"weekly",label:"周任务"},{key:"monthly",label:"月度任务"},{key:"adhoc",label:"临时任务"}];function fd(n){const i=typeof n.updated_at=="string"?n.updated_at:typeof n.created_at=="string"?n.created_at:"",r=i?new Date(i).getTime():0;return Number.isFinite(r)?r:0}function vl(n){if(!n)return"";const i=new Date(n);return Number.isNaN(i.getTime())?"":[i.getFullYear(),String(i.getMonth()+1).padStart(2,"0"),String(i.getDate()).padStart(2,"0")].join("-")}function pl(){return vl(new Date().toISOString())}function lg(n,i){const r=n?new Date(`${n}T12:00:00`):new Date;return Number.isNaN(r.getTime())?pl():(r.setDate(r.getDate()+i),vl(r.toISOString()))}function zd(n){const i=`${n.title} ${n.id}`.match(/(?:^|\D)(\d{1,2})[::](\d{2})(?:\D|$)/);if(!i)return null;const r=Number(i[1]),o=Number(i[2]);return!Number.isInteger(r)||!Number.isInteger(o)||r>23||o>59?null:{text:`${String(r).padStart(2,"0")}:${String(o).padStart(2,"0")}`,minutes:r*60+o}}function Rd(n){return n.steps.flatMap(i=>i.tasks.flatMap(r=>[r.startedAt,r.finishedAt])).filter(i=>!!i)}function Gx(n,i){return Rd(n).map(vl).filter(Boolean).includes(i)||zd(n)?!0:[n.updatedAt,n.createdAt].map(vl).includes(i)}function Qx(n){return zd(n)&&`${n.title}`.trim().toLowerCase()||n.id}function Xx(n,i){return Rd(n).some(r=>vl(r)===i)}function ig(n,i){const r=Xx(n,i)?1e4:0,o=cc.includes(n.id)?1e3:0,d=[n.updatedAt,n.createdAt].map(vl).includes(i)?100:0;return r+o+d+fd({updated_at:n.updatedAt||"",created_at:n.createdAt||""})/1e13}function Kx(n,i){const r=new Map;for(const o of n){const d=Qx(o),m=r.get(d);(!m||ig(o,i)>ig(m,i))&&r.set(d,o)}return Array.from(r.values())}function sg(n,i){const r=zd(n);if(r)return r.minutes;const o=Rd(n).filter(d=>vl(d)===i).sort();if(o[0]){const d=new Date(o[0]);return d.getHours()*60+d.getMinutes()}return 1440}function Zx(n){const i=`${n.id} ${n.title} ${n.objective}`.toLowerCase();return i.includes("month")||i.includes("monthly")||i.includes("月")?"monthly":i.includes("week")||i.includes("weekly")||i.includes("周")?"weekly":i.includes("临时")||i.includes("adhoc")||i.includes("hotlist")||i.includes("monitor")?"adhoc":"daily"}async function ly(n,i,r={}){const o=Date.now(),d=await Zg({command_kind:n,context_refs:i,payload:{source:"digital-mission-center",...r},correlation_id:`mission-${n}-${o}`,idempotency_key:`mission-${n}-${Object.values(i).join("-")||"new"}-${o}`});if(!d.accepted)throw new Error(d.message||`command 未被接受:${d.command_id||n}`);return d}async function ba(n,i,r={}){return ly(i,{plan_id:n},r)}async function rg(n){const i=n.sourceIds.planId;if(!i)return null;const r=n.status.toLowerCase();if(r==="draft")await ba(i,"submit_plan",{requested_action:"mission_dispatch"}),await ba(i,"approve_plan",{requested_action:"mission_dispatch"});else if(r==="reviewing")await ba(i,"approve_plan",{requested_action:"mission_dispatch"});else if(!["approved","active","running"].includes(r))return await ba(i,"amend_plan",{requested_action:"reopen_for_execution",summary:"数字员工任务中心请求重新执行任务"}),null;return await ba(i,"activate_plan",{requested_action:"mission_dispatch"}),i}function Vx(n){const i=n.steps.map((r,o)=>{const d=new Set;r.preferredSkills.forEach(p=>{p.trim()&&d.add(p)}),r.tasks.forEach(p=>{var v;(v=p.assignedSkillId)!=null&&v.trim()&&d.add(p.assignedSkillId)});const m=[r.description,...r.tasks.map(p=>p.description),r.title,n.objective,n.title].find(p=>typeof p=="string"&&p.trim());return{title:r.title||`${n.title} 第 ${o+1} 步`,description:m||r.title||n.objective||n.title,skills:Array.from(d),depends_on:o===0?[]:[`step-${o}`]}}).filter(r=>r.skills.length>0);if(i.length===0)throw new Error("当前任务没有可复用的 skill,不能创建真实重新执行计划。");return i}function iy(n){return`${n.replace(/(\s*重新执行)+$/u,"").trim()||n} 重新执行`}async function Jx(n){var d,m;const i=await ly("create_plan",{session_id:"digital-mission-center",plan_id:n.sourceIds.planId||n.id},{requested_action:"mission_restart",title:iy(n.title),description:n.objective||n.title,steps:Vx(n),original_plan_id:n.sourceIds.planId||n.id}),r=typeof((d=i.result)==null?void 0:d.plan_id)=="string"?i.result.plan_id:"";if(!r)throw new Error("重新执行计划已提交,但后端没有返回 plan_id。");const o=typeof((m=i.result)==null?void 0:m.status)=="string"?i.result.status.toLowerCase():"";return o==="draft"?(await ba(r,"submit_plan",{requested_action:"mission_restart"}),await ba(r,"approve_plan",{requested_action:"mission_restart"}),await ba(r,"activate_plan",{requested_action:"mission_restart"})):o==="reviewing"?(await ba(r,"approve_plan",{requested_action:"mission_restart"}),await ba(r,"activate_plan",{requested_action:"mission_restart"})):o==="approved"&&await ba(r,"activate_plan",{requested_action:"mission_restart"}),r}function Fx({focusMissionId:n,focusTaskId:i,focusDate:r}){const o=r||pl(),[d,m]=b.useState([]),[p,v]=b.useState(null),[h,y]=b.useState(!0),[E,S]=b.useState(!1),[k,R]=b.useState("all"),[T,L]=b.useState(()=>o),[O,G]=b.useState(!1),[I,F]=b.useState(null),[ne,ie]=b.useState(!1),[he,Z]=b.useState(!1),[ee,Te]=b.useState(null),[rt,Ze]=b.useState(null),[de,X]=b.useState(null),se=b.useRef(null),H=b.useRef(!1);b.useEffect(()=>(H.current=!0,()=>{H.current=!1}),[]);const D=b.useCallback(async()=>{y(!0),S(!1);try{const Q=await oS();if(!H.current)return[];const V=new Map,ve=Oe=>{const jt=typeof Oe.plan_id=="string"?Oe.plan_id:"";jt&&!V.has(jt)&&V.set(jt,Oe)};(Array.isArray(Q)?Q:[]).forEach(ve);const Me=cc.filter(Oe=>!V.has(Oe));if(Me.length>0){const Oe=await Promise.allSettled(Me.map(async jt=>({id:jt,plans:await Rp(jt,20)})));for(const jt of Oe)if(jt.status==="fulfilled"){const qa=jt.value.plans.find(Gn=>Gn.plan_id===jt.value.id);qa&&ve(qa)}}const Ie=cc.map(Oe=>V.get(Oe)).filter(Oe=>!!Oe),Tt=[...[...V.entries()].filter(([Oe])=>!cc.includes(Oe)).map(([,Oe])=>Oe).sort((Oe,jt)=>fd(jt)-fd(Oe)),...Ie];if(Tt.length>0){const Oe=Xp(Tt);return Z(!1),m(Oe),Oe}else{const Oe=_s();return Z(!0),m(Oe),Oe}}catch(Q){if(!H.current)return[];console.error("[MissionCenter] fetch failed:",Q);const V=_s();return Z(!0),m(V),S(!1),V}finally{H.current&&y(!1)}},[]);b.useEffect(()=>{D()},[D]),b.useEffect(()=>{L(r||pl()),G(!1)},[r]);const Y=b.useCallback(Q=>{v(Q),Ze(Q.id),window.setTimeout(()=>{var V;(V=se.current)==null||V.scrollIntoView({block:"start",inline:"nearest",behavior:"smooth"})},40)},[]),te=b.useCallback(Q=>{Y(Q),X({kind:"selected",missionId:Q.id,title:Q.title,planId:Q.sourceIds.planId})},[Y]);b.useEffect(()=>{if(!n&&!i)return;const Q=d.find(V=>V.id===n||V.sourceIds.planId===n||(i?V.sourceIds.taskIds.includes(i):!1));Q&&(R("all"),te(Q),window.setTimeout(()=>{var V;(V=document.getElementById(`mission-card-${Nc(Q.id)}`))==null||V.scrollIntoView({block:"center",behavior:"smooth"})},80))},[n,i,d,te]);const fe=b.useCallback(async Q=>{if(F(Q.id),S(!1),Te(null),he||!Q.sourceIds.planId){m(V=>Vo(V,Q.id)),v(V=>(V==null?void 0:V.id)!==Q.id?V:Vo([V],Q.id)[0]??V),window.setTimeout(()=>{H.current&&(m(V=>Jo(V,Q.id)),v(V=>(V==null?void 0:V.id)!==Q.id?V:Jo([V],Q.id)[0]??V),F(null))},1200);return}try{const V=await rg(Q),ve=await D();if(R("all"),V){const Me=ve.find(Ie=>Ie.id===V||Ie.sourceIds.planId===V);if(Me)Y(Me),X({kind:"dispatched",missionId:Me.id,title:Me.title,planId:V});else{const Ie=await Rp(V,5),ct=Xp(Ie).find(Tt=>Tt.id===V);ct?(Y(ct),X({kind:"dispatched",missionId:ct.id,title:ct.title,planId:V})):v(null)}}else v(Me=>(Me==null?void 0:Me.id)===Q.id?null:Me)}catch(V){console.error("[MissionCenter] dispatch failed:",V),S(!1),Te(V instanceof Error?V.message:"任务委托失败")}finally{F(null)}},[he,D,Y]),be=b.useCallback(async Q=>{if(F(Q.id),S(!1),Te(null),he||!Q.sourceIds.planId){await fe(Q);return}try{const V=await Jx(Q),ve=await D();R("all");const Me=ve.find(Ie=>Ie.id===V||Ie.sourceIds.planId===V);Me?(Y(Me),X({kind:"created",missionId:Me.id,title:Me.title,planId:V})):(Ze(V),X({kind:"created",missionId:V,title:iy(Q.title),planId:V}))}catch(V){console.error("[MissionCenter] restart failed:",V),S(!1),Te(V instanceof Error?V.message:"重新执行失败")}finally{F(null)}},[he,D,Y,fe]),j=T||pl(),$=Kx(O?d:d.filter(Q=>Gx(Q,j)),j),K=$.filter(Q=>Q.sourceIds.planId&&["draft","reviewing","approved"].includes(Q.status.toLowerCase())),W=b.useCallback(async()=>{if(K.length!==0){if(ie(!0),S(!1),he){let Q=0;for(const V of K.slice(0,4))window.setTimeout(()=>{H.current&&(F(V.id),m(ve=>Vo(ve,V.id)))},Q),Q+=400,window.setTimeout(()=>{H.current&&m(ve=>Jo(ve,V.id))},Q+900);window.setTimeout(()=>{H.current&&(F(null),ie(!1))},Q+1200);return}try{for(const Q of K)F(Q.id),await rg(Q);await D(),v(null)}catch(Q){console.error("[MissionCenter] batch dispatch failed:",Q),S(!1),Te(Q instanceof Error?Q.message:"批量委托失败")}finally{F(null),ie(!1)}}},[he,D,K]),pe=(k==="all"?$:$.filter(Q=>Zx(Q)===k)).map((Q,V)=>({mission:Q,index:V})).sort((Q,V)=>{const ve=Me=>(Me.id===rt?2:0)+(Me.id===(p==null?void 0:p.id)?1:0);return ve(V.mission)-ve(Q.mission)||sg(Q.mission,j)-sg(V.mission,j)||Q.index-V.index}).map(({mission:Q})=>Q),ke=(de==null?void 0:de.kind)==="created"?"刚创建重新执行任务":(de==null?void 0:de.kind)==="dispatched"?"刚委托执行任务":"当前查看任务",We=Q=>Q.id!==rt?null:(de==null?void 0:de.missionId)===Q.id&&de.kind==="created"?"刚创建":(de==null?void 0:de.missionId)===Q.id&&de.kind==="dispatched"?"刚委托":"当前查看";return c.jsx("div",{className:"de-mission-center-page",children:c.jsxs("div",{className:"de-mission-center-layout",children:[c.jsx("div",{className:"de-mc-list",children:c.jsxs(ws,{children:[c.jsxs(kc,{title:"任务委托",children:[c.jsx("button",{onClick:W,className:"de-btn-primary de-btn-sm",disabled:ne||K.length===0,children:ne?"委托中...":`委托可执行任务(${K.length})`}),c.jsx("button",{onClick:D,className:"de-btn-secondary de-btn-sm",children:dd("console.action.refresh")})]}),c.jsxs("div",{className:"de-card-body",children:[he&&c.jsx("div",{className:"de-schedule-result de-schedule-result--success",style:{marginBottom:12},children:"当前没有加载到 qimingclaw 任务记录,页面暂时展示本地示例数据。"}),ee&&c.jsx("div",{className:"de-schedule-result de-schedule-result--error",style:{marginBottom:12},children:ee}),de&&c.jsxs("div",{className:"de-mission-focus-notice",children:[c.jsx("strong",{children:ke}),c.jsx("span",{children:de.title}),de.planId&&c.jsx("code",{children:de.planId})]}),c.jsxs("div",{className:"de-date-filter-row",children:[c.jsxs("label",{className:"de-date-filter-field",children:[c.jsx("span",{children:"选择日期"}),c.jsx("input",{type:"date",value:j,onChange:Q=>{G(!1),L(Q.target.value||pl())}})]}),c.jsxs("div",{className:"de-date-filter-actions","aria-label":"日期切换",children:[c.jsx("button",{type:"button",className:"de-filter-chip",onClick:()=>{G(!1),L(lg(j,-1))},children:"前一天"}),c.jsx("button",{type:"button",className:"de-filter-chip active",onClick:()=>{G(!1),L(pl())},children:"今天"}),c.jsx("button",{type:"button",className:"de-filter-chip",onClick:()=>{G(!1),L(lg(j,1))},children:"后一天"})]}),c.jsx("span",{className:"de-date-filter-summary",children:O?`全部 ${$.length} 项任务`:`${$.length} 项任务`})]}),c.jsx("div",{className:"de-filter-row",children:Yx.map(Q=>c.jsx("button",{className:`de-filter-chip ${k===Q.key?"active":""}`,onClick:()=>R(Q.key),children:Q.label},Q.key))}),h?c.jsx("div",{className:"de-loading-skeleton",style:{height:300}}):E?c.jsx("p",{className:"de-empty-text",children:dd("console.state.backendDown")}):pe.length===0?c.jsxs("div",{className:"de-mission-empty-panel",children:[c.jsx("strong",{children:"当前日期暂无任务"}),c.jsx("p",{children:"这个日期没有匹配到 qimingclaw 任务记录,可以临时查看全部任务。"}),c.jsxs("div",{className:"de-mission-empty-actions",children:[c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",onClick:()=>{G(!0),R("all")},children:"查看全部任务"}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",onClick:()=>{G(!1),L(r||pl())},children:"返回当前日期"})]})]}):c.jsx("div",{className:"de-mc-card-list",children:pe.map(Q=>c.jsx(Nx,{mission:Q,selected:(p==null?void 0:p.id)===Q.id,focusLabel:We(Q),dateFilter:j,running:I===Q.id,onSelect:te,onRun:fe,onRestart:be},Q.id))})]})]})}),c.jsx("div",{className:"de-mc-detail",ref:se,children:p?c.jsx(Bx,{mission:p,onClose:()=>v(null)}):c.jsx(ws,{children:c.jsx("div",{className:"de-card-body",children:c.jsxs("div",{className:"de-mission-empty-panel de-mission-empty-panel--detail",children:[c.jsx("strong",{children:"选择一个任务后,右侧会显示执行步骤、运行记录和交付结果。"}),c.jsx("p",{children:"任务详情会优先展示 qimingclaw 本地 Plan / Task / Run / Event 记录,以及从执行 payload 中整理出的产物线索。"})]})})})})]})})}const Wx=[{value:"all",label:"全部任务"},{value:"daily",label:"日常任务"},{value:"weekly",label:"周任务"},{value:"monthly",label:"月度任务"},{value:"adhoc",label:"临时任务"}],Ix={daily:"日常",weekly:"周",monthly:"月度",adhoc:"临时"};function sy(n){const i=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return/weekly|week|周/.test(i)?"weekly":/monthly|month|月报|月度/.test(i)?"monthly":/monitor|crawler|巡检|监控|待办|日程|日报|日终|收件箱|工作台|客户跟进/.test(i)?"daily":"adhoc"}function Io(n){const i=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return n.capabilityLevel==="specialized"||n.capabilityLevel==="experimental"||/加密|深度|分析|自动化|部署|代码|审查|调研|批量|converter|crypto|github|deploy|review|research/.test(i)}function Px(n){const i=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return/日报|周报|报表|待办|日程|巡检|客户|知识库|经营|费用|收件箱|工作台/.test(i)}function e1(n){const i=n.name,r=`${n.id} ${n.name} ${n.description} ${n.category}`.toLowerCase();return/report|报表|日报|周报|月报|汇报/.test(r)?`自动整理${i}材料,减少手工汇总和重复填报。`:/monitor|巡检|监控|预警/.test(r)?`按约定频率完成${i},及时提示异常和遗漏。`:/todo|待办|task|看板|日程/.test(r)?`帮你梳理${i},把后续处理事项集中呈现。`:/客户|crm|回访|满意/.test(r)?"汇总客户相关信息,形成可直接跟进的处理建议。":/知识|文档|制度|模板/.test(r)?"查找和核对资料内容,减少人工翻找和版本确认。":n.description}function t1(n,i,r){return n.enabled?"已学习":n.enabled?r?"需确认后学习":i?"建议学习":"可学习":"暂不使用"}function a1({skill:n,recommended:i=!1,advanced:r=!1,selected:o=!1,updating:d=!1,onSelect:m,onToggle:p}){const v=sy(n),h=t1(n,i,r);return c.jsxs("div",{id:`skill-card-${Nc(n.id)}`,className:`de-skill-card ${o?"de-skill-card--selected":""}`,role:"button",tabIndex:0,onClick:()=>m==null?void 0:m(n),onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),m==null||m(n))},children:[c.jsxs("div",{className:"de-skill-card-head",children:[c.jsx("span",{className:"de-skill-name",children:n.name}),c.jsx("span",{className:`de-skill-status ${n.enabled?"enabled":"disabled"}`,children:h})]}),c.jsx("p",{className:"de-skill-desc",children:e1(n)}),c.jsxs("div",{className:"de-skill-card-foot",children:[c.jsxs("span",{className:"de-skill-version",children:["适用任务:",Ix[v]]}),c.jsx("button",{className:`de-skill-btn ${n.enabled?"de-skill-btn--danger":""}`,disabled:d,title:n.enabled?"暂时停用此技能,后续路由不会选择它。":"恢复使用此技能。",onClick:y=>{y.stopPropagation(),d||p==null||p(n)},children:d?"处理中...":n.enabled?"暂不使用":"恢复使用"})]})]})}function n1({focusSkillId:n}){const[i,r]=b.useState([]),[o,d]=b.useState(!0),[m,p]=b.useState(!1),[v,h]=b.useState(""),[y,E]=b.useState("all"),[S,k]=b.useState(n??null),[R,T]=b.useState(null),[L,O]=b.useState(null),G=b.useRef(!1);b.useEffect(()=>(G.current=!0,()=>{G.current=!1}),[]);const I=b.useCallback(async()=>{d(!0),p(!1);try{const H=await mS();if(!G.current)return;r(Array.isArray(H)&&H.length>0?mx(H):Jp())}catch(H){if(!G.current)return;console.error("[SkillLibrary] fetch failed:",H),r(Jp()),p(!1)}finally{G.current&&d(!1)}},[]);b.useEffect(()=>{I()},[I]),b.useEffect(()=>{n&&(k(n),E("all"),h(""),window.setTimeout(()=>{var H;(H=document.getElementById(`skill-card-${Nc(n)}`))==null||H.scrollIntoView({block:"center",behavior:"smooth"})},80))},[n,i.length]);const F=b.useCallback(async H=>{const D=!H.enabled;T(H.id),O(null);try{const Y=await hS(H.id,D);if(!Y.ok)throw new Error(Y.error||"技能状态变更失败");r(te=>te.map(fe=>fe.id===H.id?{...fe,enabled:D}:fe)),k(H.id)}catch(Y){O(Y instanceof Error?Y.message:"技能状态变更失败")}finally{T(null)}},[]),ne=i.filter(H=>y==="all"||sy(H)===y).filter(H=>!v||H.name.includes(v)||H.description.includes(v)||H.category.includes(v)),ie=ne.filter(Io),he=new Set(ie.map(H=>H.id)),Z=ne.filter(H=>H.enabled&&!he.has(H.id)),ee=ne.filter(H=>!H.enabled&&Px(H)&&!Io(H)),Te=ne.filter(H=>!H.enabled&&!Io(H)),rt=(ee.length>0?ee:Te).slice(0,4),Ze=new Set(rt.map(H=>H.id)),de=Te.filter(H=>!Ze.has(H.id)),X=[{key:"recommended",title:"推荐学习",hint:"优先补齐高频工作能力,适合让数字员工尽快接手重复事务。",skills:rt,emptyText:"暂无推荐学习项。"},{key:"learnable",title:"可学习技能",hint:"可纳入数字员工日常工作的业务能力,学习入口待接入后启用。",skills:de,emptyText:"当前没有可学习技能。"},{key:"learned",title:"已学技能",hint:"数字员工已经掌握并可被业务场景调用的能力。",skills:Z,emptyText:"当前还没有已学习技能。"},{key:"advanced",title:"高级技能",hint:"适合有明确边界或需要确认后再交给数字员工处理的能力。",skills:ie,emptyText:"暂无高级技能。"}],se=H=>c.jsxs("section",{style:{display:"grid",gap:10},children:[c.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12},children:[c.jsxs("div",{children:[c.jsx("h3",{style:{margin:0,fontSize:16,color:"var(--de-text-primary)"},children:H.title}),c.jsx("p",{style:{margin:"4px 0 0",fontSize:12,color:"var(--de-text-muted)"},children:H.hint})]}),c.jsxs("span",{className:"de-capability-badge de-capability-standard",children:[H.skills.length," 项"]})]}),H.skills.length===0?c.jsx("p",{className:"de-empty-text",style:{margin:0},children:H.emptyText}):c.jsx("div",{className:"de-skill-grid",children:H.skills.map(D=>c.jsx(a1,{skill:D,recommended:H.key==="recommended",advanced:H.key==="advanced",selected:S===D.id,updating:R===D.id,onSelect:Y=>k(Y.id),onToggle:F},`${H.key}-${D.id}`))})]},H.key);return c.jsx("div",{style:{padding:"14px 18px"},children:c.jsxs(ws,{children:[c.jsx(kc,{title:"学习技能",children:c.jsx("button",{onClick:I,className:"de-btn-secondary de-btn-sm",children:"刷新"})}),c.jsxs("div",{className:"de-card-body",children:[L&&c.jsx("div",{className:"de-schedule-result de-schedule-result--error",style:{marginBottom:12},children:L}),c.jsxs("div",{className:"de-skill-toolbar",children:[c.jsx("input",{type:"text",className:"de-input",placeholder:"搜索业务能力...",value:v,onChange:H=>h(H.target.value)}),c.jsx("div",{className:"de-filter-row",children:Wx.map(H=>c.jsx("button",{className:`de-filter-chip ${y===H.value?"active":""}`,onClick:()=>E(H.value),children:H.label},H.value))})]}),o?c.jsx("div",{className:"de-loading-skeleton",style:{height:300}}):m?c.jsx("p",{className:"de-empty-text",children:"服务暂不可用,已保留本地示例供预览。"}):ne.length===0&&i.length>0?c.jsx("p",{className:"de-empty-text",children:"无匹配技能,请调整搜索或筛选条件"}):ne.length===0?c.jsx("p",{className:"de-empty-text",children:"暂无可展示的学习技能。"}):c.jsx("div",{style:{display:"grid",gap:18},children:X.map(se)})]})]})})}const l1={display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12},Po={border:"1px solid var(--de-glass-border-lighter)",borderRadius:10,padding:"12px 14px",background:"linear-gradient(180deg, rgba(244,250,255,0.82), rgba(235,246,255,0.58))"};function i1(){const n=new Date;return[n.getFullYear(),String(n.getMonth()+1).padStart(2,"0"),String(n.getDate()).padStart(2,"0")].join("-")}function s1(n){return(n==null?void 0:n.status)==="ready"?"已生成":(n==null?void 0:n.status)==="generating"?"生成中":(n==null?void 0:n.status)==="failed"?"生成失败":"待生成"}function r1(n){return(n==null?void 0:n.status)==="ready"?"de-report-badge--ready":"de-report-badge--waiting"}function c1(n){return n?n.generated_by==="ai"?`AI 已生成日报${n.model?`:${n.model}`:""}`:"AI 不可用时已使用规则兜底生成日报":"AI 将基于当天任务和运行明细生成日报"}function u1(n){if(!n)return[];const i=n.duties.filter(r=>r.selected).map(r=>r.id);return i.length>0?i:n.duties.filter(r=>r.implemented).map(r=>r.id)}function ry(n){if(!n)return"暂未生成";const i=new Date(n);return Number.isNaN(i.getTime())?n:i.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}function o1(n,i){const r=new Blob([i],{type:"text/plain;charset=utf-8"}),o=URL.createObjectURL(r),d=document.createElement("a");d.href=o,d.download=n,document.body.appendChild(d),d.click(),d.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}function d1(n){return`qimingclaw-digital-report-${n}.txt`}function f1(n,i,r,o){return[i.title||`${n} 数字员工日报`,`日期:${n}`,`生成时间:${ry(i.generated_at)}`,`生成来源:${i.generated_by==="ai"?"AI":"qimingclaw adapter"}`,"","## 摘要",i.summary||"暂无摘要。","","## 指标",`任务总数:${i.totals.task_count}`,`执行次数:${i.totals.execution_count}`,`成功次数:${i.totals.success_count}`,`失败次数:${i.totals.failure_count}`,`运行中:${i.totals.running_count??0}`,"","## 任务汇总",...r.length>0?r.map(d=>`- ${d.title}:${d.latest_status_label},执行 ${d.total_count} 次,成功 ${d.success_count},失败 ${d.failure_count}。${d.ai_summary||d.business_summary||""}`):["暂无任务汇总。"],"","## 运行明细",...o.length>0?o.map(d=>`- ${d.time||"--:--"} ${d.task_name} / ${d.step_name||d.operation_name||"任务执行"}:${d.status_label},${d.business_detail}`):["暂无运行明细。"],"","## 详情",...(i.detail_lines??[]).length>0?i.detail_lines:["暂无详情。"]].join(` `)}function m1({sections:n}){return n.length===0?c.jsx("p",{className:"de-empty-text",style:{padding:"18px 0 6px"},children:"今天还没有可汇总的任务。"}):c.jsx("div",{className:"de-task-summary-grid","aria-label":"日报任务汇总",children:n.map(i=>c.jsxs("div",{className:`de-task-summary-card de-live-feed-row--${i.latest_status_tone||"info"}`,children:[c.jsx("span",{className:"de-task-summary-title",children:i.title}),c.jsx("span",{className:"de-badge de-badge-info",children:i.latest_status_label}),c.jsxs("strong",{children:["执行次数 ",i.total_count]}),c.jsxs("small",{children:["成功次数 ",i.success_count," · 失败次数 ",i.failure_count]}),c.jsx("em",{children:i.ai_summary||i.business_summary})]},i.id))})}function h1({details:n}){return n.length===0?c.jsx("p",{className:"de-empty-text",style:{padding:"18px 0 6px"},children:"任务执行后,这里会展示时间、任务、步骤和执行情况。"}):c.jsxs("div",{className:"de-run-detail-list de-run-detail-list-scroll","aria-label":"日报运行明细",children:[c.jsxs("div",{className:"de-run-detail-row de-run-detail-row--head",children:[c.jsx("span",{children:"时间"}),c.jsx("span",{children:"任务名称"}),c.jsx("span",{children:"步骤名称"}),c.jsx("span",{children:"执行状态"}),c.jsx("span",{children:"执行情况"})]}),n.map(i=>c.jsxs("div",{className:`de-run-detail-row de-live-feed-row--${i.status_tone||"info"}`,children:[c.jsx("span",{children:i.time||"--:--"}),c.jsx("strong",{children:i.task_name}),c.jsx("em",{children:i.step_name||i.operation_name||"任务执行"}),c.jsx("i",{className:"de-badge de-badge-info",children:i.status_label}),c.jsx("span",{children:i.business_detail})]},i.id))]})}function p1({focusSection:n}){const i=b.useMemo(()=>i1(),[]),[r,o]=b.useState(null),[d,m]=b.useState("18:00"),[p,v]=b.useState(!0),[h,y]=b.useState(null),[E,S]=b.useState(null),k=b.useRef(!1),R=(r==null?void 0:r.source)==="live",T=R?(r==null?void 0:r.daily_report)??null:null,L=R?(T==null?void 0:T.task_sections)??(r==null?void 0:r.execution_summaries)??[]:[],O=R?(r==null?void 0:r.run_details)??[]:[],G=R?null:(r==null?void 0:r.demo_reason)??"当前没有真实运行投影,日报区域暂不展示兜底数据。",I=(T==null?void 0:T.totals)??{task_count:L.length,execution_count:L.reduce((Z,ee)=>Z+ee.total_count,0),success_count:L.reduce((Z,ee)=>Z+ee.success_count,0),failure_count:L.reduce((Z,ee)=>Z+ee.failure_count,0),running_count:L.reduce((Z,ee)=>Z+ee.running_count,0)},F=b.useCallback(async()=>{var Z;v(!0),S(null);try{const ee=await ic(i);if(!k.current)return;o(ee),m(ee.source==="live"&&((Z=ee.daily_report)==null?void 0:Z.report_schedule_time)||"18:00")}catch(ee){if(!k.current)return;S(ee instanceof Error?ee.message:"日报数据加载失败")}finally{k.current&&v(!1)}},[i]);b.useEffect(()=>(k.current=!0,F(),()=>{k.current=!1}),[F]),b.useEffect(()=>{!n||p||window.setTimeout(()=>{var Z;(Z=document.getElementById(`report-section-${n}`))==null||Z.scrollIntoView({block:"center",behavior:"smooth"})},80)},[n,p]);const ne=b.useCallback(async()=>{var Z;y("update_report_schedule"),S(null);try{const ee=await gl({action:"update_report_schedule",date:i,report_schedule_time:d});if(!k.current)return;o(ee),m(ee.source==="live"&&((Z=ee.daily_report)==null?void 0:Z.report_schedule_time)||d),S("日报生成时间已更新。")}catch(ee){if(!k.current)return;S(ee instanceof Error?ee.message:"日报生成时间设置失败")}finally{k.current&&y(null)}},[d,i]),ie=b.useCallback(async()=>{var Z;y("generate_daily_report"),S(null);try{const ee=await gl({action:"generate_daily_report",date:i,duty_ids:R?u1(r):[],report_schedule_time:d});if(!k.current)return;o(ee),m(ee.source==="live"&&((Z=ee.daily_report)==null?void 0:Z.report_schedule_time)||d),S("日报已生成,可下载本地文本。")}catch(ee){if(!k.current)return;S(ee instanceof Error?ee.message:"日报生成失败")}finally{k.current&&y(null)}},[R,r,d,i]),he=b.useCallback(()=>{!T||T.status!=="ready"||o1(d1(i),f1(i,T,L,O))},[T,O,L,i]);return c.jsx("div",{style:{padding:"14px 18px"},children:c.jsxs(ws,{children:[c.jsx(kc,{title:"日报生成",children:c.jsx("span",{className:"de-card-meta-text",children:i})}),c.jsx("div",{className:"de-card-body",children:p?c.jsx("div",{className:"de-loading-skeleton",style:{height:420}}):c.jsxs(c.Fragment,{children:[c.jsxs("section",{id:"report-section-today",className:"de-report-summary",style:{marginBottom:12},children:[c.jsxs("div",{className:"de-report-summary-head",children:[c.jsxs("div",{className:"de-report-summary-title-row",children:[c.jsx("h3",{children:(T==null?void 0:T.title)||"数字员工日报"}),c.jsx("p",{children:c1(T)})]}),c.jsx("span",{className:`de-report-badge ${r1(T)}`,children:s1(T)})]}),c.jsxs("div",{className:"de-report-summary-body",children:[c.jsxs("div",{className:"de-report-schedule-row",children:[c.jsxs("label",{children:[c.jsx("span",{children:"生成时间"}),c.jsx("input",{type:"time",value:d,onChange:Z=>m(Z.target.value||"18:00")})]}),c.jsx("button",{type:"button",className:"de-btn-secondary de-btn-sm",disabled:h==="update_report_schedule",onClick:()=>{ne()},children:"设置时间"}),c.jsx("button",{type:"button",className:"de-btn-primary de-btn-sm",disabled:h==="generate_daily_report",onClick:()=>{ie()},children:h==="generate_daily_report"?"生成中...":"生成日报"}),c.jsxs("button",{type:"button",className:"de-btn-secondary de-btn-sm de-report-download-btn",disabled:!(T!=null&&T.pdf_available),onClick:he,title:T!=null&&T.pdf_available?"下载本地日报文本":"生成日报后可下载本地日报",children:[c.jsx(lc,{size:14,"aria-hidden":"true"}),"下载日报"]})]}),c.jsxs("div",{className:"de-report-metrics",children:[c.jsxs("div",{className:"de-report-metric",children:[c.jsx("span",{children:"任务总数"}),c.jsx("strong",{children:I.task_count})]}),c.jsxs("div",{className:"de-report-metric",children:[c.jsx("span",{children:"执行次数"}),c.jsx("strong",{children:I.execution_count})]}),c.jsxs("div",{className:"de-report-metric",children:[c.jsx("span",{children:"成功次数"}),c.jsx("strong",{children:I.success_count})]}),c.jsxs("div",{className:"de-report-metric",children:[c.jsx("span",{children:"失败次数"}),c.jsx("strong",{children:I.failure_count})]})]}),c.jsxs("div",{className:"de-report-meta",children:[c.jsx("p",{children:(T==null?void 0:T.summary)||"点击生成日报后,AI 会基于当天所有任务写出总分结构日报。"}),G?c.jsx("p",{children:G}):null,c.jsxs("p",{children:["计划生成时间:",d,";最近生成:",ry(T==null?void 0:T.generated_at)]}),E?c.jsx("p",{children:E}):null]})]})]}),c.jsxs("div",{style:l1,children:[c.jsxs("section",{id:"report-section-tasks",style:Po,children:[c.jsx("h3",{className:"de-settings-heading",style:{marginTop:0},children:"任务汇总"}),c.jsx(m1,{sections:L})]}),c.jsxs("section",{id:"report-section-details",style:Po,children:[c.jsx("h3",{className:"de-settings-heading",style:{marginTop:0},children:"运行明细"}),c.jsx(h1,{details:O})]}),c.jsxs("section",{id:"report-section-summary",style:Po,children:[c.jsx("h3",{className:"de-settings-heading",style:{marginTop:0},children:"日报内容"}),((T==null?void 0:T.detail_lines)??[]).length===0?c.jsx("p",{className:"de-empty-text",style:{padding:"18px 0 6px"},children:"生成日报后会展示 AI 整理后的分项说明。"}):c.jsx("div",{className:"de-report-meta",children:((T==null?void 0:T.detail_lines)??[]).map(Z=>c.jsx("p",{children:Z},Z))})]})]})]})})]})})}const g1=["sales","engineering","hr","finance","executive"],cy="sgrobot-role-preferences",ed={workStart:"09:00",workEnd:"18:00",notification:"system",reportTime:"17:30",avatarStyle:"professional",reminderLevel:"important"},y1={compact:"紧凑",balanced:"均衡",presentation:"汇报"},v1={display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12},di={display:"flex",flexDirection:"column",gap:6,border:"1px solid var(--de-glass-border-lighter)",borderRadius:10,padding:"12px 14px",background:"linear-gradient(180deg, rgba(244,250,255,0.82), rgba(235,246,255,0.58))"},fi={minHeight:34,borderRadius:8,border:"1px solid var(--de-glass-border-light)",background:"rgba(255,255,255,0.72)",color:"var(--de-text-primary)",padding:"0 10px"};function b1(){try{const n=localStorage.getItem(cy);return n?{...ed,...JSON.parse(n)}:ed}catch{return ed}}function _1(){const{role:n,profile:i,setRole:r}=m0(),[o,d]=b.useState(b1),[m,p]=b.useState(!1),v=b.useRef(null);b.useEffect(()=>()=>{v.current&&clearTimeout(v.current)},[]);const h=()=>{p(!0),v.current&&clearTimeout(v.current),v.current=setTimeout(()=>p(!1),2e3)},y=k=>{d(k);try{localStorage.setItem(cy,JSON.stringify(k))}catch{}h()},E=(k,R)=>{y({...o,[k]:R})},S=k=>{r(k),h()};return c.jsx("div",{style:{padding:"14px 18px"},children:c.jsxs(ws,{children:[c.jsx(kc,{title:"角色偏好",children:m&&c.jsx("span",{className:"de-card-meta-text",children:"已保存"})}),c.jsxs("div",{className:"de-card-body",children:[c.jsxs("section",{className:"de-settings-section",children:[c.jsx("h3",{className:"de-settings-heading",children:"数字员工角色"}),c.jsx("p",{className:"de-settings-desc",children:"选择日常协作身份,数字员工会按你的岗位重点调整提醒和汇总口径。"}),c.jsx("div",{className:"de-role-grid",children:g1.map(k=>c.jsxs("button",{className:`de-role-card ${n===k?"active":""}`,onClick:()=>S(k),children:[c.jsx("span",{className:"de-role-label",children:dd(dc[k].labelKey)}),c.jsxs("span",{className:"de-role-density",children:[y1[dc[k].density]??"均衡","视图"]})]},k))})]}),c.jsxs("section",{className:"de-settings-section",children:[c.jsx("h3",{className:"de-settings-heading",children:"工作偏好"}),c.jsxs("div",{style:v1,children:[c.jsxs("label",{style:di,children:[c.jsx("span",{className:"de-role-label",children:"工作开始时间"}),c.jsx("input",{style:fi,type:"time",value:o.workStart,onChange:k=>E("workStart",k.target.value)})]}),c.jsxs("label",{style:di,children:[c.jsx("span",{className:"de-role-label",children:"工作结束时间"}),c.jsx("input",{style:fi,type:"time",value:o.workEnd,onChange:k=>E("workEnd",k.target.value)})]}),c.jsxs("label",{style:di,children:[c.jsx("span",{className:"de-role-label",children:"默认日报时间"}),c.jsx("input",{style:fi,type:"time",value:o.reportTime,onChange:k=>E("reportTime",k.target.value)})]}),c.jsxs("label",{style:di,children:[c.jsx("span",{className:"de-role-label",children:"通知方式"}),c.jsxs("select",{style:fi,value:o.notification,onChange:k=>E("notification",k.target.value),children:[c.jsx("option",{value:"system",children:"系统通知"}),c.jsx("option",{value:"email",children:"邮件提醒"}),c.jsx("option",{value:"silent",children:"只在页面显示"})]})]}),c.jsxs("label",{style:di,children:[c.jsx("span",{className:"de-role-label",children:"数字员工形象偏好"}),c.jsxs("select",{style:fi,value:o.avatarStyle,onChange:k=>E("avatarStyle",k.target.value),children:[c.jsx("option",{value:"professional",children:"专业稳重"}),c.jsx("option",{value:"friendly",children:"亲和协作"}),c.jsx("option",{value:"concise",children:"简洁高效"})]})]}),c.jsxs("label",{style:di,children:[c.jsx("span",{className:"de-role-label",children:"任务提醒偏好"}),c.jsxs("select",{style:fi,value:o.reminderLevel,onChange:k=>E("reminderLevel",k.target.value),children:[c.jsx("option",{value:"important",children:"只提醒重要事项"}),c.jsx("option",{value:"all",children:"所有进展都提醒"}),c.jsx("option",{value:"quiet",children:"尽量少打扰"})]})]})]})]}),c.jsxs("details",{className:"de-settings-section",style:{marginBottom:0},children:[c.jsx("summary",{className:"de-settings-heading",style:{cursor:"pointer"},children:"高级技术设置"}),c.jsxs("p",{className:"de-settings-desc",children:["默认隐藏,仅供技术人员排查使用。当前角色刷新阈值:",Math.round(i.staleDataThresholdMs/1e3)," 秒。"]})]})]})]})})}const uy=[{id:"home",label:"首页"},{id:"missions",label:"任务中心"},{id:"skills",label:"技能库"},{id:"reports",label:"日报"},{id:"settings",label:"设置"}],S1="sgrobot:digital-close";function oy(n){return!!(n&&uy.some(i=>i.id===n))}function x1(n){const i=n.split("/").filter(Boolean),r=i.length>0?i[i.length-1]:null;return oy(r)?r:null}function cg(n,i){const r=new URLSearchParams(i),o=r.get("tab");return{tab:oy(o)?o:x1(n)??"home",date:r.get("date"),missionId:r.get("mission"),taskId:r.get("task"),skillId:r.get("skill"),reportSection:r.get("section")}}function j1({target:n,onNavigate:i}){switch(n.tab){case"home":return c.jsx(sx,{onNavigate:i});case"missions":return c.jsx(Fx,{focusMissionId:n.missionId,focusTaskId:n.taskId,focusDate:n.date});case"skills":return c.jsx(n1,{focusSkillId:n.skillId});case"reports":return c.jsx(p1,{focusSection:n.reportSection});case"settings":return c.jsx(_1,{})}}function w1(){if(window.parent&&window.parent!==window){const n=window.location.origin==="null"?"*":window.location.origin;window.parent.postMessage({type:S1},n);return}window.close()}function E1(){const n=xa(),i=gd(),[r,o]=b.useState(()=>cg(n.pathname,n.search));b.useEffect(()=>{o(cg(n.pathname,n.search))},[n.pathname,n.search]);const d=b.useCallback(m=>{o(m);const p=new URLSearchParams;m.tab!=="home"&&p.set("tab",m.tab),m.date&&p.set("date",m.date),m.missionId&&p.set("mission",m.missionId),m.taskId&&p.set("task",m.taskId),m.skillId&&p.set("skill",m.skillId),m.reportSection&&p.set("section",m.reportSection),i({pathname:n.pathname,search:p.toString()?`?${p.toString()}`:""},{replace:!1})},[n.pathname,i]);return c.jsx(f0,{children:c.jsxs("div",{className:"de-shell",children:[c.jsx("header",{className:"de-header",children:c.jsxs("div",{className:"de-header-content",children:[c.jsxs("div",{className:"de-header-left",children:[c.jsx("div",{className:"de-header-accent-bar"}),c.jsx("h1",{className:"de-header-title",children:"智能数字人系统"})]}),c.jsx("div",{className:"de-header-center",children:uy.map(m=>c.jsx("button",{className:`de-nav-btn ${r.tab===m.id?"active":""}`,onClick:()=>d({tab:m.id}),children:c.jsx("span",{children:m.label})},m.id))}),c.jsxs("div",{className:"de-header-right",children:[c.jsx("span",{className:"de-header-welcome",children:"欢迎您,"}),c.jsx("span",{className:"de-header-username",children:"王琦"}),c.jsx("button",{type:"button",className:"de-header-icon",title:"消息",children:c.jsx(c0,{size:16})}),c.jsx("button",{type:"button",className:"de-header-icon",title:"通知",children:c.jsx(s0,{size:16})}),c.jsx("button",{type:"button",className:"de-header-icon de-header-close",title:"关闭",onClick:w1,children:c.jsx(o0,{size:17})})]})]})}),c.jsx("div",{className:"de-shell-body",children:c.jsx(j1,{target:r,onNavigate:d})})]})})}function k1(){return c.jsx(Z_,{children:c.jsxs(j_,{children:[c.jsx(ad,{path:"/digital",element:c.jsx(E1,{})}),c.jsx(ad,{path:"*",element:c.jsx(S_,{to:"/digital",replace:!0})})]})})}wb.createRoot(document.getElementById("root")).render(c.jsx(yb.StrictMode,{children:c.jsx(k1,{})})); diff --git a/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/index.html b/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/index.html index 3bb8ce86..7a6aa43c 100644 --- a/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/index.html +++ b/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/index.html @@ -13,7 +13,7 @@ console.warn("[qimingclaw] digital employee auth bootstrap skipped", error); } - + diff --git a/qimingclaw/docs/digital-employee-frontend-integration-plan.md b/qimingclaw/docs/digital-employee-frontend-integration-plan.md index 4b9ce59f..8a540794 100644 --- a/qimingclaw/docs/digital-employee-frontend-integration-plan.md +++ b/qimingclaw/docs/digital-employee-frontend-integration-plan.md @@ -450,7 +450,7 @@ crates/agent-electron-client/src/preload/webviewPerfBridge.ts - 数字员工技能库通过 `getSkillCapabilities` 读取 qimingclaw 当前 MCP 配置、server 状态、已发现工具与 allow/deny 限制,并把 MCP server/tool 投射为 `/api/skill` 技能项。 - 数字员工调试存储、dashboard、flow 和产物列表通过 qimingclaw adapter 的 `/api/debug/store`、`/api/dashboard`、`/api/debug/plan/:id/flow`、`/api/debug/task/:id/flow`、`/api/artifact` 投射本地 Plan / Task / Run / Event / Artifact / Approval;Run/Event payload 中的 `artifacts`、`outputs`、`files`、`outputPath`、`uri` 等字段会作为正式 artifact 记录为空时的兼容产物入口展示。 - qimingclaw 主进程记录 `/computer/chat` 结果和 runtime event 时,会从 payload 的 `artifacts`、`outputs`、`files`、`attachments`、`outputPath`、`uri` 以及 `approvals`、`approval_requests`、`needApproval` 等字段轻量提取正式 `digital_artifacts` / `digital_approvals` 记录,并进入 outbox 同步。 -- `digital_approvals` 会投射为数字员工 workday 的 `decisions`;首页待解决事项按钮会调用本地 `decide_approval` action,把处理结果写入 SQLite UI state,回写正式 approval 状态并进入 approval outbox,同时生成 `digital_workday_decide_approval` runtime event。 +- `digital_approvals` 会投射为数字员工 workday 的 `decisions`;首页待解决事项按钮会调用本地 `decide_approval` action,把处理结果写入 SQLite UI state,回写正式 approval 状态并进入 approval outbox,同时生成 `digital_workday_decide_approval` runtime event。同步失败 review 只保留在 dashboard/同步诊断中,不作为可审批 workday decision。 - 任务中心的 `/api/governance/command` 已接入 qimingclaw 兼容层:`create_plan`、`submit_plan`、`approve_plan`、`activate_plan`、`create_schedule`、`run_schedule_now` 等命令返回本地可解释结果,其中激活/立即运行会映射到 adapter 的 dispatch/workday 状态。 - 日报下载不再打开 sgRobot 风格 PDF 后端直链;生成日报后会基于当前 qimingclaw workday 投影在浏览器内导出本地文本日报。 - 任务中心在加载到 qimingclaw 真实计划时不再混入“白领一天”等 demo supplement;只有没有任何真实计划或请求失败时才使用本地示例兜底。