Merge pull request #154 from openqj/feat-console-detail-cards
console: 任务详情改卡片式排版
This commit is contained in:
3 files changed
+109
-59
No files matched your search
@@ -7,9 +7,16 @@ import DetailActions from "./detail/DetailActions";
|
||||
import ReviewPanel from "./detail/ReviewPanel";
|
||||
import { CoordPanel, AgentsPanel, ApprovalPanel, PeerPanel, ThreadPanel } from "./detail/DetailLists";
|
||||
|
||||
// Right detail column for the task view. Everything structured lives
|
||||
// here — never inside a chat bubble: metadata, actions, reviews,
|
||||
// approvals, coordinator children, sub-agents, threads, cost.
|
||||
// Right detail column for the task view, card-style layout.
|
||||
// Everything structured lives here — never inside a chat bubble.
|
||||
// Layout only: data, actions and sub-sections are unchanged,
|
||||
// just grouped into cards instead of one <br>-separated block:
|
||||
// 概览(状态 + 耗时/token/成本三张指标卡)
|
||||
// 基本信息(键值网格)
|
||||
// prompt(单独一张卡,长 prompt 不再挤在信息行末尾)
|
||||
// 操作与结果
|
||||
// 协调子任务 / 子代理链路 / 评审队列 / 运行时审批队列 /
|
||||
// 给其他任务发消息 / 线程(各一张卡)
|
||||
export default function TaskDetailPanel() {
|
||||
const ctx = useConsole();
|
||||
const t = ctx.currentTask;
|
||||
@@ -17,44 +24,72 @@ export default function TaskDetailPanel() {
|
||||
const [dur, durTitle] = durationOf(t);
|
||||
const [tok, tokTitle] = tokenOf(t);
|
||||
const fc = firstChar(t);
|
||||
const cost = ctx.costSummary;
|
||||
const modeText = t.plan ? "计划模式(只读)"
|
||||
: t.goal_mode ? (t.no_time_limit ? "goal 模式无敌版(不限时)" : "goal 模式(不限轮次,模型宣告完成)")
|
||||
: t.verify_command ? "goal 模式(旧语义,验收命令)" : null;
|
||||
return (
|
||||
<Card id="nav-detail" title="任务详情">
|
||||
<div>
|
||||
状态 <b className={"st-" + t.status}>{t.status}</b>({STATUS_EXPLAIN[t.status] || "未知状态"})
|
||||
<br /><span style={{ display: "inline-flex", alignItems: "center", gap: 6 }}><span className="issue-first" title={"任务首字:" + fc} aria-hidden="true">{fc}</span><span title={durTitle}>耗时 {dur}</span><span> · </span><span title={tokTitle}>{tok}</span></span>
|
||||
<br />{ctx.costSummary === undefined ? <span className="muted">成本加载中…</span>
|
||||
: ctx.costSummary === null ? <span className="muted">成本明细加载失败(“查成本”按钮仍可手动拉取原始 JSON)</span>
|
||||
: <span title="成本明细:GET /tasks/{id}/cost 聚合;美元只计有价行,无价 token 单列;缓存是输入 token 的子集,不另计">成本 {fmtCostUsd(ctx.costSummary.usd_micros)} | token {(ctx.costSummary.total_tokens ?? 0).toLocaleString()}(实际 {(ctx.costSummary.actual_tokens ?? 0).toLocaleString()} / 估算 {(ctx.costSummary.estimated_tokens ?? 0).toLocaleString()},缓存 {(ctx.costSummary.cached_input_tokens ?? 0).toLocaleString()},无价 {(ctx.costSummary.unpriced_actual_tokens ?? 0).toLocaleString()})| 轮数 {ctx.costSummary.turns ?? 0} | fallback {ctx.costSummary.fallback_count ?? 0}</span>}
|
||||
<br />任务 {t.id} | turn {shortId(t.turn_id)} | root turn {shortId(t.root_turn_id)}
|
||||
<br />executor {t.executor || ""} | 主机 {t.worktree_host || ""}
|
||||
<br />模型 {t.model || "默认"} | 强度 {t.effort || "默认"}
|
||||
{(t.child_model || t.child_effort) ? <><br />子任务默认 {(t.child_model || "跟随本任务") + " / " + (t.child_effort || "跟随本任务")}</> : null}
|
||||
<br />权限 {t.approval || "默认"} | 项目 {shortId(t.project_id)}
|
||||
<br />更新 {fmt(t.updated_at)}
|
||||
{t.plan ? <><br />计划模式(只读)</> : null}
|
||||
{t.forked_from ? <><br />分支自 {shortId(t.forked_from)}</> : null}
|
||||
{t.goal_mode ? <><br />{t.no_time_limit ? "goal 模式无敌版(不限时)" : "goal 模式(不限轮次,模型宣告完成)"}</> : t.verify_command ? <><br />goal 模式(旧语义,验收命令)</> : null}
|
||||
{t.coordinator_parts ? <><br />协调员:{t.coordinator_parts.length} 个子任务({t.coordinator_parts.map((p) => p.name).join("、")})</> : null}
|
||||
{t.parent_task_id ? <><br />协调子任务,父任务 {shortId(t.parent_task_id)}{t.coordinator_part ? "(" + t.coordinator_part + ")" : ""}</> : null}
|
||||
{(t.attachments && t.attachments.length) ? <><br />附件:{t.attachments.join("、")}</> : null}
|
||||
{t.pr_url ? <><br /><a href={t.pr_url} target="_blank" rel="noopener noreferrer">PR #{t.pr_number}</a></> : null}
|
||||
<br />prompt:{t.prompt || ""}
|
||||
</div>
|
||||
<DetailActions />
|
||||
<pre>{ctx.detailBody || "(暂无 result/error 输出)"}</pre>
|
||||
{ctx.costBox ? <pre>{ctx.costBox}</pre> : null}
|
||||
<h3>协调子任务</h3>
|
||||
<CoordPanel />
|
||||
<h3>子代理链路</h3>
|
||||
<AgentsPanel />
|
||||
<h3>评审队列</h3>
|
||||
<ReviewPanel />
|
||||
<h3>运行时审批队列</h3>
|
||||
<ApprovalPanel />
|
||||
<h3>给其他任务发消息</h3>
|
||||
<PeerPanel />
|
||||
<h3>线程</h3>
|
||||
<ThreadPanel />
|
||||
</Card>
|
||||
<div className="detail-stack" id="nav-detail">
|
||||
<Card title="任务详情">
|
||||
<div style={{ display: "flex", alignItems: "center", gap: 8, flexWrap: "wrap" }}>
|
||||
<span className="issue-first" title={"任务首字:" + fc} aria-hidden="true">{fc}</span>
|
||||
<span>状态 <b className={"st-" + t.status}>{t.status}</b>({STATUS_EXPLAIN[t.status] || "未知状态"})</span>
|
||||
<span className="muted">更新 {fmt(t.updated_at)}</span>
|
||||
</div>
|
||||
<div className="detail-cards">
|
||||
<div className="detail-card" title={durTitle}>
|
||||
<div className="detail-card-label">耗时</div>
|
||||
<div className="detail-card-value">{dur}</div>
|
||||
</div>
|
||||
<div className="detail-card" title={tokTitle}>
|
||||
<div className="detail-card-label">token</div>
|
||||
<div className="detail-card-value">{tok}</div>
|
||||
</div>
|
||||
<div className="detail-card" title="成本明细:GET /tasks/{id}/cost 聚合;美元只计有价行,无价 token 单列;缓存是输入 token 的子集,不另计">
|
||||
<div className="detail-card-label">成本</div>
|
||||
<div className="detail-card-value">
|
||||
{cost === undefined ? "加载中…" : cost === null ? "—" : fmtCostUsd(cost.usd_micros)}
|
||||
</div>
|
||||
{cost === undefined ? <div className="muted">成本加载中…</div>
|
||||
: cost === null ? <div className="muted">成本明细加载失败(“查成本”按钮仍可手动拉取原始 JSON)</div>
|
||||
: <div className="muted">token {(cost.total_tokens ?? 0).toLocaleString()}(实际 {(cost.actual_tokens ?? 0).toLocaleString()} / 估算 {(cost.estimated_tokens ?? 0).toLocaleString()},缓存 {(cost.cached_input_tokens ?? 0).toLocaleString()},无价 {(cost.unpriced_actual_tokens ?? 0).toLocaleString()})| 轮数 {cost.turns ?? 0} | fallback {cost.fallback_count ?? 0}</div>}
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card title="基本信息">
|
||||
<dl className="detail-kv">
|
||||
<div><dt>任务</dt><dd>{t.id}</dd></div>
|
||||
<div><dt>turn</dt><dd>{shortId(t.turn_id)}</dd></div>
|
||||
<div><dt>root turn</dt><dd>{shortId(t.root_turn_id)}</dd></div>
|
||||
<div><dt>executor</dt><dd>{t.executor || ""}</dd></div>
|
||||
<div><dt>主机</dt><dd>{t.worktree_host || ""}</dd></div>
|
||||
<div><dt>模型</dt><dd>{t.model || "默认"}</dd></div>
|
||||
<div><dt>强度</dt><dd>{t.effort || "默认"}</dd></div>
|
||||
{(t.child_model || t.child_effort) ? <div><dt>子任务默认</dt><dd>{(t.child_model || "跟随本任务") + " / " + (t.child_effort || "跟随本任务")}</dd></div> : null}
|
||||
<div><dt>权限</dt><dd>{t.approval || "默认"}</dd></div>
|
||||
<div><dt>项目</dt><dd>{shortId(t.project_id)}</dd></div>
|
||||
{modeText ? <div><dt>模式</dt><dd>{modeText}</dd></div> : null}
|
||||
{t.forked_from ? <div><dt>分支自</dt><dd>{shortId(t.forked_from)}</dd></div> : null}
|
||||
{t.coordinator_parts ? <div><dt>协调员</dt><dd>{t.coordinator_parts.length} 个子任务({t.coordinator_parts.map((p) => p.name).join("、")})</dd></div> : null}
|
||||
{t.parent_task_id ? <div><dt>协调子任务</dt><dd>父任务 {shortId(t.parent_task_id)}{t.coordinator_part ? "(" + t.coordinator_part + ")" : ""}</dd></div> : null}
|
||||
{(t.attachments && t.attachments.length) ? <div><dt>附件</dt><dd>{t.attachments.join("、")}</dd></div> : null}
|
||||
{t.pr_url ? <div><dt>PR</dt><dd><a href={t.pr_url} target="_blank" rel="noopener noreferrer">PR #{t.pr_number}</a></dd></div> : null}
|
||||
</dl>
|
||||
</Card>
|
||||
<Card title="prompt">
|
||||
<div style={{ whiteSpace: "pre-wrap", overflowWrap: "anywhere" }}>{t.prompt || "(无 prompt)"}</div>
|
||||
</Card>
|
||||
<Card title="操作与结果">
|
||||
<DetailActions />
|
||||
<pre>{ctx.detailBody || "(暂无 result/error 输出)"}</pre>
|
||||
{ctx.costBox ? <pre>{ctx.costBox}</pre> : null}
|
||||
</Card>
|
||||
<Card title="协调子任务"><CoordPanel /></Card>
|
||||
<Card title="子代理链路"><AgentsPanel /></Card>
|
||||
<Card title="评审队列"><ReviewPanel /></Card>
|
||||
<Card title="运行时审批队列"><ApprovalPanel /></Card>
|
||||
<Card title="给其他任务发消息"><PeerPanel /></Card>
|
||||
<Card title="线程"><ThreadPanel /></Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -133,6 +133,21 @@ pre{background:var(--inset-bg);color:var(--text);border:1px solid var(--line);bo
|
||||
.issue-state.st-failed,.issue-state.st-merge-failed{background:var(--danger)}
|
||||
.issue-state.st-interrupted{background:var(--attention)}
|
||||
.issue-first{flex:none;width:22px;height:22px;margin-top:1px;border:1px solid var(--line);border-radius:6px;background:var(--subtle-bg);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:var(--muted);overflow:hidden}
|
||||
/* Task detail card layout: cards stacked with a gap, KPI cards in a
|
||||
responsive grid (auto-fit, so the narrow right column collapses
|
||||
to one per row instead of squeezing three). Only layout: no data,
|
||||
action or section is added or removed by this styling. */
|
||||
.detail-stack{display:flex;flex-direction:column;gap:16px;min-width:0}
|
||||
.detail-stack > .card{margin:0}
|
||||
.detail-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:12px}
|
||||
.detail-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;min-width:0}
|
||||
.detail-card-label{color:var(--muted);font-size:12px;font-weight:600}
|
||||
.detail-card-value{font-size:20px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
|
||||
.detail-card .muted{font-size:12px;line-height:1.5;overflow-wrap:anywhere}
|
||||
.detail-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 16px;margin:0;font-size:13px}
|
||||
.detail-kv > div{min-width:0}
|
||||
.detail-kv dt{color:var(--muted);font-size:12px}
|
||||
.detail-kv dd{margin:0;overflow-wrap:anywhere}
|
||||
.issue-title{font-size:14px;line-height:1.5;overflow-wrap:anywhere}
|
||||
.issue-meta{font-size:12px;color:var(--muted);line-height:1.5}
|
||||
/* Conversation as a GitHub timeline / comments: white comment boxes
|
||||
|
||||
+18
-18
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Codex 命令台</title>
|
||||
<script type="module" crossorigin>(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const _ of document.querySelectorAll('link[rel="modulepreload"]'))o(_);new MutationObserver(_=>{for(const C of _)if(C.type==="childList")for(const N of C.addedNodes)N.tagName==="LINK"&&N.rel==="modulepreload"&&o(N)}).observe(document,{childList:!0,subtree:!0});function m(_){const C={};return _.integrity&&(C.integrity=_.integrity),_.referrerPolicy&&(C.referrerPolicy=_.referrerPolicy),_.crossOrigin==="use-credentials"?C.credentials="include":_.crossOrigin==="anonymous"?C.credentials="omit":C.credentials="same-origin",C}function o(_){if(_.ep)return;_.ep=!0;const C=m(_);fetch(_.href,C)}})();function wh(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var nr={exports:{}},ui={};/**
|
||||
<script type="module" crossorigin>(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const _ of document.querySelectorAll('link[rel="modulepreload"]'))o(_);new MutationObserver(_=>{for(const C of _)if(C.type==="childList")for(const N of C.addedNodes)N.tagName==="LINK"&&N.rel==="modulepreload"&&o(N)}).observe(document,{childList:!0,subtree:!0});function m(_){const C={};return _.integrity&&(C.integrity=_.integrity),_.referrerPolicy&&(C.referrerPolicy=_.referrerPolicy),_.crossOrigin==="use-credentials"?C.credentials="include":_.crossOrigin==="anonymous"?C.credentials="omit":C.credentials="same-origin",C}function o(_){if(_.ep)return;_.ep=!0;const C=m(_);fetch(_.href,C)}})();function Yh(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var nr={exports:{}},ui={};/**
|
||||
* @license React
|
||||
* react-jsx-runtime.production.js
|
||||
*
|
||||
@@ -12,7 +12,7 @@
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var Ah;function zy(){if(Ah)return ui;Ah=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function m(o,_,C){var N=null;if(C!==void 0&&(N=""+C),_.key!==void 0&&(N=""+_.key),"key"in _){C={};for(var x in _)x!=="key"&&(C[x]=_[x])}else C=_;return _=C.ref,{$$typeof:i,type:o,key:N,ref:_!==void 0?_:null,props:C}}return ui.Fragment=r,ui.jsx=m,ui.jsxs=m,ui}var Oh;function Ry(){return Oh||(Oh=1,nr.exports=zy()),nr.exports}var s=Ry(),ur={exports:{}},st={};/**
|
||||
*/var Ah;function zy(){if(Ah)return ui;Ah=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function m(o,_,C){var N=null;if(C!==void 0&&(N=""+C),_.key!==void 0&&(N=""+_.key),"key"in _){C={};for(var b in _)b!=="key"&&(C[b]=_[b])}else C=_;return _=C.ref,{$$typeof:i,type:o,key:N,ref:_!==void 0?_:null,props:C}}return ui.Fragment=r,ui.jsx=m,ui.jsxs=m,ui}var Oh;function Ry(){return Oh||(Oh=1,nr.exports=zy()),nr.exports}var c=Ry(),ur={exports:{}},st={};/**
|
||||
* @license React
|
||||
* react.production.js
|
||||
*
|
||||
@@ -20,7 +20,7 @@
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var Mh;function Dy(){if(Mh)return st;Mh=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),m=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),N=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),U=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),b=Symbol.for("react.activity"),B=Symbol.for("react.view_transition"),tt=Symbol.iterator;function at(y){return y===null||typeof y!="object"?null:(y=tt&&y[tt]||y["@@iterator"],typeof y=="function"?y:null)}var et={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},L=Object.assign,dt={};function zt(y,R,W){this.props=y,this.context=R,this.refs=dt,this.updater=W||et}zt.prototype.isReactComponent={},zt.prototype.setState=function(y,R){if(typeof y!="object"&&typeof y!="function"&&y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,y,R,"setState")},zt.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};function Jt(){}Jt.prototype=zt.prototype;function nt(y,R,W){this.props=y,this.context=R,this.refs=dt,this.updater=W||et}var Xt=nt.prototype=new Jt;Xt.constructor=nt,L(Xt,zt.prototype),Xt.isPureReactComponent=!0;var te=Array.isArray;function ct(){}var yt={H:null,A:null,T:null,S:null},re=Object.prototype.hasOwnProperty;function he(y,R,W){var F=W.ref;return{$$typeof:i,type:y,key:R,ref:F!==void 0?F:null,props:W}}function Vt(y,R){return he(y.type,R,y.props)}function Ft(y){return typeof y=="object"&&y!==null&&y.$$typeof===i}function le(y){var R={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(W){return R[W]})}var Ie=/\/+/g;function vt(y,R){return typeof y=="object"&&y!==null&&y.key!=null?le(""+y.key):R.toString(36)}function Y(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(ct,ct):(y.status="pending",y.then(function(R){y.status==="pending"&&(y.status="fulfilled",y.value=R)},function(R){y.status==="pending"&&(y.status="rejected",y.reason=R)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function A(y,R,W,F,pt){var mt=typeof y;(mt==="undefined"||mt==="boolean")&&(y=null);var _t=!1;if(y===null)_t=!0;else switch(mt){case"bigint":case"string":case"number":_t=!0;break;case"object":switch(y.$$typeof){case i:case r:_t=!0;break;case G:return _t=y._init,A(_t(y._payload),R,W,F,pt)}}if(_t)return pt=pt(y),_t=F===""?"."+vt(y,0):F,te(pt)?(W="",_t!=null&&(W=_t.replace(Ie,"$&/")+"/"),A(pt,R,W,"",function(ae){return ae})):pt!=null&&(Ft(pt)&&(pt=Vt(pt,W+(pt.key==null||y&&y.key===pt.key?"":(""+pt.key).replace(Ie,"$&/")+"/")+_t)),R.push(pt)),1;_t=0;var V=F===""?".":F+":";if(te(y))for(var ut=0;ut<y.length;ut++)F=y[ut],mt=V+vt(F,ut),_t+=A(F,R,W,mt,pt);else if(ut=at(y),typeof ut=="function")for(y=ut.call(y),ut=0;!(F=y.next()).done;)F=F.value,mt=V+vt(F,ut++),_t+=A(F,R,W,mt,pt);else if(mt==="object"){if(typeof y.then=="function")return A(Y(y),R,W,F,pt);throw R=String(y),Error("Objects are not valid as a React child (found: "+(R==="[object Object]"?"object with keys {"+Object.keys(y).join(", ")+"}":R)+"). If you meant to render a collection of children, use an array instead.")}return _t}function lt(y,R,W){if(y==null)return y;var F=[],pt=0;return A(y,F,"","",function(mt){return R.call(W,mt,pt++)}),F}function gt(y){if(y._status===-1){var R=y._result,W=R();W.then(function(F){(y._status===0||y._status===-1)&&(y._status=1,y._result=F,W.status===void 0&&(W.status="fulfilled",W.value=F))},function(F){(y._status===0||y._status===-1)&&(y._status=2,y._result=F,W.status===void 0&&(W.status="rejected",W.reason=F))}),y._status===-1&&(y._status=0,y._result=W)}if(y._status===1)return y._result.default;throw y._result}var St=typeof reportError=="function"?reportError:function(y){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var R=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof y=="object"&&y!==null&&typeof y.message=="string"?String(y.message):String(y),error:y});if(!window.dispatchEvent(R))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",y);return}console.error(y)};function ve(y){var R=yt.T,W={};W.types=R!==null?R.types:null,yt.T=W;try{var F=y(),pt=yt.S;pt!==null&&pt(W,F),typeof F=="object"&&F!==null&&typeof F.then=="function"&&F.then(ct,St)}catch(mt){St(mt)}finally{R!==null&&W.types!==null&&(R.types=W.types),yt.T=R}}function Ue(y){var R=yt.T;if(R!==null){var W=R.types;W===null?R.types=[y]:W.indexOf(y)===-1&&W.push(y)}else ve(Ue.bind(null,y))}var _e={map:lt,forEach:function(y,R,W){lt(y,function(){R.apply(this,arguments)},W)},count:function(y){var R=0;return lt(y,function(){R++}),R},toArray:function(y){return lt(y,function(R){return R})||[]Line truncated
|
||||
*/var Mh;function Dy(){if(Mh)return st;Mh=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),m=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),N=Symbol.for("react.context"),b=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),U=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),B=Symbol.for("react.view_transition"),tt=Symbol.iterator;function at(y){return y===null||typeof y!="object"?null:(y=tt&&y[tt]||y["@@iterator"],typeof y=="function"?y:null)}var et={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},L=Object.assign,dt={};function zt(y,R,W){this.props=y,this.context=R,this.refs=dt,this.updater=W||et}zt.prototype.isReactComponent={},zt.prototype.setState=function(y,R){if(typeof y!="object"&&typeof y!="function"&&y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,y,R,"setState")},zt.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};function Ft(){}Ft.prototype=zt.prototype;function nt(y,R,W){this.props=y,this.context=R,this.refs=dt,this.updater=W||et}var Xt=nt.prototype=new Ft;Xt.constructor=nt,L(Xt,zt.prototype),Xt.isPureReactComponent=!0;var ee=Array.isArray;function ct(){}var yt={H:null,A:null,T:null,S:null},oe=Object.prototype.hasOwnProperty;function ve(y,R,W){var F=W.ref;return{$$typeof:i,type:y,key:R,ref:F!==void 0?F:null,props:W}}function Vt(y,R){return ve(y.type,R,y.props)}function Wt(y){return typeof y=="object"&&y!==null&&y.$$typeof===i}function ae(y){var R={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(W){return R[W]})}var Ie=/\/+/g;function vt(y,R){return typeof y=="object"&&y!==null&&y.key!=null?ae(""+y.key):R.toString(36)}function Y(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(ct,ct):(y.status="pending",y.then(function(R){y.status==="pending"&&(y.status="fulfilled",y.value=R)},function(R){y.status==="pending"&&(y.status="rejected",y.reason=R)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function A(y,R,W,F,St){var mt=typeof y;(mt==="undefined"||mt==="boolean")&&(y=null);var _t=!1;if(y===null)_t=!0;else switch(mt){case"bigint":case"string":case"number":_t=!0;break;case"object":switch(y.$$typeof){case i:case r:_t=!0;break;case G:return _t=y._init,A(_t(y._payload),R,W,F,St)}}if(_t)return St=St(y),_t=F===""?"."+vt(y,0):F,ee(St)?(W="",_t!=null&&(W=_t.replace(Ie,"$&/")+"/"),A(St,R,W,"",function(ne){return ne})):St!=null&&(Wt(St)&&(St=Vt(St,W+(St.key==null||y&&y.key===St.key?"":(""+St.key).replace(Ie,"$&/")+"/")+_t)),R.push(St)),1;_t=0;var V=F===""?".":F+":";if(ee(y))for(var ut=0;ut<y.length;ut++)F=y[ut],mt=V+vt(F,ut),_t+=A(F,R,W,mt,St);else if(ut=at(y),typeof ut=="function")for(y=ut.call(y),ut=0;!(F=y.next()).done;)F=F.value,mt=V+vt(F,ut++),_t+=A(F,R,W,mt,St);else if(mt==="object"){if(typeof y.then=="function")return A(Y(y),R,W,F,St);throw R=String(y),Error("Objects are not valid as a React child (found: "+(R==="[object Object]"?"object with keys {"+Object.keys(y).join(", ")+"}":R)+"). If you meant to render a collection of children, use an array instead.")}return _t}function lt(y,R,W){if(y==null)return y;var F=[],St=0;return A(y,F,"","",function(mt){return R.call(W,mt,St++)}),F}function gt(y){if(y._status===-1){var R=y._result,W=R();W.then(function(F){(y._status===0||y._status===-1)&&(y._status=1,y._result=F,W.status===void 0&&(W.status="fulfilled",W.value=F))},function(F){(y._status===0||y._status===-1)&&(y._status=2,y._result=F,W.status===void 0&&(W.status="rejected",W.reason=F))}),y._status===-1&&(y._status=0,y._result=W)}if(y._status===1)return y._result.default;throw y._result}var pt=typeof reportError=="function"?reportError:function(y){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var R=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof y=="object"&&y!==null&&typeof y.message=="string"?String(y.message):String(y),error:y});if(!window.dispatchEvent(R))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",y);return}console.error(y)};function ye(y){var R=yt.T,W={};W.types=R!==null?R.types:null,yt.T=W;try{var F=y(),St=yt.S;St!==null&&St(W,F),typeof F=="object"&&F!==null&&typeof F.then=="function"&&F.then(ct,pt)}catch(mt){pt(mt)}finally{R!==null&&W.types!==null&&(R.types=W.types),yt.T=R}}function He(y){var R=yt.T;if(R!==null){var W=R.types;W===null?R.types=[y]:W.indexOf(y)===-1&&W.push(y)}else ye(He.bind(null,y))}var Ee={map:lt,forEach:function(y,R,W){lt(y,function(){R.apply(this,arguments)},W)},count:function(y){var R=0;return lt(y,function(){R++}),R},toArray:function(y){return lt(y,function(R){return R})||[]Line truncated
|
||||
* @license React
|
||||
* scheduler.production.js
|
||||
*
|
||||
@@ -28,7 +28,7 @@
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var Rh;function Hy(){return Rh||(Rh=1,(function(i){function r(Y,A){var lt=Y.length;Y.push(A);t:for(;0<lt;){var gt=lt-1>>>1,St=Y[gt];if(0<_(St,A))Y[gt]=A,Y[lt]=St,lt=gt;else break t}}function m(Y){return Y.length===0?null:Y[0]}function o(Y){if(Y.length===0)return null;var A=Y[0],lt=Y.pop();if(lt!==A){Y[0]=lt;t:for(var gt=0,St=Y.length,ve=St>>>1;gt<ve;){var Ue=2*(gt+1)-1,_e=Y[Ue],y=Ue+1,R=Y[y];if(0>_(_e,lt))y<St&&0>_(R,_e)?(Y[gt]=R,Y[y]=lt,gt=y):(Y[gt]=_e,Y[Ue]=lt,gt=Ue);else if(y<St&&0>_(R,lt))Y[gt]=R,Y[y]=lt,gt=y;else break t}}return A}function _(Y,A){var lt=Y.sortIndex-A.sortIndex;return lt!==0?lt:Y.id-A.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var C=performance;i.unstable_now=function(){return C.now()}}else{var N=Date,x=N.now();i.unstable_now=function(){return N.now()-x}}var w=[],U=[],G=1,b=null,B=3,tt=!1,at=!1,et=!1,L=!1,dt=typeof setTimeout=="function"?setTimeout:null,zt=typeof clearTimeout=="function"?clearTimeout:null,Jt=typeof setImmediate<"u"?setImmediate:null;function nt(Y){for(var A=m(U);A!==null;){if(A.callback===null)o(U);else if(A.startTime<=Y)o(U),A.sortIndex=A.expirationTime,r(w,A);else break;A=m(U)}}function Xt(Y){if(et=!1,nt(Y),!at)if(m(w)!==null)at=!0,te||(te=!0,Ft());else{var A=m(U);A!==null&&vt(Xt,A.startTime-Y)}}var te=!1,ct=-1,yt=5,re=-1;function he(){return L?!0:!(i.unstable_now()-re<yt)}function Vt(){if(L=!1,te){var Y=i.unstable_now();re=Y;var A=!0;try{t:{at=!1,et&&(et=!1,zt(ct),ct=-1),tt=!0;var lt=B;try{e:{for(nt(Y),b=m(w);b!==null&&!(b.expirationTime>Y&&he());){var gt=b.callback;if(typeof gt=="function"){b.callback=null,B=b.priorityLevel;var St=gt(b.expirationTime<=Y);if(Y=i.unstable_now(),typeof St=="function"){b.callback=St,nt(Y),A=!0;break e}b===m(w)&&o(w),nt(Y)}else o(w);b=m(w)}if(b!==null)A=!0;else{var ve=m(U);ve!==null&&vt(Xt,ve.startTime-Y),A=!1}}break t}finally{b=null,B=lt,tt=!1}A=void 0}}finally{A?Ft():te=!1}}}var Ft;if(typeof Jt=="function")Ft=function(){Jt(Vt)};else if(typeof MessageChannel<"u"){var le=new MessageChannel,Ie=le.port2;le.port1.onmessage=Vt,Ft=function(){Ie.postMessage(null)}}else Ft=function(){dt(Vt,0)};function vt(Y,A){ct=dt(function(){Y(i.unstable_now())},A)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(Y){Y.callback=null},i.unstable_forceFrameRate=function(Y){0>Y||125<Y?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):yt=0<Y?Math.floor(1e3/Y):5},i.unstable_getCurrentPriorityLevel=function(){return B},i.unstable_next=function(Y){switch(B){case 1:case 2:case 3:var A=3;break;default:A=B}var lt=B;B=A;try{return Y()}finally{B=lt}},i.unstable_requestPaint=function(){L=!0},i.unstable_runWithPriority=function(Y,A){switch(Y){case 1:case 2:case 3:case 4:case 5:break;default:Y=3}var lt=B;B=Y;try{return A()}finally{B=lt}},i.unstable_scheduleCallback=function(Y,A,lt){var gt=i.unstable_now();switch(typeof lt=="object"&<!==null?(lt=lt.delay,lt=typeof lt=="number"&&0<lt?gt+lt:gt):lt=gt,Y){case 1:var St=-1;break;case 2:St=250;break;case 5:St=1073741823;break;case 4:St=1e4;break;default:St=5e3}return St=lt+St,Y={id:G++,callback:A,priorityLevel:Y,startTime:lt,expirationTime:St,sortIndex:-1},lt>gt?(Y.sortIndex=lt,r(U,Y),m(w)===null&&Y===m(U)&&(et?(zt(ct),ct=-1):et=!0,vt(Xt,lt-gt))):(Y.sortIndex=St,r(w,Y),at||tt||(at=!0,te||(te=!0,Ft()))),Y},i.unstable_shouldYield=he,i.unstable_wrapCallback=function(Y){var A=B;return function(){var lt=B;B=A;try{return Y.apply(this,arguments)}finally{B=lt}}}})(sr)),sr}var Dh;function By(){return Dh||(Dh=1,cr.exports=Hy()),cr.exports}var fr={exports:{}},Re={};/**
|
||||
*/var Rh;function Hy(){return Rh||(Rh=1,(function(i){function r(Y,A){var lt=Y.length;Y.push(A);t:for(;0<lt;){var gt=lt-1>>>1,pt=Y[gt];if(0<_(pt,A))Y[gt]=A,Y[lt]=pt,lt=gt;else break t}}function m(Y){return Y.length===0?null:Y[0]}function o(Y){if(Y.length===0)return null;var A=Y[0],lt=Y.pop();if(lt!==A){Y[0]=lt;t:for(var gt=0,pt=Y.length,ye=pt>>>1;gt<ye;){var He=2*(gt+1)-1,Ee=Y[He],y=He+1,R=Y[y];if(0>_(Ee,lt))y<pt&&0>_(R,Ee)?(Y[gt]=R,Y[y]=lt,gt=y):(Y[gt]=Ee,Y[He]=lt,gt=He);else if(y<pt&&0>_(R,lt))Y[gt]=R,Y[y]=lt,gt=y;else break t}}return A}function _(Y,A){var lt=Y.sortIndex-A.sortIndex;return lt!==0?lt:Y.id-A.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var C=performance;i.unstable_now=function(){return C.now()}}else{var N=Date,b=N.now();i.unstable_now=function(){return N.now()-b}}var w=[],U=[],G=1,x=null,B=3,tt=!1,at=!1,et=!1,L=!1,dt=typeof setTimeout=="function"?setTimeout:null,zt=typeof clearTimeout=="function"?clearTimeout:null,Ft=typeof setImmediate<"u"?setImmediate:null;function nt(Y){for(var A=m(U);A!==null;){if(A.callback===null)o(U);else if(A.startTime<=Y)o(U),A.sortIndex=A.expirationTime,r(w,A);else break;A=m(U)}}function Xt(Y){if(et=!1,nt(Y),!at)if(m(w)!==null)at=!0,ee||(ee=!0,Wt());else{var A=m(U);A!==null&&vt(Xt,A.startTime-Y)}}var ee=!1,ct=-1,yt=5,oe=-1;function ve(){return L?!0:!(i.unstable_now()-oe<yt)}function Vt(){if(L=!1,ee){var Y=i.unstable_now();oe=Y;var A=!0;try{t:{at=!1,et&&(et=!1,zt(ct),ct=-1),tt=!0;var lt=B;try{e:{for(nt(Y),x=m(w);x!==null&&!(x.expirationTime>Y&&ve());){var gt=x.callback;if(typeof gt=="function"){x.callback=null,B=x.priorityLevel;var pt=gt(x.expirationTime<=Y);if(Y=i.unstable_now(),typeof pt=="function"){x.callback=pt,nt(Y),A=!0;break e}x===m(w)&&o(w),nt(Y)}else o(w);x=m(w)}if(x!==null)A=!0;else{var ye=m(U);ye!==null&&vt(Xt,ye.startTime-Y),A=!1}}break t}finally{x=null,B=lt,tt=!1}A=void 0}}finally{A?Wt():ee=!1}}}var Wt;if(typeof Ft=="function")Wt=function(){Ft(Vt)};else if(typeof MessageChannel<"u"){var ae=new MessageChannel,Ie=ae.port2;ae.port1.onmessage=Vt,Wt=function(){Ie.postMessage(null)}}else Wt=function(){dt(Vt,0)};function vt(Y,A){ct=dt(function(){Y(i.unstable_now())},A)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(Y){Y.callback=null},i.unstable_forceFrameRate=function(Y){0>Y||125<Y?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):yt=0<Y?Math.floor(1e3/Y):5},i.unstable_getCurrentPriorityLevel=function(){return B},i.unstable_next=function(Y){switch(B){case 1:case 2:case 3:var A=3;break;default:A=B}var lt=B;B=A;try{return Y()}finally{B=lt}},i.unstable_requestPaint=function(){L=!0},i.unstable_runWithPriority=function(Y,A){switch(Y){case 1:case 2:case 3:case 4:case 5:break;default:Y=3}var lt=B;B=Y;try{return A()}finally{B=lt}},i.unstable_scheduleCallback=function(Y,A,lt){var gt=i.unstable_now();switch(typeof lt=="object"&<!==null?(lt=lt.delay,lt=typeof lt=="number"&&0<lt?gt+lt:gt):lt=gt,Y){case 1:var pt=-1;break;case 2:pt=250;break;case 5:pt=1073741823;break;case 4:pt=1e4;break;default:pt=5e3}return pt=lt+pt,Y={id:G++,callback:A,priorityLevel:Y,startTime:lt,expirationTime:pt,sortIndex:-1},lt>gt?(Y.sortIndex=lt,r(U,Y),m(w)===null&&Y===m(U)&&(et?(zt(ct),ct=-1):et=!0,vt(Xt,lt-gt))):(Y.sortIndex=pt,r(w,Y),at||tt||(at=!0,ee||(ee=!0,Wt()))),Y},i.unstable_shouldYield=ve,i.unstable_wrapCallback=function(Y){var A=B;return function(){var lt=B;B=A;try{return Y.apply(this,arguments)}finally{B=lt}}}})(sr)),sr}var Dh;function By(){return Dh||(Dh=1,cr.exports=Hy()),cr.exports}var fr={exports:{}},De={};/**
|
||||
* @license React
|
||||
* react-dom.production.js
|
||||
*
|
||||
@@ -36,7 +36,7 @@
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var Uh;function qy(){if(Uh)return Re;Uh=1;var i=mr();function r(G){var b="https://react.dev/errors/"+G;if(1<arguments.length){b+="?args[]="+encodeURIComponent(arguments[1]);for(var B=2;B<arguments.length;B++)b+="&args[]="+encodeURIComponent(arguments[B])}return"Minified React error #"+G+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function m(){}var o={d:{f:m,r:function(){throw Error(r(522))},D:m,C:m,L:m,m,X:m,S:m,M:m},p:0,findDOMNode:null},_=Symbol.for("react.portal"),C=Symbol.for("react.recoverable"),N=Symbol.for("react.optimistic_key");function x(G,b,B){var tt=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:_,key:tt==null?null:tt===N?N:""+tt,children:G,containerInfo:b,implementation:B}}var w=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function U(G,b){if(G==="font")return"";if(typeof b=="string")return b==="use-credentials"?b:""}return Re.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=o,Re.browser=function(G){return{$$typeof:C,_reason:G}},Re.createPortal=function(G,b){var B=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!b||b.nodeType!==1&&b.nodeType!==9&&b.nodeType!==11)throw Error(r(299));return x(G,b,null,B)},Re.flushSync=function(G){var b=w.T,B=o.p;try{if(w.T=null,o.p=2,G)return G()}finally{w.T=b,o.p=B,o.d.f()}},Re.preconnect=function(G,b){typeof G=="string"&&(b?(b=b.crossOrigin,b=typeof b=="string"?b==="use-credentials"?b:"":void 0):b=null,o.d.C(G,b))},Re.prefetchDNS=function(G){typeof G=="string"&&o.d.D(G)},Re.preinit=function(G,b){if(typeof G=="string"&&b&&typeof b.as=="string"){var B=b.as,tt=U(B,b.crossOrigin),at=typeof b.integrity=="string"?b.integrity:void 0,et=typeof b.fetchPriority=="string"?b.fetchPriority:void 0;B==="style"?o.d.S(G,typeof b.precedence=="string"?b.precedence:void 0,{crossOrigin:tt,integrity:at,fetchPriority:et}):B==="script"&&o.d.X(G,{crossOrigin:tt,integrity:at,fetchPriority:et,nonce:typeof b.nonce=="string"?b.nonce:void 0})}},Re.preinitModule=function(G,b){if(typeof G=="string")if(typeof b=="object"&&b!==null){if(b.as==null||b.as==="script"){var B=U(b.as,b.crossOrigin);o.d.M(G,{crossOrigin:B,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0})}}else b==null&&o.d.M(G)},Re.preload=function(G,b){if(typeof G=="string"&&typeof b=="object"&&b!==null&&typeof b.as=="string"){var B=b.as,tt=U(B,b.crossOrigin);o.d.L(G,B,{crossOrigin:tt,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,type:typeof b.type=="string"?b.type:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0,referrerPolicy:typeof b.referrerPolicy=="string"?b.referrerPolicy:void 0,imageSrcSet:typeof b.imageSrcSet=="string"?b.imageSrcSet:void 0,imageSizes:typeof b.imageSizes=="string"?b.imageSizes:void 0,media:typeof b.media=="string"?b.media:void 0})}},Re.preloadModule=function(G,b){if(typeof G=="string")if(b){var B=U(b.as,b.crossOrigin);o.d.m(G,{as:typeof b.as=="string"&&b.as!=="script"?b.as:void 0,crossOrigin:B,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0})}else o.d.m(G)},Re.requestFormReset=function(G){o.d.r(G)},Re.unstable_batchedUpdates=function(G,b){return G(b)},Re.useFormState=function(G,b,B){return w.H.useFormState(G,b,B)},Re.useFormStatus=function(){return w.H.useHostTransitionStatus()},Re.version="19.3.1",Re}var Hh;function Yy(){if(Hh)return fr.exports;Hh=1;function i(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),fr.exports=qy(),fr.exports}/**
|
||||
*/var Uh;function qy(){if(Uh)return De;Uh=1;var i=mr();function r(G){var x="https://react.dev/errors/"+G;if(1<arguments.length){x+="?args[]="+encodeURIComponent(arguments[1]);for(var B=2;B<arguments.length;B++)x+="&args[]="+encodeURIComponent(arguments[B])}return"Minified React error #"+G+"; visit "+x+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function m(){}var o={d:{f:m,r:function(){throw Error(r(522))},D:m,C:m,L:m,m,X:m,S:m,M:m},p:0,findDOMNode:null},_=Symbol.for("react.portal"),C=Symbol.for("react.recoverable"),N=Symbol.for("react.optimistic_key");function b(G,x,B){var tt=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:_,key:tt==null?null:tt===N?N:""+tt,children:G,containerInfo:x,implementation:B}}var w=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function U(G,x){if(G==="font")return"";if(typeof x=="string")return x==="use-credentials"?x:""}return De.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=o,De.browser=function(G){return{$$typeof:C,_reason:G}},De.createPortal=function(G,x){var B=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!x||x.nodeType!==1&&x.nodeType!==9&&x.nodeType!==11)throw Error(r(299));return b(G,x,null,B)},De.flushSync=function(G){var x=w.T,B=o.p;try{if(w.T=null,o.p=2,G)return G()}finally{w.T=x,o.p=B,o.d.f()}},De.preconnect=function(G,x){typeof G=="string"&&(x?(x=x.crossOrigin,x=typeof x=="string"?x==="use-credentials"?x:"":void 0):x=null,o.d.C(G,x))},De.prefetchDNS=function(G){typeof G=="string"&&o.d.D(G)},De.preinit=function(G,x){if(typeof G=="string"&&x&&typeof x.as=="string"){var B=x.as,tt=U(B,x.crossOrigin),at=typeof x.integrity=="string"?x.integrity:void 0,et=typeof x.fetchPriority=="string"?x.fetchPriority:void 0;B==="style"?o.d.S(G,typeof x.precedence=="string"?x.precedence:void 0,{crossOrigin:tt,integrity:at,fetchPriority:et}):B==="script"&&o.d.X(G,{crossOrigin:tt,integrity:at,fetchPriority:et,nonce:typeof x.nonce=="string"?x.nonce:void 0})}},De.preinitModule=function(G,x){if(typeof G=="string")if(typeof x=="object"&&x!==null){if(x.as==null||x.as==="script"){var B=U(x.as,x.crossOrigin);o.d.M(G,{crossOrigin:B,integrity:typeof x.integrity=="string"?x.integrity:void 0,nonce:typeof x.nonce=="string"?x.nonce:void 0,fetchPriority:typeof x.fetchPriority=="string"?x.fetchPriority:void 0})}}else x==null&&o.d.M(G)},De.preload=function(G,x){if(typeof G=="string"&&typeof x=="object"&&x!==null&&typeof x.as=="string"){var B=x.as,tt=U(B,x.crossOrigin);o.d.L(G,B,{crossOrigin:tt,integrity:typeof x.integrity=="string"?x.integrity:void 0,nonce:typeof x.nonce=="string"?x.nonce:void 0,type:typeof x.type=="string"?x.type:void 0,fetchPriority:typeof x.fetchPriority=="string"?x.fetchPriority:void 0,referrerPolicy:typeof x.referrerPolicy=="string"?x.referrerPolicy:void 0,imageSrcSet:typeof x.imageSrcSet=="string"?x.imageSrcSet:void 0,imageSizes:typeof x.imageSizes=="string"?x.imageSizes:void 0,media:typeof x.media=="string"?x.media:void 0})}},De.preloadModule=function(G,x){if(typeof G=="string")if(x){var B=U(x.as,x.crossOrigin);o.d.m(G,{as:typeof x.as=="string"&&x.as!=="script"?x.as:void 0,crossOrigin:B,integrity:typeof x.integrity=="string"?x.integrity:void 0,nonce:typeof x.nonce=="string"?x.nonce:void 0,fetchPriority:typeof x.fetchPriority=="string"?x.fetchPriority:void 0})}else o.d.m(G)},De.requestFormReset=function(G){o.d.r(G)},De.unstable_batchedUpdates=function(G,x){return G(x)},De.useFormState=function(G,x,B){return w.H.useFormState(G,x,B)},De.useFormStatus=function(){return w.H.useHostTransitionStatus()},De.version="19.3.1",De}var Hh;function wy(){if(Hh)return fr.exports;Hh=1;function i(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),fr.exports=qy(),fr.exports}/**
|
||||
* @license React
|
||||
* react-dom-client.production.js
|
||||
*
|
||||
@@ -44,33 +44,33 @@
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/var Bh;function wy(){if(Bh)return ii;Bh=1;var i=By(),r=mr(),m=Yy();function o(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)e+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function _(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function C(t){for(var e=t,l=e;l&&!l.alternate;)e=l,(e.flags&4098)!==0&&(t=e.return),l=e.return;for(;e.return;)e=e.return;return e.tag===3?t:null}function N(t){if(t.tag===13){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function x(t){if(t.tag===31){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function w(t){if(C(t)!==t)throw Error(o(188))}function U(t){var e=t.alternate;if(!e){if(e=C(t),e===null)throw Error(o(188));return e!==t?null:t}for(var l=t,a=e;;){var n=l.return;if(n===null)break;var u=n.alternate;if(u===null){if(a=n.return,a!==null){l=a;continue}break}if(n.child===u.child){for(u=n.child;u;){if(u===l)return w(n),t;if(u===a)return w(n),e;u=u.sibling}throw Error(o(188))}if(l.return!==a.return)l=n,a=u;else{for(var c=!1,f=n.child;f;){if(f===l){c=!0,l=n,a=u;break}if(f===a){c=!0,a=n,l=u;break}f=f.sibling}if(!c){for(f=u.child;f;){if(f===l){c=!0,l=u,a=n;break}if(f===a){c=!0,a=u,l=n;break}f=f.sibling}if(!c)throw Error(o(189))}}if(l.alternate!==a)throw Error(o(190))}if(l.tag!==3)throw Error(o(188));return l.stateNode.current===l?t:e}function G(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t;for(t=t.child;t!==null;){if(e=G(t),e!==null)return e;t=t.sibling}return null}function b(t,e,l,a,n,u){for(;t!==null;){if((t.tag===5||t.tag===27||t.tag===6)&&l(t,a,n,u)||(t.tag!==22||t.memoizedState===null)&&(e||t.tag!==5&&t.tag!==27)&&b(t.child,e,l,a,n,u))return!0;t=t.sibling}return!1}function B(t){for(t=t.return;t!==null;){if(t.tag===3||t.tag===5||t.tag===27)return t;t=t.return}return null}function tt(t){var e=!1;for(t=t.return;t!==null&&(t.tag===4&&(e=!0),!(t.tag===3||t.tag===5||t.tag===27));)t=t.return;return e}function at(t){var e=[null,null],l=B(t);return l===null||et(e,t,l.child,{foundSelf:!1}),e}function et(t,e,l,a){for(;l!==null;){if(l===e)a.foundSelf=!0;else if(l.tag===5||l.tag===27||l.tag===6){if(a.foundSelf)return t[1]=l,!0;t[0]=l}else if((l.tag!==22||l.memoizedState===null)&&et(t,e,l.child,a))return!0;l=l.sibling}return!1}function L(t){switch(t.tag){case 5:case 27:case 6:return t.stateNode;case 3:return t.stateNode.containerInfo;default:throw Error(o(559))}}var dt=null,zt=null;function Jt(t,e,l){return t===l?!0:t===e?(dt=t,!0):!1}function nt(t,e,l){return t===l?(zt=t,!1):t===e?(zt!==null&&(dt=t),!0):!1}function Xt(t){if(t===null)return null;do t=t===null?null:t.return;while(t&&t.tag!==5&&t.tag!==27&&t.tag!==3);return t||null}function te(t,e,l){for(var a=0,n=t;n;n=l(n))a++;n=0;for(var u=e;u;u=l(u))n++;for(;0<a-n;)t=l(t),a--;for(;0<n-a;)e=l(e),n--;for(;a--;){if(t===e||e!==null&&t===e.alternate)return t;t=l(t),e=l(e)}return null}var ct=Object.assign,yt=Symbol.for("react.element"),re=Symbol.for("react.transitional.element"),he=Symbol.for("react.portal"),Vt=Symbol.for("react.fragment"),Ft=Symbol.for("react.strict_mode"),le=Symbol.for("react.profiler"),Ie=Symbol.for("react.consumer"),vt=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),lt=Symbol.for("react.suspense_list"),gt=Symbol.for("react.memo"),St=Symbol.for("react.lazy"),ve=Symbol.for("react.activity"),Ue=Symbol.for("react.legacy_hidden"),_e=Symbol.for("react.memo_cache_sentinel"),y=Symbol.for("react.view_transition"),R=Symbol.for("react.recoverable"),W=Symbol.iterator;function F(t){return t===null||typeof t!="object"?null:(t=W&&t[W]||t["@@iterator"],typeof t=="function"?t:null)}var pt=Symbol.for("react.client.reference");function mt(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===pt?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Vt:return"Fragment";case le:return"Profiler";case Ft:return"StrictMode";case A:return"Suspense";case lt:return"SuspenseList";case ve:return"Activity";case y:return"ViewTransition"}if(typeof t=="object")switch(t.$$typeof){case he:return"Portal";case vt:return t.displayName||"Context";case Ie:return(t._context.displayName||"Context")+".Consumer";case Y:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case gt:return e=t.displayName||null,e!==null?e:mt(t.type)||"Memo";case St:e=t._payload,t=t._init;try{return mt(t(e))}catch{}}return null}var _t=Array.isArray,V=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ut=m.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ae={pending:!1,data:null,method:null,acLine truncated
|
||||
*/var Bh;function Yy(){if(Bh)return ii;Bh=1;var i=By(),r=mr(),m=wy();function o(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)e+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function _(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function C(t){for(var e=t,l=e;l&&!l.alternate;)e=l,(e.flags&4098)!==0&&(t=e.return),l=e.return;for(;e.return;)e=e.return;return e.tag===3?t:null}function N(t){if(t.tag===13){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function b(t){if(t.tag===31){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function w(t){if(C(t)!==t)throw Error(o(188))}function U(t){var e=t.alternate;if(!e){if(e=C(t),e===null)throw Error(o(188));return e!==t?null:t}for(var l=t,a=e;;){var n=l.return;if(n===null)break;var u=n.alternate;if(u===null){if(a=n.return,a!==null){l=a;continue}break}if(n.child===u.child){for(u=n.child;u;){if(u===l)return w(n),t;if(u===a)return w(n),e;u=u.sibling}throw Error(o(188))}if(l.return!==a.return)l=n,a=u;else{for(var s=!1,f=n.child;f;){if(f===l){s=!0,l=n,a=u;break}if(f===a){s=!0,a=n,l=u;break}f=f.sibling}if(!s){for(f=u.child;f;){if(f===l){s=!0,l=u,a=n;break}if(f===a){s=!0,a=u,l=n;break}f=f.sibling}if(!s)throw Error(o(189))}}if(l.alternate!==a)throw Error(o(190))}if(l.tag!==3)throw Error(o(188));return l.stateNode.current===l?t:e}function G(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t;for(t=t.child;t!==null;){if(e=G(t),e!==null)return e;t=t.sibling}return null}function x(t,e,l,a,n,u){for(;t!==null;){if((t.tag===5||t.tag===27||t.tag===6)&&l(t,a,n,u)||(t.tag!==22||t.memoizedState===null)&&(e||t.tag!==5&&t.tag!==27)&&x(t.child,e,l,a,n,u))return!0;t=t.sibling}return!1}function B(t){for(t=t.return;t!==null;){if(t.tag===3||t.tag===5||t.tag===27)return t;t=t.return}return null}function tt(t){var e=!1;for(t=t.return;t!==null&&(t.tag===4&&(e=!0),!(t.tag===3||t.tag===5||t.tag===27));)t=t.return;return e}function at(t){var e=[null,null],l=B(t);return l===null||et(e,t,l.child,{foundSelf:!1}),e}function et(t,e,l,a){for(;l!==null;){if(l===e)a.foundSelf=!0;else if(l.tag===5||l.tag===27||l.tag===6){if(a.foundSelf)return t[1]=l,!0;t[0]=l}else if((l.tag!==22||l.memoizedState===null)&&et(t,e,l.child,a))return!0;l=l.sibling}return!1}function L(t){switch(t.tag){case 5:case 27:case 6:return t.stateNode;case 3:return t.stateNode.containerInfo;default:throw Error(o(559))}}var dt=null,zt=null;function Ft(t,e,l){return t===l?!0:t===e?(dt=t,!0):!1}function nt(t,e,l){return t===l?(zt=t,!1):t===e?(zt!==null&&(dt=t),!0):!1}function Xt(t){if(t===null)return null;do t=t===null?null:t.return;while(t&&t.tag!==5&&t.tag!==27&&t.tag!==3);return t||null}function ee(t,e,l){for(var a=0,n=t;n;n=l(n))a++;n=0;for(var u=e;u;u=l(u))n++;for(;0<a-n;)t=l(t),a--;for(;0<n-a;)e=l(e),n--;for(;a--;){if(t===e||e!==null&&t===e.alternate)return t;t=l(t),e=l(e)}return null}var ct=Object.assign,yt=Symbol.for("react.element"),oe=Symbol.for("react.transitional.element"),ve=Symbol.for("react.portal"),Vt=Symbol.for("react.fragment"),Wt=Symbol.for("react.strict_mode"),ae=Symbol.for("react.profiler"),Ie=Symbol.for("react.consumer"),vt=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),lt=Symbol.for("react.suspense_list"),gt=Symbol.for("react.memo"),pt=Symbol.for("react.lazy"),ye=Symbol.for("react.activity"),He=Symbol.for("react.legacy_hidden"),Ee=Symbol.for("react.memo_cache_sentinel"),y=Symbol.for("react.view_transition"),R=Symbol.for("react.recoverable"),W=Symbol.iterator;function F(t){return t===null||typeof t!="object"?null:(t=W&&t[W]||t["@@iterator"],typeof t=="function"?t:null)}var St=Symbol.for("react.client.reference");function mt(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===St?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Vt:return"Fragment";case ae:return"Profiler";case Wt:return"StrictMode";case A:return"Suspense";case lt:return"SuspenseList";case ye:return"Activity";case y:return"ViewTransition"}if(typeof t=="object")switch(t.$$typeof){case ve:return"Portal";case vt:return t.displayName||"Context";case Ie:return(t._context.displayName||"Context")+".Consumer";case Y:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case gt:return e=t.displayName||null,e!==null?e:mt(t.type)||"Memo";case pt:e=t._payload,t=t._init;try{return mt(t(e))}catch{}}return null}var _t=Array.isArray,V=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ut=m.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne={pending:!1,data:null,method:null,acLine truncated
|
||||
at`)?" (<anonymous>)":-1<l.stack.indexOf("@")?"@unknown:0:0":""}return`
|
||||
`+Be+t+ne}var sl=!1;function Jl(t,e){if(!t||sl)return"";sl=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(e){var z=function(){throw Error()};if(Object.defineProperty(z.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(z,[])}catch(q){var g=q}Reflect.construct(t,[],z)}else{try{z.call()}catch(q){g=q}z=!1;try{var T=Object.getOwnPropertyDescriptor(t.prototype,"props");Object.defineProperty(t.prototype,"props",{configurable:!0,set:function(){throw Error()}}),z=!0,new t}finally{z&&(T!==void 0?Object.defineProperty(t.prototype,"props",T):delete t.prototype.props)}}}else{try{throw Error()}catch(q){g=q}(z=t())&&typeof z.catch=="function"&&z.catch(function(){})}}catch(q){if(q&&g&&typeof q.stack=="string")return[q.stack,g.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var n=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");n&&n.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var u=a.DetermineComponentFrameRoot(),c=u[0],f=u[1];if(c&&f){var d=c.split(`
|
||||
`),p=f.split(`
|
||||
`);for(n=a=0;a<d.length&&!d[a].includes("DetermineComponentFrameRoot");)a++;for(;n<p.length&&!p[n].includes("DetermineComponentFrameRoot");)n++;if(a===d.length||n===p.length)for(a=d.length-1,n=p.length-1;1<=a&&0<=n&&d[a]!==p[n];)n--;for(;1<=a&&0<=n;a--,n--)if(d[a]!==p[n]){if(a!==1||n!==1)do if(a--,n--,0>n||d[a]!==p[n]){var E=`
|
||||
`+d[a].replace(" at new "," at ");return t.displayName&&E.includes("<anonymous>")&&(E=E.replace("<anonymous>",t.displayName)),E}while(1<=a&&0<=n);break}}}finally{sl=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?ue(l):""}function da(t,e){switch(t.tag){case 26:case 27:case 5:return ue(t.type);case 16:return ue("Lazy");case 13:return t.child!==e&&e!==null?ue("Suspense Fallback"):ue("Suspense");case 19:return ue("SuspenseList");case 0:case 15:return Jl(t.type,!1);case 11:return Jl(t.type.render,!1);case 1:return Jl(t.type,!0);case 31:return ue("Activity");case 30:return ue("ViewTransition");default:return""}}function Dl(t){try{var e="",l=null;do e+=da(t,l),l=t,t=t.return;while(t);return e}catch(a){return`
|
||||
`+qe+t+ue}var sl=!1;function Jl(t,e){if(!t||sl)return"";sl=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(e){var z=function(){throw Error()};if(Object.defineProperty(z.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(z,[])}catch(q){var g=q}Reflect.construct(t,[],z)}else{try{z.call()}catch(q){g=q}z=!1;try{var T=Object.getOwnPropertyDescriptor(t.prototype,"props");Object.defineProperty(t.prototype,"props",{configurable:!0,set:function(){throw Error()}}),z=!0,new t}finally{z&&(T!==void 0?Object.defineProperty(t.prototype,"props",T):delete t.prototype.props)}}}else{try{throw Error()}catch(q){g=q}(z=t())&&typeof z.catch=="function"&&z.catch(function(){})}}catch(q){if(q&&g&&typeof q.stack=="string")return[q.stack,g.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var n=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");n&&n.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var u=a.DetermineComponentFrameRoot(),s=u[0],f=u[1];if(s&&f){var d=s.split(`
|
||||
`),S=f.split(`
|
||||
`);for(n=a=0;a<d.length&&!d[a].includes("DetermineComponentFrameRoot");)a++;for(;n<S.length&&!S[n].includes("DetermineComponentFrameRoot");)n++;if(a===d.length||n===S.length)for(a=d.length-1,n=S.length-1;1<=a&&0<=n&&d[a]!==S[n];)n--;for(;1<=a&&0<=n;a--,n--)if(d[a]!==S[n]){if(a!==1||n!==1)do if(a--,n--,0>n||d[a]!==S[n]){var E=`
|
||||
`+d[a].replace(" at new "," at ");return t.displayName&&E.includes("<anonymous>")&&(E=E.replace("<anonymous>",t.displayName)),E}while(1<=a&&0<=n);break}}}finally{sl=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?ie(l):""}function da(t,e){switch(t.tag){case 26:case 27:case 5:return ie(t.type);case 16:return ie("Lazy");case 13:return t.child!==e&&e!==null?ie("Suspense Fallback"):ie("Suspense");case 19:return ie("SuspenseList");case 0:case 15:return Jl(t.type,!1);case 11:return Jl(t.type.render,!1);case 1:return Jl(t.type,!0);case 31:return ie("Activity");case 30:return ie("ViewTransition");default:return""}}function Dl(t){try{var e="",l=null;do e+=da(t,l),l=t,t=t.return;while(t);return e}catch(a){return`
|
||||
Error generating stack: `+a.message+`
|
||||
`+a.stack}}var Zt=Object.prototype.hasOwnProperty,Pe=i.unstable_scheduleCallback,qe=i.unstable_cancelCallback,Tl=i.unstable_shouldYield,fl=i.unstable_requestPaint,Gt=i.unstable_now,Ul=i.unstable_getCurrentPriorityLevel,mn=i.unstable_ImmediatePriority,Qa=i.unstable_UserBlockingPriority,ge=i.unstable_NormalPriority,Xa=i.unstable_LowPriority,ma=i.unstable_IdlePriority,su=i.log,fu=i.unstable_setDisableYieldValue,Fl=null,Ee=null;function rl(t){if(typeof su=="function"&&fu(t),Ee&&typeof Ee.setStrictMode=="function")try{Ee.setStrictMode(Fl,t)}catch{}}var Ne=Math.clz32?Math.clz32:du,ru=Math.log,ou=Math.LN2;function du(t){return t>>>=0,t===0?32:31-(ru(t)/ou|0)|0}var H=256,D=262144,X=4194304;function K(t){var e=t&42;if(e!==0)return e;switch(t&-t){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 t&-t;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function O(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var n=0,u=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~u,a!==0?n=K(a):(c&=f,c!==0?n=K(c):l||(l=f&~t,l!==0&&(n=K(l))))):(f=a&~u,f!==0?n=K(f):c!==0?n=K(c):l||(l=a&~t,l!==0&&(n=K(l)))),n===0?0:e!==0&&e!==n&&(e&u)===0&&(u=n&-n,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:n}function k(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function J(t,e){(e&8)!==0&&(e|=e&32);var l=t.entangledLanes;if(l!==0)for(t=t.entanglements,l&=e;0<l;){var a=31-Ne(l),n=1<<a;e|=t[a],l&=~n}return e}function At(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+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 e+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 Et(){var t=X;return X<<=1,(X&62914560)===0&&(X=4194304),t}function Se(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function pe(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Rc(t,e,l,a,n,u){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var f=t.entanglements,d=t.expirationTimes,p=t.hiddenUpdates;for(l=c&~l;0<l;){var E=31-Ne(l),z=1<<E;f[E]=0,d[E]=-1;var g=p[E];if(g!==null)for(p[E]=null,E=0;E<g.length;E++){var T=g[E];T!==null&&(T.lane&=-536870913)}l&=~z}a!==0&&ci(t,a,0),u!==0&&n===0&&t.tag!==0&&(t.suspendedLanes|=u&~(c&~e))}function ci(t,e,l){t.pendingLanes|=e,t.suspendedLanes&=~e;var a=31-Ne(e);t.entangledLanes|=e,t.entanglements[a]=t.entanglements[a]|1073741824|l&261930}function hn(t,e){var l=t.entangledLanes|=e;for(t=t.entanglements;l;){var a=31-Ne(l),n=1<<a;n&e|t[a]&e&&(t[a]|=e),l&=~n}}function Wl(t,e){var l=e&-e;return l=(l&42)!==0?1:Hl(l),(l&(t.suspendedLanes|e))!==0?0:l}function Hl(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;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:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function mu(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function hu(){var t=ut.p;return t!==0?t:(t=window.event,t===void 0?32:xh(t.type))}function Le(t,e){var l=ut.p;try{return ut.p=t,e()}finally{ut.p=l}}var $t=Math.random().toString(36).slice(2),de="__reactFiber$"+$t,Ze="__reactProps$"+$t,vn="__reactContainer$"+$t,vr="__reactEvents$"+$t,Kh="__reactListeners$"+$t,Jh="__reactHandles$"+$t,yr="__reactResources$"+$t,vu="__reactMarker$"+$t,si="__reactLoad$"+$t;function fi(t){delete t[de],delete t[Ze],delete t[Kh],delete t[Jh]}function Va(t){var e;if(e=t[de])return e;for(var l=t.parentNode;l;){if(e=l[vn]||l[de]){if(l=e.alternate,e.child!==null||l!==null&&l.child!==null)for(t=eh(t);t!==null;){if(l=t[de])return l;t=eh(t)}return e}t=l,l=t.parentNode}return null}function yn(t){if(t=t[de]||t[vn]){var e=t.tag;if(e===5||e===6||e===13||e===31||e===26||e===27||e===3)return t}return null}function yu(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t.stateNode;throw Error(o(33))}function gn(t){var e=t[yr];return e||(e=t[yr]={hoistableStyles:new Map,hoistableScripts:new Map}),e}function be(t){t[vu]=!0}function gr(t){t[si]=void 0}var Sr=new Set,pr={};function La(t,e){Sn(t,e),Sn(t+"Capture",e)}function Sn(t,e){for(pLine truncated
|
||||
`).replace(H0,"")}function Hm(t,e){return e=Um(e),Um(t)===e}function qt(t,e,l,a,n,u){switch(l){case"children":if(typeof a=="string")e==="body"||e==="textarea"&&a===""||bn(t,a);else if(typeof a=="number"||typeof a=="bigint")e!=="body"&&bn(t,""+a);else return;break;case"className":oi(t,"class",a);break;case"tabIndex":oi(t,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":oi(t,l,a);break;case"style":Or(t,a,u);return;case"data":if(e!=="object"){oi(t,"data",a);break}case"src":case"href":if(a===""&&(e!=="a"||l!=="href")){t.removeAttribute(l);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"action":case"formAction":if(typeof a=="function"){t.setAttribute(l,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof u=="function"&&(l==="formAction"?(e!=="input"&&qt(t,e,"name",n.name,n,null),qt(t,e,"formEncType",n.formEncType,n,null),qt(t,e,"formMethod",n.formMethod,n,null),qt(t,e,"formTarget",n.formTarget,n,null)):(qt(t,e,"encType",n.encType,n,null),qt(t,e,"method",n.method,n,null),qt(t,e,"target",n.target,n,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"onClick":a!=null&&(t.onclick=Bl);return;case"onScroll":a!=null&&xt("scroll",t);return;case"onScrollEnd":a!=null&&xt("scrollend",t);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"multiple":t.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":t.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){t.removeAttribute("xlink:href");break}l=di(a),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",l);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"credentialless":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,""):t.removeAttribute(l);break;case"capture":case"download":a===!0?t.setAttribute(l,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?t.setAttribute(l,a):t.removeAttribute(l);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?t.removeAttribute(l):t.setAttribute(l,a);break;case"popover":xt("beforetoggle",t),xt("toggle",t),ri(t,"popover",a);break;case"xlinkActuate":$l(t,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":$l(t,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":$l(t,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":$l(t,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":$l(t,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":$l(t,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":$l(t,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":$l(t,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":$l(t,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":ri(t,"is",a);break;case"innerText":case"textContent":return;default:if(!(2<l.length)||l[0]!=="o"&&l[0]!=="O"||l[1]!=="n"&&l[1]!=="N")l=tv.get(l)||l,ri(t,l,a);else return}Ct=!0}function Hf(t,e,l,a,n,u){switch(l){case"style":Or(t,a,u);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"children":if(typeof a=="string")bn(t,a);else if(typeof a=="number"||typeof a=="bigint")bn(t,""+a);else return;break;case"onScroll":a!=null&&xt("scroll",t);return;case"onScrollEnd":a!=null&&xt("scroLine truncated
|
||||
`+a.stack}}var Kt=Object.prototype.hasOwnProperty,Pe=i.unstable_scheduleCallback,we=i.unstable_cancelCallback,Tl=i.unstable_shouldYield,fl=i.unstable_requestPaint,Gt=i.unstable_now,Ul=i.unstable_getCurrentPriorityLevel,mn=i.unstable_ImmediatePriority,Qa=i.unstable_UserBlockingPriority,pe=i.unstable_NormalPriority,Xa=i.unstable_LowPriority,ma=i.unstable_IdlePriority,su=i.log,fu=i.unstable_setDisableYieldValue,Fl=null,Ne=null;function rl(t){if(typeof su=="function"&&fu(t),Ne&&typeof Ne.setStrictMode=="function")try{Ne.setStrictMode(Fl,t)}catch{}}var Ce=Math.clz32?Math.clz32:du,ru=Math.log,ou=Math.LN2;function du(t){return t>>>=0,t===0?32:31-(ru(t)/ou|0)|0}var H=256,D=262144,X=4194304;function K(t){var e=t&42;if(e!==0)return e;switch(t&-t){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 t&-t;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function O(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var n=0,u=t.suspendedLanes,s=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~u,a!==0?n=K(a):(s&=f,s!==0?n=K(s):l||(l=f&~t,l!==0&&(n=K(l))))):(f=a&~u,f!==0?n=K(f):s!==0?n=K(s):l||(l=a&~t,l!==0&&(n=K(l)))),n===0?0:e!==0&&e!==n&&(e&u)===0&&(u=n&-n,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:n}function k(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function J(t,e){(e&8)!==0&&(e|=e&32);var l=t.entangledLanes;if(l!==0)for(t=t.entanglements,l&=e;0<l;){var a=31-Ce(l),n=1<<a;e|=t[a],l&=~n}return e}function At(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+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 e+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 Et(){var t=X;return X<<=1,(X&62914560)===0&&(X=4194304),t}function Se(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function be(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Rc(t,e,l,a,n,u){var s=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var f=t.entanglements,d=t.expirationTimes,S=t.hiddenUpdates;for(l=s&~l;0<l;){var E=31-Ce(l),z=1<<E;f[E]=0,d[E]=-1;var g=S[E];if(g!==null)for(S[E]=null,E=0;E<g.length;E++){var T=g[E];T!==null&&(T.lane&=-536870913)}l&=~z}a!==0&&ci(t,a,0),u!==0&&n===0&&t.tag!==0&&(t.suspendedLanes|=u&~(s&~e))}function ci(t,e,l){t.pendingLanes|=e,t.suspendedLanes&=~e;var a=31-Ce(e);t.entangledLanes|=e,t.entanglements[a]=t.entanglements[a]|1073741824|l&261930}function hn(t,e){var l=t.entangledLanes|=e;for(t=t.entanglements;l;){var a=31-Ce(l),n=1<<a;n&e|t[a]&e&&(t[a]|=e),l&=~n}}function Wl(t,e){var l=e&-e;return l=(l&42)!==0?1:Hl(l),(l&(t.suspendedLanes|e))!==0?0:l}function Hl(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;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:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function mu(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function hu(){var t=ut.p;return t!==0?t:(t=window.event,t===void 0?32:xh(t.type))}function Le(t,e){var l=ut.p;try{return ut.p=t,e()}finally{ut.p=l}}var It=Math.random().toString(36).slice(2),me="__reactFiber$"+It,Ze="__reactProps$"+It,vn="__reactContainer$"+It,vr="__reactEvents$"+It,Kh="__reactListeners$"+It,Jh="__reactHandles$"+It,yr="__reactResources$"+It,vu="__reactMarker$"+It,si="__reactLoad$"+It;function fi(t){delete t[me],delete t[Ze],delete t[Kh],delete t[Jh]}function Va(t){var e;if(e=t[me])return e;for(var l=t.parentNode;l;){if(e=l[vn]||l[me]){if(l=e.alternate,e.child!==null||l!==null&&l.child!==null)for(t=eh(t);t!==null;){if(l=t[me])return l;t=eh(t)}return e}t=l,l=t.parentNode}return null}function yn(t){if(t=t[me]||t[vn]){var e=t.tag;if(e===5||e===6||e===13||e===31||e===26||e===27||e===3)return t}return null}function yu(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t.stateNode;throw Error(o(33))}function gn(t){var e=t[yr];return e||(e=t[yr]={hoistableStyles:new Map,hoistableScripts:new Map}),e}function xe(t){t[vu]=!0}function gr(t){t[si]=void 0}var pr=new Set,Sr={};function La(t,e){pn(t,e),pn(t+"Capture",e)}function pn(t,e){for(SLine truncated
|
||||
`).replace(H0,"")}function Hm(t,e){return e=Um(e),Um(t)===e}function qt(t,e,l,a,n,u){switch(l){case"children":if(typeof a=="string")e==="body"||e==="textarea"&&a===""||bn(t,a);else if(typeof a=="number"||typeof a=="bigint")e!=="body"&&bn(t,""+a);else return;break;case"className":oi(t,"class",a);break;case"tabIndex":oi(t,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":oi(t,l,a);break;case"style":Or(t,a,u);return;case"data":if(e!=="object"){oi(t,"data",a);break}case"src":case"href":if(a===""&&(e!=="a"||l!=="href")){t.removeAttribute(l);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"action":case"formAction":if(typeof a=="function"){t.setAttribute(l,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof u=="function"&&(l==="formAction"?(e!=="input"&&qt(t,e,"name",n.name,n,null),qt(t,e,"formEncType",n.formEncType,n,null),qt(t,e,"formMethod",n.formMethod,n,null),qt(t,e,"formTarget",n.formTarget,n,null)):(qt(t,e,"encType",n.encType,n,null),qt(t,e,"method",n.method,n,null),qt(t,e,"target",n.target,n,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"onClick":a!=null&&(t.onclick=Bl);return;case"onScroll":a!=null&&xt("scroll",t);return;case"onScrollEnd":a!=null&&xt("scrollend",t);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"multiple":t.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":t.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){t.removeAttribute("xlink:href");break}l=di(a),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",l);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"credentialless":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,""):t.removeAttribute(l);break;case"capture":case"download":a===!0?t.setAttribute(l,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?t.setAttribute(l,a):t.removeAttribute(l);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?t.removeAttribute(l):t.setAttribute(l,a);break;case"popover":xt("beforetoggle",t),xt("toggle",t),ri(t,"popover",a);break;case"xlinkActuate":$l(t,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":$l(t,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":$l(t,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":$l(t,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":$l(t,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":$l(t,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":$l(t,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":$l(t,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":$l(t,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":ri(t,"is",a);break;case"innerText":case"textContent":return;default:if(!(2<l.length)||l[0]!=="o"&&l[0]!=="O"||l[1]!=="n"&&l[1]!=="N")l=tv.get(l)||l,ri(t,l,a);else return}Ct=!0}function Hf(t,e,l,a,n,u){switch(l){case"style":Or(t,a,u);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"children":if(typeof a=="string")bn(t,a);else if(typeof a=="number"||typeof a=="bigint")bn(t,""+a);else return;break;case"onScroll":a!=null&&xt("scroll",t);return;case"onScrollEnd":a!=null&&xt("scroLine truncated
|
||||
`;At&&(Se+=At+`
|
||||
`),Et&&(Se+=(Array.isArray(Et)?Et.join(`
|
||||
`):String(Et))+`
|
||||
`),Se+=JSON.stringify(J,null,2).slice(0,4e3),xl(Se),ae("已返回登录信息,见下方")}catch(J){ae("发起失败:"+J.message)}},[]),D=v.useCallback(async()=>{const O=at.trim();if(!O){tt("请填要查配额的用户 id");return}try{const k=await P($.adminQuotaUser(O));tt("用户 "+O.slice(0,8)+":本月用量 "+or(k.used_usd_micros)+" / 配额 "+or(k.quota_usd_micros)+(k.remaining_usd_micros!==null&&k.remaining_usd_micros!==void 0?"(剩余 "+or(k.remaining_usd_micros)+")":"")+" | 月份 "+(k.month||""))}catch(k){tt(rr(k))}},[at]),X=v.useCallback(async()=>{if(window.confirm("确定手动触发 sweep 吗?超阈值的陈旧 running 任务会被标为 interrupted。"))try{const k=(await P($.adminSweep,"POST",{})).swept||[];tt("sweep 完成,清理 "+k.length+" 个任务"+(k.length?":"+k.join("、"):""))}catch(O){tt(rr(O))}},[]),K=v.useCallback(async()=>{try{const O=await P($.adminBackup,"POST",{});tt("备份完成:backend="+O.backend+" | 路径 "+O.path+" | 大小 "+O.size_bytes+" 字节 | 任务 "+O.task_count+" 行")}catch(O){tt(rr(O))}},[]);return{keySaved:i,keyState:m,quotaText:_,healthText:N,adminGate:w,adminBody:G,adminResult:B,adminUserId:at,setAdminUserId:et,projects:L,projectId:zt,setProjectId:Jt,projectMsg:nt,githubRepos:te,workers:yt,workersSummary:he,workersError:Ft,members:Ie,memberMsg:Y,memberError:lt,skills:St,apps:Ue,mcpServers:y,skillMsg:W,skillError:pt,mcpMsg:_t,mcpOauthMsg:ut,mcpOauthBox:ka,envs:Xe,envCount:Rt,envMsg:Kl,envRepoLine:oa,envRepoBar:zl,envRepoMsg:jl,envSelect:ne,setEnvSelect:ue,models:sl,modelCustomVisible:da,refreshHealth:qe,loadQuota:Tl,probeAdmin:fl,refreshProjects:Gt,loadGithubRepos:Ul,loadRelayModels:mn,refreshWorkers:Qa,refreshEnvs:ge,refreshMembers:Xa,refreshSkills:ma,saveKeyInput:su,clearKeyInput:fu,createProject:Fl,createEnv:Ee,archiveEnv:rl,saveEnvRepo:Ne,inviteMember:ru,changeMemberRole:ou,reloadMcp:du,mcpOauth:H,adminQuota:D,adminSweep:X,adminBackup:K}}function $y(){const[i,r]=v.useState([]),[m,o]=v.useState(""),[_,C]=v.useState(""),[N,x]=v.useState(""),[w,U]=v.useState(""),G=v.useCallback(async(at,et)=>{const L=at!==void 0?at:et;if(!L){r([]);return}try{const dt=await P($.tasks(L));r(dt.tasks||[]),o("")}catch(dt){o("加载失败:"+dt.message)}},[]),b=v.useMemo(()=>{const at=w.trim().toLowerCase();return i.filter(et=>!(_&&et.status!==_||N&&(et.executor||"")!==N||at&&!((et.id||"")+" "+(et.prompt||"")).toLowerCase().includes(at)))},[i,_,N,w]),B=b.length+" 个任务(共 "+i.length+" 个)",tt=v.useCallback(async(at,et)=>{const L={...at};et.length&&(L.upload_id=await Jy(et));const dt=await P($.tasksCreate,"POST",L);return"任务已建:"+De(dt.id)},[]);return{tasks:i,taskError:m,statusFilter:_,setStatusFilter:C,executorFilter:N,setExecutorFilter:x,searchText:w,setSearchText:U,filteredTasks:b,taskCountText:B,refreshTasks:G,dispatch:tt}}function Iy(i,r){const[m,o]=v.useState(null),[_,C]=v.useState(""),[N,x]=v.useState(""),[w,U]=v.useState(""),[G,b]=v.useState(""),[B,tt]=v.useState(void 0),[at,et]=v.useState(!1),[L,dt]=v.useState(""),[zt,Jt]=v.useState([]),[nt,Xt]=v.useState([]),[te,ct]=v.useState(""),[yt,re]=v.useState([]),[he,Vt]=v.useState(""),[Ft,le]=v.useState(""),[Ie,vt]=v.useState([]),[Y,A]=v.useState(""),[lt,gt]=v.useState(""),[St,ve]=v.useState(""),[Ue,_e]=v.useState(""),[y,R]=v.useState([]),[W,F]=v.useState([]),[pt,mt]=v.useState(""),[_t,V]=v.useState([]),[ut,ae]=v.useState(""),[ka,xl]=v.useState(""),[Xe,Wt]=v.useState(""),[Rt,oe]=v.useState(""),[Kl,ye]=v.useState([]),[oa,Ve]=v.useState(""),[zl,Rl]=v.useState(null),jl=v.useRef(null),Be=v.useRef(null),ne=v.useRef(null);ne.current=m;const ue=v.useCallback(()=>{if(jl.current){try{jl.current.abort()}catch{}jl.current=null}Be.current&&(clearTimeout(Be.current),Be.current=null)},[]),sl=v.useCallback(async H=>{try{const D=await P($.taskAgents(H));Xt(D.agents||[]),ct(D.note||"")}catch(D){Xt([]),ct("子代理链路加载失败:"+D.message)}},[]),Jl=v.useCallback(H=>{Be.current&&clearTimeout(Be.current),Be.current=setTimeout(()=>void sl(H),1e3)},[sl]),da=v.useCallback(async H=>{if(!H.coordinator_parts){Jt([]);return}try{const D=await P($.tasksByParent(H.project_id||"",H.id));Jt(D.tasks||[])}catch{Jt([])}},[]),Dl=v.useCallback(async H=>{try{const D=await P($.taskCost(H));tt(D)}catch{tt(null)}},[]),Zt=v.useCallback(async H=>{try{const D=await P($.taskFollowups(H));R(D.followups||[])}catch{R([])}},[]),Pe=v.useCallback(async H=>{try{const D=await P($.taskChatHistory(H));Rl(D)}catch{Rl(null)}},[]),qe=v.useCallback(async H=>{var X;const D=H||((X=ne.current)==null?void 0:X.id);if(D)try{const K=await P($.taskReviews(D));re(K.reviews||[]),le("")}catch(K){le("评审队列加载失败:"+K.message)}},[]),Tl=v.useCallback(async H=>{var X;const D=H||((X=ne.current)==null?void 0:X.id);if(D)try{const K=await P($.taskApprovals(D));F(K.approvals||[])}catch(K){mt("审批队列加载失败:"+K.message)}},[]),fl=v.useCallback(async H=>{try{const D=await P($.taskMessages(H));V(D.messages||[])}catch{V([])}},[]Line truncated
|
||||
`),Se+=JSON.stringify(J,null,2).slice(0,4e3),xl(Se),ne("已返回登录信息,见下方")}catch(J){ne("发起失败:"+J.message)}},[]),D=v.useCallback(async()=>{const O=at.trim();if(!O){tt("请填要查配额的用户 id");return}try{const k=await P($.adminQuotaUser(O));tt("用户 "+O.slice(0,8)+":本月用量 "+or(k.used_usd_micros)+" / 配额 "+or(k.quota_usd_micros)+(k.remaining_usd_micros!==null&&k.remaining_usd_micros!==void 0?"(剩余 "+or(k.remaining_usd_micros)+")":"")+" | 月份 "+(k.month||""))}catch(k){tt(rr(k))}},[at]),X=v.useCallback(async()=>{if(window.confirm("确定手动触发 sweep 吗?超阈值的陈旧 running 任务会被标为 interrupted。"))try{const k=(await P($.adminSweep,"POST",{})).swept||[];tt("sweep 完成,清理 "+k.length+" 个任务"+(k.length?":"+k.join("、"):""))}catch(O){tt(rr(O))}},[]),K=v.useCallback(async()=>{try{const O=await P($.adminBackup,"POST",{});tt("备份完成:backend="+O.backend+" | 路径 "+O.path+" | 大小 "+O.size_bytes+" 字节 | 任务 "+O.task_count+" 行")}catch(O){tt(rr(O))}},[]);return{keySaved:i,keyState:m,quotaText:_,healthText:N,adminGate:w,adminBody:G,adminResult:B,adminUserId:at,setAdminUserId:et,projects:L,projectId:zt,setProjectId:Ft,projectMsg:nt,githubRepos:ee,workers:yt,workersSummary:ve,workersError:Wt,members:Ie,memberMsg:Y,memberError:lt,skills:pt,apps:He,mcpServers:y,skillMsg:W,skillError:St,mcpMsg:_t,mcpOauthMsg:ut,mcpOauthBox:ka,envs:Xe,envCount:Rt,envMsg:Kl,envRepoLine:oa,envRepoBar:zl,envRepoMsg:jl,envSelect:ue,setEnvSelect:ie,models:sl,modelCustomVisible:da,refreshHealth:we,loadQuota:Tl,probeAdmin:fl,refreshProjects:Gt,loadGithubRepos:Ul,loadRelayModels:mn,refreshWorkers:Qa,refreshEnvs:pe,refreshMembers:Xa,refreshSkills:ma,saveKeyInput:su,clearKeyInput:fu,createProject:Fl,createEnv:Ne,archiveEnv:rl,saveEnvRepo:Ce,inviteMember:ru,changeMemberRole:ou,reloadMcp:du,mcpOauth:H,adminQuota:D,adminSweep:X,adminBackup:K}}function $y(){const[i,r]=v.useState([]),[m,o]=v.useState(""),[_,C]=v.useState(""),[N,b]=v.useState(""),[w,U]=v.useState(""),G=v.useCallback(async(at,et)=>{const L=at!==void 0?at:et;if(!L){r([]);return}try{const dt=await P($.tasks(L));r(dt.tasks||[]),o("")}catch(dt){o("加载失败:"+dt.message)}},[]),x=v.useMemo(()=>{const at=w.trim().toLowerCase();return i.filter(et=>!(_&&et.status!==_||N&&(et.executor||"")!==N||at&&!((et.id||"")+" "+(et.prompt||"")).toLowerCase().includes(at)))},[i,_,N,w]),B=x.length+" 个任务(共 "+i.length+" 个)",tt=v.useCallback(async(at,et)=>{const L={...at};et.length&&(L.upload_id=await Jy(et));const dt=await P($.tasksCreate,"POST",L);return"任务已建:"+Ue(dt.id)},[]);return{tasks:i,taskError:m,statusFilter:_,setStatusFilter:C,executorFilter:N,setExecutorFilter:b,searchText:w,setSearchText:U,filteredTasks:x,taskCountText:B,refreshTasks:G,dispatch:tt}}function Iy(i,r){const[m,o]=v.useState(null),[_,C]=v.useState(""),[N,b]=v.useState(""),[w,U]=v.useState(""),[G,x]=v.useState(""),[B,tt]=v.useState(void 0),[at,et]=v.useState(!1),[L,dt]=v.useState(""),[zt,Ft]=v.useState([]),[nt,Xt]=v.useState([]),[ee,ct]=v.useState(""),[yt,oe]=v.useState([]),[ve,Vt]=v.useState(""),[Wt,ae]=v.useState(""),[Ie,vt]=v.useState([]),[Y,A]=v.useState(""),[lt,gt]=v.useState(""),[pt,ye]=v.useState(""),[He,Ee]=v.useState(""),[y,R]=v.useState([]),[W,F]=v.useState([]),[St,mt]=v.useState(""),[_t,V]=v.useState([]),[ut,ne]=v.useState(""),[ka,xl]=v.useState(""),[Xe,$t]=v.useState(""),[Rt,de]=v.useState(""),[Kl,ge]=v.useState([]),[oa,Ve]=v.useState(""),[zl,Rl]=v.useState(null),jl=v.useRef(null),qe=v.useRef(null),ue=v.useRef(null);ue.current=m;const ie=v.useCallback(()=>{if(jl.current){try{jl.current.abort()}catch{}jl.current=null}qe.current&&(clearTimeout(qe.current),qe.current=null)},[]),sl=v.useCallback(async H=>{try{const D=await P($.taskAgents(H));Xt(D.agents||[]),ct(D.note||"")}catch(D){Xt([]),ct("子代理链路加载失败:"+D.message)}},[]),Jl=v.useCallback(H=>{qe.current&&clearTimeout(qe.current),qe.current=setTimeout(()=>void sl(H),1e3)},[sl]),da=v.useCallback(async H=>{if(!H.coordinator_parts){Ft([]);return}try{const D=await P($.tasksByParent(H.project_id||"",H.id));Ft(D.tasks||[])}catch{Ft([])}},[]),Dl=v.useCallback(async H=>{try{const D=await P($.taskCost(H));tt(D)}catch{tt(null)}},[]),Kt=v.useCallback(async H=>{try{const D=await P($.taskFollowups(H));R(D.followups||[])}catch{R([])}},[]),Pe=v.useCallback(async H=>{try{const D=await P($.taskChatHistory(H));Rl(D)}catch{Rl(null)}},[]),we=v.useCallback(async H=>{var X;const D=H||((X=ue.current)==null?void 0:X.id);if(D)try{const K=await P($.taskReviews(D));oe(K.reviews||[]),ae("")}catch(K){ae("评审队列加载失败:"+K.message)}},[]),Tl=v.useCallback(async H=>{var X;const D=H||((X=ue.current)==null?void 0:X.id);if(D)try{const K=await P($.taskApprovals(D));F(K.approvals||[])}catch(K){mt("审批队列加载失败:"+K.message)}},[]),fl=v.useCallback(async H=>{try{const D=await P($.taskMessages(H));V(D.messages||[])}catch{V([])}},[]Line truncated
|
||||
|
||||
`);hn=Hl.pop()||"";for(const mu of Hl){const hu=mu.split(`
|
||||
`).filter(Le=>Le.indexOf("data: ")===0).map(Le=>Le.slice(6)).join(`
|
||||
`);if(hu)try{const Le=JSON.parse(hu);if(Le.type==="snapshot")K=Le.entries||[],Object.keys(O).forEach($t=>delete O[$t]),K.forEach(($t,de)=>{$t.id&&(O[$t.id]=de)}),k=Le.note||"",vt([...K]),A(k),Jl(H);else if(Le.type==="entry"){const $t=Le.entry;$t.id&&$t.id in O?K[O[$t.id]]=$t:($t.id&&(O[$t.id]=K.length),K.push($t)),vt([...K]),Jl(H)}else Le.type==="done"&&(J=!0,At=Le.status,gt(At))}catch{}}if(J)break}}catch(Et){if(Et&&Et.name==="AbortError")return;A("链路流中断:"+Et.message);return}J&&r()},[ue,Jl,r]),ge=v.useCallback(async H=>{ue();try{const D=await P($.task(H));o(D);let X="";D.result_text&&(X+=`=== result ===
|
||||
`);if(hu)try{const Le=JSON.parse(hu);if(Le.type==="snapshot")K=Le.entries||[],Object.keys(O).forEach(It=>delete O[It]),K.forEach((It,me)=>{It.id&&(O[It.id]=me)}),k=Le.note||"",vt([...K]),A(k),Jl(H);else if(Le.type==="entry"){const It=Le.entry;It.id&&It.id in O?K[O[It.id]]=It:(It.id&&(O[It.id]=K.length),K.push(It)),vt([...K]),Jl(H)}else Le.type==="done"&&(J=!0,At=Le.status,gt(At))}catch{}}if(J)break}}catch(Et){if(Et&&Et.name==="AbortError")return;A("链路流中断:"+Et.message);return}J&&r()},[ie,Jl,r]),pe=v.useCallback(async H=>{ie();try{const D=await P($.task(H));o(D);let X="";D.result_text&&(X+=`=== result ===
|
||||
`+D.result_text.slice(0,8e3)+`
|
||||
`),D.error_text&&(X+=`=== error ===
|
||||
`+D.error_text.slice(0,8e3)+`
|
||||
`),X||(X="(暂无 result/error 输出)"),C(X),b(""),tt(void 0),Dl(H),et(!1),dt(""),ae(""),oe(""),mn(D.status);const K=i(D.project_id),O=K==="maintainer"||K==="owner",k=K==="contributor"||O,J=uu.includes(D.status),At=[];["failed","interrupted","merge-failed"].includes(D.status)&&O||At.push("重试:不可用——仅 failed/interrupted/merge-failed 可重试"+(O?"":",且仅 maintainer 可重试")),!J&&k||At.push("取消:不可用——"+(J?"终态任务不可取消":"仅项目成员(contributor 及以上)可取消")),D.status==="completed"&&O||At.push("合并:不可用——仅 completed 可合并"+(O?"":",且仅 maintainer 可合并")),D.status==="merged"&&O||At.push("提 PR:不可用——仅 merged 可提 PR"+(O?"":",且仅 maintainer 可提 PR")),U(At.join(";")),x(""),Qa(H,D.status),sl(H),da(D),Pe(H),Zt(H),fl(H),Gt(H),Ul(H),qe(H),Tl(H)}catch(D){o(null),C("加载失败:"+D.message)}},[ue,Qa,sl,da,Pe,Zt,fl,Gt,Ul,qe,Tl,Dl,i]),Xa=v.useCallback(async()=>{const H=ne.current;if(H){try{const D=await P($.task(H.id));o(D);let X="";D.result_text&&(X+=`=== result ===
|
||||
`),X||(X="(暂无 result/error 输出)"),C(X),x(""),tt(void 0),Dl(H),et(!1),dt(""),ne(""),de(""),mn(D.status);const K=i(D.project_id),O=K==="maintainer"||K==="owner",k=K==="contributor"||O,J=uu.includes(D.status),At=[];["failed","interrupted","merge-failed"].includes(D.status)&&O||At.push("重试:不可用——仅 failed/interrupted/merge-failed 可重试"+(O?"":",且仅 maintainer 可重试")),!J&&k||At.push("取消:不可用——"+(J?"终态任务不可取消":"仅项目成员(contributor 及以上)可取消")),D.status==="completed"&&O||At.push("合并:不可用——仅 completed 可合并"+(O?"":",且仅 maintainer 可合并")),D.status==="merged"&&O||At.push("提 PR:不可用——仅 merged 可提 PR"+(O?"":",且仅 maintainer 可提 PR")),U(At.join(";")),b(""),Qa(H,D.status),sl(H),da(D),Pe(H),Kt(H),fl(H),Gt(H),Ul(H),we(H),Tl(H)}catch(D){o(null),C("加载失败:"+D.message)}},[ie,Qa,sl,da,Pe,Kt,fl,Gt,Ul,we,Tl,Dl,i]),Xa=v.useCallback(async()=>{const H=ue.current;if(H){try{const D=await P($.task(H.id));o(D);let X="";D.result_text&&(X+=`=== result ===
|
||||
`+D.result_text.slice(0,8e3)+`
|
||||
`),D.error_text&&(X+=`=== error ===
|
||||
`+D.error_text.slice(0,8e3)+`
|
||||
`),C(X||"(暂无 result/error 输出)")}catch{}Zt(H.id),Pe(H.id),qe(H.id),Tl(H.id),da(H),sl(H.id),fl(H.id),Gt(H.id),Ul(H.id),Dl(H.id)}},[Zt,Pe,qe,Tl,da,sl,fl,Gt,Ul,Dl]),ma=v.useCallback(async H=>{const D=ne.current;if(!D)return;const X={cancel:"确定取消该任务吗?",merge:"确定把 completed 任务标为 merged 吗?",pr:"确定为该任务提 PR 吗?(会在仓库真实建 PR)"};if(!(X[H]&&!window.confirm(X[H])))try{const K=await P($.taskAction(D.id,H),"POST",{});x(H+" 已提交:"+JSON.stringify(K).slice(0,300)),r(),await ge(D.id)}catch(K){x(H+" 失败:"+K.message)}},[ge,r]),su=v.useCallback(async()=>{const H=ne.current;if(H)try{const D=await P($.taskCost(H.id));b(JSON.stringify(D,null,2).slice(0,4e3))}catch(D){b("查成本失败:"+D.message)}},[]),fu=v.useCallback(async H=>{const D=ne.current;if(D){if(!H.trim()){dt("分支消息必填");return}if(!uu.includes(D.status)){dt("仅终态任务可分支");return}try{const X=await P($.taskFork(D.id),"POST",{message:H.trim()});dt("分支任务已建:"+X.id.slice(0,8)),r()}catch(X){dt("分支失败:"+X.message)}}},[r]),Fl=v.useCallback(async H=>{const D=ne.current;if(D)try{await P($.taskReviews(D.id),"POST",H),Vt("评审已登记(requested)"),await qe(D.id)}catch(X){Vt("登记评审需求失败:"+X.message)}},[qe]),Ee=v.useCallback(H=>{const D=ne.current;if(!D)return;const X=window.prompt("输入该条评审的 findings(将写回记录并标为 completed):");X!==null&&P($.taskReviewFindings(D.id,H),"POST",{findings:X}).then(()=>void qe(D.id)).catch(K=>Vt("写 findings 失败:"+K.message))},[qe]),rl=v.useCallback((H,D)=>{const X=ne.current;if(!X)return;const K=D==="approved"?"approve":"deny";P($.taskApprovalDecision(X.id,H,K),"POST",{}).then(()=>{mt("已记录"+(D==="approved"?"允许":"拒绝")+"(当前版本只留回执,不拦截实时行为)"),Tl(X.id)}).catch(O=>mt("决定失败:"+O.message))},[Tl]),Ne=v.useCallback(async(H,D,X)=>{const K=ne.current;if(K){if(!D.trim()){ae("目标任务 id 不能为空");return}if(!X.trim()){ae("消息正文不能为空");return}try{const O=await P($.taskMessagesTo(D.trim()),"POST",{from_task_id:K.id,body:X.trim(),mode:H});ae("已发送("+O.delivery+")"),await fl(K.id)}catch(O){ae("发送失败:"+O.message)}}},[fl]),ru=v.useCallback((H,D)=>{const X=ne.current;if(!X)return;if(!["completed","failed","interrupted"].includes(X.status)){oe("仅 completed/failed/interrupted 任务可操作线程(merged/merge-failed 不可改,服务端同样 409)");return}const K={};if(H==="rename"){if(!D.trim()){oe("新线程名不能为空");return}K.name=D.trim()}P($.taskThreadAction(X.id,H),"POST",K).then(O=>{oe(H+" 已提交:"+JSON.stringify(O).slice(0,300)),Gt(X.id),Ul(X.id)}).catch(O=>oe(H+" 失败:"+O.message))},[Gt,Ul]),ou=v.useCallback(async H=>{const D=ne.current;if(!D)return;const X=H.trim();if(!X){Ve("消息不能为空");return}try{uu.includes(D.status)&&D.status!=="merged"?(await P($.taskContinue(D.id),"POST",{message:X}),Ve("已重新排队,同一会话继续"),r(),await ge(D.id)):["queued","running"].includes(D.status)?(await P($.taskFollowups(D.id),"POST",{body:X,mode:"direct"}),Ve("已直接发送"),await Zt(D.id),await Pe(D.id)):Ve("merged/merge-failed 任务不可继续,也不可发后续消息")}catch(K){Ve("发送失败:"+K.message)}},[ge,r,Zt,Pe]),du=v.useCallback(async()=>{const H=ne.current;if(!H){_e("先选一个任务");return}try{const D=await P($.taskTrace(H.id)),X=new Blob([JSON.stringify({task_id:H.id,status:D.status,note:D.note||"",count:(D.entries||[]).length,entries:D.entries||[]},null,2)],{type:"application/json"}),K=document.createElement("a");K.href=URL.createObjectURL(X),K.download="trace-"+H.id.slice(0,8)+".json",document.body.appendChild(K),K.click(),K.remove(),setTimeout(()=>URL.revokeObjectURL(K.href),1e3),_e("已下载完整链路 "+(D.entries||[]).length+" 条")}catch(D){_e("下载失败:"+D.message)}},[]);return v.useEffect(()=>()=>ue(),[ue]),{currentTask:m,detailBody:_,actionMsg:N,actionReasons:w,costBox:G,costSummary:B,forkVisible:at,setForkVisible:et,forkMsg:L,coordChildren:zt,agents:nt,agentsNote:te,reviews:yt,reviewMsg:he,reviewError:Ft,traceEntries:Ie,traceNote:Y,traceDone:lt,traceKind:St,setTraceKind:ve,traceMsg:Ue,followups:y,approvals:W,approvalMsg:pt,peerMessages:_t,peerMsg:ut,threadText:ka,threadGateNote:Xe,threadMsg:Rt,threadList:Kl,chatMsg:oa,chatHistory:zl,showDetail:ge,refreshDetailLists:Xa,doAction:ma,taskCost:su,forkTask:fu,postReview:Fl,submitFindings:Ee,decideApproval:rl,postPeer:Ne,threadAction:ru,sendChatMessage:ou,downloadTrace:du,refreshReviews:()=>void qe(),refreshApprovals:()=>void Tl()}}function Py(i){const[r,m]=v.useState([]),[o,_]=v.useState(""),[C,N]=v.useState(null),[x,w]=v.useState(""),U=v.useCallback(async tt=>{const at=tt!==void 0?tt:i();if(!at){m([]);return}try{const et=await P($.projectAutomations(at));m(et.automations||[])}catch(et){_("自动化加载失败:"+et.message)}},[i]),G=v.useCallback(aLine truncated
|
||||
(链路摘要已截断至 300 字,完整回复见右侧任务结果)`:o,label:"助手"}}if(i.kind==="exec"||i.kind==="file"||i.kind==="tool"||i.kind==="call"){const o=i.kind==="exec"?"命令":i.kind==="file"?"文件":i.kind==="tool"?"工具":"调用";return{id:m,role:"tool",text:dr(i),label:o}}return i.kind==="plan"?{id:m,role:"status",text:i.text||""}:i.kind==="reasoning"?{id:m,role:"status",text:"思考:"+(i.summary||"")}:i.kind==="agent-start"?{id:m,role:"status",text:"子代理开始:"+(i.name||"")+(i.prompt?"("+i.prompt+")":"")}:i.kind==="agent-done"?{id:m,role:"status",text:"子代理结束:"+(i.name||"")+" "+(i.status||"")}:{id:m,role:"status",text:dr(i)}}function og(){const i=Mt(),r=v.useMemo(()=>{const m=i.currentTask,o=m&&m.prompt?[{id:"task-prompt",role:"user",text:m.prompt}]:[],C=(i.traceKind?i.traceEntries.filter(x=>x.kind===i.traceKind):i.traceEntries).map((x,w)=>Zh(x,w)),N=i.traceDone?[{id:"trace-done",role:"status",text:"链路已结束("+i.traceDone+")"}]:[];return[...o,...C,...N]},[i.currentTask,i.traceEntries,i.traceKind,i.traceDone]);return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"muted",children:"实时链路"}),s.jsxs(Ut,{children:[s.jsxs("select",{"aria-label":"链路类型",value:i.traceKind,onChange:m=>i.setTraceKind(m.target.value),children:[s.jsx("option",{value:"",children:"链路类型:全部"}),["exec","file","call","tool","message","reasoning","plan","agent-start","agent-done"].map(m=>s.jsx("option",{value:m,children:m==="exec"?"命令":m==="file"?"文件":m==="call"?"调用":m==="tool"?"工具":m==="message"?"消息":m==="reasoning"?"思考":m==="plan"?"计划":"子代理"},m))]}),s.jsx("button",{onClick:i.downloadTrace,children:"下载完整链路"}),s.jsx("span",{className:"muted",children:i.traceMsg})]}),i.traceNote?s.jsx("div",{children:s.jsx("span",{className:"err",children:i.traceNote})}):null,s.jsx("div",{className:"chat-column",children:s.jsx(Lh,{messages:r,empty:"(暂无链路条目)"})}),s.jsx("div",{className:"muted",children:"对话时间线:首条是本任务 prompt(用户);助手回复来自 message 条目,命令/文件/工具/调用是工具评论框,计划/思考/子代理开始结束是时间线上的状态文字。流式进行中时新条目实时追加;你在底部时自动跟随,往上翻时暂停跟随,点“回到最新”恢复。"})]})}function dg(){const i=Mt(),r=i.currentTask,m=v.useMemo(()=>{if(!r)return[];if(i.chatHistory)return i.chatHistory.messages.map(b=>({id:b.id,role:b.role,text:b.text,label:b.label}));const w=r.prompt?[{id:"task-prompt",role:"user",text:r.prompt}]:[],U=i.traceEntries.filter(b=>b.kind==="message").map((b,B)=>Zh(b,B)),G=i.followups.map((b,B)=>({id:"followup-"+B,role:"user",text:String(b.body||""),label:"后续消息"}));return[...w,...U,...G]},[r,i.chatHistory,i.traceEntries,i.followups]);if(!r)return s.jsx("div",{className:"muted",children:"点任务行查看详情后,这里显示继续会话"});const o=uu.includes(r.status),_=["queued","running"].includes(r.status),C=o||_,N=o?"终态任务:发送走继续接口(同一会话再跑一轮)":_?"运行中/排队中:发送走后续消息直接发送(跑完当前轮后优先执行)":"merged/merge-failed 任务不可继续,也不可发后续消息",x=i.chatHistory?i.chatHistory.legacy_continue_count??null:null;return s.jsxs("div",{className:"chat-column",children:[x!==null&&x>0?s.jsxs("div",{className:"muted",children:["此前有 ",x," 条继续消息发生在持久化之前,未入库,上面历史不完整;部署后新发的继续消息会正常显示。"]}):null,i.chatHistory&&i.chatHistory.trace_note?s.jsx("div",{className:"muted",children:i.chatHistory.trace_note}):null,s.jsx(Lh,{messages:m,empty:"(暂无会话消息)"}),s.jsx(rg,{disabled:!C,placeholder:"消息",onSend:w=>void i.sendChatMessage(w)}),s.jsxs("div",{className:"muted",children:[N,"。",i.chatMsg]})]})}function mg(){return Mt().currentTask?s.jsxs("div",{className:"conversation",children:[s.jsx(og,{}),s.jsx("div",{className:"conv-divider"}),s.jsx(dg,{})]}):s.jsx("div",{className:"conversation",children:s.jsx("div",{className:"muted",children:"在任务列表里点一条任务,对话和详情就切到该任务;也可以在上面派发一个新任务。"})})}function hg(){const i=Mt(),r=i.currentTask,[m,o]=v.useState("");if(!r)return null;const _=uu.includes(r.status),C=["failed","interrupted","merge-failed"].includes(r.status);return s.jsxs(s.Fragment,{children:[s.jsxs(Ut,{children:[s.jsx("button",{disabled:!C,title:C?"":"仅 failed/interrupted/merge-failed 可重试",onClick:()=>i.doAction("retry"),children:"重试"}),s.jsx("button",{className:"danger",disabled:_,title:_?"终态任务不可取消":"",onClick:()=>i.doAction("cancel"),children:"取消"}),s.jsx("button",{disabled:r.status!=="completed",title:r.status!=="completed"?"仅 completed 可合并":"",onClick:()=>i.doAction("merge"),children:"合并(completed → merged)"})Line truncated
|
||||
<style rel="stylesheet" crossorigin>:root{--text:#1f2328;--muted:#656d76;--subtle:#6e7781;--line:#d0d7de;--line-muted:#d8dee4;--paper:#ffffff;--card:#ffffff;--subtle-bg:#f6f8fa;--inset-bg:#f6f8fa;--accent:#0969da;--accent-emphasis:#0969da;--green:#2da44e;--green-hover:#2c974b;--success:#1a7f37;--danger:#d1242f;--danger-bg:#ffebe9;--attention:#9a6700;--done:#8250df;--selected-bg:#ddf4ff;--radius:6px;--shadow:0 1px 0 rgba(27,31,36,.04);--sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--ctl:32px}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--sans);margin:0;color:var(--text);background:#fff;line-height:1.5;font-size:14px}a{color:var(--accent);text-underline-offset:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.muted{color:var(--muted);font-size:12px;line-height:1.5}.err{color:var(--danger)}.ok{color:var(--success)}button{cursor:pointer;font-weight:500;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--text);box-shadow:var(--shadow)}button:hover{background:var(--subtle-bg)}button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}button.primary,button.seal{background:var(--green);border-color:#1b1f2426;color:#fff}button.primary:hover,button.seal:hover{background:var(--green-hover)}button.danger{color:var(--danger);border-color:var(--line);background:#fff}button.danger:hover{background:var(--danger-bg);color:var(--danger)}.icon-btn{width:32px;height:32px;padding:0;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--text);font-size:16px;line-height:1}.icon-btn:hover{background:var(--subtle-bg)}.dash-topbar{position:sticky;top:0;z-index:10;background:#24292f;color:#fff;border-bottom:1px solid rgba(255,255,255,.15);padding:10px 20px 8px}.dash-topbar .muted{color:#ffffffbf}.dash-topbar-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.dash-brand{font-weight:600;font-size:16px;color:#fff}.dash-status{font-size:13px;font-weight:600;color:#ffffffbf}.dash-status.ok{color:#2da44e}.dash-stamp{margin-left:auto}.dash-nav{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}.dash-nav a{color:#fff;text-decoration:none;font-size:13px;font-weight:600;padding:6px 12px;border-radius:var(--radius)}.dash-nav a:hover{background:#ffffff1f;text-decoration:none}.dash-page{max-width:1180px;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:20px}.dash-page>*{min-width:0}.dash-section>*{min-width:0}.dash-section{scroll-margin-top:130px;display:flex;flex-direction:column;gap:16px}.dash-section.card{padding:16px}.dash-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.dash-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;min-width:0}.dash-card-label{color:var(--muted);font-size:12px;font-weight:600}.dash-card-value{font-size:24px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:none;padding:16px}.card h2{font-size:14px;margin:0 0 12px;font-weight:600}.card h3{font-size:14px;margin:24px 0 12px;padding-top:16px;border-top:1px solid var(--line);font-weight:600}.card h3:first-of-type{border-top:0;padding-top:0}.composer h2{font-size:16px}.composer textarea.prompt{min-height:148px;font-size:14px;padding:12px;border-radius:var(--radius)}.composer textarea.coord{font-family:var(--mono);font-size:13px}.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:12px 0}.bar>button,.bar>label{display:inline-flex;align-items:center;height:var(--ctl);min-height:var(--ctl);padding:0 16px;box-sizing:border-box;white-space:nowrap}.bar>input,.bar>select{height:var(--ctl);min-height:var(--ctl)}input,select,textarea,button{font:inherit;font-size:14px;padding:5px 12px;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0969da4d}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:34px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23656d76' stroke-width='1.5' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center}select::-ms-expand{display:none}select:disabled,input:disabled{color:var(--muted);background:var(--subtle-bg);cursor:not-allowed}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}input[type=file]{height:var(--ctl);display:inline-flex;align-items:center;padding:0 12px;border:1px dashed var(--line);border-radius:var(-Line truncated
|
||||
`),C(X||"(暂无 result/error 输出)")}catch{}Kt(H.id),Pe(H.id),we(H.id),Tl(H.id),da(H),sl(H.id),fl(H.id),Gt(H.id),Ul(H.id),Dl(H.id)}},[Kt,Pe,we,Tl,da,sl,fl,Gt,Ul,Dl]),ma=v.useCallback(async H=>{const D=ue.current;if(!D)return;const X={cancel:"确定取消该任务吗?",merge:"确定把 completed 任务标为 merged 吗?",pr:"确定为该任务提 PR 吗?(会在仓库真实建 PR)"};if(!(X[H]&&!window.confirm(X[H])))try{const K=await P($.taskAction(D.id,H),"POST",{});b(H+" 已提交:"+JSON.stringify(K).slice(0,300)),r(),await pe(D.id)}catch(K){b(H+" 失败:"+K.message)}},[pe,r]),su=v.useCallback(async()=>{const H=ue.current;if(H)try{const D=await P($.taskCost(H.id));x(JSON.stringify(D,null,2).slice(0,4e3))}catch(D){x("查成本失败:"+D.message)}},[]),fu=v.useCallback(async H=>{const D=ue.current;if(D){if(!H.trim()){dt("分支消息必填");return}if(!uu.includes(D.status)){dt("仅终态任务可分支");return}try{const X=await P($.taskFork(D.id),"POST",{message:H.trim()});dt("分支任务已建:"+X.id.slice(0,8)),r()}catch(X){dt("分支失败:"+X.message)}}},[r]),Fl=v.useCallback(async H=>{const D=ue.current;if(D)try{await P($.taskReviews(D.id),"POST",H),Vt("评审已登记(requested)"),await we(D.id)}catch(X){Vt("登记评审需求失败:"+X.message)}},[we]),Ne=v.useCallback(H=>{const D=ue.current;if(!D)return;const X=window.prompt("输入该条评审的 findings(将写回记录并标为 completed):");X!==null&&P($.taskReviewFindings(D.id,H),"POST",{findings:X}).then(()=>void we(D.id)).catch(K=>Vt("写 findings 失败:"+K.message))},[we]),rl=v.useCallback((H,D)=>{const X=ue.current;if(!X)return;const K=D==="approved"?"approve":"deny";P($.taskApprovalDecision(X.id,H,K),"POST",{}).then(()=>{mt("已记录"+(D==="approved"?"允许":"拒绝")+"(当前版本只留回执,不拦截实时行为)"),Tl(X.id)}).catch(O=>mt("决定失败:"+O.message))},[Tl]),Ce=v.useCallback(async(H,D,X)=>{const K=ue.current;if(K){if(!D.trim()){ne("目标任务 id 不能为空");return}if(!X.trim()){ne("消息正文不能为空");return}try{const O=await P($.taskMessagesTo(D.trim()),"POST",{from_task_id:K.id,body:X.trim(),mode:H});ne("已发送("+O.delivery+")"),await fl(K.id)}catch(O){ne("发送失败:"+O.message)}}},[fl]),ru=v.useCallback((H,D)=>{const X=ue.current;if(!X)return;if(!["completed","failed","interrupted"].includes(X.status)){de("仅 completed/failed/interrupted 任务可操作线程(merged/merge-failed 不可改,服务端同样 409)");return}const K={};if(H==="rename"){if(!D.trim()){de("新线程名不能为空");return}K.name=D.trim()}P($.taskThreadAction(X.id,H),"POST",K).then(O=>{de(H+" 已提交:"+JSON.stringify(O).slice(0,300)),Gt(X.id),Ul(X.id)}).catch(O=>de(H+" 失败:"+O.message))},[Gt,Ul]),ou=v.useCallback(async H=>{const D=ue.current;if(!D)return;const X=H.trim();if(!X){Ve("消息不能为空");return}try{uu.includes(D.status)&&D.status!=="merged"?(await P($.taskContinue(D.id),"POST",{message:X}),Ve("已重新排队,同一会话继续"),r(),await pe(D.id)):["queued","running"].includes(D.status)?(await P($.taskFollowups(D.id),"POST",{body:X,mode:"direct"}),Ve("已直接发送"),await Kt(D.id),await Pe(D.id)):Ve("merged/merge-failed 任务不可继续,也不可发后续消息")}catch(K){Ve("发送失败:"+K.message)}},[pe,r,Kt,Pe]),du=v.useCallback(async()=>{const H=ue.current;if(!H){Ee("先选一个任务");return}try{const D=await P($.taskTrace(H.id)),X=new Blob([JSON.stringify({task_id:H.id,status:D.status,note:D.note||"",count:(D.entries||[]).length,entries:D.entries||[]},null,2)],{type:"application/json"}),K=document.createElement("a");K.href=URL.createObjectURL(X),K.download="trace-"+H.id.slice(0,8)+".json",document.body.appendChild(K),K.click(),K.remove(),setTimeout(()=>URL.revokeObjectURL(K.href),1e3),Ee("已下载完整链路 "+(D.entries||[]).length+" 条")}catch(D){Ee("下载失败:"+D.message)}},[]);return v.useEffect(()=>()=>ie(),[ie]),{currentTask:m,detailBody:_,actionMsg:N,actionReasons:w,costBox:G,costSummary:B,forkVisible:at,setForkVisible:et,forkMsg:L,coordChildren:zt,agents:nt,agentsNote:ee,reviews:yt,reviewMsg:ve,reviewError:Wt,traceEntries:Ie,traceNote:Y,traceDone:lt,traceKind:pt,setTraceKind:ye,traceMsg:He,followups:y,approvals:W,approvalMsg:St,peerMessages:_t,peerMsg:ut,threadText:ka,threadGateNote:Xe,threadMsg:Rt,threadList:Kl,chatMsg:oa,chatHistory:zl,showDetail:pe,refreshDetailLists:Xa,doAction:ma,taskCost:su,forkTask:fu,postReview:Fl,submitFindings:Ne,decideApproval:rl,postPeer:Ce,threadAction:ru,sendChatMessage:ou,downloadTrace:du,refreshReviews:()=>void we(),refreshApprovals:()=>void Tl()}}function Py(i){const[r,m]=v.useState([]),[o,_]=v.useState(""),[C,N]=v.useState(null),[b,w]=v.useState(""),U=v.useCallback(async tt=>{const at=tt!==void 0?tt:i();if(!at){m([]);return}try{const et=await P($.projectAutomations(at));m(et.automations||[])}catch(et){_("自动化加载失败:"+et.message)}},[i]),G=v.useCallback(aLine truncated
|
||||
(链路摘要已截断至 300 字,完整回复见右侧任务结果)`:o,label:"助手"}}if(i.kind==="exec"||i.kind==="file"||i.kind==="tool"||i.kind==="call"){const o=i.kind==="exec"?"命令":i.kind==="file"?"文件":i.kind==="tool"?"工具":"调用";return{id:m,role:"tool",text:dr(i),label:o}}return i.kind==="plan"?{id:m,role:"status",text:i.text||""}:i.kind==="reasoning"?{id:m,role:"status",text:"思考:"+(i.summary||"")}:i.kind==="agent-start"?{id:m,role:"status",text:"子代理开始:"+(i.name||"")+(i.prompt?"("+i.prompt+")":"")}:i.kind==="agent-done"?{id:m,role:"status",text:"子代理结束:"+(i.name||"")+" "+(i.status||"")}:{id:m,role:"status",text:dr(i)}}function og(){const i=Mt(),r=v.useMemo(()=>{const m=i.currentTask,o=m&&m.prompt?[{id:"task-prompt",role:"user",text:m.prompt}]:[],C=(i.traceKind?i.traceEntries.filter(b=>b.kind===i.traceKind):i.traceEntries).map((b,w)=>Zh(b,w)),N=i.traceDone?[{id:"trace-done",role:"status",text:"链路已结束("+i.traceDone+")"}]:[];return[...o,...C,...N]},[i.currentTask,i.traceEntries,i.traceKind,i.traceDone]);return c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"muted",children:"实时链路"}),c.jsxs(Ut,{children:[c.jsxs("select",{"aria-label":"链路类型",value:i.traceKind,onChange:m=>i.setTraceKind(m.target.value),children:[c.jsx("option",{value:"",children:"链路类型:全部"}),["exec","file","call","tool","message","reasoning","plan","agent-start","agent-done"].map(m=>c.jsx("option",{value:m,children:m==="exec"?"命令":m==="file"?"文件":m==="call"?"调用":m==="tool"?"工具":m==="message"?"消息":m==="reasoning"?"思考":m==="plan"?"计划":"子代理"},m))]}),c.jsx("button",{onClick:i.downloadTrace,children:"下载完整链路"}),c.jsx("span",{className:"muted",children:i.traceMsg})]}),i.traceNote?c.jsx("div",{children:c.jsx("span",{className:"err",children:i.traceNote})}):null,c.jsx("div",{className:"chat-column",children:c.jsx(Lh,{messages:r,empty:"(暂无链路条目)"})}),c.jsx("div",{className:"muted",children:"对话时间线:首条是本任务 prompt(用户);助手回复来自 message 条目,命令/文件/工具/调用是工具评论框,计划/思考/子代理开始结束是时间线上的状态文字。流式进行中时新条目实时追加;你在底部时自动跟随,往上翻时暂停跟随,点“回到最新”恢复。"})]})}function dg(){const i=Mt(),r=i.currentTask,m=v.useMemo(()=>{if(!r)return[];if(i.chatHistory)return i.chatHistory.messages.map(x=>({id:x.id,role:x.role,text:x.text,label:x.label}));const w=r.prompt?[{id:"task-prompt",role:"user",text:r.prompt}]:[],U=i.traceEntries.filter(x=>x.kind==="message").map((x,B)=>Zh(x,B)),G=i.followups.map((x,B)=>({id:"followup-"+B,role:"user",text:String(x.body||""),label:"后续消息"}));return[...w,...U,...G]},[r,i.chatHistory,i.traceEntries,i.followups]);if(!r)return c.jsx("div",{className:"muted",children:"点任务行查看详情后,这里显示继续会话"});const o=uu.includes(r.status),_=["queued","running"].includes(r.status),C=o||_,N=o?"终态任务:发送走继续接口(同一会话再跑一轮)":_?"运行中/排队中:发送走后续消息直接发送(跑完当前轮后优先执行)":"merged/merge-failed 任务不可继续,也不可发后续消息",b=i.chatHistory?i.chatHistory.legacy_continue_count??null:null;return c.jsxs("div",{className:"chat-column",children:[b!==null&&b>0?c.jsxs("div",{className:"muted",children:["此前有 ",b," 条继续消息发生在持久化之前,未入库,上面历史不完整;部署后新发的继续消息会正常显示。"]}):null,i.chatHistory&&i.chatHistory.trace_note?c.jsx("div",{className:"muted",children:i.chatHistory.trace_note}):null,c.jsx(Lh,{messages:m,empty:"(暂无会话消息)"}),c.jsx(rg,{disabled:!C,placeholder:"消息",onSend:w=>void i.sendChatMessage(w)}),c.jsxs("div",{className:"muted",children:[N,"。",i.chatMsg]})]})}function mg(){return Mt().currentTask?c.jsxs("div",{className:"conversation",children:[c.jsx(og,{}),c.jsx("div",{className:"conv-divider"}),c.jsx(dg,{})]}):c.jsx("div",{className:"conversation",children:c.jsx("div",{className:"muted",children:"在任务列表里点一条任务,对话和详情就切到该任务;也可以在上面派发一个新任务。"})})}function hg(){const i=Mt(),r=i.currentTask,[m,o]=v.useState("");if(!r)return null;const _=uu.includes(r.status),C=["failed","interrupted","merge-failed"].includes(r.status);return c.jsxs(c.Fragment,{children:[c.jsxs(Ut,{children:[c.jsx("button",{disabled:!C,title:C?"":"仅 failed/interrupted/merge-failed 可重试",onClick:()=>i.doAction("retry"),children:"重试"}),c.jsx("button",{className:"danger",disabled:_,title:_?"终态任务不可取消":"",onClick:()=>i.doAction("cancel"),children:"取消"}),c.jsx("button",{disabled:r.status!=="completed",title:r.status!=="completed"?"仅 completed 可合并":"",onClick:()=>i.doAction("merge"),children:"合并(completed → merged)"})Line truncated
|
||||
<style rel="stylesheet" crossorigin>:root{--text:#1f2328;--muted:#656d76;--subtle:#6e7781;--line:#d0d7de;--line-muted:#d8dee4;--paper:#ffffff;--card:#ffffff;--subtle-bg:#f6f8fa;--inset-bg:#f6f8fa;--accent:#0969da;--accent-emphasis:#0969da;--green:#2da44e;--green-hover:#2c974b;--success:#1a7f37;--danger:#d1242f;--danger-bg:#ffebe9;--attention:#9a6700;--done:#8250df;--selected-bg:#ddf4ff;--radius:6px;--shadow:0 1px 0 rgba(27,31,36,.04);--sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--ctl:32px}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--sans);margin:0;color:var(--text);background:#fff;line-height:1.5;font-size:14px}a{color:var(--accent);text-underline-offset:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.muted{color:var(--muted);font-size:12px;line-height:1.5}.err{color:var(--danger)}.ok{color:var(--success)}button{cursor:pointer;font-weight:500;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--text);box-shadow:var(--shadow)}button:hover{background:var(--subtle-bg)}button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}button.primary,button.seal{background:var(--green);border-color:#1b1f2426;color:#fff}button.primary:hover,button.seal:hover{background:var(--green-hover)}button.danger{color:var(--danger);border-color:var(--line);background:#fff}button.danger:hover{background:var(--danger-bg);color:var(--danger)}.icon-btn{width:32px;height:32px;padding:0;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--text);font-size:16px;line-height:1}.icon-btn:hover{background:var(--subtle-bg)}.dash-topbar{position:sticky;top:0;z-index:10;background:#24292f;color:#fff;border-bottom:1px solid rgba(255,255,255,.15);padding:10px 20px 8px}.dash-topbar .muted{color:#ffffffbf}.dash-topbar-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.dash-brand{font-weight:600;font-size:16px;color:#fff}.dash-status{font-size:13px;font-weight:600;color:#ffffffbf}.dash-status.ok{color:#2da44e}.dash-stamp{margin-left:auto}.dash-nav{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}.dash-nav a{color:#fff;text-decoration:none;font-size:13px;font-weight:600;padding:6px 12px;border-radius:var(--radius)}.dash-nav a:hover{background:#ffffff1f;text-decoration:none}.dash-page{max-width:1180px;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:20px}.dash-page>*{min-width:0}.dash-section>*{min-width:0}.dash-section{scroll-margin-top:130px;display:flex;flex-direction:column;gap:16px}.dash-section.card{padding:16px}.dash-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.dash-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;min-width:0}.dash-card-label{color:var(--muted);font-size:12px;font-weight:600}.dash-card-value{font-size:24px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:none;padding:16px}.card h2{font-size:14px;margin:0 0 12px;font-weight:600}.card h3{font-size:14px;margin:24px 0 12px;padding-top:16px;border-top:1px solid var(--line);font-weight:600}.card h3:first-of-type{border-top:0;padding-top:0}.composer h2{font-size:16px}.composer textarea.prompt{min-height:148px;font-size:14px;padding:12px;border-radius:var(--radius)}.composer textarea.coord{font-family:var(--mono);font-size:13px}.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:12px 0}.bar>button,.bar>label{display:inline-flex;align-items:center;height:var(--ctl);min-height:var(--ctl);padding:0 16px;box-sizing:border-box;white-space:nowrap}.bar>input,.bar>select{height:var(--ctl);min-height:var(--ctl)}input,select,textarea,button{font:inherit;font-size:14px;padding:5px 12px;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0969da4d}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:34px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23656d76' stroke-width='1.5' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center}select::-ms-expand{display:none}select:disabled,input:disabled{color:var(--muted);background:var(--subtle-bg);cursor:not-allowed}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}input[type=file]{height:var(--ctl);display:inline-flex;align-items:center;padding:0 12px;border:1px dashed var(--line);border-radius:var(-Line truncated
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
Reference in new issue
Block a user