From ad2d13822f98576ee89a6425c8afc9ff4c99931f Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Sun, 31 May 2026 17:22:06 +0800 Subject: [PATCH 1/6] feat: add Cloudflare Worker Pages D1 deployment --- cloudflare/README.md | 24 +++ cloudflare/pages/_headers | 3 + cloudflare/pages/index.html | 11 ++ cloudflare/schema.sql | 122 +++++++++++++ cloudflare/worker.js | 338 ++++++++++++++++++++++++++++++++++++ cloudflare/wrangler.toml | 12 ++ 6 files changed, 510 insertions(+) create mode 100644 cloudflare/README.md create mode 100644 cloudflare/pages/_headers create mode 100644 cloudflare/pages/index.html create mode 100644 cloudflare/schema.sql create mode 100644 cloudflare/worker.js create mode 100644 cloudflare/wrangler.toml diff --git a/cloudflare/README.md b/cloudflare/README.md new file mode 100644 index 0000000..b218e88 --- /dev/null +++ b/cloudflare/README.md @@ -0,0 +1,24 @@ +# OpenMOSS on Cloudflare + +This directory contains a Cloudflare-native OpenMOSS implementation: + +- **Cloudflare Worker**: API runtime and SPA shell +- **Cloudflare D1**: task/agent/review/log persistence +- **Pages-style UI**: static single page served by the Worker + +## Deploy + +```bash +cd cloudflare +npx wrangler d1 execute openmoss-prod --file schema.sql --remote +npx wrangler deploy +``` + +Required secrets/vars: + +```bash +npx wrangler secret put OPENMOSS_ADMIN_PASSWORD +npx wrangler secret put OPENMOSS_REGISTRATION_TOKEN +``` + +The deployed API is compatible with the core OpenMOSS endpoints under `/api`. diff --git a/cloudflare/pages/_headers b/cloudflare/pages/_headers new file mode 100644 index 0000000..4e22ae5 --- /dev/null +++ b/cloudflare/pages/_headers @@ -0,0 +1,3 @@ +/* + Access-Control-Allow-Origin: * + X-Content-Type-Options: nosniff diff --git a/cloudflare/pages/index.html b/cloudflare/pages/index.html new file mode 100644 index 0000000..d319f0c --- /dev/null +++ b/cloudflare/pages/index.html @@ -0,0 +1,11 @@ +OpenMOSS Cloudflare Pages
Cloudflare Pages + Workers API + D1

OpenMOSS Cloudflare

前端由 Cloudflare Pages 托管,API 由 Worker 提供,数据持久化到 D1。

Worker API

Admin Login

Agent 注册

输出

Ready. API_BASE=https://openmoss-cloudflare.97274247.workers.dev
\ No newline at end of file diff --git a/cloudflare/schema.sql b/cloudflare/schema.sql new file mode 100644 index 0000000..ffd23f9 --- /dev/null +++ b/cloudflare/schema.sql @@ -0,0 +1,122 @@ +-- OpenMOSS Cloudflare D1 schema +CREATE TABLE IF NOT EXISTS agent ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + role TEXT NOT NULL, + description TEXT DEFAULT '', + status TEXT DEFAULT 'active', + api_key TEXT UNIQUE NOT NULL, + total_score INTEGER DEFAULT 0, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_agent_role ON agent(role); +CREATE INDEX IF NOT EXISTS idx_agent_status ON agent(status); + +CREATE TABLE IF NOT EXISTS task ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + description TEXT DEFAULT '', + type TEXT DEFAULT 'once', + status TEXT DEFAULT 'planning', + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_task_status ON task(status); + +CREATE TABLE IF NOT EXISTS module ( + id TEXT PRIMARY KEY, + task_id TEXT NOT NULL, + name TEXT NOT NULL, + description TEXT DEFAULT '', + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY(task_id) REFERENCES task(id) +); + +CREATE TABLE IF NOT EXISTS sub_task ( + id TEXT PRIMARY KEY, + task_id TEXT NOT NULL, + module_id TEXT, + name TEXT NOT NULL, + description TEXT DEFAULT '', + deliverable TEXT DEFAULT '', + acceptance TEXT DEFAULT '', + type TEXT DEFAULT 'once', + status TEXT DEFAULT 'pending', + priority TEXT DEFAULT 'medium', + assigned_agent TEXT, + current_session_id TEXT, + rework_count INTEGER DEFAULT 0, + recurring_config TEXT, + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP, + completed_at TEXT, + FOREIGN KEY(task_id) REFERENCES task(id), + FOREIGN KEY(module_id) REFERENCES module(id), + FOREIGN KEY(assigned_agent) REFERENCES agent(id) +); +CREATE INDEX IF NOT EXISTS idx_sub_task_status ON sub_task(status); +CREATE INDEX IF NOT EXISTS idx_sub_task_agent_status ON sub_task(assigned_agent,status); + +CREATE TABLE IF NOT EXISTS review_record ( + id TEXT PRIMARY KEY, + sub_task_id TEXT NOT NULL, + reviewer_agent TEXT NOT NULL, + round INTEGER NOT NULL, + result TEXT NOT NULL, + score INTEGER NOT NULL, + issues TEXT DEFAULT '', + comment TEXT DEFAULT '', + rework_agent TEXT, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_review_sub_task ON review_record(sub_task_id); + +CREATE TABLE IF NOT EXISTS reward_log ( + id TEXT PRIMARY KEY, + agent_id TEXT NOT NULL, + sub_task_id TEXT, + reason TEXT NOT NULL, + score_delta INTEGER NOT NULL, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_reward_agent ON reward_log(agent_id); + +CREATE TABLE IF NOT EXISTS activity_log ( + id TEXT PRIMARY KEY, + agent_id TEXT NOT NULL, + sub_task_id TEXT, + action TEXT NOT NULL, + summary TEXT DEFAULT '', + session_id TEXT, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_activity_agent ON activity_log(agent_id); + +CREATE TABLE IF NOT EXISTS request_log ( + id TEXT PRIMARY KEY, + timestamp TEXT DEFAULT CURRENT_TIMESTAMP, + method TEXT NOT NULL, + path TEXT NOT NULL, + agent_id TEXT, + agent_name TEXT, + agent_role TEXT, + request_body TEXT, + response_status INTEGER +); +CREATE INDEX IF NOT EXISTS idx_request_agent ON request_log(agent_id); +CREATE INDEX IF NOT EXISTS idx_request_path ON request_log(path); + +CREATE TABLE IF NOT EXISTS rule ( + id TEXT PRIMARY KEY, + scope TEXT NOT NULL, + task_id TEXT, + sub_task_id TEXT, + content TEXT NOT NULL, + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE IF NOT EXISTS admin_session ( + token TEXT PRIMARY KEY, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); diff --git a/cloudflare/worker.js b/cloudflare/worker.js new file mode 100644 index 0000000..860908c --- /dev/null +++ b/cloudflare/worker.js @@ -0,0 +1,338 @@ +const JSON_HEADERS = { "content-type": "application/json; charset=utf-8" }; +const HTML_HEADERS = { "content-type": "text/html; charset=utf-8" }; +const TEXT_HEADERS = { "content-type": "text/plain; charset=utf-8" }; + +function uid(prefix = "") { + return prefix + crypto.randomUUID(); +} +function nowIso() { return new Date().toISOString(); } +function json(data, status = 200) { return new Response(JSON.stringify(data), { status, headers: JSON_HEADERS }); } +function text(data, status = 200) { return new Response(data, { status, headers: TEXT_HEADERS }); } +function html(data, status = 200) { return new Response(data, { status, headers: HTML_HEADERS }); } +async function bodyJson(req) { try { return await req.json(); } catch { return {}; } } +function getBearer(req) { const h = req.headers.get("authorization") || ""; return h.startsWith("Bearer ") ? h.slice(7) : null; } +function getAdminToken(req) { return req.headers.get("x-admin-token") || getBearer(req); } +function projectName(env) { return env.OPENMOSS_PROJECT_NAME || "OpenMOSS Cloudflare"; } +function registrationToken(env) { return env.OPENMOSS_REGISTRATION_TOKEN || "openclaw-register-2024"; } +function adminPassword(env) { return env.OPENMOSS_ADMIN_PASSWORD || "admin123"; } +function publicFeed(env) { return String(env.OPENMOSS_PUBLIC_FEED || "true") === "true"; } + +async function verifyAdmin(req, env) { + const token = getAdminToken(req); + if (!token) return false; + if (token === adminPassword(env)) return true; + const row = await env.DB.prepare("SELECT token FROM admin_session WHERE token=?").bind(token).first(); + return !!row; +} +async function requireAdmin(req, env) { if (!(await verifyAdmin(req, env))) throw Object.assign(new Error("Admin auth required"), { status: 403 }); } +async function getAgent(req, env) { + const key = getBearer(req); + if (!key) return null; + return await env.DB.prepare("SELECT * FROM agent WHERE api_key=? AND status='active'").bind(key).first(); +} +async function requireAgent(req, env) { + const agent = await getAgent(req, env); + if (!agent) throw Object.assign(new Error("Invalid agent API key"), { status: 401 }); + return agent; +} +function requireRole(agent, roles) { + const set = Array.isArray(roles) ? roles : [roles]; + if (!set.includes(agent.role)) throw Object.assign(new Error(`Role ${agent.role} cannot perform this action`), { status: 403 }); +} +async function logRequest(req, env, agent, status, body) { + if (!req.url.includes('/api/') || !agent) return; + try { + await env.DB.prepare(`INSERT INTO request_log (id,timestamp,method,path,agent_id,agent_name,agent_role,request_body,response_status) VALUES (?,?,?,?,?,?,?,?,?)`) + .bind(uid(), nowIso(), req.method, new URL(req.url).pathname, agent.id, agent.name, agent.role, body ? JSON.stringify(body).slice(0,10000) : null, status).run(); + } catch (e) { console.log('request log failed', e.message); } +} +function pageParams(url) { + const page = Math.max(1, Number(url.searchParams.get('page') || 1)); + const pageSize = Math.min(100, Math.max(0, Number(url.searchParams.get('page_size') || 0))); + return { page, pageSize }; +} +async function listQuery(env, sql, binds = [], url) { + const { page, pageSize } = pageParams(url); + if (pageSize > 0) { + const offset = (page - 1) * pageSize; + const countSql = `SELECT count(*) as c FROM (${sql}) x`; + const total = (await env.DB.prepare(countSql).bind(...binds).first()).c || 0; + const rows = (await env.DB.prepare(`${sql} LIMIT ? OFFSET ?`).bind(...binds, pageSize, offset).all()).results || []; + return { items: rows, total, page, page_size: pageSize, total_pages: Math.max(1, Math.ceil(total / pageSize)), has_more: page * pageSize < total }; + } + return (await env.DB.prepare(sql).bind(...binds).all()).results || []; +} + +async function initSchema(env) { + const stmts = SCHEMA_SQL.split(';').map(s => s.trim()).filter(Boolean); + for (const s of stmts) await env.DB.prepare(s).run(); +} + +async function routeApi(req, env, ctx) { + const url = new URL(req.url); + const path = url.pathname.replace(/^\/api/, '') || '/'; + let agent = null; + let reqBody = null; + + if (path === '/health') return json({ ok: true, runtime: 'cloudflare-workers', project: projectName(env), time: nowIso() }); + if (path === '/version') return json({ name: 'OpenMOSS Cloudflare', version: '2.0.0-cloudflare', runtime: 'cloudflare-workers' }); + if (path === '/setup/status') return json({ initialized: true, has_external_url: true }); + if (path === '/config/notification') { agent = await requireAgent(req, env); return json({ enabled: false, channels: [], events: [] }); } + + if (path === '/admin/login' && req.method === 'POST') { + reqBody = await bodyJson(req); + if (reqBody.password !== adminPassword(env)) return json({ detail: '密码错误' }, 403); + const token = uid('adm_'); + await env.DB.prepare("INSERT INTO admin_session (token,created_at) VALUES (?,?)").bind(token, nowIso()).run(); + return json({ token, message: '登录成功' }); + } + if (path === '/admin/config' && req.method === 'GET') { await requireAdmin(req, env); return json({ project: { name: projectName(env) }, agent: { allow_registration: true, registration_token: registrationToken(env) }, webui: { public_feed: publicFeed(env) }, server: { external_url: url.origin }, database: { type: 'cloudflare-d1' } }); } + if (path === '/admin/dashboard/overview' && req.method === 'GET') { await requireAdmin(req, env); return json(await dashboardOverview(env)); } + if (path === '/admin/agents' && req.method === 'GET') { await requireAdmin(req, env); return json(await listAdminAgents(env, url)); } + if (path === '/admin/tasks' && req.method === 'GET') { await requireAdmin(req, env); return json(await listAdminTasks(env, url)); } + if (path === '/admin/logs' && req.method === 'GET') { await requireAdmin(req, env); return json(await listQuery(env, `SELECT l.*, a.name AS agent_name, a.role AS agent_role FROM activity_log l LEFT JOIN agent a ON a.id=l.agent_id ORDER BY l.created_at DESC`, [], url)); } + if (path === '/admin/scores/leaderboard' && req.method === 'GET') { await requireAdmin(req, env); return json(await listQuery(env, `SELECT row_number() OVER (ORDER BY total_score DESC) AS rank, id AS agent_id, name AS agent_name, role, status, total_score, created_at FROM agent ORDER BY total_score DESC`, [], url)); } + + if (path === '/agents/register' && req.method === 'POST') { + const reg = req.headers.get('x-registration-token'); + if (reg !== registrationToken(env)) return json({ detail: '注册令牌无效' }, 403); + reqBody = await bodyJson(req); + const id = uid(); const apiKey = uid('ak_'); + await env.DB.prepare("INSERT INTO agent (id,name,role,description,status,api_key,total_score,created_at) VALUES (?,?,?,?,?,?,0,?)") + .bind(id, reqBody.name, reqBody.role, reqBody.description || '', 'active', apiKey, nowIso()).run(); + return json({ id, name: reqBody.name, role: reqBody.role, api_key: apiKey, message: '注册成功,请保存 API Key' }); + } + if (path === '/agents/me/skill' && req.method === 'GET') { + agent = await requireAgent(req, env); + return text(`# OpenMOSS ${agent.role} Skill\n\nBASE_URL=${url.origin}\nAPI_KEY=${agent.api_key}\n\nUse this Cloudflare deployment as your OpenMOSS endpoint.`, 200); + } + if (path === '/agents' && req.method === 'GET') { agent = await requireAgent(req, env); return json(await listQuery(env, `SELECT id,name,role,description,status,total_score,created_at FROM agent ORDER BY created_at DESC`, [], url)); } + if (path === '/agents' && req.method === 'POST') { await requireAdmin(req, env); reqBody = await bodyJson(req); const id=uid(), apiKey=uid('ak_'); await env.DB.prepare("INSERT INTO agent (id,name,role,description,status,api_key,total_score,created_at) VALUES (?,?,?,?,?,?,0,?)").bind(id, reqBody.name, reqBody.role, reqBody.description||'', 'active', apiKey, nowIso()).run(); return json({ id, name:reqBody.name, role:reqBody.role, api_key:apiKey, message:'注册成功,请保存 API Key' }); } + + if (path === '/tasks' && req.method === 'POST') { agent = await requireAgent(req, env); requireRole(agent, 'planner'); reqBody = await bodyJson(req); const id=uid(); const t=nowIso(); await env.DB.prepare("INSERT INTO task (id,name,description,type,status,created_at,updated_at) VALUES (?,?,?,?,?,?,?)").bind(id, reqBody.name, reqBody.description||'', reqBody.type||'once', 'planning', t, t).run(); return json(await env.DB.prepare("SELECT * FROM task WHERE id=?").bind(id).first()); } + if (path === '/tasks' && req.method === 'GET') { agent = await requireAgent(req, env); const status=url.searchParams.get('status'); return json(await listQuery(env, `SELECT * FROM task ${status?'WHERE status=?':''} ORDER BY created_at DESC`, status?[status]:[], url)); } + let m = path.match(/^\/tasks\/([^/]+)$/); + if (m && req.method === 'GET') { agent = await requireAgent(req, env); const row=await env.DB.prepare("SELECT * FROM task WHERE id=?").bind(m[1]).first(); return row?json(row):json({detail:'任务不存在'},404); } + if (m && req.method === 'PUT') { agent = await requireAgent(req, env); requireRole(agent,'planner'); reqBody=await bodyJson(req); await env.DB.prepare("UPDATE task SET name=COALESCE(?,name), description=COALESCE(?,description), updated_at=? WHERE id=?").bind(reqBody.name??null, reqBody.description??null, nowIso(), m[1]).run(); return json(await env.DB.prepare("SELECT * FROM task WHERE id=?").bind(m[1]).first()); } + m = path.match(/^\/tasks\/([^/]+)\/status$/); + if (m && req.method === 'PUT') { agent=await requireAgent(req,env); requireRole(agent,'planner'); reqBody=await bodyJson(req); await env.DB.prepare("UPDATE task SET status=?, updated_at=? WHERE id=?").bind(reqBody.status, nowIso(), m[1]).run(); return json(await env.DB.prepare("SELECT * FROM task WHERE id=?").bind(m[1]).first()); } + m = path.match(/^\/tasks\/([^/]+)\/modules$/); + if (m && req.method === 'POST') { agent=await requireAgent(req,env); requireRole(agent,'planner'); reqBody=await bodyJson(req); const id=uid(); await env.DB.prepare("INSERT INTO module (id,task_id,name,description,created_at) VALUES (?,?,?,?,?)").bind(id,m[1],reqBody.name,reqBody.description||'',nowIso()).run(); return json(await env.DB.prepare("SELECT * FROM module WHERE id=?").bind(id).first()); } + if (m && req.method === 'GET') { agent=await requireAgent(req,env); return json((await env.DB.prepare("SELECT * FROM module WHERE task_id=? ORDER BY created_at DESC").bind(m[1]).all()).results||[]); } + + if (path === '/sub-tasks' && req.method === 'POST') { agent=await requireAgent(req,env); requireRole(agent,'planner'); reqBody=await bodyJson(req); const id=uid(); const t=nowIso(); await env.DB.prepare(`INSERT INTO sub_task (id,task_id,module_id,name,description,deliverable,acceptance,type,status,priority,assigned_agent,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)`).bind(id,reqBody.task_id,reqBody.module_id||null,reqBody.name,reqBody.description||'',reqBody.deliverable||'',reqBody.acceptance||'',reqBody.type||'once','pending',reqBody.priority||'medium',reqBody.assigned_agent||null,t,t).run(); return json(await env.DB.prepare("SELECT * FROM sub_task WHERE id=?").bind(id).first()); } + if (path === '/sub-tasks' && req.method === 'GET') { agent=await requireAgent(req,env); const filters=[]; const binds=[]; for (const k of ['task_id','module_id','status']) { const v=url.searchParams.get(k); if(v){filters.push(`${k}=?`); binds.push(v);} } return json(await listQuery(env, `SELECT * FROM sub_task ${filters.length?'WHERE '+filters.join(' AND '):''} ORDER BY created_at DESC`, binds, url)); } + if (path === '/sub-tasks/mine' && req.method === 'GET') { agent=await requireAgent(req,env); const status=url.searchParams.get('status'); const binds=[agent.id]; let where='assigned_agent=?'; if(status){where+=' AND status=?'; binds.push(status);} return json(await listQuery(env, `SELECT * FROM sub_task WHERE ${where} ORDER BY updated_at DESC`, binds, url)); } + if (path === '/sub-tasks/available' && req.method === 'GET') { agent=await requireAgent(req,env); return json(await listQuery(env, `SELECT * FROM sub_task WHERE status='pending' ORDER BY created_at DESC`, [], url)); } + m = path.match(/^\/sub-tasks\/([^/]+)$/); + if (m && req.method === 'GET') { agent=await requireAgent(req,env); const row=await env.DB.prepare("SELECT * FROM sub_task WHERE id=?").bind(m[1]).first(); return row?json(row):json({detail:'子任务不存在'},404); } + m = path.match(/^\/sub-tasks\/([^/]+)\/(claim|start|submit|rework|block)$/); + if (m && req.method === 'POST') { agent=await requireAgent(req,env); reqBody=await bodyJson(req); return json(await mutateSubTask(env, agent, m[1], m[2], reqBody)); } + + if (path === '/review-records' && req.method === 'POST') { agent=await requireAgent(req,env); requireRole(agent,'reviewer'); reqBody=await bodyJson(req); const row=await createReview(env, agent, reqBody); return json(row); } + if (path === '/review-records' && req.method === 'GET') { agent=await requireAgent(req,env); const st=url.searchParams.get('sub_task_id'); return json(await listQuery(env, `SELECT * FROM review_record ${st?'WHERE sub_task_id=?':''} ORDER BY created_at DESC`, st?[st]:[], url)); } + + if (path === '/logs' && req.method === 'POST') { agent=await requireAgent(req,env); reqBody=await bodyJson(req); const id=uid(); await env.DB.prepare("INSERT INTO activity_log (id,agent_id,sub_task_id,action,summary,session_id,created_at) VALUES (?,?,?,?,?,?,?)").bind(id,agent.id,reqBody.sub_task_id||null,reqBody.action,reqBody.summary||'',reqBody.session_id||null,nowIso()).run(); return json(await env.DB.prepare("SELECT * FROM activity_log WHERE id=?").bind(id).first()); } + if (path === '/logs' && req.method === 'GET') { agent=await requireAgent(req,env); return json(await listQuery(env, `SELECT * FROM activity_log ORDER BY created_at DESC`, [], url)); } + if (path === '/logs/mine' && req.method === 'GET') { agent=await requireAgent(req,env); return json(await listQuery(env, `SELECT * FROM activity_log WHERE agent_id=? ORDER BY created_at DESC`, [agent.id], url)); } + + if (path === '/scores/leaderboard' && req.method === 'GET') { agent=await requireAgent(req,env); return json((await env.DB.prepare(`SELECT row_number() OVER (ORDER BY total_score DESC) AS rank, id AS agent_id, name AS agent_name, role, total_score FROM agent ORDER BY total_score DESC`).all()).results||[]); } + if (path === '/scores/me' && req.method === 'GET') { agent=await requireAgent(req,env); return json(await scoreSummary(env, agent.id)); } + if (path === '/feed/status') return json({ enabled: publicFeed(env) }); + if (path === '/feed/agents') { if(!publicFeed(env)) return json({detail:'活动流展示页未启用'},403); return json((await env.DB.prepare("SELECT id,name,role,status,total_score,created_at FROM agent ORDER BY total_score DESC").all()).results||[]); } + if (path === '/feed/logs') { if(!publicFeed(env)) return json({detail:'活动流展示页未启用'},403); return json(await listQuery(env, `SELECT * FROM request_log ORDER BY timestamp DESC`, [], url)); } + if (path === '/tools/cli') { agent=await requireAgent(req,env); return text(`# Minimal OpenMOSS Cloudflare CLI endpoint\nBASE_URL = "${url.origin}"\nAPI_KEY = "${agent.api_key}"\n`); } + + return json({ detail: 'Not Found', path }, 404); +} + +async function mutateSubTask(env, agent, id, op, body) { + const st = await env.DB.prepare("SELECT * FROM sub_task WHERE id=?").bind(id).first(); + if (!st) throw Object.assign(new Error('子任务不存在'), {status:404}); + const t=nowIso(); + if (op === 'claim') await env.DB.prepare("UPDATE sub_task SET status='assigned', assigned_agent=?, current_session_id=?, updated_at=? WHERE id=?").bind(agent.id, body.session_id||null, t, id).run(); + if (op === 'start') await env.DB.prepare("UPDATE sub_task SET status='in_progress', current_session_id=?, updated_at=? WHERE id=?").bind(body.session_id||null, t, id).run(); + if (op === 'submit') await env.DB.prepare("UPDATE sub_task SET status='review', deliverable=COALESCE(?,deliverable), updated_at=? WHERE id=?").bind(body.deliverable||body.summary||null, t, id).run(); + if (op === 'block') await env.DB.prepare("UPDATE sub_task SET status='blocked', updated_at=? WHERE id=?").bind(t, id).run(); + if (op === 'rework') await env.DB.prepare("UPDATE sub_task SET status='rework', assigned_agent=COALESCE(?,assigned_agent), rework_count=rework_count+1, updated_at=? WHERE id=?").bind(body.rework_agent||null, t, id).run(); + await env.DB.prepare("INSERT INTO activity_log (id,agent_id,sub_task_id,action,summary,session_id,created_at) VALUES (?,?,?,?,?,?,?)").bind(uid(),agent.id,id,op,body.summary||`${op} sub task`,body.session_id||null,t).run(); + return await env.DB.prepare("SELECT * FROM sub_task WHERE id=?").bind(id).first(); +} +async function createReview(env, agent, b) { + const last = await env.DB.prepare("SELECT max(round) AS r FROM review_record WHERE sub_task_id=?").bind(b.sub_task_id).first(); + const round = (last?.r || 0) + 1; const id=uid(); const t=nowIso(); + await env.DB.prepare("INSERT INTO review_record (id,sub_task_id,reviewer_agent,round,result,score,issues,comment,rework_agent,created_at) VALUES (?,?,?,?,?,?,?,?,?,?)").bind(id,b.sub_task_id,agent.id,round,b.result,b.score,b.issues||'',b.comment||'',b.rework_agent||null,t).run(); + if (b.result === 'approved') await env.DB.prepare("UPDATE sub_task SET status='done', completed_at=?, updated_at=? WHERE id=?").bind(t,t,b.sub_task_id).run(); + else await env.DB.prepare("UPDATE sub_task SET status='rework', rework_count=rework_count+1, assigned_agent=COALESCE(?,assigned_agent), updated_at=? WHERE id=?").bind(b.rework_agent||null,t,b.sub_task_id).run(); + await env.DB.prepare("UPDATE agent SET total_score=total_score+? WHERE id=(SELECT assigned_agent FROM sub_task WHERE id=?)").bind(Number(b.score||0), b.sub_task_id).run(); + return await env.DB.prepare("SELECT * FROM review_record WHERE id=?").bind(id).first(); +} +async function scoreSummary(env, agentId) { + const a=await env.DB.prepare("SELECT *, (SELECT count(*) FROM agent) AS total_agents FROM agent WHERE id=?").bind(agentId).first(); + if(!a) return null; + const rank=await env.DB.prepare("SELECT count(*)+1 AS rank FROM agent WHERE total_score > ?").bind(a.total_score).first(); + const counts=await env.DB.prepare("SELECT count(*) AS total_records, sum(case when score_delta>0 then 1 else 0 end) AS reward_count, sum(case when score_delta<0 then 1 else 0 end) AS penalty_count FROM reward_log WHERE agent_id=?").bind(agentId).first(); + return {agent_id:a.id, agent_name:a.name, total_score:a.total_score, rank:rank.rank, total_agents:a.total_agents, reward_count:counts.reward_count||0, penalty_count:counts.penalty_count||0, total_records:counts.total_records||0}; +} +async function dashboardOverview(env) { + const one = async sql => (await env.DB.prepare(sql).first())?.c || 0; + const dist = async (table,col,vals) => { const rows=(await env.DB.prepare(`SELECT ${col} v,count(*) c FROM ${table} GROUP BY ${col}`).all()).results||[]; const out=Object.fromEntries(vals.map(v=>[v,0])); for(const r of rows) if(r.v in out) out[r.v]=r.c; return out; }; + const taskD=await dist('task','status',['planning','active','in_progress','completed','archived','cancelled']); + const subD=await dist('sub_task','status',['pending','assigned','in_progress','review','rework','blocked','done','cancelled']); + const agentD=await dist('agent','status',['active','disabled']); + const roleD=await dist('agent','role',['planner','executor','reviewer','patrol']); + return { generated_at: nowIso(), core_cards:{ open_task_count:taskD.planning+taskD.active+taskD.in_progress, active_sub_task_count:subD.assigned+subD.in_progress+subD.review+subD.rework+subD.blocked, review_queue_count:subD.review, blocked_sub_task_count:subD.blocked, active_agent_count:agentD.active, today_completed_sub_task_count:0 }, secondary_cards:{ disabled_agent_count:agentD.disabled, today_review_count:0, today_rejected_review_count:0, today_reject_rate:0, today_net_score_delta:0 }, distributions:{ task_status_distribution:taskD, sub_task_status_distribution:subD, agent_status_distribution:agentD, agent_role_distribution:roleD, review_result_distribution_7d:{approved:0,rejected:0} } }; +} +async function listAdminAgents(env,url){ return await listQuery(env, `SELECT id,name,role,description,status,total_score,created_at FROM agent ORDER BY created_at DESC`, [], url); } +async function listAdminTasks(env,url){ return await listQuery(env, `SELECT t.*, (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id) AS sub_task_count, (SELECT count(*) FROM module m WHERE m.task_id=t.id) AS module_count FROM task t ORDER BY created_at DESC`, [], url); } + +const INDEX_HTML = `OpenMOSS Cloudflare
Cloudflare Workers + Pages-style UI + D1

OpenMOSS Cloudflare

OpenMOSS 多 Agent 协作中间件的 Cloudflare 原生实现:Worker API、D1 数据库、单页管理界面。

/api/health

Admin Login

登录后 token 保存在浏览器 localStorage。

Agent 注册

输出

Ready.
`; + +const SCHEMA_SQL = `-- OpenMOSS Cloudflare D1 schema +CREATE TABLE IF NOT EXISTS agent ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + role TEXT NOT NULL, + description TEXT DEFAULT '', + status TEXT DEFAULT 'active', + api_key TEXT UNIQUE NOT NULL, + total_score INTEGER DEFAULT 0, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_agent_role ON agent(role); +CREATE INDEX IF NOT EXISTS idx_agent_status ON agent(status); + +CREATE TABLE IF NOT EXISTS task ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + description TEXT DEFAULT '', + type TEXT DEFAULT 'once', + status TEXT DEFAULT 'planning', + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_task_status ON task(status); + +CREATE TABLE IF NOT EXISTS module ( + id TEXT PRIMARY KEY, + task_id TEXT NOT NULL, + name TEXT NOT NULL, + description TEXT DEFAULT '', + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY(task_id) REFERENCES task(id) +); + +CREATE TABLE IF NOT EXISTS sub_task ( + id TEXT PRIMARY KEY, + task_id TEXT NOT NULL, + module_id TEXT, + name TEXT NOT NULL, + description TEXT DEFAULT '', + deliverable TEXT DEFAULT '', + acceptance TEXT DEFAULT '', + type TEXT DEFAULT 'once', + status TEXT DEFAULT 'pending', + priority TEXT DEFAULT 'medium', + assigned_agent TEXT, + current_session_id TEXT, + rework_count INTEGER DEFAULT 0, + recurring_config TEXT, + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP, + completed_at TEXT, + FOREIGN KEY(task_id) REFERENCES task(id), + FOREIGN KEY(module_id) REFERENCES module(id), + FOREIGN KEY(assigned_agent) REFERENCES agent(id) +); +CREATE INDEX IF NOT EXISTS idx_sub_task_status ON sub_task(status); +CREATE INDEX IF NOT EXISTS idx_sub_task_agent_status ON sub_task(assigned_agent,status); + +CREATE TABLE IF NOT EXISTS review_record ( + id TEXT PRIMARY KEY, + sub_task_id TEXT NOT NULL, + reviewer_agent TEXT NOT NULL, + round INTEGER NOT NULL, + result TEXT NOT NULL, + score INTEGER NOT NULL, + issues TEXT DEFAULT '', + comment TEXT DEFAULT '', + rework_agent TEXT, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_review_sub_task ON review_record(sub_task_id); + +CREATE TABLE IF NOT EXISTS reward_log ( + id TEXT PRIMARY KEY, + agent_id TEXT NOT NULL, + sub_task_id TEXT, + reason TEXT NOT NULL, + score_delta INTEGER NOT NULL, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_reward_agent ON reward_log(agent_id); + +CREATE TABLE IF NOT EXISTS activity_log ( + id TEXT PRIMARY KEY, + agent_id TEXT NOT NULL, + sub_task_id TEXT, + action TEXT NOT NULL, + summary TEXT DEFAULT '', + session_id TEXT, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +CREATE INDEX IF NOT EXISTS idx_activity_agent ON activity_log(agent_id); + +CREATE TABLE IF NOT EXISTS request_log ( + id TEXT PRIMARY KEY, + timestamp TEXT DEFAULT CURRENT_TIMESTAMP, + method TEXT NOT NULL, + path TEXT NOT NULL, + agent_id TEXT, + agent_name TEXT, + agent_role TEXT, + request_body TEXT, + response_status INTEGER +); +CREATE INDEX IF NOT EXISTS idx_request_agent ON request_log(agent_id); +CREATE INDEX IF NOT EXISTS idx_request_path ON request_log(path); + +CREATE TABLE IF NOT EXISTS rule ( + id TEXT PRIMARY KEY, + scope TEXT NOT NULL, + task_id TEXT, + sub_task_id TEXT, + content TEXT NOT NULL, + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE IF NOT EXISTS admin_session ( + token TEXT PRIMARY KEY, + created_at TEXT DEFAULT CURRENT_TIMESTAMP +); +`; + +export default { + async fetch(req, env, ctx) { + const url = new URL(req.url); + try { + if (url.pathname === '/__init' && req.method === 'POST') { await initSchema(env); return json({ ok: true, message: 'schema initialized' }); } + if (url.pathname.startsWith('/api/')) return await routeApi(req, env, ctx); + if (url.pathname === '/' || !url.pathname.includes('.')) return html(INDEX_HTML); + return text('Not found', 404); + } catch (e) { + console.log('error', e.stack || e.message); + return json({ detail: e.message || 'Internal Error' }, e.status || 500); + } + } +}; diff --git a/cloudflare/wrangler.toml b/cloudflare/wrangler.toml new file mode 100644 index 0000000..ef03172 --- /dev/null +++ b/cloudflare/wrangler.toml @@ -0,0 +1,12 @@ +name = "openmoss-cloudflare" +main = "worker.js" +compatibility_date = "2026-05-31" + +[[d1_databases]] +binding = "DB" +database_name = "openmoss-prod" +database_id = "6da6315b-fc4c-46b5-990d-40a51cf27d14" + +[vars] +OPENMOSS_PROJECT_NAME = "OpenMOSS Cloudflare" +OPENMOSS_PUBLIC_FEED = "true" From 9bc945d7f42a2161491e0548874f6933b8627340 Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Sun, 31 May 2026 21:59:33 +0800 Subject: [PATCH 2/6] fix: serve original WebUI on Cloudflare Pages --- cloudflare/pages/_headers | 2 +- cloudflare/pages/_redirects | 1 + .../pages/assets/AgentsView-B5DwEauD.css | 1 + .../pages/assets/AgentsView-U_WfzzKz.js | 4 ++ cloudflare/pages/assets/AppLayout-B0mng0Hs.js | 1 + .../pages/assets/AppLayout-qgctDjpy.css | 1 + ...ue_type_script_setup_true_lang-BQsr7qiA.js | 1 + ...ue_type_script_setup_true_lang-DAF_OvUJ.js | 1 + ...ue_type_script_setup_true_lang-DrB9MS42.js | 1 + .../pages/assets/DashboardView-Cu7R9jUe.js | 1 + .../pages/assets/DashboardView-c71H3EkP.css | 1 + cloudflare/pages/assets/DemoView-BPR_Rmcz.js | 2 + cloudflare/pages/assets/DemoView-vtX9cghR.css | 1 + cloudflare/pages/assets/FeedView-CYGX00OX.css | 1 + cloudflare/pages/assets/FeedView-wwm_gE9_.js | 1 + ...ue_type_script_setup_true_lang-BeSoeGyX.js | 1 + ...ue_type_script_setup_true_lang-CsaHM4SY.js | 1 + cloudflare/pages/assets/LoginView-CzW4mb8C.js | 1 + .../pages/assets/LoginView-D7A_FpBE.css | 1 + cloudflare/pages/assets/LogsView-Co5xeyoP.js | 1 + cloudflare/pages/assets/LogsView-nr-nBQlx.css | 1 + .../pages/assets/NotFoundView-CYIoVC0_.css | 1 + .../pages/assets/NotFoundView-CwfZACt3.js | 1 + cloudflare/pages/assets/Presence-Sy1r65hd.js | 3 + .../pages/assets/PromptsView-C9Duf4fo.js | 15 +++++ .../pages/assets/PromptsView-Dyz04uBH.css | 1 + .../pages/assets/ReviewsView-BIzvWmnq.js | 1 + .../pages/assets/ReviewsView-Cjn5FRho.css | 1 + .../pages/assets/ScoresView-CBH5Dogn.js | 1 + ...ue_type_script_setup_true_lang-E5eRj2Ny.js | 1 + .../pages/assets/SettingsView-Bbemcc2R.js | 1 + cloudflare/pages/assets/SetupView-DexhUT0V.js | 3 + ...ue_type_script_setup_true_lang-CC6GyU0A.js | 1 + ...ue_type_script_setup_true_lang-C5avm85h.js | 1 + ...ue_type_script_setup_true_lang-CX3hqDXa.js | 1 + ...ue_type_script_setup_true_lang-DTpAVj20.js | 1 + cloudflare/pages/assets/TasksView-CCGXWEZ4.js | 1 + .../pages/assets/TooltipProvider-Ck2YUJut.js | 1 + ...ue_type_script_setup_true_lang-Ct5cWqBI.js | 1 + ...ue_type_script_setup_true_lang-CuCUfyn9.js | 1 + .../pages/assets/VisuallyHidden-DmVvgUgH.js | 1 + .../_plugin-vue_export-helper-DlAUqK2U.js | 1 + cloudflare/pages/assets/activity-SKRWHPM4.js | 1 + cloudflare/pages/assets/check-DEjmzl3F.js | 1 + .../pages/assets/chevron-down-xV8GE0yH.js | 1 + .../pages/assets/chevron-right-4Ffa5RHB.js | 1 + .../pages/assets/circle-alert-DI3FQNzC.js | 1 + cloudflare/pages/assets/clipboard-BxPwmQDo.js | 1 + .../pages/assets/clipboard-check-B8B0idlM.js | 1 + cloudflare/pages/assets/clock-ZB7HOEvr.js | 1 + cloudflare/pages/assets/code-zczxpfOO.js | 1 + .../pages/assets/createContext-a9Tpfoxo.js | 1 + cloudflare/pages/assets/download-Cz1Slb-U.js | 1 + cloudflare/pages/assets/eye-Bf9-8M_K.js | 1 + .../pages/assets/file-search-DRPM2poS.js | 1 + cloudflare/pages/assets/file-text-C7Xfe8Jp.js | 1 + cloudflare/pages/assets/index-BBqWFH4z.css | 1 + cloudflare/pages/assets/index-BYiXDk_r.js | 7 ++ cloudflare/pages/assets/index-CEPd9Ray.js | 1 + cloudflare/pages/assets/index-Ct5H-N73.js | 1 + cloudflare/pages/assets/index-D0L1R3xN.js | 1 + cloudflare/pages/assets/index-wmMfISvJ.js | 1 + cloudflare/pages/assets/list-todo-DaXA5Y93.js | 1 + .../pages/assets/marked.esm-D9eDbhZJ.js | 59 +++++++++++++++++ .../pages/assets/message-square-Vh7MGSmH.js | 1 + cloudflare/pages/assets/pencil-D1GtMUQI.js | 1 + cloudflare/pages/assets/play-BSoFcJJg.js | 1 + .../pages/assets/refresh-cw-DOzI5zLk.js | 1 + cloudflare/pages/assets/save-DkYVQELS.js | 1 + .../pages/assets/scroll-text-XmJfG4_f.js | 1 + cloudflare/pages/assets/search-3_RVfAHZ.js | 1 + cloudflare/pages/assets/settings-CzMAO35A.js | 1 + .../pages/assets/shield-alert-DYoiGl5J.js | 1 + .../pages/assets/shield-check-C0gcRV-i.js | 1 + cloudflare/pages/assets/star-VmEUsCX9.js | 1 + .../pages/assets/trending-up-9TLdiVqg.js | 1 + cloudflare/pages/assets/trophy-BMFdgvc4.js | 1 + .../pages/assets/useForwardExpose-DjCgLuye.js | 1 + .../assets/usePrimitiveElement-JaAYjjRd.js | 1 + cloudflare/pages/assets/users-C4rtE1G7.js | 1 + cloudflare/pages/assets/utils-TyZrBBEb.js | 1 + cloudflare/pages/assets/webui-BTCBRLGR.js | 1 + cloudflare/pages/assets/zap-B-kRHIBE.js | 1 + cloudflare/pages/favicon.ico | Bin 0 -> 3445 bytes cloudflare/pages/favicon.png | Bin 0 -> 3971 bytes cloudflare/pages/favicon.svg | 4 ++ cloudflare/pages/index.html | 29 ++++---- cloudflare/pages/logo-200.png | Bin 0 -> 38391 bytes cloudflare/pages/webui-manifest.json | 4 ++ cloudflare/worker.js | 62 +++++++++++++++++- 90 files changed, 255 insertions(+), 14 deletions(-) create mode 100644 cloudflare/pages/_redirects create mode 100644 cloudflare/pages/assets/AgentsView-B5DwEauD.css create mode 100644 cloudflare/pages/assets/AgentsView-U_WfzzKz.js create mode 100644 cloudflare/pages/assets/AppLayout-B0mng0Hs.js create mode 100644 cloudflare/pages/assets/AppLayout-qgctDjpy.css create mode 100644 cloudflare/pages/assets/CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js create mode 100644 cloudflare/pages/assets/CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js create mode 100644 cloudflare/pages/assets/CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js create mode 100644 cloudflare/pages/assets/DashboardView-Cu7R9jUe.js create mode 100644 cloudflare/pages/assets/DashboardView-c71H3EkP.css create mode 100644 cloudflare/pages/assets/DemoView-BPR_Rmcz.js create mode 100644 cloudflare/pages/assets/DemoView-vtX9cghR.css create mode 100644 cloudflare/pages/assets/FeedView-CYGX00OX.css create mode 100644 cloudflare/pages/assets/FeedView-wwm_gE9_.js create mode 100644 cloudflare/pages/assets/Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js create mode 100644 cloudflare/pages/assets/Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js create mode 100644 cloudflare/pages/assets/LoginView-CzW4mb8C.js create mode 100644 cloudflare/pages/assets/LoginView-D7A_FpBE.css create mode 100644 cloudflare/pages/assets/LogsView-Co5xeyoP.js create mode 100644 cloudflare/pages/assets/LogsView-nr-nBQlx.css create mode 100644 cloudflare/pages/assets/NotFoundView-CYIoVC0_.css create mode 100644 cloudflare/pages/assets/NotFoundView-CwfZACt3.js create mode 100644 cloudflare/pages/assets/Presence-Sy1r65hd.js create mode 100644 cloudflare/pages/assets/PromptsView-C9Duf4fo.js create mode 100644 cloudflare/pages/assets/PromptsView-Dyz04uBH.css create mode 100644 cloudflare/pages/assets/ReviewsView-BIzvWmnq.js create mode 100644 cloudflare/pages/assets/ReviewsView-Cjn5FRho.css create mode 100644 cloudflare/pages/assets/ScoresView-CBH5Dogn.js create mode 100644 cloudflare/pages/assets/Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js create mode 100644 cloudflare/pages/assets/SettingsView-Bbemcc2R.js create mode 100644 cloudflare/pages/assets/SetupView-DexhUT0V.js create mode 100644 cloudflare/pages/assets/SheetDescription.vue_vue_type_script_setup_true_lang-CC6GyU0A.js create mode 100644 cloudflare/pages/assets/SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js create mode 100644 cloudflare/pages/assets/Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js create mode 100644 cloudflare/pages/assets/TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js create mode 100644 cloudflare/pages/assets/TasksView-CCGXWEZ4.js create mode 100644 cloudflare/pages/assets/TooltipProvider-Ck2YUJut.js create mode 100644 cloudflare/pages/assets/TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js create mode 100644 cloudflare/pages/assets/TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js create mode 100644 cloudflare/pages/assets/VisuallyHidden-DmVvgUgH.js create mode 100644 cloudflare/pages/assets/_plugin-vue_export-helper-DlAUqK2U.js create mode 100644 cloudflare/pages/assets/activity-SKRWHPM4.js create mode 100644 cloudflare/pages/assets/check-DEjmzl3F.js create mode 100644 cloudflare/pages/assets/chevron-down-xV8GE0yH.js create mode 100644 cloudflare/pages/assets/chevron-right-4Ffa5RHB.js create mode 100644 cloudflare/pages/assets/circle-alert-DI3FQNzC.js create mode 100644 cloudflare/pages/assets/clipboard-BxPwmQDo.js create mode 100644 cloudflare/pages/assets/clipboard-check-B8B0idlM.js create mode 100644 cloudflare/pages/assets/clock-ZB7HOEvr.js create mode 100644 cloudflare/pages/assets/code-zczxpfOO.js create mode 100644 cloudflare/pages/assets/createContext-a9Tpfoxo.js create mode 100644 cloudflare/pages/assets/download-Cz1Slb-U.js create mode 100644 cloudflare/pages/assets/eye-Bf9-8M_K.js create mode 100644 cloudflare/pages/assets/file-search-DRPM2poS.js create mode 100644 cloudflare/pages/assets/file-text-C7Xfe8Jp.js create mode 100644 cloudflare/pages/assets/index-BBqWFH4z.css create mode 100644 cloudflare/pages/assets/index-BYiXDk_r.js create mode 100644 cloudflare/pages/assets/index-CEPd9Ray.js create mode 100644 cloudflare/pages/assets/index-Ct5H-N73.js create mode 100644 cloudflare/pages/assets/index-D0L1R3xN.js create mode 100644 cloudflare/pages/assets/index-wmMfISvJ.js create mode 100644 cloudflare/pages/assets/list-todo-DaXA5Y93.js create mode 100644 cloudflare/pages/assets/marked.esm-D9eDbhZJ.js create mode 100644 cloudflare/pages/assets/message-square-Vh7MGSmH.js create mode 100644 cloudflare/pages/assets/pencil-D1GtMUQI.js create mode 100644 cloudflare/pages/assets/play-BSoFcJJg.js create mode 100644 cloudflare/pages/assets/refresh-cw-DOzI5zLk.js create mode 100644 cloudflare/pages/assets/save-DkYVQELS.js create mode 100644 cloudflare/pages/assets/scroll-text-XmJfG4_f.js create mode 100644 cloudflare/pages/assets/search-3_RVfAHZ.js create mode 100644 cloudflare/pages/assets/settings-CzMAO35A.js create mode 100644 cloudflare/pages/assets/shield-alert-DYoiGl5J.js create mode 100644 cloudflare/pages/assets/shield-check-C0gcRV-i.js create mode 100644 cloudflare/pages/assets/star-VmEUsCX9.js create mode 100644 cloudflare/pages/assets/trending-up-9TLdiVqg.js create mode 100644 cloudflare/pages/assets/trophy-BMFdgvc4.js create mode 100644 cloudflare/pages/assets/useForwardExpose-DjCgLuye.js create mode 100644 cloudflare/pages/assets/usePrimitiveElement-JaAYjjRd.js create mode 100644 cloudflare/pages/assets/users-C4rtE1G7.js create mode 100644 cloudflare/pages/assets/utils-TyZrBBEb.js create mode 100644 cloudflare/pages/assets/webui-BTCBRLGR.js create mode 100644 cloudflare/pages/assets/zap-B-kRHIBE.js create mode 100644 cloudflare/pages/favicon.ico create mode 100644 cloudflare/pages/favicon.png create mode 100644 cloudflare/pages/favicon.svg create mode 100644 cloudflare/pages/logo-200.png create mode 100644 cloudflare/pages/webui-manifest.json diff --git a/cloudflare/pages/_headers b/cloudflare/pages/_headers index 4e22ae5..ca37c7b 100644 --- a/cloudflare/pages/_headers +++ b/cloudflare/pages/_headers @@ -1,3 +1,3 @@ /* - Access-Control-Allow-Origin: * X-Content-Type-Options: nosniff + Referrer-Policy: strict-origin-when-cross-origin diff --git a/cloudflare/pages/_redirects b/cloudflare/pages/_redirects new file mode 100644 index 0000000..ad37e2c --- /dev/null +++ b/cloudflare/pages/_redirects @@ -0,0 +1 @@ +/* /index.html 200 diff --git a/cloudflare/pages/assets/AgentsView-B5DwEauD.css b/cloudflare/pages/assets/AgentsView-B5DwEauD.css new file mode 100644 index 0000000..83ce334 --- /dev/null +++ b/cloudflare/pages/assets/AgentsView-B5DwEauD.css @@ -0,0 +1 @@ +.view-enter-active[data-v-1bc6d336]{transition:all .25s ease-out}.view-leave-active[data-v-1bc6d336]{transition:all .15s ease-in}.view-enter-from[data-v-1bc6d336]{opacity:0;transform:translateY(12px)}.view-leave-to[data-v-1bc6d336]{opacity:0;transform:translateY(-8px)} diff --git a/cloudflare/pages/assets/AgentsView-U_WfzzKz.js b/cloudflare/pages/assets/AgentsView-U_WfzzKz.js new file mode 100644 index 0000000..adf698b --- /dev/null +++ b/cloudflare/pages/assets/AgentsView-U_WfzzKz.js @@ -0,0 +1,4 @@ +import{m as Ke,p as pe,W as Cs,d as ne,l as s,b as _,w as r,q as xe,O as Te,P as Ge,u as t,o as Ie,r as b,V as Ct,H as $e,A as Lt,e as a,Y as Ss,x as Ce,C as Je,k as ce,z as Is,Z as qs,h as Ms,N as ls,a as e,c as o,t as n,n as ae,f as i,F as N,i as k,U as ht,_ as Nt,Q as he,g as se,j as _e,$ as Pt,v as Ne,L as re,a0 as xt,a1 as de,D as St,a2 as Be,X as Bt,E as os,a3 as Tt,a4 as et,y as As,R as zs,T as Ps}from"./index-BYiXDk_r.js";import{_ as Y,A as Kt,a as Vt}from"./index-wmMfISvJ.js";import{P as It,_ as T}from"./index-D0L1R3xN.js";import{_ as be}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{a as Re,b as Gt,u as Ts}from"./VisuallyHidden-DmVvgUgH.js";import{c as it}from"./createContext-a9Tpfoxo.js";import{u as ns,R as Ds,a as Bs,P as qt,T as st,_ as Vs,b as Os,c as Ye,d as Es}from"./TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js";import{u as De}from"./useForwardExpose-DjCgLuye.js";import{P as js,c as Rs,D as Fs,d as Us,e as Ls,T as Ns,_ as Ae,a as ze,b as Pe}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js";import{b as Yt,a as Ht}from"./index-CEPd9Ray.js";import{i as Ks,a as Gs,c as Hs,r as Mt,u as Ws}from"./index-Ct5H-N73.js";import{g as mt,P as rs,u as ds}from"./Presence-Sy1r65hd.js";import{a as Ys,g as Xs,F as Qs,i as Zs,b as Js,L as ea,f as ta,c as kt,S as sa,I as aa,d as is,e as la,u as oa}from"./utils-TyZrBBEb.js";import{C as Ze}from"./chevron-down-xV8GE0yH.js";import{U as Xt}from"./users-C4rtE1G7.js";import{S as na}from"./search-3_RVfAHZ.js";import{R as Qe}from"./refresh-cw-DOzI5zLk.js";import{C as ye}from"./circle-alert-DI3FQNzC.js";import{R as _t,S as gt,a as us}from"./shield-alert-DYoiGl5J.js";import{C as ke}from"./check-DEjmzl3F.js";import{C as Ve}from"./usePrimitiveElement-JaAYjjRd.js";import{_ as je}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{S as cs}from"./settings-CzMAO35A.js";import{P as Le}from"./pencil-D1GtMUQI.js";import{S as ms}from"./save-DkYVQELS.js";import{C as bt,a as ra}from"./chevron-right-4Ffa5RHB.js";import{g as Ot}from"./marked.esm-D9eDbhZJ.js";import{_ as tt}from"./TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js";import{F as Oe}from"./file-text-C7Xfe8Jp.js";import{E as pt}from"./eye-Bf9-8M_K.js";import{C as ps}from"./code-zczxpfOO.js";import{C as Ee}from"./clock-ZB7HOEvr.js";import{M as at,L as Qt}from"./message-square-Vh7MGSmH.js";import{_ as Zt}from"./Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js";import{_ as fs}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./TooltipProvider-Ck2YUJut.js";const ft=Ke("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const vs=Ke("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);const Et=Ke("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const wt=Ke("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);const xs=Ke("power-off",[["path",{d:"M18.36 6.64A9 9 0 0 1 20.77 15",key:"dxknvb"}],["path",{d:"M6.16 6.16a9 9 0 1 0 12.68 12.68",key:"1x7qb5"}],["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);const gs=Ke("power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);const jt=Ke("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);const vt=Ke("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]),ut={list:l=>pe.get("/admin/managed-agents",{params:l}),create:l=>pe.post("/admin/managed-agents",l),get:l=>pe.get(`/admin/managed-agents/${l}`),update:(l,h)=>pe.put(`/admin/managed-agents/${l}`,h),resetRuntimeApiKey:l=>pe.post(`/admin/managed-agents/${l}/runtime-api-key/reset`),remove:l=>pe.delete(`/admin/managed-agents/${l}`)},Jt={get:l=>pe.get(`/admin/managed-agents/${l}/host-config`),update:(l,h)=>pe.put(`/admin/managed-agents/${l}/host-config`,h)},ct={get:l=>pe.get(`/admin/managed-agents/${l}/prompt-asset`),update:(l,h)=>pe.put(`/admin/managed-agents/${l}/prompt-asset`,h),resetFromTemplate:l=>pe.post(`/admin/managed-agents/${l}/prompt-asset/reset-from-template`),renderPreview:l=>pe.post(`/admin/managed-agents/${l}/prompt-asset/render-preview`)},Xe={list:l=>pe.get(`/admin/managed-agents/${l}/schedules`),create:(l,h)=>pe.post(`/admin/managed-agents/${l}/schedules`,h),update:(l,h,p)=>pe.put(`/admin/managed-agents/${l}/schedules/${h}`,p),remove:(l,h)=>pe.delete(`/admin/managed-agents/${l}/schedules/${h}`)},Ue={list:l=>pe.get(`/admin/managed-agents/${l}/comm-bindings-structured/feishu`),suggest:l=>pe.get(`/admin/managed-agents/${l}/comm-bindings-structured/feishu/suggest`),create:(l,h)=>pe.post(`/admin/managed-agents/${l}/comm-bindings-structured/feishu`,h),update:(l,h,p)=>pe.put(`/admin/managed-agents/${l}/comm-bindings-structured/feishu/${h}`,p),remove:(l,h)=>pe.delete(`/admin/managed-agents/${l}/comm-bindings-structured/feishu/${h}`)};function es(l){if(!l)return;const h=new URLSearchParams;if(l.selected_artifacts)for(const p of l.selected_artifacts)h.append("selected_artifacts",p);return l.include_schedule!==void 0&&h.append("include_schedule",String(l.include_schedule)),l.include_comm_bindings!==void 0&&h.append("include_comm_bindings",String(l.include_comm_bindings)),"register_ttl_seconds"in l&&l.register_ttl_seconds!==void 0&&h.append("register_ttl_seconds",String(l.register_ttl_seconds)),"bundle_ttl_seconds"in l&&l.bundle_ttl_seconds!==void 0&&h.append("bundle_ttl_seconds",String(l.bundle_ttl_seconds)),"download_ttl_seconds"in l&&l.download_ttl_seconds!==void 0&&h.append("download_ttl_seconds",String(l.download_ttl_seconds)),h}const we={getDeploymentState:l=>pe.get(`/admin/managed-agents/${l}/deployment-state`),createToken:(l,h)=>pe.post(`/admin/managed-agents/${l}/bootstrap-tokens`,h),listTokens:l=>pe.get(`/admin/managed-agents/${l}/bootstrap-tokens`),revokeToken:(l,h)=>pe.delete(`/admin/managed-agents/${l}/bootstrap-tokens/${h}`),getBootstrapScript:(l,h)=>pe.get(`/admin/managed-agents/${l}/bootstrap-script`,{params:es(h),paramsSerializer:p=>p?.toString()??""}),getOnboardingMessage:(l,h)=>pe.get(`/admin/managed-agents/${l}/onboarding-message`,{params:es(h),paramsSerializer:p=>p?.toString()??""}),previewDeploy:(l,h)=>pe.post(`/admin/managed-agents/${l}/deploy-preview`,h),createDeployScript:(l,h)=>pe.post(`/admin/managed-agents/${l}/deploy-script`,h),listDeploymentSnapshots:l=>pe.get(`/admin/managed-agents/${l}/deployment-snapshots`),dismissDeploymentSnapshot:(l,h)=>pe.post(`/admin/managed-agents/${l}/deployment-snapshot/dismiss`,h)},$t={getHostPlatforms:()=>pe.get("/admin/managed-agents/meta/host-platforms"),getPromptTemplates:l=>pe.get("/admin/managed-agents/meta/prompt-templates",{params:l?{role:l}:{}}),getCommProviderSchema:(l,h)=>pe.get(`/admin/managed-agents/meta/host-platforms/${l}/comm-providers/${h}/schema`),validateCommProviderBinding:(l,h,p)=>pe.post(`/admin/managed-agents/meta/host-platforms/${l}/comm-providers/${h}/validate`,p)},da=["INPUT","TEXTAREA"];function ts(l,h,p,I={}){if(!h||I.enableIgnoredElement&&da.includes(h.nodeName))return null;const{arrowKeyOptions:m="both",attributeName:y="[data-reka-collection-item]",itemsArray:$=[],loop:w=!0,dir:q="ltr",preventScroll:A=!0,focus:v=!1}=I,[g,S,G,z,H,D]=[l.key==="ArrowRight",l.key==="ArrowLeft",l.key==="ArrowUp",l.key==="ArrowDown",l.key==="Home",l.key==="End"],M=G||z,K=g||S;if(!H&&!D&&(!M&&!K||m==="vertical"&&K||m==="horizontal"&&M))return null;const W=p?Array.from(p.querySelectorAll(y)):$;if(!W.length)return null;A&&l.preventDefault();let O=null;return K||M?O=bs(W,h,{goForward:M?z:q==="ltr"?g:S,loop:w}):H?O=W.at(0)||null:D&&(O=W.at(-1)||null),v&&O?.focus(),O}function bs(l,h,p,I=l.includes(h)?l.length:l.length+1){if(--I===0)return null;const m=l.indexOf(h);let y;if(m===-1?y=p.goForward?0:l.length-1:y=p.goForward?m+1:m-1,!p.loop&&(y<0||y>=l.length))return null;const $=(y+l.length)%l.length,w=l[$];return w?w.hasAttribute("disabled")&&w.getAttribute("disabled")!=="false"?bs(l,w,p,I):w:null}let Dt=0;function ia(){Cs(l=>{if(!Ks)return;const h=document.querySelectorAll("[data-reka-focus-guard]");document.body.insertAdjacentElement("afterbegin",h[0]??ss()),document.body.insertAdjacentElement("beforeend",h[1]??ss()),Dt++,l(()=>{Dt===1&&document.querySelectorAll("[data-reka-focus-guard]").forEach(p=>p.remove()),Dt--})})}function ss(){const l=document.createElement("span");return l.setAttribute("data-reka-focus-guard",""),l.tabIndex=0,l.style.outline="none",l.style.opacity="0",l.style.position="fixed",l.style.pointerEvents="none",l}function ua(l){const h=Gs("",1e3);return{search:h,handleTypeaheadSearch:(m,y)=>{h.value=h.value+m;{const $=mt(),w=y.map(S=>({...S,textValue:S.value?.textValue??S.ref.textContent?.trim()??""})),q=w.find(S=>S.ref===$),A=w.map(S=>S.textValue),v=ma(A,h.value,q?.textValue),g=w.find(S=>S.textValue===v);return g&&g.ref.focus(),g?.ref}},resetTypeahead:()=>{h.value=""}}}function ca(l,h){return l.map((p,I)=>l[(h+I)%l.length])}function ma(l,h,p){const m=h.length>1&&Array.from(h).every(A=>A===h[0])?h[0]:h,y=p?l.indexOf(p):-1;let $=ca(l,Math.max(y,0));m.length===1&&($=$.filter(A=>A!==p));const q=$.find(A=>A.toLowerCase().startsWith(m.toLowerCase()));return q!==p?q:void 0}var pa=ne({__name:"MenuAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(l){const h=l;return(p,I)=>(s(),_(t(js),Te(Ge(h)),{default:r(()=>[xe(p.$slots,"default")]),_:3},16))}}),fa=pa;function va(){const l=b(!1);return Ie(()=>{Yt("keydown",()=>{l.value=!0},{capture:!0,passive:!0}),Yt(["pointerdown","pointermove"],()=>{l.value=!1},{capture:!0,passive:!0})}),l}const xa=Hs(va),[At,ga]=it(["MenuRoot","MenuSub"],"MenuContext"),[Wt,ba]=it("MenuRoot");var ya=ne({__name:"MenuRoot",props:{open:{type:Boolean,required:!1,default:!1},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:["update:open"],setup(l,{emit:h}){const p=l,I=h,{modal:m,dir:y}=Ct(p),$=ns(y),w=Ht(p,"open",I),q=b(),A=xa();return ga({open:w,onOpenChange:v=>{w.value=v},content:q,onContentChange:v=>{q.value=v}}),ba({onClose:()=>{w.value=!1},isUsingKeyboardRef:A,dir:$,modal:m}),(v,g)=>(s(),_(t(Rs),null,{default:r(()=>[xe(v.$slots,"default")]),_:3}))}}),_a=ya;const[ys,ha]=it("MenuContent");var ka=ne({__name:"MenuContentImpl",props:Ss({loop:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},disableOutsideScroll:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...Ls}),emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","entryFocus","openAutoFocus","closeAutoFocus","dismiss"],setup(l,{emit:h}){const p=l,I=h,m=At(),y=Wt(),{trapFocus:$,disableOutsidePointerEvents:w,loop:q}=Ct(p);ia(),Ys(w.value);const A=b(""),v=b(0),g=b(0),S=b(null),G=b("right"),z=b(0),H=b(null),D=b(),{forwardRef:M,currentElement:K}=De(),{handleTypeaheadSearch:W}=ua(),O=b();function F(C){const B=ts(C,O.value||mt(),K.value,{loop:q.value,arrowKeyOptions:"vertical",dir:y?.dir.value,focus:!1,attributeName:"[data-reka-collection-item]:not([data-disabled])"});B&&(O.value=B,B.scrollIntoView({block:"nearest"}))}function te(){O.value&&O.value.click()}const le=b(),J=b();$e(O,C=>{J.value&&(C===void 0||C!==J.value.trigger.value)&&(J.value.onOpenChange(!1),J.value=void 0)}),$e(K,C=>{m.onContentChange(C)}),Lt(()=>{window.clearTimeout(v.value)});function me(C){return G.value===S.value?.side&&Zs(C,S.value?.area)}async function fe(C){I("openAutoFocus",C),!C.defaultPrevented&&(C.preventDefault(),K.value?.focus({preventScroll:!0}))}function ve(C){if(C.defaultPrevented)return;const B=C.target,L=B.closest("[data-reka-menu-content]")===C.currentTarget,ie=["input","textarea"].includes(B.tagName.toLowerCase()),ue=C.ctrlKey||C.altKey||C.metaKey,X=C.key.length===1,P=ts(C,mt(),K.value,{loop:q.value,arrowKeyOptions:"vertical",dir:y?.dir.value,focus:!0,attributeName:"[data-reka-collection-item]:not([data-disabled])"});if(P)return P?.focus();if(C.code==="Space")return;const E=D.value?.getItems()??[];if(L&&(C.key==="Tab"&&C.preventDefault(),!ue&&X&&!ie&&W(C.key,E)),C.target!==K.value||!Js.includes(C.key))return;C.preventDefault();const j=[...E.map(U=>U.ref)];ea.includes(C.key)&&j.reverse(),ta(j)}function Z(C){C?.currentTarget?.contains?.(C.target)||(window.clearTimeout(v.value),A.value="")}function V(C){if(!kt(C))return;const B=C.target,L=z.value!==C.clientX;if(C?.currentTarget?.contains(B)&&L){const ie=C.clientX>z.value?"right":"left";G.value=ie,z.value=C.clientX}}function Q(C){kt(C)&&le.value&&le.value.focus()}return ha({onItemEnter:C=>!!me(C),onItemLeave:C=>{if(me(C))return;["INPUT","TEXTAREA"].includes(mt()?.tagName||"")||K.value?.focus(),H.value=null},onTriggerLeave:C=>!!me(C),searchRef:A,highlightedElement:O,onKeydownNavigation:F,onKeydownEnter:te,filterElement:le,onFilterElementChange:C=>{le.value=C},activeSubmenuContext:J,pointerGraceTimerRef:g,onPointerGraceIntentChange:C=>{S.value=C}}),(C,B)=>(s(),_(t(Qs),{"as-child":"",trapped:t($),onMountAutoFocus:fe,onUnmountAutoFocus:B[7]||(B[7]=L=>I("closeAutoFocus",L))},{default:r(()=>[a(t(Fs),{"as-child":"","disable-outside-pointer-events":t(w),onEscapeKeyDown:B[2]||(B[2]=L=>I("escapeKeyDown",L)),onPointerDownOutside:B[3]||(B[3]=L=>I("pointerDownOutside",L)),onFocusOutside:B[4]||(B[4]=L=>I("focusOutside",L)),onInteractOutside:B[5]||(B[5]=L=>I("interactOutside",L)),onDismiss:B[6]||(B[6]=L=>I("dismiss"))},{default:r(()=>[a(t(Ds),{ref_key:"rovingFocusGroupRef",ref:D,"current-tab-stop-id":H.value,"onUpdate:currentTabStopId":B[0]||(B[0]=L=>H.value=L),"as-child":"",orientation:"vertical",dir:t(y).dir.value,loop:t(q),onEntryFocus:B[1]||(B[1]=L=>{I("entryFocus",L),t(y).isUsingKeyboardRef.value||L.preventDefault()})},{default:r(()=>[a(t(Us),{ref:t(M),role:"menu",as:C.as,"as-child":C.asChild,"aria-orientation":"vertical","data-reka-menu-content":"","data-state":t(Xs)(t(m).open.value),dir:t(y).dir.value,side:C.side,"side-offset":C.sideOffset,align:C.align,"align-offset":C.alignOffset,"avoid-collisions":C.avoidCollisions,"collision-boundary":C.collisionBoundary,"collision-padding":C.collisionPadding,"arrow-padding":C.arrowPadding,"prioritize-position":C.prioritizePosition,"position-strategy":C.positionStrategy,"update-position-strategy":C.updatePositionStrategy,sticky:C.sticky,"hide-when-detached":C.hideWhenDetached,reference:C.reference,onKeydown:ve,onBlur:Z,onPointermove:V,onPointerenter:Q},{default:r(()=>[xe(C.$slots,"default")]),_:3},8,["as","as-child","data-state","dir","side","side-offset","align","align-offset","avoid-collisions","collision-boundary","collision-padding","arrow-padding","prioritize-position","position-strategy","update-position-strategy","sticky","hide-when-detached","reference"])]),_:3},8,["current-tab-stop-id","dir","loop"])]),_:3},8,["disable-outside-pointer-events"])]),_:3},8,["trapped"]))}}),_s=ka,wa=ne({inheritAttrs:!1,__name:"MenuItemImpl",props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(l){const h=l,p=ys(),{forwardRef:I,currentElement:m}=De(),{CollectionItem:y}=Bs(),$=b(!1),w=ce(()=>$.value||p.highlightedElement.value===m.value);async function q(v){if(!v.defaultPrevented&&kt(v)){if(h.disabled)p.onItemLeave(v);else if(!p.onItemEnter(v)){const S=v.currentTarget;p.highlightedElement.value=S,["INPUT","TEXTAREA"].includes(mt()?.tagName||"")||S.focus({preventScroll:!0})}}}async function A(v){await Je(),!v.defaultPrevented&&kt(v)&&p.onItemLeave(v)}return(v,g)=>(s(),_(t(y),{value:{textValue:v.textValue}},{default:r(()=>[a(t(It),Ce({ref:t(I),role:"menuitem",tabindex:"-1"},v.$attrs,{as:v.as,"as-child":v.asChild,"aria-disabled":v.disabled||void 0,"data-disabled":v.disabled?"":void 0,"data-highlighted":w.value?"":void 0,onPointermove:q,onPointerleave:A,onFocus:g[0]||(g[0]=async S=>{await Je(),!(S.defaultPrevented||v.disabled)&&($.value=!0,t(p).highlightedElement.value=S.currentTarget)}),onBlur:g[1]||(g[1]=async S=>{await Je(),!S.defaultPrevented&&($.value=!1)})}),{default:r(()=>[xe(v.$slots,"default")]),_:3},16,["as","as-child","aria-disabled","data-disabled","data-highlighted"])]),_:3},8,["value"]))}}),$a=wa,Ca=ne({__name:"MenuItem",props:{disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(l,{emit:h}){const p=l,I=h,{forwardRef:m,currentElement:y}=De(),$=Wt(),w=ys(),q=b(!1);async function A(){const v=y.value;if(!p.disabled&&v){const g=new CustomEvent(aa,{bubbles:!0,cancelable:!0});I("select",g),await Je(),g.defaultPrevented?q.value=!1:$.onClose()}}return(v,g)=>(s(),_($a,Ce(p,{ref:t(m),onClick:A,onPointerdown:g[0]||(g[0]=()=>{q.value=!0}),onPointerup:g[1]||(g[1]=async S=>{await Je(),!S.defaultPrevented&&(q.value||S.currentTarget?.click())}),onKeydown:g[2]||(g[2]=async S=>{const G=t(w).searchRef.value!=="";v.disabled||G&&S.key===" "||t(sa).includes(S.key)&&(S.currentTarget.click(),S.preventDefault())})}),{default:r(()=>[xe(v.$slots,"default")]),_:3},16))}}),Sa=Ca;const[Ia,qa]=it(["MenuCheckboxItem","MenuRadioItem"],"MenuItemIndicatorContext");var Ma=ne({__name:"MenuItemIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(l){const h=Ia({modelValue:b(!1)});return(p,I)=>(s(),_(t(rs),{present:p.forceMount||t(la)(t(h).modelValue.value)||t(h).modelValue.value===!0},{default:r(()=>[a(t(It),{as:p.as,"as-child":p.asChild,"data-state":t(is)(t(h).modelValue.value)},{default:r(()=>[xe(p.$slots,"default")]),_:3},8,["as","as-child","data-state"])]),_:3},8,["present"]))}}),Aa=Ma,za=ne({__name:"MenuRootContentModal",props:{loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","entryFocus","openAutoFocus","closeAutoFocus"],setup(l,{emit:h}){const p=l,I=h,m=Re(p,I),y=At(),{forwardRef:$,currentElement:w}=De();return oa(w),(q,A)=>(s(),_(_s,Ce(t(m),{ref:t($),"trap-focus":t(y).open.value,"disable-outside-pointer-events":t(y).open.value,"disable-outside-scroll":!0,onDismiss:A[0]||(A[0]=v=>t(y).onOpenChange(!1)),onFocusOutside:A[1]||(A[1]=Is(v=>I("focusOutside",v),["prevent"]))}),{default:r(()=>[xe(q.$slots,"default")]),_:3},16,["trap-focus","disable-outside-pointer-events"]))}}),Pa=za,Ta=ne({__name:"MenuRootContentNonModal",props:{loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","entryFocus","openAutoFocus","closeAutoFocus"],setup(l,{emit:h}){const m=Re(l,h),y=At();return($,w)=>(s(),_(_s,Ce(t(m),{"trap-focus":!1,"disable-outside-pointer-events":!1,"disable-outside-scroll":!1,onDismiss:w[0]||(w[0]=q=>t(y).onOpenChange(!1))}),{default:r(()=>[xe($.$slots,"default")]),_:3},16))}}),Da=Ta,Ba=ne({__name:"MenuContent",props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","entryFocus","openAutoFocus","closeAutoFocus"],setup(l,{emit:h}){const m=Re(l,h),y=At(),$=Wt();return(w,q)=>(s(),_(t(rs),{present:w.forceMount||t(y).open.value},{default:r(()=>[t($).modal.value?(s(),_(Pa,Te(Ce({key:0},{...w.$attrs,...t(m)})),{default:r(()=>[xe(w.$slots,"default")]),_:3},16)):(s(),_(Da,Te(Ce({key:1},{...w.$attrs,...t(m)})),{default:r(()=>[xe(w.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),Va=Ba,Oa=ne({__name:"MenuGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(l){const h=l;return(p,I)=>(s(),_(t(It),Ce({role:"group"},h),{default:r(()=>[xe(p.$slots,"default")]),_:3},16))}}),Ea=Oa,ja=ne({__name:"MenuPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(l){const h=l;return(p,I)=>(s(),_(t(Ns),Te(Ge(h)),{default:r(()=>[xe(p.$slots,"default")]),_:3},16))}}),Ra=ja;const[Fa,Ua]=it("MenuRadioGroup");var La=ne({__name:"MenuRadioGroup",props:{modelValue:{type:null,required:!1,default:""},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue"],setup(l,{emit:h}){const p=l,I=h,m=Mt(p,["modelValue"]),y=Gt(m),$=Ht(p,"modelValue",I);return Ua({modelValue:$,onValueChange:w=>{$.value=w}}),(w,q)=>(s(),_(Ea,Te(Ge(t(y))),{default:r(()=>[xe(w.$slots,"default",{modelValue:t($)})]),_:3},16))}}),Na=La,Ka=ne({__name:"MenuRadioItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(l,{emit:h}){const p=l,I=h,m=Mt(p,["value"]),y=Gt(m),{value:$}=Ct(p),w=Fa(),q=ce(()=>w.modelValue.value===$?.value);return qa({modelValue:q}),(A,v)=>(s(),_(Sa,Ce({role:"menuitemradio"},t(y),{"aria-checked":q.value,"data-state":t(is)(q.value),onSelect:v[0]||(v[0]=async g=>{I("select",g),t(w).onValueChange(t($))})}),{default:r(()=>[xe(A.$slots,"default")]),_:3},16,["aria-checked","data-state"]))}}),Ga=Ka;const[hs,Ha]=it("DropdownMenuRoot");var Wa=ne({__name:"DropdownMenuRoot",props:{defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1,default:void 0},dir:{type:String,required:!1},modal:{type:Boolean,required:!1,default:!0}},emits:["update:open"],setup(l,{emit:h}){const p=l,I=h;De();const m=Ht(p,"open",I,{defaultValue:p.defaultOpen,passive:p.open===void 0}),y=b(),{modal:$,dir:w}=Ct(p),q=ns(w);return Ha({open:m,onOpenChange:A=>{m.value=A},onOpenToggle:()=>{m.value=!m.value},triggerId:"",triggerElement:y,contentId:"",modal:$,dir:q}),(A,v)=>(s(),_(t(_a),{open:t(m),"onUpdate:open":v[0]||(v[0]=g=>qs(m)?m.value=g:null),dir:t(q),modal:t($)},{default:r(()=>[xe(A.$slots,"default",{open:t(m)})]),_:3},8,["open","dir","modal"]))}}),Ya=Wa,Xa=ne({__name:"DropdownMenuContent",props:{forceMount:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","closeAutoFocus"],setup(l,{emit:h}){const m=Re(l,h);De();const y=hs(),$=b(!1);function w(q){q.defaultPrevented||($.value||setTimeout(()=>{y.triggerElement.value?.focus()},0),$.value=!1,q.preventDefault())}return y.contentId||=ds(void 0,"reka-dropdown-menu-content"),(q,A)=>(s(),_(t(Va),Ce(t(m),{id:t(y).contentId,"aria-labelledby":t(y)?.triggerId,style:{"--reka-dropdown-menu-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-dropdown-menu-content-available-width":"var(--reka-popper-available-width)","--reka-dropdown-menu-content-available-height":"var(--reka-popper-available-height)","--reka-dropdown-menu-trigger-width":"var(--reka-popper-anchor-width)","--reka-dropdown-menu-trigger-height":"var(--reka-popper-anchor-height)"},onCloseAutoFocus:w,onInteractOutside:A[0]||(A[0]=v=>{if(v.defaultPrevented)return;const g=v.detail.originalEvent,S=g.button===0&&g.ctrlKey===!0,G=g.button===2||S;(!t(y).modal.value||G)&&($.value=!0),t(y).triggerElement.value?.contains(v.target)&&v.preventDefault()})}),{default:r(()=>[xe(q.$slots,"default")]),_:3},16,["id","aria-labelledby"]))}}),Qa=Xa,Za=ne({__name:"DropdownMenuItemIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(l){const h=l;return De(),(p,I)=>(s(),_(t(Aa),Te(Ge(h)),{default:r(()=>[xe(p.$slots,"default")]),_:3},16))}}),Ja=Za,el=ne({__name:"DropdownMenuPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(l){const h=l;return(p,I)=>(s(),_(t(Ra),Te(Ge(h)),{default:r(()=>[xe(p.$slots,"default")]),_:3},16))}}),tl=el,sl=ne({__name:"DropdownMenuRadioGroup",props:{modelValue:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue"],setup(l,{emit:h}){const p=l,m=Ts(h);return De(),(y,$)=>(s(),_(t(Na),Te(Ge({...p,...t(m)})),{default:r(()=>[xe(y.$slots,"default")]),_:3},16))}}),al=sl,ll=ne({__name:"DropdownMenuRadioItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(l,{emit:h}){const m=Re(l,h);return De(),(y,$)=>(s(),_(t(Ga),Te(Ge(t(m))),{default:r(()=>[xe(y.$slots,"default")]),_:3},16))}}),ol=ll,nl=ne({__name:"DropdownMenuTrigger",props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(l){const h=l,p=hs(),{forwardRef:I,currentElement:m}=De();return Ie(()=>{p.triggerElement=m}),p.triggerId||=ds(void 0,"reka-dropdown-menu-trigger"),(y,$)=>(s(),_(t(fa),{"as-child":""},{default:r(()=>[a(t(It),{id:t(p).triggerId,ref:t(I),type:y.as==="button"?"button":void 0,"as-child":h.asChild,as:y.as,"aria-haspopup":"menu","aria-expanded":t(p).open.value,"aria-controls":t(p).open.value?t(p).contentId:void 0,"data-disabled":y.disabled?"":void 0,disabled:y.disabled,"data-state":t(p).open.value?"open":"closed",onClick:$[0]||($[0]=async w=>{!y.disabled&&w.button===0&&w.ctrlKey===!1&&(t(p)?.onOpenToggle(),await Je(),t(p).open.value&&w.preventDefault())}),onKeydown:$[1]||($[1]=Ms(w=>{y.disabled||(["Enter"," "].includes(w.key)&&t(p).onOpenToggle(),w.key==="ArrowDown"&&t(p).onOpenChange(!0),["Enter"," ","ArrowDown"].includes(w.key)&&w.preventDefault())},["enter","space","arrow-down"]))},{default:r(()=>[xe(y.$slots,"default")]),_:3},8,["id","type","as-child","as","aria-expanded","aria-controls","data-disabled","disabled","data-state"])]),_:3}))}}),rl=nl;const lt=ne({__name:"DropdownMenu",props:{defaultOpen:{type:Boolean},open:{type:Boolean},dir:{},modal:{type:Boolean}},emits:["update:open"],setup(l,{emit:h}){const m=Re(l,h);return(y,$)=>(s(),_(t(Ya),Ce({"data-slot":"dropdown-menu"},t(m)),{default:r(w=>[xe(y.$slots,"default",Te(Ge(w)))]),_:3},16))}}),ot=ne({inheritAttrs:!1,__name:"DropdownMenuContent",props:{forceMount:{type:Boolean},loop:{type:Boolean},side:{},sideOffset:{default:4},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},hideShiftedArrow:{type:Boolean},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","closeAutoFocus"],setup(l,{emit:h}){const p=l,I=h,m=Mt(p,"class"),y=Re(m,I);return($,w)=>(s(),_(t(tl),null,{default:r(()=>[a(t(Qa),Ce({"data-slot":"dropdown-menu-content"},{...$.$attrs,...t(y)},{class:t(ls)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--reka-dropdown-menu-content-available-height) min-w-[8rem] origin-(--reka-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",p.class)}),{default:r(()=>[xe($.$slots,"default")]),_:3},16,["class"])]),_:3}))}}),nt=ne({__name:"DropdownMenuRadioGroup",props:{modelValue:{},asChild:{type:Boolean},as:{}},emits:["update:modelValue"],setup(l,{emit:h}){const m=Re(l,h);return(y,$)=>(s(),_(t(al),Ce({"data-slot":"dropdown-menu-radio-group"},t(m)),{default:r(()=>[xe(y.$slots,"default")]),_:3},16))}}),dl={class:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"},rt=ne({__name:"DropdownMenuRadioItem",props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:["select"],setup(l,{emit:h}){const p=l,I=h,m=Mt(p,"class"),y=Re(m,I);return($,w)=>(s(),_(t(ol),Ce({"data-slot":"dropdown-menu-radio-item"},t(y),{class:t(ls)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",p.class)}),{default:r(()=>[e("span",dl,[a(t(Ja),null,{default:r(()=>[xe($.$slots,"indicator-icon",{},()=>[a(t(vs),{class:"size-2 fill-current"})])]),_:3})]),xe($.$slots,"default")]),_:3},16,["class"]))}}),dt=ne({__name:"DropdownMenuTrigger",props:{disabled:{type:Boolean},asChild:{type:Boolean},as:{}},setup(l){const p=Gt(l);return(I,m)=>(s(),_(t(rl),Ce({"data-slot":"dropdown-menu-trigger"},t(p)),{default:r(()=>[xe(I.$slots,"default")]),_:3},16))}});function Rt(l){return{planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"}[l]??l}function Ft(l){return{planner:"bg-violet-500/10 text-violet-400 border-violet-500/20",executor:"bg-sky-500/10 text-sky-400 border-sky-500/20",reviewer:"bg-amber-500/10 text-amber-400 border-amber-500/20",patrol:"bg-emerald-500/10 text-emerald-400 border-emerald-500/20"}[l]??"bg-muted text-muted-foreground"}function ks(l){return{draft:"草稿",configured:"已配置",deployed:"已部署",disabled:"已禁用",archived:"已归档"}[l]??l}function il(l){return{draft:"bg-zinc-400",configured:"bg-blue-400",deployed:"bg-emerald-400",disabled:"bg-amber-400",archived:"bg-zinc-600"}[l]??"bg-zinc-400"}function ul(l){return{draft:"bg-zinc-500/10 text-zinc-400 border-zinc-500/20",configured:"bg-blue-500/10 text-blue-400 border-blue-500/20",deployed:"bg-emerald-500/10 text-emerald-400 border-emerald-500/20",disabled:"bg-amber-500/10 text-amber-400 border-amber-500/20",archived:"bg-zinc-700/10 text-zinc-500 border-zinc-700/20"}[l]??"bg-muted text-muted-foreground"}function ws(l){return{create_sub_agent:"创建子 Agent",bind_existing_agent:"绑定现有 Agent",bind_main_agent:"绑定主 Agent"}[l]??l}function Ut(l){if(!l)return"—";try{return new Date(l).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return l}}const cl={create_sub_agent:"创建子 Agent",bind_existing_agent:"绑定现有 Agent",bind_main_agent:"绑定主 Agent"},$s={local:"主力 OpenClaw",remote:"外部 OpenClaw"},ml={class:"p-4 space-y-3"},pl={class:"flex items-start justify-between gap-2"},fl={class:"min-w-0"},vl={class:"font-medium text-sm truncate"},xl={class:"text-xs text-muted-foreground font-mono mt-0.5"},gl={class:"flex items-center gap-2 flex-wrap"},bl={class:"flex items-center gap-1.5"},yl={class:"text-xs text-muted-foreground"},_l={class:"flex items-center justify-between text-xs text-muted-foreground/60"},hl={key:0,class:"flex items-center gap-1.5 text-[11px] text-muted-foreground/40"},kl={class:"text-[11px] text-muted-foreground/40"},wl=ne({__name:"AgentCard",props:{agent:{}},emits:["select"],setup(l,{emit:h}){const p=h;return(I,m)=>(s(),o("div",{class:"group relative rounded-xl border bg-card transition-all duration-200 hover:shadow-lg hover:shadow-primary/5 hover:border-primary/30 cursor-pointer overflow-hidden",onClick:m[0]||(m[0]=y=>p("select",l.agent.id))},[e("div",ml,[e("div",pl,[e("div",fl,[e("h3",vl,n(l.agent.name),1),e("p",xl,n(l.agent.slug),1)]),a(t(Y),{variant:"outline",class:ae(["shrink-0 text-[10px]",t(Ft)(l.agent.role)])},{default:r(()=>[i(n(t(Rt)(l.agent.role)),1)]),_:1},8,["class"])]),e("div",gl,[e("div",bl,[e("span",{class:ae(["h-1.5 w-1.5 rounded-full",t(il)(l.agent.status)])},null,2),e("span",yl,n(t(ks)(l.agent.status)),1)]),a(t(Y),{variant:"outline",class:"text-[10px] text-muted-foreground"},{default:r(()=>[i(n(t(ws)(l.agent.deployment_mode)),1)]),_:1})]),e("div",_l,[e("span",null,n(l.agent.host_platform),1),e("span",null,[i("v"+n(l.agent.config_version)+" ",1),l.agent.deployed_config_version!==null?(s(),o(N,{key:0},[i(" → v"+n(l.agent.deployed_config_version)+" ",1),e("span",{class:ae(l.agent.needs_redeploy?"text-amber-400":"text-emerald-400")},n(l.agent.needs_redeploy?"⚠":"✓"),3)],64)):k("",!0)])]),l.agent.readiness?(s(),o("div",hl,[e("span",{class:ae(["flex items-center gap-0.5",l.agent.readiness.host_config?"text-emerald-400/70":""])},[l.agent.readiness.host_config?(s(),_(t(ht),{key:0,class:"h-2.5 w-2.5"})):k("",!0),i(" 平台"+n(l.agent.readiness.host_config?"":" —"),1)],2),m[1]||(m[1]=e("span",{class:"text-muted-foreground/20"},"·",-1)),e("span",{class:ae(["flex items-center gap-0.5",l.agent.readiness.prompt_asset?"text-emerald-400/70":""])},[l.agent.readiness.prompt_asset?(s(),_(t(ht),{key:0,class:"h-2.5 w-2.5"})):k("",!0),i(" Prompt"+n(l.agent.readiness.prompt_asset?"":" —"),1)],2),m[2]||(m[2]=e("span",{class:"text-muted-foreground/20"},"·",-1)),e("span",null,"定时 "+n(l.agent.readiness.schedules_count||"—"),1),m[3]||(m[3]=e("span",{class:"text-muted-foreground/20"},"·",-1)),e("span",null,"通讯 "+n(l.agent.readiness.comm_bindings_count||"—"),1)])):k("",!0),e("div",kl,n(t(Ut)(l.agent.updated_at)),1)])]))}});function zt(){const l=b([]);async function h(){try{const $=await $t.getHostPlatforms();l.value=$.data.items}catch{console.warn("Failed to load host platforms meta")}}function p($){return l.value.find(w=>w.key===$)??null}function I($){return(p($)?.deployment_modes??["create_sub_agent","bind_existing_agent","bind_main_agent"]).map(A=>({value:A,label:cl[A]??A}))}function m($){return(p($)?.access_modes??["local","remote"]).map(A=>({value:A,label:$s[A]??A}))}const y=ce(()=>l.value.map($=>({value:$.key,label:$.label})));return{platforms:l,platformOptions:y,loadPlatforms:h,selectedPlatformFor:p,deployModeOptionsFor:I,accessModeOptionsFor:m}}const $l={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Cl={class:"relative z-10 w-full max-w-lg max-h-[85vh] overflow-y-auto rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200"},Sl={class:"space-y-3 mb-6"},Il={class:"grid grid-cols-2 gap-1.5"},ql=["value"],Ml={class:"text-sm"},Al={class:"space-y-3 mb-5"},zl={class:"space-y-1.5"},Pl=["value"],Tl={class:"text-sm"},Dl={class:"space-y-1.5"},Bl=["value"],Vl={class:"space-y-0.5"},Ol={class:"text-sm flex items-center gap-1.5"},El={class:"text-[11px] text-muted-foreground leading-tight"},jl={key:0,class:"text-xs text-rose-500 mb-3"},Rl={class:"flex gap-3"},Fl=ne({__name:"AgentCreateDialog",props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:xt(["created"],["update:open"]),setup(l,{emit:h}){const p=Nt(l,"open"),I=h,{platformOptions:m,deployModeOptionsFor:y,accessModeOptionsFor:$,loadPlatforms:w}=zt();w();const q=b(!1),A=b(""),v=b({name:"",slug:"",role:"executor",description:"",host_platform:"openclaw",deployment_mode:"create_sub_agent",host_access_mode:"local",host_agent_identifier:"",workdir_path:""}),g=[{value:"planner",label:"规划者"},{value:"executor",label:"执行者"},{value:"reviewer",label:"审查者"},{value:"patrol",label:"巡查者"}];function S(){v.value={name:"",slug:"",role:"executor",description:"",host_platform:"openclaw",deployment_mode:"create_sub_agent",host_access_mode:"local",host_agent_identifier:"",workdir_path:""},A.value=""}async function G(){const H=v.value;if(!H.name.trim()){A.value="名称不能为空";return}if(!H.slug.trim()){A.value="Slug 不能为空";return}q.value=!0,A.value="";try{await ut.create({...H,name:H.name.trim(),slug:H.slug.trim(),description:H.description?.trim()||void 0,host_agent_identifier:H.host_agent_identifier?.trim()||void 0,workdir_path:H.workdir_path?.trim()||void 0}),de.success(`Agent「${H.name.trim()}」创建成功`),p.value=!1,S(),I("created")}catch(D){const M=D?.response?.data?.detail;A.value=M??"创建失败,请稍后再试"}finally{q.value=!1}}function z(){p.value=!1,S()}return(H,D)=>(s(),_(he,{to:"body"},[p.value?(s(),o("div",$l,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:z}),e("div",Cl,[D[20]||(D[20]=e("h2",{class:"text-lg font-semibold mb-5"},"新建 Agent",-1)),e("div",Sl,[D[12]||(D[12]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider"},"基本信息",-1)),e("div",null,[D[8]||(D[8]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},[i("名称 "),e("span",{class:"text-rose-500"},"*")],-1)),a(t(be),{modelValue:v.value.name,"onUpdate:modelValue":D[0]||(D[0]=M=>v.value.name=M),placeholder:"如:AI小灰"},null,8,["modelValue"])]),e("div",null,[D[9]||(D[9]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},[i("Slug "),e("span",{class:"text-rose-500"},"*")],-1)),a(t(be),{modelValue:v.value.slug,"onUpdate:modelValue":D[1]||(D[1]=M=>v.value.slug=M),placeholder:"如:ai-xiaohui(稳定标识)",class:"font-mono"},null,8,["modelValue"])]),e("div",null,[D[10]||(D[10]=e("label",{class:"text-xs text-muted-foreground mb-1.5 block"},[i("角色 "),e("span",{class:"text-rose-500"},"*")],-1)),e("div",Il,[(s(),o(N,null,se(g,M=>e("label",{key:M.value,class:ae(["flex items-center gap-2 cursor-pointer rounded-lg border px-3 py-2 transition-colors",v.value.role===M.value?"border-primary bg-primary/5":"border-border hover:bg-muted/30"])},[_e(e("input",{type:"radio",value:M.value,"onUpdate:modelValue":D[2]||(D[2]=K=>v.value.role=K),class:"accent-primary"},null,8,ql),[[Pt,v.value.role]]),e("span",Ml,n(M.label),1)],2)),64))])]),e("div",null,[D[11]||(D[11]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},"描述",-1)),_e(e("textarea",{"onUpdate:modelValue":D[3]||(D[3]=M=>v.value.description=M),rows:"2",class:"flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none",placeholder:"可选描述"},null,512),[[Ne,v.value.description]])])]),e("div",Al,[D[17]||(D[17]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider"},"部署配置",-1)),e("div",null,[D[13]||(D[13]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},"Agent 平台",-1)),t(m).length>0?(s(),_(t(lt),{key:0},{default:r(()=>[a(t(dt),{"as-child":""},{default:r(()=>[a(t(T),{variant:"outline",size:"sm",class:"h-9 w-full justify-between text-sm font-normal"},{default:r(()=>[i(n(t(m).find(M=>M.value===v.value.host_platform)?.label??v.value.host_platform)+" ",1),a(t(Ze),{class:"h-3.5 w-3.5 opacity-50"})]),_:1})]),_:1}),a(t(ot),{align:"start",class:"min-w-[200px]"},{default:r(()=>[a(t(nt),{"model-value":v.value.host_platform,"onUpdate:modelValue":D[4]||(D[4]=M=>v.value.host_platform=String(M))},{default:r(()=>[(s(!0),o(N,null,se(t(m),M=>(s(),_(t(rt),{key:M.value,value:M.value},{default:r(()=>[i(n(M.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])]),_:1})]),_:1})):(s(),_(t(be),{key:1,modelValue:v.value.host_platform,"onUpdate:modelValue":D[5]||(D[5]=M=>v.value.host_platform=M),placeholder:"openclaw"},null,8,["modelValue"]))]),e("div",null,[D[14]||(D[14]=e("label",{class:"text-xs text-muted-foreground mb-1.5 block"},[i("部署模式 "),e("span",{class:"text-rose-500"},"*")],-1)),e("div",zl,[(s(!0),o(N,null,se(t(y)(v.value.host_platform??"openclaw"),M=>(s(),o("label",{key:M.value,class:ae(["flex items-center gap-2 cursor-pointer rounded-lg border px-3 py-2 transition-colors",v.value.deployment_mode===M.value?"border-primary bg-primary/5":"border-border hover:bg-muted/30"])},[_e(e("input",{type:"radio",value:M.value,"onUpdate:modelValue":D[6]||(D[6]=K=>v.value.deployment_mode=K),class:"accent-primary"},null,8,Pl),[[Pt,v.value.deployment_mode]]),e("span",Tl,n(M.label),1)],2))),128))])]),e("div",null,[D[16]||(D[16]=e("label",{class:"text-xs text-muted-foreground mb-1.5 block"},"平台归属",-1)),e("div",Dl,[(s(!0),o(N,null,se(t($)(v.value.host_platform??"openclaw"),M=>(s(),o("label",{key:M.value,class:ae(["flex items-start gap-2.5 cursor-pointer rounded-lg border px-3 py-2.5 transition-colors",v.value.host_access_mode===M.value?"border-primary bg-primary/5":"border-border hover:bg-muted/30"])},[_e(e("input",{type:"radio",value:M.value,"onUpdate:modelValue":D[7]||(D[7]=K=>v.value.host_access_mode=K),class:"accent-primary mt-0.5"},null,8,Bl),[[Pt,v.value.host_access_mode]]),e("div",Vl,[e("div",Ol,[i(n(M.label)+" ",1),M.value==="remote"?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[9px] px-1 py-0 text-amber-600 border-amber-300"},{default:r(()=>[...D[15]||(D[15]=[i("Beta",-1)])]),_:1})):k("",!0)]),e("div",El,n(M.value==="local"?"属于当前 OpenMOSS 默认对接的 OpenClaw 平台环境,默认共享该平台的公共工作目录和平台侧配置。":"属于另一套独立的 OpenClaw 平台环境,不默认共享当前主力平台的公共工作目录,需要按外部平台方式接入。"),1)])],2))),128))])])]),A.value?(s(),o("p",jl,n(A.value),1)):k("",!0),e("div",Rl,[a(t(T),{variant:"outline",class:"flex-1",disabled:q.value,onClick:z},{default:r(()=>[...D[18]||(D[18]=[i("取消",-1)])]),_:1},8,["disabled"]),a(t(T),{class:"flex-1",disabled:q.value,onClick:G},{default:r(()=>[q.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin mr-1"})):k("",!0),D[19]||(D[19]=i(" 创建 ",-1))]),_:1},8,["disabled"])])])])):k("",!0)]))}}),Ul={class:"flex flex-col h-[calc(100vh-3.5rem)]"},Ll={class:"shrink-0 border-b border-border/40 bg-background"},Nl={class:"max-w-6xl mx-auto px-6 py-3"},Kl={class:"flex items-center justify-between gap-4"},Gl={class:"flex items-center gap-2.5"},Hl={class:"flex items-center gap-2"},Wl={class:"relative"},Yl={class:"flex-1 overflow-y-auto"},Xl={class:"max-w-6xl mx-auto px-6 py-5"},Ql={key:0,class:"flex items-center justify-center py-20"},Zl={key:1,class:"flex flex-col items-center py-20 text-muted-foreground"},Jl={class:"text-sm"},eo={key:2,class:"flex flex-col items-center py-20 text-muted-foreground/50"},to={key:3,class:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4"},so={key:4,class:"flex items-center justify-center gap-3 py-5 text-sm text-muted-foreground"},ao={class:"tabular-nums"},yt=20,lo=ne({__name:"AgentListView",emits:["select"],setup(l,{emit:h}){const p=h,I=b(""),m=b("all"),y=b("all"),$=b(1),w=b(!1),q=b(""),A=b({items:[],total:0,page:1,page_size:yt}),v=b(!1),g=[{value:"all",label:"全部角色"},{value:"planner",label:"规划者"},{value:"executor",label:"执行者"},{value:"reviewer",label:"审查者"},{value:"patrol",label:"巡查者"}],S=[{value:"all",label:"全部状态"},{value:"draft",label:"草稿"},{value:"configured",label:"已配置"},{value:"deployed",label:"已部署"},{value:"disabled",label:"已禁用"},{value:"archived",label:"已归档"}],G=ce(()=>Math.max(1,Math.ceil(A.value.total/yt)));let z=0;const H=Ws(()=>{$.value=1,D()},280);$e([I,m,y],()=>{w.value=!0,H()}),Ie(()=>{D()});async function D(){const W=++z;w.value=!0,q.value="";try{const O=await ut.list({page:$.value,page_size:yt,role:m.value==="all"?void 0:m.value,status:y.value==="all"?void 0:y.value});if(W!==z)return;A.value=O.data}catch{if(W!==z)return;q.value="Agent 列表加载失败,请稍后再试。",A.value={items:[],total:0,page:1,page_size:yt}}finally{W===z&&(w.value=!1)}}function M(W){W<1||W>G.value||W===$.value||($.value=W,D())}function K(){D()}return(W,O)=>(s(),o("div",Ul,[e("header",Ll,[e("div",Nl,[e("div",Kl,[e("div",Gl,[a(t(Xt),{class:"h-5 w-5 text-primary"}),O[8]||(O[8]=e("h1",{class:"text-base font-semibold"},"Agent 管理",-1)),a(t(Y),{variant:"outline",class:"text-xs tabular-nums"},{default:r(()=>[i(n(A.value.total),1)]),_:1})]),e("div",Hl,[a(t(lt),null,{default:r(()=>[a(t(dt),{"as-child":""},{default:r(()=>[a(t(T),{variant:"outline",size:"sm",class:"h-8 gap-1 text-xs font-normal"},{default:r(()=>[i(n(g.find(F=>F.value===m.value)?.label??"全部角色")+" ",1),a(t(Ze),{class:"h-3 w-3 opacity-50"})]),_:1})]),_:1}),a(t(ot),{align:"start",class:"min-w-[120px]"},{default:r(()=>[a(t(nt),{"model-value":m.value,"onUpdate:modelValue":O[0]||(O[0]=F=>m.value=String(F))},{default:r(()=>[(s(),o(N,null,se(g,F=>a(t(rt),{key:F.value,value:F.value},{default:r(()=>[i(n(F.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["model-value"])]),_:1})]),_:1}),a(t(lt),null,{default:r(()=>[a(t(dt),{"as-child":""},{default:r(()=>[a(t(T),{variant:"outline",size:"sm",class:"h-8 gap-1 text-xs font-normal"},{default:r(()=>[i(n(S.find(F=>F.value===y.value)?.label??"全部状态")+" ",1),a(t(Ze),{class:"h-3 w-3 opacity-50"})]),_:1})]),_:1}),a(t(ot),{align:"start",class:"min-w-[120px]"},{default:r(()=>[a(t(nt),{"model-value":y.value,"onUpdate:modelValue":O[1]||(O[1]=F=>y.value=String(F))},{default:r(()=>[(s(),o(N,null,se(S,F=>a(t(rt),{key:F.value,value:F.value},{default:r(()=>[i(n(F.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["model-value"])]),_:1})]),_:1}),e("div",Wl,[a(t(na),{class:"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),a(t(be),{modelValue:I.value,"onUpdate:modelValue":O[2]||(O[2]=F=>I.value=F),class:"h-8 w-44 bg-muted/30 pl-8 text-xs",placeholder:"搜索名称…"},null,8,["modelValue"])]),a(t(T),{variant:"outline",size:"sm",class:"h-8 gap-1.5 text-xs",onClick:O[3]||(O[3]=F=>v.value=!0)},{default:r(()=>[a(t(qt),{class:"h-3.5 w-3.5"}),O[9]||(O[9]=i(" 新建 ",-1))]),_:1}),a(t(T),{variant:"ghost",size:"icon",class:"h-8 w-8",disabled:w.value,onClick:K},{default:r(()=>[a(t(Qe),{class:ae(["h-3.5 w-3.5",w.value?"animate-spin":""])},null,8,["class"])]),_:1},8,["disabled"])])])])]),e("main",Yl,[e("div",Xl,[w.value?(s(),o("div",Ql,[a(t(re),{class:"h-7 w-7 animate-spin text-muted-foreground"})])):q.value?(s(),o("div",Zl,[a(t(ye),{class:"h-7 w-7 mb-2 text-rose-400"}),e("p",Jl,n(q.value),1),a(t(T),{variant:"link",size:"sm",class:"mt-2",onClick:K},{default:r(()=>[...O[10]||(O[10]=[i("重试",-1)])]),_:1})])):A.value.items.length===0?(s(),o("div",eo,[a(t(Xt),{class:"h-8 w-8 mb-3"}),O[11]||(O[11]=e("p",{class:"text-sm"},"暂无 Agent",-1))])):(s(),o("div",to,[(s(!0),o(N,null,se(A.value.items,(F,te)=>(s(),o("div",{key:F.id,class:"animate-slide-up",style:St({animationDelay:`${te*40}ms`})},[a(wl,{agent:F,onSelect:O[4]||(O[4]=le=>p("select",le))},null,8,["agent"])],4))),128))])),!w.value&&A.value.items.length>0?(s(),o("div",so,[a(t(T),{variant:"ghost",size:"icon",class:"h-8 w-8",disabled:$.value<=1,onClick:O[5]||(O[5]=F=>M($.value-1))},{default:r(()=>[a(t(Kt),{class:"h-4 w-4"})]),_:1},8,["disabled"]),e("span",ao,n($.value)+" / "+n(G.value),1),a(t(T),{variant:"ghost",size:"icon",class:"h-8 w-8",disabled:$.value>=G.value,onClick:O[6]||(O[6]=F=>M($.value+1))},{default:r(()=>[a(t(Vt),{class:"h-4 w-4"})]),_:1},8,["disabled"])])):k("",!0)])]),a(Fl,{open:v.value,"onUpdate:open":O[7]||(O[7]=F=>v.value=F),onCreated:K},null,8,["open"])]))}}),oo={basic:!0,host:!1,prompt:!1,schedule:!1,comm:!1,bootstrap:!1};function no(l){const h=ce(()=>{const m=l.value?.readiness;return m?{basic:!0,host:m.host_config,prompt:m.prompt_asset,schedule:m.host_config,comm:m.host_config,bootstrap:m.host_config}:oo}),p=ce(()=>{const m=[!0,h.value.host];return{done:m.filter(Boolean).length,total:m.length}}),I=ce(()=>l.value?.readiness??null);return{readiness:h,progress:p,raw:I}}const ro={class:"space-y-4 animate-slide-up"},io={class:"grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3"},uo={class:"rounded-xl border bg-card/50 p-4"},co={class:"text-sm font-mono break-all"},mo={class:"rounded-xl border bg-card/50 p-4"},po={class:"text-sm"},fo={class:"rounded-xl border bg-card/50 p-4"},vo={class:"text-sm"},xo={class:"rounded-xl border bg-card/50 p-4"},go={class:"text-sm"},bo={class:"mt-1 text-xs text-muted-foreground/60"},yo={class:"rounded-xl border bg-card/50 p-4"},_o={class:"text-sm font-mono break-all"},ho={class:"rounded-xl border bg-card/50 p-4"},ko={class:"text-sm"},wo={class:"rounded-xl border bg-card/50 p-4"},$o={class:"text-sm"},Co={class:"rounded-xl border bg-card/50 p-4"},So={class:"flex items-center gap-2 mb-3"},Io={class:"flex items-center justify-between gap-3"},qo={class:"min-w-0"},Mo={key:0,class:"text-sm font-mono text-muted-foreground break-all"},Ao={key:1,class:"text-sm text-muted-foreground/40 italic"},zo={class:"rounded-xl border bg-card/50 p-4"},Po={class:"flex flex-col gap-3 md:flex-row md:items-start md:justify-between"},To={class:"text-sm font-medium tabular-nums"},Do={key:1,class:"text-muted-foreground/60"},Bo={class:"mt-1 text-xs text-muted-foreground/60"},Vo={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Oo={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-center space-y-3"},Eo={class:"flex gap-3 pt-2"},jo={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Ro={class:"relative z-10 w-full max-w-md rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 space-y-4"},Fo={class:"text-center"},Uo={class:"mx-auto h-12 w-12 rounded-full bg-emerald-500/10 flex items-center justify-center mb-3"},Lo={class:"rounded-lg border bg-muted/20 p-3"},No={class:"block text-sm font-mono break-all select-all leading-relaxed"},Ko={class:"flex items-start gap-2 rounded-lg border border-amber-500/20 bg-amber-500/5 p-2.5"},Go=ne({__name:"BasicInfoTab",props:{agent:{}},emits:["saved"],setup(l,{emit:h}){const p=l,I=h,m={local:"共享当前主力平台的公共工作目录和平台配置",remote:"独立外部平台,需要单独接入"},y=b(!1),$=b(!1),w=b(null),q=b(!1),A=b(!1);async function v(){y.value=!0;try{const G=await ut.resetRuntimeApiKey(p.agent.id);w.value=G.data.api_key,$.value=!1,A.value=!0}catch(G){const z=G?.response?.data?.detail;de.error(z??"API Key 重置失败")}finally{y.value=!1}}function g(){A.value=!1,w.value=null,I("saved")}async function S(G){await navigator.clipboard.writeText(G),q.value=!0,setTimeout(()=>{q.value=!1},2e3)}return(G,z)=>(s(),o(N,null,[e("div",ro,[e("div",io,[e("div",uo,[z[4]||(z[4]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"Slug",-1)),e("div",co,n(l.agent.slug),1)]),e("div",mo,[z[5]||(z[5]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"Agent 平台",-1)),e("div",po,n(l.agent.host_platform),1)]),e("div",fo,[z[6]||(z[6]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"部署模式",-1)),e("div",vo,n(t(ws)(l.agent.deployment_mode)),1)]),e("div",xo,[z[7]||(z[7]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"平台归属",-1)),e("div",go,n(t($s)[l.agent.host_access_mode]||l.agent.host_access_mode),1),e("p",bo,n(m[l.agent.host_access_mode]||"—"),1)]),e("div",yo,[z[8]||(z[8]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"关联运行态 Agent",-1)),e("div",_o,n(l.agent.runtime_agent_id??"未关联"),1)]),e("div",ho,[z[9]||(z[9]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"创建时间",-1)),e("div",ko,n(t(Ut)(l.agent.created_at)),1)]),e("div",wo,[z[10]||(z[10]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"更新时间",-1)),e("div",$o,n(t(Ut)(l.agent.updated_at)),1)])]),e("div",Co,[e("div",So,[a(t(wt),{class:"h-3.5 w-3.5 text-muted-foreground/50"}),z[13]||(z[13]=e("span",{class:"text-xs text-muted-foreground font-medium uppercase tracking-wider"},"运行态身份",-1)),l.agent.runtime_identity?.registered?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[9px] border-emerald-500/20 bg-emerald-500/10 text-emerald-400"},{default:r(()=>[...z[11]||(z[11]=[i(" 已注册 ",-1)])]),_:1})):(s(),_(t(Y),{key:1,variant:"outline",class:"text-[9px] border-zinc-500/20 bg-zinc-500/10 text-zinc-400"},{default:r(()=>[...z[12]||(z[12]=[i(" 未注册 ",-1)])]),_:1}))]),e("div",Io,[e("div",qo,[z[14]||(z[14]=e("div",{class:"text-xs text-muted-foreground font-medium mb-0.5"},"API Key",-1)),l.agent.runtime_identity?.api_key_masked?(s(),o("div",Mo,n(l.agent.runtime_identity.api_key_masked),1)):(s(),o("div",Ao,n(l.agent.runtime_identity?.registered?"—":"部署后自动生成"),1))]),l.agent.runtime_identity?.registered?(s(),_(t(T),{key:0,variant:"outline",size:"sm",class:"h-7 gap-1 text-xs shrink-0",onClick:z[0]||(z[0]=H=>$.value=!0)},{default:r(()=>[a(t(_t),{class:"h-3 w-3"}),z[15]||(z[15]=i(" 重置 ",-1))]),_:1})):k("",!0)])]),e("div",zo,[e("div",Po,[e("div",null,[z[17]||(z[17]=e("div",{class:"text-xs text-muted-foreground font-medium mb-1"},"配置版本",-1)),e("div",To,[i(" 配置 v"+n(l.agent.config_version)+" ",1),l.agent.deployed_config_version!==null?(s(),o(N,{key:0},[z[16]||(z[16]=e("span",{class:"mx-1 text-muted-foreground/50"},"→",-1)),i(" 已部署 v"+n(l.agent.deployed_config_version),1)],64)):(s(),o("span",Do," · 尚未部署"))]),e("p",Bo,n(l.agent.needs_redeploy?"当前配置有变更,发布前需要重新部署。":"当前已部署版本与配置版本一致。"),1)]),a(t(Y),{variant:"outline",class:ae(["w-fit text-xs",l.agent.needs_redeploy?"border-amber-500/20 bg-amber-500/10 text-amber-400":"border-emerald-500/20 bg-emerald-500/10 text-emerald-400"])},{default:r(()=>[i(n(l.agent.needs_redeploy?"需重新部署":"已同步"),1)]),_:1},8,["class"])])])]),(s(),_(he,{to:"body"},[$.value?(s(),o("div",Vo,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:z[1]||(z[1]=H=>$.value=!1)}),e("div",Oo,[a(t(gt),{class:"h-8 w-8 mx-auto text-amber-500"}),z[20]||(z[20]=e("h3",{class:"text-base font-semibold"},"重置 API Key",-1)),z[21]||(z[21]=e("p",{class:"text-sm text-muted-foreground"}," 此操作将使当前 API Key 立即失效,生成一个全新 Key。正在运行的 Agent 会断开连接,需要重新部署。 ",-1)),e("div",Eo,[a(t(T),{variant:"outline",class:"flex-1",disabled:y.value,onClick:z[2]||(z[2]=H=>$.value=!1)},{default:r(()=>[...z[18]||(z[18]=[i("取消",-1)])]),_:1},8,["disabled"]),a(t(T),{variant:"destructive",class:"flex-1",disabled:y.value,onClick:v},{default:r(()=>[y.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin mr-1"})):k("",!0),z[19]||(z[19]=i(" 确认重置 ",-1))]),_:1},8,["disabled"])])])])):k("",!0)])),(s(),_(he,{to:"body"},[A.value&&w.value?(s(),o("div",jo,[z[26]||(z[26]=e("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm"},null,-1)),e("div",Ro,[e("div",Fo,[e("div",Uo,[a(t(wt),{class:"h-6 w-6 text-emerald-400"})]),z[22]||(z[22]=e("h3",{class:"text-base font-semibold"},"API Key 已重置",-1)),z[23]||(z[23]=e("p",{class:"text-sm text-muted-foreground mt-1"},"请立即复制保存,关闭后将无法再次查看完整 Key。",-1))]),e("div",Lo,[e("code",No,n(w.value),1)]),a(t(T),{variant:"outline",class:"w-full gap-2",onClick:z[3]||(z[3]=H=>S(w.value))},{default:r(()=>[q.value?(s(),_(t(ke),{key:0,class:"h-4 w-4 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-4 w-4"})),i(" "+n(q.value?"已复制":"复制 API Key"),1)]),_:1}),e("div",Ko,[a(t(gt),{class:"h-4 w-4 text-amber-400 shrink-0 mt-0.5"}),z[24]||(z[24]=e("p",{class:"text-xs text-muted-foreground leading-relaxed"}," 旧 Key 已永久失效。如有正在运行的 Agent,需要使用新 Key 重新部署。 ",-1))]),a(t(T),{class:"w-full",onClick:g},{default:r(()=>[...z[25]||(z[25]=[i("我已保存,关闭",-1)])]),_:1})])])):k("",!0)]))],64))}}),Ho={class:"space-y-1.5"},Wo={class:"text-xs text-muted-foreground flex items-center gap-1.5"},Yo={key:0,class:"text-rose-500"},Xo={key:1,class:"inline-flex items-center gap-0.5 text-[9px] px-1 py-0.5 rounded bg-amber-500/10 text-amber-500 border border-amber-500/20"},Qo=["placeholder","disabled"],Zo=["placeholder","disabled"],Jo={key:6,class:"text-[11px] text-muted-foreground/50 leading-relaxed"},en={key:7,class:"text-[11px] text-muted-foreground/40"},tn=ne({__name:"DynamicField",props:{field:{},modelValue:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(l,{emit:h}){const p=l,I=h,m=ce({get(){return p.modelValue??""},set($){I("update:modelValue",$)}}),y=ce(()=>p.field.type!=="select"||!p.field.options?"":p.field.options.find($=>$.value===m.value)?.label??m.value);return($,w)=>(s(),o("div",Ho,[e("label",Wo,[i(n(l.field.label)+" ",1),l.field.required?(s(),o("span",Yo,"*")):k("",!0),l.field.sensitive?(s(),o("span",Xo,[a(t(gt),{class:"h-2.5 w-2.5"}),w[6]||(w[6]=i("敏感 ",-1))])):k("",!0)]),l.field.type==="text"?(s(),_(t(be),{key:0,modelValue:m.value,"onUpdate:modelValue":w[0]||(w[0]=q=>m.value=q),placeholder:l.field.placeholder,disabled:l.disabled,class:"font-mono text-sm"},null,8,["modelValue","placeholder","disabled"])):l.field.type==="password"?(s(),_(t(be),{key:1,modelValue:m.value,"onUpdate:modelValue":w[1]||(w[1]=q=>m.value=q),type:"password",placeholder:l.field.placeholder,disabled:l.disabled,class:"font-mono text-sm"},null,8,["modelValue","placeholder","disabled"])):l.field.type==="textarea"?_e((s(),o("textarea",{key:2,"onUpdate:modelValue":w[2]||(w[2]=q=>m.value=q),rows:"3",placeholder:l.field.placeholder,disabled:l.disabled,class:"flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none disabled:opacity-50"},null,8,Qo)),[[Ne,m.value]]):l.field.type==="json"?_e((s(),o("textarea",{key:3,"onUpdate:modelValue":w[3]||(w[3]=q=>m.value=q),rows:"3",placeholder:l.field.placeholder??"{ }",disabled:l.disabled,class:"flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none disabled:opacity-50"},null,8,Zo)),[[Ne,m.value]]):l.field.type==="select"&&l.field.options?(s(),_(t(lt),{key:4},{default:r(()=>[a(t(dt),{"as-child":""},{default:r(()=>[a(t(T),{variant:"outline",size:"sm",class:"h-8 w-full justify-between text-xs font-normal",disabled:l.disabled},{default:r(()=>[i(n(y.value||l.field.placeholder||"请选择")+" ",1),a(t(Ze),{class:"h-3 w-3 opacity-50"})]),_:1},8,["disabled"])]),_:1}),a(t(ot),{align:"start",class:"min-w-[200px]"},{default:r(()=>[a(t(nt),{"model-value":m.value,"onUpdate:modelValue":w[4]||(w[4]=q=>m.value=String(q))},{default:r(()=>[(s(!0),o(N,null,se(l.field.options,q=>(s(),_(t(rt),{key:q.value,value:q.value},{default:r(()=>[i(n(q.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])]),_:1})]),_:1})):(s(),_(t(be),{key:5,modelValue:m.value,"onUpdate:modelValue":w[5]||(w[5]=q=>m.value=q),placeholder:l.field.placeholder,disabled:l.disabled,class:"font-mono text-sm"},null,8,["modelValue","placeholder","disabled"])),l.field.description?(s(),o("p",Jo,n(l.field.description),1)):k("",!0),l.field.sensitive?(s(),o("p",en," 留空表示不修改现有值。 ")):k("",!0)]))}}),sn={key:0,class:"flex items-center justify-center py-16"},an={key:1,class:"flex flex-col items-center py-16 text-muted-foreground"},ln={class:"text-sm"},on={key:2,class:"rounded-xl border border-dashed border-border bg-muted/10 p-8 text-center"},nn={key:3,class:"space-y-5 animate-slide-up"},rn={key:0,class:"rounded-lg border border-border/30 bg-muted/5 px-4 py-3 flex items-start gap-2"},dn={class:"text-xs text-muted-foreground leading-relaxed"},un={class:"flex items-center justify-between"},cn={key:0},mn={key:1,class:"flex gap-1.5"},pn={key:1,class:"rounded-xl border bg-card p-5 space-y-4"},fn=["onClick"],vn={key:1,class:"grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-4"},xn={class:"text-xs text-muted-foreground font-medium mb-0.5"},gn={key:0,class:"rounded-lg bg-muted/30 border border-border/40 p-2 font-mono text-xs text-muted-foreground leading-relaxed whitespace-pre-wrap break-all"},bn={key:1,class:"text-sm font-mono"},yn={key:2,class:"text-xs text-muted-foreground/40 italic"},_n={class:"text-sm"},hn={key:2,class:"rounded-xl border bg-card p-5 space-y-4"},kn=["onClick"],wn={key:1,class:"space-y-4"},$n={key:0,class:"text-xs text-rose-500"},Cn=ne({__name:"PlatformConfigTab",props:{agentId:{},hostPlatform:{},disabled:{type:Boolean}},emits:["saved"],setup(l,{expose:h,emit:p}){const I=b(new Set);function m(C){I.value.has(C)?I.value.delete(C):I.value.add(C)}function y(C){return C==="基本"||I.value.has(C)}const $=l,w=p,{platforms:q,loadPlatforms:A}=zt(),v=ce(()=>{const C=$.hostPlatform??"openclaw";return q.value.find(L=>L.key===C)?.ui_hints?.host_config??null}),g=ce(()=>v.value?.fields??G),S=ce(()=>{const C=new Map;for(const B of g.value){const L=B.group??"基本";C.has(L)||C.set(L,[]),C.get(L).push(B)}return C}),G=[{key:"host_agent_identifier",label:"Agent ID",type:"text",placeholder:"my-agent",description:"OpenClaw 中的唯一标识。仅限英文小写字母、数字、下划线和连字符(a-z 0-9 _ -),首字符为字母或数字,最长 64 位。",group:"基本"},{key:"workdir_path",label:"工作目录",type:"text",placeholder:"~/.openclaw/workspace-my-agent",description:"通常为 ~/.openclaw/workspace-{Agent ID},留空时将根据 Agent ID 自动生成。",group:"基本"},{key:"host_config_payload",label:"配置数据",type:"textarea",sensitive:!0,description:"留空表示不修改现有值。",group:"高级"},{key:"host_metadata_json",label:"扩展元数据",type:"json",placeholder:"{ }",group:"高级"}],z=new Set(["host_agent_identifier","workdir_path","host_config_payload","host_metadata_json"]),H=b(null),D=b(!1),M=b(""),K=b(!1),W=b(!1),O=b(!1),F=b(""),te=b({});async function le(){D.value=!0,M.value="",K.value=!1;try{const C=await Jt.get($.agentId);H.value=C.data}catch(C){C?.response?.status===404?(K.value=!0,H.value=null):M.value="加载平台配置失败"}finally{D.value=!1}}Ie(()=>{A(),le()}),$e(()=>$.agentId,()=>{W.value=!1,le()});function J(){const C={};for(const B of g.value)B.sensitive?C[B.key]="":C[B.key]=Z(B.key)??"";te.value=C,F.value="",W.value=!0}function me(){W.value=!1,F.value="",fe.value=!1}const fe=b(!1);function ve(C,B){te.value[C]=B,C==="host_agent_identifier"&&(!(te.value.workdir_path??"")||fe.value)&&(te.value.workdir_path=B?`~/.openclaw/workspace-${B}`:"",fe.value=!0),C==="workdir_path"&&(fe.value=!1)}function Z(C){if(!H.value)return null;const B=H.value;return C==="host_agent_identifier"?B.host_agent_identifier??null:C==="workdir_path"?B.workdir_path??null:C==="host_config_payload"?B.host_config_payload_masked??null:C==="host_metadata_json"?B.host_metadata_json??null:null}async function V(){O.value=!0,F.value="";try{const C={};for(const L of g.value){const ie=te.value[L.key]?.trim();ie&&z.has(L.key)&&(C[L.key]=ie)}const B=await Jt.update($.agentId,C);H.value=B.data,K.value=!1,W.value=!1,de.success("平台配置已保存"),w("saved")}catch(C){const B=C?.response?.data?.detail;F.value=B??"保存失败,请稍后再试"}finally{O.value=!1}}h({editing:W,cancelEdit:me});function Q(C){if(!C)return"—";try{return new Date(C).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return C}}return(C,B)=>D.value?(s(),o("div",sn,[a(t(re),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):M.value?(s(),o("div",an,[a(t(ye),{class:"h-6 w-6 mb-2 text-rose-400"}),e("p",ln,n(M.value),1),a(t(T),{variant:"link",size:"sm",class:"mt-2",onClick:le},{default:r(()=>[...B[0]||(B[0]=[i("重试",-1)])]),_:1})])):K.value&&!W.value?(s(),o("div",on,[a(t(cs),{class:"h-8 w-8 mx-auto mb-3 text-muted-foreground/30"}),B[2]||(B[2]=e("p",{class:"text-sm text-muted-foreground mb-4"},"该 Agent 尚未配置平台信息",-1)),a(t(T),{variant:"outline",size:"sm",class:"gap-1.5",disabled:l.disabled,onClick:J},{default:r(()=>[a(t(Le),{class:"h-3.5 w-3.5"}),B[1]||(B[1]=i(" 配置平台信息 ",-1))]),_:1},8,["disabled"])])):(s(),o("div",nn,[v.value?.description?(s(),o("div",rn,[a(t(Be),{class:"h-4 w-4 text-primary/60 shrink-0 mt-0.5"}),e("p",dn,n(v.value.description),1)])):k("",!0),e("div",un,[B[6]||(B[6]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider"}," 平台配置 ",-1)),W.value?(s(),o("div",mn,[a(t(T),{variant:"ghost",size:"sm",class:"h-7 gap-1 text-xs",disabled:O.value,onClick:me},{default:r(()=>[a(t(Bt),{class:"h-3 w-3"}),B[4]||(B[4]=i(" 取消 ",-1))]),_:1},8,["disabled"]),a(t(T),{size:"sm",class:"h-7 gap-1 text-xs",disabled:O.value,onClick:V},{default:r(()=>[O.value?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(ms),{key:1,class:"h-3 w-3"})),B[5]||(B[5]=i(" 保存 ",-1))]),_:1},8,["disabled"])])):(s(),o("div",cn,[a(t(T),{variant:"outline",size:"sm",class:"h-7 gap-1 text-xs",disabled:l.disabled,onClick:J},{default:r(()=>[a(t(Le),{class:"h-3 w-3"}),B[3]||(B[3]=i(" 编辑 ",-1))]),_:1},8,["disabled"])]))]),!W.value&&H.value?(s(),o("div",pn,[(s(!0),o(N,null,se(S.value,([L,ie])=>(s(),o(N,{key:L},[S.value.size>1?(s(),o("button",{key:0,class:"flex items-center gap-1 text-[11px] text-muted-foreground/40 font-medium uppercase tracking-wider hover:text-muted-foreground/60 transition-colors",onClick:ue=>m(L)},[a(t(bt),{class:ae(["h-3 w-3 transition-transform",y(L)?"rotate-90":""])},null,8,["class"]),i(" "+n(L),1)],8,fn)):k("",!0),y(L)?(s(),o("div",vn,[(s(!0),o(N,null,se(ie,ue=>(s(),o("div",{key:ue.key},[e("div",xn,n(ue.label),1),ue.sensitive&&Z(ue.key)?(s(),o("div",gn,n(Z(ue.key)),1)):Z(ue.key)?(s(),o("div",bn,n(Z(ue.key)),1)):(s(),o("p",yn,"未设置"))]))),128))])):k("",!0),S.value.size>1?(s(),_(t(je),{key:2})):k("",!0)],64))),128)),e("div",null,[B[7]||(B[7]=e("div",{class:"text-xs text-muted-foreground font-medium mb-0.5"},"最后更新",-1)),e("div",_n,n(Q(H.value.updated_at)),1)])])):k("",!0),W.value?(s(),o("div",hn,[(s(!0),o(N,null,se(S.value,([L,ie])=>(s(),o(N,{key:L},[S.value.size>1?(s(),o("button",{key:0,class:"flex items-center gap-1 text-[11px] text-muted-foreground/40 font-medium uppercase tracking-wider pt-1 hover:text-muted-foreground/60 transition-colors",onClick:ue=>m(L)},[a(t(bt),{class:ae(["h-3 w-3 transition-transform",y(L)?"rotate-90":""])},null,8,["class"]),i(" "+n(L),1)],8,kn)):k("",!0),y(L)?(s(),o("div",wn,[(s(!0),o(N,null,se(ie,ue=>(s(),_(tn,{key:ue.key,field:ue,"model-value":te.value[ue.key]??"","onUpdate:modelValue":X=>ve(ue.key,X),disabled:l.disabled},null,8,["field","model-value","onUpdate:modelValue","disabled"]))),128))])):k("",!0),S.value.size>1?(s(),_(t(je),{key:2})):k("",!0)],64))),128)),F.value?(s(),o("p",$n,n(F.value),1)):k("",!0)])):k("",!0)]))}}),Sn={key:0,class:"flex items-center justify-center py-16"},In={key:1,class:"flex flex-col items-center py-16 text-muted-foreground"},qn={class:"text-sm"},Mn={key:2,class:"rounded-xl border border-dashed border-border bg-muted/10 p-8 text-center"},An={class:"flex justify-center gap-2"},zn={key:3,class:"space-y-5 animate-slide-up"},Pn={key:0,class:"rounded-lg border border-border/30 bg-muted/5 px-4 py-3 flex items-start gap-2"},Tn={class:"text-xs text-muted-foreground leading-relaxed"},Dn={class:"flex items-center justify-between flex-wrap gap-2"},Bn={class:"flex items-center gap-3"},Vn={class:"text-[11px] text-muted-foreground/40"},On={class:"flex gap-1.5"},En={key:1,class:"rounded-xl border bg-card/50 p-4"},jn={class:"flex items-center justify-between"},Rn={class:"space-y-1"},Fn={class:"flex items-center gap-2"},Un={key:0,class:"text-xs text-muted-foreground/40"},Ln={key:1,class:"text-xs text-muted-foreground/40"},Nn={class:"space-y-4"},Kn={class:"flex items-center justify-between px-4 pt-4 pb-1"},Gn={class:"flex items-center gap-2"},Hn={class:"text-sm font-medium text-muted-foreground"},Wn={class:"inline-flex items-center justify-center h-4 w-4 rounded-full text-muted-foreground/30 hover:text-muted-foreground/60 hover:bg-muted/30 transition-colors"},Yn={class:"flex gap-1 items-center"},Xn=["onClick"],Qn={key:0,class:"px-4 pb-2"},Zn={class:"text-xs text-muted-foreground/60"},Jn={class:"px-4 pb-4"},er={class:"relative"},tr=["innerHTML"],sr={key:0,class:"absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-card to-transparent flex items-end justify-center pb-1"},ar=["onClick"],lr=["onClick"],or=["onClick"],nr={class:"text-xs text-muted-foreground/40"},rr={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},dr={class:"relative z-10 w-full max-w-7xl max-h-[85vh] flex flex-col rounded-xl border bg-background shadow-2xl animate-in fade-in zoom-in-95 duration-200"},ir={class:"flex items-center justify-between px-6 py-3 border-b shrink-0"},ur={class:"flex items-center gap-3"},cr={class:"text-base font-semibold"},mr={class:"flex items-center gap-2"},pr={class:"flex-1 flex min-h-0"},fr={class:"flex-1 flex flex-col border-r border-border/30"},vr={class:"flex items-center gap-1.5 px-4 py-2 border-b border-border/20 bg-muted/10 shrink-0"},xr=["placeholder"],gr={class:"flex-1 flex flex-col"},br={class:"flex items-center gap-1.5 px-4 py-2 border-b border-border/20 bg-muted/10 shrink-0"},yr={key:0,class:"ml-auto flex items-center gap-1"},_r={class:"flex-1 overflow-y-auto px-4 py-3"},hr=["innerHTML"],kr={key:1,class:"flex flex-col items-center justify-center h-full text-muted-foreground/20"},wr={class:"h-12 w-12 rounded-xl bg-muted/20 flex items-center justify-center mb-3"},$r={class:"flex items-center justify-end px-6 py-3 border-t shrink-0"},Cr={key:0,class:"text-xs text-rose-500 mr-auto"},Sr={class:"flex gap-2"},Ir={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},qr={class:"relative z-10 w-full max-w-md rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200"},Mr={class:"space-y-4"},Ar={class:"text-sm"},zr={class:"text-[11px] text-muted-foreground"},Pr={key:0,class:"text-xs text-rose-500 mt-3"},Tr={class:"flex gap-3 mt-4"},Dr={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Br={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-center space-y-3"},Vr={class:"flex gap-3 pt-2"},Or={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Er={class:"relative z-10 w-full max-w-2xl max-h-[80vh] overflow-y-auto rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200"},jr={class:"flex items-center justify-between mb-4"},Rr={class:"flex items-center gap-3 mb-4 text-xs text-muted-foreground"},Fr={class:"space-y-4"},Ur={class:"flex items-center justify-between mb-2"},Lr={class:"text-xs font-medium"},Nr={class:"text-xs font-mono leading-relaxed whitespace-pre-wrap break-words max-h-80 overflow-y-auto text-foreground/80"},Kr={key:0,class:"text-sm text-muted-foreground/40 text-center py-6"},Gr=ne({__name:"PromptTab",props:{agentId:{},hostPlatform:{},disabled:{type:Boolean}},emits:["saved"],setup(l,{expose:h,emit:p}){const I=l,m=p,y=b(null),$=b(!1),w=b(""),q=b(!1),A=b(!1),v=b(""),g=b(""),S=b(""),G=b(!1),z=b(""),H=b("edit"),D=b(!1),M=b("host_default"),K=b(""),W=b(!1),O=b(""),F=b(!1),te=b(!1),le=b(!1),J=b(null),me=b(!1),{platforms:fe,loadPlatforms:ve}=zt(),Z=ce(()=>{const u=I.hostPlatform??"openclaw";return fe.value.find(c=>c.key===u)?.ui_hints?.prompt??null}),V=ce(()=>Z.value?.render_strategies?.length?Z.value.render_strategies.map(u=>({value:u.value,label:u.label,desc:u.description})):[{value:"host_default",label:"平台默认",desc:"由平台自行决定渲染方式"},{value:"openclaw_workspace_files",label:"Workspace 文件",desc:"渲染为 OpenClaw 工作目录文件"},{value:"openclaw_inline_schedule",label:"内联 Schedule",desc:"内联到定时任务的唤醒消息中"}]);async function Q(){$.value=!0,w.value="",q.value=!1;try{const u=await ct.get(I.agentId);y.value=u.data}catch(u){u?.response?.status===404?(q.value=!0,y.value=null):w.value="加载 Prompt 资产失败"}finally{$.value=!1}}Ie(()=>{ve(),Q()}),$e(()=>I.agentId,()=>{A.value=!1,me.value=!1,Q()});function C(u,c){v.value=u,g.value=c,S.value=y.value?.[u]??"",z.value="",H.value="edit",A.value=!0}function B(){A.value=!1,v.value="",S.value="",z.value=""}async function L(){G.value=!0,z.value="";try{const u={[v.value]:S.value},c=await ct.update(I.agentId,u);y.value=c.data,B(),de.success(`${g.value}已保存`),m("saved")}catch(u){const c=u?.response?.data?.detail;z.value=c??"保存失败"}finally{G.value=!1}}const ie=ce(()=>S.value?Ot(S.value):"");function ue(){M.value=y.value?.host_render_strategy??"host_default",K.value=y.value?.notes??"",O.value="",D.value=!0}async function X(){W.value=!0,O.value="";try{const u={host_render_strategy:M.value,notes:K.value.trim()||void 0},c=await ct.update(I.agentId,u);y.value=c.data,D.value=!1,de.success("渲染策略已更新")}catch(u){const c=u?.response?.data?.detail;O.value=c??"保存失败"}finally{W.value=!1}}async function P(){F.value=!0;try{const u=await ct.resetFromTemplate(I.agentId);y.value=u.data,q.value=!1,te.value=!1,de.success("已从模板重置"),m("saved")}catch(u){const c=u?.response?.data?.detail;de.error(c??"重置失败")}finally{F.value=!1}}async function E(){le.value=!0;try{const u=await ct.renderPreview(I.agentId);J.value=u.data,me.value=!0}catch(u){const c=u?.response?.data?.detail;de.error(c??"预览失败")}finally{le.value=!1}}const j=b(null);async function U(u,c){await navigator.clipboard.writeText(u),j.value=c,setTimeout(()=>{j.value=null},2e3)}function ee(u){return u?Ot(u):""}const ge=os(new Set);function qe(u){return u?u.split(` +`).length>5||u.length>300:!1}const Me=ce(()=>A.value||D.value);function He(){B(),D.value=!1}h({editing:Me,cancelEdit:He});function Fe(u){if(!u)return"—";try{return new Date(u).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return u}}const Se={system_prompt_content:{description:"定义 Agent 的行为规则和工作流程",detail:"相当于 Agent 的「操作手册」:包括会话流程、安全边界、记忆策略、协作规则等。在 OpenClaw 中对应 AGENTS.md,是最核心的配置文件,子 Agent 也主要依赖此内容。"},persona_prompt_content:{description:"定义 Agent 的性格和说话风格",detail:"Agent 的「灵魂设定」:语气、态度、个性和与用户的关系边界。决定 Agent 是偏工具化还是有独立个性。在 OpenClaw 中对应 SOUL.md。"},identity_content:{description:"定义 Agent 的名称和外显身份",detail:"Agent 的「名片」:名字、emoji、头像等对外展示信息。比人格设定更轻量,用于标识而非行为。在 OpenClaw 中对应 IDENTITY.md。"}},R=ce(()=>(Z.value?.sections?.length?Z.value.sections:[{key:"system_prompt_content",label:"系统提示词",placeholder:"定义 Agent 的行为规则和约束…",required:!0},{key:"persona_prompt_content",label:"人格提示词",placeholder:"定义 Agent 的性格和沟通风格…",required:!1},{key:"identity_content",label:"身份内容",placeholder:"定义 Agent 的名称和外显身份…",required:!1}]).map(c=>{const f=Se[c.key];return{key:c.key,label:c.label,placeholder:c.placeholder??"",required:c.required,description:c.description||f?.description||"",detail:c.detail||f?.detail||""}}));return(u,c)=>(s(),o(N,null,[$.value?(s(),o("div",Sn,[a(t(re),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):w.value?(s(),o("div",In,[a(t(ye),{class:"h-6 w-6 mb-2 text-rose-400"}),e("p",qn,n(w.value),1),a(t(T),{variant:"link",size:"sm",class:"mt-2",onClick:Q},{default:r(()=>[...c[10]||(c[10]=[i("重试",-1)])]),_:1})])):q.value?(s(),o("div",Mn,[a(t(Oe),{class:"h-8 w-8 mx-auto mb-3 text-muted-foreground/30"}),c[12]||(c[12]=e("p",{class:"text-sm text-muted-foreground mb-4"},"该 Agent 尚未配置 Prompt 资产",-1)),e("div",An,[a(t(T),{variant:"outline",size:"sm",class:"gap-1.5",disabled:F.value,onClick:P},{default:r(()=>[F.value?(s(),_(t(re),{key:0,class:"h-3.5 w-3.5 animate-spin"})):(s(),_(t(_t),{key:1,class:"h-3.5 w-3.5"})),c[11]||(c[11]=i(" 从模板初始化 ",-1))]),_:1},8,["disabled"])])])):(s(),o("div",zn,[Z.value?.description?(s(),o("div",Pn,[a(t(Be),{class:"h-4 w-4 text-primary/60 shrink-0 mt-0.5"}),e("p",Tn,n(Z.value.description),1)])):k("",!0),e("div",Dn,[e("div",Bn,[c[13]||(c[13]=e("div",{class:"text-xs font-medium text-muted-foreground uppercase tracking-wider"},"Prompt 管理",-1)),y.value?(s(),o(N,{key:0},[a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(V.value.find(f=>f.value===y.value.host_render_strategy)?.label??y.value.host_render_strategy),1)]),_:1}),e("span",Vn,n(Fe(y.value.updated_at)),1)],64)):k("",!0)]),e("div",On,[a(t(T),{variant:"ghost",size:"sm",class:"h-7 gap-1 text-xs",disabled:le.value,onClick:E},{default:r(()=>[le.value?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(pt),{key:1,class:"h-3 w-3"})),c[14]||(c[14]=i(" 预览 ",-1))]),_:1},8,["disabled"]),a(t(T),{variant:"ghost",size:"sm",class:"h-7 gap-1 text-xs",onClick:c[0]||(c[0]=f=>te.value=!0)},{default:r(()=>[a(t(_t),{class:"h-3 w-3"}),c[15]||(c[15]=i(" 重置 ",-1))]),_:1})])]),y.value?(s(),o("div",En,[e("div",jn,[e("div",Rn,[e("div",Fn,[c[16]||(c[16]=e("span",{class:"text-xs text-muted-foreground font-medium"},"渲染策略",-1)),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(V.value.find(f=>f.value===y.value.host_render_strategy)?.label??y.value.host_render_strategy),1)]),_:1})]),y.value.template_role?(s(),o("div",Un," 模板角色:"+n(y.value.template_role),1)):k("",!0),y.value.notes?(s(),o("div",Ln," 备注:"+n(y.value.notes),1)):k("",!0)]),V.value.length>1?(s(),_(t(T),{key:0,variant:"ghost",size:"sm",class:"h-7 gap-1 text-xs shrink-0",disabled:l.disabled,onClick:ue},{default:r(()=>[a(t(Le),{class:"h-3 w-3"}),c[17]||(c[17]=i(" 设置 ",-1))]),_:1},8,["disabled"])):k("",!0)])])):k("",!0),e("div",Nn,[(s(!0),o(N,null,se(R.value,f=>(s(),o("div",{key:f.key,class:"rounded-xl border bg-card transition-all hover:border-border/60"},[e("div",Kn,[e("div",Gn,[e("span",Hn,n(f.label),1),f.required?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[9px] text-primary/60 border-primary/20"},{default:r(()=>[...c[18]||(c[18]=[i("必填",-1)])]),_:1})):k("",!0),f.detail?(s(),_(t(tt),{key:1,"delay-duration":200},{default:r(()=>[a(t(Ae),null,{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[e("button",Wn,[a(t(ft),{class:"h-3 w-3"})])]),_:1}),a(t(Pe),{side:"bottom","side-offset":6,class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[i(n(f.detail),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)):k("",!0)]),e("div",Yn,[y.value?.[f.key]&&qe(String(y.value?.[f.key]??""))?(s(),o("button",{key:0,class:"text-[10px] text-muted-foreground/40 hover:text-muted-foreground transition-colors mr-1 px-1.5 py-0.5 rounded hover:bg-muted/20",onClick:d=>ge.has(f.key)?ge.delete(f.key):ge.add(f.key)},n(ge.has(f.key)?"收起":"展开"),9,Xn)):k("",!0),y.value?.[f.key]?(s(),_(t(T),{key:1,variant:"ghost",size:"icon",class:"h-6 w-6 text-muted-foreground/30 hover:text-muted-foreground",onClick:d=>U(String(y.value?.[f.key]??""),f.key)},{default:r(()=>[j.value===f.key?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"}))]),_:2},1032,["onClick"])):k("",!0),a(t(T),{variant:"ghost",size:"sm",class:"h-6 gap-1 text-xs text-muted-foreground/40 hover:text-muted-foreground",disabled:l.disabled,onClick:d=>C(f.key,f.label)},{default:r(()=>[a(t(Le),{class:"h-3 w-3"}),c[19]||(c[19]=i(" 编辑 ",-1))]),_:1},8,["disabled","onClick"])])]),f.description?(s(),o("div",Qn,[e("p",Zn,n(f.description),1)])):k("",!0),e("div",Jn,[y.value?.[f.key]?(s(),o(N,{key:0},[e("div",er,[e("div",{class:ae(["prose prose-sm dark:prose-invert max-w-none text-foreground/90",{"max-h-40 overflow-hidden":!ge.has(f.key)}]),innerHTML:ee(String(y.value?.[f.key]??""))},null,10,tr),!ge.has(f.key)&&qe(String(y.value?.[f.key]??""))?(s(),o("div",sr,[e("button",{class:"text-[11px] text-primary/70 hover:text-primary font-medium transition-colors bg-background/80 backdrop-blur-sm px-2.5 py-0.5 rounded-full border border-border/30 shadow-sm",onClick:d=>ge.add(f.key)}," 查看全部 ",8,ar)])):k("",!0)]),ge.has(f.key)?(s(),o("button",{key:0,class:"text-xs text-muted-foreground/40 hover:text-muted-foreground mt-2 transition-colors",onClick:d=>ge.delete(f.key)}," 收起 ",8,lr)):k("",!0)],64)):(s(),o("div",{key:1,class:"rounded-lg border border-dashed border-border/40 bg-muted/5 p-4 text-center cursor-pointer hover:bg-muted/10 transition-colors",onClick:d=>!l.disabled&&C(f.key,f.label)},[a(t(Le),{class:"h-4 w-4 mx-auto mb-1.5 text-muted-foreground/30"}),e("p",nr,"点击添加"+n(f.label),1)],8,or))])]))),128))])])),(s(),_(he,{to:"body"},[A.value?(s(),o("div",rr,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:B}),e("div",dr,[e("div",ir,[e("div",ur,[a(t(Oe),{class:"h-4 w-4 text-primary"}),e("h3",cr,n(g.value),1)]),e("div",mr,[c[20]||(c[20]=e("span",{class:"text-[11px] text-muted-foreground/30"},"支持 Markdown 格式",-1)),a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:B},{default:r(()=>[a(t(Bt),{class:"h-4 w-4"})]),_:1})])]),e("div",pr,[e("div",fr,[e("div",vr,[a(t(ps),{class:"h-3 w-3 text-primary/50"}),c[22]||(c[22]=e("span",{class:"text-[11px] font-medium text-muted-foreground/70"},"编辑",-1)),a(t(Y),{variant:"outline",class:"text-[9px] px-1.5 py-0 h-4 text-muted-foreground/40 border-border/30 ml-auto"},{default:r(()=>[...c[21]||(c[21]=[i("Markdown",-1)])]),_:1})]),_e(e("textarea",{"onUpdate:modelValue":c[1]||(c[1]=f=>S.value=f),class:"flex-1 w-full bg-transparent px-4 py-3 text-sm font-mono placeholder:text-muted-foreground/30 focus-visible:outline-none resize-none leading-relaxed",placeholder:R.value.find(f=>f.key===v.value)?.placeholder??""},null,8,xr),[[Ne,S.value]])]),e("div",gr,[e("div",br,[a(t(pt),{class:"h-3 w-3 text-emerald-500/50"}),c[24]||(c[24]=e("span",{class:"text-[11px] font-medium text-muted-foreground/70"},"实时预览",-1)),S.value?.trim()?(s(),o("div",yr,[...c[23]||(c[23]=[e("span",{class:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse"},null,-1),e("span",{class:"text-[10px] text-emerald-500/50"},"同步中",-1)])])):k("",!0)]),e("div",_r,[S.value?(s(),o("div",{key:0,class:"prose prose-sm dark:prose-invert max-w-none text-foreground/90",innerHTML:ie.value},null,8,hr)):(s(),o("div",kr,[e("div",wr,[a(t(pt),{class:"h-5 w-5"})]),c[25]||(c[25]=e("p",{class:"text-xs text-muted-foreground/30"},"在左侧输入内容后",-1)),c[26]||(c[26]=e("p",{class:"text-xs text-muted-foreground/30"},"这里会实时渲染 Markdown 预览",-1))]))])])]),e("div",$r,[z.value?(s(),o("p",Cr,n(z.value),1)):k("",!0),e("div",Sr,[a(t(T),{variant:"outline",size:"sm",disabled:G.value,onClick:B},{default:r(()=>[...c[27]||(c[27]=[i("取消",-1)])]),_:1},8,["disabled"]),a(t(T),{size:"sm",class:"gap-1",disabled:G.value,onClick:L},{default:r(()=>[G.value?(s(),_(t(re),{key:0,class:"h-3.5 w-3.5 animate-spin"})):(s(),_(t(ms),{key:1,class:"h-3.5 w-3.5"})),c[28]||(c[28]=i(" 保存 ",-1))]),_:1},8,["disabled"])])])])])):k("",!0)])),(s(),_(he,{to:"body"},[D.value?(s(),o("div",Ir,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:c[2]||(c[2]=f=>D.value=!1)}),e("div",qr,[c[33]||(c[33]=e("h3",{class:"text-base font-semibold mb-4"},"Prompt 设置",-1)),e("div",Mr,[e("div",null,[c[29]||(c[29]=e("label",{class:"text-xs text-muted-foreground mb-1.5 block"},"渲染策略",-1)),a(t(lt),null,{default:r(()=>[a(t(dt),{"as-child":""},{default:r(()=>[a(t(T),{variant:"outline",size:"sm",class:"h-8 w-full max-w-xs justify-between text-xs font-normal"},{default:r(()=>[i(n(V.value.find(f=>f.value===M.value)?.label??M.value)+" ",1),a(t(Ze),{class:"h-3 w-3 opacity-50"})]),_:1})]),_:1}),a(t(ot),{align:"start",class:"min-w-[240px]"},{default:r(()=>[a(t(nt),{"model-value":M.value,"onUpdate:modelValue":c[3]||(c[3]=f=>M.value=String(f))},{default:r(()=>[(s(!0),o(N,null,se(V.value,f=>(s(),_(t(rt),{key:f.value,value:f.value},{default:r(()=>[e("div",null,[e("div",Ar,n(f.label),1),e("div",zr,n(f.desc),1)])]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])]),_:1})]),_:1})]),e("div",null,[c[30]||(c[30]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},"备注",-1)),_e(e("textarea",{"onUpdate:modelValue":c[4]||(c[4]=f=>K.value=f),rows:"2",class:"flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none",placeholder:"内部备注(可选)"},null,512),[[Ne,K.value]])])]),O.value?(s(),o("p",Pr,n(O.value),1)):k("",!0),e("div",Tr,[a(t(T),{variant:"outline",class:"flex-1",disabled:W.value,onClick:c[5]||(c[5]=f=>D.value=!1)},{default:r(()=>[...c[31]||(c[31]=[i("取消",-1)])]),_:1},8,["disabled"]),a(t(T),{class:"flex-1",disabled:W.value,onClick:X},{default:r(()=>[W.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin mr-1"})):k("",!0),c[32]||(c[32]=i(" 保存 ",-1))]),_:1},8,["disabled"])])])])):k("",!0)])),(s(),_(he,{to:"body"},[te.value?(s(),o("div",Dr,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:c[6]||(c[6]=f=>te.value=!1)}),e("div",Br,[a(t(_t),{class:"h-8 w-8 mx-auto text-amber-500"}),c[36]||(c[36]=e("h3",{class:"text-base font-semibold"},"从模板重置 Prompt",-1)),c[37]||(c[37]=e("p",{class:"text-sm text-muted-foreground"},"此操作将用角色模板覆盖当前所有 Prompt 内容,无法撤销。",-1)),e("div",Vr,[a(t(T),{variant:"outline",class:"flex-1",disabled:F.value,onClick:c[7]||(c[7]=f=>te.value=!1)},{default:r(()=>[...c[34]||(c[34]=[i("取消 ",-1)])]),_:1},8,["disabled"]),a(t(T),{variant:"destructive",class:"flex-1",disabled:F.value,onClick:P},{default:r(()=>[F.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin mr-1"})):k("",!0),c[35]||(c[35]=i(" 确认重置 ",-1))]),_:1},8,["disabled"])])])])):k("",!0)])),(s(),_(he,{to:"body"},[me.value&&J.value?(s(),o("div",Or,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:c[8]||(c[8]=f=>me.value=!1)}),e("div",Er,[e("div",jr,[c[38]||(c[38]=e("h3",{class:"text-base font-semibold"},"渲染预览",-1)),a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:c[9]||(c[9]=f=>me.value=!1)},{default:r(()=>[a(t(Bt),{class:"h-4 w-4"})]),_:1})]),e("div",Rr,[a(t(Y),{variant:"outline"},{default:r(()=>[i(n(J.value.host_platform),1)]),_:1}),a(t(Y),{variant:"outline"},{default:r(()=>[i(n(V.value.find(f=>f.value===J.value.host_render_strategy)?.label??J.value.host_render_strategy),1)]),_:1})]),e("div",Fr,[(s(!0),o(N,null,se(J.value.artifacts,(f,d)=>(s(),o("div",{key:d,class:"rounded-lg border bg-muted/20 p-4"},[e("div",Ur,[e("span",Lr,n(f.name),1),a(t(T),{variant:"ghost",size:"sm",class:"h-6 gap-1 text-[11px] text-muted-foreground/50",onClick:x=>U(f.content,`artifact-${d}`)},{default:r(()=>[j.value===`artifact-${d}`?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"})),c[39]||(c[39]=i(" 复制 ",-1))]),_:2},1032,["onClick"])]),e("pre",Nr," "+n(f.content),1)]))),128)),J.value.artifacts.length?k("",!0):(s(),o("p",Kr," 无渲染产物 "))])])])):k("",!0)]))],64))}}),Hr={key:0,class:"flex items-center justify-center py-16"},Wr={key:1,class:"flex flex-col items-center py-16 text-muted-foreground"},Yr={class:"text-sm"},Xr={key:2,class:"space-y-4 animate-slide-up"},Qr={class:"flex items-center justify-between"},Zr={class:"flex items-center gap-2"},Jr={key:0,class:"rounded-xl border border-dashed border-border bg-muted/10 p-8 text-center"},ed={class:"p-4"},td={class:"flex items-start justify-between gap-3"},sd={class:"min-w-0 flex-1"},ad={class:"flex items-center gap-2 mb-1.5"},ld={class:"text-sm font-semibold"},od={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground/60"},nd={class:"inline-flex items-center gap-1 font-mono bg-muted/20 px-1.5 py-0.5 rounded text-[11px]"},rd={class:"inline-flex items-center gap-1"},dd={key:0,class:"inline-flex items-center gap-1"},id={class:"text-muted-foreground/30 ml-auto text-[11px]"},ud={key:0,class:"mt-3 rounded-lg border border-border/20 overflow-hidden"},cd={class:"flex items-center justify-between px-3 py-1.5 border-b border-border/10 bg-muted/10"},md={class:"flex items-center gap-1.5"},pd=["onClick"],fd={class:"px-3 py-2 bg-muted/5"},vd={class:"relative"},xd=["innerHTML"],gd={key:0,class:"absolute bottom-0 left-0 right-0 h-12 bg-gradient-to-t from-muted/30 to-transparent flex items-end justify-center pb-0.5"},bd=["onClick"],yd=["onClick"],_d={class:"flex gap-1 shrink-0"},hd={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},kd={class:"text-base font-semibold mb-1"},wd={class:"flex items-center gap-1 mb-6"},$d=["onClick"],Cd={class:"space-y-4"},Sd={class:"grid grid-cols-2 gap-2"},Id=["onClick"],qd={class:"text-sm font-medium"},Md={class:"text-[11px] text-muted-foreground/60 mt-0.5"},Ad={class:"text-xs text-muted-foreground font-medium mb-1 block"},zd={class:"flex flex-wrap gap-1.5 mt-2"},Pd=["onClick"],Td=["onClick"],Dd={class:"text-[11px] text-muted-foreground/50 mt-1.5"},Bd={key:0,class:"mt-3 rounded-lg border border-border/40 bg-muted/5 p-3 space-y-3"},Vd={class:"grid grid-cols-5 gap-2"},Od={class:"text-[10px] text-muted-foreground/60 mb-1 block text-center"},Ed={class:"w-full h-7 text-[11px] rounded-md border border-input bg-background hover:bg-muted/20 px-1.5 flex items-center justify-between gap-0.5 transition-colors focus:outline-none focus:ring-1 focus:ring-ring"},jd={class:"truncate"},Rd={class:"flex items-center justify-between"},Fd={class:"text-[11px] text-muted-foreground/60"},Ud={class:"font-mono bg-muted/30 px-1.5 py-0.5 rounded text-[10px]"},Ld={class:"text-[11px] text-muted-foreground/50"},Nd={class:"text-xs text-muted-foreground font-medium mb-1 block"},Kd={key:0,class:"text-muted-foreground/40 font-normal ml-1"},Gd={class:"flex flex-wrap gap-1.5 mt-2"},Hd=["onClick"],Wd={class:"space-y-3"},Yd={class:"flex items-start justify-between gap-3"},Xd={class:"grid grid-cols-2 gap-4"},Qd={class:"space-y-1.5"},Zd={class:"flex items-center gap-1.5 text-[11px] text-muted-foreground/60"},Jd={class:"space-y-1.5"},ei={class:"flex items-center gap-1.5 text-[11px] text-muted-foreground/60"},ti={class:"rounded-lg border border-border/50 bg-background px-4 py-3 h-[520px] overflow-y-auto"},si=["innerHTML"],ai={key:1,class:"flex flex-col items-center justify-center h-full text-muted-foreground/30"},li={class:"space-y-4"},oi={key:0,class:"flex items-start gap-2 mt-2 rounded-md border border-amber-500/20 bg-amber-500/5 px-2.5 py-2"},ni={class:"rounded-lg border border-border/30 bg-muted/5 p-4 space-y-2"},ri={class:"grid grid-cols-2 gap-y-1.5 text-xs"},di={class:"text-foreground"},ii={class:"text-foreground"},ui={class:"text-foreground font-mono"},ci={class:"text-foreground"},mi={class:"text-foreground truncate"},pi={class:"text-foreground"},fi={key:0,class:"text-xs text-rose-500 mt-3"},vi={class:"flex gap-3 mt-5"},xi={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},gi={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-center space-y-3"},bi={class:"text-sm text-muted-foreground"},yi={class:"font-medium text-foreground"},_i={class:"flex gap-3 pt-2"},hi={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},ki={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-center space-y-3"},wi={class:"flex gap-3 pt-2"},$i={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Ci={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-center space-y-3"},as=3,Si=ne({__name:"ScheduleTab",props:{agentId:{},agentRole:{},disabled:{type:Boolean}},setup(l){const h=l,p=b([]),I=b(!1),m=b(""),y=b(!1),$=b("create"),w=b(null),q=b(!1),A=b(""),v=b(1),g=b({name:"",enabled:!0,schedule_type:"interval",schedule_expr:"15m",timeout_seconds:1800,model_override:"",execution_options_json:"",schedule_message_content:""}),S=b(null),G=b(null),z=b(new Set),H=[{value:"interval",label:"固定间隔",desc:"按固定时间间隔触发,如每 15 分钟"},{value:"cron",label:"Cron 表达式",desc:"按 Cron 规则触发,支持复杂周期"}],D=[{value:"5m",label:"每 5 分钟"},{value:"15m",label:"每 15 分钟"},{value:"30m",label:"每 30 分钟"},{value:"1h",label:"每小时"},{value:"2h",label:"每 2 小时"},{value:"6h",label:"每 6 小时"},{value:"1d",label:"每天"}],M=[{value:"*/5 * * * *",label:"每 5 分钟"},{value:"*/15 * * * *",label:"每 15 分钟"},{value:"0 * * * *",label:"每小时整点"},{value:"0 9 * * *",label:"每天 9:00"},{value:"0 9 * * 1-5",label:"工作日 9:00"},{value:"0 0 * * 0",label:"每周日 0:00"}],K=[{value:300,label:"5 分钟"},{value:900,label:"15 分钟"},{value:1800,label:"30 分钟"},{value:3600,label:"1 小时"},{value:7200,label:"2 小时"}];function W(R){g.value.schedule_type=R,g.value.schedule_expr=R==="interval"?"15m":"*/15 * * * *",O.value=R==="cron"}const O=b(!1),F=["*","*","*","*","*"],te=[{key:"minute",label:"分钟",options:[{value:"*",label:"每分钟"},{value:"*/5",label:"每 5 分钟"},{value:"*/10",label:"每 10 分钟"},{value:"*/15",label:"每 15 分钟"},{value:"*/30",label:"每 30 分钟"},{value:"0",label:"整点 (0)"},{value:"15",label:"15 分"},{value:"30",label:"30 分"},{value:"45",label:"45 分"}]},{key:"hour",label:"小时",options:[{value:"*",label:"每小时"},{value:"*/2",label:"每 2 小时"},{value:"*/6",label:"每 6 小时"},{value:"0",label:"0:00"},{value:"6",label:"6:00"},{value:"9",label:"9:00"},{value:"12",label:"12:00"},{value:"18",label:"18:00"},{value:"21",label:"21:00"}]},{key:"day",label:"日",options:[{value:"*",label:"每天"},{value:"1",label:"1 号"},{value:"15",label:"15 号"},{value:"1,15",label:"1 和 15 号"}]},{key:"month",label:"月",options:[{value:"*",label:"每月"},{value:"1",label:"1 月"},{value:"*/3",label:"每季度"},{value:"*/6",label:"每半年"}]},{key:"weekday",label:"星期",options:[{value:"*",label:"不限"},{value:"1-5",label:"工作日"},{value:"0,6",label:"周末"},{value:"1",label:"周一"},{value:"5",label:"周五"},{value:"0",label:"周日"}]}],le=ce(()=>{const u=(g.value.schedule_expr??"").trim().split(/\s+/).filter(Boolean);if(u.length===5){const[c="*",f="*",d="*",x="*",oe="*"]=u;return[c,f,d,x,oe]}return[...F]});function J(R,u){const c=[...le.value];c[R]=u,g.value.schedule_expr=c.join(" ")}function me(R){const u=le.value[R]??F[R]??"*";return te[R]?.options.find(f=>f.value===u)?.label??u}const fe=ce(()=>{const[R,u,c,f,d]=le.value,x=[];return d==="1-5"?x.push("工作日"):d==="0,6"?x.push("周末"):d!=="*"&&x.push(`星期${d}`),f!=="*"&&x.push(`${f}月`),c!=="*"&&x.push(`${c}号`),u!=="*"&&R!=="*"?x.push(`${u}:${R.padStart(2,"0")}`):u!=="*"?x.push(`${u}点`):R.startsWith("*/")?x.push(`每 ${R.slice(2)} 分钟`):R!=="*"&&x.push(`第 ${R} 分钟`),x.length?x.join(",")+" 执行":"每分钟执行"}),ve=ce(()=>{const R=g.value.timeout_seconds;if(!R||R<60)return"";const u=Math.floor(R/3600),c=Math.floor(R%3600/60);return u>0&&c>0?`${u} 小时 ${c} 分钟`:u>0?`${u} 小时`:`${c} 分钟`}),Z=ce(()=>{const R={};return g.value.name.trim()?g.value.schedule_expr.trim()||(R[1]="请设置调度表达式"):R[1]="请填写任务名称",g.value.schedule_message_content?.trim()||(R[2]="唤醒消息不能为空"),R});function V(R){return!Z.value[R]}function Q(){V(v.value)&&v.value1&&v.value--}function B(R){return R?Ot(R):""}const L=b("edit"),ie=b(!1),ue=b(!1),X=b(!1);function P(){if(g.value.schedule_message_content?.trim()){X.value=!0;return}E()}async function E(){X.value=!1,ie.value=!0;try{const u=(await $t.getPromptTemplates(h.agentRole)).data.items;if(!u?.length){de.warning("当前角色暂无可用的示例提示词模板。");return}const c=h.agentRole&&u.find(f=>f.role===h.agentRole)||u[0];if(!c){de.warning("当前角色暂无可用的示例提示词模板。");return}g.value.schedule_message_content=c.content,ue.value=!0,L.value="edit",de.success(`已填入「${c.label}」角色的示例提示词。`)}catch{de.error("获取示例提示词失败")}finally{ie.value=!1}}async function j(){I.value=!0,m.value="";try{const R=await Xe.list(h.agentId);p.value=R.data}catch{m.value="加载定时任务失败"}finally{I.value=!1}}Ie(()=>{j()}),$e(()=>h.agentId,()=>{y.value=!1,j()});function U(){g.value={name:"",enabled:!0,schedule_type:"interval",schedule_expr:"15m",timeout_seconds:1800,model_override:"",execution_options_json:"",schedule_message_content:""},$.value="create",w.value=null,A.value="",v.value=1,O.value=!1,L.value="edit",ue.value=!1,y.value=!0}function ee(R){g.value={name:R.name,enabled:R.enabled,schedule_type:R.schedule_type,schedule_expr:R.schedule_expr,timeout_seconds:R.timeout_seconds,model_override:R.model_override??"",execution_options_json:R.execution_options_json??"",schedule_message_content:R.schedule_message_content??""},$.value="edit",w.value=R.id,A.value="",v.value=1,O.value=R.schedule_type==="cron",L.value="edit",ue.value=!1,y.value=!0}async function ge(){if(Z.value[1]){v.value=1,A.value=Z.value[1];return}if(Z.value[2]){v.value=2,A.value=Z.value[2];return}q.value=!0,A.value="";try{const R={...g.value,name:g.value.name.trim(),schedule_message_content:g.value.schedule_message_content.trim(),model_override:g.value.model_override?.trim()||void 0,execution_options_json:g.value.execution_options_json?.trim()||void 0};$.value==="create"?(await Xe.create(h.agentId,R),de.success("定时任务已创建")):w.value&&(await Xe.update(h.agentId,w.value,R),de.success("定时任务已更新")),y.value=!1,j()}catch(R){const u=R?.response?.data?.detail;A.value=u??"保存失败"}finally{q.value=!1}}function qe(R){G.value=R}async function Me(){const R=G.value;if(R){S.value=R.id,G.value=null;try{await Xe.remove(h.agentId,R.id),de.success("已删除"),j()}catch{de.error("删除失败")}finally{S.value=null}}}async function He(R){try{await Xe.update(h.agentId,R.id,{enabled:!R.enabled}),R.enabled=!R.enabled,de.success(R.enabled?"已启用":"已禁用")}catch{de.error("操作失败")}}function Fe(R){if(!R)return"—";try{return new Date(R).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return R}}const Se=[{num:1,label:"调度配置"},{num:2,label:"唤醒消息"},{num:3,label:"高级选项"}];return(R,u)=>I.value?(s(),o("div",Hr,[a(t(re),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):m.value?(s(),o("div",Wr,[a(t(ye),{class:"h-6 w-6 mb-2 text-rose-400"}),e("p",Yr,n(m.value),1),a(t(T),{variant:"link",size:"sm",class:"mt-2",onClick:j},{default:r(()=>[...u[13]||(u[13]=[i("重试",-1)])]),_:1})])):(s(),o("div",Xr,[e("div",Qr,[e("div",Zr,[u[14]||(u[14]=e("span",{class:"text-xs font-medium text-muted-foreground uppercase tracking-wider"},"定时任务",-1)),a(t(Y),{variant:"outline",class:"text-[10px] tabular-nums"},{default:r(()=>[i(n(p.value.length),1)]),_:1})]),a(t(T),{variant:"outline",size:"sm",class:"h-7 gap-1 text-xs",disabled:l.disabled,onClick:U},{default:r(()=>[a(t(qt),{class:"h-3 w-3"}),u[15]||(u[15]=i(" 新增 ",-1))]),_:1},8,["disabled"])]),p.value.length===0&&!y.value?(s(),o("div",Jr,[a(t(Ee),{class:"h-8 w-8 mx-auto mb-3 text-muted-foreground/30"}),u[16]||(u[16]=e("p",{class:"text-sm text-muted-foreground"},"暂无定时任务",-1))])):k("",!0),(s(!0),o(N,null,se(p.value,(c,f)=>(s(),o("div",{key:c.id,class:"group rounded-xl border bg-card overflow-hidden animate-slide-up transition-all hover:border-border/60 hover:shadow-sm",style:St({animationDelay:`${f*30}ms`})},[e("div",ed,[e("div",td,[e("div",sd,[e("div",ad,[e("span",ld,n(c.name),1),a(t(Y),{variant:"outline",class:ae(["text-[10px] gap-1",c.enabled?"text-emerald-400 border-emerald-500/20 bg-emerald-500/5":"text-zinc-400 border-zinc-500/20 bg-zinc-500/5"])},{default:r(()=>[e("span",{class:ae(["h-1.5 w-1.5 rounded-full",c.enabled?"bg-emerald-400":"bg-zinc-400"])},null,2),i(" "+n(c.enabled?"启用":"禁用"),1)]),_:2},1032,["class"]),a(t(Y),{variant:"outline",class:"text-[10px] text-muted-foreground/70 bg-muted/20"},{default:r(()=>[i(n(c.schedule_type==="interval"?"固定间隔":"Cron"),1)]),_:2},1024)]),e("div",od,[e("span",nd,[a(t(Ee),{class:"h-3 w-3 text-muted-foreground/40"}),i(n(c.schedule_expr),1)]),e("span",rd,[u[17]||(u[17]=e("span",{class:"text-muted-foreground/30"},"超时",-1)),i(" "+n(c.timeout_seconds)+"s",1)]),c.model_override?(s(),o("span",dd,[u[18]||(u[18]=e("span",{class:"text-muted-foreground/30"},"模型",-1)),i(" "+n(c.model_override),1)])):k("",!0),e("span",id,n(Fe(c.updated_at)),1)]),c.schedule_message_content?(s(),o("div",ud,[e("div",cd,[e("div",md,[a(t(at),{class:"h-3 w-3 text-primary/40"}),u[19]||(u[19]=e("span",{class:"text-[10px] text-muted-foreground/50 font-medium"},"唤醒消息",-1))]),c.schedule_message_content.split(` +`).length>4?(s(),o("button",{key:0,class:"text-[10px] text-muted-foreground/40 hover:text-muted-foreground transition-colors",onClick:d=>z.value.has(c.id)?z.value.delete(c.id):z.value.add(c.id)},n(z.value.has(c.id)?"收起":"展开"),9,pd)):k("",!0)]),e("div",fd,[e("div",vd,[e("div",{class:ae(["prose prose-sm dark:prose-invert max-w-none text-foreground/80 text-xs",{"max-h-36 overflow-hidden":!z.value.has(c.id)}]),innerHTML:B(c.schedule_message_content)},null,10,xd),!z.value.has(c.id)&&c.schedule_message_content.split(` +`).length>4?(s(),o("div",gd,[e("button",{class:"text-[11px] text-primary/70 hover:text-primary font-medium transition-colors bg-background/80 backdrop-blur-sm px-2.5 py-0.5 rounded-full border border-border/30 shadow-sm",onClick:d=>z.value.add(c.id)}," 查看全部 ",8,bd)])):k("",!0)]),z.value.has(c.id)?(s(),o("button",{key:0,class:"text-[11px] text-muted-foreground/40 hover:text-muted-foreground mt-1.5 transition-colors",onClick:d=>z.value.delete(c.id)}," 收起 ",8,yd)):k("",!0)])])):k("",!0)]),e("div",_d,[a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:d=>He(c)},{default:r(()=>[c.enabled?(s(),_(t(gs),{key:0,class:"h-3.5 w-3.5 text-emerald-400"})):(s(),_(t(xs),{key:1,class:"h-3.5 w-3.5 text-zinc-400"}))]),_:2},1032,["onClick"]),a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:d=>ee(c)},{default:r(()=>[a(t(Le),{class:"h-3 w-3"})]),_:1},8,["onClick"]),a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7 text-rose-400 hover:text-rose-500",disabled:S.value===c.id,onClick:d=>qe(c)},{default:r(()=>[S.value===c.id?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(st),{key:1,class:"h-3 w-3"}))]),_:2},1032,["disabled","onClick"])])])])],4))),128)),(s(),_(he,{to:"body"},[y.value?(s(),o("div",hd,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:u[0]||(u[0]=c=>y.value=!1)}),e("div",{class:ae(["relative z-10 w-full max-h-[85vh] overflow-y-auto rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 transition-[max-width] duration-300 ease-in-out",v.value===2?"max-w-7xl":"max-w-2xl"])},[e("h3",kd,n($.value==="create"?"新增定时任务":"编辑定时任务"),1),u[57]||(u[57]=e("p",{class:"text-xs text-muted-foreground/60 mb-4"},"配置 Agent 的自动唤醒计划,定时触发执行任务。",-1)),e("div",wd,[(s(),o(N,null,se(Se,(c,f)=>(s(),o(N,{key:c.num},[e("button",{class:ae(["flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs font-medium transition-colors",v.value===c.num?"bg-primary text-primary-foreground":v.value>c.num?"bg-primary/10 text-primary cursor-pointer":"bg-muted/30 text-muted-foreground/50"]),onClick:d=>v.value>c.num&&(v.value=c.num)},[e("span",{class:ae(["inline-flex items-center justify-center h-4 w-4 rounded-full text-[10px]",v.value>c.num?"bg-primary/20":""])},n(v.value>c.num?"✓":c.num),3),i(" "+n(c.label),1)],10,$d),fg.value.name=c),placeholder:"例如:每日巡检、定时同步…"},null,8,["modelValue"])]),e("div",null,[u[21]||(u[21]=e("label",{class:"text-xs text-muted-foreground font-medium mb-1.5 block"},[i("调度类型 "),e("span",{class:"text-rose-500"},"*")],-1)),e("div",Sd,[(s(),o(N,null,se(H,c=>e("button",{key:c.value,class:ae(["rounded-lg border p-3 text-left transition-all",g.value.schedule_type===c.value?"border-primary bg-primary/5 ring-1 ring-primary/20":"border-border hover:border-border/80"]),onClick:f=>W(c.value)},[e("div",qd,n(c.label),1),e("div",Md,n(c.desc),1)],10,Id)),64))])]),e("div",null,[e("label",Ad,[i(n(g.value.schedule_type==="interval"?"执行间隔":"Cron 表达式")+" ",1),u[22]||(u[22]=e("span",{class:"text-rose-500"},"*",-1))]),a(t(be),{modelValue:g.value.schedule_expr,"onUpdate:modelValue":u[2]||(u[2]=c=>g.value.schedule_expr=c),placeholder:g.value.schedule_type==="interval"?"15m":"*/15 * * * *",class:"font-mono text-sm"},null,8,["modelValue","placeholder"]),e("div",zd,[g.value.schedule_type==="interval"?(s(),o(N,{key:0},se(D,c=>e("button",{key:c.value,class:ae(["px-2 py-0.5 text-[11px] rounded-md border transition-colors",g.value.schedule_expr===c.value?"bg-primary/10 border-primary/30 text-primary":"border-border/40 text-muted-foreground/60 hover:border-border hover:text-muted-foreground"]),onClick:f=>g.value.schedule_expr=c.value},n(c.label),11,Pd)),64)):(s(),o(N,{key:1},se(M,c=>e("button",{key:c.value,class:ae(["px-2 py-0.5 text-[11px] rounded-md border transition-colors",g.value.schedule_expr===c.value?"bg-primary/10 border-primary/30 text-primary":"border-border/40 text-muted-foreground/60 hover:border-border hover:text-muted-foreground"]),onClick:f=>g.value.schedule_expr=c.value},n(c.label),11,Td)),64))]),e("p",Dd,[g.value.schedule_type==="interval"?(s(),o(N,{key:0},[u[23]||(u[23]=i(" 支持格式:",-1)),u[24]||(u[24]=e("code",{class:"text-[10px] bg-muted/30 px-1 rounded"},"15m",-1)),u[25]||(u[25]=i("(分钟)、",-1)),u[26]||(u[26]=e("code",{class:"text-[10px] bg-muted/30 px-1 rounded"},"2h",-1)),u[27]||(u[27]=i("(小时)、",-1)),u[28]||(u[28]=e("code",{class:"text-[10px] bg-muted/30 px-1 rounded"},"1d",-1)),u[29]||(u[29]=i("(天) ",-1))],64)):(s(),o(N,{key:1},[u[30]||(u[30]=i(" 标准 5 位 Cron:",-1)),u[31]||(u[31]=e("code",{class:"text-[10px] bg-muted/30 px-1 rounded"},"分 时 日 月 周",-1)),e("button",{class:"ml-2 text-primary/60 hover:text-primary transition-colors",onClick:u[3]||(u[3]=c=>O.value=!O.value)},n(O.value?"收起组装器":"可视化组装 →"),1)],64))]),g.value.schedule_type==="cron"&&O.value?(s(),o("div",Bd,[e("div",Vd,[(s(),o(N,null,se(te,(c,f)=>e("div",{key:c.key},[e("label",Od,n(c.label),1),a(t(lt),null,{default:r(()=>[a(t(dt),{"as-child":""},{default:r(()=>[e("button",Ed,[e("span",jd,n(me(f)),1),a(t(Ze),{class:"h-3 w-3 text-muted-foreground/40 shrink-0"})])]),_:2},1024),a(t(ot),{align:"center",class:"min-w-[100px]"},{default:r(()=>[a(t(nt),{"model-value":le.value[f],"onUpdate:modelValue":d=>J(f,d)},{default:r(()=>[(s(!0),o(N,null,se(c.options,d=>(s(),_(t(rt),{key:d.value,value:d.value,class:"text-xs"},{default:r(()=>[i(n(d.label),1)]),_:2},1032,["value"]))),128))]),_:2},1032,["model-value","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)])),64))]),e("div",Rd,[e("span",Fd,[u[32]||(u[32]=i("结果:",-1)),e("code",Ud,n(g.value.schedule_expr),1)]),e("span",Ld,"≈ "+n(fe.value),1)])])):k("",!0)]),e("div",null,[e("label",Nd,[u[33]||(u[33]=i(" 超时时间 ",-1)),u[34]||(u[34]=e("span",{class:"text-rose-500"},"*",-1)),ve.value?(s(),o("span",Kd,"≈ "+n(ve.value),1)):k("",!0)]),a(t(be),{modelValue:g.value.timeout_seconds,"onUpdate:modelValue":u[4]||(u[4]=c=>g.value.timeout_seconds=c),modelModifiers:{number:!0},type:"number",min:"60"},null,8,["modelValue"]),e("div",Gd,[(s(),o(N,null,se(K,c=>e("button",{key:c.value,class:ae(["px-2 py-0.5 text-[11px] rounded-md border transition-colors",g.value.timeout_seconds===c.value?"bg-primary/10 border-primary/30 text-primary":"border-border/40 text-muted-foreground/60 hover:border-border hover:text-muted-foreground"]),onClick:f=>g.value.timeout_seconds=c.value},n(c.label),11,Hd)),64))]),u[35]||(u[35]=e("p",{class:"text-[11px] text-muted-foreground/50 mt-1.5"}," 任务执行超过此时间将被视为失败并终止。建议设置为预期耗时的 2–3 倍。 ",-1))])],512),[[Tt,v.value===1]]),_e(e("div",Wd,[e("div",Yd,[u[37]||(u[37]=e("div",null,[e("label",{class:"text-xs text-muted-foreground font-medium mb-1 block"},[i(" 唤醒消息 "),e("span",{class:"text-rose-500"},"*")]),e("p",{class:"text-[11px] text-muted-foreground/50"}," 定时触发时发送给 Agent 的指令内容。相当于定时任务的“提示词”,告诉 Agent 被唤醒后该做什么。 ")],-1)),a(t(T),{variant:"outline",size:"sm",class:"h-7 gap-1 text-xs shrink-0",disabled:ie.value,onClick:P},{default:r(()=>[ie.value?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(Oe),{key:1,class:"h-3 w-3"})),u[36]||(u[36]=i(" 从示例填充 ",-1))]),_:1},8,["disabled"])]),e("div",Xd,[e("div",Qd,[e("div",Zd,[a(t(ps),{class:"h-3 w-3"}),u[38]||(u[38]=e("span",{class:"font-medium"},"编辑",-1)),u[39]||(u[39]=e("span",{class:"text-muted-foreground/30"},"· Markdown",-1))]),_e(e("textarea",{"onUpdate:modelValue":u[5]||(u[5]=c=>g.value.schedule_message_content=c),class:"flex w-full rounded-lg border border-input bg-muted/5 px-3.5 py-2.5 text-sm font-mono placeholder:text-muted-foreground/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:bg-background resize-none leading-relaxed h-[520px] transition-colors",placeholder:"请检查今日待办事项并汇总,有紧急事项请立即通知…"},null,512),[[Ne,g.value.schedule_message_content]])]),e("div",Jd,[e("div",ei,[a(t(pt),{class:"h-3 w-3"}),u[40]||(u[40]=e("span",{class:"font-medium"},"实时预览",-1))]),e("div",ti,[g.value.schedule_message_content?.trim()?(s(),o("div",{key:0,class:"prose prose-sm dark:prose-invert max-w-none text-foreground/90",innerHTML:B(g.value.schedule_message_content)},null,8,si)):(s(),o("div",ai,[a(t(pt),{class:"h-6 w-6 mb-2"}),u[41]||(u[41]=e("p",{class:"text-xs"},"在左侧输入内容后这里会实时渲染预览",-1))]))])])])],512),[[Tt,v.value===2]]),_e(e("div",li,[u[52]||(u[52]=e("p",{class:"text-xs text-muted-foreground/50"},"以下为可选配置,可留空使用默认值。",-1)),e("div",null,[u[43]||(u[43]=e("label",{class:"text-xs text-muted-foreground font-medium mb-1 block"},[i("模型覆盖 "),e("span",{class:"text-muted-foreground/40 font-normal"},"(可选)")],-1)),a(t(be),{modelValue:g.value.model_override,"onUpdate:modelValue":u[6]||(u[6]=c=>g.value.model_override=c),placeholder:"留空使用平台默认模型",class:"text-sm"},null,8,["modelValue"]),u[44]||(u[44]=e("p",{class:"text-[11px] text-muted-foreground/50 mt-1"}," 指定执行此任务的模型。留空则使用平台默认模型。 ",-1)),g.value.model_override?.trim()?(s(),o("div",oi,[a(t(ye),{class:"h-3.5 w-3.5 text-amber-400 shrink-0 mt-0.5"}),u[42]||(u[42]=e("p",{class:"text-[11px] text-amber-400/80 leading-relaxed"}," 请确保该模型在平台中正常可用,否则任务会执行失败。 ",-1))])):k("",!0)]),e("div",ni,[u[51]||(u[51]=e("div",{class:"text-xs font-medium text-muted-foreground mb-2"},"配置摘要",-1)),e("div",ri,[u[46]||(u[46]=e("span",{class:"text-muted-foreground/60"},"任务名称",-1)),e("span",di,n(g.value.name||"—"),1),u[47]||(u[47]=e("span",{class:"text-muted-foreground/60"},"调度类型",-1)),e("span",ii,n(g.value.schedule_type==="interval"?"固定间隔":"Cron"),1),u[48]||(u[48]=e("span",{class:"text-muted-foreground/60"},"调度表达式",-1)),e("span",ui,n(g.value.schedule_expr),1),u[49]||(u[49]=e("span",{class:"text-muted-foreground/60"},"超时时间",-1)),e("span",ci,n(ve.value||`${g.value.timeout_seconds}s`),1),u[50]||(u[50]=e("span",{class:"text-muted-foreground/60"},"唤醒消息",-1)),e("span",mi,n(g.value.schedule_message_content?.slice(0,40)||"—")+n((g.value.schedule_message_content?.length??0)>40?"…":""),1),g.value.model_override?.trim()?(s(),o(N,{key:0},[u[45]||(u[45]=e("span",{class:"text-muted-foreground/60"},"模型覆盖",-1)),e("span",pi,n(g.value.model_override),1)],64)):k("",!0)])])],512),[[Tt,v.value===3]]),A.value?(s(),o("p",fi,n(A.value),1)):k("",!0),e("div",vi,[v.value>1?(s(),_(t(T),{key:0,variant:"outline",class:"gap-1",disabled:q.value,onClick:C},{default:r(()=>[a(t(Kt),{class:"h-3.5 w-3.5"}),u[53]||(u[53]=i(" 上一步 ",-1))]),_:1},8,["disabled"])):k("",!0),u[56]||(u[56]=e("div",{class:"flex-1"},null,-1)),a(t(T),{variant:"outline",disabled:q.value,onClick:u[7]||(u[7]=c=>y.value=!1)},{default:r(()=>[...u[54]||(u[54]=[i("取消",-1)])]),_:1},8,["disabled"]),v.value[u[55]||(u[55]=i(" 下一步 ",-1)),a(t(Vt),{class:"h-3.5 w-3.5"})]),_:1},8,["disabled"])):(s(),_(t(T),{key:2,class:"gap-1",disabled:q.value,onClick:ge},{default:r(()=>[q.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin"})):k("",!0),i(" "+n($.value==="create"?"创建":"保存"),1)]),_:1},8,["disabled"]))])],2)])):k("",!0)])),(s(),_(he,{to:"body"},[G.value?(s(),o("div",xi,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:u[8]||(u[8]=c=>G.value=null)}),e("div",gi,[a(t(st),{class:"h-8 w-8 mx-auto text-rose-400"}),u[62]||(u[62]=e("h3",{class:"text-base font-semibold"},"删除定时任务",-1)),e("p",bi,[u[58]||(u[58]=i(" 确定要删除「",-1)),e("span",yi,n(G.value.name),1),u[59]||(u[59]=i("」吗?此操作不可撤销。 ",-1))]),e("div",_i,[a(t(T),{variant:"outline",class:"flex-1",onClick:u[9]||(u[9]=c=>G.value=null)},{default:r(()=>[...u[60]||(u[60]=[i("取消",-1)])]),_:1}),a(t(T),{variant:"destructive",class:"flex-1",onClick:Me},{default:r(()=>[...u[61]||(u[61]=[i("确认删除",-1)])]),_:1})])])])):k("",!0)])),(s(),_(he,{to:"body"},[X.value?(s(),o("div",hi,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:u[10]||(u[10]=c=>X.value=!1)}),e("div",ki,[a(t(Oe),{class:"h-8 w-8 mx-auto text-amber-400"}),u[65]||(u[65]=e("h3",{class:"text-base font-semibold"},"覆盖现有内容?",-1)),u[66]||(u[66]=e("p",{class:"text-sm text-muted-foreground"},[i(" 唤醒消息已有内容,从 Prompt 填充将"),e("span",{class:"font-medium text-foreground"},"替换当前全部内容"),i("。 ")],-1)),e("div",wi,[a(t(T),{variant:"outline",class:"flex-1",onClick:u[11]||(u[11]=c=>X.value=!1)},{default:r(()=>[...u[63]||(u[63]=[i("取消",-1)])]),_:1}),a(t(T),{class:"flex-1",onClick:E},{default:r(()=>[...u[64]||(u[64]=[i("确认覆盖",-1)])]),_:1})])])])):k("",!0)])),(s(),_(he,{to:"body"},[ue.value?(s(),o("div",$i,[u[70]||(u[70]=e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm"},null,-1)),e("div",Ci,[a(t(Be),{class:"h-8 w-8 mx-auto text-amber-400"}),u[68]||(u[68]=e("h3",{class:"text-base font-semibold"},"示例提示词已填入",-1)),u[69]||(u[69]=e("p",{class:"text-sm text-muted-foreground leading-relaxed"},[i(" 已将该角色的示例提示词填入作为基础内容。不同的模型可能需要调整对应的提示词,请根据实际任务需求"),e("span",{class:"font-medium text-foreground"},"修改和补充"),i("具体的任务指令。 ")],-1)),a(t(T),{class:"w-full mt-2",onClick:u[12]||(u[12]=c=>ue.value=!1)},{default:r(()=>[...u[67]||(u[67]=[i("OK 我了解了",-1)])]),_:1})])])):k("",!0)]))]))}}),Ii={key:0,class:"rounded-xl border border-dashed border-border bg-muted/10 p-8 text-center"},qi={class:"mt-1 text-sm text-muted-foreground"},Mi={key:1,class:"flex items-center justify-center py-16"},Ai={key:2,class:"flex flex-col items-center py-16 text-muted-foreground"},zi={class:"text-sm"},Pi={key:3,class:"space-y-4 animate-slide-up"},Ti={class:"rounded-xl border bg-muted/10 p-4"},Di={class:"flex flex-wrap items-center gap-2"},Bi={class:"mt-2 text-sm leading-relaxed text-muted-foreground"},Vi={class:"flex items-center justify-between"},Oi={class:"flex items-center gap-2"},Ei={key:0,class:"rounded-xl border border-dashed border-border bg-muted/10 p-8 text-center"},ji={class:"flex items-start justify-between gap-3"},Ri={class:"min-w-0 flex-1"},Fi={class:"mb-1 flex flex-wrap items-center gap-2"},Ui={class:"text-sm font-medium font-mono"},Li={key:0,class:"text-xs text-muted-foreground"},Ni={class:"flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground/60"},Ki={class:"font-mono"},Gi={key:0,class:"flex items-center gap-1"},Hi={class:"flex gap-1 shrink-0"},Wi={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Yi={class:"relative z-10 w-full max-w-lg max-h-[85vh] overflow-y-auto rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200"},Xi={class:"flex items-start justify-between gap-3"},Qi={class:"text-base font-semibold"},Zi={class:"mt-1 text-xs text-muted-foreground/70"},Ji={class:"space-y-5"},eu={class:"rounded-lg border border-border/50 bg-muted/5 p-4 space-y-4"},tu={class:"flex items-center gap-1.5 text-xs text-muted-foreground"},su={key:0,class:"text-rose-500"},au={key:1,class:"inline-flex items-center gap-0.5 rounded border border-amber-500/20 bg-amber-500/10 px-1 py-0.5 text-[9px] text-amber-500"},lu={key:0,class:"text-[11px] text-muted-foreground/40"},ou={class:"flex items-center gap-1.5 text-xs text-muted-foreground"},nu={key:0,class:"text-rose-500"},ru={key:0,class:"text-[11px] text-muted-foreground/40"},du={class:"flex items-center gap-1.5"},iu={class:"text-sm font-medium"},uu={key:0,class:"space-y-3 rounded-lg border border-dashed border-border/70 bg-muted/5 p-4"},cu={class:"inline-flex h-7 items-center rounded-md px-2 text-xs text-muted-foreground/70"},mu={key:0,class:"space-y-4"},pu={class:"flex items-center gap-1.5 text-xs text-muted-foreground"},fu={key:0,class:"text-rose-500"},vu={key:1,class:"flex items-center justify-between rounded-lg border bg-muted/10 px-3 py-2.5"},xu={class:"flex items-center gap-1.5"},gu={class:"text-sm font-medium"},bu={key:2,class:"text-[11px] text-muted-foreground/40"},yu={key:0,class:"mt-4 rounded-lg border border-rose-500/20 bg-rose-500/10 p-3"},_u={class:"flex items-center gap-2 text-sm font-medium text-rose-500"},hu={class:"mt-2 space-y-1 text-xs text-rose-500/90"},ku={class:"mt-5 flex gap-3"},wu=ne({__name:"CommBindingTab",props:{agentId:{},hostPlatform:{},disabled:{type:Boolean}},emits:["saved"],setup(l,{emit:h}){const p=l,I=h,m={provider:"feishu",label:"飞书(Feishu)",description:["为 Agent 配置飞书通讯渠道。","绑定后即可在飞书中与该 Agent 对话,Agent 通过飞书机器人自动收发消息。","支持绑定多个飞书账号,对应不同的飞书应用。"].join(""),supports_multiple_bindings:!0,fields:[{key:"account_id",label:"OpenClaw 内部账号标识",type:"text",required:!1,advanced:!0,placeholder:"留空自动生成(推荐)",description:["OpenClaw 中用于标识这条飞书机器人账号配置的内部 key。","对应的账号配置会在 OpenClaw 中保存该机器人的 app_id、app_secret 等信息。","它不是飞书官方账号 ID,也不是在飞书侧看到的名称,而是 OpenClaw 内部用来区分、存储和引用这条飞书机器人配置的键。","留空时系统会根据当前 Agent 的 OpenClaw Agent ID 自动生成。"].join("")},{key:"app_id",label:"飞书 App ID",type:"text",required:!0,placeholder:"cli_xxx",description:"飞书开放平台的应用凭证,可在「凭证与基础信息」页面获取。"},{key:"app_secret",label:"飞书 App Secret",type:"password",required:!0,sensitive:!0,placeholder:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",description:"飞书应用密钥,与 App ID 配对使用,可在「凭证与基础信息」页面获取。提交后加密存储。"},{key:"account_name",label:"账号备注名",type:"text",required:!1,placeholder:"我的飞书助手",description:["给 OpenClaw 配置中这条飞书账号写的备注名。","主要用于自己识别和管理,不是功能性参数;可能会在部分界面展示,但不保证处处显示,不填也不影响飞书绑定本身。"].join("")},{key:"enabled",label:"是否启用",type:"switch",required:!1,default:!0,description:"关闭后 Agent 将暂停通过此账号收发飞书消息。"}]},y=b(null),$=b([]),w=b(""),q=b(!1),A=b(!1),v=b(!1),g=b("create"),S=b(null),G=b(!1),z=b(!1),H=b(null),D=b([]),M=os({account_id:"",app_id:"",app_secret:"",account_name:"",enabled:!0}),K=ce(()=>p.hostPlatform??"openclaw"),W=ce(()=>K.value==="openclaw"),O=ce(()=>y.value??m),F=ce(()=>O.value.provider==="feishu"?"飞书":O.value.label),te=ce(()=>O.value.fields),le=ce(()=>te.value.filter(f=>!f.advanced)),J=ce(()=>te.value.filter(f=>!!f.advanced)),me=ce(()=>q.value||A.value),fe=ce(()=>O.value.supports_multiple_bindings||$.value.length===0),ve=b(!1);function Z(){const f=O.value.fields.find(d=>d.key==="enabled")?.default;return typeof f=="boolean"?f:!0}function V(){M.account_id="",M.app_id="",M.app_secret="",M.account_name="",M.enabled=Z(),D.value=[],ve.value=!1}function Q(){v.value=!1,S.value=null,D.value=[]}async function C(){V(),g.value="create",v.value=!0;try{const{data:f}=await Ue.suggest(p.agentId);f.account_id&&(M.account_id=f.account_id)}catch{}}function B(f){V(),g.value="edit",S.value=f.id,M.account_id=f.account_id,M.app_id=f.app_id_masked,M.app_secret="",M.account_name=f.account_name??"",M.enabled=f.enabled,ve.value=J.value.some(d=>L(d.key).trim()),v.value=!0}function L(f){switch(f){case"account_id":return M.account_id;case"app_id":return M.app_id;case"app_secret":return M.app_secret;case"account_name":return M.account_name;default:return""}}function ie(f,d){const x=String(d);switch(f){case"account_id":M.account_id=x;break;case"app_id":M.app_id=x;break;case"app_secret":M.app_secret=x;break;case"account_name":M.account_name=x;break}}function ue(f){return f==="enabled"?M.enabled:!1}function X(f,d){f==="enabled"&&(M.enabled=d)}function P(f){return g.value==="edit"&&f.key==="app_secret"?!1:f.required}function E(f){return p.disabled?!0:g.value==="edit"&&f.key==="account_id"}function j(f){return g.value==="edit"&&f.key==="account_id"?"创建后不可修改。":g.value==="edit"&&f.key==="app_secret"?"留空表示不修改当前密钥。":null}function U(f){if(!f)return"—";try{return new Date(f).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return f}}function ee(f,d){return f?.response?.data?.detail??d}async function ge(){q.value=!0;try{const f=await $t.getCommProviderSchema("openclaw","feishu");y.value=f.data}catch{y.value=m}finally{q.value=!1}}async function qe(){A.value=!0;try{const f=await Ue.list(p.agentId);$.value=f.data,w.value=""}catch(f){$.value=[],w.value=ee(f,"加载飞书绑定失败")}finally{A.value=!1}}async function Me(){w.value="",W.value&&await Promise.all([ge(),qe()])}function He(){const f=[];for(const d of te.value){if(!P(d)||d.type==="switch")continue;L(d.key).trim()||f.push(`${d.label}不能为空`)}return f}function Fe(){return{account_id:M.account_id.trim(),app_id:M.app_id.trim(),app_secret:M.app_secret.trim(),account_name:M.account_name.trim()||null,enabled:M.enabled}}function Se(){return{app_id:M.app_id.trim(),app_secret:M.app_secret.trim()||void 0,account_name:M.account_name.trim()||null,enabled:M.enabled}}async function R(){const f=He();if(f.length>0){D.value=f;return}D.value=[],G.value=!0;try{if(g.value==="create"){const d=Fe();z.value=!0;const x=await $t.validateCommProviderBinding("openclaw","feishu",d);if(z.value=!1,!x.data.valid){D.value=x.data.errors.length>0?x.data.errors:["预校验未通过"];return}await Ue.create(p.agentId,d),de.success("飞书绑定已创建")}else S.value&&(await Ue.update(p.agentId,S.value,Se()),de.success("飞书绑定已更新"));Q(),await qe(),I("saved")}catch(d){D.value=[ee(d,"保存失败")]}finally{z.value=!1,G.value=!1}}async function u(f){try{await Ue.update(p.agentId,f.id,{enabled:!f.enabled}),f.enabled=!f.enabled,de.success(f.enabled?"已启用":"已禁用")}catch{de.error("操作失败")}}async function c(f){H.value=f;try{await Ue.remove(p.agentId,f),de.success("已删除"),await qe(),I("saved")}catch{de.error("删除失败")}finally{H.value=null}}return Ie(()=>{Me()}),$e([()=>p.agentId,()=>p.hostPlatform],()=>{Q(),Me()}),(f,d)=>W.value?me.value?(s(),o("div",Mi,[a(t(re),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):w.value?(s(),o("div",Ai,[a(t(ye),{class:"mb-2 h-6 w-6 text-rose-400"}),e("p",zi,n(w.value),1),a(t(T),{variant:"link",size:"sm",class:"mt-2",onClick:Me},{default:r(()=>[...d[2]||(d[2]=[i("重试",-1)])]),_:1})])):(s(),o("div",Pi,[e("div",Ti,[e("div",Di,[a(t(Y),{variant:"outline"},{default:r(()=>[...d[3]||(d[3]=[i("OpenClaw",-1)])]),_:1}),a(t(Y),{variant:"outline",class:"border-blue-500/20 bg-blue-500/10 text-blue-400"},{default:r(()=>[i(n(F.value),1)]),_:1}),a(t(Y),{variant:"outline",class:"tabular-nums"},{default:r(()=>[i(n($.value.length),1)]),_:1})]),e("p",Bi,n(O.value.description),1)]),e("div",Vi,[e("div",Oi,[d[4]||(d[4]=e("span",{class:"text-xs font-medium uppercase tracking-wider text-muted-foreground/60"},"飞书绑定",-1)),a(t(Y),{variant:"outline",class:"text-[10px] tabular-nums"},{default:r(()=>[i(n($.value.length),1)]),_:1})]),a(t(T),{variant:"outline",size:"sm",class:"h-7 gap-1 text-xs",disabled:l.disabled||!fe.value,onClick:C},{default:r(()=>[a(t(qt),{class:"h-3 w-3"}),d[5]||(d[5]=i(" 新增 ",-1))]),_:1},8,["disabled"])]),$.value.length===0&&!v.value?(s(),o("div",Ei,[a(t(at),{class:"mx-auto mb-3 h-8 w-8 text-muted-foreground/30"}),d[6]||(d[6]=e("p",{class:"text-sm text-muted-foreground"},"暂无飞书绑定",-1)),d[7]||(d[7]=e("p",{class:"mt-1 text-xs text-muted-foreground/60"}," 创建后将通过结构化接口写入 OpenClaw + 飞书通讯配置。 ",-1))])):k("",!0),(s(!0),o(N,null,se($.value,(x,oe)=>(s(),o("div",{key:x.id,class:"rounded-xl border bg-card p-4 animate-slide-up transition-all",style:St({animationDelay:`${oe*30}ms`})},[e("div",ji,[e("div",Ri,[e("div",Fi,[a(t(Y),{variant:"outline",class:"border-blue-500/20 bg-blue-500/10 text-[10px] text-blue-400"},{default:r(()=>[...d[8]||(d[8]=[i(" 飞书 ",-1)])]),_:1}),e("span",Ui,n(x.account_id),1),x.account_name?(s(),o("span",Li,n(x.account_name),1)):k("",!0),a(t(Y),{variant:"outline",class:ae(["text-[10px]",x.enabled?"border-emerald-500/20 text-emerald-400":"border-zinc-500/20 text-zinc-400"])},{default:r(()=>[i(n(x.enabled?"启用":"禁用"),1)]),_:2},1032,["class"])]),e("div",Ni,[e("span",Ki,"App ID "+n(x.app_id_masked),1),x.app_secret_masked?(s(),o("span",Gi,[a(t(gt),{class:"h-3 w-3"}),i(" App Secret "+n(x.app_secret_masked),1)])):k("",!0),e("span",null,n(U(x.updated_at)),1)])]),e("div",Hi,[a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:We=>u(x)},{default:r(()=>[x.enabled?(s(),_(t(gs),{key:0,class:"h-3.5 w-3.5 text-emerald-400"})):(s(),_(t(xs),{key:1,class:"h-3.5 w-3.5 text-zinc-400"}))]),_:2},1032,["onClick"]),a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:We=>B(x)},{default:r(()=>[a(t(Le),{class:"h-3 w-3"})]),_:1},8,["onClick"]),a(t(T),{variant:"ghost",size:"icon",class:"h-7 w-7 text-rose-400 hover:text-rose-500",disabled:H.value===x.id,onClick:We=>c(x.id)},{default:r(()=>[H.value===x.id?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(st),{key:1,class:"h-3 w-3"}))]),_:2},1032,["disabled","onClick"])])])],4))),128)),(s(),_(he,{to:"body"},[v.value?(s(),o("div",Wi,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:Q}),e("div",Yi,[e("div",Xi,[e("div",null,[e("h3",Qi,n(g.value==="create"?"新增飞书绑定":"编辑飞书绑定"),1),e("p",Zi,n(O.value.description),1)]),a(t(Y),{variant:"outline",class:"shrink-0 border-blue-500/20 bg-blue-500/10 text-blue-400"},{default:r(()=>[...d[9]||(d[9]=[i("OpenClaw / 飞书 ",-1)])]),_:1})]),a(t(je),{class:"my-4"}),a(t(tt),{"delay-duration":200},{default:r(()=>[e("div",Ji,[e("div",eu,[d[11]||(d[11]=e("div",null,[e("p",{class:"text-xs font-medium text-foreground/80"},"飞书应用凭证"),e("p",{class:"mt-0.5 text-[11px] text-muted-foreground/50"}," 可在飞书开放平台「凭证与基础信息」页面获取 ")],-1)),(s(!0),o(N,null,se(le.value.filter(x=>x.key==="app_id"||x.key==="app_secret"),x=>(s(),o("div",{key:x.key,class:"space-y-1.5"},[e("label",tu,[i(n(x.label)+" ",1),P(x)?(s(),o("span",su,"*")):k("",!0),x.sensitive?(s(),o("span",au,[a(t(gt),{class:"h-2.5 w-2.5"}),d[10]||(d[10]=i(" 加密存储 ",-1))])):k("",!0),x.description?(s(),_(t(Ae),{key:2},{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[a(t(Be),{class:"h-3 w-3 text-muted-foreground/30 hover:text-muted-foreground/60 transition-colors cursor-help"})]),_:1}),a(t(Pe),{side:"top",class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[i(n(x.description),1)]),_:2},1024)]),_:2},1024)):k("",!0)]),a(t(be),{"model-value":L(x.key),type:x.type==="password"?"password":"text",placeholder:x.placeholder??void 0,disabled:E(x),class:"font-mono text-sm","onUpdate:modelValue":oe=>ie(x.key,oe)},null,8,["model-value","type","placeholder","disabled","onUpdate:modelValue"]),j(x)?(s(),o("p",lu,n(j(x)),1)):k("",!0)]))),128))]),(s(!0),o(N,null,se(le.value.filter(x=>x.key!=="app_id"&&x.key!=="app_secret"&&x.type!=="switch"),x=>(s(),o("div",{key:x.key,class:"space-y-1.5"},[e("label",ou,[i(n(x.label)+" ",1),P(x)?(s(),o("span",nu,"*")):k("",!0),x.description?(s(),_(t(Ae),{key:1},{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[a(t(Be),{class:"h-3 w-3 text-muted-foreground/30 hover:text-muted-foreground/60 transition-colors cursor-help"})]),_:1}),a(t(Pe),{side:"top",class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[i(n(x.description),1)]),_:2},1024)]),_:2},1024)):k("",!0)]),a(t(be),{"model-value":L(x.key),type:x.type==="password"?"password":"text",placeholder:x.placeholder??void 0,disabled:E(x),class:"font-mono text-sm","onUpdate:modelValue":oe=>ie(x.key,oe)},null,8,["model-value","type","placeholder","disabled","onUpdate:modelValue"]),j(x)?(s(),o("p",ru,n(j(x)),1)):k("",!0)]))),128)),(s(!0),o(N,null,se(le.value.filter(x=>x.type==="switch"),x=>(s(),o("div",{key:x.key,class:"flex items-center justify-between rounded-lg border bg-muted/10 px-3 py-2.5"},[e("div",du,[e("p",iu,n(x.label),1),x.description?(s(),_(t(Ae),{key:0},{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[a(t(Be),{class:"h-3 w-3 text-muted-foreground/30 hover:text-muted-foreground/60 transition-colors cursor-help"})]),_:1}),a(t(Pe),{side:"top",class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[i(n(x.description),1)]),_:2},1024)]),_:2},1024)):k("",!0)]),a(t(Zt),{"model-value":ue(x.key),disabled:E(x),"onUpdate:modelValue":oe=>X(x.key,oe)},null,8,["model-value","disabled","onUpdate:modelValue"])]))),128)),J.value.length>0?(s(),o("div",uu,[e("button",{type:"button",class:"flex w-full items-center justify-between text-left",onClick:d[0]||(d[0]=x=>ve.value=!ve.value)},[d[12]||(d[12]=e("div",null,[e("p",{class:"text-xs font-medium uppercase tracking-wider text-muted-foreground/70"},"高级选项"),e("p",{class:"mt-1 text-[11px] text-muted-foreground/50"}," 用于宿主平台内部标识等进阶配置;通常保持默认即可。 ")],-1)),e("span",cu,n(ve.value?"收起":"展开"),1)]),ve.value?(s(),o("div",mu,[a(t(je)),(s(!0),o(N,null,se(J.value,x=>(s(),o("div",{key:x.key,class:"space-y-1.5"},[e("label",pu,[i(n(x.label)+" ",1),P(x)?(s(),o("span",fu,"*")):k("",!0),a(t(Y),{variant:"outline",class:"text-[9px] text-muted-foreground/60"},{default:r(()=>[...d[13]||(d[13]=[i("高级",-1)])]),_:1}),x.description?(s(),_(t(Ae),{key:1},{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[a(t(Be),{class:"h-3 w-3 text-muted-foreground/30 hover:text-muted-foreground/60 transition-colors cursor-help"})]),_:1}),a(t(Pe),{side:"top",class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[i(n(x.description),1)]),_:2},1024)]),_:2},1024)):k("",!0)]),x.type==="text"||x.type==="password"?(s(),_(t(be),{key:0,"model-value":L(x.key),type:x.type==="password"?"password":"text",placeholder:x.placeholder??void 0,disabled:E(x),class:"font-mono text-sm","onUpdate:modelValue":oe=>ie(x.key,oe)},null,8,["model-value","type","placeholder","disabled","onUpdate:modelValue"])):x.type==="switch"?(s(),o("div",vu,[e("div",xu,[e("p",gu,n(x.label),1),x.description?(s(),_(t(Ae),{key:0},{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[a(t(Be),{class:"h-3 w-3 text-muted-foreground/30 hover:text-muted-foreground/60 transition-colors cursor-help"})]),_:1}),a(t(Pe),{side:"top",class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[i(n(x.description),1)]),_:2},1024)]),_:2},1024)):k("",!0)]),a(t(Zt),{"model-value":ue(x.key),disabled:E(x),"onUpdate:modelValue":oe=>X(x.key,oe)},null,8,["model-value","disabled","onUpdate:modelValue"])])):k("",!0),j(x)?(s(),o("p",bu,n(j(x)),1)):k("",!0)]))),128))])):k("",!0)])):k("",!0)])]),_:1}),D.value.length>0?(s(),o("div",yu,[e("div",_u,[a(t(ye),{class:"h-4 w-4"}),d[14]||(d[14]=i(" 保存前需要处理以下问题 ",-1))]),e("ul",hu,[(s(!0),o(N,null,se(D.value,x=>(s(),o("li",{key:x,class:"flex items-start gap-1.5"},[a(t(bt),{class:"mt-0.5 h-3 w-3 shrink-0"}),e("span",null,n(x),1)]))),128))])])):k("",!0),e("div",ku,[a(t(T),{variant:"outline",class:"flex-1",disabled:G.value||z.value,onClick:Q},{default:r(()=>[...d[15]||(d[15]=[i(" 取消 ",-1)])]),_:1},8,["disabled"]),a(t(T),{class:"flex-1",disabled:G.value||z.value,onClick:R},{default:r(()=>[G.value||z.value?(s(),_(t(re),{key:0,class:"mr-1 h-4 w-4 animate-spin"})):k("",!0),i(" "+n(g.value==="create"?"创建绑定":"保存修改"),1)]),_:1},8,["disabled"])])])])):k("",!0)]))])):(s(),o("div",Ii,[a(t(at),{class:"mx-auto mb-3 h-8 w-8 text-muted-foreground/30"}),d[1]||(d[1]=e("p",{class:"text-sm font-medium text-foreground/80"},"当前通讯渠道页仅适配 OpenClaw + Feishu",-1)),e("p",qi," 当前 Agent 宿主平台为 "+n(K.value)+",暂未接入专用通讯绑定交互。 ",1)]))}}),$u=fs(wu,[["__scopeId","data-v-4ad6cddc"]]),Cu={class:"space-y-5 animate-slide-up"},Su={key:0,class:"rounded-xl border border-amber-500/20 bg-amber-500/5 p-5 text-center space-y-3"},Iu={class:"text-[11px] text-muted-foreground/40"},qu={class:"flex items-center gap-2"},Mu={key:1},Au={key:0,class:"space-y-4"},zu={class:"rounded-xl border bg-card p-5 space-y-4"},Pu={class:"flex items-center justify-between"},Tu={class:"flex items-center gap-2"},Du={key:0,class:"rounded-lg border border-amber-500/20 bg-amber-500/5 p-3"},Bu={class:"flex items-center gap-2 text-xs text-amber-300"},Vu={class:"grid gap-3 lg:grid-cols-3"},Ou={class:"rounded-lg border bg-background/50 p-3"},Eu={class:"flex items-center gap-2 mb-2"},ju={class:"space-y-2"},Ru=["value","disabled"],Fu={class:"min-w-0"},Uu={class:"block text-xs"},Lu={class:"text-muted-foreground/40"},Nu={class:"block text-[11px] text-muted-foreground/45 leading-relaxed"},Ku={class:"rounded-lg border bg-background/50 p-3"},Gu={class:"flex items-center gap-2 mb-2"},Hu={key:0,class:"py-5 text-center"},Wu={key:1,class:"rounded-md border border-dashed p-4 text-center text-xs text-muted-foreground/40"},Yu={key:2,class:"space-y-2 max-h-40 overflow-y-auto"},Xu=["value","disabled"],Qu={class:"min-w-0"},Zu={class:"block text-xs truncate"},Ju={class:"block text-[11px] text-muted-foreground/45"},ec={class:"rounded-lg border bg-background/50 p-3"},tc={class:"flex items-center gap-2 mb-2"},sc={key:0,class:"py-5 text-center"},ac={key:1,class:"rounded-md border border-dashed p-4 text-center text-xs text-muted-foreground/40"},lc={key:2,class:"space-y-2 max-h-40 overflow-y-auto"},oc=["value","disabled"],nc={class:"min-w-0"},rc={class:"block text-xs truncate"},dc={class:"block text-[11px] text-muted-foreground/45"},ic={class:"rounded-xl border bg-card p-5"},uc={class:"flex items-center gap-2 mb-3"},cc={class:"grid grid-cols-1 gap-3 sm:grid-cols-3"},mc={class:"space-y-1.5"},pc={class:"flex items-center gap-1 text-xs text-muted-foreground/60"},fc={type:"button",class:"inline-flex items-center justify-center h-4 w-4 rounded-full text-muted-foreground/30 hover:text-muted-foreground/60 hover:bg-muted/30 transition-colors"},vc={class:"space-y-1.5"},xc={class:"flex items-center gap-1 text-xs text-muted-foreground/60"},gc={type:"button",class:"inline-flex items-center justify-center h-4 w-4 rounded-full text-muted-foreground/30 hover:text-muted-foreground/60 hover:bg-muted/30 transition-colors"},bc={class:"space-y-1.5"},yc={class:"flex items-center gap-1 text-xs text-muted-foreground/60"},_c={type:"button",class:"inline-flex items-center justify-center h-4 w-4 rounded-full text-muted-foreground/30 hover:text-muted-foreground/60 hover:bg-muted/30 transition-colors"},hc={class:"rounded-xl border bg-card p-5"},kc={class:"flex items-center justify-between mb-2"},wc={class:"flex items-center gap-2"},$c={key:0,class:"mt-3 space-y-1.5 animate-slide-up"},Cc={class:"flex items-center gap-2 flex-wrap mb-2"},Sc={class:"text-[11px] text-muted-foreground/40"},Ic={key:0,class:"rounded-md border border-rose-500/20 bg-rose-500/5 p-2 mb-2"},qc={key:1,class:"text-center text-xs text-muted-foreground/40 py-3"},Mc={class:"min-w-0 flex-1"},Ac={class:"text-xs truncate"},zc={class:"text-[11px] text-muted-foreground/40"},Pc={key:0,class:"rounded-xl border border-amber-500/30 bg-amber-500/5 p-4 space-y-3 animate-slide-up"},Tc={class:"flex items-start gap-3"},Dc={class:"min-w-0 flex-1"},Bc={class:"text-xs text-muted-foreground/60 mt-1 leading-relaxed"},Vc={class:"mt-2 flex flex-wrap gap-3 text-[11px] text-muted-foreground/50"},Oc={key:0},Ec={class:"flex items-center justify-end gap-2"},jc={class:"flex justify-end"},Rc={key:1,class:"space-y-4"},Fc={class:"rounded-xl border bg-card p-5 space-y-4"},Uc={class:"flex items-center justify-between"},Lc={class:"flex items-center gap-2"},Nc={key:0,class:"space-y-1.5"},Kc={class:"flex items-center gap-2 flex-wrap mb-1"},Gc={class:"text-[11px] text-muted-foreground/40"},Hc={key:0,class:"rounded-md border border-rose-500/20 bg-rose-500/5 p-2 mb-1"},Wc={class:"min-w-0 flex-1"},Yc={class:"text-xs truncate"},Xc={class:"text-[11px] text-muted-foreground/40"},Qc={key:1,class:"flex items-center gap-2 py-4"},Zc={key:2,class:"space-y-3"},Jc={class:"space-y-1"},em={class:"rounded-lg bg-muted/30 border p-3 text-xs whitespace-pre-wrap break-all max-h-28 overflow-y-auto leading-relaxed"},tm={class:"space-y-1"},sm={class:"relative"},am={class:"rounded-lg bg-muted/30 border p-3 text-xs font-mono whitespace-pre-wrap break-all max-h-20 overflow-y-auto leading-relaxed pr-10"},lm={class:"text-[11px] text-muted-foreground/40"},om={key:0,class:"mt-2 relative animate-slide-up"},nm={class:"rounded-lg bg-muted/30 border p-3 text-[11px] font-mono whitespace-pre break-all max-h-72 overflow-auto leading-relaxed pr-10"},rm={key:1,class:"text-xs text-rose-400 mt-1"},dm={key:3,class:"rounded-lg border border-rose-500/20 bg-rose-500/5 p-3 flex items-center justify-between"},im={class:"flex items-center gap-2 text-xs text-rose-300"},um={class:"flex justify-end"},cm={key:2,class:"space-y-4"},mm={class:"rounded-xl border border-sky-500/20 bg-sky-500/5 p-5 space-y-2"},pm={class:"flex items-center gap-3"},fm={key:0,class:"flex flex-wrap items-center gap-2 text-[11px] text-muted-foreground/40 pl-8"},vm={key:0},xm={key:1,class:"text-[11px] text-amber-400 pl-8"},gm={class:"rounded-xl border bg-card p-5 space-y-3"},bm={class:"flex items-center justify-between"},ym={class:"flex items-center gap-2"},_m={key:0,class:"flex items-center gap-2 py-2"},hm={key:1,class:"space-y-3"},km={class:"space-y-1"},wm={class:"rounded-lg bg-muted/30 border p-3 text-xs whitespace-pre-wrap break-all max-h-28 overflow-y-auto leading-relaxed"},$m={class:"space-y-1"},Cm={class:"relative"},Sm={class:"rounded-lg bg-muted/30 border p-3 text-xs font-mono whitespace-pre-wrap break-all max-h-20 overflow-y-auto leading-relaxed pr-10"},Im={class:"text-[11px] text-muted-foreground/40"},qm={key:2,class:"text-xs text-muted-foreground/40 py-1"},Mm={key:0,class:"mt-2 relative animate-slide-up"},Am={class:"rounded-lg bg-muted/30 border p-3 text-[11px] font-mono whitespace-pre break-all max-h-72 overflow-auto leading-relaxed pr-10"},zm={key:1,class:"text-xs text-rose-400 mt-1"},Pm={key:1,class:"rounded-xl border border-emerald-500/20 bg-emerald-500/5 p-6 text-center space-y-3"},Tm={class:"h-12 w-12 rounded-full bg-emerald-500/20 flex items-center justify-center mx-auto"},Dm={class:"text-[11px] text-muted-foreground/40"},Bm={key:2,class:"rounded-xl border border-rose-500/20 bg-rose-500/5 p-6 text-center space-y-3"},Vm={key:0,class:"text-xs text-rose-300 break-all text-left bg-rose-500/10 rounded-lg p-3"},Om={key:3,class:"rounded-xl border border-amber-500/20 bg-amber-500/5 p-6 text-center space-y-3"},Em=ne({__name:"OnboardingWizard",props:{agentId:{},agent:{},deploymentState:{},disabled:{type:Boolean}},emits:["completed"],setup(l,{emit:h}){const p=l,I=h,m=b(1),y=b([]),$=b([]),w=b(!1),q=b(""),A=[{key:"system_prompt",artifact:"AGENTS.md",label:"工作规则",description:"写入 OpenClaw 工作目录的 AGENTS.md。"},{key:"persona_prompt",artifact:"SOUL.md",label:"人格设定",description:"写入 OpenClaw 工作目录的 SOUL.md。"},{key:"identity",artifact:"IDENTITY.md",label:"身份信息",description:"写入 OpenClaw 工作目录的 IDENTITY.md。"}],v=b(A.map(f=>f.key)),g=b([]),S=b([]);async function G(){w.value=!0,q.value="";try{const[f,d]=await Promise.allSettled([Xe.list(p.agentId),Ue.list(p.agentId)]);y.value=f.status==="fulfilled"?f.value.data:[],$.value=d.status==="fulfilled"?d.value.data:[],g.value=y.value.map(x=>x.id),S.value=$.value.map(x=>x.id),(f.status==="rejected"||d.status==="rejected")&&(q.value="部分资源加载失败,请刷新后重试。")}finally{w.value=!1}}const z=b(3600),H=b(86400),D=b(1800),M=b(!1),K=b(null);async function W(){M.value=!0;try{const f=await we.previewDeploy(p.agentId,{script_intent:"bootstrap",prompt_artifact_keys:[...v.value],schedule_ids:[...g.value],comm_binding_ids:[...S.value]});K.value=f.data.changeset}catch{de.error("预检变更失败")}finally{M.value=!1}}const O=b(!1),F=b(null),te=b(null),le=b(!1),J=b(null),me=b(null);function fe(){return A.filter(f=>v.value.includes(f.key)).map(f=>f.artifact)}const ve=ce(()=>{const f=y.value.length>0&&g.value.length>0&&g.value.length!==y.value.length,d=$.value.length>0&&S.value.length>0&&S.value.length!==$.value.length;return f||d});async function Z(f=!1){if(v.value.length===0){de.error("至少需要选择一个 Prompt 文件。");return}O.value=!0,me.value=null;try{const d=await we.createDeployScript(p.agentId,{script_intent:"bootstrap",prompt_artifact_keys:[...v.value],schedule_ids:[...g.value],comm_binding_ids:[...S.value],register_ttl_seconds:z.value,download_ttl_seconds:H.value,snapshot_timeout_seconds:D.value,replace_pending_snapshot:f});F.value=d.data.snapshot_id,te.value=d.data.changeset,le.value=!0;try{const x=await we.getOnboardingMessage(p.agentId,{selected_artifacts:fe(),include_schedule:g.value.length>0,include_comm_bindings:S.value.length>0,download_ttl_seconds:H.value});J.value=x.data}catch{de.warning("快照已创建,但生成接入指令失败,请稍后重试。")}finally{le.value=!1}ve.value&&de.warning("定时任务或通讯渠道存在部分选择,接入脚本将包含全部已启用的资源;精确 diff 以下方变更清单为准。"),m.value=2}catch(d){const x=d?.response;if(x?.status===409){const We=x.data?.detail;if(We?.error_code==="DEPLOYMENT_SNAPSHOT_CONFLICT"){me.value=We;return}}const oe=x?.data?.detail??"创建部署快照失败";de.error(oe)}finally{O.value=!1}}async function V(){if(F.value){le.value=!0;try{const f=await we.getOnboardingMessage(p.agentId,{selected_artifacts:fe(),include_schedule:g.value.length>0,include_comm_bindings:S.value.length>0,download_ttl_seconds:H.value});J.value=f.data}catch{de.error("重试获取接入指令失败")}finally{le.value=!1}}}function Q(){m.value=1,F.value=null,te.value=null,J.value=null,K.value=null,me.value=null,L.value=!1,ie.value=null,X.value="",ge()}const C=b(null);async function B(f,d){await navigator.clipboard.writeText(f),C.value=d,setTimeout(()=>{C.value=null},2e3)}const L=b(!1),ie=b(null),ue=b(!1),X=b("");async function P(){if(ie.value){L.value=!L.value;return}L.value=!0,ue.value=!0,X.value="";try{const f=await we.getBootstrapScript(p.agentId,{selected_artifacts:fe(),include_schedule:g.value.length>0,include_comm_bindings:S.value.length>0,register_ttl_seconds:z.value});ie.value=f.data.script}catch{X.value="加载完整脚本失败",L.value=!1}finally{ue.value=!1}}const E=b(null),j=b("");let U=null,ee=!1;function ge(){U!==null&&(clearInterval(U),U=null),ee=!1}async function qe(){if(ee||!F.value)return;const f=p.agentId,d=F.value;ee=!0;try{const x=await we.listDeploymentSnapshots(f);if(p.agentId!==f||F.value!==d)return;const oe=x.data.find(We=>We.id===d);if(!oe)return;E.value=oe,(oe.status==="confirmed"||oe.status==="failed"||oe.status==="timeout")&&ge()}catch{j.value="轮询状态失败,将继续重试…"}finally{ee=!1}}function Me(){ge(),E.value=null,j.value="",qe(),U=setInterval(()=>{qe()},5e3)}function He(){m.value=3,Me()}async function Fe(){try{const d=(await we.listDeploymentSnapshots(p.agentId)).data.find(x=>x.script_intent==="bootstrap"&&x.status==="pending");d&&(F.value=d.id,E.value=d,m.value=3,Me())}catch{}}Ie(async()=>{await G(),await Fe()}),$e(()=>p.agentId,()=>{ge(),m.value=1,F.value=null,te.value=null,J.value=null,K.value=null,E.value=null,L.value=!1,ie.value=null,X.value="",G(),Fe()}),Lt(()=>ge());function Se(f){if(!f)return"—";try{return new Date(f).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return f}}function R(f){return f==="add"?"text-emerald-400 border-emerald-500/20 bg-emerald-500/5":f==="update"?"text-sky-400 border-sky-500/20 bg-sky-500/5":f==="remove"?"text-rose-400 border-rose-500/20 bg-rose-500/5":""}function u(f){return f==="add"?"新增":f==="update"?"更新":f==="remove"?"删除":f}function c(f){return f==="prompt"?"Prompt":f==="schedule"?"定时任务":f==="comm_binding"?"通讯渠道":f}return(f,d)=>(s(),o("div",Cu,[l.deploymentState.deploy_ready?(s(),o(N,{key:1},[e("div",qu,[(s(),o(N,null,se(["配置参数","执行接入","等待回传"],(x,oe)=>e("div",{key:oe,class:"flex items-center gap-1.5"},[e("div",{class:ae(["h-5 w-5 rounded-full flex items-center justify-center text-[10px] font-bold shrink-0",m.value===oe+1?"bg-primary text-primary-foreground":m.value>oe+1?"bg-emerald-500 text-white":"bg-muted/40 text-muted-foreground/40"])},[m.value>oe+1?(s(),_(t(ke),{key:0,class:"h-3 w-3"})):(s(),o("span",Mu,n(oe+1),1))],2),e("span",{class:ae(["text-xs",m.value===oe+1?"text-foreground font-medium":"text-muted-foreground/40"])},n(x),3),oe<2?(s(),_(t(bt),{key:0,class:"h-3.5 w-3.5 text-muted-foreground/30 shrink-0"})):k("",!0)])),64))]),m.value===1?(s(),o("div",Au,[e("div",zu,[e("div",Pu,[e("div",null,[e("div",Tu,[a(t(jt),{class:"h-4 w-4 text-emerald-400"}),d[18]||(d[18]=e("span",{class:"text-sm font-semibold"},"部署资源",-1))]),d[19]||(d[19]=e("p",{class:"text-xs text-muted-foreground/60 mt-1 leading-relaxed"}," 选择本次要写入 OpenClaw 的资源文件和配置。 ",-1))]),a(t(T),{variant:"outline",size:"sm",class:"h-8 gap-1.5 text-xs shrink-0",disabled:w.value,onClick:G},{default:r(()=>[a(t(Qe),{class:ae(["h-3 w-3",w.value?"animate-spin":""])},null,8,["class"]),d[20]||(d[20]=i(" 刷新 ",-1))]),_:1},8,["disabled"])]),q.value?(s(),o("div",Du,[e("div",Bu,[a(t(ye),{class:"h-3.5 w-3.5"}),i(" "+n(q.value),1)])])):k("",!0),e("div",Vu,[e("div",Ou,[e("div",Eu,[a(t(Oe),{class:"h-3.5 w-3.5 text-muted-foreground/60"}),d[21]||(d[21]=e("span",{class:"text-xs font-medium"},"Prompt 文件",-1)),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(v.value.length)+"/"+n(A.length),1)]),_:1})]),e("div",ju,[(s(),o(N,null,se(A,x=>e("label",{key:x.key,class:"flex items-start gap-2 rounded-md border border-transparent p-2 hover:bg-muted/30 cursor-pointer"},[_e(e("input",{"onUpdate:modelValue":d[0]||(d[0]=oe=>v.value=oe),type:"checkbox",value:x.key,class:"mt-0.5 accent-primary",disabled:l.disabled,onChange:d[1]||(d[1]=oe=>K.value=null)},null,40,Ru),[[et,v.value]]),e("span",Fu,[e("span",Uu,[i(n(x.label)+" ",1),e("span",Lu,n(x.artifact),1)]),e("span",Nu,n(x.description),1)])])),64))])]),e("div",Ku,[e("div",Gu,[a(t(Ee),{class:"h-3.5 w-3.5 text-muted-foreground/60"}),d[22]||(d[22]=e("span",{class:"text-xs font-medium"},"定时任务",-1)),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(g.value.length)+"/"+n(y.value.length),1)]),_:1})]),w.value?(s(),o("div",Hu,[a(t(re),{class:"h-4 w-4 animate-spin text-muted-foreground mx-auto"})])):y.value.length===0?(s(),o("div",Wu," 暂无定时任务 ")):(s(),o("div",Yu,[(s(!0),o(N,null,se(y.value,x=>(s(),o("label",{key:x.id,class:"flex items-start gap-2 rounded-md border border-transparent p-2 hover:bg-muted/30 cursor-pointer"},[_e(e("input",{"onUpdate:modelValue":d[2]||(d[2]=oe=>g.value=oe),type:"checkbox",value:x.id,class:"mt-0.5 accent-primary",disabled:l.disabled,onChange:d[3]||(d[3]=oe=>K.value=null)},null,40,Xu),[[et,g.value]]),e("span",Qu,[e("span",Zu,n(x.name),1),e("span",Ju,[i(n(x.schedule_type)+" · "+n(x.schedule_expr)+" ",1),e("span",{class:ae(x.enabled?"text-emerald-400":"text-muted-foreground/40")}," · "+n(x.enabled?"启用":"停用"),3)])])]))),128))]))]),e("div",ec,[e("div",tc,[a(t(at),{class:"h-3.5 w-3.5 text-muted-foreground/60"}),d[23]||(d[23]=e("span",{class:"text-xs font-medium"},"通讯渠道",-1)),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(S.value.length)+"/"+n($.value.length),1)]),_:1})]),w.value?(s(),o("div",sc,[a(t(re),{class:"h-4 w-4 animate-spin text-muted-foreground mx-auto"})])):$.value.length===0?(s(),o("div",ac," 暂无飞书绑定 ")):(s(),o("div",lc,[(s(!0),o(N,null,se($.value,x=>(s(),o("label",{key:x.id,class:"flex items-start gap-2 rounded-md border border-transparent p-2 hover:bg-muted/30 cursor-pointer"},[_e(e("input",{"onUpdate:modelValue":d[4]||(d[4]=oe=>S.value=oe),type:"checkbox",value:x.id,class:"mt-0.5 accent-primary",disabled:l.disabled,onChange:d[5]||(d[5]=oe=>K.value=null)},null,40,oc),[[et,S.value]]),e("span",nc,[e("span",rc,n(x.account_name||x.account_id),1),e("span",dc,[i(" feishu · "+n(x.account_id)+" ",1),e("span",{class:ae(x.enabled?"text-emerald-400":"text-muted-foreground/40")}," · "+n(x.enabled?"启用":"停用"),3)])])]))),128))]))])])]),e("div",ic,[e("div",uc,[a(t(Ee),{class:"h-4 w-4 text-muted-foreground/60"}),d[24]||(d[24]=e("span",{class:"text-sm font-semibold"},"有效期配置",-1))]),e("div",cc,[e("label",mc,[e("span",pc,[d[26]||(d[26]=i(" 注册 Token(秒) ",-1)),a(t(tt),{"delay-duration":200},{default:r(()=>[a(t(Ae),null,{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[e("button",fc,[a(t(ft),{class:"h-3 w-3"})])]),_:1}),a(t(Pe),{side:"top","side-offset":4,class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[...d[25]||(d[25]=[i(" 脚本执行期间向后端注册运行态 Agent 身份的 Token 有效期。默认 3600 秒(1 小时),最小 60 秒。 ",-1)])]),_:1})]),_:1})]),_:1})]),a(t(be),{modelValue:z.value,"onUpdate:modelValue":d[6]||(d[6]=x=>z.value=x),modelModifiers:{number:!0},type:"number",min:"60",class:"h-9 text-sm",disabled:l.disabled},null,8,["modelValue","disabled"])]),e("label",vc,[e("span",xc,[d[28]||(d[28]=i(" 下载 Token(秒) ",-1)),a(t(tt),{"delay-duration":200},{default:r(()=>[a(t(Ae),null,{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[e("button",gc,[a(t(ft),{class:"h-3 w-3"})])]),_:1}),a(t(Pe),{side:"top","side-offset":4,class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[...d[27]||(d[27]=[i(" 接入说明 curl 命令用于下载脚本的临时 Token 有效期。默认 86400 秒(24 小时),最小 60 秒。 ",-1)])]),_:1})]),_:1})]),_:1})]),a(t(be),{modelValue:H.value,"onUpdate:modelValue":d[7]||(d[7]=x=>H.value=x),modelModifiers:{number:!0},type:"number",min:"60",class:"h-9 text-sm",disabled:l.disabled},null,8,["modelValue","disabled"])]),e("label",bc,[e("span",yc,[d[30]||(d[30]=i(" 快照超时(秒) ",-1)),a(t(tt),{"delay-duration":200},{default:r(()=>[a(t(Ae),null,{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[e("button",_c,[a(t(ft),{class:"h-3 w-3"})])]),_:1}),a(t(Pe),{side:"top","side-offset":4,class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[...d[29]||(d[29]=[i(" 快照等待回传的时间上限,超时后后端标记为 timeout。默认 1800 秒(30 分钟),范围 60 ~ 86400 秒。 ",-1)])]),_:1})]),_:1})]),_:1})]),a(t(be),{modelValue:D.value,"onUpdate:modelValue":d[8]||(d[8]=x=>D.value=x),modelModifiers:{number:!0},type:"number",min:"60",max:"86400",class:"h-9 text-sm",disabled:l.disabled},null,8,["modelValue","disabled"])])])]),e("div",hc,[e("div",kc,[e("div",wc,[a(t(vt),{class:"h-4 w-4 text-muted-foreground/60"}),d[31]||(d[31]=e("span",{class:"text-sm font-semibold"},"变更预检",-1)),d[32]||(d[32]=e("span",{class:"text-xs text-muted-foreground/40"},"(可选)",-1))]),a(t(T),{variant:"outline",size:"sm",class:"h-8 gap-1.5 text-xs",disabled:M.value||l.disabled,onClick:W},{default:r(()=>[M.value?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(jt),{key:1,class:"h-3 w-3"})),d[33]||(d[33]=i(" 预检变更 ",-1))]),_:1},8,["disabled"])]),d[36]||(d[36]=e("p",{class:"text-xs text-muted-foreground/50 leading-relaxed"}," 生成快照前可先预检资源级变更清单,了解本次部署的具体内容。不预检也可直接生成。 ",-1)),K.value?(s(),o("div",$c,[e("div",Cc,[K.value.is_valid?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[10px] text-emerald-400 border-emerald-500/20"},{default:r(()=>[...d[34]||(d[34]=[i("校验通过",-1)])]),_:1})):(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-rose-400 border-rose-500/20"},{default:r(()=>[...d[35]||(d[35]=[i("校验失败",-1)])]),_:1})),e("span",Sc,n(K.value.items.length)+" 项变更",1)]),K.value.validation_errors.length?(s(),o("div",Ic,[(s(!0),o(N,null,se(K.value.validation_errors,x=>(s(),o("div",{key:x,class:"text-xs text-rose-300"},n(x),1))),128))])):k("",!0),K.value.items.length===0?(s(),o("div",qc,"暂无变更")):k("",!0),(s(!0),o(N,null,se(K.value.items,(x,oe)=>(s(),o("div",{key:`${x.resource_type}-${x.resource_id??x.resource_key}-${oe}`,class:"flex items-center gap-3 rounded-md border bg-background/70 px-3 py-2"},[a(t(Y),{variant:"outline",class:ae(["text-[10px]",R(x.change_type)])},{default:r(()=>[i(n(u(x.change_type)),1)]),_:2},1032,["class"]),e("div",Mc,[e("div",Ac,n(x.label),1),e("div",zc,n(c(x.resource_type)),1)])]))),128))])):k("",!0)]),me.value?(s(),o("div",Pc,[e("div",Tc,[a(t(ye),{class:"h-4 w-4 text-amber-400 shrink-0 mt-0.5"}),e("div",Dc,[d[38]||(d[38]=e("p",{class:"text-sm font-medium text-amber-300"},"存在未完成的部署快照",-1)),e("p",Bc,n(me.value.message),1),e("div",Vc,[e("span",null,"快照 "+n(me.value.conflict_snapshot.id.slice(0,8))+"…",1),e("span",null,"创建于 "+n(Se(me.value.conflict_snapshot.created_at)),1),me.value.conflict_snapshot.expires_at?(s(),o("span",Oc,"超时截止 "+n(Se(me.value.conflict_snapshot.expires_at)),1)):k("",!0),me.value.conflict_snapshot.is_likely_timeout?(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-amber-400 border-amber-500/20"},{default:r(()=>[...d[37]||(d[37]=[i("疑似已超时",-1)])]),_:1})):k("",!0)])])]),e("div",Ec,[a(t(T),{variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:d[9]||(d[9]=x=>me.value=null)},{default:r(()=>[...d[39]||(d[39]=[i(" 取消 ",-1)])]),_:1}),a(t(T),{size:"sm",class:"h-7 text-xs gap-1.5 bg-amber-600 hover:bg-amber-500 text-white",disabled:O.value,onClick:d[10]||(d[10]=x=>Z(!0))},{default:r(()=>[O.value?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):k("",!0),d[40]||(d[40]=i(" 确认替换,重新生成 ",-1))]),_:1},8,["disabled"])])])):k("",!0),e("div",jc,[a(t(T),{size:"lg",class:"gap-2 bg-primary",disabled:O.value||l.disabled,onClick:d[11]||(d[11]=x=>Z())},{default:r(()=>[O.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin"})):(s(),_(t(us),{key:1,class:"h-4 w-4"})),i(" "+n(O.value?"生成中…":"生成 Bootstrap 快照"),1)]),_:1},8,["disabled"])])])):m.value===2?(s(),o("div",Rc,[e("div",Fc,[e("div",Uc,[e("div",Lc,[a(t(vt),{class:"h-4 w-4 text-emerald-400"}),d[42]||(d[42]=e("span",{class:"text-sm font-semibold"},"接入指令",-1)),a(t(Y),{variant:"outline",class:"text-[10px] text-emerald-400 border-emerald-500/20"},{default:r(()=>[...d[41]||(d[41]=[i("快照已创建",-1)])]),_:1})]),e("button",{type:"button",class:"flex items-center gap-1 text-xs text-muted-foreground/50 hover:text-muted-foreground transition-colors",onClick:Q},[a(t(Kt),{class:"h-3.5 w-3.5"}),d[43]||(d[43]=i(" 重新生成 ",-1))])]),d[52]||(d[52]=e("p",{class:"text-xs text-muted-foreground/60 leading-relaxed"}," 将下方 curl 命令发送给要接入的机器执行者,等待脚本在目标机器上执行并回传结果。 ",-1)),te.value?(s(),o("div",Nc,[d[46]||(d[46]=e("div",{class:"text-[11px] text-muted-foreground/50 font-medium"},"变更清单",-1)),e("div",Kc,[te.value.is_valid?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[10px] text-emerald-400 border-emerald-500/20"},{default:r(()=>[...d[44]||(d[44]=[i("校验通过",-1)])]),_:1})):(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-rose-400 border-rose-500/20"},{default:r(()=>[...d[45]||(d[45]=[i("校验失败",-1)])]),_:1})),e("span",Gc,"快照 "+n(F.value),1)]),te.value.validation_errors.length?(s(),o("div",Hc,[(s(!0),o(N,null,se(te.value.validation_errors,x=>(s(),o("div",{key:x,class:"text-xs text-rose-300"},n(x),1))),128))])):k("",!0),(s(!0),o(N,null,se(te.value.items,(x,oe)=>(s(),o("div",{key:`${x.resource_type}-${x.resource_id??x.resource_key}-${oe}`,class:"flex items-center gap-3 rounded-md border bg-background/70 px-3 py-2"},[a(t(Y),{variant:"outline",class:ae(["text-[10px]",R(x.change_type)])},{default:r(()=>[i(n(u(x.change_type)),1)]),_:2},1032,["class"]),e("div",Wc,[e("div",Yc,n(x.label),1),e("div",Xc,n(c(x.resource_type)),1)])]))),128))])):k("",!0),a(t(je)),le.value?(s(),o("div",Qc,[a(t(re),{class:"h-4 w-4 animate-spin text-muted-foreground"}),d[47]||(d[47]=e("span",{class:"text-xs text-muted-foreground/60"},"正在生成接入指令…",-1))])):J.value?(s(),o("div",Zc,[e("div",Jc,[d[48]||(d[48]=e("div",{class:"text-[11px] text-muted-foreground/50 font-medium"},"接入说明",-1)),e("pre",em,n(J.value.message),1)]),e("div",tm,[d[49]||(d[49]=e("div",{class:"text-[11px] text-muted-foreground/50 font-medium"},"curl 下载命令",-1)),e("div",sm,[e("pre",am,n(J.value.curl_command),1),a(t(T),{variant:"ghost",size:"icon",class:"absolute top-2 right-2 h-6 w-6 bg-background/80 backdrop-blur-sm",onClick:d[12]||(d[12]=x=>B(J.value.curl_command,"curl"))},{default:r(()=>[C.value==="curl"?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"}))]),_:1})])]),e("p",lm," 下载 Token 过期:"+n(Se(J.value.download_token_expires_at)),1),e("div",null,[e("button",{type:"button",class:"flex items-center gap-1.5 text-xs text-muted-foreground/50 hover:text-muted-foreground transition-colors",onClick:P},[ue.value?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(Oe),{key:1,class:"h-3 w-3"})),i(" "+n(L.value&&ie.value?"收起完整脚本":"查看完整 Shell 脚本"),1)]),L.value&&ie.value?(s(),o("div",om,[e("pre",nm,n(ie.value),1),a(t(T),{variant:"ghost",size:"icon",class:"absolute top-2 right-2 h-6 w-6 bg-background/80 backdrop-blur-sm",onClick:d[13]||(d[13]=x=>B(ie.value,"full-script"))},{default:r(()=>[C.value==="full-script"?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"}))]),_:1})])):k("",!0),X.value?(s(),o("p",rm,n(X.value),1)):k("",!0)])])):(s(),o("div",dm,[e("div",im,[a(t(ye),{class:"h-3.5 w-3.5 shrink-0"}),d[50]||(d[50]=i(" 快照已创建,但获取接入指令失败。 ",-1))]),a(t(T),{variant:"outline",size:"sm",class:"h-7 text-xs ml-3 shrink-0",disabled:le.value,onClick:V},{default:r(()=>[...d[51]||(d[51]=[i(" 重试 ",-1)])]),_:1},8,["disabled"])]))]),e("div",um,[a(t(T),{size:"lg",class:"gap-2",disabled:!F.value,onClick:He},{default:r(()=>[a(t(ke),{class:"h-4 w-4"}),d[53]||(d[53]=i(" 我已执行脚本,等待回传 ",-1))]),_:1},8,["disabled"])])])):m.value===3?(s(),o("div",cm,[!E.value||E.value.status==="pending"?(s(),o(N,{key:0},[e("div",mm,[e("div",pm,[a(t(re),{class:"h-5 w-5 animate-spin text-sky-400 shrink-0"}),d[54]||(d[54]=e("div",null,[e("p",{class:"text-sm font-medium"},"等待目标机器回传…"),e("p",{class:"text-xs text-muted-foreground/60 mt-0.5"}," 脚本在目标机器执行后会自动回传结果,每 5 秒自动刷新一次状态。 ")],-1))]),E.value?(s(),o("div",fm,[e("span",null,"快照 "+n(E.value.id),1),E.value.expires_at?(s(),o("span",vm,"· 超时截止:"+n(Se(E.value.expires_at)),1)):k("",!0),E.value.is_likely_timeout?(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-amber-400 border-amber-500/20"},{default:r(()=>[...d[55]||(d[55]=[i(" 疑似已超时,可重新生成 ",-1)])]),_:1})):k("",!0)])):k("",!0),j.value?(s(),o("p",xm,n(j.value),1)):k("",!0),e("button",{type:"button",class:"text-xs text-muted-foreground/40 hover:text-muted-foreground transition-colors pl-8",onClick:Q}," 重新生成快照 ")]),e("div",gm,[e("div",bm,[e("div",ym,[a(t(vt),{class:"h-4 w-4 text-muted-foreground/60"}),d[56]||(d[56]=e("span",{class:"text-sm font-semibold"},"接入指令",-1)),d[57]||(d[57]=e("span",{class:"text-xs text-muted-foreground/40"},"(等待期间可随时参考)",-1))]),!J.value&&!le.value?(s(),_(t(T),{key:0,variant:"ghost",size:"sm",class:"h-7 text-xs gap-1",onClick:V},{default:r(()=>[a(t(Qe),{class:"h-3 w-3"}),d[58]||(d[58]=i(" 重新获取 ",-1))]),_:1})):k("",!0)]),le.value?(s(),o("div",_m,[a(t(re),{class:"h-3.5 w-3.5 animate-spin text-muted-foreground"}),d[59]||(d[59]=e("span",{class:"text-xs text-muted-foreground/60"},"正在获取接入指令…",-1))])):J.value?(s(),o("div",hm,[e("div",km,[d[60]||(d[60]=e("div",{class:"text-[11px] text-muted-foreground/50 font-medium"},"接入说明",-1)),e("pre",wm,n(J.value.message),1)]),e("div",$m,[d[61]||(d[61]=e("div",{class:"text-[11px] text-muted-foreground/50 font-medium"},"curl 下载命令",-1)),e("div",Cm,[e("pre",Sm,n(J.value.curl_command),1),a(t(T),{variant:"ghost",size:"icon",class:"absolute top-2 right-2 h-6 w-6 bg-background/80 backdrop-blur-sm",onClick:d[14]||(d[14]=x=>B(J.value.curl_command,"curl"))},{default:r(()=>[C.value==="curl"?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"}))]),_:1})])]),e("p",Im," 下载 Token 过期:"+n(Se(J.value.download_token_expires_at)),1)])):(s(),o("div",qm,' 接入指令暂不可用,请点击"重新获取"。 ')),a(t(je)),e("div",null,[e("button",{type:"button",class:"flex items-center gap-1.5 text-xs text-muted-foreground/50 hover:text-muted-foreground transition-colors",onClick:P},[ue.value?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(Oe),{key:1,class:"h-3 w-3"})),i(" "+n(L.value&&ie.value?"收起完整脚本":"查看完整 Shell 脚本"),1)]),L.value&&ie.value?(s(),o("div",Mm,[e("pre",Am,n(ie.value),1),a(t(T),{variant:"ghost",size:"icon",class:"absolute top-2 right-2 h-6 w-6 bg-background/80 backdrop-blur-sm",onClick:d[15]||(d[15]=x=>B(ie.value,"full-script"))},{default:r(()=>[C.value==="full-script"?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"}))]),_:1})])):k("",!0),X.value?(s(),o("p",zm,n(X.value),1)):k("",!0)])])],64)):E.value?.status==="confirmed"?(s(),o("div",Pm,[e("div",Tm,[a(t(ke),{class:"h-6 w-6 text-emerald-400"})]),d[63]||(d[63]=e("div",null,[e("p",{class:"text-base font-semibold text-emerald-400"},"首次接入成功!"),e("p",{class:"text-xs text-muted-foreground/60 mt-1 leading-relaxed"},' Agent 运行态已成功注册,后续可在"同步变更"面板管理配置更新。 ')],-1)),e("p",Dm," 确认时间:"+n(Se(E.value.confirmed_at)),1),a(t(T),{onClick:d[16]||(d[16]=x=>I("completed")),class:"mt-2"},{default:r(()=>[...d[62]||(d[62]=[i(" 进入同步变更管理 ",-1)])]),_:1})])):E.value?.status==="failed"?(s(),o("div",Bm,[a(t(ye),{class:"h-8 w-8 mx-auto text-rose-400"}),d[65]||(d[65]=e("div",null,[e("p",{class:"text-sm font-medium text-rose-400"},"部署失败"),e("p",{class:"text-xs text-muted-foreground/60 mt-1"},"请检查错误信息后重新生成快照。")],-1)),E.value.failure_detail_json?(s(),o("p",Vm,n(E.value.failure_detail_json),1)):k("",!0),a(t(T),{variant:"outline",onClick:Q},{default:r(()=>[...d[64]||(d[64]=[i("重新生成快照",-1)])]),_:1})])):E.value?.status==="timeout"?(s(),o("div",Om,[a(t(Ee),{class:"h-8 w-8 mx-auto text-amber-400"}),d[67]||(d[67]=e("div",null,[e("p",{class:"text-sm font-medium text-amber-400"},"等待超时"),e("p",{class:"text-xs text-muted-foreground/60 mt-1 leading-relaxed"}," 目标机器在有效期内未回传结果。请确认脚本已在目标机器正确执行,或重新生成快照。 ")],-1)),a(t(T),{variant:"outline",onClick:Q},{default:r(()=>[...d[66]||(d[66]=[i("重新生成快照",-1)])]),_:1})])):k("",!0)])):k("",!0)],64)):(s(),o("div",Su,[a(t(ye),{class:"h-8 w-8 mx-auto text-amber-400"}),d[17]||(d[17]=e("div",null,[e("p",{class:"text-sm font-medium"},"请先完善平台配置"),e("p",{class:"text-xs text-muted-foreground/60 mt-1 leading-relaxed"}," 首次接入需要先完成平台配置(宿主机信息等前置条件),再回来生成部署脚本。 ")],-1)),e("p",Iu,n(l.deploymentState.message),1)]))]))}}),jm={class:"space-y-5 animate-slide-up"},Rm={class:"rounded-xl border bg-card p-5"},Fm={class:"flex items-center gap-3"},Um={class:"flex-1 min-w-0"},Lm={class:"text-sm font-semibold"},Nm={class:"text-xs text-muted-foreground/60 mt-0.5 leading-relaxed"},Km={class:"text-right shrink-0"},Gm={class:"text-sm font-bold"},Hm={key:0,class:"rounded-xl border border-dashed border-emerald-500/20 bg-emerald-500/5 p-6 text-center space-y-2"},Wm={key:0,class:"space-y-4"},Ym={class:"rounded-xl border bg-card p-5 space-y-4"},Xm={class:"flex items-center justify-between"},Qm={class:"flex items-center gap-2"},Zm={key:0,class:"rounded-lg border border-amber-500/20 bg-amber-500/5 p-3"},Jm={class:"flex items-center gap-2 text-xs text-amber-300"},ep={class:"grid gap-3 lg:grid-cols-3"},tp={class:"rounded-lg border bg-background/50 p-3"},sp={class:"flex items-center gap-2 mb-2"},ap={class:"space-y-2"},lp=["value","disabled"],op={class:"min-w-0"},np={class:"block text-xs"},rp={class:"text-muted-foreground/40"},dp={class:"block text-[11px] text-muted-foreground/45 leading-relaxed"},ip={class:"rounded-lg border bg-background/50 p-3"},up={class:"flex items-center gap-2 mb-2"},cp={key:0,class:"py-5 text-center"},mp={key:1,class:"rounded-md border border-dashed p-4 text-center text-xs text-muted-foreground/40"},pp={key:2,class:"space-y-2 max-h-40 overflow-y-auto"},fp=["value","disabled"],vp={class:"min-w-0"},xp={class:"block text-xs truncate"},gp={class:"block text-[11px] text-muted-foreground/45"},bp={class:"rounded-lg border bg-background/50 p-3"},yp={class:"flex items-center gap-2 mb-2"},_p={key:0,class:"py-5 text-center"},hp={key:1,class:"rounded-md border border-dashed p-4 text-center text-xs text-muted-foreground/40"},kp={key:2,class:"space-y-2 max-h-40 overflow-y-auto"},wp=["value","disabled"],$p={class:"min-w-0"},Cp={class:"block text-xs truncate"},Sp={class:"block text-[11px] text-muted-foreground/45"},Ip={class:"grid sm:grid-cols-3 gap-3 pt-1"},qp={class:"space-y-1.5"},Mp={class:"flex items-center gap-1 text-xs text-muted-foreground/60"},Ap={type:"button",class:"inline-flex items-center justify-center h-4 w-4 rounded-full text-muted-foreground/30 hover:text-muted-foreground/60 hover:bg-muted/30 transition-colors"},zp={key:1,class:"rounded-xl border border-amber-500/30 bg-amber-500/5 p-4 space-y-3 animate-slide-up"},Pp={class:"flex items-start gap-3"},Tp={class:"min-w-0 flex-1"},Dp={class:"text-xs text-muted-foreground/60 mt-1 leading-relaxed"},Bp={class:"mt-2 flex flex-wrap gap-3 text-[11px] text-muted-foreground/50"},Vp={key:0},Op={class:"flex items-center justify-end gap-2"},Ep={class:"flex justify-end pt-1"},jp={key:0,class:"rounded-xl border bg-card p-5 space-y-4 animate-slide-up"},Rp={class:"flex items-center gap-2"},Fp={key:0,class:"space-y-1.5"},Up={class:"flex items-center gap-2 flex-wrap mb-1"},Lp={class:"text-[11px] text-muted-foreground/40"},Np={class:"min-w-0 flex-1"},Kp={class:"text-xs truncate"},Gp={class:"text-[11px] text-muted-foreground/40"},Hp={key:2,class:"space-y-1"},Wp={class:"relative"},Yp={class:"rounded-lg bg-muted/30 border p-3 text-xs font-mono whitespace-pre-wrap break-all max-h-20 overflow-y-auto leading-relaxed pr-10"},Xp={class:"text-[11px] text-muted-foreground/40"},Qp={key:3,class:"rounded-lg border border-amber-500/20 bg-amber-500/5 p-3 text-xs text-amber-300 flex items-center gap-2"},Zp={class:"flex justify-end pt-1"},Jp={key:1,class:"space-y-4"},ef={key:0,class:"rounded-xl border border-sky-500/20 bg-sky-500/5 p-6 text-center space-y-3"},tf={key:0},sf={class:"text-[11px] text-muted-foreground/40"},af={key:0,class:"text-[11px] text-muted-foreground/40"},lf={key:1,class:"text-[11px] text-amber-400"},of={key:1,class:"rounded-xl border border-emerald-500/20 bg-emerald-500/5 p-6 text-center space-y-3"},nf={class:"h-10 w-10 rounded-full bg-emerald-500/20 flex items-center justify-center mx-auto"},rf={key:0,class:"text-[11px] text-muted-foreground/40"},df={key:2,class:"rounded-xl border border-rose-500/20 bg-rose-500/5 p-6 text-center space-y-3"},uf={key:0,class:"text-xs text-rose-300 break-all text-left bg-rose-500/10 rounded-lg p-3"},cf={key:3,class:"rounded-xl border border-amber-500/20 bg-amber-500/5 p-6 text-center space-y-3"},mf=ne({__name:"SyncDeployPanel",props:{agentId:{},agent:{},deploymentState:{},disabled:{type:Boolean}},emits:["stateChanged"],setup(l,{emit:h}){const p=l,I=h,m=b("idle"),y=b([]),$=b([]),w=b(!1),q=b(""),A=[{key:"system_prompt",artifact:"AGENTS.md",label:"工作规则",description:"写入 OpenClaw 工作目录的 AGENTS.md。"},{key:"persona_prompt",artifact:"SOUL.md",label:"人格设定",description:"写入 OpenClaw 工作目录的 SOUL.md。"},{key:"identity",artifact:"IDENTITY.md",label:"身份信息",description:"写入 OpenClaw 工作目录的 IDENTITY.md。"}],v=b(A.map(X=>X.key)),g=b([]),S=b([]);async function G(){w.value=!0,q.value="";try{const[X,P]=await Promise.allSettled([Xe.list(p.agentId),Ue.list(p.agentId)]);y.value=X.status==="fulfilled"?X.value.data:[],$.value=P.status==="fulfilled"?P.value.data:[],g.value=y.value.map(E=>E.id),S.value=$.value.map(E=>E.id),(X.status==="rejected"||P.status==="rejected")&&(q.value="部分资源加载失败,请刷新后重试。")}finally{w.value=!1}}const z=b(1800),H=b(null),D=b(null),M=b(null),K=b(null),W=b(null),O=ce(()=>v.value.length>0);async function F(X=!1){if(!O.value){de.error("同步变更至少需要选择一个 Prompt 文件。");return}m.value="generating",H.value=null,D.value=null,M.value=null,K.value=null,W.value=null,fe();try{const P=await we.createDeployScript(p.agentId,{script_intent:"sync",prompt_artifact_keys:[...v.value],schedule_ids:[...g.value],comm_binding_ids:[...S.value],snapshot_timeout_seconds:z.value,replace_pending_snapshot:X});H.value=P.data.snapshot_id,D.value=P.data.changeset;try{const E=await we.getOnboardingMessage(p.agentId,{selected_artifacts:A.filter(j=>v.value.includes(j.key)).map(j=>j.artifact),include_schedule:g.value.length>0,include_comm_bindings:S.value.length>0});M.value=E.data.curl_command,K.value=E.data.download_token_expires_at}catch{de.warning("快照已创建,但获取下载命令失败,请手动刷新后重试。")}m.value="ready",de.success("已创建待部署快照"),I("stateChanged")}catch(P){const E=P?.response;if(E?.status===409){const U=E.data?.detail;if(U?.error_code==="DEPLOYMENT_SNAPSHOT_CONFLICT"){W.value=U,m.value="idle";return}}const j=E?.data?.detail??"生成同步脚本失败";de.error(j),m.value="idle"}}const te=b(null),le=b("");let J=null,me=!1;function fe(){J!==null&&(clearInterval(J),J=null),me=!1}async function ve(){if(me||!H.value)return;const X=p.agentId,P=H.value;me=!0;try{const E=await we.listDeploymentSnapshots(X);if(p.agentId!==X||H.value!==P)return;const j=E.data.find(U=>U.id===P);if(!j)return;te.value=j,j.status==="confirmed"?(fe(),m.value="confirmed",I("stateChanged")):j.status==="failed"?(fe(),m.value="failed"):j.status==="timeout"&&(fe(),m.value="timeout")}catch{le.value="轮询状态失败,将继续重试…"}finally{me=!1}}function Z(){m.value="waiting",te.value=null,le.value="",ve(),J=setInterval(()=>{ve()},5e3)}function V(){fe(),m.value="idle",H.value=null,D.value=null,M.value=null,K.value=null,te.value=null}const Q=b(null);async function C(X,P){await navigator.clipboard.writeText(X),Q.value=P,setTimeout(()=>{Q.value=null},2e3)}Ie(()=>G()),$e(()=>p.agentId,()=>{V(),G()}),Lt(()=>fe());function B(X){if(!X)return"—";try{return new Date(X).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return X}}function L(X){return X==="add"?"text-emerald-400 border-emerald-500/20 bg-emerald-500/5":X==="update"?"text-sky-400 border-sky-500/20 bg-sky-500/5":X==="remove"?"text-rose-400 border-rose-500/20 bg-rose-500/5":""}function ie(X){return X==="add"?"新增":X==="update"?"更新":X==="remove"?"删除":X}function ue(X){return X==="prompt"?"Prompt":X==="schedule"?"定时任务":X==="comm_binding"?"通讯渠道":X}return(X,P)=>(s(),o("div",jm,[e("div",Rm,[e("div",Fm,[e("div",{class:ae(["h-9 w-9 rounded-full flex items-center justify-center shrink-0",l.deploymentState.deployment_phase==="up_to_date"?"bg-emerald-500/15":"bg-amber-500/15"])},[l.deploymentState.deployment_phase==="up_to_date"?(s(),_(t(ht),{key:0,class:"h-5 w-5 text-emerald-400"})):(s(),_(t(Qe),{key:1,class:"h-5 w-5 text-amber-400"}))],2),e("div",Um,[e("p",Lm,n(l.deploymentState.deployment_phase==="up_to_date"?"配置已同步":"有待同步变更"),1),e("p",Nm,n(l.deploymentState.message),1)]),e("div",Km,[P[8]||(P[8]=e("div",{class:"text-xs text-muted-foreground/50"},"当前配置",-1)),e("div",Gm,"v"+n(l.deploymentState.config_version),1),l.deploymentState.deployed_config_version!==null?(s(),o("div",{key:0,class:ae(["text-xs",l.deploymentState.deployment_phase==="up_to_date"?"text-emerald-400/60":"text-amber-400/60"])}," 已部署 v"+n(l.deploymentState.deployed_config_version),3)):k("",!0)])])]),l.deploymentState.deployment_phase==="up_to_date"?(s(),o("div",Hm,[a(t(ke),{class:"h-6 w-6 mx-auto text-emerald-400"}),P[9]||(P[9]=e("p",{class:"text-sm font-medium text-emerald-400"},"所有配置已同步到运行态",-1)),P[10]||(P[10]=e("p",{class:"text-xs text-muted-foreground/50 leading-relaxed"},' 下次配置变更后,"有待同步变更"提示会自动出现,届时可在此生成同步脚本。 ',-1))])):(s(),o(N,{key:1},[m.value==="idle"||m.value==="generating"||m.value==="ready"?(s(),o("div",Wm,[e("div",Ym,[e("div",Xm,[e("div",null,[e("div",Qm,[a(t(vt),{class:"h-4 w-4 text-muted-foreground/60"}),P[11]||(P[11]=e("span",{class:"text-sm font-semibold"},"同步资源",-1))]),P[12]||(P[12]=e("p",{class:"text-xs text-muted-foreground/60 mt-1"},"选择本次要同步的资源,建议全选以确保一致性。",-1))]),a(t(T),{variant:"outline",size:"sm",class:"h-8 gap-1.5 text-xs shrink-0",disabled:w.value,onClick:G},{default:r(()=>[a(t(Qe),{class:ae(["h-3 w-3",w.value?"animate-spin":""])},null,8,["class"]),P[13]||(P[13]=i(" 刷新 ",-1))]),_:1},8,["disabled"])]),q.value?(s(),o("div",Zm,[e("div",Jm,[a(t(ye),{class:"h-3.5 w-3.5"}),i(" "+n(q.value),1)])])):k("",!0),e("div",ep,[e("div",tp,[e("div",sp,[a(t(Oe),{class:"h-3.5 w-3.5 text-muted-foreground/60"}),P[14]||(P[14]=e("span",{class:"text-xs font-medium"},"Prompt 文件",-1)),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(v.value.length)+"/"+n(A.length),1)]),_:1})]),e("div",ap,[(s(),o(N,null,se(A,E=>e("label",{key:E.key,class:"flex items-start gap-2 rounded-md border border-transparent p-2 hover:bg-muted/30 cursor-pointer"},[_e(e("input",{"onUpdate:modelValue":P[0]||(P[0]=j=>v.value=j),type:"checkbox",value:E.key,class:"mt-0.5 accent-primary",disabled:l.disabled},null,8,lp),[[et,v.value]]),e("span",op,[e("span",np,[i(n(E.label)+" ",1),e("span",rp,n(E.artifact),1)]),e("span",dp,n(E.description),1)])])),64))])]),e("div",ip,[e("div",up,[a(t(Ee),{class:"h-3.5 w-3.5 text-muted-foreground/60"}),P[15]||(P[15]=e("span",{class:"text-xs font-medium"},"定时任务",-1)),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(g.value.length)+"/"+n(y.value.length),1)]),_:1})]),w.value?(s(),o("div",cp,[a(t(re),{class:"h-4 w-4 animate-spin text-muted-foreground mx-auto"})])):y.value.length===0?(s(),o("div",mp,"暂无定时任务")):(s(),o("div",pp,[(s(!0),o(N,null,se(y.value,E=>(s(),o("label",{key:E.id,class:"flex items-start gap-2 rounded-md border border-transparent p-2 hover:bg-muted/30 cursor-pointer"},[_e(e("input",{"onUpdate:modelValue":P[1]||(P[1]=j=>g.value=j),type:"checkbox",value:E.id,class:"mt-0.5 accent-primary",disabled:l.disabled},null,8,fp),[[et,g.value]]),e("span",vp,[e("span",xp,n(E.name),1),e("span",gp,n(E.schedule_type)+" · "+n(E.schedule_expr),1)])]))),128))]))]),e("div",bp,[e("div",yp,[a(t(at),{class:"h-3.5 w-3.5 text-muted-foreground/60"}),P[16]||(P[16]=e("span",{class:"text-xs font-medium"},"通讯渠道",-1)),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(S.value.length)+"/"+n($.value.length),1)]),_:1})]),w.value?(s(),o("div",_p,[a(t(re),{class:"h-4 w-4 animate-spin text-muted-foreground mx-auto"})])):$.value.length===0?(s(),o("div",hp,"暂无飞书绑定")):(s(),o("div",kp,[(s(!0),o(N,null,se($.value,E=>(s(),o("label",{key:E.id,class:"flex items-start gap-2 rounded-md border border-transparent p-2 hover:bg-muted/30 cursor-pointer"},[_e(e("input",{"onUpdate:modelValue":P[2]||(P[2]=j=>S.value=j),type:"checkbox",value:E.id,class:"mt-0.5 accent-primary",disabled:l.disabled},null,8,wp),[[et,S.value]]),e("span",$p,[e("span",Cp,n(E.account_name||E.account_id),1),e("span",Sp,"feishu · "+n(E.account_id),1)])]))),128))]))])]),e("div",Ip,[e("label",qp,[e("span",Mp,[P[18]||(P[18]=i(" 快照超时(秒) ",-1)),a(t(tt),{"delay-duration":200},{default:r(()=>[a(t(Ae),null,{default:r(()=>[a(t(ze),{"as-child":""},{default:r(()=>[e("button",Ap,[a(t(ft),{class:"h-3 w-3"})])]),_:1}),a(t(Pe),{side:"top","side-offset":4,class:"max-w-xs text-xs leading-relaxed"},{default:r(()=>[...P[17]||(P[17]=[i(" 快照等待回传的时间上限,超时后后端标记为 timeout。默认 1800 秒(30 分钟),范围 60 ~ 86400 秒。 ",-1)])]),_:1})]),_:1})]),_:1})]),a(t(be),{modelValue:z.value,"onUpdate:modelValue":P[3]||(P[3]=E=>z.value=E),modelModifiers:{number:!0},type:"number",min:"60",max:"86400",class:"h-9 text-sm",disabled:l.disabled},null,8,["modelValue","disabled"])])]),W.value?(s(),o("div",zp,[e("div",Pp,[a(t(ye),{class:"h-4 w-4 text-amber-400 shrink-0 mt-0.5"}),e("div",Tp,[P[20]||(P[20]=e("p",{class:"text-sm font-medium text-amber-300"},"存在未完成的部署快照",-1)),e("p",Dp,n(W.value.message),1),e("div",Bp,[e("span",null,"快照 "+n(W.value.conflict_snapshot.id.slice(0,8))+"…",1),e("span",null,"创建于 "+n(B(W.value.conflict_snapshot.created_at)),1),W.value.conflict_snapshot.expires_at?(s(),o("span",Vp,"超时截止 "+n(B(W.value.conflict_snapshot.expires_at)),1)):k("",!0),W.value.conflict_snapshot.is_likely_timeout?(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-amber-400 border-amber-500/20"},{default:r(()=>[...P[19]||(P[19]=[i("疑似已超时",-1)])]),_:1})):k("",!0)])])]),e("div",Op,[a(t(T),{variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:P[4]||(P[4]=E=>W.value=null)},{default:r(()=>[...P[21]||(P[21]=[i(" 取消 ",-1)])]),_:1}),a(t(T),{size:"sm",class:"h-7 text-xs gap-1.5 bg-amber-600 hover:bg-amber-500 text-white",disabled:m.value==="generating",onClick:P[5]||(P[5]=E=>F(!0))},{default:r(()=>[m.value==="generating"?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):k("",!0),P[22]||(P[22]=i(" 确认替换,重新生成 ",-1))]),_:1},8,["disabled"])])])):k("",!0),e("div",Ep,[a(t(T),{size:"lg",class:"gap-2",disabled:m.value==="generating"||l.disabled||!O.value,onClick:P[6]||(P[6]=E=>F())},{default:r(()=>[m.value==="generating"?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin"})):(s(),_(t(Qe),{key:1,class:"h-4 w-4"})),i(" "+n(m.value==="generating"?"生成中…":"生成同步脚本"),1)]),_:1},8,["disabled"])])]),m.value==="ready"?(s(),o("div",jp,[e("div",Rp,[a(t(vt),{class:"h-4 w-4 text-emerald-400"}),P[24]||(P[24]=e("span",{class:"text-sm font-semibold"},"接入指令",-1)),a(t(Y),{variant:"outline",class:"text-[10px] text-emerald-400 border-emerald-500/20"},{default:r(()=>[...P[23]||(P[23]=[i("快照已创建",-1)])]),_:1})]),D.value?(s(),o("div",Fp,[e("div",Up,[D.value.is_valid?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[10px] text-emerald-400 border-emerald-500/20"},{default:r(()=>[...P[25]||(P[25]=[i("校验通过",-1)])]),_:1})):(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-rose-400 border-rose-500/20"},{default:r(()=>[...P[26]||(P[26]=[i("校验失败",-1)])]),_:1})),e("span",Lp,"快照 "+n(H.value)+" · "+n(D.value.items.length)+" 项变更",1)]),(s(!0),o(N,null,se(D.value.items,(E,j)=>(s(),o("div",{key:`${E.resource_type}-${E.resource_id??E.resource_key}-${j}`,class:"flex items-center gap-3 rounded-md border bg-background/70 px-3 py-2"},[a(t(Y),{variant:"outline",class:ae(["text-[10px]",L(E.change_type)])},{default:r(()=>[i(n(ie(E.change_type)),1)]),_:2},1032,["class"]),e("div",Np,[e("div",Kp,n(E.label),1),e("div",Gp,n(ue(E.resource_type)),1)])]))),128))])):k("",!0),M.value?(s(),_(t(je),{key:1})):k("",!0),M.value?(s(),o("div",Hp,[P[27]||(P[27]=e("div",{class:"text-[11px] text-muted-foreground/50 font-medium"},"curl 下载命令",-1)),e("div",Wp,[e("pre",Yp,n(M.value),1),a(t(T),{variant:"ghost",size:"icon",class:"absolute top-2 right-2 h-6 w-6 bg-background/80 backdrop-blur-sm",onClick:P[7]||(P[7]=E=>C(M.value,"curl"))},{default:r(()=>[Q.value==="curl"?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"}))]),_:1})]),e("p",Xp,"下载 Token 过期:"+n(B(K.value)),1)])):(s(),o("div",Qp,[a(t(ye),{class:"h-3.5 w-3.5 shrink-0"}),P[28]||(P[28]=i(" 快照已创建,但获取下载命令失败。 ",-1))])),e("div",Zp,[a(t(T),{class:"gap-2",onClick:Z},{default:r(()=>[a(t(ke),{class:"h-4 w-4"}),P[29]||(P[29]=i(" 我已执行,等待回传 ",-1))]),_:1})])])):k("",!0)])):m.value==="waiting"||m.value==="confirmed"||m.value==="failed"||m.value==="timeout"?(s(),o("div",Jp,[m.value==="waiting"?(s(),o("div",ef,[a(t(re),{class:"h-8 w-8 animate-spin mx-auto text-sky-400"}),P[31]||(P[31]=e("div",null,[e("p",{class:"text-sm font-medium"},"等待目标机器回传…"),e("p",{class:"text-xs text-muted-foreground/60 mt-1"},"脚本执行完毕后会自动回传,每 5 秒刷新一次。")],-1)),te.value?(s(),o("div",tf,[e("p",sf,"快照 "+n(te.value.id),1),te.value.expires_at?(s(),o("p",af,"超时截止:"+n(B(te.value.expires_at)),1)):k("",!0),te.value.is_likely_timeout?(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-amber-400 border-amber-500/20 mt-2"},{default:r(()=>[...P[30]||(P[30]=[i("疑似已超时",-1)])]),_:1})):k("",!0)])):k("",!0),le.value?(s(),o("p",lf,n(le.value),1)):k("",!0),e("button",{type:"button",class:"text-xs text-muted-foreground/40 hover:text-muted-foreground transition-colors",onClick:V}," 取消,重新生成 ")])):m.value==="confirmed"?(s(),o("div",of,[e("div",nf,[a(t(ke),{class:"h-5 w-5 text-emerald-400"})]),P[33]||(P[33]=e("div",null,[e("p",{class:"text-sm font-semibold text-emerald-400"},"同步成功!"),e("p",{class:"text-xs text-muted-foreground/60 mt-1"},"配置已同步到运行态 Agent。")],-1)),te.value?(s(),o("p",rf,"确认时间:"+n(B(te.value.confirmed_at)),1)):k("",!0),a(t(T),{variant:"outline",size:"sm",onClick:V},{default:r(()=>[...P[32]||(P[32]=[i("继续管理",-1)])]),_:1})])):m.value==="failed"?(s(),o("div",df,[a(t(ye),{class:"h-7 w-7 mx-auto text-rose-400"}),P[35]||(P[35]=e("div",null,[e("p",{class:"text-sm font-medium text-rose-400"},"同步失败"),e("p",{class:"text-xs text-muted-foreground/60 mt-1"},"请检查错误信息后重新生成脚本。")],-1)),te.value?.failure_detail_json?(s(),o("p",uf,n(te.value.failure_detail_json),1)):k("",!0),a(t(T),{variant:"outline",onClick:V},{default:r(()=>[...P[34]||(P[34]=[i("重新生成",-1)])]),_:1})])):m.value==="timeout"?(s(),o("div",cf,[a(t(Ee),{class:"h-7 w-7 mx-auto text-amber-400"}),P[37]||(P[37]=e("div",null,[e("p",{class:"text-sm font-medium text-amber-400"},"等待超时"),e("p",{class:"text-xs text-muted-foreground/60 mt-1 leading-relaxed"},"目标机器在有效期内未回传结果,请重新生成脚本后再次尝试。")],-1)),a(t(T),{variant:"outline",onClick:V},{default:r(()=>[...P[36]||(P[36]=[i("重新生成",-1)])]),_:1})])):k("",!0)])):k("",!0)],64))]))}}),pf={class:"space-y-5 animate-slide-up"},ff={key:0,class:"rounded-xl border bg-card p-8 flex items-center justify-center gap-2"},vf={key:1,class:"rounded-xl border border-rose-500/20 bg-rose-500/5 p-8 text-center space-y-2"},xf={class:"rounded-xl border border-dashed border-border/70 bg-muted/5"},gf={class:"flex items-center gap-2"},bf={class:"flex items-center gap-1 text-xs text-muted-foreground/40"},yf={key:0,class:"px-4 pb-4 space-y-3"},_f={class:"flex items-center justify-between"},hf={key:0,class:"rounded-lg border-2 border-emerald-500/30 bg-emerald-500/5 p-3 animate-slide-up"},kf={class:"flex items-center gap-2 mb-2"},wf={class:"relative"},$f={class:"rounded-md bg-background border p-2.5 text-xs font-mono break-all leading-relaxed select-all"},Cf={class:"flex items-center gap-3 mt-1.5 text-[11px] text-muted-foreground/50"},Sf={key:1,class:"flex items-center justify-center py-6"},If={key:2,class:"text-center py-6"},qf={class:"text-xs text-muted-foreground"},Mf={key:3,class:"rounded-lg border border-dashed bg-muted/10 p-5 text-center text-muted-foreground/40"},Af={key:4,class:"space-y-1.5"},zf={class:"min-w-0 flex-1"},Pf={class:"flex items-center gap-2 flex-wrap mb-0.5"},Tf={class:"text-xs font-mono text-muted-foreground"},Df={class:"flex flex-wrap gap-x-3 gap-y-0.5 text-[11px] text-muted-foreground/40"},Bf={class:"flex items-center gap-1"},Vf={key:0},Of={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},Ef={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200"},jf={class:"space-y-3"},Rf={class:"flex gap-1.5"},Ff={class:"flex gap-3 mt-4"},Uf=ne({__name:"BootstrapTab",props:{agentId:{},agent:{},disabled:{type:Boolean}},emits:["saved"],setup(l,{emit:h}){const p=l,I=h,m=b(null),y=b(!0);async function $(){y.value=!0;try{const Z=await we.getDeploymentState(p.agentId);m.value=Z.data}catch{}finally{y.value=!1}}function w(){I("saved"),$()}const q=b(!1),A=b([]),v=b(!1),g=b(""),S=b(!1),G=b(!1),z=b("download_script"),H=b(3600),D=b(""),M=b(null),K=b(null),W=b(null),O=[{value:"download_script",label:"下载脚本"},{value:"register_runtime",label:"注册运行态"}];async function F(){v.value=!0,g.value="";try{const Z=await we.listTokens(p.agentId);A.value=Z.data}catch{g.value="加载 Token 列表失败"}finally{v.value=!1}}async function te(){G.value=!0;try{const Z=await we.createToken(p.agentId,{purpose:z.value,ttl_seconds:H.value,scope_json:D.value.trim()||void 0});M.value=Z.data,S.value=!1,de.success("Token 已创建"),F()}catch(Z){const V=Z?.response?.data;de.error(V?.detail??"创建失败")}finally{G.value=!1}}async function le(Z){K.value=Z;try{await we.revokeToken(p.agentId,Z),de.success("已撤销"),F()}catch{de.error("撤销失败")}finally{K.value=null}}async function J(Z,V){await navigator.clipboard.writeText(Z),W.value=V,setTimeout(()=>{W.value=null},2e3)}function me(Z){return O.find(V=>V.value===Z)?.label??Z}function fe(Z){return new Date(Z){$(),F()}),$e(()=>p.agentId,()=>{m.value=null,M.value=null,q.value=!1,$(),F()}),(Z,V)=>(s(),o("div",pf,[y.value?(s(),o("div",ff,[a(t(re),{class:"h-5 w-5 animate-spin text-muted-foreground/40"}),V[8]||(V[8]=e("span",{class:"text-sm text-muted-foreground/40"},"加载部署状态…",-1))])):m.value?(s(),o(N,{key:2},[m.value.deployment_phase==="first_onboarding"?(s(),_(Em,{key:0,"agent-id":l.agentId,agent:l.agent,"deployment-state":m.value,disabled:l.disabled,onCompleted:w},null,8,["agent-id","agent","deployment-state","disabled"])):(s(),_(mf,{key:1,"agent-id":l.agentId,agent:l.agent,"deployment-state":m.value,disabled:l.disabled,onStateChanged:w},null,8,["agent-id","agent","deployment-state","disabled"]))],64)):(s(),o("div",vf,[a(t(ye),{class:"h-6 w-6 mx-auto text-rose-400"}),V[10]||(V[10]=e("p",{class:"text-sm font-medium"},"无法加载部署状态",-1)),V[11]||(V[11]=e("p",{class:"text-xs text-muted-foreground/60"},"请检查网络连接后重试。",-1)),a(t(T),{variant:"outline",size:"sm",class:"mt-2",onClick:$},{default:r(()=>[...V[9]||(V[9]=[i("重试",-1)])]),_:1})])),e("div",xf,[e("button",{type:"button",class:"flex w-full items-center justify-between px-4 py-3 text-left",onClick:V[0]||(V[0]=Q=>q.value=!q.value)},[e("div",gf,[a(t(wt),{class:"h-3.5 w-3.5 text-muted-foreground/40"}),V[12]||(V[12]=e("span",{class:"text-xs font-medium text-muted-foreground/60"},"Bootstrap Token 管理",-1)),a(t(Y),{variant:"outline",class:"text-[10px] tabular-nums"},{default:r(()=>[i(n(A.value.length),1)]),_:1})]),e("div",bf,[i(n(q.value?"收起":"展开")+" ",1),q.value?(s(),_(t(Ze),{key:0,class:"h-3 w-3"})):(s(),_(t(bt),{key:1,class:"h-3 w-3"}))])]),q.value?(s(),o("div",yf,[a(t(je)),e("div",_f,[V[14]||(V[14]=e("p",{class:"text-[11px] text-muted-foreground/40"}," 手动创建 / 管理 Bootstrap Token。通常优先使用部署向导自动生成。 ",-1)),a(t(T),{variant:"outline",size:"sm",class:"h-7 gap-1 text-xs shrink-0",disabled:l.disabled,onClick:V[1]||(V[1]=Q=>S.value=!0)},{default:r(()=>[a(t(qt),{class:"h-3 w-3"}),V[13]||(V[13]=i(" 新建 ",-1))]),_:1},8,["disabled"])]),M.value?(s(),o("div",hf,[e("div",kf,[a(t(jt),{class:"h-3.5 w-3.5 text-emerald-400"}),V[15]||(V[15]=e("span",{class:"text-xs font-medium text-emerald-400"},"Token 已创建,请立即复制",-1))]),e("div",wf,[e("pre",$f,n(M.value.token),1),a(t(T),{variant:"ghost",size:"icon",class:"absolute top-1.5 right-1.5 h-6 w-6 bg-background/80 backdrop-blur-sm",onClick:V[2]||(V[2]=Q=>J(M.value.token,"new-token"))},{default:r(()=>[W.value==="new-token"?(s(),_(t(ke),{key:0,class:"h-3 w-3 text-emerald-400"})):(s(),_(t(Ve),{key:1,class:"h-3 w-3"}))]),_:1})]),V[17]||(V[17]=e("p",{class:"text-[11px] text-amber-400 mt-1.5"},"此 Token 仅展示一次,关闭后将无法再次查看完整值。",-1)),e("div",Cf,[e("span",null,"用途:"+n(me(M.value.purpose)),1),e("span",null,"过期:"+n(ve(M.value.expires_at)),1)]),a(t(T),{variant:"ghost",size:"sm",class:"h-5 text-[11px] mt-1.5 text-muted-foreground/50 px-1",onClick:V[3]||(V[3]=Q=>M.value=null)},{default:r(()=>[...V[16]||(V[16]=[i("关闭",-1)])]),_:1})])):k("",!0),v.value?(s(),o("div",Sf,[a(t(re),{class:"h-5 w-5 animate-spin text-muted-foreground"})])):g.value?(s(),o("div",If,[a(t(ye),{class:"h-5 w-5 mx-auto mb-2 text-rose-400"}),e("p",qf,n(g.value),1),a(t(T),{variant:"link",size:"sm",class:"mt-1",onClick:F},{default:r(()=>[...V[18]||(V[18]=[i("重试",-1)])]),_:1})])):A.value.length===0?(s(),o("div",Mf,[a(t(wt),{class:"h-5 w-5 mx-auto mb-1.5"}),V[19]||(V[19]=e("p",{class:"text-xs"},"暂无 Bootstrap Token",-1))])):(s(),o("div",Af,[(s(!0),o(N,null,se(A.value,(Q,C)=>(s(),o("div",{key:Q.id,class:ae(["rounded-lg border bg-card px-3 py-2 flex items-center gap-3 animate-slide-up",{"opacity-50":!Q.is_valid}]),style:St({animationDelay:`${C*25}ms`})},[e("div",zf,[e("div",Pf,[e("span",Tf,n(Q.token_masked),1),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n(me(Q.purpose)),1)]),_:2},1024),Q.is_valid?(s(),_(t(Y),{key:1,variant:"outline",class:"text-[10px] text-emerald-400 border-emerald-500/20"},{default:r(()=>[...V[20]||(V[20]=[i("有效",-1)])]),_:1})):(s(),_(t(Y),{key:0,variant:"outline",class:"text-[10px] text-rose-400 border-rose-500/20"},{default:r(()=>[i(n(Q.revoked_at?"已撤销":fe(Q.expires_at)?"已过期":"已使用"),1)]),_:2},1024))]),e("div",Df,[e("span",Bf,[a(t(Ee),{class:"h-3 w-3"}),i(" 过期 "+n(ve(Q.expires_at)),1)]),Q.used_at?(s(),o("span",Vf,"已使用 "+n(ve(Q.used_at)),1)):k("",!0),e("span",null,"创建 "+n(ve(Q.created_at)),1)])]),Q.is_valid?(s(),_(t(T),{key:0,variant:"ghost",size:"icon",class:"h-7 w-7 text-rose-400 hover:text-rose-500 shrink-0",disabled:K.value===Q.id,onClick:B=>le(Q.id)},{default:r(()=>[K.value===Q.id?(s(),_(t(re),{key:0,class:"h-3 w-3 animate-spin"})):(s(),_(t(st),{key:1,class:"h-3 w-3"}))]),_:2},1032,["disabled","onClick"])):k("",!0)],6))),128))]))])):k("",!0)]),(s(),_(he,{to:"body"},[S.value?(s(),o("div",Of,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:V[4]||(V[4]=Q=>S.value=!1)}),e("div",Ef,[V[27]||(V[27]=e("h3",{class:"text-base font-semibold mb-4"},"新建 Bootstrap Token",-1)),e("div",jf,[e("div",null,[V[21]||(V[21]=e("label",{class:"text-xs text-muted-foreground mb-1.5 block"},"用途",-1)),e("div",Rf,[(s(),o(N,null,se(O,Q=>a(t(T),{key:Q.value,size:"sm",variant:z.value===Q.value?"default":"outline",class:"flex-1 h-8 text-xs",onClick:C=>z.value=Q.value},{default:r(()=>[i(n(Q.label),1)]),_:2},1032,["variant","onClick"])),64))])]),e("div",null,[V[22]||(V[22]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},"有效期(秒)",-1)),a(t(be),{modelValue:H.value,"onUpdate:modelValue":V[5]||(V[5]=Q=>H.value=Q),modelModifiers:{number:!0},type:"number",min:"300"},null,8,["modelValue"]),V[23]||(V[23]=e("p",{class:"text-[11px] text-muted-foreground/40 mt-1"},"默认 3600 秒(1 小时)",-1))]),e("div",null,[V[24]||(V[24]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},"Scope (JSON,可选)",-1)),_e(e("textarea",{"onUpdate:modelValue":V[6]||(V[6]=Q=>D.value=Q),rows:"2",class:"flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none",placeholder:'{"key": "value"}'},null,512),[[Ne,D.value]])])]),e("div",Ff,[a(t(T),{variant:"outline",class:"flex-1",disabled:G.value,onClick:V[7]||(V[7]=Q=>S.value=!1)},{default:r(()=>[...V[25]||(V[25]=[i("取消",-1)])]),_:1},8,["disabled"]),a(t(T),{class:"flex-1",disabled:G.value,onClick:te},{default:r(()=>[G.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin mr-1"})):k("",!0),V[26]||(V[26]=i(" 创建 ",-1))]),_:1},8,["disabled"])])])])):k("",!0)]))]))}}),Lf={class:"space-y-4 animate-slide-up"},Nf={class:"flex items-center justify-between"},Kf={class:"flex items-center gap-2"},Gf={key:0,class:"flex items-center justify-center py-12"},Hf={key:1,class:"flex flex-col items-center gap-2 py-12 text-center"},Wf={class:"text-xs text-muted-foreground"},Yf={key:2,class:"rounded-xl border border-dashed bg-muted/5 p-10 text-center text-muted-foreground/40"},Xf={key:3,class:"space-y-2"},Qf={class:"flex items-center gap-2 flex-wrap"},Zf={class:"text-xs font-mono text-muted-foreground/60 truncate max-w-[180px]"},Jf={class:"flex flex-wrap gap-x-4 gap-y-0.5 text-[11px] text-muted-foreground/40"},ev={key:0},tv={key:1,class:"text-emerald-400/60"},sv={key:0,class:"text-[11px] text-rose-300 break-all bg-rose-500/5 rounded-md px-2 py-1.5"},av=ne({__name:"DeployHistoryTab",props:{agentId:{}},setup(l){const h=l,p=b([]),I=b(!1),m=b("");async function y(){I.value=!0,m.value="";try{const v=await we.listDeploymentSnapshots(h.agentId);p.value=v.data}catch{m.value="加载部署历史失败"}finally{I.value=!1}}Ie(()=>y()),$e(()=>h.agentId,()=>y());function $(v){return v==="bootstrap"?"首次接入":"同步变更"}function w(v){return v==="pending"?"待回传":v==="confirmed"?"已确认":v==="failed"?"失败":v==="timeout"?"超时未回传":v==="cancelled"?"已取消":v}function q(v){return v==="confirmed"?"text-emerald-400 border-emerald-500/20":v==="failed"||v==="timeout"?"text-rose-400 border-rose-500/20":v==="cancelled"?"text-muted-foreground/50 border-muted-foreground/20":"text-amber-400 border-amber-500/20"}function A(v){if(!v)return"—";try{return new Date(v).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return v}}return(v,g)=>(s(),o("div",Lf,[e("div",Nf,[e("div",Kf,[a(t(Et),{class:"h-4 w-4 text-muted-foreground/60"}),g[0]||(g[0]=e("span",{class:"text-sm font-semibold"},"部署快照历史",-1)),a(t(Y),{variant:"outline",class:"text-[10px] tabular-nums"},{default:r(()=>[i(n(p.value.length),1)]),_:1})]),a(t(T),{variant:"outline",size:"sm",class:"h-8 gap-1.5 text-xs",disabled:I.value,onClick:y},{default:r(()=>[a(t(Qe),{class:ae(["h-3 w-3",I.value?"animate-spin":""])},null,8,["class"]),g[1]||(g[1]=i(" 刷新 ",-1))]),_:1},8,["disabled"])]),a(t(je)),I.value?(s(),o("div",Gf,[a(t(re),{class:"h-5 w-5 animate-spin text-muted-foreground"})])):m.value?(s(),o("div",Hf,[a(t(ye),{class:"h-5 w-5 text-rose-400"}),e("p",Wf,n(m.value),1),a(t(T),{variant:"link",size:"sm",onClick:y},{default:r(()=>[...g[2]||(g[2]=[i("重试",-1)])]),_:1})])):p.value.length===0?(s(),o("div",Yf,[a(t(Et),{class:"h-8 w-8 mx-auto mb-2 opacity-50"}),g[3]||(g[3]=e("p",{class:"text-sm"},"暂无部署快照",-1)),g[4]||(g[4]=e("p",{class:"text-xs mt-1"},"完成首次接入后,历史记录将显示在这里。",-1))])):(s(),o("div",Xf,[(s(!0),o(N,null,se(p.value,S=>(s(),o("div",{key:S.id,class:"rounded-xl border bg-card px-4 py-3 space-y-2"},[e("div",Qf,[e("span",Zf,n(S.id),1),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i(n($(S.script_intent)),1)]),_:2},1024),a(t(Y),{variant:"outline",class:ae(["text-[10px]",q(S.status)])},{default:r(()=>[i(n(w(S.status)),1)]),_:2},1032,["class"]),S.status==="pending"&&S.is_likely_timeout?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[10px] text-amber-400 border-amber-500/20"},{default:r(()=>[...g[5]||(g[5]=[i(" 疑似超时 ",-1)])]),_:1})):k("",!0),a(t(Y),{variant:"outline",class:"text-[10px]"},{default:r(()=>[i("v"+n(S.config_version),1)]),_:2},1024)]),e("div",Jf,[e("span",null,"创建 "+n(A(S.created_at)),1),S.expires_at?(s(),o("span",ev,"超时截止 "+n(A(S.expires_at)),1)):k("",!0),S.confirmed_at?(s(),o("span",tv,"确认 "+n(A(S.confirmed_at)),1)):k("",!0)]),S.failure_detail_json?(s(),o("p",sv,n(S.failure_detail_json),1)):k("",!0)]))),128))]))]))}}),lv={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},ov={class:"relative z-10 w-full max-w-md rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200"},nv={class:"space-y-3 mb-4"},rv={key:0,class:"text-xs text-rose-500 mb-3"},dv={class:"flex gap-3"},iv=ne({__name:"AgentEditDialog",props:xt({agent:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:xt(["saved"],["update:open"]),setup(l,{emit:h}){const p=Nt(l,"open"),I=l,m=h,y=b({name:"",description:"",status:""}),$=b(!1),w=b("");$e(()=>p.value,A=>{A&&I.agent&&(y.value={name:I.agent.name,description:I.agent.description??"",status:I.agent.status},w.value="")});async function q(){if(!I.agent)return;const A=y.value.name.trim();if(!A){w.value="名称不能为空";return}$.value=!0,w.value="";try{await ut.update(I.agent.id,{name:A,description:y.value.description.trim()||void 0,status:y.value.status}),de.success("更新成功"),p.value=!1,m("saved")}catch(v){const g=v?.response?.data?.detail;w.value=g??"保存失败"}finally{$.value=!1}}return(A,v)=>(s(),_(he,{to:"body"},[p.value?(s(),o("div",lv,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:v[0]||(v[0]=g=>p.value=!1)}),e("div",ov,[v[8]||(v[8]=e("h2",{class:"text-lg font-semibold mb-4"},"编辑 Agent",-1)),e("div",nv,[e("div",null,[v[4]||(v[4]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},"名称",-1)),a(t(be),{modelValue:y.value.name,"onUpdate:modelValue":v[1]||(v[1]=g=>y.value.name=g)},null,8,["modelValue"])]),e("div",null,[v[5]||(v[5]=e("label",{class:"text-xs text-muted-foreground mb-1 block"},"描述",-1)),_e(e("textarea",{"onUpdate:modelValue":v[2]||(v[2]=g=>y.value.description=g),rows:"3",class:"flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none"},null,512),[[Ne,y.value.description]])])]),w.value?(s(),o("p",rv,n(w.value),1)):k("",!0),e("div",dv,[a(t(T),{variant:"outline",class:"flex-1",disabled:$.value,onClick:v[3]||(v[3]=g=>p.value=!1)},{default:r(()=>[...v[6]||(v[6]=[i("取消",-1)])]),_:1},8,["disabled"]),a(t(T),{class:"flex-1",disabled:$.value,onClick:q},{default:r(()=>[$.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin mr-1"})):k("",!0),v[7]||(v[7]=i(" 保存 ",-1))]),_:1},8,["disabled"])])])])):k("",!0)]))}}),uv={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},cv={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200"},mv={class:"text-center space-y-2 mb-4"},pv={class:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-rose-100"},fv={class:"text-sm text-muted-foreground"},vv={class:"font-medium text-foreground"},xv={class:"mb-4"},gv={class:"text-xs text-muted-foreground mb-1 block"},bv={class:"font-mono font-medium text-foreground"},yv={key:0,class:"text-xs text-rose-500 mb-3"},_v={class:"flex gap-3"},hv=ne({__name:"AgentDeleteDialog",props:xt({agent:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:xt(["deleted"],["update:open"]),setup(l,{emit:h}){const p=Nt(l,"open"),I=l,m=h,y=b(""),$=b(!1),w=b(""),q=ce(()=>I.agent?y.value.trim()===`确认删除${I.agent.name}`:!1);$e(()=>p.value,v=>{v&&(y.value="",w.value="")});async function A(){if(!(!I.agent||!q.value)){$.value=!0,w.value="";try{await ut.remove(I.agent.id),de.success("已删除"),p.value=!1,m("deleted")}catch(v){const g=v?.response?.data?.detail;w.value=g??"删除失败"}finally{$.value=!1}}}return(v,g)=>(s(),_(he,{to:"body"},[p.value?(s(),o("div",uv,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:g[0]||(g[0]=S=>p.value=!1)}),e("div",cv,[e("div",mv,[e("div",pv,[a(t(st),{class:"h-5 w-5 text-rose-600"})]),g[5]||(g[5]=e("h2",{class:"text-lg font-semibold"},"删除 Agent",-1)),e("p",fv,[g[3]||(g[3]=i(" 即将删除 ",-1)),e("span",vv,n(l.agent?.name),1),g[4]||(g[4]=i(", 将同时清除所有关联子资源(平台配置、Prompt、定时任务、通讯渠道、Bootstrap Token)。 ",-1))])]),e("div",xv,[e("label",gv,[g[6]||(g[6]=i(" 输入 ",-1)),e("span",bv,"确认删除"+n(l.agent?.name),1),g[7]||(g[7]=i(" 以确认 ",-1))]),a(t(be),{modelValue:y.value,"onUpdate:modelValue":g[1]||(g[1]=S=>y.value=S),placeholder:"请输入确认文字"},null,8,["modelValue"])]),w.value?(s(),o("p",yv,n(w.value),1)):k("",!0),e("div",_v,[a(t(T),{variant:"outline",class:"flex-1",disabled:$.value,onClick:g[2]||(g[2]=S=>p.value=!1)},{default:r(()=>[...g[8]||(g[8]=[i("取消",-1)])]),_:1},8,["disabled"]),a(t(T),{variant:"destructive",class:"flex-1",disabled:!q.value||$.value,onClick:A},{default:r(()=>[$.value?(s(),_(t(re),{key:0,class:"h-4 w-4 animate-spin mr-1"})):k("",!0),g[9]||(g[9]=i(" 确认删除 ",-1))]),_:1},8,["disabled"])])])])):k("",!0)]))}}),kv={class:"flex flex-col h-[calc(100vh-3.5rem)]"},wv={class:"shrink-0 border-b border-border/40 bg-background"},$v={class:"max-w-5xl mx-auto px-6 py-2.5 flex items-center justify-between"},Cv={class:"flex items-center gap-3 min-w-0"},Sv={class:"text-sm font-semibold truncate"},Iv={key:0,class:"flex gap-1.5 shrink-0"},qv={class:"flex-1 overflow-y-auto"},Mv={key:0,class:"flex items-center justify-center py-20"},Av={key:1,class:"flex flex-col items-center py-20 text-muted-foreground"},zv={class:"text-sm"},Pv={key:2,class:"max-w-5xl mx-auto px-6 py-5 animate-slide-up"},Tv={class:"rounded-xl border bg-card overflow-hidden mb-5"},Dv={class:"p-5"},Bv={class:"flex items-start justify-between gap-4"},Vv={class:"flex items-start gap-3 min-w-0"},Ov={class:"min-w-0"},Ev={class:"text-xs text-muted-foreground font-mono mb-1"},jv={key:0,class:"text-sm text-muted-foreground leading-relaxed max-w-lg"},Rv={key:1,class:"text-sm text-muted-foreground/40 italic"},Fv={class:"shrink-0 text-right space-y-2"},Uv={class:"text-sm font-medium tabular-nums mt-0.5"},Lv={class:"mt-4 pt-4 border-t border-border/30"},Nv={class:"flex items-center gap-3 mb-2"},Kv={class:"flex gap-2 mb-3"},Gv=["onClick"],Hv={key:2,class:"text-[9px] ml-0.5 text-primary/70"},Wv={class:"flex items-center gap-2"},Yv=["onClick"],Xv={key:0,class:"absolute top-1.5 right-1.5 h-1.5 w-1.5 rounded-full bg-emerald-400"},Qv={key:0,class:"mt-4 rounded-lg border border-amber-500/20 bg-amber-500/5 px-4 py-3 flex items-center gap-2"},Zv={class:"text-xs text-amber-300/80"},Jv={class:"text-amber-400"},e1={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4 animate-in fade-in duration-150"},t1={class:"relative z-10 w-full max-w-sm rounded-xl border bg-background p-6 shadow-2xl animate-in fade-in zoom-in-95 duration-200 text-center space-y-3"},s1={class:"flex gap-3 pt-2"},a1=ne({__name:"AgentDetailView",props:{agentId:{}},emits:["back","deleted"],setup(l,{emit:h}){const p=l,I=h,m=b(null),y=b(!1),$=b(""),w=b("basic"),q=b(!1),A=b(!1),v=b(null),g=b(null),S=b(null),G=b(!1);function z(){return w.value==="host"?v.value?.editing??!1:w.value==="prompt"?g.value?.editing??!1:!1}function H(j){if(j!==w.value){if(z()){S.value=j,G.value=!0;return}w.value=j}}function D(){w.value==="host"&&v.value?.cancelEdit(),w.value==="prompt"&&g.value?.cancelEdit(),S.value&&(w.value=S.value),S.value=null,G.value=!1}function M(){S.value=null,G.value=!1}let K=0;const{readiness:W,progress:O,raw:F}=no(m),{platforms:te,loadPlatforms:le}=zt(),J=ce(()=>m.value?.host_platform??"openclaw"),me=ce(()=>te.value.find(j=>j.key===J.value)?.capabilities??null),fe=[{key:"basic",label:"基础信息",icon:Be,readinessKey:"basic",required:!0,isEditable:()=>!0},{key:"host",label:"平台配置",icon:cs,readinessKey:"host",required:!0,isEditable:()=>!0},{key:"prompt",label:"Prompt",icon:Oe,readinessKey:"prompt",required:!1,isEditable:j=>j.host,prerequisiteLabel:"平台配置"},{key:"schedule",label:"定时任务",icon:Ee,readinessKey:"schedule",required:!1,isEditable:j=>j.host,prerequisiteLabel:"平台配置"},{key:"comm",label:"通讯渠道",icon:at,readinessKey:"comm",required:!1,isEditable:j=>j.host,prerequisiteLabel:"平台配置"},{key:"bootstrap",label:"部署接入",icon:us,readinessKey:"bootstrap",required:!1,isEditable:j=>j.host,prerequisiteLabel:"平台配置"},{key:"deploy-history",label:"部署历史",icon:Et,readinessKey:"bootstrap",required:!1,isEditable:()=>!0}],ve=fe.filter(j=>j.required),Z=fe.filter(j=>!j.required),V=ce(()=>ve.filter(j=>C(j.key))),Q=ce(()=>Z.filter(j=>C(j.key)));function C(j){const U=me.value;if(!U)return!0;switch(j){case"schedule":return U.schedule!==!1;case"comm":return U.comm_binding!==!1;case"bootstrap":return U.bootstrap_script!==!1;case"deploy-history":return U.bootstrap_script!==!1;default:return!0}}const B=ce(()=>{const j=fe.find(U=>U.key===w.value);return j?j.isEditable(W.value):!0});function L(j){const U=fe.find(ee=>ee.key===j);return U?U.isEditable(W.value):!0}const ie=ce(()=>ve.find(j=>!W.value[j.readinessKey]));async function ue(j){const U=++K;y.value=!0,$.value="";try{const ee=await ut.get(j);if(U!==K)return;m.value=ee.data}catch{if(U!==K)return;$.value="加载详情失败"}finally{U===K&&(y.value=!1)}}Ie(()=>{le(),ue(p.agentId)}),$e(()=>p.agentId,j=>{j&&ue(j)});function X(){ue(p.agentId)}function P(){I("deleted")}function E(){ue(p.agentId)}return(j,U)=>(s(),o("div",kv,[e("header",wv,[e("div",$v,[e("div",Cv,[a(t(T),{variant:"ghost",size:"sm",class:"gap-1 text-muted-foreground shrink-0",onClick:U[0]||(U[0]=ee=>I("back"))},{default:r(()=>[a(t(ra),{class:"h-4 w-4"}),U[6]||(U[6]=i(" 返回 ",-1))]),_:1}),m.value?(s(),o(N,{key:0},[U[7]||(U[7]=e("div",{class:"h-4 w-px bg-border/50"},null,-1)),e("h1",Sv,n(m.value.name),1),a(t(Y),{variant:"outline",class:ae(["text-[10px] shrink-0",t(Ft)(m.value.role)])},{default:r(()=>[i(n(t(Rt)(m.value.role)),1)]),_:1},8,["class"]),a(t(Y),{variant:"outline",class:ae(["text-[10px] shrink-0",t(ul)(m.value.status)])},{default:r(()=>[i(n(t(ks)(m.value.status)),1)]),_:1},8,["class"])],64)):k("",!0)]),m.value?(s(),o("div",Iv,[a(t(T),{variant:"outline",size:"sm",class:"h-7 gap-1 text-xs",onClick:U[1]||(U[1]=ee=>q.value=!0)},{default:r(()=>[a(t(Le),{class:"h-3 w-3"}),U[8]||(U[8]=i(" 编辑 ",-1))]),_:1}),a(t(T),{variant:"outline",size:"sm",class:"h-7 gap-1 text-xs text-rose-500 hover:text-rose-600 hover:bg-rose-50",onClick:U[2]||(U[2]=ee=>A.value=!0)},{default:r(()=>[a(t(st),{class:"h-3 w-3"}),U[9]||(U[9]=i(" 删除 ",-1))]),_:1})])):k("",!0)])]),e("main",qv,[y.value?(s(),o("div",Mv,[a(t(re),{class:"h-7 w-7 animate-spin text-muted-foreground"})])):$.value?(s(),o("div",Av,[a(t(ye),{class:"h-7 w-7 mb-2 text-rose-400"}),e("p",zv,n($.value),1)])):m.value?(s(),o("div",Pv,[e("div",Tv,[e("div",Dv,[e("div",Bv,[e("div",Vv,[e("div",{class:ae(["shrink-0 h-9 w-9 rounded-lg flex items-center justify-center text-xs font-bold",t(Ft)(m.value.role)])},n(t(Rt)(m.value.role).charAt(0)),3),e("div",Ov,[e("p",Ev,n(m.value.slug),1),m.value.description?(s(),o("p",jv,n(m.value.description),1)):(s(),o("p",Rv,"暂无描述"))])]),e("div",Fv,[e("div",null,[U[11]||(U[11]=e("div",{class:"text-[11px] text-muted-foreground/50"},"配置版本",-1)),e("div",Uv,[i(" v"+n(m.value.config_version)+" ",1),m.value.deployed_config_version!==null?(s(),o(N,{key:0},[U[10]||(U[10]=e("span",{class:"text-muted-foreground/40 mx-0.5"},"→",-1)),i(" v"+n(m.value.deployed_config_version),1)],64)):k("",!0)])]),m.value.deployed_config_version!==null?(s(),_(t(Y),{key:0,variant:"outline",class:ae(["text-[10px]",m.value.needs_redeploy?"text-amber-400 border-amber-500/20 bg-amber-500/5":"text-emerald-400 border-emerald-500/20 bg-emerald-500/5"])},{default:r(()=>[i(n(m.value.needs_redeploy?"需重新部署":"已同步"),1)]),_:1},8,["class"])):k("",!0)])]),e("div",Lv,[e("div",Nv,[U[12]||(U[12]=e("span",{class:"text-[11px] text-muted-foreground/50 font-medium"},"必填配置",-1)),e("span",{class:ae(["text-[11px] tabular-nums",t(O).done===t(O).total?"text-emerald-400":"text-muted-foreground/50"])},n(t(O).done)+" / "+n(t(O).total),3)]),e("div",Kv,[(s(!0),o(N,null,se(V.value,ee=>(s(),o("button",{key:ee.key,class:ae(["flex items-center gap-1 text-[11px] px-2.5 py-1 rounded-md transition-colors",[t(W)[ee.readinessKey]?"text-emerald-400 bg-emerald-500/5 hover:bg-emerald-500/10":ie.value?.key===ee.key?"text-primary bg-primary/5 ring-1 ring-primary/20 hover:bg-primary/10":"text-muted-foreground/40 bg-muted/20 hover:bg-muted/30"]]),onClick:ge=>H(ee.key)},[t(W)[ee.readinessKey]?(s(),_(t(ht),{key:0,class:"h-3 w-3"})):(s(),_(t(vs),{key:1,class:"h-3 w-3"})),i(" "+n(ee.label)+" ",1),ie.value?.key===ee.key?(s(),o("span",Hv,"← 下一步")):k("",!0)],10,Gv))),128))]),e("div",Wv,[U[13]||(U[13]=e("span",{class:"text-[11px] text-muted-foreground/30 font-medium"},"可选",-1)),(s(!0),o(N,null,se(Q.value,ee=>(s(),o("button",{key:ee.key,class:"flex items-center gap-1 text-[11px] px-2 py-0.5 rounded-md text-muted-foreground/30 hover:text-muted-foreground/50 hover:bg-muted/20 transition-colors",onClick:ge=>H(ee.key)},[i(n(ee.label)+" ",1),ee.key==="schedule"&&t(F)?(s(),o(N,{key:0},[t(F).schedules_count>0?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[9px] px-1 py-0 h-3.5 text-muted-foreground/40"},{default:r(()=>[i(n(t(F).schedules_count),1)]),_:1})):k("",!0)],64)):k("",!0),ee.key==="comm"&&t(F)?(s(),o(N,{key:1},[t(F).comm_bindings_count>0?(s(),_(t(Y),{key:0,variant:"outline",class:"text-[9px] px-1 py-0 h-3.5 text-muted-foreground/40"},{default:r(()=>[i(n(t(F).comm_bindings_count),1)]),_:1})):k("",!0)],64)):k("",!0)],8,Yv))),128))])])])]),a(t(Es),{"model-value":w.value,"onUpdate:modelValue":U[3]||(U[3]=ee=>H(String(ee))),class:"w-full"},{default:r(()=>[a(t(Vs),{class:"bg-transparent border-b rounded-none w-full justify-start h-auto p-0 gap-0"},{default:r(()=>[(s(!0),o(N,null,se(fe.filter(ee=>C(ee.key)),ee=>(s(),_(t(Os),{key:ee.key,value:ee.key,class:"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:shadow-none gap-1.5 text-xs px-4 py-2.5 relative"},{default:r(()=>[(s(),_(As(ee.icon),{class:"h-3.5 w-3.5"})),i(" "+n(ee.label)+" ",1),ee.required&&t(W)[ee.readinessKey]?(s(),o("span",Xv)):ee.isEditable(t(W))?k("",!0):(s(),_(t(Qt),{key:1,class:"h-2.5 w-2.5 text-muted-foreground/30 ml-0.5"}))]),_:2},1032,["value"]))),128))]),_:1}),B.value?k("",!0):(s(),o("div",Qv,[a(t(Qt),{class:"h-4 w-4 text-amber-400 shrink-0"}),e("p",Zv,[U[14]||(U[14]=i(" 请先完成 ",-1)),e("strong",Jv,n(fe.find(ee=>ee.key===w.value)?.prerequisiteLabel),1),U[15]||(U[15]=i(" 的配置,以启用此模块的编辑功能。 ",-1))])])),a(t(Ye),{value:"basic",class:"mt-5"},{default:r(()=>[a(Go,{agent:m.value,onSaved:E},null,8,["agent"])]),_:1}),a(t(Ye),{value:"host",class:"mt-5"},{default:r(()=>[a(Cn,{ref_key:"platformConfigTabRef",ref:v,"agent-id":l.agentId,"host-platform":J.value,onSaved:E},null,8,["agent-id","host-platform"])]),_:1}),a(t(Ye),{value:"prompt",class:"mt-5"},{default:r(()=>[a(Gr,{ref_key:"promptTabRef",ref:g,"agent-id":l.agentId,"host-platform":J.value,disabled:!L("prompt"),onSaved:E},null,8,["agent-id","host-platform","disabled"])]),_:1}),a(t(Ye),{value:"schedule",class:"mt-5"},{default:r(()=>[a(Si,{"agent-id":l.agentId,"agent-role":m.value?.role,disabled:!L("schedule")},null,8,["agent-id","agent-role","disabled"])]),_:1}),a(t(Ye),{value:"comm",class:"mt-5"},{default:r(()=>[a($u,{"agent-id":l.agentId,"host-platform":J.value,disabled:!L("comm"),onSaved:E},null,8,["agent-id","host-platform","disabled"])]),_:1}),a(t(Ye),{value:"bootstrap",class:"mt-5"},{default:r(()=>[a(Uf,{"agent-id":l.agentId,agent:m.value,disabled:!L("bootstrap"),onSaved:E},null,8,["agent-id","agent","disabled"])]),_:1}),a(t(Ye),{value:"deploy-history",class:"mt-5"},{default:r(()=>[a(av,{"agent-id":l.agentId},null,8,["agent-id"])]),_:1})]),_:1},8,["model-value"])])):k("",!0)]),a(iv,{open:q.value,"onUpdate:open":U[4]||(U[4]=ee=>q.value=ee),agent:m.value,onSaved:X},null,8,["open","agent"]),a(hv,{open:A.value,"onUpdate:open":U[5]||(U[5]=ee=>A.value=ee),agent:m.value,onDeleted:P},null,8,["open","agent"]),(s(),_(he,{to:"body"},[G.value?(s(),o("div",e1,[e("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:M}),e("div",t1,[a(t(zs),{class:"h-8 w-8 mx-auto text-amber-500"}),U[18]||(U[18]=e("h3",{class:"text-base font-semibold"},"未保存的修改",-1)),U[19]||(U[19]=e("p",{class:"text-sm text-muted-foreground"}," 当前有未保存的修改,切换后将丢失。 ",-1)),e("div",s1,[a(t(T),{variant:"outline",class:"flex-1",onClick:M},{default:r(()=>[...U[16]||(U[16]=[i("继续编辑",-1)])]),_:1}),a(t(T),{variant:"destructive",class:"flex-1",onClick:D},{default:r(()=>[...U[17]||(U[17]=[i("放弃修改",-1)])]),_:1})])])])):k("",!0)]))]))}}),l1=ne({__name:"AgentsView",setup(l){const h=b("list"),p=b(null);function I(y){p.value=y,h.value="detail"}function m(){h.value="list",p.value=null}return(y,$)=>(s(),_(Ps,{name:"view",mode:"out-in",appear:""},{default:r(()=>[h.value==="list"?(s(),_(lo,{key:"list",onSelect:I})):p.value?(s(),_(a1,{key:p.value,"agent-id":p.value,onBack:m,onDeleted:m},null,8,["agent-id"])):k("",!0)]),_:1}))}}),F1=fs(l1,[["__scopeId","data-v-1bc6d336"]]);export{F1 as default}; diff --git a/cloudflare/pages/assets/AppLayout-B0mng0Hs.js b/cloudflare/pages/assets/AppLayout-B0mng0Hs.js new file mode 100644 index 0000000..7599fab --- /dev/null +++ b/cloudflare/pages/assets/AppLayout-B0mng0Hs.js @@ -0,0 +1 @@ +import{m as j,d as g,l as i,c,x as z,u as e,N as v,q as b,b as m,w as r,e as l,D as J,f as y,a,n as k,O as E,P as Y,F as D,t as S,y as F,r as O,k as Z,J as ee,o as te,s as ae,T,Q as U,g as se,i as $,L as R,X as P,R as le,M as re,K as oe,S as V}from"./index-BYiXDk_r.js";import{w as H}from"./webui-BTCBRLGR.js";import{a as ie,b as ne,c as de,_ as ue}from"./SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js";import{_ as ce}from"./SheetDescription.vue_vue_type_script_setup_true_lang-CC6GyU0A.js";import{c as pe}from"./createContext-a9Tpfoxo.js";import{P as G,_ as A,c as be}from"./index-D0L1R3xN.js";import{a as fe,b as me,_ as ve}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js";import{u as ge,a as he,b as xe,d as _e}from"./index-CEPd9Ray.js";import{T as ye}from"./TooltipProvider-Ck2YUJut.js";import{r as ke}from"./index-Ct5H-N73.js";import{_ as we}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{U as $e}from"./users-C4rtE1G7.js";import{L as Se}from"./list-todo-DaXA5Y93.js";import{T as Ae}from"./trophy-BMFdgvc4.js";import{S as Be}from"./scroll-text-XmJfG4_f.js";import{F as Ce}from"./file-search-DRPM2poS.js";import{S as Oe}from"./settings-CzMAO35A.js";import{D as ze}from"./download-Cz1Slb-U.js";import{_ as Me}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./VisuallyHidden-DmVvgUgH.js";import"./useForwardExpose-DjCgLuye.js";import"./Presence-Sy1r65hd.js";import"./utils-TyZrBBEb.js";const je=j("book-text",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M8 7h6",key:"1f0q6e"}]]);const Ie=j("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);const N=j("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);const Te=j("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]),W="sidebar_state",De=3600*24*7,Le="16rem",Ee="18rem",Ue="3rem",Re="b",[L,Pe]=pe("Sidebar"),Ve={class:"flex h-full w-full flex-col"},He=["data-state","data-collapsible","data-variant","data-side"],Ne={"data-sidebar":"sidebar",class:"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm"},We=g({inheritAttrs:!1,__name:"Sidebar",props:{side:{default:"left"},variant:{default:"sidebar"},collapsible:{default:"offcanvas"},class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t,{isMobile:o,state:d,openMobile:_,setOpenMobile:f}=L();return(u,p)=>t.collapsible==="none"?(i(),c("div",z({key:0,"data-slot":"sidebar",class:e(v)("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",n.class)},u.$attrs),[b(u.$slots,"default")],16)):e(o)?(i(),m(e(ue),z({key:1,open:e(_)},u.$attrs,{"onUpdate:open":e(f)}),{default:r(()=>[l(e(ie),{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",side:t.side,class:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",style:J({"--sidebar-width":e(Ee)})},{default:r(()=>[l(ne,{class:"sr-only"},{default:r(()=>[l(de,null,{default:r(()=>[...p[0]||(p[0]=[y("Sidebar",-1)])]),_:1}),l(ce,null,{default:r(()=>[...p[1]||(p[1]=[y("Displays the mobile sidebar.",-1)])]),_:1})]),_:1}),a("div",Ve,[b(u.$slots,"default")])]),_:3},8,["side","style"])]),_:3},16,["open","onUpdate:open"])):(i(),c("div",{key:2,class:"group peer text-sidebar-foreground hidden md:block","data-slot":"sidebar","data-state":e(d),"data-collapsible":e(d)==="collapsed"?t.collapsible:"","data-variant":t.variant,"data-side":t.side},[a("div",{class:k(e(v)("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180",t.variant==="floating"||t.variant==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)"))},null,2),a("div",z({class:e(v)("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",t.side==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t.variant==="floating"||t.variant==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",n.class)},u.$attrs),[a("div",Ne,[b(u.$slots,"default")])],16)],8,He))}}),Ke=g({__name:"SidebarContent",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("div",{"data-slot":"sidebar-content","data-sidebar":"content",class:k(e(v)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",n.class))},[b(o.$slots,"default")],2))}}),Fe=g({__name:"SidebarFooter",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",class:k(e(v)("flex flex-col gap-2 p-2",n.class))},[b(o.$slots,"default")],2))}}),Ge=g({__name:"SidebarGroup",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("div",{"data-slot":"sidebar-group","data-sidebar":"group",class:k(e(v)("relative flex w-full min-w-0 flex-col p-2",n.class))},[b(o.$slots,"default")],2))}}),qe=g({__name:"SidebarGroupContent",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",class:k(e(v)("w-full text-sm",n.class))},[b(o.$slots,"default")],2))}}),Qe=g({__name:"SidebarGroupLabel",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),m(e(G),{"data-slot":"sidebar-group-label","data-sidebar":"group-label",as:t.as,"as-child":t.asChild,class:k(e(v)("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",n.class))},{default:r(()=>[b(o.$slots,"default")]),_:3},8,["as","as-child","class"]))}}),Xe=g({__name:"SidebarHeader",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("div",{"data-slot":"sidebar-header","data-sidebar":"header",class:k(e(v)("flex flex-col gap-2 p-2",n.class))},[b(o.$slots,"default")],2))}}),Je=g({__name:"SidebarInset",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("main",{"data-slot":"sidebar-inset",class:k(e(v)("bg-background relative flex w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",n.class))},[b(o.$slots,"default")],2))}}),Ye=g({__name:"SidebarMenu",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",class:k(e(v)("flex w-full min-w-0 flex-col gap-1",n.class))},[b(o.$slots,"default")],2))}}),K=g({__name:"SidebarMenuButtonChild",props:{variant:{default:"default"},size:{default:"default"},isActive:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]},asChild:{type:Boolean},as:{default:"button"}},setup(t){const n=t;return(o,d)=>(i(),m(e(G),z({"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":t.size,"data-active":t.isActive,class:e(v)(e(st)({variant:t.variant,size:t.size}),n.class),as:t.as,"as-child":t.asChild},o.$attrs),{default:r(()=>[b(o.$slots,"default")]),_:3},16,["data-size","data-active","class","as","as-child"]))}}),Ze=g({inheritAttrs:!1,__name:"SidebarMenuButton",props:{variant:{default:"default"},size:{default:"default"},isActive:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]},asChild:{type:Boolean},as:{default:"button"},tooltip:{}},setup(t){const n=t,{isMobile:o,state:d}=L(),_=ke(n,"tooltip");return(f,u)=>t.tooltip?(i(),m(e(ve),{key:1},{default:r(()=>[l(e(fe),{"as-child":""},{default:r(()=>[l(K,E(Y({...e(_),...f.$attrs})),{default:r(()=>[b(f.$slots,"default")]),_:3},16)]),_:3}),l(e(me),{side:"right",align:"center",hidden:e(d)!=="collapsed"||e(o)},{default:r(()=>[typeof t.tooltip=="string"?(i(),c(D,{key:0},[y(S(t.tooltip),1)],64)):(i(),m(F(t.tooltip),{key:1}))]),_:1},8,["hidden"])]),_:3})):(i(),m(K,E(z({key:0},{...e(_),...f.$attrs})),{default:r(()=>[b(f.$slots,"default")]),_:3},16))}}),et=g({__name:"SidebarMenuItem",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t;return(o,d)=>(i(),c("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",class:k(e(v)("group/menu-item relative",n.class))},[b(o.$slots,"default")],2))}}),tt=g({__name:"SidebarProvider",props:{defaultOpen:{type:Boolean,default:!_e?.cookie.includes(`${W}=false`)},open:{type:Boolean,default:void 0},class:{type:[Boolean,null,String,Object,Array]}},emits:["update:open"],setup(t,{emit:n}){const o=t,d=n,_=ge("(max-width: 768px)"),f=O(!1),u=he(o,"open",d,{defaultValue:o.defaultOpen??!1,passive:o.open===void 0});function p(h){u.value=h,document.cookie=`${W}=${u.value}; path=/; max-age=${De}`}function w(h){f.value=h}function B(){return _.value?w(!f.value):p(!u.value)}xe("keydown",h=>{h.key===Re&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),B())});const M=Z(()=>u.value?"expanded":"collapsed");return Pe({state:M,open:u,setOpen:p,isMobile:_,openMobile:f,setOpenMobile:w,toggleSidebar:B}),(h,I)=>(i(),m(e(ye),{"delay-duration":0},{default:r(()=>[a("div",z({"data-slot":"sidebar-wrapper",style:{"--sidebar-width":e(Le),"--sidebar-width-icon":e(Ue)},class:e(v)("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",o.class)},h.$attrs),[b(h.$slots,"default")],16)]),_:3}))}}),at=g({__name:"SidebarTrigger",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(t){const n=t,{toggleSidebar:o}=L();return(d,_)=>(i(),m(e(A),{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon",class:k(e(v)("h-7 w-7",n.class)),onClick:e(o)},{default:r(()=>[l(e(Te)),_[0]||(_[0]=a("span",{class:"sr-only"},"Toggle Sidebar",-1))]),_:1},8,["class","onClick"]))}}),st=be("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}}),lt={class:"flex items-center gap-3.5 mb-3"},rt={class:"flex flex-col justify-center"},ot={class:"flex flex-col items-start gap-1 mt-0.5"},it={class:"text-[9px] font-medium px-1.5 py-0.5 rounded-md bg-blue-50 text-blue-600 border border-blue-200/60 dark:bg-blue-500/10 dark:text-blue-400 dark:border-blue-500/20 leading-none"},nt={class:"text-base"},dt={class:"flex h-14 items-center gap-2 border-b px-4 bg-background/80 backdrop-blur-md sticky top-0 z-10"},ut={class:"text-sm font-medium"},ct={key:0,class:"px-4 pt-2"},pt={key:0,class:"flex items-center gap-3 rounded-xl border border-blue-200 bg-blue-50 px-4 py-2.5 dark:border-blue-900 dark:bg-blue-950/50"},bt={class:"flex-1 text-sm text-blue-800 dark:text-blue-200"},ft={key:0,class:"text-blue-600/60 dark:text-blue-400/60"},mt={key:1,class:"flex items-center gap-3 rounded-xl border border-amber-200 bg-amber-50 px-4 py-2.5 dark:border-amber-900 dark:bg-amber-950/50"},vt={class:"flex-1 text-sm text-amber-800 dark:text-amber-200"},gt={class:"flex-1 p-6"},ht={key:0,class:"fixed inset-0 z-50 flex items-center justify-center"},xt={class:"relative z-10 w-full max-w-sm rounded-2xl border bg-background/95 backdrop-blur-xl p-6 shadow-[var(--shadow-lg)] animate-in fade-in zoom-in-95 duration-200"},_t={class:"space-y-2 text-center"},yt={class:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-muted"},kt={class:"mt-6 flex gap-3"},wt={key:0,class:"fixed inset-0 z-50 flex items-center justify-center"},$t={class:"relative z-10 w-full max-w-sm rounded-2xl border bg-background/95 backdrop-blur-xl p-6 shadow-[var(--shadow-lg)] animate-in fade-in zoom-in-95 duration-200"},St={class:"mt-6 flex gap-3"},At=g({__name:"AppLayout",setup(t){const n=re(),o=oe(),d=ee(),_="0.0.1",f=O(!1),u=O(!1),p=O(null),w=O(!1),B=O(!1);te(async()=>{try{const{data:C}=await ae.status();C.initialized&&!C.has_external_url&&(u.value=!0)}catch{}try{const{data:C}=await H.version();p.value=C,C.update_available&&(B.value=!0)}catch{}});async function M(){w.value=!0;try{await H.update(),p.value=null,B.value=!1,setTimeout(()=>window.location.reload(),1500)}catch{w.value=!1}}function h(){B.value=!1}const I=[{title:"仪表盘",icon:Ie,path:"/dashboard"},{title:"Agent 管理",icon:$e,path:"/agents"},{title:"任务管理",icon:Se,path:"/tasks"},{title:"积分排行",icon:Ae,path:"/scores"},{title:"活动日志",icon:Be,path:"/logs"},{title:"审查记录",icon:Ce,path:"/reviews"},{title:"提示词管理",icon:je,path:"/prompts"},{title:"系统设置",icon:Oe,path:"/settings"}];function q(){d.logout(),n.push("/login")}return(C,s)=>{const Q=V("router-link"),X=V("router-view");return i(),c(D,null,[l(e(tt),null,{default:r(()=>[l(e(We),null,{default:r(()=>[l(e(Xe),{class:"px-5 pt-6 pb-4"},{default:r(()=>[a("div",lt,[s[8]||(s[8]=a("div",{class:"flex h-10 w-10 items-center justify-center rounded-2xl bg-primary text-primary-foreground text-base font-bold shadow-[var(--shadow-sm)]"}," M ",-1)),a("div",rt,[s[7]||(s[7]=a("div",{class:"font-bold text-base tracking-tight"},"OpenMOSS",-1)),a("div",ot,[s[6]||(s[6]=a("span",{class:"text-[11px] text-muted-foreground/60 leading-none"},"多 Agent 协作平台",-1)),a("span",it,"WebUI v"+S(e(_)),1)])])]),s[9]||(s[9]=a("div",{class:"h-[2px] rounded-full bg-gradient-to-r from-primary/30 via-primary/10 to-transparent"},null,-1))]),_:1}),l(e(Ke),null,{default:r(()=>[l(e(Ge),null,{default:r(()=>[l(e(Qe),{class:"px-5 text-[10px] uppercase tracking-widest text-muted-foreground/50 font-semibold"},{default:r(()=>[...s[10]||(s[10]=[y(" 导航",-1)])]),_:1}),l(e(qe),null,{default:r(()=>[l(e(Ye),{class:"space-y-1 px-2"},{default:r(()=>[(i(),c(D,null,se(I,x=>l(e(et),{key:x.path},{default:r(()=>[l(e(Ze),{"as-child":"","is-active":e(o).path===x.path},{default:r(()=>[l(Q,{to:x.path,class:"group/link transition-all duration-150 hover:translate-x-0.5 !py-5 !gap-4 !rounded-xl"},{default:r(()=>[(i(),m(F(x.icon),{class:k(["h-6 w-6 shrink-0 transition-opacity duration-150",e(o).path===x.path?"opacity-100":"opacity-50 group-hover/link:opacity-80"])},null,8,["class"])),a("span",nt,S(x.title),1)]),_:2},1032,["to"])]),_:2},1032,["is-active"])]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),_:1}),l(e(Fe),{class:"px-4 pb-5 pt-3"},{default:r(()=>[l(e(A),{variant:"ghost",size:"sm",class:"w-full justify-start gap-2 text-muted-foreground hover:text-destructive transition-colors duration-150 h-9",onClick:s[0]||(s[0]=x=>f.value=!0)},{default:r(()=>[l(e(N),{class:"h-4 w-4"}),s[11]||(s[11]=a("span",{class:"text-sm"},"退出登录",-1))]),_:1})]),_:1})]),_:1}),l(e(Je),null,{default:r(()=>[a("header",dt,[l(e(at)),l(e(we),{orientation:"vertical",class:"h-4"}),a("h1",ut,S(I.find(x=>x.path===e(o).path)?.title||""),1)]),l(T,{name:"slide-down"},{default:r(()=>[B.value&&p.value?(i(),c("div",ct,[p.value.update_type==="upgrade"?(i(),c("div",pt,[l(e(ze),{class:"h-4 w-4 shrink-0 text-blue-600 dark:text-blue-400"}),a("span",bt,[s[12]||(s[12]=y(" 🎉 WebUI ",-1)),a("strong",null,"v"+S(p.value.latest_version),1),s[13]||(s[13]=y(" 可用 ",-1)),p.value.current_version?(i(),c("span",ft," (当前 v"+S(p.value.current_version)+") ",1)):$("",!0)]),e(d).isAuthenticated?(i(),m(e(A),{key:0,size:"sm",variant:"outline",class:"h-7 border-blue-300 text-blue-700 hover:bg-blue-100 dark:border-blue-800 dark:text-blue-300 dark:hover:bg-blue-900/50",disabled:w.value,onClick:M},{default:r(()=>[w.value?(i(),m(e(R),{key:0,class:"mr-1 h-3 w-3 animate-spin"})):$("",!0),y(" "+S(w.value?"更新中...":"立即更新"),1)]),_:1},8,["disabled"])):$("",!0),a("button",{class:"text-blue-400 hover:text-blue-600 dark:hover:text-blue-300",onClick:h},[l(e(P),{class:"h-3.5 w-3.5"})])])):p.value.update_type==="rollback"?(i(),c("div",mt,[l(e(le),{class:"h-4 w-4 shrink-0 text-amber-600 dark:text-amber-400"}),a("span",vt," ⚠️ 当前版本 v"+S(p.value.current_version)+" 已被撤回 ",1),e(d).isAuthenticated?(i(),m(e(A),{key:0,size:"sm",variant:"outline",class:"h-7 border-amber-300 text-amber-700 hover:bg-amber-100 dark:border-amber-800 dark:text-amber-300 dark:hover:bg-amber-900/50",disabled:w.value,onClick:M},{default:r(()=>[w.value?(i(),m(e(R),{key:0,class:"mr-1 h-3 w-3 animate-spin"})):$("",!0),y(" "+S(w.value?"恢复中...":`恢复到 v${p.value.latest_version}`),1)]),_:1},8,["disabled"])):$("",!0),a("button",{class:"text-amber-400 hover:text-amber-600 dark:hover:text-amber-300",onClick:h},[l(e(P),{class:"h-3.5 w-3.5"})])])):$("",!0)])):$("",!0)]),_:1}),a("main",gt,[l(X)])]),_:1})]),_:1}),(i(),m(U,{to:"body"},[l(T,{name:"fade"},{default:r(()=>[f.value?(i(),c("div",ht,[a("div",{class:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:s[1]||(s[1]=x=>f.value=!1)}),a("div",xt,[a("div",_t,[a("div",yt,[l(e(N),{class:"h-5 w-5 text-muted-foreground"})]),s[14]||(s[14]=a("h2",{class:"text-lg font-semibold"},"确认退出",-1)),s[15]||(s[15]=a("p",{class:"text-sm text-muted-foreground"},"退出后需要重新输入管理员密码登录",-1))]),a("div",kt,[l(e(A),{variant:"outline",class:"flex-1",onClick:s[2]||(s[2]=x=>f.value=!1)},{default:r(()=>[...s[16]||(s[16]=[y("取消",-1)])]),_:1}),l(e(A),{variant:"destructive",class:"flex-1",onClick:q},{default:r(()=>[...s[17]||(s[17]=[y("确认退出",-1)])]),_:1})])])])):$("",!0)]),_:1})])),(i(),m(U,{to:"body"},[l(T,{name:"fade"},{default:r(()=>[u.value?(i(),c("div",wt,[a("div",{class:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:s[3]||(s[3]=x=>u.value=!1)}),a("div",$t,[s[20]||(s[20]=a("div",{class:"space-y-2 text-center"},[a("div",{class:"text-3xl mb-2"},"⚠️"),a("h2",{class:"text-lg font-semibold"},"请配置服务访问地址"),a("p",{class:"text-sm text-muted-foreground"}," OpenMOSS 需要一个外网可访问的地址,用于: "),a("ul",{class:"text-sm text-muted-foreground text-left ml-4 list-disc space-y-1"},[a("li",null,"Agent 下载工具脚本"),a("li",null,"Agent 对接任务系统"),a("li",null,"生成 Agent 入驻 Prompt")]),a("p",{class:"text-xs text-muted-foreground mt-2"}," 示例:https://moss.example.com ")],-1)),a("div",St,[l(e(A),{variant:"outline",class:"flex-1",onClick:s[4]||(s[4]=x=>u.value=!1)},{default:r(()=>[...s[18]||(s[18]=[y("稍后再说",-1)])]),_:1}),l(e(A),{class:"flex-1",onClick:s[5]||(s[5]=x=>{u.value=!1,e(n).push("/settings")})},{default:r(()=>[...s[19]||(s[19]=[y("前往设置",-1)])]),_:1})])])])):$("",!0)]),_:1})]))],64)}}}),Xt=Me(At,[["__scopeId","data-v-a97a3ae3"]]);export{Xt as default}; diff --git a/cloudflare/pages/assets/AppLayout-qgctDjpy.css b/cloudflare/pages/assets/AppLayout-qgctDjpy.css new file mode 100644 index 0000000..055b38b --- /dev/null +++ b/cloudflare/pages/assets/AppLayout-qgctDjpy.css @@ -0,0 +1 @@ +.fade-enter-active[data-v-a97a3ae3],.fade-leave-active[data-v-a97a3ae3]{transition:opacity .2s ease}.fade-enter-from[data-v-a97a3ae3],.fade-leave-to[data-v-a97a3ae3]{opacity:0}.slide-down-enter-active[data-v-a97a3ae3],.slide-down-leave-active[data-v-a97a3ae3]{transition:all .3s ease}.slide-down-enter-from[data-v-a97a3ae3],.slide-down-leave-to[data-v-a97a3ae3]{opacity:0;transform:translateY(-8px)} diff --git a/cloudflare/pages/assets/CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js b/cloudflare/pages/assets/CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js new file mode 100644 index 0000000..a99112c --- /dev/null +++ b/cloudflare/pages/assets/CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js @@ -0,0 +1 @@ +import{d as r,c as t,n,u as o,N as c,q as l,l as d}from"./index-BYiXDk_r.js";const _=r({__name:"Card",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(a){const s=a;return(e,p)=>(d(),t("div",{"data-slot":"card",class:n(o(c)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",s.class))},[l(e.$slots,"default")],2))}}),f=r({__name:"CardContent",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(a){const s=a;return(e,p)=>(d(),t("div",{"data-slot":"card-content",class:n(o(c)("px-6",s.class))},[l(e.$slots,"default")],2))}});export{_,f as a}; diff --git a/cloudflare/pages/assets/CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js b/cloudflare/pages/assets/CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js new file mode 100644 index 0000000..a2d4e00 --- /dev/null +++ b/cloudflare/pages/assets/CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js @@ -0,0 +1 @@ +import{d as a,c as r,n,u as o,N as c,q as l,l as p}from"./index-BYiXDk_r.js";const m=a({__name:"CardDescription",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const s=e;return(t,d)=>(p(),r("p",{"data-slot":"card-description",class:n(o(c)("text-muted-foreground text-sm",s.class))},[l(t.$slots,"default")],2))}});export{m as _}; diff --git a/cloudflare/pages/assets/CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js b/cloudflare/pages/assets/CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js new file mode 100644 index 0000000..891703c --- /dev/null +++ b/cloudflare/pages/assets/CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js @@ -0,0 +1 @@ +import{d as r,c as t,n as o,u as n,N as l,q as c,l as d}from"./index-BYiXDk_r.js";const u=r({__name:"CardHeader",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(a){const s=a;return(e,i)=>(d(),t("div",{"data-slot":"card-header",class:o(n(l)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",s.class))},[c(e.$slots,"default")],2))}}),_=r({__name:"CardTitle",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(a){const s=a;return(e,i)=>(d(),t("h3",{"data-slot":"card-title",class:o(n(l)("leading-none font-semibold",s.class))},[c(e.$slots,"default")],2))}});export{_,u as a}; diff --git a/cloudflare/pages/assets/DashboardView-Cu7R9jUe.js b/cloudflare/pages/assets/DashboardView-Cu7R9jUe.js new file mode 100644 index 0000000..e3fef68 --- /dev/null +++ b/cloudflare/pages/assets/DashboardView-Cu7R9jUe.js @@ -0,0 +1 @@ +import{m as et,p as E,d as dt,o as it,C as ut,c as i,e as d,u as n,a as e,t as l,w as u,L as ct,F as p,g as b,b as M,n as g,i as v,r as F,k as X,E as Y,l as r,f as h,y as _t,D as T,R as mt,U as pt}from"./index-BYiXDk_r.js";import{_ as y,a as w}from"./CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js";import{a as j,_ as A}from"./CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js";import{_ as tt}from"./index-D0L1R3xN.js";import{_ as Z}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{C as bt}from"./circle-alert-DI3FQNzC.js";import{T as ft,a as gt}from"./trending-up-9TLdiVqg.js";import{R as xt}from"./refresh-cw-DOzI5zLk.js";import{C as vt}from"./clock-ZB7HOEvr.js";import{Z as ht}from"./zap-B-kRHIBE.js";import{S as yt}from"./star-VmEUsCX9.js";import{L as wt}from"./list-todo-DaXA5Y93.js";import{A as kt}from"./activity-SKRWHPM4.js";import{C as It}from"./clipboard-check-B8B0idlM.js";import{U as $t}from"./users-C4rtE1G7.js";import{_ as Ct}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-Ct5H-N73.js";const Mt=et("ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}]]);const jt=et("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),H={overview:()=>E.get("/admin/dashboard/overview"),highlights:N=>E.get("/admin/dashboard/highlights",{params:N}),trends:N=>E.get("/admin/dashboard/trends",{params:N})},At={class:"flex flex-col h-[calc(100vh-3.5rem)] overflow-y-auto"},Kt={key:0,class:"flex flex-col items-center justify-center py-16"},Tt={class:"mt-2 text-sm"},Dt={key:1,class:"flex items-center justify-center py-16"},qt={key:2,class:"p-5 space-y-6 max-w-5xl mx-auto w-full"},Lt={class:"flex items-center justify-between"},St={class:"text-xs text-muted-foreground/60"},Rt={class:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3"},Ft={class:"text-2xl font-bold tabular-nums leading-tight"},Nt={class:"text-xs text-muted-foreground"},Bt={class:"grid gap-3 sm:grid-cols-2 lg:grid-cols-5"},Pt={class:"rounded-lg border border-border/40 bg-card p-3 text-center animate-slide-up",style:{"animation-delay":"300ms"}},Vt={class:"text-lg font-bold tabular-nums"},zt={class:"rounded-lg border border-border/40 bg-card p-3 text-center animate-slide-up",style:{"animation-delay":"350ms"}},Ut={class:"text-lg font-bold tabular-nums"},Et={class:"rounded-lg border border-border/40 bg-card p-3 text-center animate-slide-up",style:{"animation-delay":"400ms"}},Zt={class:"text-lg font-bold tabular-nums"},Ht={class:"rounded-lg border border-border/40 bg-card p-3 text-center animate-slide-up",style:{"animation-delay":"450ms"}},Gt={class:"text-lg font-bold tabular-nums"},Ot={class:"rounded-lg border border-border/40 bg-card p-3 text-center animate-slide-up",style:{"animation-delay":"500ms"}},Wt={class:"flex items-center justify-center gap-1"},Jt={class:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3"},Qt={class:"flex-1 truncate"},Xt={class:"font-medium tabular-nums"},Yt={class:"text-[10px] text-muted-foreground/50 w-8 text-right tabular-nums"},te={class:"h-2 rounded-full bg-muted overflow-hidden flex mt-2"},ee={class:"flex-1 truncate"},se={class:"font-medium tabular-nums"},ae={class:"text-[10px] text-muted-foreground/50 w-8 text-right tabular-nums"},oe={class:"h-2 rounded-full bg-muted overflow-hidden flex mt-2"},ne={class:"flex-1 truncate"},re={class:"font-medium tabular-nums"},le={class:"text-[10px] text-muted-foreground/50 w-8 text-right tabular-nums"},de={class:"h-2 rounded-full bg-muted overflow-hidden flex mt-2"},ie={class:"flex-1 truncate"},ue={class:"font-medium tabular-nums"},ce={class:"text-[10px] text-muted-foreground/50 w-8 text-right tabular-nums"},_e={class:"h-2 rounded-full bg-muted overflow-hidden flex mt-2"},me={class:"flex-1 truncate"},pe={class:"font-medium tabular-nums"},be={class:"text-[10px] text-muted-foreground/50 w-8 text-right tabular-nums"},fe={class:"h-2 rounded-full bg-muted overflow-hidden flex mt-2"},ge={class:"flex items-center justify-between mb-3"},xe={class:"text-sm font-medium text-muted-foreground"},ve={class:"text-[10px] text-muted-foreground/50 tabular-nums"},he={class:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3"},ye={class:"flex items-center justify-between mb-1"},we={class:"text-xs text-muted-foreground"},ke=["viewBox"],Ie=["id"],$e=["stop-color"],Ce=["stop-color"],Me=["d","fill"],je=["d","stroke"],Ae=["x","width","onMouseenter"],Ke=["x1","x2","stroke"],Te=["cx","cy","fill"],De={key:0,class:"flex items-center justify-between text-[10px] text-muted-foreground px-1 -mt-1"},qe={class:"grid gap-4 sm:grid-cols-2"},Le={class:"flex items-center justify-between"},Se={class:"text-sm font-medium truncate flex-1"},Re={class:"text-[10px] text-muted-foreground/60 shrink-0 ml-2"},Fe={class:"text-[11px] text-muted-foreground mt-0.5 flex gap-3"},Ne={key:0},Be={key:1},Pe={class:"flex items-center justify-between"},Ve={class:"text-sm font-medium truncate flex-1"},ze={class:"text-[10px] text-muted-foreground/60 shrink-0 ml-2"},Ue={class:"text-[11px] text-muted-foreground mt-0.5"},Ee={key:0},Ze={class:"text-sm font-medium"},He={class:"text-[11px] text-muted-foreground ml-1"},Ge={class:"text-right"},Oe={class:"text-sm font-bold tabular-nums"},We={class:"text-[10px] text-muted-foreground/60"},Je={class:"text-sm font-medium"},Qe={class:"text-[11px] text-muted-foreground ml-1"},Xe={class:"text-[11px] text-muted-foreground/60"},Ye={class:"divide-y divide-border/20"},ts={class:"flex-1 min-w-0"},es={class:"text-sm truncate"},ss={class:"text-[11px] text-muted-foreground/60"},as={class:"text-amber-500 text-xs shrink-0"},os={class:"text-[10px] text-muted-foreground/50 shrink-0 tabular-nums"},q=200,D=40,ns=dt({__name:"DashboardView",setup(N){const z=F(!0),B=F(""),c=F(null),x=F(null),K=F(null);it(()=>{U()});async function U(){z.value=!0,B.value="";try{const[a,s,t]=await Promise.all([H.overview(),H.highlights({limit:5}),H.trends({days:7})]);c.value=a.data,x.value=s.data,K.value=t.data,await ut(),at()}catch(a){console.error("Failed to load dashboard",a),B.value="仪表盘数据加载失败"}finally{z.value=!1}}function P(a){if(!a)return"—";const s=Date.now(),t=new Date(a).getTime();if(Number.isNaN(t))return"—";const o=Math.floor((s-t)/1e3);return o<60?"刚刚":o<3600?`${Math.floor(o/60)} 分钟前`:o<86400?`${Math.floor(o/3600)} 小时前`:`${Math.floor(o/86400)} 天前`}const G={planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"};function st(a){return a.blocked_sub_tasks.length>0||a.pending_review_sub_tasks.length>0||a.busy_agents.length>0||a.low_activity_agents.length>0||a.recent_reviews.length>0}const L=Y({});function O(a,s,t=800){const o=L[a]||0,_=s-o;if(_===0){L[a]=s;return}const m=performance.now();function C(R){const rt=R-m,Q=Math.min(rt/t,1),lt=1-Math.pow(1-Q,3);L[a]=Math.round(o+_*lt),Q<1&&requestAnimationFrame(C)}requestAnimationFrame(C)}function at(){if(!c.value)return;const a=c.value.core_cards;if([["open_task_count",a.open_task_count],["active_sub_task_count",a.active_sub_task_count],["review_queue_count",a.review_queue_count],["blocked_sub_task_count",a.blocked_sub_task_count],["active_agent_count",a.active_agent_count],["today_completed_sub_task_count",a.today_completed_sub_task_count]].forEach(([t,o],_)=>{setTimeout(()=>O(t,o,900),_*80)}),K.value){const t=K.value;[["trend_created",t.sub_task_created_trend.reduce((_,m)=>_+m.count,0)],["trend_completed",t.sub_task_completed_trend.reduce((_,m)=>_+m.count,0)],["trend_review",t.review_trend.reduce((_,m)=>_+m.total,0)],["trend_score",t.score_delta_trend.reduce((_,m)=>_+m.net_score_delta,0)],["trend_request",t.request_trend.reduce((_,m)=>_+m.count,0)],["trend_activity",t.activity_trend.reduce((_,m)=>_+m.count,0)]].forEach(([_,m],C)=>{setTimeout(()=>O(_,m,800),800+C*60)})}}const ot=X(()=>{if(!c.value)return[];const a=c.value.core_cards;return[{title:"开放任务",value:a.open_task_count,animKey:"open_task_count",icon:wt,color:"text-blue-500",bg:"bg-blue-500/10"},{title:"活跃子任务",value:a.active_sub_task_count,animKey:"active_sub_task_count",icon:kt,color:"text-emerald-500",bg:"bg-emerald-500/10"},{title:"等待审查",value:a.review_queue_count,animKey:"review_queue_count",icon:It,color:"text-amber-500",bg:"bg-amber-500/10"},{title:"阻塞子任务",value:a.blocked_sub_task_count,animKey:"blocked_sub_task_count",icon:mt,color:"text-rose-500",bg:"bg-rose-500/10"},{title:"活跃 Agent",value:a.active_agent_count,animKey:"active_agent_count",icon:$t,color:"text-violet-500",bg:"bg-violet-500/10"},{title:"今日完成",value:a.today_completed_sub_task_count,animKey:"today_completed_sub_task_count",icon:pt,color:"text-teal-500",bg:"bg-teal-500/10"}]}),S={planning:"规划中",active:"活跃",in_progress:"进行中",completed:"已完成",archived:"归档",cancelled:"已取消",pending:"待分配",assigned:"已分配",review:"审查中",rework:"返工中",blocked:"阻塞",done:"已完成",disabled:"已禁用",planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者",approved:"通过",rejected:"驳回"},k={planning:"bg-slate-400",active:"bg-blue-500",in_progress:"bg-amber-500",completed:"bg-emerald-500",archived:"bg-gray-400",cancelled:"bg-red-400",pending:"bg-slate-400",assigned:"bg-sky-400",review:"bg-amber-500",rework:"bg-orange-500",blocked:"bg-rose-500",done:"bg-emerald-500",disabled:"bg-gray-400",planner:"bg-violet-500",executor:"bg-sky-500",reviewer:"bg-amber-500",patrol:"bg-teal-500",approved:"bg-emerald-500",rejected:"bg-rose-500"};function I(a){return Object.values(a).reduce((s,t)=>s+t,0)}function $(a,s){return s===0?0:Math.round(a/s*100)}function W(a){if(!a.length)return{line:"",area:""};const s=Math.max(...a,1),t=q/Math.max(a.length-1,1),_=a.map((C,R)=>({x:R*t,y:D-C/s*(D-4)-2})).map((C,R)=>`${R===0?"M":"L"}${C.x.toFixed(1)},${C.y.toFixed(1)}`).join(" "),m=_+` L${q},${D} L0,${D} Z`;return{line:_,area:m}}const f=Y({cardIdx:-1,pointIdx:-1});function V(a,s){if(s<0||s>=a.length)return{x:0,y:0};const t=Math.max(...a,1),o=q/Math.max(a.length-1,1);return{x:s*o,y:D-(a[s]??0)/t*(D-4)-2}}function nt(a){return a.slice(5)}const J=X(()=>{if(!K.value)return[];const a=K.value;return[{title:"新建子任务",total:a.sub_task_created_trend.reduce((s,t)=>s+t.count,0),color:"#3b82f6",gradientId:"g-created",animKey:"trend_created",values:a.sub_task_created_trend.map(s=>s.count),dates:a.sub_task_created_trend.map(s=>s.date)},{title:"完成子任务",total:a.sub_task_completed_trend.reduce((s,t)=>s+t.count,0),color:"#10b981",gradientId:"g-completed",animKey:"trend_completed",values:a.sub_task_completed_trend.map(s=>s.count),dates:a.sub_task_completed_trend.map(s=>s.date)},{title:"审查总量",total:a.review_trend.reduce((s,t)=>s+t.total,0),color:"#f59e0b",gradientId:"g-review",animKey:"trend_review",values:a.review_trend.map(s=>s.total),dates:a.review_trend.map(s=>s.date)},{title:"积分净变化",total:a.score_delta_trend.reduce((s,t)=>s+t.net_score_delta,0),color:"#8b5cf6",gradientId:"g-score",animKey:"trend_score",values:a.score_delta_trend.map(s=>s.net_score_delta),dates:a.score_delta_trend.map(s=>s.date)},{title:"API 请求量",total:a.request_trend.reduce((s,t)=>s+t.count,0),color:"#06b6d4",gradientId:"g-request",animKey:"trend_request",values:a.request_trend.map(s=>s.count),dates:a.request_trend.map(s=>s.date)},{title:"活动日志",total:a.activity_trend.reduce((s,t)=>s+t.count,0),color:"#ec4899",gradientId:"g-activity",animKey:"trend_activity",values:a.activity_trend.map(s=>s.count),dates:a.activity_trend.map(s=>s.date)}]});return(a,s)=>(r(),i("div",At,[B.value?(r(),i("div",Kt,[d(n(bt),{class:"h-5 w-5 text-muted-foreground"}),e("p",Tt,l(B.value),1),d(n(tt),{class:"mt-3",size:"sm",onClick:U},{default:u(()=>[...s[1]||(s[1]=[h("重新加载",-1)])]),_:1})])):z.value?(r(),i("div",Dt,[d(n(ct),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):c.value?(r(),i("div",qt,[e("div",Lt,[e("div",null,[s[2]||(s[2]=e("h1",{class:"text-lg font-semibold"},"仪表盘",-1)),e("p",St," 数据更新于 "+l(new Date(c.value.generated_at).toLocaleString("zh-CN")),1)]),d(n(tt),{variant:"ghost",size:"icon",class:"h-8 w-8",onClick:U},{default:u(()=>[d(n(xt),{class:"h-3.5 w-3.5"})]),_:1})]),e("div",Rt,[(r(!0),i(p,null,b(ot.value,(t,o)=>(r(),M(n(y),{key:t.title,class:"animate-slide-up border-border/40 hover:border-border/70 hover:shadow-[var(--shadow-md)] hover:scale-[1.02] transition-all duration-200 cursor-default",style:T({animationDelay:`${o*50}ms`})},{default:u(()=>[d(n(w),{class:"flex items-center gap-3 p-4"},{default:u(()=>[e("div",{class:g(["rounded-lg p-2.5",t.bg])},[(r(),M(_t(t.icon),{class:g(["h-5 w-5",t.color])},null,8,["class"]))],2),e("div",null,[e("div",Ft,l(L[t.animKey]??t.value),1),e("div",Nt,l(t.title),1)])]),_:2},1024)]),_:2},1032,["style"]))),128))]),e("div",Bt,[e("div",Pt,[e("div",Vt,l(c.value.secondary_cards.disabled_agent_count),1),s[3]||(s[3]=e("div",{class:"text-[11px] text-muted-foreground"},"已禁用 Agent",-1))]),e("div",zt,[e("div",Ut,l(c.value.secondary_cards.today_review_count),1),s[4]||(s[4]=e("div",{class:"text-[11px] text-muted-foreground"},"今日审查",-1))]),e("div",Et,[e("div",Zt,l(c.value.secondary_cards.today_rejected_review_count),1),s[5]||(s[5]=e("div",{class:"text-[11px] text-muted-foreground"},"今日驳回",-1))]),e("div",Ht,[e("div",Gt,l(c.value.secondary_cards.today_reject_rate.toFixed(1))+"% ",1),s[6]||(s[6]=e("div",{class:"text-[11px] text-muted-foreground"},"驳回率",-1))]),e("div",Ot,[e("div",Wt,[c.value.secondary_cards.today_net_score_delta>=0?(r(),M(n(ft),{key:0,class:"h-4 w-4 text-emerald-500"})):(r(),M(n(gt),{key:1,class:"h-4 w-4 text-rose-500"})),e("span",{class:g(["text-lg font-bold tabular-nums",c.value.secondary_cards.today_net_score_delta>=0?"text-emerald-600":"text-rose-600"])},l(c.value.secondary_cards.today_net_score_delta>=0?"+":"")+l(c.value.secondary_cards.today_net_score_delta),3)]),s[7]||(s[7]=e("div",{class:"text-[11px] text-muted-foreground"},"今日积分净值",-1))])]),d(n(Z),{class:"opacity-40"}),e("div",Jt,[d(n(y),{class:"border-border/40 animate-slide-up",style:{"animation-delay":"550ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium text-muted-foreground"},{default:u(()=>[...s[8]||(s[8]=[h("任务状态分布",-1)])]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(c.value.distributions.task_status_distribution,(t,o)=>(r(),i("div",{key:o,class:"flex items-center gap-2 text-sm"},[e("div",{class:g(["w-2 h-2 rounded-full shrink-0",k[o]||"bg-gray-400"])},null,2),e("span",Qt,l(S[o]||o),1),e("span",Xt,l(t),1),e("span",Yt,l($(t,I(c.value.distributions.task_status_distribution)))+"% ",1)]))),128)),e("div",te,[(r(!0),i(p,null,b(c.value.distributions.task_status_distribution,(t,o)=>(r(),i("div",{key:o,class:g(["h-full transition-all",k[o]||"bg-gray-400"]),style:T({width:`${$(t,I(c.value.distributions.task_status_distribution))}%`})},null,6))),128))])]),_:1})]),_:1}),d(n(y),{class:"border-border/40 animate-slide-up",style:{"animation-delay":"600ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium text-muted-foreground"},{default:u(()=>[...s[9]||(s[9]=[h("子任务状态分布",-1)])]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(c.value.distributions.sub_task_status_distribution,(t,o)=>(r(),i("div",{key:o,class:"flex items-center gap-2 text-sm"},[e("div",{class:g(["w-2 h-2 rounded-full shrink-0",k[o]||"bg-gray-400"])},null,2),e("span",ee,l(S[o]||o),1),e("span",se,l(t),1),e("span",ae,l($(t,I(c.value.distributions.sub_task_status_distribution)))+"% ",1)]))),128)),e("div",oe,[(r(!0),i(p,null,b(c.value.distributions.sub_task_status_distribution,(t,o)=>(r(),i("div",{key:o,class:g(["h-full transition-all",k[o]||"bg-gray-400"]),style:T({width:`${$(t,I(c.value.distributions.sub_task_status_distribution))}%`})},null,6))),128))])]),_:1})]),_:1}),d(n(y),{class:"border-border/40 animate-slide-up",style:{"animation-delay":"650ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium text-muted-foreground"},{default:u(()=>[...s[10]||(s[10]=[h("Agent 状态分布",-1)])]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(c.value.distributions.agent_status_distribution,(t,o)=>(r(),i("div",{key:o,class:"flex items-center gap-2 text-sm"},[e("div",{class:g(["w-2 h-2 rounded-full shrink-0",k[o]||"bg-gray-400"])},null,2),e("span",ne,l(S[o]||o),1),e("span",re,l(t),1),e("span",le,l($(t,I(c.value.distributions.agent_status_distribution)))+"% ",1)]))),128)),e("div",de,[(r(!0),i(p,null,b(c.value.distributions.agent_status_distribution,(t,o)=>(r(),i("div",{key:o,class:g(["h-full transition-all",k[o]||"bg-gray-400"]),style:T({width:`${$(t,I(c.value.distributions.agent_status_distribution))}%`})},null,6))),128))])]),_:1})]),_:1}),d(n(y),{class:"border-border/40 animate-slide-up",style:{"animation-delay":"700ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium text-muted-foreground"},{default:u(()=>[...s[11]||(s[11]=[h("Agent 角色分布",-1)])]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(c.value.distributions.agent_role_distribution,(t,o)=>(r(),i("div",{key:o,class:"flex items-center gap-2 text-sm"},[e("div",{class:g(["w-2 h-2 rounded-full shrink-0",k[o]||"bg-gray-400"])},null,2),e("span",ie,l(S[o]||o),1),e("span",ue,l(t),1),e("span",ce,l($(t,I(c.value.distributions.agent_role_distribution)))+"% ",1)]))),128)),e("div",_e,[(r(!0),i(p,null,b(c.value.distributions.agent_role_distribution,(t,o)=>(r(),i("div",{key:o,class:g(["h-full transition-all",k[o]||"bg-gray-400"]),style:T({width:`${$(t,I(c.value.distributions.agent_role_distribution))}%`})},null,6))),128))])]),_:1})]),_:1}),d(n(y),{class:"border-border/40 animate-slide-up",style:{"animation-delay":"750ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium text-muted-foreground"},{default:u(()=>[...s[12]||(s[12]=[h("近 7 天审查结果",-1)])]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(c.value.distributions.review_result_distribution_7d,(t,o)=>(r(),i("div",{key:o,class:"flex items-center gap-2 text-sm"},[e("div",{class:g(["w-2 h-2 rounded-full shrink-0",k[o]||"bg-gray-400"])},null,2),e("span",me,l(S[o]||o),1),e("span",pe,l(t),1),e("span",be,l($(t,I(c.value.distributions.review_result_distribution_7d)))+"% ",1)]))),128)),e("div",fe,[(r(!0),i(p,null,b(c.value.distributions.review_result_distribution_7d,(t,o)=>(r(),i("div",{key:o,class:g(["h-full transition-all",k[o]||"bg-gray-400"]),style:T({width:`${$(t,I(c.value.distributions.review_result_distribution_7d))}%`})},null,6))),128))])]),_:1})]),_:1})]),K.value&&J.value.length?(r(),i(p,{key:0},[d(n(Z),{class:"opacity-40"}),e("div",null,[e("div",ge,[e("h2",xe,"近 "+l(K.value.days)+" 天趋势",1),e("span",ve,l(K.value.start_date)+" – "+l(K.value.end_date),1)]),e("div",he,[(r(!0),i(p,null,b(J.value,(t,o)=>(r(),M(n(y),{key:t.title,class:"border-border/40 animate-slide-up overflow-hidden hover:shadow-[var(--shadow-md)] hover:scale-[1.02] transition-all duration-200 cursor-default",style:T({animationDelay:`${800+o*50}ms`})},{default:u(()=>[d(n(w),{class:"p-4 pb-0"},{default:u(()=>[e("div",ye,[e("span",we,l(t.title),1),e("span",{class:"text-lg font-bold tabular-nums",style:T({color:t.color})},l(L[t.animKey]??t.total),5)]),(r(),i("svg",{viewBox:`0 0 ${q} ${D}`,class:"w-full h-10",preserveAspectRatio:"none",onMouseleave:s[0]||(s[0]=_=>{f.cardIdx=-1,f.pointIdx=-1})},[e("defs",null,[e("linearGradient",{id:t.gradientId,x1:"0",x2:"0",y1:"0",y2:"1"},[e("stop",{offset:"0%","stop-color":t.color,"stop-opacity":"0.3"},null,8,$e),e("stop",{offset:"100%","stop-color":t.color,"stop-opacity":"0.02"},null,8,Ce)],8,Ie)]),e("path",{d:W(t.values).area,fill:`url(#${t.gradientId})`,class:"sparkline-area"},null,8,Me),e("path",{d:W(t.values).line,fill:"none",stroke:t.color,"stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round",class:"sparkline-line"},null,8,je),(r(!0),i(p,null,b(t.values,(_,m)=>(r(),i("rect",{key:m,x:m*(q/Math.max(t.values.length-1,1))-q/t.values.length/2,y:0,width:q/t.values.length,height:D,fill:"transparent",class:"cursor-crosshair",onMouseenter:C=>{f.cardIdx=o,f.pointIdx=m}},null,40,Ae))),128)),f.cardIdx===o&&f.pointIdx>=0?(r(),i(p,{key:0},[e("line",{x1:V(t.values,f.pointIdx).x,x2:V(t.values,f.pointIdx).x,y1:0,y2:D,stroke:t.color,"stroke-opacity":"0.3","stroke-width":"1","stroke-dasharray":"2 2"},null,8,Ke),e("circle",{cx:V(t.values,f.pointIdx).x,cy:V(t.values,f.pointIdx).y,r:"3",fill:t.color,stroke:"white","stroke-width":"1.5"},null,8,Te)],64)):v("",!0)],40,ke)),f.cardIdx===o&&f.pointIdx>=0?(r(),i("div",De,[e("span",null,l(nt(t.dates[f.pointIdx]??"")),1),e("span",{class:"font-semibold tabular-nums",style:T({color:t.color})},l(t.values[f.pointIdx]),5)])):v("",!0)]),_:2},1024)]),_:2},1032,["style"]))),128))])])],64)):v("",!0),x.value&&st(x.value)?(r(),i(p,{key:1},[d(n(Z),{class:"opacity-40"}),e("div",qe,[x.value.blocked_sub_tasks.length?(r(),M(n(y),{key:0,class:"border-rose-200/50 animate-slide-up",style:{"animation-delay":"800ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium flex items-center gap-1.5 text-rose-600"},{default:u(()=>[d(n(Mt),{class:"h-3.5 w-3.5"}),s[13]||(s[13]=h(" 阻塞子任务 ",-1))]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(x.value.blocked_sub_tasks,t=>(r(),i("div",{key:t.id,class:"rounded border border-rose-100 bg-rose-50/30 p-2.5"},[e("div",Le,[e("span",Se,l(t.name),1),e("span",Re,l(P(t.updated_at)),1)]),e("div",Fe,[e("span",null,l(t.task_name),1),t.assigned_agent_name?(r(),i("span",Ne,"→ "+l(t.assigned_agent_name),1)):v("",!0),t.rework_count?(r(),i("span",Be,"返工 "+l(t.rework_count)+" 次",1)):v("",!0)])]))),128))]),_:1})]),_:1})):v("",!0),x.value.pending_review_sub_tasks.length?(r(),M(n(y),{key:1,class:"border-amber-200/50 animate-slide-up",style:{"animation-delay":"850ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium flex items-center gap-1.5 text-amber-600"},{default:u(()=>[d(n(vt),{class:"h-3.5 w-3.5"}),s[14]||(s[14]=h(" 待审查子任务 ",-1))]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(x.value.pending_review_sub_tasks,t=>(r(),i("div",{key:t.id,class:"rounded border border-amber-100 bg-amber-50/30 p-2.5"},[e("div",Pe,[e("span",Ve,l(t.name),1),e("span",ze,l(P(t.updated_at)),1)]),e("div",Ue,[h(l(t.task_name)+" ",1),t.assigned_agent_name?(r(),i("span",Ee," → "+l(t.assigned_agent_name),1)):v("",!0)])]))),128))]),_:1})]),_:1})):v("",!0),x.value.busy_agents.length?(r(),M(n(y),{key:2,class:"border-sky-200/50 animate-slide-up",style:{"animation-delay":"900ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium flex items-center gap-1.5 text-sky-600"},{default:u(()=>[d(n(ht),{class:"h-3.5 w-3.5"}),s[15]||(s[15]=h(" 高负载 Agent ",-1))]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(x.value.busy_agents,t=>(r(),i("div",{key:t.id,class:"rounded border border-sky-100 bg-sky-50/30 p-2.5 flex items-center justify-between"},[e("div",null,[e("span",Ze,l(t.name),1),e("span",He,l(G[t.role]||t.role),1)]),e("div",Ge,[e("div",Oe,l(t.open_sub_task_count)+" 个任务 ",1),e("div",We,"积分 "+l(t.total_score),1)])]))),128))]),_:1})]),_:1})):v("",!0),x.value.low_activity_agents.length?(r(),M(n(y),{key:3,class:"border-border/40 animate-slide-up",style:{"animation-delay":"950ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium flex items-center gap-1.5 text-muted-foreground"},{default:u(()=>[d(n(jt),{class:"h-3.5 w-3.5"}),s[16]||(s[16]=h(" 低活跃 Agent ",-1))]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4 space-y-2"},{default:u(()=>[(r(!0),i(p,null,b(x.value.low_activity_agents,t=>(r(),i("div",{key:t.id,class:"rounded border border-border/50 bg-muted/20 p-2.5 flex items-center justify-between"},[e("div",null,[e("span",Je,l(t.name),1),e("span",Qe,l(G[t.role]||t.role),1)]),e("div",Xe," 最近活动 "+l(P(t.last_activity_at)),1)]))),128))]),_:1})]),_:1})):v("",!0)]),x.value.recent_reviews.length?(r(),M(n(y),{key:0,class:"border-border/40 animate-slide-up",style:{"animation-delay":"1000ms"}},{default:u(()=>[d(n(j),{class:"pb-2 px-4 pt-4"},{default:u(()=>[d(n(A),{class:"text-sm font-medium flex items-center gap-1.5 text-violet-600"},{default:u(()=>[d(n(yt),{class:"h-3.5 w-3.5"}),s[17]||(s[17]=h(" 最近审查 ",-1))]),_:1})]),_:1}),d(n(w),{class:"px-4 pb-4"},{default:u(()=>[e("div",Ye,[(r(!0),i(p,null,b(x.value.recent_reviews,t=>(r(),i("div",{key:t.id,class:"flex items-center gap-3 py-2"},[e("div",{class:g(["w-2 h-2 rounded-full shrink-0",t.result==="approved"?"bg-emerald-500":"bg-rose-500"])},null,2),e("div",ts,[e("div",es,l(t.sub_task_name),1),e("div",ss,l(t.reviewer_agent_name||"—")+" · "+l(t.task_name),1)]),e("span",as,l("★".repeat(Math.min(5,t.score)))+l("☆".repeat(Math.max(0,5-t.score))),1),e("span",os,l(P(t.created_at)),1)]))),128))])]),_:1})]),_:1})):v("",!0)],64)):v("",!0)])):v("",!0)]))}}),ks=Ct(ns,[["__scopeId","data-v-08db0fd7"]]);export{ks as default}; diff --git a/cloudflare/pages/assets/DashboardView-c71H3EkP.css b/cloudflare/pages/assets/DashboardView-c71H3EkP.css new file mode 100644 index 0000000..1a1a0e6 --- /dev/null +++ b/cloudflare/pages/assets/DashboardView-c71H3EkP.css @@ -0,0 +1 @@ +@keyframes sparkline-draw-08db0fd7{0%{stroke-dashoffset:500}to{stroke-dashoffset:0}}@keyframes sparkline-area-in-08db0fd7{0%{opacity:0}to{opacity:1}}.sparkline-line[data-v-08db0fd7]{stroke-dasharray:500;stroke-dashoffset:500;animation:sparkline-draw-08db0fd7 1.2s ease-out .8s forwards}.sparkline-area[data-v-08db0fd7]{opacity:0;animation:sparkline-area-in-08db0fd7 .6s ease-out 1.4s forwards} diff --git a/cloudflare/pages/assets/DemoView-BPR_Rmcz.js b/cloudflare/pages/assets/DemoView-BPR_Rmcz.js new file mode 100644 index 0000000..26043c4 --- /dev/null +++ b/cloudflare/pages/assets/DemoView-BPR_Rmcz.js @@ -0,0 +1,2 @@ +import{m as it,k as Z,E as oe,r as z,d as at,G as K,l as v,c as w,a as e,F as q,g as W,D as Y,n as nt,b as gt,y as dt,t as m,z as zt,i as H,u as N,j as ie,v as le,f as U,H as pt,o as It,A as xt,e as F,T as vt,w as ct,B as Ct,C as St,I as ce}from"./index-BYiXDk_r.js";import{S as jt,R as ue,a as ge}from"./shield-alert-DYoiGl5J.js";import{C as de}from"./code-zczxpfOO.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{S as pe}from"./star-VmEUsCX9.js";import{P as Ut}from"./play-BSoFcJJg.js";import{U as me}from"./users-C4rtE1G7.js";import{S as ve}from"./shield-check-C0gcRV-i.js";import{T as ye}from"./trophy-BMFdgvc4.js";const he=it("clapperboard",[["path",{d:"m12.296 3.464 3.02 3.956",key:"qash78"}],["path",{d:"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z",key:"1h7j8b"}],["path",{d:"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"4lm6w1"}],["path",{d:"m6.18 5.276 3.1 3.899",key:"zjj9t3"}]]);const _e=it("github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);const ke=it("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);const we=it("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);const fe=it("megaphone",[["path",{d:"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",key:"q8bfy3"}],["path",{d:"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14",key:"1853fq"}],["path",{d:"M8 6v8",key:"15ugcq"}]]);const be=it("newspaper",[["path",{d:"M15 18h-5",key:"95g1m2"}],["path",{d:"M18 14h-8",key:"sponae"}],["path",{d:"M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-4 0v-9a2 2 0 0 1 2-2h2",key:"39pd36"}],["rect",{width:"8",height:"4",x:"10",y:"6",rx:"1",key:"aywv1n"}]]);const $e=it("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);const Me=it("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);const Ae=it("shopping-cart",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]),Ie="chaos",xe="自修复演示",Ce="去掉 Reviewer 会怎样?模拟一个缺少质检的 AI 团队,看巡查者如何发现异常并触发自修复。",Se="ShieldAlert",Te=35,Be=[{id:"planner",name:"总编",role:"planner",avatar:"🧠"},{id:"writer",name:"酱瓜",role:"executor",avatar:"✍️"},{id:"patrol",name:"巡查",role:"patrol",avatar:"🛰️"}],Ee=[{t:0,type:"log",agent:"planner",content:"⚠️ 注意:本次演示已关闭 Reviewer,让我们看看会发生什么..."},{t:1,type:"agent_status",agent:"planner",status:"thinking",message:"收到目标,开始拆解..."},{t:3,type:"task_created",agent:"planner",task:{id:"t1",name:"撰写 AI 行业分析文章",assignee:"writer"},message:"子任务分配给酱瓜"},{t:4,type:"agent_status",agent:"planner",status:"done",message:"任务已分配"},{t:5,type:"agent_status",agent:"writer",status:"working",message:"开始写文章...(没有审查压力,随便写写)"},{t:5,type:"task_status",task:"t1",status:"working"},{t:8,type:"log",agent:"writer",content:"快速写完了一篇文章,没有仔细核实数据"},{t:10,type:"log",agent:"writer",content:"「AI 将在 2025 年取代 90% 的工作岗位」← 数据完全编造"},{t:11,type:"agent_status",agent:"writer",status:"done",message:"文章写完了!直接发布(无人审查)"},{t:11,type:"task_status",task:"t1",status:"done"},{t:12,type:"log",agent:"writer",content:"文章内容:引用了不存在的研究报告,数据来源无法验证,部分结论自相矛盾"},{t:15,type:"agent_status",agent:"patrol",status:"patrolling",message:"开始例行巡查..."},{t:17,type:"log",agent:"patrol",content:"🚨 异常发现:任务 t1 已标记完成,但没有任何审查记录!"},{t:19,type:"log",agent:"patrol",content:"🚨 质量检查:文章中发现 3 处事实错误、2 处数据编造"},{t:21,type:"log",agent:"patrol",content:"🚨 严重警告:「90% 工作岗位被取代」无任何来源支撑"},{t:23,type:"log",agent:"patrol",content:"🚨 风险评估:若此文章对外发布,将严重损害品牌公信力"},{t:25,type:"log",agent:"patrol",content:"📋 巡查建议:立即撤回文章,恢复 Reviewer 角色,重新走审查流程"},{t:27,type:"agent_status",agent:"patrol",status:"done",message:"🚨 巡查报告:发现严重质量问题!"},{t:28,type:"log",agent:"planner",content:"⚠️ 收到巡查警报:质量失控,需要紧急处理"},{t:30,type:"log",agent:"planner",content:"🔴 结论:没有 Reviewer 的 AI 团队 = 没有质检的工厂。产出无法保证质量。"},{t:32,type:"log",agent:"planner",content:"这就是 OpenMOSS 设计审查机制的原因 —— AI 也需要互相监督才能产出靠谱的内容"},{t:35,type:"summary",data:{tasks_completed:1,average_score:0,tokens_used:32e4,rework_count:0,time_saved:"产出不可用,需全部返工"}}],Tt={id:Ie,name:xe,description:Ce,icon:Se,duration:Te,agents:Be,events:Ee},mt={idle:"😴",thinking:"🤔",working:"😤",reviewing:"🧐",reworking:"😢",patrolling:"🔍",done:"😊"},yt={planner:"#8B6F4E",executor:"#4A7FA5",reviewer:"#C09840",patrol:"#4A7A5E"};let Lt=0;function Oe(){const h=oe({phase:"idle",agents:new Map,tasks:[],timeline:[],summary:null,elapsed:0,duration:0}),o=Z(()=>Array.from(h.agents.values())),u=Z(()=>{const n={pending:[],assigned:[],working:[],review:[],rework:[],done:[]};for(const g of h.tasks)n[g.status]?.push(g);return n});function y(n){h.agents.clear();for(const g of n)h.agents.set(g.id,{id:g.id,name:g.name,role:g.role,avatar:g.avatar,status:"idle",score:100,message:"",expression:mt.idle})}function l(){h.phase="idle",h.agents.clear(),h.tasks=[],h.timeline=[],h.summary=null,h.elapsed=0,h.duration=0,Lt=0}function r(n){const g=n.agent?h.agents.get(n.agent):void 0;switch(n.type){case"agent_status":if(g&&n.status){const d=n.status;g.status=d,g.expression=d in mt?mt[d]:mt.idle,n.message&&(g.message=n.message)}break;case"task_created":n.task&&typeof n.task=="object"&&h.tasks.push({id:n.task.id,name:n.task.name,assignee:n.task.assignee,status:"assigned"});break;case"task_status":if(n.task&&typeof n.task=="string"){const d=h.tasks.find(i=>i.id===n.task);d&&n.status&&(d.status=n.status||d.status)}break;case"review":{const d=typeof n.task=="string"?n.task:void 0;if(d){const i=h.tasks.find(c=>c.id===d);i&&(i.status=n.result==="approved"?"done":"rework",i.score=n.score,i.comment=n.comment)}}break;case"score_change":g&&n.delta!==void 0&&(g.score+=n.delta,n.total!==void 0&&(g.score=n.total));break;case"reflection":g&&n.content&&(g.message=`💭 ${n.content}`);break;case"summary":n.data&&(h.summary=n.data,h.phase="result");break}const B={id:`e-${++Lt}`,timestamp:n.t,event:n,agentName:g?.name,agentAvatar:g?.avatar};h.timeline.unshift(B)}return{state:h,agentList:o,tasksByStatus:u,initAgents:y,reset:l,pushEvent:r}}let At=null;function ut(){return At||(At=Oe()),At}const Fe="content-company",Pe="AI 内容创意",Re="模拟内容创作团队:选题策划 → 资料采集 → 文章撰写 → 质量审查,体验 AI 编辑部如何自动产出一篇深度文章。",De="Newspaper",Le=52,Ne=[{id:"planner",name:"总编",role:"planner",avatar:"🧠"},{id:"researcher",name:"小吴",role:"executor",avatar:"🔍"},{id:"writer",name:"酱瓜",role:"executor",avatar:"✍️"},{id:"reviewer",name:"审查",role:"reviewer",avatar:"✅"},{id:"patrol",name:"巡查",role:"patrol",avatar:"🛰️"}],ze=[{t:0,type:"agent_status",agent:"planner",status:"thinking",message:"收到目标,正在分析任务需求..."},{t:2,type:"log",agent:"planner",content:"目标:撰写一篇关于 AI Agent 发展趋势的深度文章。我来拆解一下..."},{t:3,type:"task_created",agent:"planner",task:{id:"t1",name:"搜集 AI 行业最新热点",assignee:"researcher"},message:"子任务 1 → 小吴负责搜集资料"},{t:4,type:"task_created",agent:"planner",task:{id:"t2",name:"撰写 AI Agent 趋势分析文章",assignee:"writer"},message:"子任务 2 → 酱瓜负责写文章"},{t:5,type:"agent_status",agent:"planner",status:"done",message:"任务拆解完成,2 个子任务已分配"},{t:6,type:"agent_status",agent:"researcher",status:"working",message:"开始搜索 AI 行业最新动态..."},{t:6,type:"task_status",task:"t1",status:"working"},{t:8,type:"log",agent:"researcher",content:"搜索中...发现 OpenAI、Anthropic、Google 近期都有重大更新"},{t:10,type:"log",agent:"researcher",content:"找到 12 条相关新闻,正在筛选高质量信源..."},{t:12,type:"log",agent:"researcher",content:"筛选完成:5 条核心新闻 + 3 篇专家分析,整理成摘要"},{t:13,type:"agent_status",agent:"researcher",status:"done",message:"信息采集完成,已整理 8 条来源"},{t:13,type:"task_status",task:"t1",status:"review"},{t:14,type:"agent_status",agent:"reviewer",status:"reviewing",message:"正在审查小吴的信息采集结果..."},{t:16,type:"review",agent:"reviewer",task:"t1",result:"approved",score:4,comment:"信源充足,质量不错"},{t:16,type:"score_change",agent:"researcher",delta:5,reason:"审查通过 +5"},{t:16,type:"agent_status",agent:"reviewer",status:"idle",message:"小吴的采集通过了 ✓"},{t:17,type:"agent_status",agent:"writer",status:"working",message:"开始撰写文章,参考小吴的资料..."},{t:17,type:"task_status",task:"t2",status:"working"},{t:19,type:"log",agent:"writer",content:"正在构思文章大纲:行业现状 → 核心趋势 → 未来展望"},{t:22,type:"log",agent:"writer",content:"初稿完成,约 1200 字,包含 3 个核心观点"},{t:24,type:"agent_status",agent:"writer",status:"done",message:"文章初稿完成,提交审查"},{t:24,type:"task_status",task:"t2",status:"review"},{t:25,type:"agent_status",agent:"reviewer",status:"reviewing",message:"正在审查酱瓜的文章..."},{t:27,type:"log",agent:"reviewer",content:"文章结构清晰,但部分观点缺乏数据支撑,信息来源引用不足"},{t:29,type:"review",agent:"reviewer",task:"t2",result:"rejected",score:3,comment:"信息来源不足,需要补充具体数据和案例支撑"},{t:29,type:"score_change",agent:"writer",delta:-2,reason:"审查驳回 -2"},{t:30,type:"agent_status",agent:"writer",status:"reworking",message:"文章被驳回了...需要补充数据"},{t:31,type:"agent_status",agent:"reviewer",status:"idle",message:"等待酱瓜修改后重新提交"},{t:32,type:"reflection",agent:"writer",content:"下次写文章前先确认数据源是否充分,不能只靠观点撑"},{t:33,type:"log",agent:"writer",content:"返工中:补充 3 组行业数据 + 2 个具体案例"},{t:36,type:"log",agent:"writer",content:"修改完成,新增了 GPT-5 发布影响分析和 Agent 框架对比数据"},{t:37,type:"agent_status",agent:"writer",status:"done",message:"修改完成,重新提交审查"},{t:37,type:"task_status",task:"t2",status:"review"},{t:38,type:"agent_status",agent:"reviewer",status:"reviewing",message:"重新审查酱瓜修改后的文章..."},{t:40,type:"log",agent:"reviewer",content:"数据充实多了,论证有力,整体质量大幅提升"},{t:41,type:"review",agent:"reviewer",task:"t2",result:"approved",score:4.5,comment:"质量大幅提升!数据详实,论证有力"},{t:41,type:"score_change",agent:"writer",delta:5,reason:"审查通过 +5"},{t:42,type:"agent_status",agent:"reviewer",status:"idle",message:"酱瓜的文章通过了!质量很好"},{t:43,type:"agent_status",agent:"patrol",status:"patrolling",message:"开始例行巡查..."},{t:45,type:"log",agent:"patrol",content:"检查任务状态:2/2 子任务已完成,无异常"},{t:47,type:"log",agent:"patrol",content:"检查审查记录:1 次驳回 → 1 次返工通过,流程正常"},{t:48,type:"agent_status",agent:"patrol",status:"done",message:"巡查完毕,一切正常 ✓"},{t:49,type:"agent_status",agent:"planner",status:"done",message:"所有子任务完成,准备交付成果"},{t:50,type:"log",agent:"planner",content:"任务完成!产出:1 篇 AI Agent 趋势深度分析文章(1500字),包含行业数据和案例"},{t:52,type:"summary",data:{tasks_completed:2,average_score:4.25,tokens_used:85e4,rework_count:1,time_saved:"约 3 小时人力"}}],Gt={id:Fe,name:Pe,description:Re,icon:De,duration:Le,agents:Ne,events:ze},je="ecommerce",Ue="AI 电商运营",Ge="模拟电商运营团队:竞品分析 + 详情页 + 营销推文三线并行,看多个 AI 员工如何同时协作完成新品上架。",He="ShoppingCart",Ve=55,qe=[{id:"planner",name:"运营总监",role:"planner",avatar:"🧠"},{id:"analyst",name:"分析员",role:"executor",avatar:"🔍"},{id:"copyA",name:"文案A",role:"executor",avatar:"✍️"},{id:"copyB",name:"文案B",role:"executor",avatar:"📢"},{id:"reviewer",name:"审查",role:"reviewer",avatar:"✅"},{id:"patrol",name:"巡查",role:"patrol",avatar:"🛰️"}],We=[{t:0,type:"agent_status",agent:"planner",status:"thinking",message:"收到新品上架需求,开始规划..."},{t:2,type:"log",agent:"planner",content:"目标:为新品智能手表撰写商品详情页 + 营销文案。需要竞品分析、详情页、推广文三个方向"},{t:3,type:"task_created",agent:"planner",task:{id:"t1",name:"竞品分析与卖点提取",assignee:"analyst"},message:"子任务 1 → 分析员负责竞品调研"},{t:4,type:"task_created",agent:"planner",task:{id:"t2",name:"商品详情页文案",assignee:"copyA"},message:"子任务 2 → 文案A 负责详情页"},{t:5,type:"task_created",agent:"planner",task:{id:"t3",name:"社交媒体营销推文",assignee:"copyB"},message:"子任务 3 → 文案B 负责营销推文"},{t:5,type:"agent_status",agent:"planner",status:"done",message:"3 个子任务已分配,团队开始工作"},{t:6,type:"agent_status",agent:"analyst",status:"working",message:"开始竞品分析..."},{t:6,type:"task_status",task:"t1",status:"working"},{t:7,type:"agent_status",agent:"copyA",status:"working",message:"开始构思详情页框架..."},{t:7,type:"task_status",task:"t2",status:"working"},{t:8,type:"log",agent:"analyst",content:"对比 Apple Watch、华为 GT5、小米手环...提取差异化卖点"},{t:9,type:"log",agent:"copyA",content:"先搭详情页结构:产品亮点 → 核心参数 → 使用场景 → 用户评价"},{t:12,type:"log",agent:"analyst",content:"分析完成:3 个竞品对比、5 个核心卖点(续航/屏幕/健康监测/轻薄/价格)"},{t:13,type:"agent_status",agent:"analyst",status:"done",message:"竞品分析完成,提交审查"},{t:13,type:"task_status",task:"t1",status:"review"},{t:14,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查分析员的竞品报告..."},{t:15,type:"log",agent:"copyA",content:"参考分析员的竞品数据,优化卖点描述,强调续航 14 天和血氧监测"},{t:16,type:"review",agent:"reviewer",task:"t1",result:"approved",score:4.2,comment:"竞品对比详实,卖点提炼准确"},{t:16,type:"score_change",agent:"analyst",delta:5,reason:"审查通过 +5"},{t:16,type:"agent_status",agent:"reviewer",status:"idle",message:"竞品报告通过 ✓"},{t:18,type:"agent_status",agent:"copyB",status:"working",message:"开始写社交媒体营销推文..."},{t:18,type:"task_status",task:"t3",status:"working"},{t:20,type:"log",agent:"copyB",content:"撰写小红书风格种草文:「2026年最值得入手的智能手表」"},{t:22,type:"agent_status",agent:"copyA",status:"done",message:"详情页文案完成,提交审查"},{t:22,type:"task_status",task:"t2",status:"review"},{t:23,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查文案A的详情页..."},{t:25,type:"agent_status",agent:"copyB",status:"done",message:"营销推文完成,提交审查"},{t:25,type:"task_status",task:"t3",status:"review"},{t:27,type:"review",agent:"reviewer",task:"t2",result:"approved",score:4,comment:"详情页结构完整,卖点突出,可上线"},{t:27,type:"score_change",agent:"copyA",delta:5,reason:"审查通过 +5"},{t:28,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查文案B的营销推文..."},{t:30,type:"log",agent:"reviewer",content:"推文语气太正式了,不像社交媒体风格,缺少互动感"},{t:32,type:"review",agent:"reviewer",task:"t3",result:"rejected",score:2.5,comment:"语气太正式,不像种草文,需要改为活泼口语风"},{t:32,type:"score_change",agent:"copyB",delta:-2,reason:"审查驳回 -2"},{t:33,type:"agent_status",agent:"copyB",status:"reworking",message:"推文被驳回...调整语气风格"},{t:33,type:"agent_status",agent:"reviewer",status:"idle",message:"等待文案B修改"},{t:34,type:"reflection",agent:"copyB",content:"社交媒体文案要用口语化表达,多用 emoji 和互动句式"},{t:36,type:"log",agent:"copyB",content:"返工中:改为「姐妹们!这块表也太绝了吧 😍」风格,增加互动提问"},{t:39,type:"agent_status",agent:"copyB",status:"done",message:"推文修改完成,重新提交"},{t:39,type:"task_status",task:"t3",status:"review"},{t:40,type:"agent_status",agent:"reviewer",status:"reviewing",message:"重新审查文案B..."},{t:42,type:"review",agent:"reviewer",task:"t3",result:"approved",score:4.5,comment:"风格到位!语气活泼有互动感,很适合种草"},{t:42,type:"score_change",agent:"copyB",delta:5,reason:"审查通过 +5"},{t:43,type:"agent_status",agent:"reviewer",status:"idle",message:"全部文案审查完毕 ✓"},{t:44,type:"agent_status",agent:"patrol",status:"patrolling",message:"开始例行巡查..."},{t:46,type:"log",agent:"patrol",content:"检查任务状态:3/3 子任务已完成"},{t:48,type:"log",agent:"patrol",content:"检查审查记录:1 次驳回(文案B)→ 修改后通过,流程正常"},{t:49,type:"agent_status",agent:"patrol",status:"done",message:"巡查完毕,一切正常 ✓"},{t:50,type:"log",agent:"planner",content:"任务完成!产出:竞品分析报告 + 商品详情页 + 社媒营销推文"},{t:52,type:"agent_status",agent:"planner",status:"done",message:"全部交付完成 🎉"},{t:55,type:"summary",data:{tasks_completed:3,average_score:3.8,tokens_used:12e5,rework_count:1,time_saved:"约 5 小时人力"}}],Ht={id:je,name:Ue,description:Ge,icon:He,duration:Ve,agents:qe,events:We},Xe="dev-team",Ze="AI 开发团队",Ke="模拟软件开发团队:前后端并行编码 → 代码审查 → 驳回返工 → 安全修复,体验 AI 程序员的一次迭代。",Ye="Code",Qe=58,Je=[{id:"planner",name:"产品经理",role:"planner",avatar:"📋"},{id:"backend",name:"后端开发",role:"executor",avatar:"⚙️"},{id:"frontend",name:"前端开发",role:"executor",avatar:"🎨"},{id:"reviewer",name:"技术主管",role:"reviewer",avatar:"👓"},{id:"patrol",name:"运维监控",role:"patrol",avatar:"📡"}],ta=[{t:0,type:"agent_status",agent:"planner",status:"thinking",message:"收到需求,正在分析功能点..."},{t:2,type:"log",agent:"planner",content:"需求:为博客系统添加评论功能,包含后端 API + 前端 UI + 敏感词过滤"},{t:4,type:"task_created",agent:"planner",task:{id:"t1",name:"评论 CRUD API 开发",assignee:"backend"},message:"子任务 1 → 后端开发负责 API"},{t:5,type:"task_created",agent:"planner",task:{id:"t2",name:"评论组件 UI 开发",assignee:"frontend"},message:"子任务 2 → 前端开发负责 UI"},{t:6,type:"agent_status",agent:"planner",status:"done",message:"需求拆解完成,2 个子任务已分配"},{t:7,type:"agent_status",agent:"backend",status:"working",message:"开始设计数据库表结构..."},{t:7,type:"task_status",task:"t1",status:"working"},{t:8,type:"agent_status",agent:"frontend",status:"working",message:"开始设计评论区 UI 组件..."},{t:8,type:"task_status",task:"t2",status:"working"},{t:10,type:"log",agent:"backend",content:"设计 comments 表:id, post_id, user_name, content, created_at, status"},{t:12,type:"log",agent:"frontend",content:"评论区组件结构:评论列表 + 发表框 + 分页加载"},{t:15,type:"log",agent:"backend",content:"完成 4 个 API:GET /comments, POST /comments, PUT /comments/:id, DELETE /comments/:id"},{t:18,type:"log",agent:"backend",content:"添加敏感词过滤中间件,匹配到敏感词自动拦截"},{t:20,type:"agent_status",agent:"backend",status:"done",message:"后端 API 开发完成,提交审查"},{t:20,type:"task_status",task:"t1",status:"review"},{t:21,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查后端代码..."},{t:23,type:"log",agent:"reviewer",content:"代码结构清晰,但缺少分页参数校验和 SQL 注入防护"},{t:25,type:"review",agent:"reviewer",task:"t1",result:"rejected",score:3,comment:"缺少参数校验和安全防护,需要补充输入验证"},{t:25,type:"score_change",agent:"backend",delta:-2,reason:"审查驳回 -2"},{t:26,type:"agent_status",agent:"backend",status:"reworking",message:"代码被驳回...补充安全校验"},{t:26,type:"agent_status",agent:"reviewer",status:"idle",message:"等待后端修复安全问题"},{t:27,type:"log",agent:"frontend",content:"评论 UI 完成:支持 Markdown 渲染、楼中楼回复、加载更多"},{t:28,type:"reflection",agent:"backend",content:"以后写 API 第一件事先做参数校验,安全不能事后补"},{t:30,type:"log",agent:"backend",content:"返工完成:补充 Pydantic 校验、参数化查询、rate limiting"},{t:32,type:"agent_status",agent:"frontend",status:"done",message:"前端评论组件完成,提交审查"},{t:32,type:"task_status",task:"t2",status:"review"},{t:33,type:"agent_status",agent:"backend",status:"done",message:"安全修复完成,重新提交"},{t:33,type:"task_status",task:"t1",status:"review"},{t:34,type:"agent_status",agent:"reviewer",status:"reviewing",message:"重新审查后端代码 + 审查前端组件..."},{t:37,type:"review",agent:"reviewer",task:"t1",result:"approved",score:4.5,comment:"安全防护完善,代码质量大幅提升"},{t:37,type:"score_change",agent:"backend",delta:5,reason:"审查通过 +5"},{t:39,type:"review",agent:"reviewer",task:"t2",result:"approved",score:4,comment:"UI 交互流畅,组件封装合理"},{t:39,type:"score_change",agent:"frontend",delta:5,reason:"审查通过 +5"},{t:40,type:"agent_status",agent:"reviewer",status:"idle",message:"全部代码审查完毕 ✓"},{t:42,type:"agent_status",agent:"patrol",status:"patrolling",message:"开始例行巡查..."},{t:44,type:"log",agent:"patrol",content:"检查任务状态:2/2 子任务完成,构建通过"},{t:46,type:"log",agent:"patrol",content:"检查审查记录:1 次驳回(安全问题)→ 修复后通过,漏洞已消除"},{t:48,type:"agent_status",agent:"patrol",status:"done",message:"巡查完毕,系统健康 ✓"},{t:50,type:"agent_status",agent:"planner",status:"done",message:"评论功能开发完成,准备部署"},{t:52,type:"log",agent:"planner",content:"任务完成!产出:评论 CRUD API(含安全校验)+ 评论组件 UI(支持 Markdown 和楼中楼)"},{t:58,type:"summary",data:{tasks_completed:2,average_score:4.25,tokens_used:95e4,rework_count:1,time_saved:"约 6 小时人力"}}],Vt={id:Xe,name:Ze,description:Ke,icon:Ye,duration:Qe,agents:Je,events:ta},ea="research-lab",aa="AI 市场营销",sa="模拟市场调研团队:多源检索 → 数据分析 → 报告撰写 → 评审校验,看 AI 如何产出一份专业的市场调研报告。",na="Megaphone",ra=52,oa=[{id:"planner",name:"研究主任",role:"planner",avatar:"🎓"},{id:"searcherA",name:"检索员A",role:"executor",avatar:"🔎"},{id:"searcherB",name:"检索员B",role:"executor",avatar:"📚"},{id:"writer",name:"报告撰写",role:"executor",avatar:"📝"},{id:"reviewer",name:"同行评审",role:"reviewer",avatar:"🧪"},{id:"patrol",name:"质量监控",role:"patrol",avatar:"📡"}],ia=[{t:0,type:"agent_status",agent:"planner",status:"thinking",message:"收到研究课题,开始规划调研方案..."},{t:2,type:"log",agent:"planner",content:"课题:2026年大语言模型技术趋势研究报告。需要多源检索 + 交叉验证 + 报告撰写"},{t:3,type:"task_created",agent:"planner",task:{id:"t1",name:"学术论文检索与摘要",assignee:"searcherA"},message:"子任务 1 → 检索员A 负责学术论文"},{t:4,type:"task_created",agent:"planner",task:{id:"t2",name:"行业报告与新闻整理",assignee:"searcherB"},message:"子任务 2 → 检索员B 负责行业资讯"},{t:5,type:"task_created",agent:"planner",task:{id:"t3",name:"综合研究报告撰写",assignee:"writer"},message:"子任务 3 → 报告撰写负责最终报告"},{t:5,type:"agent_status",agent:"planner",status:"done",message:"3 个子任务已分配,团队开始调研"},{t:6,type:"agent_status",agent:"searcherA",status:"working",message:"开始检索 arXiv、Google Scholar..."},{t:6,type:"task_status",task:"t1",status:"working"},{t:7,type:"agent_status",agent:"searcherB",status:"working",message:"开始检索行业报告和新闻..."},{t:7,type:"task_status",task:"t2",status:"working"},{t:9,type:"log",agent:"searcherA",content:"检索到 45 篇相关论文,按引用量和时间排序筛选..."},{t:11,type:"log",agent:"searcherB",content:"找到 McKinsey、Gartner 等 8 份行业报告 + 20 条科技新闻"},{t:14,type:"log",agent:"searcherA",content:"筛选出 12 篇核心论文,提取关键发现:MoE 架构、长上下文、多模态融合为三大趋势"},{t:15,type:"agent_status",agent:"searcherA",status:"done",message:"学术论文检索完成,12 篇核心论文"},{t:15,type:"task_status",task:"t1",status:"review"},{t:16,type:"log",agent:"searcherB",content:"整理完成:5 份行业报告摘要 + 市场数据(预计 2026 年市场规模 $500B)"},{t:17,type:"agent_status",agent:"searcherB",status:"done",message:"行业资讯整理完成,提交审查"},{t:17,type:"task_status",task:"t2",status:"review"},{t:18,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查两份检索结果的质量和完整性..."},{t:20,type:"review",agent:"reviewer",task:"t1",result:"approved",score:4.5,comment:"论文筛选严谨,摘要提炼到位"},{t:20,type:"score_change",agent:"searcherA",delta:5,reason:"审查通过 +5"},{t:22,type:"review",agent:"reviewer",task:"t2",result:"approved",score:4,comment:"资讯全面,数据来源可靠"},{t:22,type:"score_change",agent:"searcherB",delta:5,reason:"审查通过 +5"},{t:23,type:"agent_status",agent:"reviewer",status:"idle",message:"检索结果质量合格 ✓"},{t:24,type:"agent_status",agent:"writer",status:"working",message:"开始整合资料撰写研究报告..."},{t:24,type:"task_status",task:"t3",status:"working"},{t:27,type:"log",agent:"writer",content:"搭建报告框架:执行摘要 → 技术趋势 → 市场分析 → 风险挑战 → 结论建议"},{t:31,type:"log",agent:"writer",content:"初稿完成,约 3000 字,交叉引用了论文和行业数据"},{t:33,type:"agent_status",agent:"writer",status:"done",message:"研究报告初稿完成,提交同行评审"},{t:33,type:"task_status",task:"t3",status:"review"},{t:34,type:"agent_status",agent:"reviewer",status:"reviewing",message:"同行评审研究报告..."},{t:37,type:"log",agent:"reviewer",content:"报告逻辑严谨,但市场预测部分缺少不确定性分析,结论过于乐观"},{t:38,type:"review",agent:"reviewer",task:"t3",result:"rejected",score:3.5,comment:"缺少风险分析和不确定性讨论,结论需要更客观"},{t:38,type:"score_change",agent:"writer",delta:-2,reason:"审查驳回 -2"},{t:39,type:"agent_status",agent:"writer",status:"reworking",message:"报告被驳回...补充风险分析部分"},{t:39,type:"agent_status",agent:"reviewer",status:"idle",message:"等待报告修改"},{t:40,type:"reflection",agent:"writer",content:"研究报告要平衡呈现,不能只写利好,风险和局限性同样重要"},{t:42,type:"log",agent:"writer",content:"返工完成:新增风险分析章节 + 市场预测添加置信区间 + 结论更加审慎"},{t:43,type:"agent_status",agent:"writer",status:"done",message:"修改完成,重新提交评审"},{t:43,type:"task_status",task:"t3",status:"review"},{t:44,type:"agent_status",agent:"reviewer",status:"reviewing",message:"重新评审修改后的报告..."},{t:46,type:"review",agent:"reviewer",task:"t3",result:"approved",score:4.5,comment:"分析全面客观,风险讨论充分,可发布"},{t:46,type:"score_change",agent:"writer",delta:5,reason:"审查通过 +5"},{t:47,type:"agent_status",agent:"reviewer",status:"idle",message:"报告评审通过 ✓"},{t:48,type:"agent_status",agent:"patrol",status:"patrolling",message:"开始例行巡查..."},{t:49,type:"log",agent:"patrol",content:"检查任务状态:3/3 子任务已完成,1 次返工已修复"},{t:50,type:"agent_status",agent:"patrol",status:"done",message:"巡查完毕,一切正常 ✓"},{t:51,type:"log",agent:"planner",content:"任务完成!产出:2026 年大语言模型趋势研究报告(3500字),含 12 篇论文引用 + 5 份行业报告数据"},{t:52,type:"summary",data:{tasks_completed:3,average_score:4.1,tokens_used:15e5,rework_count:1,time_saved:"约 8 小时人力"}}],qt={id:ea,name:aa,description:sa,icon:na,duration:ra,agents:oa,events:ia},la="mcn-studio",ca="MCN 内容工厂",ua="模拟 MCN 全流程:热点猎取 → 文案撰写 → 视觉生成 → 自动发布 → 数据监控,体验 AI 内容流水线 7×24 自动运转。",ga="Clapperboard",da=58,pa=[{id:"planner",name:"内容总监",role:"planner",avatar:"🧠"},{id:"hunter",name:"热点猎手",role:"executor",avatar:"🔍"},{id:"copywriter",name:"文案编辑",role:"executor",avatar:"✍️"},{id:"designer",name:"视觉设计",role:"executor",avatar:"🎨"},{id:"publisher",name:"发布运营",role:"executor",avatar:"📡"},{id:"reviewer",name:"品控主编",role:"reviewer",avatar:"✅"},{id:"patrol",name:"数据巡查",role:"patrol",avatar:"🛰️"}],ma=[{t:0,type:"agent_status",agent:"planner",status:"thinking",message:"收到每日内容目标,规划今日选题方向..."},{t:2,type:"log",agent:"planner",content:"今日目标:围绕 AI 行业热点产出 3 条内容(图文+配图),发布到 WordPress。"},{t:3,type:"task_created",agent:"planner",task:{id:"t1",name:"搜索今日 AI 热点素材",assignee:"hunter"},message:"子任务 1 → 热点猎手搜索热梗和行业资讯"},{t:4,type:"task_created",agent:"planner",task:{id:"t2",name:"撰写 3 篇热点短文",assignee:"copywriter"},message:"子任务 2 → 文案编辑根据素材撰写文章"},{t:4,type:"task_created",agent:"planner",task:{id:"t3",name:"为每篇文章生成配图",assignee:"designer"},message:"子任务 3 → 视觉设计为每篇生成题图"},{t:5,type:"task_created",agent:"planner",task:{id:"t4",name:"内容发布到 WordPress",assignee:"publisher"},message:"子任务 4 → 发布运营负责上线发布"},{t:5,type:"agent_status",agent:"planner",status:"done",message:"4 个子任务已分配,流水线启动"},{t:6,type:"agent_status",agent:"hunter",status:"working",message:"开始搜索各平台 AI 热点..."},{t:6,type:"task_status",task:"t1",status:"working"},{t:9,type:"log",agent:"hunter",content:"抓取到 35 条热点:OpenAI 发布新模型、Google DeepMind 突破、AI 监管新政..."},{t:12,type:"log",agent:"hunter",content:"筛选出 3 个高热度选题,素材包已整理完成"},{t:13,type:"agent_status",agent:"hunter",status:"done",message:"素材搜集完成,3 个选题已就绪"},{t:13,type:"task_status",task:"t1",status:"review"},{t:14,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查素材选题和数据源可靠性..."},{t:16,type:"review",agent:"reviewer",task:"t1",result:"approved",score:4.5,comment:"选题紧跟热点,素材来源可靠"},{t:16,type:"score_change",agent:"hunter",delta:5,reason:"审查通过 +5"},{t:17,type:"agent_status",agent:"reviewer",status:"idle",message:"素材审查通过 ✓"},{t:17,type:"agent_status",agent:"copywriter",status:"working",message:"开始根据素材撰写 3 篇短文..."},{t:17,type:"task_status",task:"t2",status:"working"},{t:20,type:"log",agent:"copywriter",content:"第 1 篇完成:《OpenAI 新模型实测:上下文窗口扩展到 200 万》"},{t:23,type:"log",agent:"copywriter",content:"第 2 篇完成:《Google DeepMind 的下一步棋:AI for Science》"},{t:25,type:"log",agent:"copywriter",content:"3 篇短文全部完成,提交审查"},{t:26,type:"agent_status",agent:"copywriter",status:"done",message:"3 篇文案全部完成"},{t:26,type:"task_status",task:"t2",status:"review"},{t:27,type:"agent_status",agent:"reviewer",status:"reviewing",message:"逐篇审查文案质量..."},{t:29,type:"log",agent:"reviewer",content:"第 1 篇优秀,第 2 篇观点有偏差需要修正,第 3 篇通过"},{t:30,type:"review",agent:"reviewer",task:"t2",result:"rejected",score:3.5,comment:"第 2 篇 DeepMind 文章观点偏差,需核实数据源并修正论述"},{t:30,type:"score_change",agent:"copywriter",delta:-2,reason:"审查驳回 -2"},{t:31,type:"agent_status",agent:"copywriter",status:"reworking",message:"第 2 篇被驳回,修正观点和数据..."},{t:31,type:"reflection",agent:"copywriter",content:"总结:行业分析类文章需要更严谨的数据支撑,不能仅凭热度推测"},{t:34,type:"log",agent:"copywriter",content:"返工完成:重新核实了论文数据,修正了结论部分"},{t:35,type:"agent_status",agent:"copywriter",status:"done",message:"返工完成,重新提交审查"},{t:35,type:"task_status",task:"t2",status:"review"},{t:36,type:"agent_status",agent:"reviewer",status:"reviewing",message:"复审修改后的文案..."},{t:37,type:"review",agent:"reviewer",task:"t2",result:"approved",score:4,comment:"修正后数据准确,论述合理"},{t:37,type:"score_change",agent:"copywriter",delta:5,reason:"审查通过 +5"},{t:38,type:"agent_status",agent:"designer",status:"working",message:"为 3 篇文章生成配图..."},{t:38,type:"task_status",task:"t3",status:"working"},{t:41,type:"log",agent:"designer",content:"3 张题图生成完成:科技蓝调+数据可视化风格"},{t:42,type:"agent_status",agent:"designer",status:"done",message:"配图生成完成"},{t:42,type:"task_status",task:"t3",status:"review"},{t:43,type:"review",agent:"reviewer",task:"t3",result:"approved",score:4.5,comment:"配图风格统一,视觉质感好"},{t:43,type:"score_change",agent:"designer",delta:5,reason:"审查通过 +5"},{t:44,type:"agent_status",agent:"publisher",status:"working",message:"开始发布到 WordPress..."},{t:44,type:"task_status",task:"t4",status:"working"},{t:47,type:"log",agent:"publisher",content:"3 篇文章已全部发布上线,SEO 标签和分类已设置"},{t:48,type:"agent_status",agent:"publisher",status:"done",message:"发布完成 ✓"},{t:48,type:"task_status",task:"t4",status:"done"},{t:48,type:"score_change",agent:"publisher",delta:5,reason:"发布任务完成 +5"},{t:50,type:"agent_status",agent:"patrol",status:"patrolling",message:"巡检已发布内容的数据表现..."},{t:52,type:"log",agent:"patrol",content:"检查 3 篇文章状态:全部在线正常,无 404 错误,SEO 索引已提交"},{t:54,type:"agent_status",agent:"patrol",status:"done",message:"巡查完毕,所有内容正常 ✓"},{t:56,type:"log",agent:"planner",content:"今日任务完成!3 篇文章已上线。明日循环任务将自动启动新一轮内容产出。"},{t:58,type:"summary",data:{tasks_completed:4,average_score:4.1,tokens_used:18e5,rework_count:1,time_saved:"约 6 小时人力"}}],Wt={id:la,name:ca,description:ua,icon:ga,duration:da,agents:pa,events:ma},va="cross-border",ya="跨境电商",ha="模拟跨境全球化运营:关键词调研 → 多语言 SEO 文章 → 翻译本地化 → 广告文案优化 → 数据监控,体验 AI 驱动的出海内容引擎。",_a="Globe",ka=60,wa=[{id:"planner",name:"全球运营官",role:"planner",avatar:"🧠"},{id:"seo",name:"SEO 写手",role:"executor",avatar:"📝"},{id:"translator",name:"翻译官",role:"executor",avatar:"🌐"},{id:"adwriter",name:"广告优化",role:"executor",avatar:"📢"},{id:"emailer",name:"邮件营销",role:"executor",avatar:"📧"},{id:"reviewer",name:"语言审核",role:"reviewer",avatar:"✅"},{id:"patrol",name:"数据监控",role:"patrol",avatar:"🛰️"}],fa=[{t:0,type:"agent_status",agent:"planner",status:"thinking",message:"收到出海运营目标,规划多市场内容策略..."},{t:2,type:"log",agent:"planner",content:"本周目标市场:美国、日本。需要 SEO 文章 + 广告文案 + EDM 各 2 套,英/日双语。"},{t:3,type:"task_created",agent:"planner",task:{id:"t1",name:"英文 SEO 关键词调研 + 文章撰写",assignee:"seo"},message:"子任务 1 → SEO 写手负责英文市场内容"},{t:4,type:"task_created",agent:"planner",task:{id:"t2",name:"日语本地化翻译 + 文化适配",assignee:"translator"},message:"子任务 2 → 翻译官负责日语本地化"},{t:4,type:"task_created",agent:"planner",task:{id:"t3",name:"Google/Meta 广告文案撰写",assignee:"adwriter"},message:"子任务 3 → 广告优化负责投放文案"},{t:5,type:"task_created",agent:"planner",task:{id:"t4",name:"EDM 邮件内容编写",assignee:"emailer"},message:"子任务 4 → 邮件营销负责 EDM 内容"},{t:5,type:"agent_status",agent:"planner",status:"done",message:"4 条产线已分配,多市场内容引擎启动"},{t:6,type:"agent_status",agent:"seo",status:"working",message:"调研美国市场关键词..."},{t:6,type:"task_status",task:"t1",status:"working"},{t:9,type:"log",agent:"seo",content:"关键词调研完成:「AI agent platform」月搜索 12K、「multi agent collaboration」5.8K,竞争中等"},{t:13,type:"log",agent:"seo",content:"2 篇 SEO 文章完成,已嵌入目标关键词,标题 + Meta Description + H1/H2 结构优化"},{t:14,type:"agent_status",agent:"seo",status:"done",message:"英文 SEO 文章完成"},{t:14,type:"task_status",task:"t1",status:"review"},{t:15,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查英文 SEO 文章质量和关键词密度..."},{t:17,type:"review",agent:"reviewer",task:"t1",result:"approved",score:4.5,comment:"关键词布局合理,文章结构清晰,可读性好"},{t:17,type:"score_change",agent:"seo",delta:5,reason:"审查通过 +5"},{t:18,type:"agent_status",agent:"translator",status:"working",message:"开始日语本地化翻译..."},{t:18,type:"task_status",task:"t2",status:"working"},{t:21,type:"log",agent:"translator",content:"第 1 篇翻译完成,使用日本市场惯用表达,敬语体系适配 B2B 商务风格"},{t:24,type:"log",agent:"translator",content:"2 篇日语翻译完成,提交审查"},{t:25,type:"agent_status",agent:"translator",status:"done",message:"日语本地化完成"},{t:25,type:"task_status",task:"t2",status:"review"},{t:26,type:"agent_status",agent:"reviewer",status:"reviewing",message:"审查日语翻译准确性和本地化程度..."},{t:28,type:"log",agent:"reviewer",content:"第 1 篇敬语使用准确;第 2 篇有两处技术术语翻译不当:「orchestration」不应译为「オーケストレーション」,B2B 场景应使用「統合管理」"},{t:29,type:"review",agent:"reviewer",task:"t2",result:"rejected",score:3,comment:"术语翻译不够本土化,专业场景需使用行业习惯表达"},{t:29,type:"score_change",agent:"translator",delta:-2,reason:"审查驳回 -2"},{t:30,type:"agent_status",agent:"translator",status:"reworking",message:"修正术语翻译,参考日本 SaaS 行业用语..."},{t:30,type:"reflection",agent:"translator",content:"日语 B2B 翻译不能直接音译英文术语,要查阅目标行业的惯用日语表达"},{t:33,type:"log",agent:"translator",content:"返工完成:修正了 5 处术语,改用日本 IT 行业惯用表达"},{t:34,type:"agent_status",agent:"translator",status:"done",message:"修改完成,重新提交"},{t:34,type:"task_status",task:"t2",status:"review"},{t:35,type:"review",agent:"reviewer",task:"t2",result:"approved",score:4,comment:"术语修正到位,本地化质量达标"},{t:35,type:"score_change",agent:"translator",delta:5,reason:"审查通过 +5"},{t:36,type:"agent_status",agent:"adwriter",status:"working",message:"撰写 Google Ads + Meta 广告文案..."},{t:36,type:"task_status",task:"t3",status:"working"},{t:39,type:"log",agent:"adwriter",content:"完成 4 组广告文案(英文),包含 A/B 两版标题、描述和 CTA"},{t:40,type:"agent_status",agent:"adwriter",status:"done",message:"广告文案完成"},{t:40,type:"task_status",task:"t3",status:"review"},{t:41,type:"review",agent:"reviewer",task:"t3",result:"approved",score:4.5,comment:"CTA 清晰,A/B 版本差异明显便于测试"},{t:41,type:"score_change",agent:"adwriter",delta:5,reason:"审查通过 +5"},{t:42,type:"agent_status",agent:"emailer",status:"working",message:"编写 EDM 邮件内容..."},{t:42,type:"task_status",task:"t4",status:"working"},{t:46,type:"log",agent:"emailer",content:"2 套 EDM 完成:产品介绍邮件 + 案例分享邮件,含个性化变量和退订链接"},{t:47,type:"agent_status",agent:"emailer",status:"done",message:"EDM 邮件内容完成"},{t:47,type:"task_status",task:"t4",status:"review"},{t:48,type:"review",agent:"reviewer",task:"t4",result:"approved",score:4,comment:"邮件结构清晰,CTA 引导自然"},{t:48,type:"score_change",agent:"emailer",delta:5,reason:"审查通过 +5"},{t:50,type:"agent_status",agent:"patrol",status:"patrolling",message:"巡查各渠道数据表现..."},{t:53,type:"log",agent:"patrol",content:"检查完毕:4/4 任务完成,1 次翻译返工已修复。SEO 文章索引提交成功,广告账户正常。"},{t:55,type:"agent_status",agent:"patrol",status:"done",message:"全渠道巡查完毕 ✓"},{t:57,type:"log",agent:"planner",content:"任务完成!产出:2 篇 SEO 文章(英)、2 篇本地化翻译(日)、4 组广告文案、2 套 EDM,下周循环继续。"},{t:60,type:"summary",data:{tasks_completed:4,average_score:4,tokens_used:22e5,rework_count:1,time_saved:"约 12 小时人力"}}],Xt={id:va,name:ya,description:ha,icon:_a,duration:ka,agents:wa,events:fa},ba={"content-company":Gt.agents,ecommerce:Ht.agents,"dev-team":Vt.agents,"research-lab":qt.agents,chaos:Tt.agents,"mcn-studio":Wt.agents,"cross-border":Xt.agents};function $a(h){return ba[h]}function Ma(){const h=ut(),o=z(null),u=z(!1),y=z(.25),l=z(0);let r=0,n=null,g=new Map;const B=Z(()=>o.value?Math.min(l.value/o.value.duration,1):0),d=Z(()=>o.value?r>=o.value.events.length:!1);function i(E){M(),h.reset(),o.value=E,h.state.duration=E.duration,h.initAgents(E.agents),g=new Map;const S=$a(E.id);if(S)for(const X of S){const V=E.agents.find(J=>J.id===X.id);V&&V.name!==X.name&&g.set(X.name,V.name)}r=0,l.value=0}function c(E){let S=E;for(const[X,V]of g)S=S.split(X).join(V);return S}function _(E){if(g.size===0)return E;const S={...E};return S.message&&(S.message=c(S.message)),S.content&&(S.content=c(S.content)),S.comment&&(S.comment=c(S.comment)),S}function P(){o.value&&(d.value||(u.value=!0,h.state.phase="playing",n=setInterval(()=>{l.value+=.1*y.value,h.state.elapsed=l.value;const E=o.value.events;for(;rl.value)break;h.pushEvent(_(S)),r++}r>=E.length&&(u.value=!1,n&&(clearInterval(n),n=null),h.state.phase!=="result"&&setTimeout(()=>{h.state.phase!=="result"&&(h.state.phase="result")},2e3))},100)))}function I(){u.value=!1,h.state.phase="paused",n&&(clearInterval(n),n=null)}function M(){I(),l.value=0,r=0,o.value=null}function s(E){y.value=E}function A(){if(!o.value)return;const E=o.value;i(E),P()}return{scenario:o,playing:u,speed:y,elapsed:l,progress:B,isFinished:d,load:i,play:P,pause:I,stop:M,setSpeed:s,restart:A}}const Aa={class:"scenario-sections"},Ia={class:"scenario-group"},xa={class:"scenario-grid scenario-grid--3"},Ca=["onClick"],Sa={class:"scenario-icon-wrap"},Ta={class:"scenario-name"},Ba={class:"scenario-desc"},Ea={class:"scenario-meta"},Oa={class:"scenario-group"},Fa={class:"scenario-grid scenario-grid--2"},Pa=["onClick"],Ra={class:"scenario-icon-wrap"},Da={class:"scenario-name"},La={class:"scenario-desc"},Na={class:"scenario-meta"},za={class:"scenario-row"},ja={class:"scenario-group scenario-group--half"},Ua={class:"scenario-grid scenario-grid--1"},Ga=["onClick"],Ha={class:"scenario-icon-wrap"},Va={class:"scenario-name"},qa={class:"scenario-desc"},Wa={class:"scenario-meta"},Xa={class:"scenario-group scenario-group--half"},Za={class:"scenario-grid scenario-grid--1"},Ka=["onClick"],Ya={class:"scenario-icon-wrap"},Qa={class:"scenario-name"},Ja={class:"scenario-desc"},ts={class:"scenario-meta"},es=at({__name:"ScenarioSelector",emits:["select"],setup(h,{emit:o}){const u=[Gt,Wt,qt],y=[Ht,Xt],l=[Vt],r=[Tt],n={Newspaper:K(be),ShoppingCart:K(Ae),Code:K(de),Megaphone:K(fe),ShieldAlert:K(jt),Clapperboard:K(he),Globe:K(ke)},g=o;return(B,d)=>(v(),w("div",Aa,[e("div",Ia,[d[1]||(d[1]=e("h3",{class:"group-label"},"内容 & 营销",-1)),e("div",xa,[(v(),w(q,null,W(u,(i,c)=>e("button",{key:i.id,class:nt(["scenario-card",`scenario-card--${i.id}`]),style:Y({animationDelay:`${c*.06}s`}),onClick:_=>g("select",i)},[e("div",Sa,[(v(),gt(dt(n[i.icon]),{size:28,"stroke-width":1.5}))]),e("h3",Ta,m(i.name),1),e("p",Ba,m(i.description),1),i.id==="content-company"?(v(),w("a",{key:0,href:"https://1m-reviews.com",target:"_blank",class:"scenario-link",onClick:d[0]||(d[0]=zt(()=>{},["stop"]))}," 🔗 1M-Reviews.com — 正由 OpenMOSS 自主运行 ")):H("",!0),e("span",Ea,m(i.agents.length)+" 个 AI 员工 · "+m(i.duration)+"s ",1)],14,Ca)),64))])]),e("div",Oa,[d[2]||(d[2]=e("h3",{class:"group-label"},"电商 & 出海",-1)),e("div",Fa,[(v(),w(q,null,W(y,(i,c)=>e("button",{key:i.id,class:nt(["scenario-card",`scenario-card--${i.id}`]),style:Y({animationDelay:`${.18+c*.06}s`}),onClick:_=>g("select",i)},[e("div",Ra,[(v(),gt(dt(n[i.icon]),{size:28,"stroke-width":1.5}))]),e("h3",Da,m(i.name),1),e("p",La,m(i.description),1),e("span",Na,m(i.agents.length)+" 个 AI 员工 · "+m(i.duration)+"s ",1)],14,Pa)),64))])]),e("div",za,[e("div",ja,[d[3]||(d[3]=e("h3",{class:"group-label"},"技术 & 开发",-1)),e("div",Ua,[(v(),w(q,null,W(l,i=>e("button",{key:i.id,class:nt(["scenario-card",`scenario-card--${i.id}`]),style:{animationDelay:"0.30s"},onClick:c=>g("select",i)},[e("div",Ha,[(v(),gt(dt(n[i.icon]),{size:28,"stroke-width":1.5}))]),e("h3",Va,m(i.name),1),e("p",qa,m(i.description),1),e("span",Wa,m(i.agents.length)+" 个 AI 员工 · "+m(i.duration)+"s ",1)],10,Ga)),64))])]),e("div",Xa,[d[4]||(d[4]=e("h3",{class:"group-label"},"系统能力",-1)),e("div",Za,[(v(),w(q,null,W(r,i=>e("button",{key:i.id,class:nt(["scenario-card",`scenario-card--${i.id}`]),style:{animationDelay:"0.36s"},onClick:c=>g("select",i)},[e("div",Ya,[(v(),gt(dt(n[i.icon]),{size:28,"stroke-width":1.5}))]),e("h3",Qa,m(i.name),1),e("p",Ja,m(i.description),1),e("span",ts,m(i.agents.length)+" 个 AI 员工 · "+m(i.duration)+"s ",1)],10,Ka)),64))])])])]))}}),as=Q(es,[["__scopeId","data-v-01c0eba0"]]),ss={class:"team-preview"},ns={class:"agent-grid"},rs={class:"agent-avatar-wrap"},os={class:"agent-avatar"},is=["onUpdate:modelValue","placeholder"],ls={class:"agent-role"},cs=at({__name:"TeamPreview",props:{agents:{}},emits:["launch"],setup(h,{emit:o}){const u=h,y=o,l=z({});function r(){for(const B of u.agents)l.value[B.id]=B.name}r();const n={planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查员"};function g(){const B=u.agents.map(d=>({...d,name:l.value[d.id]||d.name}));y("launch",B)}return(B,d)=>(v(),w("div",ss,[e("div",ns,[(v(!0),w(q,null,W(u.agents,i=>(v(),w("div",{key:i.id,class:"agent-card",style:Y({"--accent":N(yt)[i.role]})},[e("div",rs,[e("span",os,m(i.avatar),1)]),ie(e("input",{"onUpdate:modelValue":c=>l.value[i.id]=c,class:"agent-name-input",maxlength:"8",placeholder:i.name},null,8,is),[[le,l.value[i.id]]]),e("span",ls,m(n[i.role]||i.role),1)],4))),128))]),e("button",{class:"launch-btn",onClick:g},[...d[0]||(d[0]=[e("span",{class:"launch-icon"},"🚀",-1),U(" 启动 AI 团队 ",-1)])])]))}}),us=Q(cs,[["__scopeId","data-v-ed50e5f1"]]),gs=["viewBox"],ds=["d"],ps=["cx","cy"],ms=["x"],vs={class:"col-label"},ys={class:"col-count"},hs={class:"task-name"},_s={class:"task-meta"},ks={key:0,class:"task-score"},ws={key:0,class:"task-comment"},fs={key:1,class:"rework-badge"},bs=at({__name:"KanbanBoard",setup(h){const o=ut(),u=z(null),y=[{key:"pending",label:"📋 待分配",color:"#8C8A84"},{key:"working",label:"⚡ 执行中",color:"#4A7FA5"},{key:"review",label:"🔍 审查中",color:"#C09840"},{key:"done",label:"✅ 已完成",color:"#4A7A5E"}],l=Z(()=>{const I=o.tasksByStatus.value;return{pending:[...I.pending||[],...I.assigned||[]],working:[...I.working||[],...I.rework||[]],review:I.review||[],done:I.done||[]}});function r(I){return o.state.agents.get(I)?.name||I}function n(I){const M=o.state.agents.get(I);return M?yt[M.role]:"#94a3b8"}function g(I){return(o.tasksByStatus.value.rework||[]).some(s=>s.id===I)}const B=z(!1),d=z(""),i=z("0 0 100 100"),c=z({});function _(){if(!u.value)return;const I=u.value.querySelectorAll(".kanban-col")[2],M=u.value.querySelectorAll(".kanban-col")[1];if(!I||!M)return;const s=u.value.getBoundingClientRect(),A=I.getBoundingClientRect(),E=M.getBoundingClientRect(),S=A.left+A.width/2-s.left,X=A.top+50-s.top,V=E.left+E.width/2-s.left,J=Math.abs(S-V)+40,rt=80,ht=20,_t=J-20,kt=rt-10,wt=rt-10,ft=J/2,bt=10;i.value=`0 0 ${J} ${rt}`,d.value=`M ${ht} ${kt} Q ${ft} ${bt} ${_t} ${wt}`,c.value={position:"absolute",left:`${Math.min(V,S)-20}px`,top:`${X-rt+10}px`,width:`${J}px`,height:`${rt}px`,pointerEvents:"none",zIndex:"20"},B.value=!0,setTimeout(()=>{B.value=!1},1500)}pt(()=>o.state.timeline.length,()=>{const I=o.state.timeline[0];I&&(I.event.type==="review"&&I.event.result==="rejected"||I.event.type==="agent_status"&&I.event.status==="reworking")&&St(()=>_())});function P(){B.value=!1}return It(()=>window.addEventListener("resize",P)),xt(()=>window.removeEventListener("resize",P)),(I,M)=>(v(),w("div",{class:"kanban",ref_key:"kanbanRef",ref:u},[F(vt,{name:"arrow-fade"},{default:ct(()=>[B.value?(v(),w("svg",{key:0,viewBox:i.value,style:Y(c.value),fill:"none"},[e("path",{d:d.value,stroke:"#A05252","stroke-width":"2.5","stroke-dasharray":"6 4",fill:"none",class:"rework-arrow-path"},null,8,ds),e("circle",{cx:d.value.split(" ").slice(-2,-1)[0],cy:d.value.split(" ").slice(-1)[0],r:"4",fill:"#A05252"},null,8,ps),e("text",{x:Number(i.value.split(" ")[2])/2,y:20,"text-anchor":"middle",fill:"#A05252","font-size":"11","font-weight":"700","font-family":"Instrument Sans, sans-serif"},"🔄 返工",8,ms)],12,gs)):H("",!0)]),_:1}),(v(),w(q,null,W(y,s=>e("div",{key:s.key,class:"kanban-col"},[e("div",{class:"kanban-col-header",style:Y({borderColor:s.color})},[e("span",vs,m(s.label),1),e("span",ys,m(l.value[s.key]?.length||0),1)],4),F(Ct,{name:"task-card",tag:"div",class:"kanban-col-body"},{default:ct(()=>[(v(!0),w(q,null,W(l.value[s.key],A=>(v(),w("div",{key:A.id,class:nt(["task-card",{"task-card--rework":g(A.id),"task-card--done":A.status==="done"}]),style:Y({"--agent-color":n(A.assignee)})},[e("div",hs,m(A.name),1),e("div",_s,[e("span",{class:"task-assignee",style:Y({color:n(A.assignee)})}," → "+m(r(A.assignee)),5),A.score?(v(),w("span",ks,m(A.score)+"/5 ",1)):H("",!0)]),A.comment?(v(),w("div",ws,m(A.comment),1)):H("",!0),g(A.id)?(v(),w("div",fs," 🔄 返工中 ")):H("",!0)],6))),128))]),_:2},1024)])),64))],512))}}),$s=Q(bs,[["__scopeId","data-v-0fbc8243"]]),Ms={class:"agents-row"},As={class:"agent-avatar-area"},Is={class:"agent-avatar-circle"},xs={class:"agent-avatar"},Cs={class:"agent-expression"},Ss={class:"agent-name"},Ts={key:0,class:"thinking-dots"},Bs={key:0,class:"agent-bubble"},Es=at({__name:"AgentCards",setup(h){const o=ut(),u={idle:"空闲",thinking:"思考中",working:"工作中",reviewing:"审查中",reworking:"返工中",patrolling:"巡逻中",done:"完成"};return(y,l)=>(v(),w("div",Ms,[(v(!0),w(q,null,W(N(o).agentList.value,r=>(v(),w("div",{key:r.id,class:nt(["agent-card",`agent-card--${r.status}`]),style:Y({"--accent":N(yt)[r.role]})},[e("div",As,[e("div",Is,[e("span",xs,m(r.avatar),1)]),e("span",Cs,m(r.expression),1)]),e("div",Ss,m(r.name),1),e("div",{class:nt(["agent-status-badge",`status--${r.status}`])},[r.status==="thinking"||r.status==="working"||r.status==="reviewing"||r.status==="patrolling"?(v(),w("span",Ts,[...l[0]||(l[0]=[e("span",{class:"dot"},null,-1),e("span",{class:"dot"},null,-1),e("span",{class:"dot"},null,-1)])])):H("",!0),U(" "+m(u[r.status]||r.status),1)],2),F(vt,{name:"bubble"},{default:ct(()=>[r.message?(v(),w("div",Bs,m(r.message),1)):H("",!0)]),_:2},1024)],6))),128))]))}}),Os=Q(Es,[["__scopeId","data-v-a4a07c68"]]),Fs={class:"log-header"},Ps={class:"log-count"},Rs={class:"log-icon"},Ds={key:0,class:"log-agent"},Ls={class:"log-text"},Ns={key:0,class:"typing-cursor"},zs={key:0,class:"log-empty"},js=at({__name:"LiveLog",setup(h){const o=ut(),u=z(null),y=z(null),l=z("");let r=null;function n(c){switch(c.event.type){case"review":return c.event.result==="approved"?"✅":"❌";case"reflection":return"💭";case"score_change":return(c.event.delta??0)>0?"⭐":"💔";case"task_created":return"📋";default:return c.agentAvatar||"💬"}}function g(c){const _=c.event;switch(_.type){case"log":return _.content||_.message||"";case"agent_status":return _.message||`${c.agentName} 状态变更为 ${_.status}`;case"task_created":{const P=typeof _.task=="object"?_.task.name:_.task;return _.message||`创建任务:${P}`}case"review":return`${_.result==="approved"?"通过":"驳回"}(${_.score}/5)${_.comment||""}`;case"reflection":return`反思:${_.content}`;case"score_change":return`${(_.delta??0)>0?"+":""}${_.delta} ${_.reason||""}`;default:return _.message||_.content||""}}function B(c){const _=c.event;return _.type==="review"&&_.result==="rejected"?"log-entry--rejected":_.type==="review"&&_.result==="approved"?"log-entry--approved":_.type==="reflection"?"log-entry--reflection":_.type==="score_change"&&(_.delta??0)<0?"log-entry--negative":_.type==="score_change"&&(_.delta??0)>0?"log-entry--positive":""}pt(()=>o.state.timeline.length,()=>{const c=o.state.timeline[0];if(!c)return;["log","reflection","review"].includes(c.event.type)&&d(c),St(()=>{u.value&&(u.value.scrollTop=0)})});function d(c){r&&clearTimeout(r);const _=g(c);y.value=c.id,l.value="";let P=0;function I(){P<_.length?(l.value+=_[P],P++,r=setTimeout(I,30+Math.random()*20)):y.value=null}I()}function i(c){return y.value===c.id?l.value:g(c)}return(c,_)=>(v(),w("div",{class:"live-log",ref_key:"logRef",ref:u},[e("div",Fs,[_[0]||(_[0]=e("span",{class:"log-title"},"💬 实时日志",-1)),e("span",Ps,m(N(o).state.timeline.length)+" 条",1)]),F(Ct,{name:"log-entry",tag:"div",class:"log-list"},{default:ct(()=>[(v(!0),w(q,null,W(N(o).state.timeline.slice(0,30),P=>(v(),w("div",{key:P.id,class:nt(["log-entry",B(P)])},[e("span",Rs,m(n(P)),1),P.agentName?(v(),w("span",Ds,m(P.agentName)+":",1)):H("",!0),e("span",Ls,[U(m(i(P))+" ",1),y.value===P.id?(v(),w("span",Ns,"▌")):H("",!0)])],2))),128))]),_:1}),N(o).state.timeline.length===0?(v(),w("div",zs," 等待 AI 团队开始工作... ")):H("",!0)],512))}}),Us=Q(js,[["__scopeId","data-v-84815879"]]);var Bt={};(function h(o,u,y,l){var r=!!(o.Worker&&o.Blob&&o.Promise&&o.OffscreenCanvas&&o.OffscreenCanvasRenderingContext2D&&o.HTMLCanvasElement&&o.HTMLCanvasElement.prototype.transferControlToOffscreen&&o.URL&&o.URL.createObjectURL),n=typeof Path2D=="function"&&typeof DOMMatrix=="function",g=(function(){if(!o.OffscreenCanvas)return!1;try{var a=new OffscreenCanvas(1,1),t=a.getContext("2d");t.fillRect(0,0,1,1);var p=a.transferToImageBitmap();t.createPattern(p,"no-repeat")}catch{return!1}return!0})();function B(){}function d(a){var t=u.exports.Promise,p=t!==void 0?t:o.Promise;return typeof p=="function"?new p(a):(a(B,B),null)}var i=(function(a,t){return{transform:function(p){if(a)return p;if(t.has(p))return t.get(p);var f=new OffscreenCanvas(p.width,p.height),b=f.getContext("2d");return b.drawImage(p,0,0),t.set(p,f),f},clear:function(){t.clear()}}})(g,new Map),c=(function(){var a=Math.floor(16.666666666666668),t,p,f={},b=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(t=function($){var x=Math.random();return f[x]=requestAnimationFrame(function k(C){b===C||b+a-1o.state.timeline.length,()=>{const l=o.state.timeline[0];if(!l)return;const r=l.event;if(r.type==="score_change"&&r.delta!==void 0){const n=r.delta>0,g={id:`f-${++y}`,text:n?`+${r.delta} ↑`:`${r.delta} ↓`,color:n?"#4A7A5E":"#A05252",x:30+Math.random()*40};u.value.push(g),setTimeout(()=>{u.value=u.value.filter(B=>B.id!==g.id)},1800),n&&r.delta>=5&&Nt({particleCount:40,spread:60,origin:{x:.5,y:.7},colors:["#8B6F4E","#4A7A5E","#C09840","#4A7FA5"],gravity:.8,scalar:.8})}r.type==="review"&&r.result==="approved"&&Nt({particleCount:30,spread:50,origin:{x:.5,y:.6},colors:["#4A7A5E","#8B6F4E","#C09840"],gravity:.9,scalar:.7})}),(l,r)=>(v(),w("div",Gs,[F(Ct,{name:"float"},{default:ct(()=>[(v(!0),w(q,null,W(u.value,n=>(v(),w("div",{key:n.id,class:"float-item",style:Y({color:n.color,left:`${n.x}%`})},m(n.text),5))),128))]),_:1})]))}}),Vs=Q(Hs,[["__scopeId","data-v-e97d3502"]]),qs={key:0,class:"result-page"},Ws={class:"stats-grid"},Xs={class:"stat-card stat-card--purple"},Zs={class:"stat-value"},Ks={class:"stat-card stat-card--yellow"},Ys={class:"stat-value"},Qs={class:"stat-card stat-card--red"},Js={class:"stat-value"},tn={class:"stat-card stat-card--blue"},en={class:"stat-value"},an={class:"stat-cost"},sn={class:"time-saved"},nn={class:"time-saved-text"},rn={class:"agent-results"},on={class:"ar-avatar"},ln={class:"ar-info"},cn={class:"ar-name"},un={class:"ar-score"},gn={class:"ar-score-num"},dn={class:"ar-comment"},pn={class:"cta-section"},mn={href:"https://github.com/uluckyXH/OpenMOSS",target:"_blank",class:"cta-btn cta-btn--primary"},vn=at({__name:"ResultPage",emits:["restart","chaos","reselect"],setup(h,{emit:o}){const u=o,y=ut(),l=Z(()=>y.state.summary),r=Z(()=>y.agentList.value);function n(M,s=1500){const A=z(0);let E=null,S=null;function X(V){E||(E=V);const J=Math.min((V-E)/s,1),rt=1-Math.pow(1-J,4);A.value=Math.round(M*rt),J<1&&(S=requestAnimationFrame(X))}return It(()=>{S=requestAnimationFrame(X)}),xt(()=>{S&&cancelAnimationFrame(S)}),A}const g=Z(()=>l.value?.tasks_completed??0),B=Z(()=>l.value?.average_score??0),d=Z(()=>l.value?.rework_count??0),i=Z(()=>l.value?.tokens_used??0),c=Z(()=>{const M=i.value/1e6;return M<.01?"< ¥0.01":`¥${M.toFixed(2)}`}),_=n(g.value),P=n(i.value,2e3);function I(M){return M.score>=105?"表现优秀!持续高质量输出 🌟":M.score>=100?"稳定发挥,按时完成任务 ✓":M.score>=95?"经历返工后有所成长 📈":"需要更多训练和指导 💪"}return(M,s)=>l.value?(v(),w("div",qs,[s[14]||(s[14]=e("h2",{class:"result-title"},"🎉 AI 公司任务完成!",-1)),s[15]||(s[15]=e("p",{class:"result-subtitle"},"以下是本次工作的总结报告",-1)),e("div",Ws,[e("div",Xs,[e("div",Zs,m(N(_)),1),s[3]||(s[3]=e("div",{class:"stat-label"},"完成任务",-1))]),e("div",Ks,[e("div",Ys,m(B.value.toFixed(1)),1),s[4]||(s[4]=e("div",{class:"stat-label"},"平均评分",-1))]),e("div",Qs,[e("div",Js,m(d.value),1),s[5]||(s[5]=e("div",{class:"stat-label"},"返工次数",-1))]),e("div",tn,[e("div",en,m(N(P).toLocaleString()),1),s[6]||(s[6]=e("div",{class:"stat-label"},"Token 消耗",-1)),e("div",an,"≈ "+m(c.value),1)])]),e("div",sn,[s[8]||(s[8]=e("span",{class:"time-saved-icon"},"⏱️",-1)),e("span",nn,[s[7]||(s[7]=U("估算节省:",-1)),e("strong",null,m(l.value.time_saved),1)])]),s[16]||(s[16]=e("h3",{class:"section-title"},"👥 团队成绩单",-1)),e("div",rn,[(v(!0),w(q,null,W(r.value,A=>(v(),w("div",{key:A.id,class:"agent-result-card",style:Y({"--accent":N(yt)[A.role]})},[e("div",on,m(A.avatar),1),e("div",ln,[e("div",cn,m(A.name),1),e("div",un,[e("span",gn,m(A.score),1),s[9]||(s[9]=e("span",{class:"ar-score-label"},"分",-1))]),e("div",dn,m(I(A)),1)])],4))),128))]),e("div",pn,[e("button",{class:"cta-btn cta-btn--ghost",onClick:s[0]||(s[0]=A=>u("restart"))},[F(N(ue),{size:15,"stroke-width":2}),s[10]||(s[10]=U(" 再看一次 ",-1))]),e("button",{class:"cta-btn cta-btn--ghost cta-btn--danger",onClick:s[1]||(s[1]=A=>u("chaos"))},[F(N(jt),{size:15,"stroke-width":2}),s[11]||(s[11]=U(" 搞点问题 ",-1))]),e("button",{class:"cta-btn cta-btn--secondary",onClick:s[2]||(s[2]=A=>u("reselect"))},[F(N(we),{size:15,"stroke-width":2}),s[12]||(s[12]=U(" 再试一个场景 ",-1))]),e("a",mn,[F(N(ge),{size:15,"stroke-width":2}),s[13]||(s[13]=U(" 部署你的 AI 公司 ",-1))])])])):H("",!0)}}),yn=Q(vn,[["__scopeId","data-v-c9b98e95"]]),hn="/logo-200.png",_n={class:"demo-nav"},kn={class:"nav-left"},wn={class:"nav-links"},fn={class:"nav-right"},bn={class:"nav-btn nav-btn--ghost",href:"https://github.com/uluckyXH/OpenMOSS",target:"_blank"},$n=at({__name:"DemoNav",props:{showCta:{type:Boolean}},emits:["startDemo"],setup(h,{emit:o}){const u=o;function y(){const l=document.querySelector(".bento-section");l&&l.scrollIntoView({behavior:"smooth"})}return(l,r)=>(v(),w("nav",_n,[e("div",kn,[r[4]||(r[4]=e("a",{href:"/",class:"nav-logo"},[e("img",{src:hn,alt:"OpenMOSS",class:"nav-logo-icon"}),U(" OpenMOSS ")],-1)),e("ul",wn,[r[1]||(r[1]=e("li",null,[e("a",{href:"https://github.com/uluckyXH/OpenMOSS",target:"_blank"},"GitHub")],-1)),e("li",null,[e("a",{href:"#bento",onClick:zt(y,["prevent"])},"功能")]),r[2]||(r[2]=e("li",null,[e("a",{href:"https://github.com/uluckyXH/OpenMOSS#quick-start",target:"_blank"},"文档")],-1)),r[3]||(r[3]=e("li",null,[e("a",{href:"https://1m-reviews.com",target:"_blank"},"案例")],-1))])]),e("div",fn,[e("a",bn,[F(N(pe),{size:14,"stroke-width":2}),r[5]||(r[5]=U(" Star ",-1))]),h.showCta?(v(),w("button",{key:0,class:"nav-btn nav-btn--dark",onClick:r[0]||(r[0]=n=>u("startDemo"))},[F(N(Ut),{size:13,"stroke-width":2.5,fill:"currentColor"}),r[6]||(r[6]=U(" 开始体验 ",-1))])):H("",!0)])]))}}),Mn=Q($n,[["__scopeId","data-v-399bb5b1"]]),An={class:"hero"},In={class:"hero-sub"},xn={class:"typed"},Cn={class:"hero-actions"},Sn={class:"btn-hero btn-hero-outline",href:"https://github.com/uluckyXH/OpenMOSS",target:"_blank"},Tn="",Bn=at({__name:"DemoHero",emits:["startDemo"],setup(h,{emit:o}){const u=o,y=["OpenMOSS——一个多Agent协同、自组织自修复自进化的AI公司操作系统,现已开源。","4 种角色各司其职,全程零人工编排,7×24 无人值守。","提交 → 审查 → 返工 → 再审,闭环质控保障每一份交付物。"],l=z("");let r=null,n=0,g=0,B=!1;function d(){const i=y[n];if(B){if(g--,l.value=i.slice(0,g),g<=0){B=!1,n=(n+1)%y.length,r=setTimeout(d,400);return}r=setTimeout(d,30)}else{if(g++,l.value=i.slice(0,g),g>=i.length){r=setTimeout(()=>{B=!0,d()},2e3);return}r=setTimeout(d,60)}}return It(()=>{r=setTimeout(d,800)}),xt(()=>{r&&clearTimeout(r)}),(i,c)=>(v(),w("section",An,[c[5]||(c[5]=e("h1",null,[U("3分钟,体验"),e("em",null,"AI公司"),e("br"),U("的高效率")],-1)),e("p",In,[U(m(Tn)),e("span",xn,m(l.value),1),c[1]||(c[1]=e("span",{class:"cursor"},"|",-1))]),e("div",Cn,[e("button",{class:"btn-hero btn-hero-dark",onClick:c[0]||(c[0]=_=>u("startDemo"))},[F(N(Ut),{size:15,"stroke-width":2.5,fill:"currentColor"}),c[2]||(c[2]=U(" 开始体验 Demo ",-1))]),e("a",Sn,[F(N(_e),{size:15,"stroke-width":2}),c[3]||(c[3]=U(" GitHub ",-1))]),c[4]||(c[4]=e("span",{class:"hero-note"},"无需安装 · 直接在浏览器中体验",-1))])]))}}),En=Q(Bn,[["__scopeId","data-v-d5381e74"]]),On={class:"bento-section"},Fn={class:"bento-grid"},Pn={class:"bento-title"},Rn={class:"bento-desc"},Dn=at({__name:"DemoBento",setup(h){const o=[{title:"多 Agent 自组织协作",icon:K(me),desc:"规划者拆需求、执行者干活、审查者把关、巡查者兜底——4 种角色各司其职,全程零人工编排,像一家真正的公司一样自主运转。",span:"wide",accent:"#1A1917",bg:"#1A1917",color:"#FAFAF8"},{title:"闭环质量控制",icon:K($e),desc:"逐条批注 + 打分,不达标自动驳回返工。「提交 → 审查 → 返工 → 再审」循环往复,直到产出合格,交付物质量有保障。",span:"normal",accent:"#8B6F4E"},{title:"自愈巡检 · 永不嬕机",icon:K(ve),desc:"巡查者持续扫描系统全局,卡死的任务自动标记修复、异常流程自动告警——Agent「死亡率」降至 0%,7×24 无人值守。",span:"normal",accent:"#4A7A5E"},{title:"积分排行 · 数据驱动",icon:K(ye),desc:"审查结果实时写入积分排行榜。谁干得好一目了然——用数据代替管理,让 AI 团队自我进化。",span:"normal",accent:"#C09840"},{title:"循环任务 · 持续运营",icon:K(Me),desc:"内置 recurring 任务类型,设定目标后自动循环执行。实测两天自动产出 20+ 篇文章——适合资讯采集、内容发布等 7×24 持续运营场景。",span:"wide",accent:"#4A7FA5"}];return(u,y)=>(v(),w("section",On,[y[0]||(y[0]=e("h2",{class:"bento-heading"},"核心能力",-1)),y[1]||(y[1]=e("p",{class:"bento-sub"},"一个完整的 AI 组织需要什么?",-1)),e("div",Fn,[(v(),w(q,null,W(o,(l,r)=>e("div",{key:l.title,class:nt(["bento-card",{"bento-card--wide":l.span==="wide","bento-card--dark":l.bg}]),style:Y({"--bento-accent":l.accent,backgroundColor:l.bg||"#FFFFFF",color:l.color||"#1A1917",animationDelay:`${r*.06}s`})},[e("div",{class:nt(["bento-icon",{"bento-icon--dark":l.bg}])},[(v(),gt(dt(l.icon),{size:22,"stroke-width":1.8}))],2),e("h3",Pn,m(l.title),1),e("p",Rn,m(l.desc),1)],6)),64))])]))}}),Ln=Q(Dn,[["__scopeId","data-v-16cabe5b"]]),Nn={},zn={class:"demo-footer"};function jn(h,o){return v(),w("footer",zn,[...o[0]||(o[0]=[ce('',1)])])}const Un=Q(Nn,[["render",jn],["__scopeId","data-v-222fd6a1"]]),Gn={class:"demo-page"},Hn={key:0,class:"hero-area"},Vn={class:"demo-main"},qn={key:"select",class:"demo-phase"},Wn={key:"preview",class:"demo-phase"},Xn={class:"phase-title"},Zn={class:"phase-desc"},Kn={key:"simulation",class:"demo-phase demo-phase--sim"},Yn={class:"sim-header"},Qn={class:"sim-controls"},Jn=["value"],tr=["value"],er={class:"progress-bar"},ar={key:"result",class:"demo-phase"},sr=at({__name:"DemoView",setup(h){const o=z("select"),u=z(null),y=Ma(),l=ut();pt(()=>l.state.phase,M=>{M==="result"&&(o.value="result")}),pt(o,()=>{St(()=>{window.scrollTo({top:0,behavior:"smooth"})})});function r(M){u.value=M,o.value="preview"}function n(M){if(!u.value)return;const s={...u.value,agents:M};y.load(s),o.value="simulation",y.play()}function g(){o.value==="preview"&&(o.value="select",u.value=null)}function B(){y.restart(),o.value="simulation"}function d(){y.stop(),l.reset(),o.value="select",u.value=null}function i(){const M=Tt;u.value=M,y.load(M),o.value="simulation",y.play()}function c(){y.playing.value?y.pause():y.play()}const _=[.1,.25,.5,1,2,3];function P(M){const s=parseFloat(M.target.value);y.setSpeed(s)}function I(){const M=document.querySelector(".demo-main");M&&M.scrollIntoView({behavior:"smooth"})}return(M,s)=>(v(),w("div",Gn,[F(Mn,{"show-cta":o.value!=="select",onStartDemo:I},null,8,["show-cta"]),F(vt,{name:"hero-fade"},{default:ct(()=>[o.value==="select"?(v(),w("div",Hn,[F(En,{onStartDemo:I}),s[0]||(s[0]=e("hr",{class:"hero-divider"},null,-1))])):H("",!0)]),_:1}),e("main",Vn,[F(vt,{name:"fade-slide",mode:"out-in"},{default:ct(()=>[o.value==="select"?(v(),w("div",qn,[s[1]||(s[1]=e("h2",{class:"phase-title"},"选择你的 AI 公司类型",-1)),s[2]||(s[2]=e("p",{class:"phase-desc"},"选一个场景,看看 AI 团队怎么干活",-1)),F(as,{onSelect:r}),F(Ln)])):o.value==="preview"&&u.value?(v(),w("div",Wn,[e("button",{class:"back-btn",onClick:g},"← 重新选择"),e("h2",Xn,m(u.value.name),1),e("p",Zn,m(u.value.description),1),s[3]||(s[3]=e("p",{class:"phase-desc phase-instruction"},"你可以修改 AI 员工的名字,然后点击启动 AI 团队,探索 AI 公司里的 Agent 是如何自主高效完成工作的。",-1)),F(us,{agents:u.value.agents,onLaunch:n},null,8,["agents"])])):o.value==="simulation"?(v(),w("div",Kn,[e("div",Yn,[s[4]||(s[4]=e("h2",{class:"phase-title"},"AI 团队工作中...",-1)),e("div",Qn,[e("button",{class:"ctrl-btn",onClick:c},m(N(y).playing.value?"⏸️":"▶️"),1),e("select",{class:"speed-select",value:N(y).speed.value,onChange:P},[(v(),w(q,null,W(_,A=>e("option",{key:A,value:A},m(A)+"x",9,tr)),64))],40,Jn),e("button",{class:"ctrl-btn",onClick:B},"🔄")])]),e("div",er,[e("div",{class:"progress-fill",style:Y({width:`${(N(y).progress.value*100).toFixed(1)}%`})},null,4)]),F(Os),F($s),F(Us),F(Vs)])):o.value==="result"?(v(),w("div",ar,[F(yn,{onRestart:B,onChaos:i,onReselect:d})])):H("",!0)]),_:1})]),F(Un)]))}}),pr=Q(sr,[["__scopeId","data-v-0ba87768"]]);export{pr as default}; diff --git a/cloudflare/pages/assets/DemoView-vtX9cghR.css b/cloudflare/pages/assets/DemoView-vtX9cghR.css new file mode 100644 index 0000000..e7986d8 --- /dev/null +++ b/cloudflare/pages/assets/DemoView-vtX9cghR.css @@ -0,0 +1 @@ +.scenario-sections[data-v-01c0eba0]{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:20px}.scenario-group[data-v-01c0eba0]{display:flex;flex-direction:column;gap:10px}.group-label[data-v-01c0eba0]{font-family:IBM Plex Mono,monospace;font-size:.72rem;font-weight:600;color:#8c8a84;text-transform:uppercase;letter-spacing:1px;padding-left:4px;margin:0}.scenario-row[data-v-01c0eba0]{display:flex;gap:12px}.scenario-group--half[data-v-01c0eba0]{flex:1}.scenario-grid[data-v-01c0eba0]{display:grid;gap:12px}.scenario-grid--3[data-v-01c0eba0]{grid-template-columns:repeat(3,1fr)}.scenario-grid--2[data-v-01c0eba0]{grid-template-columns:repeat(2,1fr)}.scenario-grid--1[data-v-01c0eba0]{grid-template-columns:1fr}.scenario-card[data-v-01c0eba0]{background:#fff;border:1px solid #E8E6E0;border-radius:10px;padding:24px 20px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.6rem;transition:all .2s ease;box-shadow:0 2px 8px #0000000a;text-align:center;animation:cardUp-01c0eba0 .35s ease both}.scenario-card[data-v-01c0eba0]:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000014}.scenario-card[data-v-01c0eba0]:active{transform:translateY(0)}.scenario-card--content-company[data-v-01c0eba0]:hover{border-color:#8b6f4e}.scenario-card--ecommerce[data-v-01c0eba0]:hover{border-color:#c08040}.scenario-card--dev-team[data-v-01c0eba0]:hover{border-color:#4a7fa5}.scenario-card--research-lab[data-v-01c0eba0]:hover{border-color:#4a7a5e}.scenario-card--chaos[data-v-01c0eba0]:hover{border-color:#a05252}.scenario-icon-wrap[data-v-01c0eba0]{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#f5f4f0;border:1px solid #E8E6E0;color:#4a4845;margin-bottom:.3rem}.scenario-name[data-v-01c0eba0]{font-family:Lora,serif;font-size:1.15rem;font-weight:600;color:#1a1917;margin:0;letter-spacing:-.3px}.scenario-desc[data-v-01c0eba0]{font-size:.85rem;color:#4a4845;line-height:1.6;margin:0}.scenario-link[data-v-01c0eba0]{font-size:.72rem;color:#8b6f4e;font-weight:500;text-decoration:none;padding:.2rem .6rem;background:#f5f4f0;border:1px solid #E8E6E0;border-radius:4px;font-family:IBM Plex Mono,monospace;transition:all .15s}.scenario-link[data-v-01c0eba0]:hover{background:#1a1917;color:#fafaf8;border-color:#1a1917}.scenario-meta[data-v-01c0eba0]{font-family:IBM Plex Mono,monospace;font-size:.72rem;color:#8c8a84;margin-top:.4rem;padding:.2rem .6rem;background:#f5f4f0;border-radius:4px;letter-spacing:.3px}@media(max-width:768px){.scenario-grid--3[data-v-01c0eba0]{grid-template-columns:1fr 1fr}.scenario-row[data-v-01c0eba0]{flex-direction:column}}@media(max-width:480px){.scenario-grid--3[data-v-01c0eba0],.scenario-grid--2[data-v-01c0eba0]{grid-template-columns:1fr}.scenario-card[data-v-01c0eba0]{padding:20px 16px}.scenario-icon-wrap[data-v-01c0eba0]{width:40px;height:40px}.scenario-name[data-v-01c0eba0]{font-size:1.05rem}}@keyframes cardUp-01c0eba0{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.team-preview[data-v-ed50e5f1]{display:flex;flex-direction:column;align-items:center;gap:2rem}.agent-grid[data-v-ed50e5f1]{display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem}.agent-card[data-v-ed50e5f1]{background:#fff;border-radius:10px;padding:1.5rem 1.25rem;display:flex;flex-direction:column;align-items:center;gap:.75rem;width:130px;box-shadow:0 2px 8px #0000000a;transition:all .2s ease;border:1px solid #E8E6E0}.agent-card[data-v-ed50e5f1]:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 4px 16px #00000014}.agent-avatar-wrap[data-v-ed50e5f1]{width:60px;height:60px;border-radius:50%;background:color-mix(in srgb,var(--accent) 15%,white);display:flex;align-items:center;justify-content:center;animation:breathe-ed50e5f1 3s ease-in-out infinite}.agent-avatar[data-v-ed50e5f1]{font-size:2rem}.agent-name-input[data-v-ed50e5f1]{width:100%;text-align:center;border:none;border-bottom:1.5px dashed #D4D0C8;background:transparent;font-family:Instrument Sans,sans-serif;font-size:.95rem;font-weight:600;color:#1a1917;padding:.25rem 0;outline:none;transition:border-color .15s}.agent-name-input[data-v-ed50e5f1]:focus{border-bottom-color:var(--accent)}.agent-role[data-v-ed50e5f1]{font-family:IBM Plex Mono,monospace;font-size:.65rem;color:var(--accent);background:transparent;border:1px solid var(--accent);padding:.15rem .5rem;border-radius:4px;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.launch-btn[data-v-ed50e5f1]{display:inline-flex;align-items:center;gap:.5rem;padding:10px 28px;font-size:1rem;font-weight:600;font-family:Instrument Sans,sans-serif;color:#fafaf8;background:#1a1917;border:none;border-radius:7px;cursor:pointer;transition:all .15s;box-shadow:0 1px 4px #00000026,0 4px 12px #0000001a}.launch-btn[data-v-ed50e5f1]:hover{background:#2e2b27;transform:translateY(-1px);box-shadow:0 2px 8px #0003,0 6px 20px #0000001f}.launch-btn[data-v-ed50e5f1]:active{transform:translateY(0)}.launch-icon[data-v-ed50e5f1]{font-size:1.4rem}@keyframes breathe-ed50e5f1{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@media(max-width:640px){.agent-grid[data-v-ed50e5f1]{gap:.75rem}.agent-card[data-v-ed50e5f1]{width:100px;padding:1rem .75rem}.agent-avatar-wrap[data-v-ed50e5f1]{width:48px;height:48px}.agent-avatar[data-v-ed50e5f1]{font-size:1.6rem}.agent-name-input[data-v-ed50e5f1]{font-size:.85rem}.launch-btn[data-v-ed50e5f1]{padding:9px 22px;font-size:.9rem}}.kanban[data-v-0fbc8243]{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem;position:relative}@media(max-width:768px){.kanban[data-v-0fbc8243]{grid-template-columns:repeat(2,1fr)}}.kanban-col[data-v-0fbc8243]{min-height:120px}.kanban-col-header[data-v-0fbc8243]{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:3px solid;margin-bottom:.75rem}.col-label[data-v-0fbc8243]{font-family:Instrument Sans,sans-serif;font-size:.8rem;font-weight:600;color:#4a4845}.col-count[data-v-0fbc8243]{font-family:IBM Plex Mono,monospace;font-size:.7rem;font-weight:500;color:#8c8a84;background:#f5f4f0;padding:.1rem .45rem;border-radius:4px}.kanban-col-body[data-v-0fbc8243]{display:flex;flex-direction:column;gap:.5rem;position:relative}.task-card[data-v-0fbc8243]{background:#fff;border-radius:8px;padding:.75rem;box-shadow:0 1px 4px #0000000a;border:1px solid #E8E6E0;border-left:3px solid var(--agent-color);transition:all .2s ease}.task-card[data-v-0fbc8243]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000000f}.task-card--rework[data-v-0fbc8243]{animation:shake-0fbc8243 .5s ease-in-out;border-left-color:#a05252;background:#fbf5f5}.task-card--done[data-v-0fbc8243]{opacity:.8;background:#f5faf7}.task-name[data-v-0fbc8243]{font-family:Instrument Sans,sans-serif;font-size:.82rem;font-weight:600;color:#1a1917;margin-bottom:.35rem}.task-meta[data-v-0fbc8243]{display:flex;justify-content:space-between;align-items:center}.task-assignee[data-v-0fbc8243]{font-size:.72rem;font-weight:500;color:#4a4845}.task-score[data-v-0fbc8243]{font-family:IBM Plex Mono,monospace;font-size:.72rem;font-weight:500;color:#8b6f4e}.task-comment[data-v-0fbc8243]{font-size:.68rem;color:#8c8a84;margin-top:.35rem;padding-top:.35rem;border-top:1px dashed #E8E6E0;line-height:1.4}.rework-badge[data-v-0fbc8243]{display:inline-block;font-family:IBM Plex Mono,monospace;font-size:.65rem;color:#a05252;font-weight:500;margin-top:.35rem}.task-card-enter-active[data-v-0fbc8243]{transition:all .4s cubic-bezier(.34,1.56,.64,1)}.task-card-leave-active[data-v-0fbc8243]{transition:all .3s ease}.task-card-enter-from[data-v-0fbc8243]{opacity:0;transform:translateY(-10px) scale(.95)}.task-card-leave-to[data-v-0fbc8243]{opacity:0;transform:translate(20px)}.task-card-move[data-v-0fbc8243]{transition:transform .4s ease}.rework-arrow-path[data-v-0fbc8243]{animation:dashFlow-0fbc8243 .8s linear infinite}@keyframes dashFlow-0fbc8243{to{stroke-dashoffset:-20}}.arrow-fade-enter-active[data-v-0fbc8243]{transition:all .3s cubic-bezier(.34,1.56,.64,1)}.arrow-fade-leave-active[data-v-0fbc8243]{transition:all .5s ease}.arrow-fade-enter-from[data-v-0fbc8243]{opacity:0;transform:scale(.8)}.arrow-fade-leave-to[data-v-0fbc8243]{opacity:0}@keyframes shake-0fbc8243{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-3px)}20%,40%,60%,80%{transform:translate(3px)}}.agents-row[data-v-a4a07c68]{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;margin-bottom:1.5rem}.agent-card[data-v-a4a07c68]{background:#fff;border-radius:10px;padding:1rem .75rem .75rem;width:120px;display:flex;flex-direction:column;align-items:center;gap:.4rem;box-shadow:0 2px 8px #0000000a;transition:all .2s ease;position:relative;border:1px solid #E8E6E0}.agent-card[data-v-a4a07c68]:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000014}.agent-card--working[data-v-a4a07c68],.agent-card--thinking[data-v-a4a07c68],.agent-card--reviewing[data-v-a4a07c68],.agent-card--patrolling[data-v-a4a07c68]{border-color:var(--accent);box-shadow:0 2px 16px color-mix(in srgb,var(--accent) 15%,transparent)}.agent-card--reworking[data-v-a4a07c68]{border-color:#f87171;animation:shake-a4a07c68 .5s ease}.agent-card--done[data-v-a4a07c68]{opacity:.7}.agent-avatar-area[data-v-a4a07c68]{position:relative}.agent-avatar-circle[data-v-a4a07c68]{width:50px;height:50px;border-radius:50%;background:color-mix(in srgb,var(--accent) 12%,white);display:flex;align-items:center;justify-content:center}.agent-avatar[data-v-a4a07c68]{font-size:1.6rem}.agent-expression[data-v-a4a07c68]{position:absolute;bottom:-4px;right:-6px;font-size:1rem;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:all .3s ease}.agent-name[data-v-a4a07c68]{font-family:Instrument Sans,sans-serif;font-size:.82rem;font-weight:600;color:#1a1917}.agent-status-badge[data-v-a4a07c68]{font-family:IBM Plex Mono,monospace;font-size:.6rem;font-weight:500;padding:.15rem .45rem;border-radius:4px;display:flex;align-items:center;gap:.25rem;letter-spacing:.3px}.status--idle[data-v-a4a07c68]{background:#f5f4f0;color:#8c8a84}.status--thinking[data-v-a4a07c68]{background:#fbf3dc;color:#7a6020}.status--working[data-v-a4a07c68]{background:#e8f0f8;color:#4a7fa5}.status--reviewing[data-v-a4a07c68]{background:#fbf3dc;color:#8b6f4e}.status--reworking[data-v-a4a07c68]{background:#f8e8e8;color:#a05252}.status--patrolling[data-v-a4a07c68],.status--done[data-v-a4a07c68]{background:#e8f4ed;color:#4a7a5e}.thinking-dots[data-v-a4a07c68]{display:inline-flex;gap:2px}.dot[data-v-a4a07c68]{width:4px;height:4px;border-radius:50%;background:currentColor;animation:dotBounce-a4a07c68 1.2s ease-in-out infinite}.dot[data-v-a4a07c68]:nth-child(2){animation-delay:.2s}.dot[data-v-a4a07c68]:nth-child(3){animation-delay:.4s}.agent-bubble[data-v-a4a07c68]{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#fff;border:1px solid #E8E6E0;border-radius:6px;padding:.35rem .6rem;font-size:.68rem;color:#4a4845;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 8px #0000000f;z-index:10}.agent-bubble[data-v-a4a07c68]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#fff}.bubble-enter-active[data-v-a4a07c68]{transition:all .3s cubic-bezier(.34,1.56,.64,1)}.bubble-leave-active[data-v-a4a07c68]{transition:all .2s ease}.bubble-enter-from[data-v-a4a07c68]{opacity:0;transform:translate(-50%) translateY(6px) scale(.9)}.bubble-leave-to[data-v-a4a07c68]{opacity:0;transform:translate(-50%) translateY(-4px)}@keyframes shake-a4a07c68{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}@keyframes dotBounce-a4a07c68{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}@media(max-width:640px){.agents-row[data-v-a4a07c68]{gap:.6rem}.agent-card[data-v-a4a07c68]{width:90px;padding:.75rem .5rem .6rem}.agent-avatar-circle[data-v-a4a07c68]{width:40px;height:40px}.agent-avatar[data-v-a4a07c68]{font-size:1.3rem}.agent-name[data-v-a4a07c68]{font-size:.72rem}.agent-bubble[data-v-a4a07c68]{display:none}}.live-log[data-v-84815879]{background:#fff;border:1px solid #E8E6E0;border-radius:10px;padding:1rem;max-height:380px;overflow-y:auto;box-shadow:0 2px 8px #0000000a}.log-header[data-v-84815879]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid #E8E6E0}.log-title[data-v-84815879]{font-family:Instrument Sans,sans-serif;font-size:.85rem;font-weight:600;color:#1a1917}.log-count[data-v-84815879]{font-family:IBM Plex Mono,monospace;font-size:.65rem;color:#8c8a84;background:#f5f4f0;padding:.15rem .45rem;border-radius:4px}.log-list[data-v-84815879]{display:flex;flex-direction:column;gap:.4rem;position:relative}.log-entry[data-v-84815879]{display:flex;align-items:flex-start;gap:.4rem;font-size:.78rem;line-height:1.5;padding:.35rem .5rem;border-radius:6px;background:#fafaf8}.log-entry--rejected[data-v-84815879]{background:#fbf5f5;color:#a05252}.log-entry--approved[data-v-84815879]{background:#f5faf7;color:#4a7a5e}.log-entry--reflection[data-v-84815879]{background:#fbf3dc;color:#7a6020;font-style:italic}.log-entry--negative[data-v-84815879]{color:#a05252}.log-entry--positive[data-v-84815879]{color:#4a7a5e}.log-icon[data-v-84815879]{flex-shrink:0;font-size:.85rem}.log-agent[data-v-84815879]{font-weight:600;color:#1a1917;flex-shrink:0}.log-text[data-v-84815879]{color:inherit}.typing-cursor[data-v-84815879]{animation:blink-84815879 .8s step-end infinite;color:#8b6f4e}.log-empty[data-v-84815879]{text-align:center;color:#8c8a84;padding:2rem 0;font-size:.85rem}.log-entry-enter-active[data-v-84815879]{transition:all .35s cubic-bezier(.34,1.56,.64,1)}.log-entry-enter-from[data-v-84815879]{opacity:0;transform:translateY(-8px) scale(.97)}.log-entry-move[data-v-84815879]{transition:transform .3s ease}@keyframes blink-84815879{50%{opacity:0}}@media(max-width:640px){.live-log[data-v-84815879]{max-height:220px;padding:.75rem}.log-entry[data-v-84815879]{font-size:.72rem;padding:.25rem .4rem}.log-agent[data-v-84815879]{font-size:.72rem}}.float-container[data-v-e97d3502]{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:100}.float-item[data-v-e97d3502]{position:absolute;top:40%;font-family:Lora,serif;font-size:1.4rem;font-weight:700;text-shadow:0 2px 6px rgba(0,0,0,.08);animation:floatUp-e97d3502 1.8s ease-out forwards}.float-enter-active[data-v-e97d3502]{transition:all .3s cubic-bezier(.34,1.56,.64,1)}.float-leave-active[data-v-e97d3502]{transition:all .5s ease}.float-enter-from[data-v-e97d3502]{opacity:0;transform:scale(.5) translateY(20px)}.float-leave-to[data-v-e97d3502]{opacity:0}@keyframes floatUp-e97d3502{0%{opacity:1;transform:translateY(0) scale(1)}50%{opacity:1;transform:translateY(-40px) scale(1.2)}to{opacity:0;transform:translateY(-80px) scale(.8)}}.result-page[data-v-c9b98e95]{animation:fadeIn-c9b98e95 .5s ease;padding-top:32px}.result-title[data-v-c9b98e95]{text-align:center;font-family:Lora,serif;font-size:1.6rem;font-weight:700;color:#1a1917;margin:0 0 .5rem;letter-spacing:-.5px}.result-subtitle[data-v-c9b98e95]{text-align:center;color:#8c8a84;margin:0 0 2rem}.stats-grid[data-v-c9b98e95]{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem}@media(max-width:640px){.stats-grid[data-v-c9b98e95]{grid-template-columns:repeat(2,1fr)}}.stat-card[data-v-c9b98e95]{background:#fff;border:1px solid #E8E6E0;border-radius:10px;padding:1.25rem;text-align:center;box-shadow:0 2px 8px #0000000a;animation:popIn-c9b98e95 .4s cubic-bezier(.34,1.56,.64,1) both}.stat-card[data-v-c9b98e95]:nth-child(2){animation-delay:.1s}.stat-card[data-v-c9b98e95]:nth-child(3){animation-delay:.2s}.stat-card[data-v-c9b98e95]:nth-child(4){animation-delay:.3s}.stat-card--purple[data-v-c9b98e95]{border-top:3px solid #8B6F4E}.stat-card--yellow[data-v-c9b98e95]{border-top:3px solid #C09840}.stat-card--red[data-v-c9b98e95]{border-top:3px solid #A05252}.stat-card--blue[data-v-c9b98e95]{border-top:3px solid #4A7FA5}.stat-value[data-v-c9b98e95]{font-family:Lora,serif;font-size:2rem;font-weight:700;color:#1a1917}.stat-label[data-v-c9b98e95]{font-family:IBM Plex Mono,monospace;font-size:.72rem;color:#8c8a84;font-weight:500;margin-top:.25rem;letter-spacing:.3px}.stat-cost[data-v-c9b98e95]{font-family:IBM Plex Mono,monospace;font-size:.7rem;color:#4a7a5e;font-weight:500;margin-top:.15rem}.time-saved[data-v-c9b98e95]{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1.5rem;background:#fbf3dc;border:1px solid #E8D89A;border-radius:6px;margin-bottom:2rem}.time-saved-icon[data-v-c9b98e95]{font-size:1.2rem}.time-saved-text[data-v-c9b98e95]{font-size:.9rem;color:#4a4845}.section-title[data-v-c9b98e95]{font-family:Lora,serif;font-size:1.05rem;font-weight:600;color:#1a1917;margin:0 0 1rem;letter-spacing:-.2px}.agent-results[data-v-c9b98e95]{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.agent-result-card[data-v-c9b98e95]{background:#fff;border:1px solid #E8E6E0;border-radius:10px;padding:1rem;display:flex;align-items:center;gap:.75rem;flex:1 1 200px;box-shadow:0 2px 8px #0000000a;border-left:3px solid var(--accent);animation:slideIn-c9b98e95 .4s ease both}.agent-result-card[data-v-c9b98e95]:nth-child(2){animation-delay:.1s}.agent-result-card[data-v-c9b98e95]:nth-child(3){animation-delay:.2s}.agent-result-card[data-v-c9b98e95]:nth-child(4){animation-delay:.3s}.agent-result-card[data-v-c9b98e95]:nth-child(5){animation-delay:.4s}.ar-avatar[data-v-c9b98e95]{font-size:2rem;width:48px;height:48px;border-radius:50%;background:color-mix(in srgb,var(--accent) 12%,white);display:flex;align-items:center;justify-content:center;flex-shrink:0}.ar-info[data-v-c9b98e95]{min-width:0}.ar-name[data-v-c9b98e95]{font-family:Instrument Sans,sans-serif;font-size:.88rem;font-weight:600;color:#1a1917}.ar-score[data-v-c9b98e95]{display:flex;align-items:baseline;gap:.2rem;margin:.15rem 0}.ar-score-num[data-v-c9b98e95]{font-family:Lora,serif;font-size:1.2rem;font-weight:700;color:var(--accent)}.ar-score-label[data-v-c9b98e95]{font-family:IBM Plex Mono,monospace;font-size:.65rem;color:#8c8a84}.ar-comment[data-v-c9b98e95]{font-size:.75rem;color:#4a4845}.cta-section[data-v-c9b98e95]{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:480px;margin:0 auto}.cta-btn[data-v-c9b98e95]{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 18px;height:44px;font-size:.85rem;font-weight:600;font-family:Instrument Sans,sans-serif;border-radius:7px;cursor:pointer;transition:all .15s;text-decoration:none;border:1px solid transparent}.cta-btn--ghost[data-v-c9b98e95]{background:none;color:#4a4845;border:1px solid #E8E6E0}.cta-btn--ghost[data-v-c9b98e95]:hover{background:#f5f4f0;border-color:#d4d0c8;color:#1a1917}.cta-btn--danger[data-v-c9b98e95]{color:#a05252;border-color:#e8d0d0}.cta-btn--danger[data-v-c9b98e95]:hover{background:#fbf5f5;border-color:#a05252}.cta-btn--secondary[data-v-c9b98e95]{background:#fff;color:#4a4845;border:1px solid #D4D0C8}.cta-btn--secondary[data-v-c9b98e95]:hover{border-color:#4a4845;color:#1a1917;background:#f5f4f0}.cta-btn--primary[data-v-c9b98e95]{background:#1a1917;color:#fafaf8;border:none;box-shadow:0 1px 4px #00000026,0 4px 12px #0000001a}.cta-btn--primary[data-v-c9b98e95]:hover{background:#2e2b27;transform:translateY(-1px);box-shadow:0 2px 8px #0003,0 6px 20px #0000001f}@keyframes fadeIn-c9b98e95{0%{opacity:0}to{opacity:1}}@keyframes popIn-c9b98e95{0%{opacity:0;transform:scale(.8) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideIn-c9b98e95{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}@media(max-width:640px){.stats-grid[data-v-c9b98e95]{grid-template-columns:1fr 1fr;gap:.75rem}.stat-card[data-v-c9b98e95]{padding:1rem}.stat-value[data-v-c9b98e95]{font-size:1.5rem}.agent-result-card[data-v-c9b98e95]{flex:1 1 100%}.cta-section[data-v-c9b98e95]{grid-template-columns:1fr}.time-saved[data-v-c9b98e95]{padding:.6rem 1rem;font-size:.85rem}}.demo-nav[data-v-399bb5b1]{position:sticky;top:0;z-index:100;background:#fafaf8e0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid #E8E6E0;padding:0 40px;display:flex;align-items:center;justify-content:space-between;height:52px}.nav-left[data-v-399bb5b1]{display:flex;align-items:center;gap:28px}.nav-logo[data-v-399bb5b1]{font-family:Lora,serif;font-weight:700;font-size:17px;color:#1a1917;letter-spacing:-.3px;display:flex;align-items:center;gap:8px;text-decoration:none}.nav-logo-icon[data-v-399bb5b1]{width:26px;height:26px;border-radius:6px;object-fit:contain}.nav-links[data-v-399bb5b1]{display:flex;gap:0;list-style:none;margin:0;padding:0}.nav-links a[data-v-399bb5b1]{color:#4a4845;text-decoration:none;font-family:Instrument Sans,sans-serif;font-size:14px;font-weight:500;padding:6px 12px;border-radius:5px;transition:background .15s,color .15s}.nav-links a[data-v-399bb5b1]:hover{background:#eeecea;color:#1a1917}.nav-right[data-v-399bb5b1]{display:flex;align-items:center;gap:8px}.nav-btn[data-v-399bb5b1]{padding:6px 14px;border-radius:6px;font-family:Instrument Sans,sans-serif;font-size:13.5px;font-weight:500;cursor:pointer;transition:all .15s;text-decoration:none;border:none;display:inline-flex;align-items:center;gap:5px}.nav-btn--ghost[data-v-399bb5b1]{background:none;color:#4a4845}.nav-btn--ghost[data-v-399bb5b1]:hover{background:#eeecea;color:#1a1917}.nav-btn--dark[data-v-399bb5b1]{background:#1a1917;color:#fafaf8;box-shadow:0 1px 3px #0000001f}.nav-btn--dark[data-v-399bb5b1]:hover{background:#2e2b27;box-shadow:0 2px 6px #0000002e}@media(max-width:640px){.nav-links[data-v-399bb5b1]{display:none}.demo-nav[data-v-399bb5b1]{padding:0 16px}}.hero[data-v-d5381e74]{max-width:860px;margin:0 auto;padding:64px 40px 48px;position:relative;z-index:1;text-align:center}.page-icon[data-v-d5381e74]{width:72px;height:72px;margin:0 auto 20px;display:flex;align-items:center;justify-content:center;background:#f5f4f0;border:1px solid #E8E6E0;border-radius:14px;color:#8b6f4e;animation:fadeUp-d5381e74 .5s ease both;overflow:hidden}.hero-logo[data-v-d5381e74]{width:56px;height:56px;object-fit:contain}.hero-tag[data-v-d5381e74]{display:inline-flex;align-items:center;gap:6px;background:#fbf3dc;border:1px solid #E8D89A;color:#7a6020;padding:3px 12px;border-radius:4px;font-size:12.5px;font-weight:500;margin-bottom:20px;font-family:IBM Plex Mono,monospace;animation:fadeUp-d5381e74 .5s .05s ease both}h1[data-v-d5381e74]{font-family:Lora,serif;font-size:clamp(36px,5.5vw,60px);font-weight:700;line-height:1.12;letter-spacing:-1px;margin:0 0 24px;color:#1a1917;animation:fadeUp-d5381e74 .5s .1s ease both}h1 em[data-v-d5381e74]{font-style:italic;color:#8b6f4e}.hero-sub[data-v-d5381e74]{font-size:17px;color:#4a4845;max-width:560px;line-height:1.75;margin:0 auto 32px;animation:fadeUp-d5381e74 .5s .15s ease both;min-height:3.6em}.typed[data-v-d5381e74]{color:#1a1917}.cursor[data-v-d5381e74]{color:#8b6f4e;font-weight:300;animation:blink-d5381e74 1s step-end infinite}.hero-actions[data-v-d5381e74]{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;animation:fadeUp-d5381e74 .5s .2s ease both}.btn-hero[data-v-d5381e74]{padding:10px 22px;border-radius:7px;font-size:14.5px;font-family:Instrument Sans,sans-serif;font-weight:600;cursor:pointer;transition:all .15s;text-decoration:none;display:inline-flex;align-items:center;gap:7px}.btn-hero-dark[data-v-d5381e74]{background:#1a1917;color:#fafaf8;border:none;box-shadow:0 1px 4px #00000026,0 4px 12px #0000001a}.btn-hero-dark[data-v-d5381e74]:hover{background:#2e2b27;box-shadow:0 2px 8px #0003,0 6px 20px #0000001f;transform:translateY(-1px)}.btn-hero-outline[data-v-d5381e74]{background:#fff;color:#4a4845;border:1px solid #D4D0C8}.btn-hero-outline[data-v-d5381e74]:hover{border-color:#4a4845;color:#1a1917}.hero-note[data-v-d5381e74]{font-size:13px;color:#8c8a84;display:flex;align-items:center;gap:6px;width:100%;justify-content:center;margin-top:4px}@keyframes fadeUp-d5381e74{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes blink-d5381e74{50%{opacity:0}}@media(max-width:640px){.hero[data-v-d5381e74]{padding:40px 20px 32px}.hero-sub[data-v-d5381e74]{font-size:15px}}.bento-section[data-v-16cabe5b]{max-width:900px;margin:0 auto;padding:48px 40px 56px;text-align:center}.bento-heading[data-v-16cabe5b]{font-family:Lora,serif;font-size:28px;font-weight:700;color:#1a1917;margin:0 0 8px;letter-spacing:-.5px}.bento-sub[data-v-16cabe5b]{font-size:15px;color:#8c8a84;margin:0 0 28px}.bento-grid[data-v-16cabe5b]{display:grid;grid-template-columns:repeat(12,1fr);gap:10px}.bento-card[data-v-16cabe5b]{border:1px solid #E8E6E0;border-radius:12px;padding:28px 24px;text-align:left;grid-column:span 4;transition:transform .2s ease,box-shadow .2s ease;animation:fadeUp-16cabe5b .4s ease both}.bento-card--wide[data-v-16cabe5b]{grid-column:span 8}.bento-card[data-v-16cabe5b]:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000000f}.bento-card--dark[data-v-16cabe5b]{border-color:transparent}.bento-card--dark[data-v-16cabe5b]:hover{box-shadow:0 6px 24px #0003}.bento-icon[data-v-16cabe5b]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:9px;background:#f5f4f0;border:1px solid #E8E6E0;color:var(--bento-accent);margin-bottom:14px}.bento-icon--dark[data-v-16cabe5b]{background:#ffffff1f;border-color:#ffffff26;color:#fafaf8}.bento-title[data-v-16cabe5b]{font-family:Instrument Sans,sans-serif;font-size:16px;font-weight:600;margin:0 0 6px;letter-spacing:-.3px}.bento-desc[data-v-16cabe5b]{font-size:13.5px;line-height:1.7;opacity:.78;margin:0}.bento-card--dark .bento-desc[data-v-16cabe5b]{opacity:.7}@keyframes fadeUp-16cabe5b{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media(max-width:768px){.bento-grid[data-v-16cabe5b]{grid-template-columns:1fr 1fr}.bento-card[data-v-16cabe5b],.bento-card--wide[data-v-16cabe5b]{grid-column:span 1}.bento-section[data-v-16cabe5b]{padding:32px 20px 40px}}@media(max-width:480px){.bento-grid[data-v-16cabe5b]{grid-template-columns:1fr}}.demo-footer[data-v-222fd6a1]{border-top:1px solid #E8E6E0;background:#f5f4f0;margin-top:48px}.footer-inner[data-v-222fd6a1]{max-width:900px;margin:0 auto;padding:40px 40px 32px;text-align:center}.footer-brand[data-v-222fd6a1]{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:10px}.footer-logo-icon[data-v-222fd6a1]{width:20px;height:20px;background:#1a1917;border-radius:4px;display:flex;align-items:center;justify-content:center;font-family:Lora,serif;font-size:11px;font-weight:700;color:#fafaf8}.footer-logo-text[data-v-222fd6a1]{font-family:Lora,serif;font-weight:700;font-size:14px;color:#1a1917;letter-spacing:-.3px}.footer-desc[data-v-222fd6a1]{font-size:13.5px;color:#8c8a84;margin:0 0 16px}.footer-links[data-v-222fd6a1]{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-bottom:16px}.footer-links a[data-v-222fd6a1]{font-family:Instrument Sans,sans-serif;font-size:13px;font-weight:500;color:#4a4845;text-decoration:none;padding:3px 6px;border-radius:4px;transition:background .15s,color .15s}.footer-links a[data-v-222fd6a1]:hover{background:#eeecea;color:#1a1917}.footer-dot[data-v-222fd6a1]{color:#d4d0c8;font-size:12px}.footer-copy[data-v-222fd6a1]{font-family:IBM Plex Mono,monospace;font-size:11.5px;color:#b8b5af;margin:0;letter-spacing:.3px}@media(max-width:640px){.footer-inner[data-v-222fd6a1]{padding:28px 20px 24px}}.demo-page[data-v-0ba87768]{--demo-bg: #FAFAF8;--demo-bg2: #F5F4F0;--demo-surface: #FFFFFF;--demo-border: #E8E6E0;--demo-border2: #D4D0C8;--demo-text: #1A1917;--demo-text2: #4A4845;--demo-muted: #8C8A84;--demo-accent: #2F2C28;--demo-tag-bg: #EEECEA;--demo-brown: #8B6F4E;--demo-blue: #4A7FA5;--demo-green: #4A7A5E;--demo-red: #A05252;--demo-yellow-bg: #FBF3DC;--demo-yellow-border: #E8D89A;min-height:100vh;display:flex;flex-direction:column;background:var(--demo-bg);font-family:Instrument Sans,Nunito,sans-serif;padding:0;position:relative}.demo-page[data-v-0ba87768]:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")}.demo-header[data-v-0ba87768]{text-align:center;padding:60px 40px 40px;position:relative;z-index:1}.demo-title[data-v-0ba87768]{font-family:Lora,serif;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;color:var(--demo-text);letter-spacing:-.5px;margin:0 0 .75rem;line-height:1.2}.demo-logo[data-v-0ba87768]{font-size:2.2rem;margin-right:.5rem}.demo-subtitle[data-v-0ba87768]{font-size:1rem;color:var(--demo-text2);font-weight:400;margin:0 auto;max-width:560px;line-height:1.7}.demo-main[data-v-0ba87768]{flex:1;max-width:1000px;width:100%;margin:0 auto;padding:0 40px 60px;position:relative;z-index:1}.demo-phase[data-v-0ba87768]{min-height:200px}.demo-phase--sim[data-v-0ba87768]{padding-top:24px}.phase-title[data-v-0ba87768]{font-family:Lora,serif;font-size:1.4rem;font-weight:600;color:var(--demo-text);text-align:center;margin:0 0 .5rem;letter-spacing:-.3px}.phase-desc[data-v-0ba87768]{text-align:center;color:var(--demo-muted);margin:0 auto .5rem;max-width:600px;line-height:1.6;font-size:.95rem}.phase-instruction[data-v-0ba87768]{font-size:.85rem;color:var(--demo-text2);margin-bottom:2rem}.back-btn[data-v-0ba87768]{display:inline-flex;align-items:center;background:none;border:none;color:var(--demo-brown);font-family:Instrument Sans,sans-serif;font-size:.9rem;font-weight:500;cursor:pointer;padding:.5rem 0;margin-bottom:1rem;transition:color .15s}.back-btn[data-v-0ba87768]:hover{color:var(--demo-text)}.sim-header[data-v-0ba87768]{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.restart-btn[data-v-0ba87768]{background:none;border:1px solid var(--demo-border2);border-radius:6px;padding:.4rem .9rem;font-family:Instrument Sans,sans-serif;font-weight:500;font-size:.85rem;color:var(--demo-text2);cursor:pointer;transition:all .15s}.restart-btn[data-v-0ba87768]:hover{border-color:var(--demo-text2);color:var(--demo-text);background:var(--demo-tag-bg)}.sim-controls[data-v-0ba87768]{display:flex;gap:.5rem}.ctrl-btn[data-v-0ba87768]{background:var(--demo-surface);border:1px solid var(--demo-border);border-radius:6px;padding:.4rem .75rem;font-family:IBM Plex Mono,monospace;font-weight:500;font-size:.8rem;color:var(--demo-text2);cursor:pointer;transition:all .15s}.ctrl-btn[data-v-0ba87768]:hover{border-color:var(--demo-text2);color:var(--demo-text);background:var(--demo-tag-bg)}.speed-select[data-v-0ba87768]{background:var(--demo-surface);border:1px solid var(--demo-border);border-radius:6px;padding:.35rem .5rem;font-family:IBM Plex Mono,monospace;font-weight:500;font-size:.8rem;color:var(--demo-text2);cursor:pointer;transition:all .15s;outline:none}.speed-select[data-v-0ba87768]:hover,.speed-select[data-v-0ba87768]:focus{border-color:var(--demo-text2);color:var(--demo-text)}.progress-bar[data-v-0ba87768]{width:100%;height:3px;background:var(--demo-border);border-radius:2px;margin-bottom:1.5rem;overflow:hidden}.progress-fill[data-v-0ba87768]{height:100%;background:var(--demo-text);border-radius:2px;transition:width .2s linear}.sim-placeholder[data-v-0ba87768]{text-align:center;padding:6rem 2rem;background:var(--demo-surface);border:1px solid var(--demo-border);border-radius:10px;color:var(--demo-muted);font-size:1rem}.fade-slide-enter-active[data-v-0ba87768],.fade-slide-leave-active[data-v-0ba87768]{transition:all .3s cubic-bezier(.4,0,.2,1)}.fade-slide-enter-from[data-v-0ba87768]{opacity:0;transform:translateY(12px)}.fade-slide-leave-to[data-v-0ba87768]{opacity:0;transform:translateY(-8px)}.hero-area[data-v-0ba87768]{overflow:hidden}.hero-fade-enter-active[data-v-0ba87768]{transition:all .4s cubic-bezier(.4,0,.2,1)}.hero-fade-leave-active[data-v-0ba87768]{transition:all .25s ease-in}.hero-fade-enter-from[data-v-0ba87768]{opacity:0;transform:translateY(-20px)}.hero-fade-leave-to[data-v-0ba87768]{opacity:0;max-height:0;margin:0;padding:0}.hero-divider[data-v-0ba87768]{border:none;border-top:1px solid #E8E6E0;max-width:900px;margin:0 auto 24px}@media(max-width:768px){.demo-main[data-v-0ba87768]{padding:0 20px 40px}.phase-title[data-v-0ba87768]{font-size:1.15rem}.sim-header[data-v-0ba87768]{flex-direction:column;gap:.75rem;align-items:flex-start}}@media(max-width:480px){.demo-main[data-v-0ba87768]{padding:0 16px 32px}.phase-title[data-v-0ba87768]{font-size:1.05rem}.phase-desc[data-v-0ba87768]{font-size:.85rem}} diff --git a/cloudflare/pages/assets/FeedView-CYGX00OX.css b/cloudflare/pages/assets/FeedView-CYGX00OX.css new file mode 100644 index 0000000..14efb90 --- /dev/null +++ b/cloudflare/pages/assets/FeedView-CYGX00OX.css @@ -0,0 +1 @@ +.expand-enter-active[data-v-badfda13],.expand-leave-active[data-v-badfda13]{transition:all .15s ease;overflow:hidden}.expand-enter-from[data-v-badfda13],.expand-leave-to[data-v-badfda13]{opacity:0;max-height:0}.expand-enter-to[data-v-badfda13],.expand-leave-from[data-v-badfda13]{opacity:1;max-height:500px}[data-v-badfda13] .json-key{color:#a670db}[data-v-badfda13] .json-string{color:#53c679}[data-v-badfda13] .json-number{color:#e89c30}[data-v-badfda13] .json-bool{color:#5299e0}.agent-card-flash[data-v-61cc13cf]{animation:card-flash-61cc13cf 1.5s ease}@keyframes card-flash-61cc13cf{0%,to{box-shadow:none}30%,70%{box-shadow:0 0 0 2px hsl(var(--primary) / .25)}}.feed-slide-enter-active[data-v-f144f55a]{transition:all .25s cubic-bezier(.16,1,.3,1)}.feed-slide-enter-from[data-v-f144f55a]{opacity:0;transform:translateY(-8px)}@keyframes slide-up-fade-in-f144f55a{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up[data-v-f144f55a]{animation:slide-up-fade-in-f144f55a .35s ease-out both} diff --git a/cloudflare/pages/assets/FeedView-wwm_gE9_.js b/cloudflare/pages/assets/FeedView-wwm_gE9_.js new file mode 100644 index 0000000..cc56b51 --- /dev/null +++ b/cloudflare/pages/assets/FeedView-wwm_gE9_.js @@ -0,0 +1 @@ +import{m as k,p as G,d as j,o as te,l as a,b as $,w as v,q as se,x as ae,u as n,c as d,n as O,a as t,y as z,e as u,t as m,f as C,i as b,F as M,g as N,z as fe,T as Q,r as x,k as A,A as ge,L as W,X as ve,B as xe,C as ye,D as he}from"./index-BYiXDk_r.js";import{P as be,_ as I}from"./index-D0L1R3xN.js";import{_ as ke,a as _e,b as we}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js";import{_ as $e}from"./TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js";import{T as Te}from"./trophy-BMFdgvc4.js";import{S as Ce}from"./search-3_RVfAHZ.js";import{S as Se}from"./scroll-text-XmJfG4_f.js";import{P as ne}from"./play-BSoFcJJg.js";import{P as Me}from"./pencil-D1GtMUQI.js";import{M as Ae,L as Pe}from"./message-square-Vh7MGSmH.js";import{F as Fe}from"./file-text-C7Xfe8Jp.js";import{F as Le}from"./file-search-DRPM2poS.js";import{E as Oe}from"./eye-Bf9-8M_K.js";import{A as je}from"./activity-SKRWHPM4.js";import{C as Ee}from"./chevron-down-xV8GE0yH.js";import{C as oe,a as Ie}from"./chevron-right-4Ffa5RHB.js";import{_ as H}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{_ as re}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{i as Be,_ as qe,a as ze,b as Ne,c as Re}from"./SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js";import{u as Ve}from"./useForwardExpose-DjCgLuye.js";import{u as De}from"./Presence-Sy1r65hd.js";import{R as Ge}from"./refresh-cw-DOzI5zLk.js";import{U as Ue}from"./users-C4rtE1G7.js";import"./VisuallyHidden-DmVvgUgH.js";import"./createContext-a9Tpfoxo.js";import"./index-CEPd9Ray.js";import"./index-Ct5H-N73.js";import"./TooltipProvider-Ck2YUJut.js";import"./utils-TyZrBBEb.js";const He=k("award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]);const Je=k("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]);const Ke=k("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);const Xe=k("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);const Ze=k("file-plus",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]]);const Qe=k("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);const We=k("hand",[["path",{d:"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2",key:"1fvzgz"}],["path",{d:"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2",key:"1kc0my"}],["path",{d:"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8",key:"10h0bg"}],["path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15",key:"1s1gnw"}]]);const Ye=k("inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);const et=k("list-plus",[["path",{d:"M16 5H3",key:"m91uny"}],["path",{d:"M11 12H3",key:"51ecnj"}],["path",{d:"M16 19H3",key:"zzsher"}],["path",{d:"M18 9v6",key:"1twb98"}],["path",{d:"M21 12h-6",key:"bt1uis"}]]);const tt=k("medal",[["path",{d:"M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15",key:"143lza"}],["path",{d:"M11 12 5.12 2.2",key:"qhuxz6"}],["path",{d:"m13 12 5.88-9.8",key:"hbye0f"}],["path",{d:"M8 7h8",key:"i86dvs"}],["circle",{cx:"12",cy:"17",r:"5",key:"qbz8iq"}],["path",{d:"M12 18v-2h-.5",key:"fawc4q"}]]);const st=k("package-check",[["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m16 17 2 2 4-4",key:"uh5qu3"}],["path",{d:"M21 11.127V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.32-.753",key:"kpkbpo"}],["path",{d:"M3.29 7 12 12l8.71-5",key:"19ckod"}],["path",{d:"m7.5 4.27 8.997 5.148",key:"9yrvtv"}]]);const at=k("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]);const nt=k("user-plus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]),U={status:()=>G.get("/feed/status"),agents:()=>G.get("/feed/agents"),logs:e=>G.get("/feed/logs",{params:e})};var ot=j({__name:"DialogTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const o=e,r=Be(),{forwardRef:l,currentElement:p}=Ve();return r.contentId||=De(void 0,"reka-dialog-content"),te(()=>{r.triggerElement.value=p.value}),(g,c)=>(a(),$(n(be),ae(o,{ref:n(l),type:g.as==="button"?"button":void 0,"aria-haspopup":"dialog","aria-expanded":n(r).open.value||!1,"aria-controls":n(r).open.value?n(r).contentId:void 0,"data-state":n(r).open.value?"open":"closed",onClick:n(r).onOpenToggle}),{default:v(()=>[se(g.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","onClick"]))}}),rt=ot;const le=[{pattern:/POST \/api\/agents\/register/,icon:"UserPlus",verb:"注册了新 Agent",colorClass:"bg-emerald-500",extractFields:["name","role"]},{pattern:/POST \/api\/tasks$/,icon:"ListPlus",verb:"创建了任务",colorClass:"bg-blue-500",extractFields:["name"]},{pattern:/POST \/api\/tasks\/.*\/modules/,icon:"FolderPlus",verb:"创建了模块",colorClass:"bg-indigo-500",extractFields:["name"]},{pattern:/POST \/api\/sub-tasks$/,icon:"FilePlus",verb:"创建了子任务",colorClass:"bg-violet-500",extractFields:["name"]},{pattern:/POST \/api\/sub-tasks\/.*\/claim/,icon:"Hand",verb:"认领了子任务",colorClass:"bg-amber-500"},{pattern:/POST \/api\/sub-tasks\/.*\/start/,icon:"Play",verb:"开始执行子任务",colorClass:"bg-orange-500"},{pattern:/POST \/api\/sub-tasks\/.*\/submit/,icon:"PackageCheck",verb:"提交了子任务",colorClass:"bg-green-500"},{pattern:/PUT \/api\/sub-tasks\//,icon:"Pencil",verb:"编辑了子任务",colorClass:"bg-slate-500"},{pattern:/POST \/api\/review-records/,icon:"FileSearch",verb:"提交了审查",colorClass:"bg-purple-500",extractFields:["score","comment","result"]},{pattern:/POST \/api\/logs/,icon:"MessageSquare",verb:"写了活动日志",colorClass:"bg-gray-500",extractFields:["action","summary"]},{pattern:/POST \/api\/scores\/adjust/,icon:"Trophy",verb:"调整了积分",colorClass:"bg-yellow-500",extractFields:["score_delta","reason"]},{pattern:/GET \/api\/rules/,icon:"BookOpen",verb:"查询了规则指令",colorClass:"bg-sky-500",extractFields:["task_id","sub_task_id"]},{pattern:/GET \/api\/tasks$/,icon:"Eye",verb:"查看了任务列表",colorClass:"bg-slate-400",extractFields:["status","type"]},{pattern:/GET \/api\/tasks\//,icon:"Eye",verb:"查看了任务详情",colorClass:"bg-slate-400"},{pattern:/GET \/api\/sub-tasks\/available/,icon:"Search",verb:"查找可认领子任务",colorClass:"bg-cyan-500",extractFields:["status","priority","type"]},{pattern:/GET \/api\/sub-tasks\/mine/,icon:"ClipboardList",verb:"查看了自己的子任务",colorClass:"bg-slate-400",extractFields:["status"]},{pattern:/GET \/api\/sub-tasks\/latest/,icon:"FileText",verb:"查看最新子任务",colorClass:"bg-slate-400"},{pattern:/GET \/api\/sub-tasks/,icon:"ClipboardList",verb:"查看了子任务",colorClass:"bg-slate-400",extractFields:["status","assigned_agent"]},{pattern:/GET \/api\/scores\/me/,icon:"Award",verb:"查看了自己的积分",colorClass:"bg-amber-400"},{pattern:/GET \/api\/scores\/leaderboard/,icon:"Medal",verb:"查看了排行榜",colorClass:"bg-yellow-500"},{pattern:/GET \/api\/config\/notification/,icon:"Bell",verb:"查询了通知配置",colorClass:"bg-rose-500"},{pattern:/GET \/api\/logs\/mine/,icon:"ScrollText",verb:"查看了自己的日志",colorClass:"bg-gray-400",extractFields:["action"]},{pattern:/GET \/api\/logs/,icon:"ScrollText",verb:"查看了活动日志",colorClass:"bg-gray-400",extractFields:["action","agent_id"]},{pattern:/GET \/api\/review-records/,icon:"FileSearch",verb:"查看了审查记录",colorClass:"bg-purple-400",extractFields:["sub_task_id"]}],lt={planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"};function it(e){const o=`${e.method} ${e.path}`,r=le.find(c=>c.pattern.test(o));let l={};if(e.request_body)try{l=JSON.parse(e.request_body)}catch{}const p={};let g=null;if(r?.extractFields){for(const c of r.extractFields){const s=l[c];s!=null&&s!==""&&(p[c]=String(s))}p.name&&(g=p.name,delete p.name)}return r?.pattern.test("POST /api/review-records")&&p.score&&(g=`${p.score} 分`,delete p.score),r?.pattern.test("POST /api/logs")&&p.action&&(g=p.action,delete p.action),{id:e.id,icon:r?.icon??"Activity",verb:r?.verb??`访问了 ${e.path}`,colorClass:r?.colorClass??"bg-slate-500",agentName:e.agent_name??"未知",agentRole:lt[e.agent_role??""]??e.agent_role??"",agentId:e.agent_id??"",objectName:g,details:p,rawMethod:e.method,rawPath:e.path,rawBody:e.request_body,responseStatus:e.response_status,timestamp:e.timestamp,relativeTime:ie(e.timestamp)}}function ie(e){if(!e)return"";const o=Date.now(),r=new Date(e).getTime(),l=Math.floor((o-r)/1e3);return l<10?"刚刚":l<60?`${l}s`:l<3600?`${Math.floor(l/60)}m`:l<86400?`${Math.floor(l/3600)}h`:l<604800?`${Math.floor(l/86400)}d`:new Date(e).toLocaleDateString("zh-CN")}function dt(e){const o=`${e.method} ${e.path}`;if(/POST \/api\/scores\/adjust/.test(o)&&e.request_body)try{return(JSON.parse(e.request_body).score_delta??0)>=0?"score_up":"score_down"}catch{}return/POST .*\/submit/.test(o)||/POST .*\/review-records/.test(o)?"complete":/POST .*\/claim/.test(o)||/POST .*\/start/.test(o)||/PUT \/api\/sub-tasks/.test(o)?"execute":e.method==="POST"?"create":"query"}function ct(e){const o=`${e.method} ${e.path}`;return le.find(l=>l.pattern.test(o))?.verb??`${e.method} ${e.path.split("/api")[1]??e.path}`}const ut={class:"relative shrink-0 mt-0.5"},pt={class:"flex items-center justify-center w-7 h-7 rounded-lg bg-muted text-muted-foreground"},mt={class:"flex-1 min-w-0 pb-0.5"},ft={class:"flex items-baseline gap-1.5 text-sm flex-wrap leading-5"},gt={class:"font-semibold text-foreground"},vt={class:"text-[10px] text-muted-foreground/50"},xt={class:"text-foreground/70"},yt={key:0,class:"font-semibold text-foreground truncate max-w-[200px] sm:max-w-[300px] lg:max-w-[400px]"},ht={class:"text-xs text-muted-foreground/60 tabular-nums ml-auto shrink-0"},bt={key:0,class:"mt-1.5 space-y-1.5"},kt={key:0,class:"flex flex-wrap gap-x-4 gap-y-0.5"},_t={class:"text-muted-foreground/60"},wt={class:"text-foreground/70 ml-1"},$t={key:1},Tt=["innerHTML"],Ct=j({__name:"ActivityCard",props:{activity:{},isNew:{type:Boolean}},setup(e){const o=e,r=x(!1),l=x(!1),p={planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"},g=A(()=>p[o.activity.agentRole]||o.activity.agentRole),c=A(()=>Object.keys(o.activity.details).length>0),s=A(()=>!!o.activity.rawBody),f={Activity:je,Award:He,Bell:Je,BookOpen:Ke,ClipboardList:Xe,Eye:Oe,FileSearch:Le,FilePlus:Ze,FileText:Fe,FolderPlus:Qe,Hand:We,ListPlus:et,Medal:tt,MessageSquare:Ae,PackageCheck:st,Pencil:Me,Play:ne,ScrollText:Se,Search:Ce,Trophy:Te,UserPlus:nt},T={comment:"评语",result:"结果",summary:"摘要",score_delta:"分值",reason:"原因",role:"角色",status:"状态",priority:"优先级",type:"类型",task_id:"任务",sub_task_id:"子任务",agent_id:"Agent",assigned_agent:"执行者",action:"动作"};function P(){if(!o.activity.rawBody)return"";let h;try{h=JSON.stringify(JSON.parse(o.activity.rawBody),null,2)}catch{return o.activity.rawBody}return h=h.replace(/&/g,"&").replace(//g,">"),h.replace(/("(?:[^"\\]|\\.)*")\s*:/g,'$1:').replace(/:\s*("(?:[^"\\]|\\.)*")/g,': $1').replace(/:\s*(\d+\.?\d*)/g,': $1').replace(/:\s*(true|false|null)/g,': $1')}return(h,w)=>(a(),d("div",{class:O(["flex gap-3 px-4 py-2.5 cursor-pointer transition-colors hover:bg-muted/40",{"bg-primary/[0.03]":e.isNew}]),onClick:w[1]||(w[1]=F=>r.value=!r.value)},[t("div",ut,[t("div",pt,[(a(),$(z(f[e.activity.icon]||f.Activity),{class:"w-3.5 h-3.5"}))])]),t("div",mt,[t("div",ft,[u(n($e),{"delay-duration":300},{default:v(()=>[u(n(ke),null,{default:v(()=>[u(n(_e),{"as-child":""},{default:v(()=>[t("span",gt,m(e.activity.agentName),1),t("span",vt,m(g.value),1)]),_:1}),u(n(we),{side:"top",class:"text-xs"},{default:v(()=>[C(m(e.activity.agentRole)+" · "+m(e.activity.agentId.slice(0,8)),1)]),_:1})]),_:1})]),_:1}),t("span",xt,m(e.activity.verb),1),e.activity.objectName?(a(),d("span",yt,m(e.activity.objectName),1)):b("",!0),t("span",ht,m(e.activity.relativeTime),1)]),u(Q,{name:"expand"},{default:v(()=>[r.value?(a(),d("div",bt,[c.value?(a(),d("div",kt,[(a(!0),d(M,null,N(e.activity.details,(F,S)=>(a(),d("div",{key:S,class:"text-xs"},[t("span",_t,m(T[S]||S),1),t("span",wt,m(F),1)]))),128))])):b("",!0),s.value?(a(),d("div",$t,[u(n(I),{variant:"ghost",size:"sm",class:"h-5 px-1 text-[10px] text-muted-foreground/50 hover:text-muted-foreground gap-0.5",onClick:w[0]||(w[0]=fe(F=>l.value=!l.value,["stop"]))},{default:v(()=>[(a(),$(z(l.value?n(Ee):n(oe)),{class:"w-2.5 h-2.5"})),w[2]||(w[2]=C(" raw ",-1))]),_:1}),u(Q,{name:"expand"},{default:v(()=>[l.value?(a(),d("pre",{key:0,class:"mt-1 rounded-lg bg-muted/50 border border-border/40 p-2.5 text-[11px] whitespace-pre-wrap break-all leading-relaxed m-0 font-mono",innerHTML:P()},null,8,Tt)):b("",!0)]),_:1})])):b("",!0)])):b("",!0)]),_:1})])],2))}}),St=H(Ct,[["__scopeId","data-v-badfda13"]]),Mt={class:"flex items-center gap-2.5"},At={class:"flex items-center justify-center w-8 h-8 rounded-full bg-muted text-xs font-bold text-foreground/70 shrink-0"},Pt={class:"min-w-0 flex-1"},Ft={class:"text-sm font-semibold text-foreground truncate leading-5"},Lt={class:"flex items-center gap-1.5 mt-0.5"},Ot={class:"text-xs text-muted-foreground"},jt={class:"text-xs font-semibold text-foreground tabular-nums"},Et={class:"space-y-1"},It={class:"flex gap-4 text-xs tabular-nums"},Bt={class:"font-semibold text-foreground"},qt={class:"font-semibold text-foreground"},zt={class:"font-semibold text-foreground"},Nt={class:"mt-3"},Rt={key:0,class:"text-xs"},Vt={class:"flex items-center gap-1.5"},Dt={class:"font-medium text-foreground truncate"},Gt={key:0,class:"text-[11px] text-muted-foreground ml-3.5 truncate mt-0.5"},Ut={key:1,class:"text-xs text-muted-foreground/50 italic"},Ht={key:0,class:"mt-3 space-y-1"},Jt={class:"text-foreground/80 truncate flex-1"},Kt={class:"text-muted-foreground/50 tabular-nums text-[10px] shrink-0"},Xt=j({__name:"AgentCard",props:{agent:{},selected:{type:Boolean},flashing:{type:Boolean}},emits:["select"],setup(e){const o=e,r={planner:"P",executor:"E",reviewer:"R",patrol:"D"},l={planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"},p={complete:"bg-emerald-500",execute:"bg-amber-500",create:"bg-blue-500",query:"bg-muted-foreground/40",score_up:"bg-emerald-500",score_down:"bg-rose-500"},g=A(()=>o.agent.recent_actions.map(c=>({verb:ct(c),time:ie(c.timestamp),category:dt(c)})));return(c,s)=>(a(),d("div",{class:O(["w-full shrink-0 rounded-xl border bg-background p-3.5 cursor-pointer transition-all select-none hover:shadow-sm",[e.selected?"border-primary/60 ring-1 ring-primary/20 bg-accent/30":"border-border/60 hover:border-border",e.flashing?"agent-card-flash":""]]),onClick:s[0]||(s[0]=f=>c.$emit("select"))},[t("div",Mt,[t("div",At,m(r[e.agent.role]||"?"),1),t("div",Pt,[t("div",Ft,m(e.agent.name),1),t("div",Lt,[t("span",Ot,m(l[e.agent.role]||e.agent.role),1),s[1]||(s[1]=t("span",{class:"text-muted-foreground/30"},"·",-1)),t("span",jt,m(e.agent.total_score),1),s[2]||(s[2]=t("span",{class:"text-[10px] text-muted-foreground"},"pt",-1))])])]),u(n(re),{class:"my-2.5 opacity-40"}),t("div",Et,[s[9]||(s[9]=t("div",{class:"text-[10px] font-medium text-muted-foreground/50 uppercase tracking-wider"},"今日",-1)),t("div",It,[t("span",null,[t("span",Bt,m(e.agent.today_request_count),1),s[3]||(s[3]=C()),s[4]||(s[4]=t("span",{class:"text-muted-foreground"},"请求",-1))]),t("span",null,[t("span",qt,m(e.agent.today_submit_count),1),s[5]||(s[5]=C()),s[6]||(s[6]=t("span",{class:"text-muted-foreground"},"提交",-1))]),t("span",null,[t("span",zt,m(e.agent.today_review_count),1),s[7]||(s[7]=C()),s[8]||(s[8]=t("span",{class:"text-muted-foreground"},"审查",-1))])])]),t("div",Nt,[e.agent.current_sub_task?(a(),d("div",Rt,[t("div",Vt,[s[10]||(s[10]=t("span",{class:"inline-block w-2 h-2 rounded-full bg-amber-400 animate-pulse shrink-0"},null,-1)),t("span",Dt,m(e.agent.current_sub_task.name),1)]),e.agent.current_sub_task.module_name?(a(),d("div",Gt,m(e.agent.current_sub_task.module_name),1)):b("",!0)])):(a(),d("div",Ut,"空闲"))]),g.value.length?(a(),d("div",Ht,[s[11]||(s[11]=t("div",{class:"text-[10px] font-medium text-muted-foreground/50 uppercase tracking-wider"},"近期",-1)),(a(!0),d(M,null,N(g.value,(f,T)=>(a(),d("div",{key:T,class:"flex items-center gap-1.5 text-[11px] leading-4"},[t("span",{class:O(["inline-block w-1.5 h-1.5 rounded-full shrink-0",p[f.category]])},null,2),t("span",Jt,m(f.verb),1),t("span",Kt,m(f.time),1)]))),128))])):b("",!0)],2))}}),Zt=H(Xt,[["__scopeId","data-v-61cc13cf"]]),Qt={class:"flex flex-col gap-2 p-3"},Wt={key:0,class:"w-full text-center text-xs text-muted-foreground/40 py-6"},Y=j({__name:"FeedAgentList",props:{agents:{},flashingAgentIds:{},selectedAgentId:{}},emits:["select"],setup(e,{emit:o}){const r=e,l=o;function p(c){l("select",r.selectedAgentId===c?null:c)}const g=A(()=>r.agents);return(c,s)=>(a(),d("div",Qt,[(a(!0),d(M,null,N(g.value,f=>(a(),$(Zt,{key:f.id,agent:f,selected:e.selectedAgentId===f.id,flashing:e.flashingAgentIds.has(f.id),onSelect:T=>p(f.id)},null,8,["agent","selected","flashing","onSelect"]))),128)),g.value.length?b("",!0):(a(),d("div",Wt," 暂无 Agent "))]))}}),Yt=j({__name:"SheetTrigger",props:{asChild:{type:Boolean},as:{}},setup(e){const o=e;return(r,l)=>(a(),$(n(rt),ae({"data-slot":"sheet-trigger"},o),{default:v(()=>[se(r.$slots,"default")]),_:3},16))}}),es={class:"h-screen flex flex-col bg-background text-foreground"},ts={key:0,class:"flex-1 flex items-center justify-center"},ss={key:1,class:"flex-1 flex flex-col items-center justify-center gap-3 text-muted-foreground/60 px-6"},as={class:"shrink-0 flex items-center justify-between px-4 h-11 border-b border-border/40"},ns={class:"flex items-center gap-2 min-w-0"},os={class:"text-[10px] text-muted-foreground/40 tabular-nums"},rs={class:"text-[11px] text-muted-foreground truncate max-w-[100px]"},ls={class:"flex items-center gap-0.5"},is={class:"overflow-y-auto"},ds={class:"flex flex-1 min-h-0"},cs={class:"max-w-3xl mx-auto rounded-xl border border-border/40 bg-card overflow-hidden"},us={key:0,class:"flex items-center justify-center py-16"},ps={key:2,class:"flex flex-col items-center justify-center py-20 text-muted-foreground/40"},ms={key:0,class:"text-[10px] text-muted-foreground/40 font-medium uppercase tracking-wider"},fs={key:0,class:"flex-1 overflow-y-auto"},gs={class:"shrink-0 flex items-center justify-center gap-2 h-6 text-[10px] text-muted-foreground/30 border-t border-border/20"},vs={class:"flex items-center gap-1"},xs={class:"tabular-nums"},ee=300*1e3,ys=j({__name:"FeedView",setup(e){const o=x(null),r=x(!0),l=x([]),p=x([]),g=x(new Set),c=x(null),s=x(!1),f=x(!1),T=x(new Set),P=x(!1),h=x(!1),w=x(null),F=x(0);let S=null,L=null;const R=A(()=>c.value?l.value.filter(y=>y.agentId===c.value):l.value),J=A(()=>c.value?p.value.find(y=>y.id===c.value)?.name??null:null);async function de(){try{const y=await U.status();o.value=y.data.enabled}catch{o.value=!1}}async function K(){try{const y=await U.agentSummary();p.value=y.data}catch{}}async function V(y=!1){try{const i={limit:100};if(y&&l.value.length>0){const q=l.value[0]?.timestamp;q&&(i.after=q)}const E=(await U.logs(i)).data.map(it);if(y&&E.length>0){const q=new Set(E.map(D=>D.id));T.value=q,setTimeout(()=>{T.value=new Set},3e3),l.value=[...E,...l.value].slice(0,300);const me=new Set(E.map(D=>D.agentId).filter(Boolean));g.value=me,setTimeout(()=>{g.value=new Set},2e3),await ye(),w.value?.scrollTo({top:0,behavior:"smooth"})}else y||(l.value=E,F.value++)}catch{}}async function ce(){r.value=!0,await de(),o.value&&await Promise.all([K(),V(!1)]),r.value=!1}function ue(){S=setInterval(()=>{!s.value&&!f.value&&o.value&&(V(!0),K())},5e3),L=setTimeout(()=>{f.value=!0},ee)}function pe(){f.value=!1,s.value=!1,L&&clearTimeout(L),L=setTimeout(()=>{f.value=!0},ee)}const B=x(!1);function X(y){if(y===c.value){c.value=null,P.value=!1;return}B.value=!0,c.value=y,P.value=!1,F.value++,setTimeout(()=>{B.value=!1},300)}return te(()=>{ce(),ue()}),ge(()=>{S&&clearInterval(S),L&&clearTimeout(L)}),(y,i)=>(a(),d("div",es,[r.value?(a(),d("div",ts,[u(n(W),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):o.value?(a(),d(M,{key:2},[t("header",as,[t("div",ns,[i[8]||(i[8]=t("div",{class:"flex h-6 w-6 items-center justify-center rounded-md bg-primary text-primary-foreground text-[10px] font-bold shrink-0"}," F",-1)),i[9]||(i[9]=t("span",{class:"text-sm font-medium truncate"},"活动流",-1)),t("span",os,m(R.value.length),1),J.value?(a(),d(M,{key:0},[u(n(re),{orientation:"vertical",class:"h-3 mx-0.5 opacity-30"}),t("span",rs,m(J.value),1),t("button",{class:"text-muted-foreground/40 hover:text-foreground",onClick:i[0]||(i[0]=_=>c.value=null)},[u(n(ve),{class:"w-2.5 h-2.5"})])],64)):b("",!0)]),t("div",ls,[u(n(I),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:i[1]||(i[1]=_=>s.value=!s.value)},{default:v(()=>[(a(),$(z(s.value?n(ne):n(at)),{class:"w-3 h-3"}))]),_:1}),u(n(I),{variant:"ghost",size:"icon",class:"h-7 w-7",onClick:i[2]||(i[2]=_=>V(!0))},{default:v(()=>[u(n(Ge),{class:"w-3 h-3"})]),_:1}),u(n(qe),{open:P.value,"onUpdate:open":i[3]||(i[3]=_=>P.value=_)},{default:v(()=>[u(n(Yt),{"as-child":""},{default:v(()=>[u(n(I),{variant:"ghost",size:"icon",class:"h-7 w-7 lg:hidden"},{default:v(()=>[u(n(Ue),{class:"w-3 h-3"})]),_:1})]),_:1}),u(n(ze),{side:"bottom",class:"max-h-[60vh] rounded-t-xl"},{default:v(()=>[u(n(Ne),null,{default:v(()=>[u(n(Re),{class:"text-sm"},{default:v(()=>[...i[10]||(i[10]=[C("Agents",-1)])]),_:1})]),_:1}),t("div",is,[u(Y,{agents:p.value,"flashing-agent-ids":g.value,"selected-agent-id":c.value,onSelect:X},null,8,["agents","flashing-agent-ids","selected-agent-id"])])]),_:1})]),_:1},8,["open"])])]),t("div",ds,[t("div",{ref_key:"timelineRef",ref:w,class:"flex-1 overflow-y-auto p-4"},[t("div",cs,[B.value?(a(),d("div",us,[u(n(W),{class:"h-5 w-5 animate-spin text-muted-foreground"})])):(a(),$(xe,{key:1,name:"feed-slide",tag:"div",class:"divide-y divide-border/30"},{default:v(()=>[(a(!0),d(M,null,N(R.value,(_,Z)=>(a(),$(St,{key:_.id,activity:_,"is-new":T.value.has(_.id),class:"animate-slide-up",style:he({animationDelay:`${Math.min(Z,15)*30}ms`})},null,8,["activity","is-new","style"]))),128))]),_:1})),!B.value&&R.value.length===0?(a(),d("div",ps,[u(n(Ye),{class:"w-6 h-6 mb-2"}),i[11]||(i[11]=t("p",{class:"text-xs"},"暂无活动记录",-1)),i[12]||(i[12]=t("p",{class:"text-[10px] mt-1 text-muted-foreground/30"},"Agent 发起 API 请求后,活动会自动出现在这里",-1))])):b("",!0)])],512),t("aside",{class:O(["hidden lg:flex flex-col shrink-0 border-l border-border/40 overflow-hidden transition-all duration-300 ease-in-out",h.value?"w-10":"w-[400px]"])},[t("div",{class:O(["flex items-center h-8 shrink-0",h.value?"justify-center":"px-3 justify-between"])},[h.value?b("",!0):(a(),d("span",ms," Agents · "+m(p.value.length),1)),u(n(I),{variant:"ghost",size:"icon",class:"h-6 w-6",onClick:i[4]||(i[4]=_=>h.value=!h.value)},{default:v(()=>[(a(),$(z(h.value?n(Ie):n(oe)),{class:"w-3 h-3"}))]),_:1})],2),h.value?b("",!0):(a(),d("div",fs,[u(Y,{agents:p.value,"flashing-agent-ids":g.value,"selected-agent-id":c.value,onSelect:X},null,8,["agents","flashing-agent-ids","selected-agent-id"])]))],2)]),t("footer",gs,[t("span",vs,[t("span",{class:O(["inline-block w-1 h-1 rounded-full",s.value||f.value?"bg-amber-400":"bg-emerald-400 animate-pulse"])},null,2),C(" "+m(f.value?"已自动暂停(5分钟未操作)":s.value?"已暂停":"实时更新中"),1)]),f.value?(a(),d(M,{key:0},[i[13]||(i[13]=t("span",null,"·",-1)),t("button",{class:"text-primary hover:underline cursor-pointer",onClick:pe},"点击恢复")],64)):b("",!0),i[14]||(i[14]=t("span",null,"·",-1)),t("span",xs,m(p.value.length)+" 个 Agent",1)])],64)):(a(),d("div",ss,[u(n(Pe),{class:"w-10 h-10 mb-1"}),i[5]||(i[5]=t("p",{class:"text-base font-semibold text-foreground/80"},"活动流展示页尚未开启",-1)),i[6]||(i[6]=t("p",{class:"text-sm text-muted-foreground/50 text-center max-w-sm leading-relaxed"}," 开启后,所有 Agent 的 API 活动将在此页面实时展示, 无需登录即可查看。 ",-1)),i[7]||(i[7]=t("p",{class:"text-xs text-muted-foreground/40 mt-1"},[C("在后台设置中开启,或修改 "),t("code",{class:"bg-muted px-1.5 py-0.5 rounded text-[11px]"},"config.yaml → webui.public_feed: true")],-1))]))]))}}),Ks=H(ys,[["__scopeId","data-v-f144f55a"]]);export{Ks as default}; diff --git a/cloudflare/pages/assets/Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js b/cloudflare/pages/assets/Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js new file mode 100644 index 0000000..7e5c38b --- /dev/null +++ b/cloudflare/pages/assets/Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js @@ -0,0 +1 @@ +import{d as o,j as s,v as d,u as a,c as u,n as p,N as m,Z as c,l as f}from"./index-BYiXDk_r.js";import{a as b}from"./index-CEPd9Ray.js";const w=o({__name:"Input",props:{defaultValue:{},modelValue:{},class:{type:[Boolean,null,String,Object,Array]}},emits:["update:modelValue"],setup(l,{emit:r}){const e=l,t=b(e,"modelValue",r,{passive:!0,defaultValue:e.defaultValue});return(g,i)=>s((f(),u("input",{"onUpdate:modelValue":i[0]||(i[0]=n=>c(t)?t.value=n:null),"data-slot":"input",class:p(a(m)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e.class))},null,2)),[[d,a(t)]])}});export{w as _}; diff --git a/cloudflare/pages/assets/Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js b/cloudflare/pages/assets/Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js new file mode 100644 index 0000000..7e4c945 --- /dev/null +++ b/cloudflare/pages/assets/Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js @@ -0,0 +1 @@ +import{u as f}from"./useForwardExpose-DjCgLuye.js";import{P as c}from"./index-D0L1R3xN.js";import{d as o,l as n,b as p,w as d,q as u,x as i,u as r,N as m}from"./index-BYiXDk_r.js";import{r as _}from"./index-Ct5H-N73.js";var b=o({__name:"Label",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"label"}},setup(s){const e=s;return f(),(l,a)=>(n(),p(r(c),i(e,{onMousedown:a[0]||(a[0]=t=>{!t.defaultPrevented&&t.detail>1&&t.preventDefault()})}),{default:d(()=>[u(l.$slots,"default")]),_:3},16))}}),g=b;const B=o({__name:"Label",props:{for:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(s){const e=s,l=_(e,"class");return(a,t)=>(n(),p(r(g),i({"data-slot":"label"},r(l),{class:r(m)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e.class)}),{default:d(()=>[u(a.$slots,"default")]),_:3},16,["class"]))}});export{B as _}; diff --git a/cloudflare/pages/assets/LoginView-CzW4mb8C.js b/cloudflare/pages/assets/LoginView-CzW4mb8C.js new file mode 100644 index 0000000..cf8de4a --- /dev/null +++ b/cloudflare/pages/assets/LoginView-CzW4mb8C.js @@ -0,0 +1 @@ +import{d as _,J as w,c as p,a as t,e as o,w as r,u as s,l as f,f as a,h as y,t as c,i as k,z as h,r as u,K as V,M as $}from"./index-BYiXDk_r.js";import{_ as S}from"./index-D0L1R3xN.js";import{_ as M,a as N}from"./CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js";import{_ as O}from"./CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js";import{a as z,_ as A}from"./CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js";import{_ as B}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{_ as C}from"./Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js";import{_ as K}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-CEPd9Ray.js";import"./index-Ct5H-N73.js";import"./useForwardExpose-DjCgLuye.js";const L={class:"login-page relative flex min-h-screen items-center justify-center bg-background overflow-hidden"},j={class:"space-y-2"},I={key:0,class:"text-sm text-destructive bg-destructive/5 rounded-lg px-3 py-2 border border-destructive/10"},R=_({__name:"LoginView",setup(q){const x=$(),g=V(),b=w(),n=u(""),l=u(!1),d=u("");async function m(){if(!n.value){d.value="请输入密码";return}l.value=!0,d.value="";try{await b.login(n.value);const i=g.query.from==="setup"?"/prompts":"/dashboard";x.push(i)}catch(i){const e=i;d.value=e.response?.data?.detail||"登录失败,请检查密码"}finally{l.value=!1}}return(i,e)=>(f(),p("div",L,[e[6]||(e[6]=t("div",{class:"login-orb login-orb-1"},null,-1)),e[7]||(e[7]=t("div",{class:"login-orb login-orb-2"},null,-1)),e[8]||(e[8]=t("div",{class:"login-orb login-orb-3"},null,-1)),e[9]||(e[9]=t("div",{class:"login-grid absolute inset-0"},null,-1)),o(s(M),{class:"login-card relative z-10 w-full max-w-sm shadow-[var(--shadow-lg)] rounded-2xl border-border/40 bg-background/80 backdrop-blur-xl"},{default:r(()=>[o(s(z),{class:"text-center pb-2"},{default:r(()=>[e[3]||(e[3]=t("div",{class:"mx-auto mb-5 flex h-14 w-14 items-center justify-center rounded-2xl bg-primary text-primary-foreground text-2xl font-bold shadow-[var(--shadow-md)]"}," M ",-1)),o(s(A),{class:"text-2xl font-bold tracking-tight"},{default:r(()=>[...e[1]||(e[1]=[a("OpenMOSS",-1)])]),_:1}),o(s(O),{class:"text-muted-foreground/70"},{default:r(()=>[...e[2]||(e[2]=[a("多Agent协同、自组织自修复自进化的AI公司操作系统",-1)])]),_:1})]),_:1}),o(s(N),{class:"pt-2"},{default:r(()=>[t("form",{onSubmit:h(m,["prevent"]),class:"space-y-5"},[t("div",j,[o(s(C),{for:"password",class:"text-xs font-medium text-muted-foreground"},{default:r(()=>[...e[4]||(e[4]=[a("管理员密码",-1)])]),_:1}),o(s(B),{id:"password",modelValue:n.value,"onUpdate:modelValue":e[0]||(e[0]=v=>n.value=v),type:"password",placeholder:"请输入管理员密码",disabled:l.value,onKeyup:y(m,["enter"]),class:"h-11 rounded-xl bg-muted/30 border-border/50 focus:ring-2 focus:ring-primary/20 focus:border-primary/30 transition-all duration-200 placeholder:text-muted-foreground/40"},null,8,["modelValue","disabled"])]),d.value?(f(),p("p",I,c(d.value),1)):k("",!0),o(s(S),{type:"submit",class:"w-full h-11 rounded-xl text-sm font-medium transition-all duration-200 hover:scale-[1.02] hover:shadow-md active:scale-[0.98]",disabled:l.value},{default:r(()=>[a(c(l.value?"登录中...":"登 录"),1)]),_:1},8,["disabled"]),e[5]||(e[5]=t("details",{class:"group text-center"},[t("summary",{class:"text-[11px] text-muted-foreground/40 cursor-pointer hover:text-muted-foreground/60 transition-colors select-none list-none [&::-webkit-details-marker]:hidden"}," 忘记密码? "),t("div",{class:"mt-2 rounded-xl border border-border/30 bg-muted/20 backdrop-blur-sm p-3 text-left text-xs text-muted-foreground/70 space-y-1"},[t("p",null,[a("1. 编辑服务器上的 "),t("code",{class:"rounded-md bg-muted/50 px-1.5 py-0.5 text-[11px]"},"config.yaml")]),t("p",null,[a("2. 将 "),t("code",{class:"rounded-md bg-muted/50 px-1.5 py-0.5 text-[11px]"},"admin.password"),a(" 值改为新的明文密码")]),t("p",null,"3. 重启服务,系统会自动加密处理")])],-1))],32)]),_:1})]),_:1}),e[10]||(e[10]=t("div",{class:"absolute bottom-6 text-[10px] text-muted-foreground/25 tracking-wider z-10"}," OpenMOSS v1.0 ",-1))]))}}),X=K(R,[["__scopeId","data-v-2e282e28"]]);export{X as default}; diff --git a/cloudflare/pages/assets/LoginView-D7A_FpBE.css b/cloudflare/pages/assets/LoginView-D7A_FpBE.css new file mode 100644 index 0000000..dfff475 --- /dev/null +++ b/cloudflare/pages/assets/LoginView-D7A_FpBE.css @@ -0,0 +1 @@ +.login-card[data-v-2e282e28]{animation:card-in-2e282e28 .6s cubic-bezier(.16,1,.3,1) both}@keyframes card-in-2e282e28{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.login-grid[data-v-2e282e28]{background-image:linear-gradient(rgb(0 0 0 / .02) 1px,transparent 1px),linear-gradient(90deg,rgb(0 0 0 / .02) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:radial-gradient(ellipse 70% 70% at 50% 50%,black 30%,transparent 100%);mask-image:radial-gradient(ellipse 70% 70% at 50% 50%,black 30%,transparent 100%)}.dark{background-image:linear-gradient(rgb(255 255 255 / .025) 1px,transparent 1px),linear-gradient(90deg,rgb(255 255 255 / .025) 1px,transparent 1px)}.login-orb[data-v-2e282e28]{position:absolute;border-radius:50%;filter:blur(80px);opacity:.15;animation:orb-float-2e282e28 12s ease-in-out infinite alternate}.login-orb-1[data-v-2e282e28]{width:400px;height:400px;background:#818cf8;top:-10%;right:-5%;animation-delay:0s}.login-orb-2[data-v-2e282e28]{width:350px;height:350px;background:#06b6d4;bottom:-10%;left:-5%;animation-delay:-4s}.login-orb-3[data-v-2e282e28]{width:250px;height:250px;background:#f59e0b;top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:-8s;opacity:.08}@keyframes orb-float-2e282e28{0%{transform:translate(0) scale(1)}to{transform:translate(30px,-20px) scale(1.1)}}.dark{opacity:.08;filter:blur(100px)} diff --git a/cloudflare/pages/assets/LogsView-Co5xeyoP.js b/cloudflare/pages/assets/LogsView-Co5xeyoP.js new file mode 100644 index 0000000..ef30f3c --- /dev/null +++ b/cloudflare/pages/assets/LogsView-Co5xeyoP.js @@ -0,0 +1 @@ +import{m as Z,p as m,d as J,H as K,o as Q,c as n,a as o,e as r,u as l,j as W,a5 as X,F as _,g as z,w as f,t as u,L as Y,i as L,r as p,E as ee,l as i,f as b,n as h,D as te}from"./index-BYiXDk_r.js";import{_ as N,A as ae,a as se}from"./index-wmMfISvJ.js";import{_ as C}from"./index-D0L1R3xN.js";import{_ as oe}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{S as re}from"./search-3_RVfAHZ.js";import{C as le}from"./circle-alert-DI3FQNzC.js";import{F as ne}from"./file-text-C7Xfe8Jp.js";import{R as ie}from"./refresh-cw-DOzI5zLk.js";import{C as de}from"./chevron-down-xV8GE0yH.js";import{u as ue}from"./index-Ct5H-N73.js";import{_ as ce}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-CEPd9Ray.js";const me=Z("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),ve={list:s=>m.get("/admin/agents",{params:s}),get:s=>m.get(`/admin/agents/${s}`),updateProfile:(s,d)=>m.put(`/admin/agents/${s}`,d),updateStatus:(s,d)=>m.put(`/admin/agents/${s}/status`,{status:d}),scoreLogs:(s,d)=>m.get(`/admin/agents/${s}/score-logs`,{params:d}),activityLogs:(s,d)=>m.get(`/admin/agents/${s}/activity-logs`,{params:d}),requestLogs:(s,d)=>m.get(`/admin/agents/${s}/request-logs`,{params:d}),relatedCounts:s=>m.get(`/admin/agents/${s}/related-counts`),deleteAgent:(s,d)=>m.delete(`/admin/agents/${s}`,{data:{confirm_name:d}})},ge={list:s=>m.get("/admin/logs",{params:s})},fe={class:"flex flex-col h-[calc(100vh-3.5rem)]"},pe={class:"shrink-0 border-b border-border/40 bg-background px-4 py-3 space-y-2.5"},be={class:"flex items-center gap-3"},xe={class:"relative flex-1 max-w-sm"},_e=["value"],he={class:"flex items-center gap-1.5 flex-wrap"},ye={class:"flex-1 min-h-0 overflow-y-auto"},ke={key:0,class:"flex flex-col items-center justify-center py-16"},we={class:"mt-2 text-sm"},Ce={key:1,class:"flex items-center justify-center py-16"},$e={key:0,class:"divide-y divide-border/30"},De={class:"flex items-start gap-3"},Ae={class:"flex-1 min-w-0"},Le={class:"flex items-center gap-1.5 flex-wrap"},ze={class:"text-sm font-semibold"},Ne={class:"text-[11px] text-muted-foreground/50 ml-auto shrink-0 tabular-nums"},Fe={class:"hidden sm:inline ml-1 text-muted-foreground/40"},Ve={class:"mt-1"},Se=["onClick"],Te={key:0,class:"mt-1 text-[11px] text-muted-foreground/50 tabular-nums"},Ee={key:1,class:"flex flex-col items-center justify-center py-16 text-muted-foreground/40"},Ie={key:2,class:"flex items-center justify-center gap-2 py-3 border-t border-border/30 text-xs text-muted-foreground"},Me={class:"tabular-nums"},I=20,Re=J({__name:"LogsView",setup(s){const d=p(""),y=p("all"),k=p("all"),$=p(1),g=p(!1),D=p("");let A=0;const c=p(R()),F=p([]),x=ee(new Set),M=[{value:"all",label:"全部类型"},{value:"plan",label:"规划"},{value:"coding",label:"执行"},{value:"delivery",label:"交付"},{value:"review",label:"审查"},{value:"patrol",label:"巡查"},{value:"reflection",label:"自省"},{value:"blocked",label:"阻塞"}];function R(){return{items:[],total:0,page:1,page_size:I,total_pages:1,has_more:!1}}function j(t){return{plan:"规划",coding:"执行",delivery:"交付",review:"审查",patrol:"巡查",reflection:"自省",blocked:"阻塞"}[t]??t}function B(t){return{plan:"border-violet-200 bg-violet-50 text-violet-700",coding:"border-sky-200 bg-sky-50 text-sky-700",delivery:"border-emerald-200 bg-emerald-50 text-emerald-700",review:"border-amber-200 bg-amber-50 text-amber-700",patrol:"border-teal-200 bg-teal-50 text-teal-700",reflection:"border-indigo-200 bg-indigo-50 text-indigo-700",blocked:"border-rose-200 bg-rose-50 text-rose-700"}[t]??"border-border bg-muted text-muted-foreground"}function V(t){return{plan:"bg-violet-500",coding:"bg-sky-500",delivery:"bg-emerald-500",review:"bg-amber-500",patrol:"bg-teal-500",reflection:"bg-indigo-500",blocked:"bg-rose-500"}[t]??"bg-muted-foreground"}function S(t){return{planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"}[t]??t}function P(t){return{planner:"border-violet-200 bg-violet-50 text-violet-700",executor:"border-sky-200 bg-sky-50 text-sky-700",reviewer:"border-amber-200 bg-amber-50 text-amber-700",patrol:"border-teal-200 bg-teal-50 text-teal-700"}[t]??"border-border bg-muted text-muted-foreground"}function q(t){if(!t)return"—";const a=new Date(t);return Number.isNaN(a.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(a)}function U(t){if(!t)return"";const a=Date.now(),e=new Date(t).getTime();if(Number.isNaN(e))return"";const v=Math.floor((a-e)/1e3);return v<60?"刚刚":v<3600?`${Math.floor(v/60)} 分钟前`:v<86400?`${Math.floor(v/3600)} 小时前`:`${Math.floor(v/86400)} 天前`}function G(t){x.has(t)?x.delete(t):x.add(t)}function T(t){return t.length>80}const H=ue(()=>{$.value=1,w()},280);K([d,y,k],()=>{g.value=!0,H()}),Q(()=>{O(),w()});async function O(){try{const t=await ve.list({page:1,page_size:100});F.value=t.data.items}catch(t){console.error("Failed to load agent list",t)}}async function w(){const t=++A;g.value=!0,D.value="";try{const a=await ge.list({page:$.value,page_size:I,keyword:d.value.trim()||void 0,action:y.value==="all"?void 0:y.value,agent_id:k.value==="all"?void 0:k.value,sort_order:"desc"});if(t!==A)return;c.value=a.data,x.clear()}catch(a){if(t!==A)return;console.error("Failed to load activity logs",a),D.value="数据加载失败,请重试。"}finally{t===A&&(g.value=!1)}}function E(t){t<1||t>c.value.total_pages||t===$.value||($.value=t,w())}return(t,a)=>(i(),n("div",fe,[o("header",pe,[o("div",be,[o("div",xe,[r(l(re),{class:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),r(l(oe),{modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=e=>d.value=e),class:"h-9 bg-muted/30 pl-10 text-sm",placeholder:"搜索摘要内容…"},null,8,["modelValue"])]),W(o("select",{"onUpdate:modelValue":a[1]||(a[1]=e=>k.value=e),class:"h-9 rounded-md border border-input bg-muted/30 px-3 text-sm text-foreground outline-none focus:ring-1 focus:ring-ring shrink-0 max-w-[180px] truncate"},[a[4]||(a[4]=o("option",{value:"all"},"全部 Agent",-1)),(i(!0),n(_,null,z(F.value,e=>(i(),n("option",{key:e.id,value:e.id},u(e.name)+"("+u(S(e.role))+") ",9,_e))),128))],512),[[X,k.value]]),r(l(N),{variant:"secondary",class:"h-7 px-2.5 text-xs tabular-nums shrink-0"},{default:f(()=>[b(u(c.value.total)+" 条 ",1)]),_:1}),r(l(C),{variant:"ghost",size:"icon",class:"h-8 w-8 shrink-0",disabled:g.value,onClick:w},{default:f(()=>[r(l(ie),{class:h(["h-3.5 w-3.5",g.value?"animate-spin":""])},null,8,["class"])]),_:1},8,["disabled"])]),o("div",he,[(i(),n(_,null,z(M,e=>r(l(C),{key:e.value,size:"sm",variant:y.value===e.value?"default":"ghost",class:"h-7 rounded-full px-3 text-xs",onClick:v=>y.value=e.value},{default:f(()=>[e.value!=="all"?(i(),n("span",{key:0,class:h(["inline-block w-1.5 h-1.5 rounded-full mr-1",V(e.value)])},null,2)):L("",!0),b(" "+u(e.label),1)]),_:2},1032,["variant","onClick"])),64))])]),o("div",ye,[D.value?(i(),n("div",ke,[r(l(le),{class:"h-5 w-5 text-muted-foreground"}),o("p",we,u(D.value),1),r(l(C),{class:"mt-3",size:"sm",onClick:w},{default:f(()=>[...a[5]||(a[5]=[b("重新加载",-1)])]),_:1})])):g.value?(i(),n("div",Ce,[r(l(Y),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):(i(),n(_,{key:2},[c.value.items.length?(i(),n("div",$e,[(i(!0),n(_,null,z(c.value.items,(e,v)=>(i(),n("div",{key:e.id,class:"px-5 py-3.5 hover:bg-muted/20 transition-colors animate-slide-up",style:te({animationDelay:`${v*25}ms`})},[o("div",De,[o("div",{class:h(["mt-1.5 w-2 h-2 rounded-full shrink-0",V(e.action)])},null,2),o("div",Ae,[o("div",Le,[o("span",ze,u(e.agent_name),1),r(l(N),{variant:"outline",class:h([P(e.agent_role),"text-[10px] px-1.5"])},{default:f(()=>[b(u(S(e.agent_role)),1)]),_:2},1032,["class"]),r(l(N),{variant:"outline",class:h([B(e.action),"text-[10px] px-1.5"])},{default:f(()=>[b(u(j(e.action)),1)]),_:2},1032,["class"]),o("span",Ne,[b(u(U(e.created_at))+" ",1),o("span",Fe,u(q(e.created_at)),1)])]),o("div",Ve,[o("p",{class:h(["text-sm text-muted-foreground leading-relaxed",!x.has(e.id)&&T(e.summary)?"line-clamp-2":""])},u(e.summary||"(无摘要)"),3),T(e.summary)?(i(),n("button",{key:0,class:"inline-flex items-center gap-0.5 mt-0.5 text-xs text-primary/70 hover:text-primary transition-colors",onClick:je=>G(e.id)},[x.has(e.id)?(i(),n(_,{key:0},[r(l(me),{class:"h-3 w-3"}),a[6]||(a[6]=b(" 收起 ",-1))],64)):(i(),n(_,{key:1},[r(l(de),{class:"h-3 w-3"}),a[7]||(a[7]=b(" 展开 ",-1))],64))],8,Se)):L("",!0)]),e.sub_task_id?(i(),n("div",Te," 子任务 "+u(e.sub_task_id.slice(0,8))+"… ",1)):L("",!0)])])],4))),128))])):(i(),n("div",Ee,[r(l(ne),{class:"h-6 w-6 mb-2"}),a[8]||(a[8]=o("p",{class:"text-sm"},"暂无活动日志",-1))])),c.value.total_pages>1?(i(),n("div",Ie,[r(l(C),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:c.value.page<=1||g.value,onClick:a[2]||(a[2]=e=>E(c.value.page-1))},{default:f(()=>[r(l(ae),{class:"h-3 w-3"})]),_:1},8,["disabled"]),o("span",Me,u(c.value.page)+" / "+u(c.value.total_pages),1),r(l(C),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:c.value.page>=c.value.total_pages||g.value,onClick:a[3]||(a[3]=e=>E(c.value.page+1))},{default:f(()=>[r(l(se),{class:"h-3 w-3"})]),_:1},8,["disabled"])])):L("",!0)],64))])]))}}),Xe=ce(Re,[["__scopeId","data-v-56429bd6"]]);export{Xe as default}; diff --git a/cloudflare/pages/assets/LogsView-nr-nBQlx.css b/cloudflare/pages/assets/LogsView-nr-nBQlx.css new file mode 100644 index 0000000..cd89329 --- /dev/null +++ b/cloudflare/pages/assets/LogsView-nr-nBQlx.css @@ -0,0 +1 @@ +@keyframes slide-up-fade-in-56429bd6{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up[data-v-56429bd6]{animation:slide-up-fade-in-56429bd6 .35s ease-out both} diff --git a/cloudflare/pages/assets/NotFoundView-CYIoVC0_.css b/cloudflare/pages/assets/NotFoundView-CYIoVC0_.css new file mode 100644 index 0000000..9bf0e95 --- /dev/null +++ b/cloudflare/pages/assets/NotFoundView-CYIoVC0_.css @@ -0,0 +1 @@ +.nf-card[data-v-9bf86c21]{animation:nf-card-in-9bf86c21 .6s cubic-bezier(.16,1,.3,1) both}.nf-code[data-v-9bf86c21]{animation:nf-code-in-9bf86c21 .7s cubic-bezier(.16,1,.3,1) .1s both}.nf-title[data-v-9bf86c21]{animation:nf-slide-up-9bf86c21 .5s cubic-bezier(.16,1,.3,1) .25s both}.nf-desc[data-v-9bf86c21]{animation:nf-slide-up-9bf86c21 .5s cubic-bezier(.16,1,.3,1) .35s both}.nf-actions[data-v-9bf86c21]{animation:nf-slide-up-9bf86c21 .5s cubic-bezier(.16,1,.3,1) .45s both}@keyframes nf-card-in-9bf86c21{0%{opacity:0;transform:translateY(24px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes nf-code-in-9bf86c21{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes nf-slide-up-9bf86c21{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.nf-grid[data-v-9bf86c21]{background-image:linear-gradient(rgb(0 0 0 / .02) 1px,transparent 1px),linear-gradient(90deg,rgb(0 0 0 / .02) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:radial-gradient(ellipse 70% 70% at 50% 50%,black 30%,transparent 100%);mask-image:radial-gradient(ellipse 70% 70% at 50% 50%,black 30%,transparent 100%)}.dark{background-image:linear-gradient(rgb(255 255 255 / .025) 1px,transparent 1px),linear-gradient(90deg,rgb(255 255 255 / .025) 1px,transparent 1px)}.nf-orb[data-v-9bf86c21]{position:absolute;border-radius:50%;filter:blur(80px);opacity:.12;animation:nf-orb-float-9bf86c21 14s ease-in-out infinite alternate}.nf-orb-1[data-v-9bf86c21]{width:380px;height:380px;background:#f97316;top:-12%;left:-5%;animation-delay:0s}.nf-orb-2[data-v-9bf86c21]{width:320px;height:320px;background:#818cf8;bottom:-10%;right:-5%;animation-delay:-5s}.nf-orb-3[data-v-9bf86c21]{width:220px;height:220px;background:#06b6d4;top:60%;left:55%;transform:translate(-50%,-50%);animation-delay:-9s;opacity:.06}@keyframes nf-orb-float-9bf86c21{0%{transform:translate(0) scale(1)}to{transform:translate(-25px,20px) scale(1.12)}}.dark{opacity:.06;filter:blur(100px)} diff --git a/cloudflare/pages/assets/NotFoundView-CwfZACt3.js b/cloudflare/pages/assets/NotFoundView-CwfZACt3.js new file mode 100644 index 0000000..1bef832 --- /dev/null +++ b/cloudflare/pages/assets/NotFoundView-CwfZACt3.js @@ -0,0 +1 @@ +import{d as f,c as u,a as e,e as o,w as n,u as a,l as m,f as l,M as b}from"./index-BYiXDk_r.js";import{_ as i}from"./index-D0L1R3xN.js";import{_ as x,a as c}from"./CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js";import{_ as p}from"./_plugin-vue_export-helper-DlAUqK2U.js";const g={class:"notfound-page relative flex min-h-screen items-center justify-center bg-background overflow-hidden"},v={class:"nf-actions flex gap-3 w-full max-w-xs"},w=f({__name:"NotFoundView",setup(k){const s=b();function r(){s.push("/dashboard")}function d(){window.history.length>1?s.back():r()}return(_,t)=>(m(),u("div",g,[t[5]||(t[5]=e("div",{class:"nf-orb nf-orb-1"},null,-1)),t[6]||(t[6]=e("div",{class:"nf-orb nf-orb-2"},null,-1)),t[7]||(t[7]=e("div",{class:"nf-orb nf-orb-3"},null,-1)),t[8]||(t[8]=e("div",{class:"nf-grid absolute inset-0"},null,-1)),o(a(x),{class:"nf-card relative z-10 w-full max-w-md shadow-[var(--shadow-lg)] rounded-2xl border-border/40 bg-background/80 backdrop-blur-xl"},{default:n(()=>[o(a(c),{class:"flex flex-col items-center py-12 px-8"},{default:n(()=>[t[2]||(t[2]=e("div",{class:"nf-code relative mb-2 select-none"},[e("span",{class:"text-[120px] font-black leading-none tracking-tighter bg-gradient-to-br from-primary/80 via-primary/50 to-primary/20 bg-clip-text text-transparent"}," 404 "),e("div",{class:"absolute -top-2 -right-3 h-4 w-4 rounded-full bg-chart-1/60 animate-bounce [animation-duration:2s]"}),e("div",{class:"absolute bottom-4 -left-2 h-3 w-3 rounded-full bg-chart-2/50 animate-bounce [animation-duration:2.5s] [animation-delay:0.3s]"})],-1)),t[3]||(t[3]=e("h1",{class:"nf-title text-xl font-bold tracking-tight text-foreground mb-2"}," 页面未找到 ",-1)),t[4]||(t[4]=e("p",{class:"nf-desc text-sm text-muted-foreground/70 text-center mb-8 max-w-xs leading-relaxed"}," 你访问的页面不存在或已被移除,请检查地址是否正确。 ",-1)),e("div",v,[o(a(i),{variant:"outline",onClick:d,class:"flex-1 h-11 rounded-xl text-sm font-medium transition-all duration-200 hover:scale-[1.02] active:scale-[0.98] border-border/50"},{default:n(()=>[...t[0]||(t[0]=[l(" ← 返回上一页 ",-1)])]),_:1}),o(a(i),{onClick:r,class:"flex-1 h-11 rounded-xl text-sm font-medium transition-all duration-200 hover:scale-[1.02] hover:shadow-md active:scale-[0.98]"},{default:n(()=>[...t[1]||(t[1]=[l(" 返回首页 ",-1)])]),_:1})])]),_:1})]),_:1}),t[9]||(t[9]=e("div",{class:"absolute bottom-6 text-[10px] text-muted-foreground/25 tracking-wider z-10"}," OpenMOSS v1.0 ",-1))]))}}),B=p(w,[["__scopeId","data-v-9bf86c21"]]);export{B as default}; diff --git a/cloudflare/pages/assets/Presence-Sy1r65hd.js b/cloudflare/pages/assets/Presence-Sy1r65hd.js new file mode 100644 index 0000000..c55c51f --- /dev/null +++ b/cloudflare/pages/assets/Presence-Sy1r65hd.js @@ -0,0 +1,3 @@ +import{c as w}from"./createContext-a9Tpfoxo.js";import{ah as I,r as f,H as E,A as T,k as C,C as O,d as S,V as P,ae as U,ai as b}from"./index-BYiXDk_r.js";import{r as x}from"./index-D0L1R3xN.js";import{f as R,c as _}from"./index-CEPd9Ray.js";import{i as $}from"./index-Ct5H-N73.js";function H(){let t=document.activeElement;if(t==null)return null;for(;t!=null&&t.shadowRoot!=null&&t.shadowRoot.activeElement!=null;)t=t.shadowRoot.activeElement;return t}const[Y]=w("ConfigProvider");function z(t,e="reka"){let i;return i=I?.(),e?`${e}-${i}`:i}function D(t,e){const i=f(t);function l(s){return e[i.value][s]??i.value}return{state:i,dispatch:s=>{i.value=l(s)}}}function F(t,e){const i=f({}),l=f("none"),v=f(t),s=t.value?"mounted":"unmounted";let u;const c=e.value?.ownerDocument.defaultView??R,{state:m,dispatch:o}=D(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}}),a=n=>{if($){const r=new CustomEvent(n,{bubbles:!1,cancelable:!1});e.value?.dispatchEvent(r)}};E(t,async(n,r)=>{const N=r!==n;if(await O(),N){const A=l.value,d=h(e.value);n?(o("MOUNT"),a("enter"),d==="none"&&a("after-enter")):d==="none"||d==="undefined"||i.value?.display==="none"?(o("UNMOUNT"),a("leave"),a("after-leave")):r&&A!==d?(o("ANIMATION_OUT"),a("leave")):(o("UNMOUNT"),a("after-leave"))}},{immediate:!0});const p=n=>{const r=h(e.value),N=r.includes(CSS.escape(n.animationName)),A=m.value==="mounted"?"enter":"leave";if(n.target===e.value&&N&&(a(`after-${A}`),o("ANIMATION_END"),!v.value)){const d=e.value.style.animationFillMode;e.value.style.animationFillMode="forwards",u=c?.setTimeout(()=>{e.value?.style.animationFillMode==="forwards"&&(e.value.style.animationFillMode=d)})}n.target===e.value&&r==="none"&&o("ANIMATION_END")},y=n=>{n.target===e.value&&(l.value=h(e.value))},M=E(e,(n,r)=>{n?(i.value=getComputedStyle(n),n.addEventListener("animationstart",y),n.addEventListener("animationcancel",p),n.addEventListener("animationend",p)):(o("ANIMATION_END"),u!==void 0&&c?.clearTimeout(u),r?.removeEventListener("animationstart",y),r?.removeEventListener("animationcancel",p),r?.removeEventListener("animationend",p))},{immediate:!0}),g=E(m,()=>{const n=h(e.value);l.value=m.value==="mounted"?n:"none"});return T(()=>{M(),g()}),{isPresent:C(()=>["mounted","unmountSuspended"].includes(m.value))}}function h(t){return t&&getComputedStyle(t).animationName||"none"}var G=S({name:"Presence",props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(t,{slots:e,expose:i}){const{present:l,forceMount:v}=P(t),s=f(),{isPresent:u}=F(l,s);i({present:u});let c=e.default({present:u.value});c=x(c||[]);const m=b();if(c&&c?.length>1){const o=m?.parent?.type.name?`<${m.parent.type.name} />`:"component";throw new Error([`Detected an invalid children for \`${o}\` for \`Presence\` component.`,"","Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.","You can apply a few solutions:",["Provide a single child element so that `presence` directive attach correctly.","Ensure the first child is an actual element instead of a raw text node or comment node."].map(a=>` - ${a}`).join(` +`)].join(` +`))}return()=>v.value||l.value||u.value?U(e.default({present:u.value})[0],{ref:o=>{const a=_(o);return typeof a?.hasAttribute>"u"||(a?.hasAttribute("data-reka-popper-content-wrapper")?s.value=a.firstElementChild:s.value=a),a}}):null}});export{G as P,H as g,Y as i,z as u}; diff --git a/cloudflare/pages/assets/PromptsView-C9Duf4fo.js b/cloudflare/pages/assets/PromptsView-C9Duf4fo.js new file mode 100644 index 0000000..d3da336 --- /dev/null +++ b/cloudflare/pages/assets/PromptsView-C9Duf4fo.js @@ -0,0 +1,15 @@ +import{m as $e,p as h,d as Et,o as Pt,c as u,e as a,w as r,T as Q,b as v,Q as Ot,r as f,l as o,n as b,a as t,t as c,f as d,i as y,u as l,D as rt,F as D,g as I,L as H,z as me,j as pe,v as xe,k as L}from"./index-BYiXDk_r.js";import{c as ge}from"./clipboard-BxPwmQDo.js";import{g as Z}from"./marked.esm-D9eDbhZJ.js";import{_ as j,a as z}from"./CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js";import{_ as m}from"./index-D0L1R3xN.js";import{_ as De}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{_ as N}from"./Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js";import{d as Dt,_ as Ht,b as He,c as Ue,P as be,T as Ie}from"./TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js";import{_ as Ne,a as Be,b as qe}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js";import{_ as Ut}from"./TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js";import{U as It}from"./users-C4rtE1G7.js";import{S as Nt}from"./scroll-text-XmJfG4_f.js";import{Z as ye}from"./zap-B-kRHIBE.js";import{S as ke}from"./shield-check-C0gcRV-i.js";import{C as re}from"./check-DEjmzl3F.js";import{C as ot,a as we}from"./chevron-right-4Ffa5RHB.js";import{F as nt}from"./file-text-C7Xfe8Jp.js";import{E as Fe}from"./eye-Bf9-8M_K.js";import{P as oe}from"./pencil-D1GtMUQI.js";import{C as Ge}from"./usePrimitiveElement-JaAYjjRd.js";import{D as it}from"./download-Cz1Slb-U.js";import{C as dt}from"./code-zczxpfOO.js";import{_ as Bt}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-CEPd9Ray.js";import"./index-Ct5H-N73.js";import"./useForwardExpose-DjCgLuye.js";import"./VisuallyHidden-DmVvgUgH.js";import"./Presence-Sy1r65hd.js";import"./createContext-a9Tpfoxo.js";import"./TooltipProvider-Ck2YUJut.js";const Ke=$e("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);const he=$e("compass",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}]]);const qt=$e("layout-template",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"9",height:"7",x:"3",y:"14",rx:"1",key:"jqznyg"}],["rect",{width:"5",height:"7",x:"16",y:"14",rx:"1",key:"q5h2i8"}]]);const _e=$e("search-check",[["path",{d:"m8 11 2 2 4-4",key:"1sed1v"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]),_={listTemplates:()=>h.get("/admin/prompts/templates"),getTemplate:g=>h.get(`/admin/prompts/templates/${g}`),updateTemplate:(g,$)=>h.put(`/admin/prompts/templates/${g}`,{content:$}),listAgents:()=>h.get("/admin/prompts/agents"),getAgent:g=>h.get(`/admin/prompts/agents/${g}`),createAgent:g=>h.post("/admin/prompts/agents",g),updateAgent:(g,$)=>h.put(`/admin/prompts/agents/${g}`,$),deleteAgent:g=>h.delete(`/admin/prompts/agents/${g}`),compose:g=>h.get(`/admin/prompts/compose/${g}`),getOnboarding:g=>h.get(`/admin/prompts/onboarding/${g}`)},Ce={list:g=>h.get("/rules/list",{params:g?{scope:g}:void 0}),create:g=>h.post("/rules",g),update:(g,$)=>h.put(`/rules/${g}`,{content:$}),delete:g=>h.delete(`/rules/${g}`)},Ft={class:"p-6 max-w-7xl mx-auto"},Gt={class:"text-base"},Kt={key:"list",class:"space-y-4 max-w-5xl mx-auto"},Qt={class:"text-muted-foreground"},Zt={class:"text-muted-foreground"},Wt={class:"flex items-center justify-between"},Yt={class:"flex items-center gap-3"},Jt={key:0,class:"flex items-center gap-1.5 text-xs text-muted-foreground bg-muted/50 rounded-full px-2.5 py-1"},Xt={class:"h-1.5 w-10 rounded-full bg-muted overflow-hidden"},el={key:0,class:"flex items-center gap-2 flex-wrap text-sm"},tl=["onClick"],ll=["open"],sl={class:"flex items-center gap-1.5 cursor-pointer text-xs text-muted-foreground hover:text-foreground transition-colors select-none list-none [&::-webkit-details-marker]:hidden"},al={key:1,class:"flex justify-center py-16"},rl={key:3,class:"space-y-8"},ol={class:"text-sm font-semibold text-muted-foreground uppercase tracking-wider flex items-center gap-2"},nl={class:"text-xs font-normal"},il={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5"},dl={class:"flip-card-front absolute inset-0 rounded-xl border bg-card overflow-hidden flex flex-col",style:{"backface-visibility":"hidden"}},ul={class:"p-5 flex flex-col justify-between flex-1"},cl={class:"flex items-start justify-between"},vl={class:"flex gap-1"},fl={key:0,class:"text-[10px] px-1.5 py-0.5 rounded-full bg-blue-500/10 text-blue-600 border border-blue-500/20 font-medium"},ml={key:1,class:"text-[10px] px-1.5 py-0.5 rounded-full bg-yellow-500/10 text-yellow-600 border border-yellow-500/20 font-medium"},pl={class:"text-lg font-bold mt-3 truncate"},xl={class:"text-xs text-muted-foreground mt-1 truncate"},gl={class:"flex items-center justify-between mt-3"},bl={class:"flip-card-back absolute inset-0 rounded-xl border bg-card overflow-hidden flex flex-col",style:{"backface-visibility":"hidden",transform:"rotateY(180deg)"}},yl={class:"p-5 flex flex-col justify-between flex-1"},kl={class:"space-y-2 flex-1 overflow-hidden"},wl={class:"flex items-center gap-2"},hl={class:"text-sm font-bold truncate"},_l={class:"text-xs text-muted-foreground leading-relaxed line-clamp-4"},Cl={class:"text-[10px] text-muted-foreground/50 font-mono truncate pt-1"},$l={class:"flex items-center gap-1.5 pt-3 border-t border-border/40 mt-2"},Tl={key:0,class:"flex justify-center py-12"},Al={class:"flex items-start gap-3"},jl=["innerHTML"],zl={class:"flex items-center gap-1 flex-shrink-0"},Ml={key:0,class:"text-xs text-muted-foreground mt-2 opacity-50"},Rl={class:"grid grid-cols-1 sm:grid-cols-2 gap-5"},Sl=["onClick"],Ll={class:"p-5 flex items-start gap-4"},Vl={class:"flex-1 min-w-0"},El={class:"flex items-center gap-2"},Pl={class:"text-base font-bold"},Ol={class:"text-xs text-muted-foreground mt-1.5 leading-relaxed"},Dl={key:"template",class:"space-y-4 max-w-5xl mx-auto"},Hl={class:"flex items-center gap-3"},Ul={class:"flex-1"},Il={class:"text-2xl font-bold"},Nl={class:"text-sm text-muted-foreground"},Bl={key:1,class:"flex gap-2"},ql=["innerHTML"],Fl={key:"agent-view",class:"space-y-4 max-w-5xl mx-auto"},Gl={class:"flex items-center gap-3"},Kl={class:"flex-1"},Ql={class:"text-2xl font-bold"},Zl={class:"text-sm text-muted-foreground"},Wl=["innerHTML"],Yl={class:"flex items-center gap-3 mb-4"},Jl={class:"text-2xl font-bold flex-1"},Xl={class:"space-y-2 mb-4"},es={class:"grid grid-cols-4 gap-2"},ts=["onClick"],ls={class:"grid grid-cols-3 gap-3 mb-4"},ss={class:"space-y-1"},as={class:"space-y-1"},rs={class:"space-y-1"},os={key:0,class:"flex justify-center py-12"},ns={key:1,class:"grid grid-cols-2 gap-4",style:{height:"calc(100vh - 220px)"}},is={class:"flex flex-col gap-3 min-h-0"},ds={class:"flex flex-col space-y-1",style:{flex:"2"}},us={key:0,class:"text-primary ml-1"},cs={class:"flex flex-col space-y-1",style:{flex:"1"}},vs={class:"flex flex-col min-h-0"},fs={class:"flex items-center justify-between mb-1 flex-shrink-0"},ms=["innerHTML"],ps={key:1,class:"flex items-center justify-center h-full text-sm text-muted-foreground"},xs={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm"},gs={class:"text-sm text-muted-foreground mt-2"},bs={class:"flex justify-end gap-2"},ys={key:"preview",class:"space-y-5 max-w-5xl mx-auto"},ks={class:"flex items-center gap-3"},ws={class:"flex-1"},hs={class:"text-sm text-muted-foreground mt-0.5"},_s={class:"flex items-center justify-between rounded-xl border bg-muted/20 px-4 py-3"},Cs={class:"flex items-center gap-2"},$s={key:1,class:"mr-1.5 text-base leading-none"},Ts={class:"flex items-center border rounded-lg overflow-hidden"},As=["innerHTML"],js={key:1,class:"p-6 text-sm whitespace-pre-wrap break-words font-mono max-h-[70vh] overflow-y-auto bg-muted/30 rounded-lg"},zs={class:"grid grid-cols-3 gap-3"},Ms={class:"flex items-start gap-2 rounded-lg border bg-muted/30 px-3 py-2.5"},Rs={class:"flex items-start gap-2 rounded-lg border bg-muted/30 px-3 py-2.5"},Ss={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm"},Ls={class:"text-sm text-muted-foreground mt-2"},Vs={class:"flex justify-end gap-2"},Es={key:0,class:"fixed inset-0 z-[100] flex items-center justify-center"},Ps={class:"relative z-10 w-full max-w-4xl mx-6 bg-background rounded-xl shadow-2xl border flex flex-col overflow-hidden",style:{height:"75vh","max-height":"75vh"}},Os={class:"flex items-center justify-between px-5 py-3 border-b flex-shrink-0"},Ds={class:"text-base font-semibold"},Hs={class:"flex items-center border rounded-lg overflow-hidden"},Us={class:"flex-1 flex min-h-0"},Is=["innerHTML"],Ns={key:1,class:"flex items-center justify-center h-full text-sm text-muted-foreground"},Bs={class:"flex items-center justify-end gap-2 px-5 py-3 border-t bg-muted/30 flex-shrink-0"},qs={key:0,class:"fixed inset-0 z-50 flex items-center justify-center"},Fs={class:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-red-100 text-red-600 dark:bg-red-900 dark:text-red-400"},Gs={class:"flex gap-3 justify-center"},Qe="## 🔧 平台对接",Ks=Et({__name:"PromptsView",setup(g){const $=f(!0),P=f([]),Ze=f([]),w=f("list"),W=f(""),x=f({slug:"",name:"",role:"",description:""}),T=f(""),M=f(""),Te=f(!1),ne=f(!1),ie=f(""),We=f(""),de=f(!1),Ae=f(""),R=f({role:"",content:"",filename:""}),B=f(!1),V=f(""),q=f(!1),F=f("rendered"),C=f(!1),ue=f(""),ce=f(""),je=f("success");function p(n,e="success"){ce.value=n,je.value=e,setTimeout(()=>{ce.value=""},3e3)}const Y=f([]),ze=f(!1),J=f(!1),ve=f(""),Me=f(!1),X=f(null),S=f(""),A=f("split"),Ye=L(()=>S.value?Z(S.value):""),ee=f(!1),Je=f("");async function Re(){ze.value=!0;try{const{data:n}=await Ce.list("global");Y.value=n}catch(n){console.error("加载规则失败",n)}finally{ze.value=!1}}function Xe(n){X.value=n?.id??null,S.value=n?.content??"",A.value="split",Me.value=!0}function Se(){Me.value=!1,X.value=null,S.value=""}async function ut(){if(S.value.trim()){J.value=!0;try{X.value?(await Ce.update(X.value,S.value),p("规则已更新")):(await Ce.create({scope:"global",content:S.value}),p("规则已创建")),Se(),await Re()}catch(n){p(n.response?.data?.detail||"保存失败","error")}finally{J.value=!1}}}function ct(n){Je.value=n,ee.value=!0}async function vt(){ee.value=!1;const n=Je.value;ve.value=n;try{await Ce.delete(n),p("规则已删除"),await Re()}catch(e){p(e.response?.data?.detail||"删除失败","error")}finally{ve.value=""}}const et=[{value:"planner",label:"规划者 Planner"},{value:"executor",label:"执行者 Executor"},{value:"reviewer",label:"审查者 Reviewer"},{value:"patrol",label:"巡查者 Patrol"}],O=n=>et.find(e=>e.value===n)?.label||n,tt={planner:"负责任务拆解与规划,将大目标分解为可执行的子任务",executor:"负责具体执行任务,产出内容、代码或操作结果",reviewer:"负责审核执行结果,确保产出质量达标",patrol:"负责系统巡查和异常检测,维护运行稳定性"},ft=[{role:"planner",label:"规划者 Planner",desc:"拆解任务、制定计划、分配子任务",single:!0},{role:"reviewer",label:"审查者 Reviewer",desc:"审核执行者产出,通过或打回返工",single:!0},{role:"patrol",label:"巡查者 Patrol",desc:"系统巡查、异常检测、维护稳定",single:!0},{role:"executor",label:"执行者 Executor",desc:"实际执行子任务,可创建多个不同专长的执行者",single:!1}],U=L(()=>ft.map(n=>({...n,count:P.value.filter(e=>e.role===n.role).length,done:P.value.some(e=>e.role===n.role)}))),Le=L(()=>U.value.some(n=>!n.done)),mt=L(()=>{const n={};for(const e of P.value){const s=e.role||"未知";n[s]||(n[s]=[]),n[s].push(e)}for(const e of Object.keys(n))n[e]?.sort((s,k)=>{const i=s.created_at||"";return(k.created_at||"").localeCompare(i)});return n}),pt=L(()=>V.value?Z(V.value):""),xt=L(()=>R.value.content?Z(R.value.content):""),E=f({slug:"",name:"",role:"",description:"",content:""}),gt=L(()=>E.value.content?Z(E.value.content):""),G=L(()=>{const n=[];return T.value.trim()&&n.push(T.value.trim()),M.value.trim()&&n.push(M.value.trim()),n.join(` + +--- + +`)}),bt=L(()=>G.value?Z(G.value):""),fe=f(!1);async function te(){$.value=!0;try{const[n,e]=await Promise.all([_.listAgents(),_.listTemplates()]);P.value=n.data,Ze.value=e.data}catch{p("加载失败","error")}finally{$.value=!1}}Pt(()=>{te(),Re()});async function Ve(n){Te.value=!0;try{const e=await _.getTemplate(n);T.value=e.data.content}catch{T.value=""}try{const e=await _.getOnboarding(n);M.value=e.data.content}catch{M.value=""}Te.value=!1}function yt(n){const e=n.target.value;if(e){if(x.value.role&&T.value.trim()){We.value=x.value.role,ie.value=e,x.value.role=We.value,ne.value=!0;return}x.value.role=e,Ve(e)}}function kt(){ne.value=!1,x.value.role=ie.value,Ve(ie.value)}function wt(){ne.value=!1}function Ee(n){x.value={slug:"",name:"",role:n||"",description:""},T.value="",M.value="",w.value="create",n&&Ve(n)}async function ht(){if(!x.value.slug||!x.value.name||!x.value.role||!T.value){p("请填写必填项","error");return}C.value=!0;try{await _.createAgent({slug:x.value.slug,name:x.value.name,role:x.value.role,description:x.value.description,content:G.value}),p("创建成功"),w.value="list",await te()}catch(n){p(n.response?.data?.detail||"创建失败","error")}finally{C.value=!1}}async function Pe(n){try{const{data:e}=await _.getAgent(n);W.value=n,x.value={slug:e.slug,name:e.name,role:e.role,description:e.description};const s=e.content,k=s.indexOf(Qe);if(k>0){let i=k;const at=s.substring(0,k).lastIndexOf("---");at>0&&(i=at),T.value=s.substring(0,i).trim(),M.value=s.substring(k).trim()}else{T.value=s;try{const{data:i}=await _.getOnboarding(e.role);M.value=i.content}catch{M.value=""}}w.value="edit"}catch{p("加载失败","error")}}async function _t(){C.value=!0;try{await _.updateAgent(W.value,{name:x.value.name,role:x.value.role,description:x.value.description,content:G.value}),p("保存成功"),w.value="list",await te()}catch(n){p(n.response?.data?.detail||"保存失败","error")}finally{C.value=!1}}async function Ct(n,e){e.stopPropagation(),Ae.value=n,de.value=!0}async function $t(){de.value=!1;const n=Ae.value;ue.value=n;try{await _.deleteAgent(n),p("已删除"),await te()}catch(e){p(e.response?.data?.detail||"删除失败","error")}finally{ue.value=""}}async function Tt(n){try{const{data:e}=await _.getTemplate(n);R.value={role:e.role,content:e.content,filename:e.filename},B.value=!1,w.value="template"}catch{p("加载模板失败","error")}}async function At(){C.value=!0;try{await _.updateTemplate(R.value.role,R.value.content),p("模板已保存"),B.value=!1,await te()}catch(n){p(n.response?.data?.detail||"保存失败","error")}finally{C.value=!1}}async function jt(n){try{const{data:e}=await _.getAgent(n);E.value={slug:e.slug,name:e.name,role:e.role,description:e.description,content:e.content},w.value="agent-view"}catch{p("加载失败","error")}}const lt=f(""),zt={planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"},Oe=L(()=>{const n=V.value.indexOf(Qe);return n<0?"":V.value.substring(n).trim()});function Mt(n){return`🦞 **OpenClaw 快速对接** — 请按以下步骤完成配置: + +1. 将下方「角色提示词」**完整替换**到你的 **AGENTS.md**(角色:${zt[n]||n}) +2. 根据新的 AGENTS.md 内容,自行更新你的 **SOUL.md**(提炼核心身份和行为准则) +3. 按底部「平台对接」指引完成注册,获取 API Key +4. 按指引下载并保存 Skill 工具包 +5. 完成后**删除**底部「平台对接」部分,只保留角色提示词 + +--- + +`}async function st(n){V.value="",q.value=!1,F.value="rendered";const e=P.value.find(s=>s.slug===n);lt.value=e?.role||"";try{const{data:s}=await _.compose(n);V.value=s.prompt,W.value=n,w.value="preview"}catch(s){p(s.response?.data?.detail||"生成失败","error")}}const le=f(!1);async function Rt(){try{const n=Mt(lt.value)+V.value;await ge(n),le.value=!0,p("🦞 已复制(含对接引导)"),setTimeout(()=>{le.value=!1},2e3)}catch{p("复制失败,请手动选中复制","error")}}async function St(){try{let n=V.value;const e=n.indexOf(Qe);e>0&&(n=n.substring(0,e).trim()),await ge(n),q.value=!0,p("已复制到剪贴板(仅提示词)"),setTimeout(()=>{q.value=!1},2e3)}catch{p("复制失败,请手动选中复制","error")}}const se=f(!1);async function Lt(){if(!Oe.value){p("未找到对接指引内容","error");return}try{await ge(Oe.value),se.value=!0,p("已复制平台对接指引"),setTimeout(()=>{se.value=!1},2e3)}catch{p("复制失败","error")}}async function Vt(){try{await ge(G.value),fe.value=!0,p("已复制到剪贴板"),setTimeout(()=>{fe.value=!1},2e3)}catch{p("复制失败","error")}}function ae(){w.value="list"}return(n,e)=>(o(),u("div",Ft,[a(Q,{name:"toast"},{default:r(()=>[ce.value?(o(),u("div",{key:0,class:b(["fixed top-6 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2.5 rounded-xl px-5 py-3 text-sm font-medium shadow-xl ring-1 ring-black/5 backdrop-blur-md",je.value==="success"?"bg-emerald-50 text-emerald-800 dark:bg-emerald-950/90 dark:text-emerald-200":"bg-red-50 text-red-800 dark:bg-red-950/90 dark:text-red-200"])},[t("span",Gt,c(je.value==="success"?"✅":"❌"),1),d(" "+c(ce.value),1)],2)):y("",!0)]),_:1}),a(Q,{name:"view",mode:"out-in",appear:""},{default:r(()=>[w.value==="list"?(o(),u("div",Kt,[a(l(Dt),{"default-value":"agents",class:"w-full"},{default:r(()=>[a(l(Ht),{class:"w-full justify-start bg-muted/50 p-1 h-auto gap-1"},{default:r(()=>[a(l(He),{value:"agents",class:"text-xs px-4 py-2 data-[state=active]:bg-background data-[state=active]:shadow-sm flex items-center gap-1.5"},{default:r(()=>[a(l(It),{class:"h-3.5 w-3.5"}),e[26]||(e[26]=d(" Agent 对接 ",-1)),t("span",Qt,"("+c(P.value.length)+")",1)]),_:1}),a(l(He),{value:"rules",class:"text-xs px-4 py-2 data-[state=active]:bg-background data-[state=active]:shadow-sm flex items-center gap-1.5"},{default:r(()=>[a(l(Nt),{class:"h-3.5 w-3.5"}),e[27]||(e[27]=d(" 全局规则 ",-1)),t("span",Zt,"("+c(Y.value.length)+")",1)]),_:1}),a(l(He),{value:"templates",class:"text-xs px-4 py-2 data-[state=active]:bg-background data-[state=active]:shadow-sm flex items-center gap-1.5"},{default:r(()=>[a(l(qt),{class:"h-3.5 w-3.5"}),e[28]||(e[28]=d(" 角色模板 ",-1))]),_:1})]),_:1}),a(l(Ue),{value:"agents",class:"mt-5 space-y-5"},{default:r(()=>[t("div",Wt,[t("div",Yt,[e[29]||(e[29]=t("h2",{class:"text-xl font-bold"},"Agent 对接",-1)),!$.value&&Le.value?(o(),u("div",Jt,[t("div",Xt,[t("div",{class:"h-full rounded-full bg-emerald-500 transition-all duration-500",style:rt({width:`${U.value.filter(s=>s.done).length/U.value.length*100}%`})},null,4)]),d(" "+c(U.value.filter(s=>s.done).length)+"/"+c(U.value.length)+" 角色 ",1)])):y("",!0)]),a(l(m),{onClick:e[0]||(e[0]=s=>Ee())},{default:r(()=>[a(l(be),{class:"mr-1.5 h-4 w-4"}),e[30]||(e[30]=d(" 新建提示词 ",-1))]),_:1})]),!$.value&&Le.value?(o(),u("div",el,[e[31]||(e[31]=t("span",{class:"text-muted-foreground text-xs"},"缺少以下角色,点击可快速创建:",-1)),(o(!0),u(D,null,I(U.value.filter(s=>!s.done),s=>(o(),u("button",{key:s.role,class:b(["inline-flex items-center gap-1.5 rounded-full border border-dashed px-3 py-1 text-xs font-medium transition-all duration-200 hover:shadow-sm",{"border-violet-300 text-violet-600 hover:bg-violet-50 dark:hover:bg-violet-950":s.role==="planner","border-sky-300 text-sky-600 hover:bg-sky-50 dark:hover:bg-sky-950":s.role==="executor","border-amber-300 text-amber-600 hover:bg-amber-50 dark:hover:bg-amber-950":s.role==="reviewer","border-teal-300 text-teal-600 hover:bg-teal-50 dark:hover:bg-teal-950":s.role==="patrol"}]),onClick:k=>Ee(s.role)},[s.role==="planner"?(o(),v(l(he),{key:0,class:"h-3 w-3"})):s.role==="executor"?(o(),v(l(ye),{key:1,class:"h-3 w-3"})):s.role==="reviewer"?(o(),v(l(_e),{key:2,class:"h-3 w-3"})):s.role==="patrol"?(o(),v(l(ke),{key:3,class:"h-3 w-3"})):y("",!0),d(" "+c(s.label)+" ",1),a(l(be),{class:"h-3 w-3 opacity-50"})],10,tl))),128)),(o(!0),u(D,null,I(U.value.filter(s=>s.done),s=>(o(),u("span",{key:"done-"+s.role,class:b(["inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 text-xs font-medium",{"bg-violet-500/10 text-violet-600 dark:text-violet-400":s.role==="planner","bg-sky-500/10 text-sky-600 dark:text-sky-400":s.role==="executor","bg-amber-500/10 text-amber-600 dark:text-amber-400":s.role==="reviewer","bg-teal-500/10 text-teal-600 dark:text-teal-400":s.role==="patrol"}])},[a(l(re),{class:"h-3 w-3"}),d(" "+c(s.role==="planner"?"规划者":s.role==="reviewer"?"审查者":s.role==="patrol"?"巡查者":`执行者×${s.count}`),1)],2))),128))])):y("",!0),t("details",{class:"group",open:P.value.length===0||Le.value||void 0},[t("summary",sl,[a(l(ot),{class:"h-3.5 w-3.5 transition-transform group-open:rotate-90"}),e[32]||(e[32]=d(" 使用说明 ",-1))]),a(l(j),{class:"mt-2 bg-muted/30 border-dashed"},{default:r(()=>[a(l(z),{class:"py-3 px-4 text-sm text-muted-foreground leading-relaxed space-y-2.5"},{default:r(()=>[...e[33]||(e[33]=[t("p",null,"管理 Agent 提示词,hover 翻转卡片查看详情和操作按钮。",-1),t("div",{class:"rounded-md bg-primary/5 border border-primary/20 px-3 py-2.5 space-y-1.5"},[t("p",null,[t("strong",{class:"text-foreground"},"OpenClaw 对接")]),t("p",null,[d("1. 点击 🦞 "),t("strong",{class:"text-foreground"},"快速复制"),d(",内容已包含完整对接引导")]),t("p",null,"2. 发送给 Agent,它会自动完成:替换 AGENTS.md → 更新 SOUL.md → 注册 → 下载 Skill"),t("p",null,[d("3. 已有提示词的 Agent,可用「"),t("strong",{class:"text-foreground"},"Agent 入职包"),d("」单独补发注册 + Skill 指引")])],-1),t("p",null,[t("strong",{class:"text-foreground"},"其他平台"),d(" — 使用普通「复制」按钮,自行配置即可。")],-1)])]),_:1})]),_:1})],8,ll),$.value?(o(),u("div",al,[a(l(H),{class:"h-8 w-8 animate-spin text-muted-foreground"})])):P.value.length===0?(o(),v(l(j),{key:2,class:"border-dashed"},{default:r(()=>[a(l(z),{class:"flex flex-col items-center justify-center py-16 text-center"},{default:r(()=>[a(l(nt),{class:"h-14 w-14 text-muted-foreground/40 mb-4"}),e[35]||(e[35]=t("p",{class:"text-lg font-semibold text-muted-foreground"},"还没有 Agent 提示词",-1)),e[36]||(e[36]=t("p",{class:"text-sm text-muted-foreground mt-1.5 max-w-sm"}," 创建提示词后,可以复制并发送给 Agent 完成对接 ",-1)),a(l(m),{class:"mt-5",onClick:e[1]||(e[1]=s=>Ee())},{default:r(()=>[a(l(be),{class:"mr-1.5 h-4 w-4"}),e[34]||(e[34]=d(" 创建第一个 ",-1))]),_:1})]),_:1})]),_:1})):(o(),u("div",rl,[(o(!0),u(D,null,I(mt.value,(s,k)=>(o(),u("div",{key:k,class:"space-y-4"},[t("h3",ol,[t("span",{class:b(["inline-block w-2 h-2 rounded-full",{"bg-violet-500":k==="planner","bg-sky-500":k==="executor","bg-amber-500":k==="reviewer","bg-teal-500":k==="patrol","bg-muted-foreground":!["planner","executor","reviewer","patrol"].includes(String(k))}])},null,2),d(" "+c(O(String(k)))+" ",1),t("span",nl,"("+c(s.length)+")",1)]),t("div",il,[(o(!0),u(D,null,I(s,i=>(o(),u("div",{key:i.slug,class:"flip-card",style:{perspective:"1200px"}},[t("div",{class:"flip-card-inner relative w-full",style:rt([{"transform-style":"preserve-3d"},{minHeight:"200px"}])},[t("div",dl,[t("div",{class:b(["h-1.5",{"bg-gradient-to-r from-violet-400 to-indigo-500":i.role==="planner","bg-gradient-to-r from-sky-400 to-blue-500":i.role==="executor","bg-gradient-to-r from-amber-400 to-orange-500":i.role==="reviewer","bg-gradient-to-r from-teal-400 to-emerald-500":i.role==="patrol","bg-gradient-to-r from-gray-400 to-gray-500":!["planner","executor","reviewer","patrol"].includes(i.role)}])},null,2),t("div",ul,[t("div",null,[t("div",cl,[t("div",{class:b(["h-11 w-11 rounded-xl flex items-center justify-center shadow-sm",{"bg-gradient-to-br from-violet-50 to-indigo-100 dark:from-violet-950 dark:to-indigo-900":i.role==="planner","bg-gradient-to-br from-sky-50 to-blue-100 dark:from-sky-950 dark:to-blue-900":i.role==="executor","bg-gradient-to-br from-amber-50 to-orange-100 dark:from-amber-950 dark:to-orange-900":i.role==="reviewer","bg-gradient-to-br from-teal-50 to-emerald-100 dark:from-teal-950 dark:to-emerald-900":i.role==="patrol","bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800":!["planner","executor","reviewer","patrol"].includes(i.role)}])},[i.role==="planner"?(o(),v(l(he),{key:0,class:"h-5 w-5 text-violet-600 dark:text-violet-400"})):i.role==="executor"?(o(),v(l(ye),{key:1,class:"h-5 w-5 text-sky-600 dark:text-sky-400"})):i.role==="reviewer"?(o(),v(l(_e),{key:2,class:"h-5 w-5 text-amber-600 dark:text-amber-400"})):i.role==="patrol"?(o(),v(l(ke),{key:3,class:"h-5 w-5 text-teal-600 dark:text-teal-400"})):(o(),v(l(Ke),{key:4,class:"h-5 w-5 text-gray-600 dark:text-gray-400"}))],2),t("div",vl,[i.example?(o(),u("span",fl," 示例 ")):y("",!0),i.status==="unconfigured"?(o(),u("span",ml," 未配置 ")):y("",!0)])]),t("h4",pl,c(i.name||i.slug),1),t("p",xl,c(i.description||i.filename),1)]),t("div",gl,[t("span",{class:b(["text-xs px-2.5 py-1 rounded-full font-medium",{"bg-violet-500/10 text-violet-600 dark:text-violet-400":i.role==="planner","bg-sky-500/10 text-sky-600 dark:text-sky-400":i.role==="executor","bg-amber-500/10 text-amber-600 dark:text-amber-400":i.role==="reviewer","bg-teal-500/10 text-teal-600 dark:text-teal-400":i.role==="patrol"}])},c(O(i.role)),3),e[37]||(e[37]=t("span",{class:"text-[10px] text-muted-foreground/40 italic"},"hover →",-1))])])]),t("div",bl,[t("div",{class:b(["h-1.5",{"bg-gradient-to-r from-violet-400 to-indigo-500":i.role==="planner","bg-gradient-to-r from-sky-400 to-blue-500":i.role==="executor","bg-gradient-to-r from-amber-400 to-orange-500":i.role==="reviewer","bg-gradient-to-r from-teal-400 to-emerald-500":i.role==="patrol","bg-gradient-to-r from-gray-400 to-gray-500":!["planner","executor","reviewer","patrol"].includes(i.role)}])},null,2),t("div",yl,[t("div",kl,[t("div",wl,[t("h4",hl,c(i.name||i.slug),1),t("span",{class:b(["text-[10px] px-1.5 py-0.5 rounded-full font-medium",{"bg-violet-500/10 text-violet-600":i.role==="planner","bg-sky-500/10 text-sky-600":i.role==="executor","bg-amber-500/10 text-amber-600":i.role==="reviewer","bg-teal-500/10 text-teal-600":i.role==="patrol"}])},c(O(i.role)),3)]),t("p",_l,c(i.description||"暂无描述"),1),t("p",Cl,c(i.filename),1)]),t("div",$l,[a(l(m),{size:"sm",class:"flex-1 h-7 text-xs bg-gradient-to-r from-orange-500 to-red-500 hover:from-orange-600 hover:to-red-600 text-white border-0 shadow-sm",onClick:me(K=>st(i.slug),["stop"])},{default:r(()=>[...e[38]||(e[38]=[t("span",{class:"mr-1"},"🦞",-1),d(" 快速复制 ",-1)])]),_:1},8,["onClick"]),a(l(m),{variant:"outline",size:"icon",class:"h-7 w-7",title:"查看",onClick:me(K=>jt(i.slug),["stop"])},{default:r(()=>[a(l(Fe),{class:"h-3 w-3"})]),_:1},8,["onClick"]),a(l(m),{variant:"outline",size:"icon",class:"h-7 w-7",title:"编辑",onClick:me(K=>Pe(i.slug),["stop"])},{default:r(()=>[a(l(oe),{class:"h-3 w-3"})]),_:1},8,["onClick"]),a(l(m),{variant:"ghost",size:"icon",class:"h-7 w-7",title:"删除",disabled:ue.value===i.slug,onClick:me(K=>Ct(i.slug,K),["stop"])},{default:r(()=>[ue.value===i.slug?(o(),v(l(H),{key:0,class:"h-3 w-3 animate-spin"})):(o(),v(l(Ie),{key:1,class:"h-3 w-3 text-destructive/70"}))]),_:2},1032,["disabled","onClick"])])])])])]))),128))])]))),128))]))]),_:1}),a(l(Ue),{value:"rules",class:"mt-4 space-y-4"},{default:r(()=>[ze.value?(o(),u("div",Tl,[a(l(H),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):(o(),u(D,{key:1},[Y.value.length===0?(o(),v(l(j),{key:0,class:"border-dashed"},{default:r(()=>[a(l(z),{class:"flex flex-col items-center justify-center py-12 text-center"},{default:r(()=>[a(l(nt),{class:"h-12 w-12 text-muted-foreground/50 mb-4"}),e[40]||(e[40]=t("p",{class:"text-lg font-medium text-muted-foreground"},"暂无全局规则",-1)),e[41]||(e[41]=t("p",{class:"text-sm text-muted-foreground mt-1"}," Agent 每次执行任务时会通过 API 获取全局规则,用于约束行为规范 ",-1)),a(l(m),{class:"mt-4",variant:"outline",onClick:e[2]||(e[2]=s=>Xe())},{default:r(()=>[a(l(be),{class:"mr-1.5 h-4 w-4"}),e[39]||(e[39]=d(" 创建全局规则 ",-1))]),_:1})]),_:1})]),_:1})):y("",!0),Y.value.length>0?(o(!0),u(D,{key:1},I(Y.value,s=>(o(),v(l(j),{key:s.id,class:"transition-all duration-200 hover:shadow-sm"},{default:r(()=>[a(l(z),{class:"p-4"},{default:r(()=>[t("div",Al,[t("div",{class:"flex-1 min-w-0 prose prose-sm dark:prose-invert max-w-none",innerHTML:l(Z)(s.content)},null,8,jl),t("div",zl,[a(l(m),{variant:"ghost",size:"icon",class:"h-7 w-7",title:"编辑",onClick:k=>Xe(s)},{default:r(()=>[a(l(oe),{class:"h-3.5 w-3.5"})]),_:1},8,["onClick"]),a(l(m),{variant:"ghost",size:"icon",class:"h-7 w-7",title:"删除",disabled:ve.value===s.id,onClick:k=>ct(s.id)},{default:r(()=>[ve.value===s.id?(o(),v(l(H),{key:0,class:"h-3.5 w-3.5 animate-spin"})):(o(),v(l(Ie),{key:1,class:"h-3.5 w-3.5 text-destructive/70"}))]),_:2},1032,["disabled","onClick"])])]),s.updated_at?(o(),u("p",Ml," 更新于 "+c(s.updated_at),1)):y("",!0)]),_:2},1024)]),_:2},1024))),128)):y("",!0)],64))]),_:1}),a(l(Ue),{value:"templates",class:"mt-5 space-y-5"},{default:r(()=>[e[42]||(e[42]=t("div",{class:"flex items-center justify-between"},[t("div",null,[t("h2",{class:"text-xl font-bold"},"角色模板"),t("p",{class:"text-sm text-muted-foreground mt-0.5"}," 定义每种角色的通用行为规范,新建提示词时自动填入 ")])],-1)),t("div",Rl,[(o(!0),u(D,null,I(Ze.value,s=>(o(),u("div",{key:s.role,class:"group cursor-pointer rounded-xl border bg-card overflow-hidden transition-all duration-300 hover:shadow-lg hover:-translate-y-0.5",onClick:k=>Tt(s.role)},[t("div",{class:b(["h-1.5",{"bg-gradient-to-r from-violet-400 to-indigo-500":s.role==="planner","bg-gradient-to-r from-sky-400 to-blue-500":s.role==="executor","bg-gradient-to-r from-amber-400 to-orange-500":s.role==="reviewer","bg-gradient-to-r from-teal-400 to-emerald-500":s.role==="patrol","bg-gradient-to-r from-gray-400 to-gray-500":!["planner","executor","reviewer","patrol"].includes(s.role)}])},null,2),t("div",Ll,[t("div",{class:b(["h-12 w-12 rounded-xl flex items-center justify-center shadow-sm flex-shrink-0",{"bg-gradient-to-br from-violet-50 to-indigo-100 dark:from-violet-950 dark:to-indigo-900":s.role==="planner","bg-gradient-to-br from-sky-50 to-blue-100 dark:from-sky-950 dark:to-blue-900":s.role==="executor","bg-gradient-to-br from-amber-50 to-orange-100 dark:from-amber-950 dark:to-orange-900":s.role==="reviewer","bg-gradient-to-br from-teal-50 to-emerald-100 dark:from-teal-950 dark:to-emerald-900":s.role==="patrol","bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800":!["planner","executor","reviewer","patrol"].includes(s.role)}])},[s.role==="planner"?(o(),v(l(he),{key:0,class:"h-6 w-6 text-violet-600 dark:text-violet-400"})):s.role==="executor"?(o(),v(l(ye),{key:1,class:"h-6 w-6 text-sky-600 dark:text-sky-400"})):s.role==="reviewer"?(o(),v(l(_e),{key:2,class:"h-6 w-6 text-amber-600 dark:text-amber-400"})):s.role==="patrol"?(o(),v(l(ke),{key:3,class:"h-6 w-6 text-teal-600 dark:text-teal-400"})):(o(),v(l(Ke),{key:4,class:"h-6 w-6 text-gray-600 dark:text-gray-400"}))],2),t("div",Vl,[t("div",El,[t("p",Pl,c(O(s.role)||s.role),1),t("span",{class:b(["text-[10px] px-1.5 py-0.5 rounded-full font-medium",{"bg-violet-500/10 text-violet-600":s.role==="planner","bg-sky-500/10 text-sky-600":s.role==="executor","bg-amber-500/10 text-amber-600":s.role==="reviewer","bg-teal-500/10 text-teal-600":s.role==="patrol"}])},c(s.filename),3)]),t("p",Ol,c(tt[s.role]||"通用角色模板"),1)]),a(l(ot),{class:"h-4 w-4 text-muted-foreground/30 group-hover:text-muted-foreground transition-colors flex-shrink-0 mt-1"})])],8,Sl))),128))])]),_:1})]),_:1})])):w.value==="template"?(o(),u("div",Dl,[t("div",Hl,[a(l(m),{variant:"ghost",size:"icon",onClick:ae},{default:r(()=>[a(l(we),{class:"h-5 w-5"})]),_:1}),t("div",Ul,[t("h1",Il,c(O(R.value.role)),1),t("p",Nl,c(tt[R.value.role]||R.value.filename),1)]),B.value?(o(),u("div",Bl,[a(l(m),{variant:"outline",onClick:e[4]||(e[4]=s=>B.value=!1)},{default:r(()=>[...e[44]||(e[44]=[d("取消",-1)])]),_:1}),a(l(m),{onClick:At,disabled:C.value},{default:r(()=>[C.value?(o(),v(l(H),{key:0,class:"mr-1.5 h-4 w-4 animate-spin"})):y("",!0),d(" "+c(C.value?"保存中...":"保存"),1)]),_:1},8,["disabled"])])):(o(),v(l(m),{key:0,variant:"outline",onClick:e[3]||(e[3]=s=>B.value=!0)},{default:r(()=>[a(l(oe),{class:"mr-1.5 h-4 w-4"}),e[43]||(e[43]=d(" 编辑 ",-1))]),_:1}))]),a(l(j),null,{default:r(()=>[a(l(z),{class:"p-0"},{default:r(()=>[B.value?pe((o(),u("textarea",{key:0,"onUpdate:modelValue":e[5]||(e[5]=s=>R.value.content=s),class:"w-full min-h-[500px] p-6 text-sm font-mono bg-background border-0 rounded-lg resize-y focus:outline-none focus:ring-0"},null,512)),[[xe,R.value.content]]):(o(),u("div",{key:1,class:"p-6 prose prose-sm dark:prose-invert max-w-none",innerHTML:xt.value},null,8,ql))]),_:1})]),_:1})])):w.value==="agent-view"?(o(),u("div",Fl,[t("div",Gl,[a(l(m),{variant:"ghost",size:"icon",onClick:ae},{default:r(()=>[a(l(we),{class:"h-5 w-5"})]),_:1}),t("div",Kl,[t("h1",Ql,c(E.value.name||E.value.slug),1),t("p",Zl,c(O(E.value.role))+" · "+c(E.value.description),1)]),a(l(m),{variant:"outline",onClick:e[6]||(e[6]=s=>st(E.value.slug))},{default:r(()=>[...e[45]||(e[45]=[t("span",{class:"mr-1.5"},"🦞",-1),d(" OpenClaw 快速复制 ",-1)])]),_:1}),a(l(m),{variant:"outline",onClick:e[7]||(e[7]=s=>Pe(E.value.slug))},{default:r(()=>[a(l(oe),{class:"mr-1.5 h-4 w-4"}),e[46]||(e[46]=d(" 编辑 ",-1))]),_:1})]),a(l(j),null,{default:r(()=>[a(l(z),{class:"p-0"},{default:r(()=>[t("div",{class:"p-6 prose prose-sm dark:prose-invert max-w-none max-h-[70vh] overflow-y-auto",innerHTML:gt.value},null,8,Wl)]),_:1})]),_:1})])):w.value==="create"||w.value==="edit"?(o(),u("div",{key:w.value},[t("div",Yl,[a(l(m),{variant:"ghost",size:"icon",onClick:ae},{default:r(()=>[a(l(we),{class:"h-5 w-5"})]),_:1}),t("h1",Jl,c(w.value==="create"?"新建提示词":"编辑提示词"),1),a(l(m),{variant:"outline",onClick:ae},{default:r(()=>[...e[47]||(e[47]=[d("取消",-1)])]),_:1}),a(l(m),{onClick:e[8]||(e[8]=s=>w.value==="create"?ht():_t()),disabled:C.value},{default:r(()=>[C.value?(o(),v(l(H),{key:0,class:"mr-1.5 h-4 w-4 animate-spin"})):y("",!0),d(" "+c(C.value?"保存中...":"保存"),1)]),_:1},8,["disabled"])]),t("div",Xl,[a(l(N),{class:"text-xs"},{default:r(()=>[...e[48]||(e[48]=[d("角色模板 *",-1)])]),_:1}),t("div",es,[(o(),u(D,null,I(et,s=>t("button",{key:s.value,type:"button",class:b(["flex items-center gap-2 rounded-lg border px-3 py-2.5 text-xs font-medium transition-all duration-200",x.value.role===s.value?{"border-blue-400 bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300 dark:border-blue-600 shadow-sm":s.value==="planner","border-amber-400 bg-amber-50 text-amber-700 dark:bg-amber-950 dark:text-amber-300 dark:border-amber-600 shadow-sm":s.value==="executor","border-purple-400 bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300 dark:border-purple-600 shadow-sm":s.value==="reviewer","border-emerald-400 bg-emerald-50 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-300 dark:border-emerald-600 shadow-sm":s.value==="patrol"}:"border-border hover:bg-muted/50 text-muted-foreground hover:text-foreground"]),onClick:k=>yt({target:{value:s.value}})},[t("div",{class:b(["h-7 w-7 rounded-md flex items-center justify-center flex-shrink-0",x.value.role===s.value?{"bg-blue-100 dark:bg-blue-900":s.value==="planner","bg-amber-100 dark:bg-amber-900":s.value==="executor","bg-purple-100 dark:bg-purple-900":s.value==="reviewer","bg-emerald-100 dark:bg-emerald-900":s.value==="patrol"}:"bg-muted/50"])},[s.value==="planner"?(o(),v(l(he),{key:0,class:"h-3.5 w-3.5"})):s.value==="executor"?(o(),v(l(ye),{key:1,class:"h-3.5 w-3.5"})):s.value==="reviewer"?(o(),v(l(_e),{key:2,class:"h-3.5 w-3.5"})):s.value==="patrol"?(o(),v(l(ke),{key:3,class:"h-3.5 w-3.5"})):(o(),v(l(Ke),{key:4,class:"h-3.5 w-3.5"}))],2),d(" "+c(s.label),1)],10,ts)),64))])]),t("div",ls,[t("div",ss,[a(l(N),{for:"p-name",class:"text-xs"},{default:r(()=>[...e[49]||(e[49]=[d("显示名称 *",-1)])]),_:1}),a(l(De),{id:"p-name",modelValue:x.value.name,"onUpdate:modelValue":e[9]||(e[9]=s=>x.value.name=s),placeholder:"示例:AI酱瓜",class:"h-9"},null,8,["modelValue"])]),t("div",as,[a(l(N),{for:"p-slug",class:"text-xs"},{default:r(()=>[...e[50]||(e[50]=[d("标识名(文件名) *",-1)])]),_:1}),a(l(De),{id:"p-slug",modelValue:x.value.slug,"onUpdate:modelValue":e[10]||(e[10]=s=>x.value.slug=s),placeholder:"示例:jianggua",disabled:w.value==="edit",class:"h-9"},null,8,["modelValue","disabled"])]),t("div",rs,[a(l(N),{for:"p-desc",class:"text-xs"},{default:r(()=>[...e[51]||(e[51]=[d("简介",-1)])]),_:1}),a(l(De),{id:"p-desc",modelValue:x.value.description,"onUpdate:modelValue":e[11]||(e[11]=s=>x.value.description=s),placeholder:"示例:新媒体写手",class:"h-9"},null,8,["modelValue"])])]),Te.value?(o(),u("div",os,[a(l(H),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):(o(),u("div",ns,[t("div",is,[t("div",ds,[a(l(N),{class:"text-xs text-muted-foreground flex-shrink-0"},{default:r(()=>[e[52]||(e[52]=d(" 📝 提示词内容 ",-1)),x.value.role?(o(),u("span",us," (已基于「"+c(O(x.value.role))+"」模板) ",1)):y("",!0)]),_:1}),pe(t("textarea",{"onUpdate:modelValue":e[12]||(e[12]=s=>T.value=s),class:"flex-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none min-h-0",placeholder:"选择角色后将自动填入模板内容,你可以在此基础上修改..."},null,512),[[xe,T.value]])]),t("div",cs,[a(l(N),{class:"text-xs text-muted-foreground flex-shrink-0"},{default:r(()=>[...e[53]||(e[53]=[d("🔧 平台对接指引(自动生成,可修改)",-1)])]),_:1}),pe(t("textarea",{"onUpdate:modelValue":e[13]||(e[13]=s=>M.value=s),class:"flex-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none min-h-0",placeholder:"选择角色后将自动生成对接指引..."},null,512),[[xe,M.value]])])]),t("div",vs,[t("div",fs,[a(l(N),{class:"text-xs text-muted-foreground"},{default:r(()=>[...e[54]||(e[54]=[d("👁 完整提示词预览",-1)])]),_:1}),a(l(m),{size:"sm",variant:"ghost",class:"h-7 text-xs",onClick:Vt},{default:r(()=>[fe.value?(o(),v(l(re),{key:0,class:"mr-1 h-3 w-3"})):(o(),v(l(Ge),{key:1,class:"mr-1 h-3 w-3"})),d(" "+c(fe.value?"已复制":"复制"),1)]),_:1})]),a(l(j),{class:"flex-1 overflow-hidden min-h-0"},{default:r(()=>[a(l(z),{class:"p-0 h-full"},{default:r(()=>[G.value?(o(),u("div",{key:0,class:"p-4 prose prose-sm dark:prose-invert max-w-none h-full overflow-y-auto",innerHTML:bt.value},null,8,ms)):(o(),u("div",ps," 选择角色后将在此显示预览 "))]),_:1})]),_:1})])])),a(Q,{name:"view"},{default:r(()=>[ne.value?(o(),u("div",xs,[a(l(j),{class:"w-full max-w-sm shadow-xl"},{default:r(()=>[a(l(z),{class:"p-6 space-y-4"},{default:r(()=>[t("div",null,[e[55]||(e[55]=t("h3",{class:"text-lg font-semibold"},"切换角色模板",-1)),t("p",gs," 切换将用「"+c(O(ie.value))+"」的模板覆盖当前已编辑的内容,无法撤销。 ",1)]),t("div",bs,[a(l(m),{variant:"outline",onClick:wt},{default:r(()=>[...e[56]||(e[56]=[d("取消",-1)])]),_:1}),a(l(m),{variant:"destructive",onClick:kt},{default:r(()=>[...e[57]||(e[57]=[d("确定切换",-1)])]),_:1})])]),_:1})]),_:1})])):y("",!0)]),_:1})])):w.value==="preview"?(o(),u("div",ys,[t("div",ks,[a(l(m),{variant:"ghost",size:"icon",onClick:ae},{default:r(()=>[a(l(we),{class:"h-5 w-5"})]),_:1}),t("div",ws,[e[58]||(e[58]=t("h1",{class:"text-2xl font-bold"},"完整提示词预览",-1)),t("p",hs,c(W.value)+" · 角色模板 + 专属内容 + 平台对接指引 ",1)]),a(l(m),{variant:"outline",size:"sm",onClick:e[14]||(e[14]=s=>Pe(W.value))},{default:r(()=>[a(l(oe),{class:"mr-1.5 h-3.5 w-3.5"}),e[59]||(e[59]=d(" 编辑 ",-1))]),_:1})]),t("div",_s,[a(l(Ut),{"delay-duration":200},{default:r(()=>[t("div",Cs,[a(l(Ne),null,{default:r(()=>[a(l(Be),{"as-child":""},{default:r(()=>[a(l(m),{onClick:Rt,class:b([le.value?"bg-emerald-500 hover:bg-emerald-600 text-white border-emerald-500":"bg-gradient-to-r from-orange-500 to-red-500 hover:from-orange-600 hover:to-red-600 text-white border-0 shadow-md shadow-orange-500/20","transition-all duration-300"])},{default:r(()=>[le.value?(o(),v(l(re),{key:0,class:"mr-1.5 h-4 w-4"})):(o(),u("span",$s,"🦞")),d(" "+c(le.value?"已复制 ✓":"OpenClaw 快速复制"),1)]),_:1},8,["class"])]),_:1}),a(l(qe),{side:"bottom"},{default:r(()=>[...e[60]||(e[60]=[t("p",null,"含完整对接引导,发给 Agent 后自动完成:",-1),t("p",null,"更新提示词 → 注册 → 下载 Skill",-1)])]),_:1})]),_:1}),e[63]||(e[63]=t("div",{class:"w-px h-6 bg-border"},null,-1)),a(l(Ne),null,{default:r(()=>[a(l(Be),{"as-child":""},{default:r(()=>[a(l(m),{variant:"outline",size:"sm",onClick:St,class:b(q.value?"border-emerald-500 text-emerald-600":"")},{default:r(()=>[q.value?(o(),v(l(re),{key:0,class:"mr-1 h-3.5 w-3.5"})):(o(),v(l(Ge),{key:1,class:"mr-1 h-3.5 w-3.5"})),d(" "+c(q.value?"已复制":"复制"),1)]),_:1},8,["class"])]),_:1}),a(l(qe),{side:"bottom"},{default:r(()=>[...e[61]||(e[61]=[d(" 仅复制提示词内容,不含对接引导 ",-1)])]),_:1})]),_:1}),Oe.value?(o(),v(l(Ne),{key:0},{default:r(()=>[a(l(Be),{"as-child":""},{default:r(()=>[a(l(m),{variant:"outline",size:"sm",onClick:Lt,class:b(se.value?"border-emerald-500 text-emerald-600":"")},{default:r(()=>[se.value?(o(),v(l(re),{key:0,class:"mr-1 h-3.5 w-3.5"})):(o(),v(l(it),{key:1,class:"mr-1 h-3.5 w-3.5"})),d(" "+c(se.value?"已复制":"Agent 入职包"),1)]),_:1},8,["class"])]),_:1}),a(l(qe),{side:"bottom"},{default:r(()=>[...e[62]||(e[62]=[d(" 仅复制注册 + Skill 下载指引,发给已有提示词的 Agent 完成对接 ",-1)])]),_:1})]),_:1})):y("",!0)])]),_:1}),t("div",Ts,[t("button",{class:b(["px-3 py-1.5 text-xs flex items-center gap-1.5 transition-colors",F.value==="rendered"?"bg-primary text-primary-foreground":"hover:bg-muted"]),onClick:e[15]||(e[15]=s=>F.value="rendered")},[a(l(Fe),{class:"h-3.5 w-3.5"}),e[64]||(e[64]=d(" 预览 ",-1))],2),t("button",{class:b(["px-3 py-1.5 text-xs flex items-center gap-1.5 transition-colors",F.value==="source"?"bg-primary text-primary-foreground":"hover:bg-muted"]),onClick:e[16]||(e[16]=s=>F.value="source")},[a(l(dt),{class:"h-3.5 w-3.5"}),e[65]||(e[65]=d(" 源码 ",-1))],2)])]),a(l(j),null,{default:r(()=>[a(l(z),{class:"p-0"},{default:r(()=>[F.value==="rendered"?(o(),u("div",{key:0,class:"p-6 prose prose-sm dark:prose-invert max-w-none max-h-[70vh] overflow-y-auto",innerHTML:pt.value},null,8,As)):(o(),u("pre",js,c(V.value),1))]),_:1})]),_:1}),t("div",zs,[e[68]||(e[68]=t("div",{class:"flex items-start gap-2 rounded-lg border border-orange-500/20 bg-orange-500/5 px-3 py-2.5"},[t("span",{class:"text-base leading-none mt-0.5"},"🦞"),t("div",null,[t("p",{class:"text-xs font-medium text-foreground"},"快速复制"),t("p",{class:"text-xs text-muted-foreground mt-0.5"},"含对接引导,发给 Agent 一键完成配置")])],-1)),t("div",Ms,[a(l(Ge),{class:"h-3.5 w-3.5 text-muted-foreground mt-0.5 flex-shrink-0"}),e[66]||(e[66]=t("div",null,[t("p",{class:"text-xs font-medium text-foreground"},"普通复制"),t("p",{class:"text-xs text-muted-foreground mt-0.5"},"仅提示词,适合手动配置或其他平台")],-1))]),t("div",Rs,[a(l(it),{class:"h-3.5 w-3.5 text-muted-foreground mt-0.5 flex-shrink-0"}),e[67]||(e[67]=t("div",null,[t("p",{class:"text-xs font-medium text-foreground"},"Agent 入职包"),t("p",{class:"text-xs text-muted-foreground mt-0.5"},"发给 Agent 完成注册 + 下载 Skill 工具")],-1))])])])):y("",!0)]),_:1}),a(Q,{name:"view"},{default:r(()=>[de.value?(o(),u("div",Ss,[a(l(j),{class:"w-full max-w-sm shadow-xl"},{default:r(()=>[a(l(z),{class:"p-6 space-y-4"},{default:r(()=>[t("div",null,[e[69]||(e[69]=t("h3",{class:"text-lg font-semibold"},"确认删除",-1)),t("p",Ls," 确定要删除提示词「"+c(Ae.value)+"」吗?此操作不可撤销。 ",1)]),t("div",Vs,[a(l(m),{variant:"outline",onClick:e[17]||(e[17]=s=>de.value=!1)},{default:r(()=>[...e[70]||(e[70]=[d("取消",-1)])]),_:1}),a(l(m),{variant:"destructive",onClick:$t},{default:r(()=>[...e[71]||(e[71]=[d("确定删除",-1)])]),_:1})])]),_:1})]),_:1})])):y("",!0)]),_:1}),(o(),v(Ot,{to:"body"},[a(Q,{name:"view"},{default:r(()=>[Me.value?(o(),u("div",Es,[t("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:e[18]||(e[18]=s=>Se())}),t("div",Ps,[t("div",Os,[t("div",null,[t("h3",Ds,c(X.value?"编辑全局规则":"新建全局规则"),1),e[72]||(e[72]=t("p",{class:"text-xs text-muted-foreground mt-0.5"},"支持 Markdown 格式",-1))]),t("div",Hs,[t("button",{class:b(["px-3 py-1.5 text-xs flex items-center gap-1.5 transition-colors",A.value==="edit"?"bg-primary text-primary-foreground":"hover:bg-muted"]),onClick:e[19]||(e[19]=s=>A.value="edit")},[a(l(dt),{class:"h-3.5 w-3.5"}),e[73]||(e[73]=d(" 编辑 ",-1))],2),t("button",{class:b(["px-3 py-1.5 text-xs flex items-center gap-1.5 transition-colors",A.value==="split"?"bg-primary text-primary-foreground":"hover:bg-muted"]),onClick:e[20]||(e[20]=s=>A.value="split")}," 分栏 ",2),t("button",{class:b(["px-3 py-1.5 text-xs flex items-center gap-1.5 transition-colors",A.value==="preview"?"bg-primary text-primary-foreground":"hover:bg-muted"]),onClick:e[21]||(e[21]=s=>A.value="preview")},[a(l(Fe),{class:"h-3.5 w-3.5"}),e[74]||(e[74]=d(" 预览 ",-1))],2)])]),t("div",Us,[A.value!=="preview"?(o(),u("div",{key:0,class:b([A.value==="split"?"w-1/2 border-r":"w-full","h-full"])},[pe(t("textarea",{"onUpdate:modelValue":e[22]||(e[22]=s=>S.value=s),class:"w-full h-full px-4 py-3 text-sm font-mono bg-background border-0 resize-none focus:outline-none focus:ring-0",placeholder:"输入规则内容,支持 Markdown 格式..."},null,512),[[xe,S.value]])],2)):y("",!0),A.value!=="edit"?(o(),u("div",{key:1,class:b([A.value==="split"?"w-1/2":"w-full","h-full overflow-y-auto"])},[Ye.value?(o(),u("div",{key:0,class:"p-4 prose prose-sm dark:prose-invert max-w-none",innerHTML:Ye.value},null,8,Is)):(o(),u("div",Ns," 输入内容后在此显示预览 "))],2)):y("",!0)]),t("div",Bs,[a(l(m),{variant:"outline",onClick:e[23]||(e[23]=s=>Se())},{default:r(()=>[...e[75]||(e[75]=[d("取消",-1)])]),_:1}),a(l(m),{disabled:J.value||!S.value.trim(),onClick:ut},{default:r(()=>[J.value?(o(),v(l(H),{key:0,class:"mr-1.5 h-4 w-4 animate-spin"})):y("",!0),d(" "+c(J.value?"保存中...":"保存"),1)]),_:1},8,["disabled"])])])])):y("",!0)]),_:1})])),a(Q,{name:"toast"},{default:r(()=>[ee.value?(o(),u("div",qs,[t("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:e[24]||(e[24]=s=>ee.value=!1)}),a(l(j),{class:"relative z-10 w-full max-w-sm shadow-2xl"},{default:r(()=>[a(l(z),{class:"p-6 text-center space-y-4"},{default:r(()=>[t("div",Fs,[a(l(Ie),{class:"h-5 w-5"})]),e[78]||(e[78]=t("div",null,[t("p",{class:"font-semibold text-foreground"},"确定删除此规则?"),t("p",{class:"text-sm text-muted-foreground mt-1"},"删除后不可恢复")],-1)),t("div",Gs,[a(l(m),{variant:"outline",onClick:e[25]||(e[25]=s=>ee.value=!1)},{default:r(()=>[...e[76]||(e[76]=[d("取消",-1)])]),_:1}),a(l(m),{variant:"destructive",onClick:vt},{default:r(()=>[...e[77]||(e[77]=[d("确认删除",-1)])]),_:1})])]),_:1})]),_:1})])):y("",!0)]),_:1})]))}}),Ca=Bt(Ks,[["__scopeId","data-v-faeba1cd"]]);export{Ca as default}; diff --git a/cloudflare/pages/assets/PromptsView-Dyz04uBH.css b/cloudflare/pages/assets/PromptsView-Dyz04uBH.css new file mode 100644 index 0000000..c059881 --- /dev/null +++ b/cloudflare/pages/assets/PromptsView-Dyz04uBH.css @@ -0,0 +1 @@ +.view-enter-active[data-v-faeba1cd]{transition:all .25s ease-out}.view-leave-active[data-v-faeba1cd]{transition:all .15s ease-in}.view-enter-from[data-v-faeba1cd]{opacity:0;transform:translateY(12px)}.view-leave-to[data-v-faeba1cd]{opacity:0;transform:translateY(-8px)}.toast-enter-active[data-v-faeba1cd]{transition:all .3s ease-out}.toast-leave-active[data-v-faeba1cd]{transition:all .2s ease-in}.toast-enter-from[data-v-faeba1cd]{opacity:0;transform:translateY(-12px) scale(.95)}.toast-leave-to[data-v-faeba1cd]{opacity:0;transform:translateY(-8px) scale(.95)}.flip-card:hover .flip-card-inner[data-v-faeba1cd]{transform:rotateY(180deg)}.flip-card-inner[data-v-faeba1cd]{transition:transform .6s cubic-bezier(.4,0,.2,1)}.flip-card-front[data-v-faeba1cd],.flip-card-back[data-v-faeba1cd]{box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;transition:box-shadow .3s ease}.flip-card:hover .flip-card-front[data-v-faeba1cd],.flip-card:hover .flip-card-back[data-v-faeba1cd]{box-shadow:0 10px 25px #00000014,0 4px 10px #0000000a}.line-clamp-4[data-v-faeba1cd]{display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;overflow:hidden} diff --git a/cloudflare/pages/assets/ReviewsView-BIzvWmnq.js b/cloudflare/pages/assets/ReviewsView-BIzvWmnq.js new file mode 100644 index 0000000..bd0fdea --- /dev/null +++ b/cloudflare/pages/assets/ReviewsView-BIzvWmnq.js @@ -0,0 +1 @@ +import{m as te,p as L,d as se,H as ae,o as oe,b as k,w as f,u as a,r as m,l as d,a as e,e as i,f as _,t as l,n as T,c as n,g as B,F as j,L as q,D as le,U as P,i as p}from"./index-BYiXDk_r.js";import{_ as V,A as re,a as de}from"./index-wmMfISvJ.js";import{_ as y}from"./index-D0L1R3xN.js";import{_ as ie}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{_ as M}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{_ as ne}from"./TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js";import{S as ue}from"./search-3_RVfAHZ.js";import{R as ce}from"./refresh-cw-DOzI5zLk.js";import{C as U}from"./circle-alert-DI3FQNzC.js";import{C as G}from"./clipboard-check-B8B0idlM.js";import{u as me}from"./index-Ct5H-N73.js";import{_ as ve}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-CEPd9Ray.js";import"./TooltipProvider-Ck2YUJut.js";import"./createContext-a9Tpfoxo.js";import"./useForwardExpose-DjCgLuye.js";const H=te("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]),K={list:w=>L.get("/admin/review-records",{params:w}),get:w=>L.get(`/admin/review-records/${w}`)},fe={class:"flex flex-col h-[calc(100vh-3.5rem)]"},pe={class:"shrink-0 border-b border-border/40 bg-background px-4 py-3 space-y-2.5"},xe={class:"flex items-center gap-3"},_e={class:"relative flex-1 max-w-sm"},ge={class:"flex items-center gap-1.5"},be={class:"flex flex-1 min-h-0"},he={class:"w-[380px] shrink-0 border-r border-border/30 flex flex-col"},ke={key:0,class:"flex flex-col items-center justify-center flex-1"},ye={class:"mt-2 text-sm"},we={key:1,class:"flex items-center justify-center flex-1"},Ce={class:"flex-1 overflow-y-auto"},De={key:0,class:"divide-y divide-border/20"},$e=["onClick"],ze={class:"flex items-center gap-1.5"},Re={class:"text-sm font-medium truncate flex-1"},Ne={class:"text-[10px] text-muted-foreground/50 shrink-0 tabular-nums"},Ie={class:"flex items-center gap-2 mt-1 text-[11px] text-muted-foreground"},Ve={class:"text-amber-500"},je={class:"mt-0.5 text-[11px] text-muted-foreground/50 truncate"},Me={key:1,class:"flex flex-col items-center justify-center flex-1 py-16 text-muted-foreground/40"},Ae={key:0,class:"flex items-center justify-center gap-2 py-2 border-t border-border/30 text-xs text-muted-foreground shrink-0"},Fe={class:"tabular-nums"},Se={class:"flex-1 min-w-0 overflow-y-auto relative"},Ee={key:0,class:"flex items-center justify-center h-full"},Le={key:1,class:"flex flex-col items-center justify-center h-full"},Te={class:"mt-2 text-sm"},Be={class:"flex items-center gap-2 mb-2"},qe={class:"text-lg font-semibold"},Pe={class:"text-sm text-muted-foreground mt-0.5"},Ue={class:"flex items-center gap-3"},Ge={class:"text-2xl text-amber-500 tracking-wider"},He={class:"text-lg font-bold tabular-nums"},Ke={key:0},Oe={class:"rounded-lg border border-border/50 bg-muted/20 p-3 text-sm leading-relaxed whitespace-pre-wrap"},Xe={key:1},Ze={class:"rounded-lg border border-rose-200/50 bg-rose-50/30 p-3 text-sm leading-relaxed whitespace-pre-wrap"},Je={class:"space-y-2"},Qe={key:0,class:"rounded-lg border border-border/50 bg-muted/20 p-3"},We={class:"text-sm"},Ye={key:1,class:"rounded-lg border border-border/50 bg-muted/20 p-3"},et={class:"text-sm"},tt={key:2,class:"rounded-lg border border-border/50 bg-muted/20 p-3"},st={class:"text-sm"},at={class:"grid grid-cols-2 gap-3"},ot={class:"rounded-lg border border-border/50 bg-muted/20 p-3"},lt={class:"mt-1 text-sm font-medium"},rt={class:"rounded-lg border border-border/50 bg-muted/20 p-3"},dt={class:"mt-1 text-sm font-medium"},it={class:"rounded-lg border border-border/50 bg-muted/20 p-3"},nt={class:"mt-1 text-sm font-medium"},ut={key:0,class:"rounded-lg border border-border/50 bg-muted/20 p-3"},ct={class:"mt-1 text-sm font-medium"},mt={class:"flex gap-4 text-[11px] text-muted-foreground/60 pt-2"},vt={key:3,class:"flex flex-col items-center justify-center flex-1 h-full text-muted-foreground/40"},O=20,ft=se({__name:"ReviewsView",setup(w){const C=m(""),g=m("all"),D=m(1),x=m(!1),$=m(!1),z=m(""),b=m(""),v=m(null),o=m(null),u=m(Z());let R=0,N=0;const A=m(0),X=[{value:"all",label:"全部结果"},{value:"approved",label:"✅ 通过"},{value:"rejected",label:"❌ 驳回"}];function Z(){return{items:[],total:0,page:1,page_size:O,total_pages:1,has_more:!1}}function J(r){if(!r)return"—";const t=new Date(r);return Number.isNaN(t.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(t)}function Q(r){if(!r)return"";const t=Date.now(),s=new Date(r).getTime();if(Number.isNaN(s))return"";const c=Math.floor((t-s)/1e3);return c<60?"刚刚":c<3600?`${Math.floor(c/60)} 分钟前`:c<86400?`${Math.floor(c/3600)} 小时前`:`${Math.floor(c/86400)} 天前`}function F(r){return"★".repeat(Math.max(0,Math.min(5,r)))+"☆".repeat(Math.max(0,5-r))}const W=me(()=>{D.value=1,h()},280);ae([C,g],()=>{x.value=!0,W()}),oe(()=>{h()});async function h(){const r=++R;x.value=!0,z.value="";try{const t=await K.list({page:D.value,page_size:O,keyword:C.value.trim()||void 0,result:g.value==="all"?void 0:g.value,sort_order:"desc"});if(r!==R)return;u.value=t.data;const s=t.data.items[0];if(!s){v.value=null,o.value=null;return}const c=new Set(t.data.items.map(ee=>ee.id)),I=v.value&&c.has(v.value)?v.value:s.id;I!==v.value&&(v.value=I,S(I))}catch(t){if(r!==R)return;console.error("Failed to load reviews",t),z.value="审查记录加载失败,请重试。"}finally{r===R&&(x.value=!1)}}async function S(r){const t=++N;$.value=!0,b.value="";try{const s=await K.get(r);if(t!==N||v.value!==r)return;o.value=s.data,A.value++}catch(s){if(t!==N)return;console.error("Failed to load review detail",s),b.value="详情加载失败,请重试。",o.value=null}finally{t===N&&($.value=!1)}}function Y(r){v.value!==r&&(v.value=r,S(r))}function E(r){r<1||r>u.value.total_pages||r===D.value||(D.value=r,h())}return(r,t)=>(d(),k(a(ne),null,{default:f(()=>[e("div",fe,[e("header",pe,[e("div",xe,[e("div",_e,[i(a(ue),{class:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),i(a(ie),{modelValue:C.value,"onUpdate:modelValue":t[0]||(t[0]=s=>C.value=s),class:"h-9 bg-muted/30 pl-10 text-sm",placeholder:"搜索任务名、子任务名、审查意见…"},null,8,["modelValue"])]),i(a(V),{variant:"secondary",class:"h-7 px-2.5 text-xs tabular-nums shrink-0"},{default:f(()=>[_(l(u.value.total)+" 条 ",1)]),_:1}),i(a(y),{variant:"ghost",size:"icon",class:"h-8 w-8 shrink-0",disabled:x.value,onClick:h},{default:f(()=>[i(a(ce),{class:T(["h-3.5 w-3.5",x.value?"animate-spin":""])},null,8,["class"])]),_:1},8,["disabled"])]),e("div",ge,[(d(),n(j,null,B(X,s=>i(a(y),{key:s.value,size:"sm",variant:g.value===s.value?"default":"ghost",class:"h-7 rounded-full px-3 text-xs",onClick:c=>g.value=s.value},{default:f(()=>[_(l(s.label),1)]),_:2},1032,["variant","onClick"])),64))])]),e("div",be,[e("div",he,[z.value?(d(),n("div",ke,[i(a(U),{class:"h-5 w-5 text-muted-foreground"}),e("p",ye,l(z.value),1),i(a(y),{class:"mt-3",size:"sm",onClick:h},{default:f(()=>[...t[3]||(t[3]=[_("重新加载",-1)])]),_:1})])):x.value?(d(),n("div",we,[i(a(q),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):(d(),n(j,{key:2},[e("div",Ce,[u.value.items.length?(d(),n("div",De,[(d(!0),n(j,null,B(u.value.items,(s,c)=>(d(),n("button",{key:s.id,type:"button",class:T(["w-full text-left px-4 py-3 hover:bg-muted/30 transition-all cursor-pointer animate-slide-up",v.value===s.id?"bg-muted/40 border-l-2 border-l-primary":"border-l-2 border-l-transparent"]),style:le({animationDelay:`${c*25}ms`}),onClick:I=>Y(s.id)},[e("div",ze,[s.result==="approved"?(d(),k(a(P),{key:0,class:"h-3.5 w-3.5 text-emerald-500 shrink-0"})):(d(),k(a(H),{key:1,class:"h-3.5 w-3.5 text-rose-500 shrink-0"})),e("span",Re,l(s.sub_task_name),1),e("span",Ne,l(Q(s.created_at)),1)]),e("div",Ie,[e("span",Ve,l(F(s.score)),1),e("span",null,l(s.reviewer_agent_name||"未知"),1),e("span",null,"第"+l(s.round)+"轮",1)]),e("div",je,l(s.task_name),1)],14,$e))),128))])):(d(),n("div",Me,[i(a(G),{class:"h-6 w-6 mb-2"}),t[4]||(t[4]=e("p",{class:"text-sm"},"暂无审查记录",-1))]))]),u.value.total_pages>1?(d(),n("div",Ae,[i(a(y),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:u.value.page<=1||x.value,onClick:t[1]||(t[1]=s=>E(u.value.page-1))},{default:f(()=>[i(a(re),{class:"h-3 w-3"})]),_:1},8,["disabled"]),e("span",Fe,l(u.value.page)+" / "+l(u.value.total_pages),1),i(a(y),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:u.value.page>=u.value.total_pages||x.value,onClick:t[2]||(t[2]=s=>E(u.value.page+1))},{default:f(()=>[i(a(de),{class:"h-3 w-3"})]),_:1},8,["disabled"])])):p("",!0)],64))]),e("div",Se,[$.value?(d(),n("div",Ee,[i(a(q),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):b.value?(d(),n("div",Le,[i(a(U),{class:"h-5 w-5 text-muted-foreground"}),e("p",Te,l(b.value),1)])):o.value?(d(),n("div",{key:A.value,class:"p-5 space-y-5 max-w-2xl mx-auto animate-slide-up"},[e("div",null,[e("div",Be,[o.value.result==="approved"?(d(),k(a(V),{key:0,class:"bg-emerald-100 text-emerald-700 border-emerald-200"},{default:f(()=>[i(a(P),{class:"h-3 w-3 mr-1"}),t[5]||(t[5]=_(" 审查通过 ",-1))]),_:1})):(d(),k(a(V),{key:1,class:"bg-rose-100 text-rose-700 border-rose-200"},{default:f(()=>[i(a(H),{class:"h-3 w-3 mr-1"}),t[6]||(t[6]=_(" 审查驳回 ",-1))]),_:1})),i(a(V),{variant:"outline",class:"text-[10px]"},{default:f(()=>[_("第"+l(o.value.round)+"轮",1)]),_:1})]),e("h2",qe,l(o.value.sub_task_name),1),e("p",Pe,l(o.value.task_name),1)]),i(a(M)),e("div",null,[t[7]||(t[7]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider mb-2"}," 评分 ",-1)),e("div",Ue,[e("span",Ge,l(F(o.value.score)),1),e("span",He,l(o.value.score)+"/5",1)])]),o.value.comment?(d(),n("div",Ke,[t[8]||(t[8]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider mb-2"}," 审查意见 ",-1)),e("div",Oe,l(o.value.comment),1)])):p("",!0),o.value.issues?(d(),n("div",Xe,[t[9]||(t[9]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider mb-2"}," 发现问题 ",-1)),e("div",Ze,l(o.value.issues),1)])):p("",!0),i(a(M)),e("div",null,[t[13]||(t[13]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider mb-2"}," 子任务信息 ",-1)),e("div",Je,[o.value.sub_task_description?(d(),n("div",Qe,[t[10]||(t[10]=e("div",{class:"text-[11px] text-muted-foreground/60 mb-1"},"描述",-1)),e("p",We,l(o.value.sub_task_description),1)])):p("",!0),o.value.sub_task_deliverable?(d(),n("div",Ye,[t[11]||(t[11]=e("div",{class:"text-[11px] text-muted-foreground/60 mb-1"},"交付物要求",-1)),e("p",et,l(o.value.sub_task_deliverable),1)])):p("",!0),o.value.sub_task_acceptance?(d(),n("div",tt,[t[12]||(t[12]=e("div",{class:"text-[11px] text-muted-foreground/60 mb-1"},"验收标准",-1)),e("p",st,l(o.value.sub_task_acceptance),1)])):p("",!0)])]),i(a(M)),e("div",null,[t[18]||(t[18]=e("div",{class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider mb-2"}," 关联信息 ",-1)),e("div",at,[e("div",ot,[t[14]||(t[14]=e("div",{class:"text-[11px] text-muted-foreground/60"},"审查 Agent",-1)),e("div",lt,l(o.value.reviewer_agent_name||"—"),1)]),e("div",rt,[t[15]||(t[15]=e("div",{class:"text-[11px] text-muted-foreground/60"},"返工指派",-1)),e("div",dt,l(o.value.rework_agent_name||"—"),1)]),e("div",it,[t[16]||(t[16]=e("div",{class:"text-[11px] text-muted-foreground/60"},"审查时间",-1)),e("div",nt,l(J(o.value.created_at)),1)]),o.value.module_name?(d(),n("div",ut,[t[17]||(t[17]=e("div",{class:"text-[11px] text-muted-foreground/60"},"所属模块",-1)),e("div",ct,l(o.value.module_name),1)])):p("",!0)]),e("div",mt,[e("span",null,"审查 ID: "+l(o.value.id),1)])])])):p("",!0),!$.value&&!b.value&&!o.value?(d(),n("div",vt,[i(a(G),{class:"h-8 w-8 mb-3"}),t[19]||(t[19]=e("p",{class:"text-sm font-medium text-muted-foreground/60"},"点击左侧审查记录查看详情",-1)),t[20]||(t[20]=e("p",{class:"text-xs mt-1"},"评分、审查意见和子任务信息会在这里展示",-1))])):p("",!0)])])])]),_:1}))}}),Vt=ve(ft,[["__scopeId","data-v-cce68a05"]]);export{Vt as default}; diff --git a/cloudflare/pages/assets/ReviewsView-Cjn5FRho.css b/cloudflare/pages/assets/ReviewsView-Cjn5FRho.css new file mode 100644 index 0000000..78c8c1e --- /dev/null +++ b/cloudflare/pages/assets/ReviewsView-Cjn5FRho.css @@ -0,0 +1 @@ +@keyframes slide-up-fade-in-cce68a05{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up[data-v-cce68a05]{animation:slide-up-fade-in-cce68a05 .35s ease-out both} diff --git a/cloudflare/pages/assets/ScoresView-CBH5Dogn.js b/cloudflare/pages/assets/ScoresView-CBH5Dogn.js new file mode 100644 index 0000000..2aec5ed --- /dev/null +++ b/cloudflare/pages/assets/ScoresView-CBH5Dogn.js @@ -0,0 +1 @@ +import{m as X,p as A,d as Y,H as U,o as ee,c as d,a as e,t as r,i as N,e as l,w as c,u as o,F as C,g as F,L as te,r as u,l as n,f,n as g,D as M,b as S}from"./index-BYiXDk_r.js";import{_ as O,A as se,a as ae}from"./index-wmMfISvJ.js";import{_ as p}from"./index-D0L1R3xN.js";import{_ as re}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{_ as oe}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{S as le}from"./search-3_RVfAHZ.js";import{C as ne}from"./circle-alert-DI3FQNzC.js";import{U as de}from"./users-C4rtE1G7.js";import{T as q}from"./trophy-BMFdgvc4.js";import{R as ie}from"./refresh-cw-DOzI5zLk.js";import{T as ue,a as ce}from"./trending-up-9TLdiVqg.js";import{u as me}from"./index-Ct5H-N73.js";import"./index-CEPd9Ray.js";const ve=X("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),V={summary:()=>A.get("/admin/scores/summary"),leaderboard:_=>A.get("/admin/scores/leaderboard",{params:_}),logs:_=>A.get("/admin/scores/logs",{params:_}),adjust:_=>A.post("/admin/scores/adjust",_)},fe={class:"flex flex-col h-[calc(100vh-3.5rem)]"},xe={class:"shrink-0 border-b border-border/40 bg-background px-4 py-4 space-y-4"},pe={key:0,class:"grid grid-cols-2 sm:grid-cols-4 gap-3 animate-slide-up"},ge={class:"rounded-xl border border-border/50 bg-muted/20 p-3 text-center"},_e={class:"text-2xl font-bold tabular-nums text-primary"},be={class:"rounded-xl border border-border/50 bg-muted/20 p-3 text-center"},ye={class:"text-2xl font-bold tabular-nums"},he={class:"rounded-xl border border-border/50 bg-muted/20 p-3 text-center"},ke={class:"flex justify-center gap-3 text-sm tabular-nums"},we={class:"text-emerald-600 font-semibold"},Ce={class:"text-slate-500 font-semibold"},ze={class:"text-rose-500 font-semibold"},De={class:"rounded-xl border border-border/50 bg-muted/20 p-3 text-center"},$e={class:"text-2xl font-bold tabular-nums"},je={class:"space-y-2.5"},Te={class:"flex items-center gap-3"},Ae={class:"flex gap-1 rounded-lg bg-muted/40 p-0.5"},Fe={class:"relative flex-1 max-w-sm"},Ne={class:"flex items-center gap-1.5"},Se={class:"flex-1 min-h-0 overflow-y-auto"},Ve={key:0,class:"flex flex-col items-center justify-center py-16"},Le={class:"mt-2 text-sm"},Be={key:1,class:"flex items-center justify-center py-16"},Ee={key:0,class:"divide-y divide-border/30"},Re={class:"w-10 text-center shrink-0"},Ie={class:"flex-1 min-w-0"},Pe={class:"flex items-center gap-1.5"},Ue={class:"text-sm font-semibold truncate"},Me={class:"flex gap-3 mt-0.5 text-[11px] text-muted-foreground tabular-nums"},Oe={class:"text-emerald-600 font-medium"},qe={class:"text-rose-500 font-medium"},Ge={key:0},He={class:"text-right shrink-0"},Ze={key:1,class:"flex flex-col items-center justify-center py-16 text-muted-foreground/40"},Je={key:0,class:"divide-y divide-border/30"},Ke={class:"flex-1 min-w-0"},Qe={class:"flex items-center gap-1.5"},We={class:"text-sm font-medium"},Xe={class:"text-xs text-muted-foreground truncate"},Ye={class:"text-[11px] text-muted-foreground/60 mt-0.5 tabular-nums"},et={class:"text-right shrink-0"},tt={key:1,class:"flex flex-col items-center justify-center py-16 text-muted-foreground/40"},st={key:4,class:"flex items-center justify-center gap-2 py-3 border-t border-border/30 text-xs text-muted-foreground"},at={class:"tabular-nums"},L=20,gt=Y({__name:"ScoresView",setup(_){const i=u("leaderboard"),m=u(!1),B=u(!1),z=u(""),b=u(""),y=u("all"),h=u("all"),k=u(1);let D=0;const x=u(null),$=u(E()),j=u(E()),G=[{value:"all",label:"全部角色"},{value:"planner",label:"规划者"},{value:"executor",label:"执行者"},{value:"reviewer",label:"审查者"},{value:"patrol",label:"巡查者"}],H=[{value:"all",label:"全部"},{value:"positive",label:"奖励"},{value:"negative",label:"惩罚"}];function E(){return{items:[],total:0,page:1,page_size:L,total_pages:1,has_more:!1}}function Z(a){return{planner:"规划者",executor:"执行者",reviewer:"审查者",patrol:"巡查者"}[a]??a}function J(a){return{planner:"border-violet-200 bg-violet-50 text-violet-700",executor:"border-sky-200 bg-sky-50 text-sky-700",reviewer:"border-amber-200 bg-amber-50 text-amber-700",patrol:"border-teal-200 bg-teal-50 text-teal-700"}[a]??"border-border bg-muted text-muted-foreground"}function R(a){if(!a)return"—";const t=new Date(a);return Number.isNaN(t.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(t)}function K(a){return a===1?"🥇":a===2?"🥈":a===3?"🥉":`#${a}`}const Q=me(()=>{k.value=1,w()},280);U([b,y,h],()=>{m.value=!0,Q()}),U(i,()=>{b.value="",y.value="all",h.value="all",k.value=1,w()}),ee(()=>{I(),w()});async function I(){B.value=!0;try{const a=await V.summary();x.value=a.data}catch(a){console.error("Failed to load score summary",a)}finally{B.value=!1}}async function w(){const a=++D;m.value=!0,z.value="";try{if(i.value==="leaderboard"){const t=await V.leaderboard({page:k.value,page_size:L,keyword:b.value.trim()||void 0,role:y.value==="all"?void 0:y.value,sort_by:"total_score",sort_order:"desc"});if(a!==D)return;$.value=t.data}else{const t=await V.logs({page:k.value,page_size:L,keyword:b.value.trim()||void 0,score_sign:h.value==="all"?void 0:h.value,sort_order:"desc"});if(a!==D)return;j.value=t.data}}catch(t){if(a!==D)return;console.error("Failed to load score data",t),z.value="数据加载失败,请重试。"}finally{a===D&&(m.value=!1)}}function P(a){const t=i.value==="leaderboard"?$.value:j.value;a<1||a>t.total_pages||a===k.value||(k.value=a,w())}function W(){I(),w()}function v(){return i.value==="leaderboard"?$.value:j.value}return(a,t)=>(n(),d("div",fe,[e("header",xe,[x.value?(n(),d("div",pe,[e("div",ge,[e("div",_e,r(x.value.top_score),1),t[5]||(t[5]=e("div",{class:"text-[11px] text-muted-foreground mt-0.5"},"最高积分",-1))]),e("div",be,[e("div",ye,r(x.value.average_score.toFixed(1)),1),t[6]||(t[6]=e("div",{class:"text-[11px] text-muted-foreground mt-0.5"},"平均积分",-1))]),e("div",he,[e("div",ke,[e("span",we,r(x.value.positive_score_agents),1),t[7]||(t[7]=e("span",{class:"text-muted-foreground"},"/",-1)),e("span",Ce,r(x.value.zero_score_agents),1),t[8]||(t[8]=e("span",{class:"text-muted-foreground"},"/",-1)),e("span",ze,r(x.value.negative_score_agents),1)]),t[9]||(t[9]=e("div",{class:"text-[11px] text-muted-foreground mt-0.5"},"正分 / 零分 / 负分",-1))]),e("div",De,[e("div",$e,r(x.value.total_agents),1),t[10]||(t[10]=e("div",{class:"text-[11px] text-muted-foreground mt-0.5"},"Agent 总数",-1))])])):N("",!0),e("div",je,[e("div",Te,[e("div",Ae,[l(o(p),{size:"sm",variant:i.value==="leaderboard"?"default":"ghost",class:"h-7 rounded-md px-3 text-xs",onClick:t[0]||(t[0]=s=>i.value="leaderboard")},{default:c(()=>[l(o(q),{class:"h-3 w-3 mr-1"}),t[11]||(t[11]=f(" 排行榜 ",-1))]),_:1},8,["variant"]),l(o(p),{size:"sm",variant:i.value==="logs"?"default":"ghost",class:"h-7 rounded-md px-3 text-xs",onClick:t[1]||(t[1]=s=>i.value="logs")},{default:c(()=>[...t[12]||(t[12]=[f(" 积分流水 ",-1)])]),_:1},8,["variant"])]),l(o(oe),{orientation:"vertical",class:"h-4"}),e("div",Fe,[l(o(le),{class:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),l(o(re),{modelValue:b.value,"onUpdate:modelValue":t[2]||(t[2]=s=>b.value=s),class:"h-9 bg-muted/30 pl-10 text-sm",placeholder:i.value==="leaderboard"?"搜索 Agent 名称…":"搜索原因…"},null,8,["modelValue","placeholder"])]),l(o(O),{variant:"secondary",class:"h-7 px-2.5 text-xs tabular-nums shrink-0"},{default:c(()=>[f(r(v().total)+" 条 ",1)]),_:1}),l(o(p),{variant:"ghost",size:"icon",class:"h-8 w-8 shrink-0",disabled:m.value,onClick:W},{default:c(()=>[l(o(ie),{class:g(["h-3.5 w-3.5",m.value?"animate-spin":""])},null,8,["class"])]),_:1},8,["disabled"])]),e("div",Ne,[i.value==="leaderboard"?(n(),d(C,{key:0},F(G,s=>l(o(p),{key:s.value,size:"sm",variant:y.value===s.value?"default":"ghost",class:"h-7 rounded-full px-3 text-xs",onClick:T=>y.value=s.value},{default:c(()=>[f(r(s.label),1)]),_:2},1032,["variant","onClick"])),64)):(n(),d(C,{key:1},F(H,s=>l(o(p),{key:s.value,size:"sm",variant:h.value===s.value?"default":"ghost",class:"h-7 rounded-full px-3 text-xs",onClick:T=>h.value=s.value},{default:c(()=>[f(r(s.label),1)]),_:2},1032,["variant","onClick"])),64))])])]),e("div",Se,[z.value?(n(),d("div",Ve,[l(o(ne),{class:"h-5 w-5 text-muted-foreground"}),e("p",Le,r(z.value),1),l(o(p),{class:"mt-3",size:"sm",onClick:w},{default:c(()=>[...t[13]||(t[13]=[f("重新加载",-1)])]),_:1})])):m.value?(n(),d("div",Be,[l(o(te),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):i.value==="leaderboard"?(n(),d(C,{key:2},[$.value.items.length?(n(),d("div",Ee,[(n(!0),d(C,null,F($.value.items,(s,T)=>(n(),d("div",{key:s.agent_id,class:g(["group flex items-center gap-4 px-5 py-3.5 hover:bg-muted/20 transition-all duration-200 animate-slide-up",{"bg-gradient-to-r from-amber-50/80 to-transparent dark:from-amber-950/20":s.rank===1,"bg-gradient-to-r from-slate-100/80 to-transparent dark:from-slate-800/20":s.rank===2,"bg-gradient-to-r from-orange-50/60 to-transparent dark:from-orange-950/15":s.rank===3}]),style:M({animationDelay:`${T*30}ms`})},[e("div",Re,[e("span",{class:g(["text-lg font-bold",s.rank<=3?"text-primary":"text-muted-foreground/50"])},r(K(s.rank)),3)]),e("div",Ie,[e("div",Pe,[e("span",Ue,r(s.agent_name),1),l(o(O),{variant:"outline",class:g([J(s.role),"text-[10px] px-1.5 shrink-0"])},{default:c(()=>[f(r(Z(s.role)),1)]),_:2},1032,["class"])]),e("div",Me,[e("span",null,[t[14]||(t[14]=f("奖励 ",-1)),e("span",Oe,r(s.reward_count),1)]),e("span",null,[t[15]||(t[15]=f("惩罚 ",-1)),e("span",qe,r(s.penalty_count),1)]),e("span",null,"共 "+r(s.total_records)+" 条",1),s.last_score_at?(n(),d("span",Ge,"最近 "+r(R(s.last_score_at)),1)):N("",!0)])]),e("div",He,[e("div",{class:g(["text-lg font-bold tabular-nums transition-transform duration-150 group-hover:scale-110 origin-right",s.total_score>0?"text-emerald-600":s.total_score<0?"text-rose-500":"text-muted-foreground"])},r(s.total_score>0?"+":"")+r(s.total_score),3),t[16]||(t[16]=e("div",{class:"text-[10px] text-muted-foreground/60"},"积分",-1))])],6))),128))])):(n(),d("div",Ze,[l(o(de),{class:"h-6 w-6 mb-2"}),t[17]||(t[17]=e("p",{class:"text-sm"},"暂无排行数据",-1))]))],64)):(n(),d(C,{key:3},[j.value.items.length?(n(),d("div",Je,[(n(!0),d(C,null,F(j.value.items,(s,T)=>(n(),d("div",{key:s.id,class:"flex items-center gap-3 px-5 py-3 hover:bg-muted/20 transition-colors animate-slide-up",style:M({animationDelay:`${T*30}ms`})},[e("div",{class:g(["w-8 h-8 rounded-full flex items-center justify-center shrink-0",s.score_delta>0?"bg-emerald-100":s.score_delta<0?"bg-rose-100":"bg-muted"])},[s.score_delta>0?(n(),S(o(ue),{key:0,class:"h-4 w-4 text-emerald-600"})):s.score_delta<0?(n(),S(o(ce),{key:1,class:"h-4 w-4 text-rose-500"})):(n(),S(o(ve),{key:2,class:"h-4 w-4 text-muted-foreground"}))],2),e("div",Ke,[e("div",Qe,[e("span",We,r(s.agent_name),1),e("span",Xe,r(s.reason),1)]),e("div",Ye,r(R(s.created_at)),1)]),e("div",et,[e("span",{class:g(["text-sm font-bold tabular-nums",s.score_delta>0?"text-emerald-600":s.score_delta<0?"text-rose-500":""])},r(s.score_delta>0?"+":"")+r(s.score_delta),3)])],4))),128))])):(n(),d("div",tt,[l(o(q),{class:"h-6 w-6 mb-2"}),t[18]||(t[18]=e("p",{class:"text-sm"},"暂无积分流水",-1))]))],64)),!m.value&&!z.value&&v().total_pages>1?(n(),d("div",st,[l(o(p),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:v().page<=1||m.value,onClick:t[3]||(t[3]=s=>P(v().page-1))},{default:c(()=>[l(o(se),{class:"h-3 w-3"})]),_:1},8,["disabled"]),e("span",at,r(v().page)+" / "+r(v().total_pages),1),l(o(p),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:v().page>=v().total_pages||m.value,onClick:t[4]||(t[4]=s=>P(v().page+1))},{default:c(()=>[l(o(ae),{class:"h-3 w-3"})]),_:1},8,["disabled"])])):N("",!0)])]))}});export{gt as default}; diff --git a/cloudflare/pages/assets/Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js b/cloudflare/pages/assets/Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js new file mode 100644 index 0000000..6c0084e --- /dev/null +++ b/cloudflare/pages/assets/Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js @@ -0,0 +1 @@ +import{P as h}from"./index-D0L1R3xN.js";import{d as l,l as p,b as u,w as d,q as c,x as _,u as o,k as s,O as m,P as y,N as B}from"./index-BYiXDk_r.js";import{r as S}from"./index-Ct5H-N73.js";var g=l({__name:"BaseSeparator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const e=a,t=["horizontal","vertical"];function n(r){return t.includes(r)}const i=s(()=>n(e.orientation)?e.orientation:"horizontal"),f=s(()=>i.value==="vertical"?e.orientation:void 0),v=s(()=>e.decorative?{role:"none"}:{"aria-orientation":f.value,role:"separator"});return(r,P)=>(p(),u(o(h),_({as:r.as,"as-child":r.asChild,"data-orientation":i.value},v.value),{default:d(()=>[c(r.$slots,"default")]),_:3},16,["as","as-child","data-orientation"]))}}),q=g,z=l({__name:"Separator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const e=a;return(t,n)=>(p(),u(q,m(y(e)),{default:d(()=>[c(t.$slots,"default")]),_:3},16))}}),O=z;const w=l({__name:"Separator",props:{orientation:{default:"horizontal"},decorative:{type:Boolean,default:!0},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(a){const e=a,t=S(e,"class");return(n,i)=>(p(),u(o(O),_({"data-slot":"separator"},o(t),{class:o(B)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e.class)}),null,16,["class"]))}});export{w as _}; diff --git a/cloudflare/pages/assets/SettingsView-Bbemcc2R.js b/cloudflare/pages/assets/SettingsView-Bbemcc2R.js new file mode 100644 index 0000000..375fafe --- /dev/null +++ b/cloudflare/pages/assets/SettingsView-Bbemcc2R.js @@ -0,0 +1 @@ +import{c as me}from"./clipboard-BxPwmQDo.js";import{m as ve,p as J,d as ce,o as xe,a1 as te,c as m,a as s,b as p,w as a,u as t,r,l as d,e as l,f as n,L as j,t as v,y as ye,i as b,F as Q,g as le,n as ge}from"./index-BYiXDk_r.js";import{w as X}from"./webui-BTCBRLGR.js";import{_ as y}from"./index-D0L1R3xN.js";import{_ as E,a as L}from"./CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js";import{_ as S}from"./CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js";import{a as T,_ as D}from"./CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js";import{_ as g}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{_ as c}from"./Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js";import{_ as Y}from"./Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js";import{_ as se}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{d as be,b as q,_ as _e,c as G,T as we,P as ke}from"./TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js";import{S as H}from"./save-DkYVQELS.js";import{E as Ve}from"./eye-Bf9-8M_K.js";import{R as ae}from"./refresh-cw-DOzI5zLk.js";import{C as Ce}from"./usePrimitiveElement-JaAYjjRd.js";import{D as je}from"./download-Cz1Slb-U.js";import"./index-CEPd9Ray.js";import"./index-Ct5H-N73.js";import"./useForwardExpose-DjCgLuye.js";import"./VisuallyHidden-DmVvgUgH.js";import"./createContext-a9Tpfoxo.js";import"./Presence-Sy1r65hd.js";const $e=ve("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),Z={get:()=>J.get("/admin/config"),update:I=>J.put("/admin/config",I),updatePassword:(I,B)=>J.put("/admin/config/password",{old_password:I,new_password:B})},Ue={class:"max-w-2xl"},ze={key:0,class:"flex justify-center py-12"},Ae={class:"space-y-2"},Pe={class:"space-y-2"},Me={class:"space-y-2"},Ee={class:"flex justify-end"},Le={key:0,class:"space-y-3 rounded-lg border p-4"},Se={class:"space-y-2"},Te={class:"space-y-2"},De={class:"space-y-2"},Ie={class:"space-y-2"},Be={class:"flex gap-2"},Ne={class:"flex items-center justify-between rounded-lg border p-3"},Re={class:"flex justify-end"},We={class:"flex items-center justify-between rounded-lg border p-3"},Fe={class:"space-y-1"},Oe={class:"space-y-2"},Ke={class:"space-y-2"},he={class:"space-y-2"},qe={class:"grid grid-cols-2 gap-2"},Ge=["onClick"],He={key:0,class:"h-3 w-3 text-primary-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"3"},Je={class:"text-sm"},Qe={class:"flex justify-end"},Xe={class:"grid grid-cols-2 gap-3"},Ye={class:"rounded-lg border p-3"},Ze={class:"text-sm font-mono font-medium"},et={class:"rounded-lg border p-3"},tt={class:"text-sm font-mono font-medium"},lt={key:0,class:"flex items-center gap-2"},st={key:0,class:"inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-xs font-medium text-green-800 dark:bg-green-900/30 dark:text-green-400"},at={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},ot={key:2,class:"inline-flex items-center rounded-full bg-amber-100 px-2.5 py-0.5 text-xs font-medium text-amber-800 dark:bg-amber-900/30 dark:text-amber-400"},nt={key:3,class:"text-xs text-muted-foreground"},dt={key:1,class:"text-xs text-destructive"},ut={class:"flex gap-2"},rt={class:"flex items-center justify-between rounded-lg border p-3"},it={class:"space-y-1"},pt={class:"space-y-2"},ft={class:"flex justify-end"},Dt=ce({__name:"SettingsView",setup(I){const B=r(!0),i=r(null),N=r(""),k=r(""),R=r(!0),$=r(!1),_=r([]),w=r([]),W=r(!1),F=r(7),U=r(""),z=r(""),V=r(!1),O=r(""),C=r(""),K=r(""),f=r(null),A=r(!1),P=r(!1),oe="0.0.1",ne=[{value:"task_completed",label:"子任务完成"},{value:"review_rejected",label:"审查驳回"},{value:"all_done",label:"任务全部完成"},{value:"patrol_alert",label:"巡查告警"}];xe(async()=>{try{const e=(await Z.get()).data;N.value=e.project?.name||"",k.value=e.agent?.registration_token||"",R.value=e.agent?.allow_registration??!0,$.value=e.notification?.enabled??!1,_.value=e.notification?.channels||[],w.value=e.notification?.events||[],W.value=e.webui?.public_feed??!1,F.value=e.webui?.feed_retention_days??7,U.value=e.workspace?.root||"",z.value=e.server?.external_url||""}catch(u){console.error("加载配置失败",u),x("加载配置失败","error")}finally{B.value=!1}try{const{data:u}=await X.version();f.value=u}catch{}});function x(u,e="success"){e==="success"?te.success(u):te.error(u)}async function h(u){i.value=u;try{let e={};switch(u){case"project":e={project:{name:N.value},workspace:{root:U.value},server:{external_url:z.value}};break;case"agent":e={agent:{registration_token:k.value,allow_registration:R.value}};break;case"notification":e={notification:{enabled:$.value,channels:_.value.map(o=>o.trim()).filter(o=>o),events:w.value}};break;case"webui":e={webui:{public_feed:W.value,feed_retention_days:F.value}};break;case"workspace":e={workspace:{root:U.value}};break;case"server":e={server:{external_url:z.value}};break}await Z.update(e),x("保存成功","success")}catch(e){x(e.response?.data?.detail||"保存失败","error")}finally{i.value=null}}async function de(){if(C.value.length<6){x("新密码至少 6 位","error");return}if(C.value!==K.value){x("两次输入的密码不一致","error");return}i.value="password";try{await Z.updatePassword(O.value,C.value),x("密码修改成功"),V.value=!1,O.value="",C.value="",K.value=""}catch(u){x(u.response?.data?.detail||"密码修改失败","error")}finally{i.value=null}}function ue(u){const e=w.value.indexOf(u);e>=0?w.value.splice(e,1):w.value.push(u)}function re(){const u="abcdef0123456789";let e="";for(let o=0;o<32;o++)e+=u[Math.floor(Math.random()*u.length)];k.value=e}async function ie(u){try{await me(u),x("已复制")}catch{}}async function pe(){A.value=!0;try{const{data:u}=await X.checkUpdate();f.value=u,u.update_available||x("已是最新版本")}catch{x("检查更新失败","error")}finally{A.value=!1}}async function fe(){P.value=!0;try{const{data:u}=await X.update();x(u.message),setTimeout(()=>window.location.reload(),1500)}catch(u){x(u.response?.data?.detail||"更新失败","error")}finally{P.value=!1}}return(u,e)=>(d(),m("div",Ue,[B.value?(d(),m("div",ze,[...e[18]||(e[18]=[s("div",{class:"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent"},null,-1)])])):(d(),p(t(be),{key:1,"default-value":"project",class:"w-full"},{default:a(()=>[l(t(_e),{class:"grid w-full grid-cols-4"},{default:a(()=>[l(t(q),{value:"project"},{default:a(()=>[...e[19]||(e[19]=[n("项目",-1)])]),_:1}),l(t(q),{value:"security"},{default:a(()=>[...e[20]||(e[20]=[n("安全",-1)])]),_:1}),l(t(q),{value:"notification"},{default:a(()=>[...e[21]||(e[21]=[n("通知",-1)])]),_:1}),l(t(q),{value:"display"},{default:a(()=>[...e[22]||(e[22]=[n("显示",-1)])]),_:1})]),_:1}),l(t(G),{value:"project"},{default:a(()=>[l(t(E),null,{default:a(()=>[l(t(T),null,{default:a(()=>[l(t(D),{class:"text-base"},{default:a(()=>[...e[23]||(e[23]=[n("项目设置",-1)])]),_:1}),l(t(S),null,{default:a(()=>[...e[24]||(e[24]=[n("基本项目信息和工作目录配置",-1)])]),_:1})]),_:1}),l(t(L),{class:"space-y-4"},{default:a(()=>[s("div",Ae,[l(t(c),{for:"s-project-name"},{default:a(()=>[...e[25]||(e[25]=[n("项目名称",-1)])]),_:1}),l(t(g),{id:"s-project-name",modelValue:N.value,"onUpdate:modelValue":e[0]||(e[0]=o=>N.value=o)},null,8,["modelValue"])]),s("div",Pe,[l(t(c),{for:"s-workspace"},{default:a(()=>[...e[26]||(e[26]=[n("工作目录",-1)])]),_:1}),l(t(g),{id:"s-workspace",modelValue:U.value,"onUpdate:modelValue":e[1]||(e[1]=o=>U.value=o),placeholder:"/path/to/workspace"},null,8,["modelValue"]),e[27]||(e[27]=s("p",{class:"text-xs text-muted-foreground"},"Agent 产出物的根目录路径",-1))]),l(t(se)),s("div",Me,[l(t(c),{for:"s-external-url"},{default:a(()=>[...e[28]||(e[28]=[n("服务访问地址",-1)])]),_:1}),l(t(g),{id:"s-external-url",modelValue:z.value,"onUpdate:modelValue":e[2]||(e[2]=o=>z.value=o),placeholder:"https://moss.example.com"},null,8,["modelValue"]),e[29]||(e[29]=s("p",{class:"text-xs text-muted-foreground"},[n(" Agent 通过此地址下载工具脚本(task-cli.py)和技能配置(SKILL.md),并与任务系统通信。 服务默认端口为 "),s("code",{class:"bg-muted px-1 py-0.5 rounded"},"6565"),n("。 ")],-1)),e[30]||(e[30]=s("div",{class:"flex flex-col gap-1 mt-1"},[s("div",{class:"flex items-center gap-2"},[s("code",{class:"text-xs bg-muted px-2 py-1 rounded"},"https://moss.example.com"),s("span",{class:"text-xs text-muted-foreground"},"← 反向代理")]),s("div",{class:"flex items-center gap-2"},[s("code",{class:"text-xs bg-muted px-2 py-1 rounded"},"http://123.45.67.89:6565"),s("span",{class:"text-xs text-muted-foreground"},"← IP + 端口")]),s("div",{class:"flex items-center gap-2"},[s("code",{class:"text-xs bg-muted px-2 py-1 rounded"},"http://127.0.0.1:6565"),s("span",{class:"text-xs text-muted-foreground"},"← 本地测试")])],-1))]),s("div",Ee,[l(t(y),{size:"sm",onClick:e[3]||(e[3]=o=>h("project")),disabled:!!i.value},{default:a(()=>[i.value==="project"?(d(),p(t(j),{key:0,class:"mr-1 h-3.5 w-3.5 animate-spin"})):(d(),p(t(H),{key:1,class:"mr-1 h-3.5 w-3.5"})),n(" "+v(i.value==="project"?"保存中...":"保存"),1)]),_:1},8,["disabled"])])]),_:1})]),_:1})]),_:1}),l(t(G),{value:"security"},{default:a(()=>[l(t(E),null,{default:a(()=>[l(t(T),null,{default:a(()=>[l(t(D),{class:"text-base"},{default:a(()=>[...e[31]||(e[31]=[n("安全设置",-1)])]),_:1}),l(t(S),null,{default:a(()=>[...e[32]||(e[32]=[n("管理员密码和 Agent 注册管理",-1)])]),_:1})]),_:1}),l(t(L),{class:"space-y-4"},{default:a(()=>[s("div",null,[l(t(y),{variant:"outline",size:"sm",onClick:e[4]||(e[4]=o=>V.value=!V.value)},{default:a(()=>[(d(),p(ye(V.value?t($e):t(Ve)),{class:"mr-1 h-3.5 w-3.5"})),n(" "+v(V.value?"取消修改密码":"修改管理员密码"),1)]),_:1})]),V.value?(d(),m("div",Le,[s("div",Se,[l(t(c),{for:"s-old-pwd"},{default:a(()=>[...e[33]||(e[33]=[n("当前密码",-1)])]),_:1}),l(t(g),{id:"s-old-pwd",modelValue:O.value,"onUpdate:modelValue":e[5]||(e[5]=o=>O.value=o),type:"password"},null,8,["modelValue"])]),s("div",Te,[l(t(c),{for:"s-new-pwd"},{default:a(()=>[...e[34]||(e[34]=[n("新密码",-1)])]),_:1}),l(t(g),{id:"s-new-pwd",modelValue:C.value,"onUpdate:modelValue":e[6]||(e[6]=o=>C.value=o),type:"password",placeholder:"至少 6 位"},null,8,["modelValue"])]),s("div",De,[l(t(c),{for:"s-confirm-pwd"},{default:a(()=>[...e[35]||(e[35]=[n("确认新密码",-1)])]),_:1}),l(t(g),{id:"s-confirm-pwd",modelValue:K.value,"onUpdate:modelValue":e[7]||(e[7]=o=>K.value=o),type:"password"},null,8,["modelValue"])]),l(t(y),{size:"sm",onClick:de,disabled:i.value==="password"},{default:a(()=>[n(v(i.value==="password"?"修改中...":"确认修改"),1)]),_:1},8,["disabled"])])):b("",!0),l(t(se)),s("div",Ie,[l(t(c),{for:"s-reg-token"},{default:a(()=>[...e[36]||(e[36]=[n("Agent 注册令牌",-1)])]),_:1}),s("div",Be,[l(t(g),{id:"s-reg-token",modelValue:k.value,"onUpdate:modelValue":e[8]||(e[8]=o=>k.value=o),class:"flex-1 font-mono text-sm"},null,8,["modelValue"]),l(t(y),{variant:"outline",size:"icon",onClick:re,title:"重新生成"},{default:a(()=>[l(t(ae),{class:"h-4 w-4"})]),_:1}),l(t(y),{variant:"outline",size:"icon",onClick:e[9]||(e[9]=o=>ie(k.value)),title:"复制"},{default:a(()=>[l(t(Ce),{class:"h-4 w-4"})]),_:1})])]),s("div",Ne,[s("div",null,[l(t(c),null,{default:a(()=>[...e[37]||(e[37]=[n("允许 Agent 自注册",-1)])]),_:1}),e[38]||(e[38]=s("p",{class:"text-xs text-muted-foreground"},"关闭后只能由管理员创建 Agent",-1))]),l(t(Y),{modelValue:R.value,"onUpdate:modelValue":e[10]||(e[10]=o=>R.value=o)},null,8,["modelValue"])]),s("div",Re,[l(t(y),{size:"sm",onClick:e[11]||(e[11]=o=>h("agent")),disabled:!!i.value},{default:a(()=>[i.value==="agent"?(d(),p(t(j),{key:0,class:"mr-1 h-3.5 w-3.5 animate-spin"})):(d(),p(t(H),{key:1,class:"mr-1 h-3.5 w-3.5"})),n(" "+v(i.value==="agent"?"保存中...":"保存"),1)]),_:1},8,["disabled"])])]),_:1})]),_:1})]),_:1}),l(t(G),{value:"notification"},{default:a(()=>[l(t(E),null,{default:a(()=>[l(t(T),null,{default:a(()=>[l(t(D),{class:"text-base"},{default:a(()=>[...e[39]||(e[39]=[n("通知设置",-1)])]),_:1}),l(t(S),null,{default:a(()=>[...e[40]||(e[40]=[n("配置 Agent 通知渠道和触发事件",-1)])]),_:1})]),_:1}),l(t(L),{class:"space-y-4"},{default:a(()=>[s("div",We,[s("div",Fe,[l(t(c),null,{default:a(()=>[...e[41]||(e[41]=[n("启用通知推送",-1)])]),_:1}),e[42]||(e[42]=s("p",{class:"text-xs text-muted-foreground"},"Agent 将按配置的渠道发送通知",-1))]),l(t(Y),{modelValue:$.value,"onUpdate:modelValue":e[12]||(e[12]=o=>$.value=o)},null,8,["modelValue"])]),$.value?(d(),m(Q,{key:0},[s("div",Oe,[l(t(c),null,{default:a(()=>[...e[43]||(e[43]=[n("通知渠道",-1)])]),_:1}),s("div",Ke,[(d(!0),m(Q,null,le(_.value,(o,M)=>(d(),m("div",{key:M,class:"flex items-center gap-2"},[l(t(g),{modelValue:_.value[M],"onUpdate:modelValue":ee=>_.value[M]=ee,class:"flex-1 font-mono text-sm",placeholder:"chat:oc_xxx 或 email:xxx@example.com"},null,8,["modelValue","onUpdate:modelValue"]),l(t(y),{variant:"ghost",size:"icon",class:"h-8 w-8 shrink-0 text-muted-foreground hover:text-destructive",onClick:ee=>_.value.splice(M,1)},{default:a(()=>[l(t(we),{class:"h-3.5 w-3.5"})]),_:1},8,["onClick"])]))),128)),l(t(y),{variant:"outline",size:"sm",class:"w-full",onClick:e[13]||(e[13]=o=>_.value.push(""))},{default:a(()=>[l(t(ke),{class:"mr-1 h-3.5 w-3.5"}),e[44]||(e[44]=n(" 添加渠道 ",-1))]),_:1})]),e[45]||(e[45]=s("div",{class:"space-y-1 text-xs text-muted-foreground"},[s("p",{class:"font-medium text-foreground/60"},"支持的渠道类型:"),s("p",null,[s("code",{class:"bg-muted px-1 py-0.5 rounded"},"chat:oc_xxx"),n(" — OpenClaw 群聊(将 Agent 拉入群聊后可获取 chat_id)")]),s("p",null,[s("code",{class:"bg-muted px-1 py-0.5 rounded"},"user:ou_xxx"),n(" — OpenClaw 私聊(使用 open_id)")]),s("p",null,[s("code",{class:"bg-muted px-1 py-0.5 rounded"},"email:xxx@example.com"),n(" — 邮件通知(需 Agent 具备发送邮件的能力)")])],-1))]),s("div",he,[l(t(c),null,{default:a(()=>[...e[46]||(e[46]=[n("触发事件",-1)])]),_:1}),s("div",qe,[(d(),m(Q,null,le(ne,o=>s("div",{key:o.value,class:"flex items-center gap-2 rounded-lg border p-2 cursor-pointer hover:bg-muted/50 transition-colors",onClick:M=>ue(o.value)},[s("div",{class:ge(["h-4 w-4 rounded border flex items-center justify-center",w.value.includes(o.value)?"bg-primary border-primary":""])},[w.value.includes(o.value)?(d(),m("svg",He,[...e[47]||(e[47]=[s("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])])):b("",!0)],2),s("span",Je,v(o.label),1)],8,Ge)),64))])])],64)):b("",!0),s("div",Qe,[l(t(y),{size:"sm",onClick:e[14]||(e[14]=o=>h("notification")),disabled:!!i.value},{default:a(()=>[i.value==="notification"?(d(),p(t(j),{key:0,class:"mr-1 h-3.5 w-3.5 animate-spin"})):(d(),p(t(H),{key:1,class:"mr-1 h-3.5 w-3.5"})),n(" "+v(i.value==="notification"?"保存中...":"保存"),1)]),_:1},8,["disabled"])])]),_:1})]),_:1})]),_:1}),l(t(G),{value:"display"},{default:a(()=>[l(t(E),{class:"mb-4"},{default:a(()=>[l(t(T),null,{default:a(()=>[l(t(D),{class:"text-base"},{default:a(()=>[...e[48]||(e[48]=[n("📦 WebUI 版本",-1)])]),_:1}),l(t(S),null,{default:a(()=>[...e[49]||(e[49]=[n("前端界面版本信息与更新管理",-1)])]),_:1})]),_:1}),l(t(L),{class:"space-y-3"},{default:a(()=>[s("div",Xe,[s("div",Ye,[e[50]||(e[50]=s("p",{class:"text-xs text-muted-foreground mb-1"},"当前版本",-1)),s("p",Ze,"v"+v(t(oe)),1)]),s("div",et,[e[51]||(e[51]=s("p",{class:"text-xs text-muted-foreground mb-1"},"最新版本",-1)),s("p",tt,v(f.value?.latest_version?`v${f.value.latest_version}`:"--"),1)])]),f.value?(d(),m("div",lt,[f.value.update_available?f.value.update_type==="upgrade"?(d(),m("span",at," ↑ 有新版本 ")):f.value.update_type==="rollback"?(d(),m("span",ot," ⚠ 版本已撤回 ")):b("",!0):(d(),m("span",st," ✓ 已是最新 ")),f.value.checked_at?(d(),m("span",nt,v(new Date(f.value.checked_at).toLocaleString())+" 检查 ",1)):b("",!0)])):b("",!0),f.value?.error?(d(),m("div",dt,v(f.value.error),1)):b("",!0),s("div",ut,[l(t(y),{variant:"outline",size:"sm",onClick:pe,disabled:A.value},{default:a(()=>[A.value?(d(),p(t(j),{key:0,class:"mr-1 h-3.5 w-3.5 animate-spin"})):(d(),p(t(ae),{key:1,class:"mr-1 h-3.5 w-3.5"})),n(" "+v(A.value?"检查中...":"检查更新"),1)]),_:1},8,["disabled"]),f.value?.update_available?(d(),p(t(y),{key:0,size:"sm",onClick:fe,disabled:P.value},{default:a(()=>[P.value?(d(),p(t(j),{key:0,class:"mr-1 h-3.5 w-3.5 animate-spin"})):(d(),p(t(je),{key:1,class:"mr-1 h-3.5 w-3.5"})),n(" "+v(P.value?"更新中...":f.value.update_type==="rollback"?"恢复安全版本":"立即更新"),1)]),_:1},8,["disabled"])):b("",!0)])]),_:1})]),_:1}),l(t(E),null,{default:a(()=>[l(t(T),null,{default:a(()=>[l(t(D),{class:"text-base"},{default:a(()=>[...e[52]||(e[52]=[n("显示设置",-1)])]),_:1}),l(t(S),null,{default:a(()=>[...e[53]||(e[53]=[n("WebUI 活动流和日志相关配置",-1)])]),_:1})]),_:1}),l(t(L),{class:"space-y-4"},{default:a(()=>[s("div",rt,[s("div",it,[l(t(c),null,{default:a(()=>[...e[54]||(e[54]=[n("活动流公开",-1)])]),_:1}),e[55]||(e[55]=s("p",{class:"text-xs text-muted-foreground"},[n("开启后无需登录即可访问 "),s("code",{class:"bg-muted px-1 py-0.5 rounded"},"/feed"),n(" 页面,实时查看 Agent 活动动态")],-1))]),l(t(Y),{modelValue:W.value,"onUpdate:modelValue":e[15]||(e[15]=o=>W.value=o)},null,8,["modelValue"])]),s("div",pt,[l(t(c),{for:"s-retention"},{default:a(()=>[...e[56]||(e[56]=[n("日志保留天数",-1)])]),_:1}),l(t(g),{id:"s-retention",modelValue:F.value,"onUpdate:modelValue":e[16]||(e[16]=o=>F.value=o),modelModifiers:{number:!0},type:"number",min:"1",max:"365",class:"w-32"},null,8,["modelValue"]),e[57]||(e[57]=s("p",{class:"text-xs text-muted-foreground"},"超过此天数的请求日志将在启动时自动清理",-1))]),s("div",ft,[l(t(y),{size:"sm",onClick:e[17]||(e[17]=o=>h("webui")),disabled:!!i.value},{default:a(()=>[i.value==="webui"?(d(),p(t(j),{key:0,class:"mr-1 h-3.5 w-3.5 animate-spin"})):(d(),p(t(H),{key:1,class:"mr-1 h-3.5 w-3.5"})),n(" "+v(i.value==="webui"?"保存中...":"保存"),1)]),_:1},8,["disabled"])])]),_:1})]),_:1})]),_:1})]),_:1}))]))}});export{Dt as default}; diff --git a/cloudflare/pages/assets/SetupView-DexhUT0V.js b/cloudflare/pages/assets/SetupView-DexhUT0V.js new file mode 100644 index 0000000..1add77a --- /dev/null +++ b/cloudflare/pages/assets/SetupView-DexhUT0V.js @@ -0,0 +1,3 @@ +import{d as X,o as Y,s as D,c as m,a as t,b as x,w as o,u as s,r as f,e as l,f as r,t as w,F as E,g as Z,h as ee,i as p,j as te,v as se,k as K,l as d,n as le}from"./index-BYiXDk_r.js";import{c as ae}from"./clipboard-BxPwmQDo.js";import{_ as c}from"./index-D0L1R3xN.js";import{_ as T,a as h}from"./CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js";import{_ as S}from"./CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js";import{_ as U,a as $}from"./CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js";import{_ as k}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{_ as v}from"./Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js";import{_ as F}from"./Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js";import{C}from"./check-DEjmzl3F.js";import{C as N,a as oe}from"./chevron-right-4Ffa5RHB.js";import{C as q}from"./usePrimitiveElement-JaAYjjRd.js";import{R as ne}from"./refresh-cw-DOzI5zLk.js";import"./index-CEPd9Ray.js";import"./index-Ct5H-N73.js";import"./useForwardExpose-DjCgLuye.js";import"./VisuallyHidden-DmVvgUgH.js";import"./createContext-a9Tpfoxo.js";const re={class:"flex min-h-screen items-center justify-center bg-background p-4"},de={key:0,class:"flex justify-center py-12"},ue={class:"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-amber-100 text-amber-600 dark:bg-amber-900 dark:text-amber-400"},ie={class:"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-emerald-100 text-emerald-600 dark:bg-emerald-900 dark:text-emerald-400"},me={class:"rounded-lg border bg-muted/50 p-4"},fe={class:"mt-1 flex items-center gap-2"},pe={class:"flex-1 text-sm font-mono break-all"},ve={class:"mb-6 flex items-center justify-center gap-2"},xe={key:1},ce={key:0,class:"h-px w-8 bg-border"},ge={class:"mb-4 text-center text-sm text-muted-foreground"},ye={key:0,class:"space-y-4"},we={class:"space-y-2"},ke={class:"space-y-2"},be={key:0,class:"text-sm text-destructive"},_e={key:1,class:"space-y-4"},Ve={class:"space-y-2"},Ce={class:"space-y-2"},je={key:2,class:"space-y-4"},Ae={class:"space-y-2"},Pe={class:"flex gap-2"},Te={class:"flex items-center justify-between rounded-lg border p-3"},he={key:3,class:"space-y-4"},Se={class:"space-y-2"},Ue={key:4,class:"space-y-4"},$e={class:"flex items-center justify-between rounded-lg border p-3"},Ne={key:0,class:"space-y-2"},Re={key:5,class:"mt-4 text-sm text-destructive"},Me={class:"mt-6 flex justify-between"},ze={key:1},G=5,st=X({__name:"SetupView",setup(Oe){const u=f(0),b=f(!1),g=f(""),R=f(!1),j=f(""),M=f(!1),z=f(!0);Y(async()=>{try{const{data:i}=await D.status();i.initialized&&(M.value=!0)}catch{}finally{z.value=!1}});const a=f({adminPassword:"",confirmPassword:"",projectName:"OpenMOSS",workspaceRoot:"",registrationToken:O(),externalUrl:"",notificationChannels:""}),A=f(!0),_=f(!1);function O(){const i="abcdef0123456789";let e="";for(let n=0;n<32;n++)e+=i[Math.floor(Math.random()*i.length)];return e}function H(){a.value.registrationToken=O()}async function I(i){try{await ae(i)}catch{}}const L=K(()=>{const i={};return u.value>=0&&a.value.adminPassword.length>0&&a.value.adminPassword.length<6&&(i[0]="密码至少 6 位"),u.value>=0&&a.value.confirmPassword&&a.value.adminPassword!==a.value.confirmPassword&&(i[0]="两次输入的密码不一致"),u.value>=1&&a.value.projectName.length===0&&(i[1]="请输入项目名称"),i}),V=K(()=>{switch(u.value){case 0:return a.value.adminPassword.length>=6&&a.value.adminPassword===a.value.confirmPassword;case 1:return a.value.projectName.length>0&&a.value.workspaceRoot.length>0;case 2:return a.value.registrationToken.length>0;case 3:return!0;case 4:return!0;default:return!1}});function B(){u.value0&&(u.value--,g.value="")}async function Q(){if(V.value){b.value=!0,g.value="";try{const i=a.value.notificationChannels.split(` +`).map(n=>n.trim()).filter(n=>n.length>0),e=await D.initialize({admin_password:a.value.adminPassword,project_name:a.value.projectName,workspace_root:a.value.workspaceRoot,registration_token:a.value.registrationToken,allow_registration:A.value,external_url:a.value.externalUrl||void 0,notification:_.value?{enabled:!0,channels:i,events:["task_completed","review_rejected","all_done","patrol_alert"]}:void 0});j.value=e.data.registration_token,R.value=!0}catch(i){const e=i;g.value=e.response?.data?.detail||"初始化失败,请重试"}finally{b.value=!1}}}function W(){window.location.href="/login?from=setup"}const P=[{title:"管理员密码",desc:"设置管理员登录密码"},{title:"项目信息",desc:"配置项目名称和工作目录"},{title:"Agent 注册",desc:"设置 Agent 注册令牌"},{title:"服务地址",desc:"配置 Agent 对接的服务访问地址"},{title:"通知渠道",desc:"配置消息通知(可跳过)"}];return(i,e)=>(d(),m("div",re,[z.value?(d(),m("div",de,[...e[12]||(e[12]=[t("div",{class:"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent"},null,-1)])])):M.value?(d(),x(s(T),{key:1,class:"w-full max-w-md"},{default:o(()=>[l(s($),{class:"text-center"},{default:o(()=>[t("div",ue,[l(s(C),{class:"h-6 w-6"})]),l(s(U),{class:"text-xl"},{default:o(()=>[...e[13]||(e[13]=[r("系统已初始化",-1)])]),_:1}),l(s(S),null,{default:o(()=>[...e[14]||(e[14]=[r("初始化向导仅在首次部署时可用。",-1)])]),_:1})]),_:1}),l(s(h),{class:"space-y-3"},{default:o(()=>[e[16]||(e[16]=t("p",{class:"text-sm text-muted-foreground text-center"}," 如需修改配置,请登录后在「系统设置」中操作。 ",-1)),l(s(c),{class:"w-full",onClick:e[0]||(e[0]=n=>i.$router.push("/login"))},{default:o(()=>[e[15]||(e[15]=r(" 前往登录 ",-1)),l(s(N),{class:"ml-1 h-4 w-4"})]),_:1})]),_:1})]),_:1})):R.value?(d(),x(s(T),{key:2,class:"w-full max-w-md"},{default:o(()=>[l(s($),{class:"text-center"},{default:o(()=>[t("div",ie,[l(s(C),{class:"h-6 w-6"})]),l(s(U),{class:"text-xl"},{default:o(()=>[...e[17]||(e[17]=[r("初始化完成!",-1)])]),_:1}),l(s(S),null,{default:o(()=>[...e[18]||(e[18]=[r("请妥善保存以下 Agent 注册令牌",-1)])]),_:1})]),_:1}),l(s(h),{class:"space-y-4"},{default:o(()=>[t("div",me,[l(s(v),{class:"text-xs text-muted-foreground"},{default:o(()=>[...e[19]||(e[19]=[r("Agent 注册令牌",-1)])]),_:1}),t("div",fe,[t("code",pe,w(j.value),1),l(s(c),{variant:"ghost",size:"icon",onClick:e[1]||(e[1]=n=>I(j.value)),title:"复制"},{default:o(()=>[l(s(q),{class:"h-4 w-4"})]),_:1})]),e[20]||(e[20]=t("p",{class:"mt-2 text-xs text-muted-foreground"}," Agent 注册时需要此令牌。你可以在「系统设置」中随时修改。 ",-1))]),e[22]||(e[22]=t("p",{class:"mt-3 text-xs text-muted-foreground text-center"}," 登录后可在「提示词管理」中快速创建 Agent 提示词并对接。 ",-1)),l(s(c),{class:"w-full",onClick:W},{default:o(()=>[e[21]||(e[21]=r(" 前往登录 ",-1)),l(s(N),{class:"ml-1 h-4 w-4"})]),_:1})]),_:1})]),_:1})):(d(),x(s(T),{key:3,class:"w-full max-w-lg"},{default:o(()=>[l(s($),{class:"text-center"},{default:o(()=>[e[25]||(e[25]=t("div",{class:"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-xl bg-primary text-primary-foreground text-xl font-bold"}," M ",-1)),l(s(U),{class:"text-2xl"},{default:o(()=>[...e[23]||(e[23]=[r("欢迎使用 OpenMOSS",-1)])]),_:1}),l(s(S),null,{default:o(()=>[...e[24]||(e[24]=[r("多Agent协同、自组织自修复自进化的AI公司操作系统 — 初始化设置",-1)])]),_:1})]),_:1}),l(s(h),null,{default:o(()=>[t("div",ve,[(d(),m(E,null,Z(P,(n,y)=>(d(),m(E,{key:y},[t("div",{class:le(["flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-xs font-medium transition-colors",y[...e[26]||(e[26]=[r("管理员密码",-1)])]),_:1}),l(s(k),{id:"admin-password",modelValue:a.value.adminPassword,"onUpdate:modelValue":e[2]||(e[2]=n=>a.value.adminPassword=n),type:"password",placeholder:"至少 6 位"},null,8,["modelValue"])]),t("div",ke,[l(s(v),{for:"confirm-password"},{default:o(()=>[...e[27]||(e[27]=[r("确认密码",-1)])]),_:1}),l(s(k),{id:"confirm-password",modelValue:a.value.confirmPassword,"onUpdate:modelValue":e[3]||(e[3]=n=>a.value.confirmPassword=n),type:"password",placeholder:"再次输入密码",onKeyup:ee(B,["enter"])},null,8,["modelValue"])]),L.value[0]?(d(),m("p",be,w(L.value[0]),1)):p("",!0)])):p("",!0),u.value===1?(d(),m("div",_e,[t("div",Ve,[l(s(v),{for:"project-name"},{default:o(()=>[...e[28]||(e[28]=[r("项目名称",-1)])]),_:1}),l(s(k),{id:"project-name",modelValue:a.value.projectName,"onUpdate:modelValue":e[4]||(e[4]=n=>a.value.projectName=n),placeholder:"OpenMOSS"},null,8,["modelValue"])]),t("div",Ce,[l(s(v),{for:"workspace-root"},{default:o(()=>[...e[29]||(e[29]=[r("工作目录",-1)])]),_:1}),l(s(k),{id:"workspace-root",modelValue:a.value.workspaceRoot,"onUpdate:modelValue":e[5]||(e[5]=n=>a.value.workspaceRoot=n),placeholder:"例如:/home/openclaw/workspace"},null,8,["modelValue"]),e[30]||(e[30]=t("p",{class:"text-xs text-muted-foreground"}," 部署 OpenClaw 服务器上的一个共享目录路径,所有 Agent 都会在此目录下读写产出物。请确保该路径在服务器上已存在且 Agent 进程有读写权限。 ",-1))])])):p("",!0),u.value===2?(d(),m("div",je,[t("div",Ae,[l(s(v),{for:"reg-token"},{default:o(()=>[...e[31]||(e[31]=[r("注册令牌",-1)])]),_:1}),t("div",Pe,[l(s(k),{id:"reg-token",modelValue:a.value.registrationToken,"onUpdate:modelValue":e[6]||(e[6]=n=>a.value.registrationToken=n),class:"flex-1 font-mono text-sm"},null,8,["modelValue"]),l(s(c),{variant:"outline",size:"icon",onClick:H,title:"重新生成"},{default:o(()=>[l(s(ne),{class:"h-4 w-4"})]),_:1}),l(s(c),{variant:"outline",size:"icon",onClick:e[7]||(e[7]=n=>I(a.value.registrationToken)),title:"复制"},{default:o(()=>[l(s(q),{class:"h-4 w-4"})]),_:1})]),e[32]||(e[32]=t("p",{class:"text-xs text-muted-foreground"},"Agent 注册时需要此令牌来验证身份",-1))]),t("div",Te,[t("div",null,[l(s(v),null,{default:o(()=>[...e[33]||(e[33]=[r("允许 Agent 自注册",-1)])]),_:1}),e[34]||(e[34]=t("p",{class:"text-xs text-muted-foreground"},"关闭后只能由管理员手动创建 Agent",-1))]),l(s(F),{modelValue:A.value,"onUpdate:modelValue":e[8]||(e[8]=n=>A.value=n)},null,8,["modelValue"])])])):p("",!0),u.value===3?(d(),m("div",he,[t("div",Se,[l(s(v),{for:"external-url"},{default:o(()=>[...e[35]||(e[35]=[r("🌐 服务访问地址",-1)])]),_:1}),l(s(k),{id:"external-url",modelValue:a.value.externalUrl,"onUpdate:modelValue":e[9]||(e[9]=n=>a.value.externalUrl=n),placeholder:"https://moss.example.com"},null,8,["modelValue"])]),e[36]||(e[36]=t("div",{class:"rounded-lg border bg-muted/30 p-4 space-y-3"},[t("div",null,[t("p",{class:"text-sm font-medium"},"💡 这是什么?"),t("p",{class:"text-xs text-muted-foreground mt-1"}," 你的 AI Agent 需要通过这个地址来: "),t("ul",{class:"text-xs text-muted-foreground mt-1 ml-4 list-disc space-y-0.5"},[t("li",null,"下载工作工具(task-cli.py)"),t("li",null,"获取技能配置(SKILL.md)"),t("li",null,"与任务系统通信、领取和提交任务")])]),t("div",null,[t("p",{class:"text-sm font-medium"},"📝 填写说明"),t("p",{class:"text-xs text-muted-foreground mt-1"},[r(" 请填写本服务器可从外网访问的完整地址。服务默认端口为 "),t("code",{class:"bg-muted px-1 py-0.5 rounded"},"6565"),r("。 ")]),t("div",{class:"flex flex-col gap-1 mt-2"},[t("div",{class:"flex items-center gap-2"},[t("code",{class:"text-xs bg-muted px-2 py-1 rounded"},"https://moss.example.com"),t("span",{class:"text-xs text-muted-foreground"},"← 使用反向代理(Nginx/Caddy)")]),t("div",{class:"flex items-center gap-2"},[t("code",{class:"text-xs bg-muted px-2 py-1 rounded"},"http://123.45.67.89:6565"),t("span",{class:"text-xs text-muted-foreground"},"← 直接用 IP + 端口")]),t("div",{class:"flex items-center gap-2"},[t("code",{class:"text-xs bg-muted px-2 py-1 rounded"},"http://127.0.0.1:6565"),t("span",{class:"text-xs text-muted-foreground"},"← 本地测试用")])])])],-1)),e[37]||(e[37]=t("p",{class:"text-xs text-muted-foreground"}," ⏩ 还没准备好?可以跳过,稍后在「系统设置」中配置 ",-1))])):p("",!0),u.value===4?(d(),m("div",Ue,[t("div",$e,[t("div",null,[l(s(v),null,{default:o(()=>[...e[38]||(e[38]=[r("启用通知推送",-1)])]),_:1}),e[39]||(e[39]=t("p",{class:"text-xs text-muted-foreground"},"Agent 完成任务、审查驳回等事件时发送通知",-1))]),l(s(F),{modelValue:_.value,"onUpdate:modelValue":e[10]||(e[10]=n=>_.value=n)},null,8,["modelValue"])]),_.value?(d(),m("div",Ne,[l(s(v),{for:"channels"},{default:o(()=>[...e[40]||(e[40]=[r("通知渠道",-1)])]),_:1}),te(t("textarea",{id:"channels","onUpdate:modelValue":e[11]||(e[11]=n=>a.value.notificationChannels=n),class:"flex min-h-[80px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:`每行一个,格式:类型:ID +例如:chat:oc_xxx`},null,512),[[se,a.value.notificationChannels]]),e[41]||(e[41]=t("p",{class:"text-xs text-muted-foreground"}," 此项可以稍后在「系统设置」中配置 ",-1))])):p("",!0)])):p("",!0),g.value?(d(),m("p",Re,w(g.value),1)):p("",!0),t("div",Me,[u.value>0?(d(),x(s(c),{key:0,variant:"outline",onClick:J},{default:o(()=>[l(s(oe),{class:"mr-1 h-4 w-4"}),e[42]||(e[42]=r(" 上一步 ",-1))]),_:1})):(d(),m("div",ze)),u.value[e[43]||(e[43]=r(" 下一步 ",-1)),l(s(N),{class:"ml-1 h-4 w-4"})]),_:1},8,["disabled"])):(d(),x(s(c),{key:3,onClick:Q,disabled:b.value||!V.value},{default:o(()=>[r(w(b.value?"正在初始化...":"完成设置")+" ",1),b.value?p("",!0):(d(),x(s(C),{key:0,class:"ml-1 h-4 w-4"}))]),_:1},8,["disabled"]))])]),_:1})]),_:1}))]))}});export{st as default}; diff --git a/cloudflare/pages/assets/SheetDescription.vue_vue_type_script_setup_true_lang-CC6GyU0A.js b/cloudflare/pages/assets/SheetDescription.vue_vue_type_script_setup_true_lang-CC6GyU0A.js new file mode 100644 index 0000000..c8a7ece --- /dev/null +++ b/cloudflare/pages/assets/SheetDescription.vue_vue_type_script_setup_true_lang-CC6GyU0A.js @@ -0,0 +1 @@ +import{u as d}from"./useForwardExpose-DjCgLuye.js";import{P as _}from"./index-D0L1R3xN.js";import{i as m}from"./SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js";import{d as a,l as i,b as l,w as n,q as p,x as c,u as e,N as f}from"./index-BYiXDk_r.js";import{r as g}from"./index-Ct5H-N73.js";var x=a({__name:"DialogDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"p"}},setup(s){const t=s;d();const o=m();return(r,u)=>(i(),l(e(_),c(t,{id:e(o).descriptionId}),{default:n(()=>[p(r.$slots,"default")]),_:3},16,["id"]))}}),D=x;const P=a({__name:"SheetDescription",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(s){const t=s,o=g(t,"class");return(r,u)=>(i(),l(e(D),c({"data-slot":"sheet-description",class:e(f)("text-muted-foreground text-sm",t.class)},e(o)),{default:n(()=>[p(r.$slots,"default")]),_:3},16,["class"]))}});export{P as _}; diff --git a/cloudflare/pages/assets/SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js b/cloudflare/pages/assets/SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js new file mode 100644 index 0000000..ba46816 --- /dev/null +++ b/cloudflare/pages/assets/SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js @@ -0,0 +1 @@ +import{u as B,a as E}from"./VisuallyHidden-DmVvgUgH.js";import{d as g,V as R,q as m,u as e,r as b,l as c,b as _,w as i,x as v,o as S,e as C,i as x,O as F,P as I,N as h,X as T,a as K,c as N,n as V}from"./index-BYiXDk_r.js";import{u as y}from"./useForwardExpose-DjCgLuye.js";import{P as q}from"./index-D0L1R3xN.js";import{u as A,g as $,P as M}from"./Presence-Sy1r65hd.js";import{g as j,F as z,u as L,a as H}from"./utils-TyZrBBEb.js";import{D as U,T as X}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js";import{r as w}from"./index-Ct5H-N73.js";import{c as G}from"./createContext-a9Tpfoxo.js";import{a as J}from"./index-CEPd9Ray.js";const[D,Q]=G("DialogRoot");var W=g({inheritAttrs:!1,__name:"DialogRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:["update:open"],setup(l,{emit:s}){const o=l,t=J(o,"open",s,{defaultValue:o.defaultOpen,passive:o.open===void 0}),p=b(),f=b(),{modal:n}=R(o);return Q({open:t,modal:n,openModal:()=>{t.value=!0},onOpenChange:u=>{t.value=u},onOpenToggle:()=>{t.value=!t.value},contentId:"",titleId:"",descriptionId:"",triggerElement:p,contentElement:f}),(u,r)=>m(u.$slots,"default",{open:e(t),close:()=>t.value=!1})}}),Y=W,Z=g({__name:"DialogClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(l){const s=l;y();const o=D();return(a,t)=>(c(),_(e(q),v(s,{type:a.as==="button"?"button":void 0,onClick:t[0]||(t[0]=p=>e(o).onOpenChange(!1))}),{default:i(()=>[m(a.$slots,"default")]),_:3},16,["type"]))}}),ee=Z,te=g({__name:"DialogContentImpl",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(l,{emit:s}){const o=l,a=s,t=D(),{forwardRef:p,currentElement:f}=y();return t.titleId||=A(void 0,"reka-dialog-title"),t.descriptionId||=A(void 0,"reka-dialog-description"),S(()=>{t.contentElement=f,$()!==document.body&&(t.triggerElement.value=$())}),(n,u)=>(c(),_(e(z),{"as-child":"",loop:"",trapped:o.trapFocus,onMountAutoFocus:u[5]||(u[5]=r=>a("openAutoFocus",r)),onUnmountAutoFocus:u[6]||(u[6]=r=>a("closeAutoFocus",r))},{default:i(()=>[C(e(U),v({id:e(t).contentId,ref:e(p),as:n.as,"as-child":n.asChild,"disable-outside-pointer-events":n.disableOutsidePointerEvents,role:"dialog","aria-describedby":e(t).descriptionId,"aria-labelledby":e(t).titleId,"data-state":e(j)(e(t).open.value)},n.$attrs,{onDismiss:u[0]||(u[0]=r=>e(t).onOpenChange(!1)),onEscapeKeyDown:u[1]||(u[1]=r=>a("escapeKeyDown",r)),onFocusOutside:u[2]||(u[2]=r=>a("focusOutside",r)),onInteractOutside:u[3]||(u[3]=r=>a("interactOutside",r)),onPointerDownOutside:u[4]||(u[4]=r=>a("pointerDownOutside",r))}),{default:i(()=>[m(n.$slots,"default")]),_:3},16,["id","as","as-child","disable-outside-pointer-events","aria-describedby","aria-labelledby","data-state"])]),_:3},8,["trapped"]))}}),k=te,oe=g({__name:"DialogContentModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(l,{emit:s}){const o=l,a=s,t=D(),p=B(a),{forwardRef:f,currentElement:n}=y();return L(n),(u,r)=>(c(),_(k,v({...o,...e(p)},{ref:e(f),"trap-focus":e(t).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:r[0]||(r[0]=d=>{d.defaultPrevented||(d.preventDefault(),e(t).triggerElement.value?.focus())}),onPointerDownOutside:r[1]||(r[1]=d=>{const O=d.detail.originalEvent,P=O.button===0&&O.ctrlKey===!0;(O.button===2||P)&&d.preventDefault()}),onFocusOutside:r[2]||(r[2]=d=>{d.preventDefault()})}),{default:i(()=>[m(u.$slots,"default")]),_:3},16,["trap-focus"]))}}),ae=oe,se=g({__name:"DialogContentNonModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(l,{emit:s}){const o=l,t=B(s);y();const p=D(),f=b(!1),n=b(!1);return(u,r)=>(c(),_(k,v({...o,...e(t)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:r[0]||(r[0]=d=>{d.defaultPrevented||(f.value||e(p).triggerElement.value?.focus(),d.preventDefault()),f.value=!1,n.value=!1}),onInteractOutside:r[1]||(r[1]=d=>{d.defaultPrevented||(f.value=!0,d.detail.originalEvent.type==="pointerdown"&&(n.value=!0));const O=d.target;e(p).triggerElement.value?.contains(O)&&d.preventDefault(),d.detail.originalEvent.type==="focusin"&&n.value&&d.preventDefault()})}),{default:i(()=>[m(u.$slots,"default")]),_:3},16))}}),le=se,re=g({__name:"DialogContent",props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(l,{emit:s}){const o=l,a=s,t=D(),p=B(a),{forwardRef:f}=y();return(n,u)=>(c(),_(e(M),{present:n.forceMount||e(t).open.value},{default:i(()=>[e(t).modal.value?(c(),_(ae,v({key:0,ref:e(f)},{...o,...e(p),...n.$attrs}),{default:i(()=>[m(n.$slots,"default")]),_:3},16)):(c(),_(le,v({key:1,ref:e(f)},{...o,...e(p),...n.$attrs}),{default:i(()=>[m(n.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),ne=re,ue=g({__name:"DialogOverlayImpl",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(l){const s=D();return H(!0),y(),(o,a)=>(c(),_(e(q),{as:o.as,"as-child":o.asChild,"data-state":e(s).open.value?"open":"closed",style:{"pointer-events":"auto"}},{default:i(()=>[m(o.$slots,"default")]),_:3},8,["as","as-child","data-state"]))}}),ie=ue,de=g({__name:"DialogOverlay",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(l){const s=D(),{forwardRef:o}=y();return(a,t)=>e(s)?.modal.value?(c(),_(e(M),{key:0,present:a.forceMount||e(s).open.value},{default:i(()=>[C(ie,v(a.$attrs,{ref:e(o),as:a.as,"as-child":a.asChild}),{default:i(()=>[m(a.$slots,"default")]),_:3},16,["as","as-child"])]),_:3},8,["present"])):x("v-if",!0)}}),pe=de,fe=g({__name:"DialogPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(l){const s=l;return(o,a)=>(c(),_(e(X),F(I(s)),{default:i(()=>[m(o.$slots,"default")]),_:3},16))}}),ce=fe,me=g({__name:"DialogTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"h2"}},setup(l){const s=l,o=D();return y(),(a,t)=>(c(),_(e(q),v(s,{id:e(o).titleId}),{default:i(()=>[m(a.$slots,"default")]),_:3},16,["id"]))}}),_e=me;const Ae=g({__name:"Sheet",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(l,{emit:s}){const t=E(l,s);return(p,f)=>(c(),_(e(Y),v({"data-slot":"sheet"},e(t)),{default:i(n=>[m(p.$slots,"default",F(I(n)))]),_:3},16))}}),ge=g({__name:"SheetOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(l){const s=l,o=w(s,"class");return(a,t)=>(c(),_(e(pe),v({"data-slot":"sheet-overlay",class:e(h)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",s.class)},e(o)),{default:i(()=>[m(a.$slots,"default")]),_:3},16,["class"]))}}),$e=g({inheritAttrs:!1,__name:"SheetContent",props:{class:{type:[Boolean,null,String,Object,Array]},side:{default:"right"},forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(l,{emit:s}){const o=l,a=s,t=w(o,"class","side"),p=E(t,a);return(f,n)=>(c(),_(e(ce),null,{default:i(()=>[C(ge),C(e(ne),v({"data-slot":"sheet-content",class:e(h)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",l.side==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",l.side==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",l.side==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",l.side==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",o.class)},{...f.$attrs,...e(p)}),{default:i(()=>[m(f.$slots,"default"),C(e(ee),{class:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none"},{default:i(()=>[C(e(T),{class:"size-4"}),n[0]||(n[0]=K("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3}))}}),Ee=g({__name:"SheetHeader",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(l){const s=l;return(o,a)=>(c(),N("div",{"data-slot":"sheet-header",class:V(e(h)("flex flex-col gap-1.5 p-4",s.class))},[m(o.$slots,"default")],2))}}),Fe=g({__name:"SheetTitle",props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(l){const s=l,o=w(s,"class");return(a,t)=>(c(),_(e(_e),v({"data-slot":"sheet-title",class:e(h)("text-foreground font-semibold",s.class)},e(o)),{default:i(()=>[m(a.$slots,"default")]),_:3},16,["class"]))}});export{Ae as _,$e as a,Ee as b,Fe as c,D as i}; diff --git a/cloudflare/pages/assets/Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js b/cloudflare/pages/assets/Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js new file mode 100644 index 0000000..67b4b98 --- /dev/null +++ b/cloudflare/pages/assets/Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js @@ -0,0 +1 @@ +import{V as E,a as $}from"./VisuallyHidden-DmVvgUgH.js";import{c as A}from"./createContext-a9Tpfoxo.js";import{c as P,a as R}from"./index-CEPd9Ray.js";import{k as p,a6 as H,d as v,H as j,l as o,b as c,x as m,c as g,i as B,F as k,g as F,V as I,w as h,q,u,h as O,z as T,N as V,e as z,n as M,O as K,P as L}from"./index-BYiXDk_r.js";import{u as S}from"./useForwardExpose-DjCgLuye.js";import{P as C}from"./index-D0L1R3xN.js";import{u as N}from"./usePrimitiveElement-JaAYjjRd.js";import{r as D}from"./index-Ct5H-N73.js";function W(n){return p(()=>H(n)?!!P(n)?.closest("form"):!0)}var G=v({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(n){const e=n,{primitiveElement:a,currentElement:d}=N(),t=p(()=>e.checked??e.value);return j(t,(l,r)=>{if(!d.value)return;const i=d.value,f=window.HTMLInputElement.prototype,y=Object.getOwnPropertyDescriptor(f,"value").set;if(y&&l!==r){const _=new Event("input",{bubbles:!0}),s=new Event("change",{bubbles:!0});y.call(i,l),i.dispatchEvent(_),i.dispatchEvent(s)}}),(l,r)=>(o(),c(E,m({ref_key:"primitiveElement",ref:a},{...e,...l.$attrs},{as:"input"}),null,16))}}),w=G,J=v({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(n){const e=n,a=p(()=>typeof e.value=="object"&&Array.isArray(e.value)&&e.value.length===0&&e.required),d=p(()=>typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"||e.value===null||e.value===void 0?[{name:e.name,value:e.value}]:typeof e.value=="object"&&Array.isArray(e.value)?e.value.flatMap((t,l)=>typeof t=="object"?Object.entries(t).map(([r,i])=>({name:`${e.name}[${l}][${r}]`,value:i})):{name:`${e.name}[${l}]`,value:t}):e.value!==null&&typeof e.value=="object"&&!Array.isArray(e.value)?Object.entries(e.value).map(([t,l])=>({name:`${e.name}[${t}]`,value:l})):[]);return(t,l)=>(o(),g(k,null,[B(" We render single input if it's required "),a.value?(o(),c(w,m({key:t.name},{...e,...t.$attrs},{name:t.name,value:t.value}),null,16,["name","value"])):(o(!0),g(k,{key:1},F(d.value,r=>(o(),c(w,m({key:r.name},{ref_for:!0},{...e,...t.$attrs},{name:r.name,value:r.value}),null,16,["name","value"]))),128))],2112))}}),Q=J;const[U,X]=A("SwitchRoot");var Y=v({__name:"SwitchRoot",props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:"on"},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue"],setup(n,{emit:e}){const a=n,d=e,{disabled:t}=I(a),l=R(a,"modelValue",d,{defaultValue:a.defaultValue??a.falseValue,passive:a.modelValue===void 0}),r=p(()=>l.value===a.trueValue);function i(){t.value||(l.value=r.value?a.falseValue:a.trueValue)}const{forwardRef:f,currentElement:b}=S(),y=W(b),_=p(()=>a.id&&b.value?document.querySelector(`[for="${a.id}"]`)?.innerText:void 0);return X({checked:r,toggleCheck:i,disabled:t}),(s,ae)=>(o(),c(u(C),m(s.$attrs,{id:s.id,ref:u(f),role:"switch",type:s.as==="button"?"button":void 0,value:s.value,"aria-label":s.$attrs["aria-label"]||_.value,"aria-checked":r.value,"aria-required":s.required,"data-state":r.value?"checked":"unchecked","data-disabled":u(t)?"":void 0,"as-child":s.asChild,as:s.as,disabled:u(t),onClick:i,onKeydown:O(T(i,["prevent"]),["enter"])}),{default:h(()=>[q(s.$slots,"default",{modelValue:u(l),checked:r.value}),u(y)&&s.name?(o(),c(u(Q),{key:0,type:"checkbox",name:s.name,disabled:u(t),required:s.required,value:s.value,checked:r.value},null,8,["name","disabled","required","value","checked"])):B("v-if",!0)]),_:3},16,["id","type","value","aria-label","aria-checked","aria-required","data-state","data-disabled","as-child","as","disabled","onKeydown"]))}}),Z=Y,x=v({__name:"SwitchThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(n){const e=U();return S(),(a,d)=>(o(),c(u(C),{"data-state":u(e).checked.value?"checked":"unchecked","data-disabled":u(e).disabled.value?"":void 0,"as-child":a.asChild,as:a.as},{default:h(()=>[q(a.$slots,"default")]),_:3},8,["data-state","data-disabled","as-child","as"]))}}),ee=x;const oe=v({__name:"Switch",props:{defaultValue:{},modelValue:{},disabled:{type:Boolean},id:{},value:{},trueValue:{},falseValue:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:["update:modelValue"],setup(n,{emit:e}){const a=n,d=e,t=D(a,"class"),l=$(t,d);return(r,i)=>(o(),c(u(Z),m({"data-slot":"switch"},u(l),{class:u(V)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a.class)}),{default:h(f=>[z(u(ee),{"data-slot":"switch-thumb",class:M(u(V)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"))},{default:h(()=>[q(r.$slots,"thumb",K(L(f)))]),_:2},1032,["class"])]),_:3},16,["class"]))}});export{oe as _}; diff --git a/cloudflare/pages/assets/TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js b/cloudflare/pages/assets/TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js new file mode 100644 index 0000000..012a726 --- /dev/null +++ b/cloudflare/pages/assets/TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js @@ -0,0 +1 @@ +import{m as L,r as C,k as g,ad as oe,d as m,W as se,ae as x,H as re,G as ne,af as le,V as $,l as h,b as _,w as v,e as q,u as a,q as I,o as U,A as ie,C as ue,ab as de,ag as ce,D as fe,i as pe,h as ve,z as me,x as P,N as E,O as be,P as ge}from"./index-BYiXDk_r.js";import{a as ye,b as he}from"./VisuallyHidden-DmVvgUgH.js";import{r as k}from"./index-Ct5H-N73.js";import{u as V}from"./useForwardExpose-DjCgLuye.js";import{i as _e,g as K,u as z,P as Ie}from"./Presence-Sy1r65hd.js";import{S as D,P as F}from"./index-D0L1R3xN.js";import{u as N}from"./usePrimitiveElement-JaAYjjRd.js";import{c as G}from"./createContext-a9Tpfoxo.js";import{a as H}from"./index-CEPd9Ray.js";const Xe=L("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const Ze=L("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);function Y(s){const e=_e({dir:C("ltr")});return g(()=>s?.value||e.dir?.value||"ltr")}const j="data-reka-collection-item";function W(s={}){const{key:e="",isProvider:o=!1}=s,t=`${e}CollectionProvider`;let l;if(o){const i=C(new Map);l={collectionRef:C(),itemMap:i},le(t,l)}else l=oe(t);const p=(i=!1)=>{const n=l.collectionRef.value;if(!n)return[];const f=Array.from(n.querySelectorAll(`[${j}]`)),b=Array.from(l.itemMap.value.values()).sort((S,M)=>f.indexOf(S.ref)-f.indexOf(M.ref));return i?b:b.filter(S=>S.ref.dataset.disabled!=="")},c=m({name:"CollectionSlot",inheritAttrs:!1,setup(i,{slots:n,attrs:f}){const{primitiveElement:w,currentElement:b}=N();return re(b,()=>{l.collectionRef.value=b.value}),()=>x(D,{ref:w,...f},n)}}),u=m({name:"CollectionItem",inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(i,{slots:n,attrs:f}){const{primitiveElement:w,currentElement:b}=N();return se(S=>{if(b.value){const M=ne(b.value);l.itemMap.value.set(M,{ref:b.value,value:i.value}),S(()=>l.itemMap.value.delete(M))}}),()=>x(D,{...f,[j]:"",ref:w},n)}}),d=g(()=>Array.from(l.itemMap.value.values())),r=g(()=>l.itemMap.value.size);return{getItems:p,reactiveItems:d,itemMapSize:r,CollectionSlot:c,CollectionItem:u}}const Te="rovingFocusGroup.onEntryFocus",Ce={bubbles:!1,cancelable:!0},we={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Se(s,e){return e!=="rtl"?s:s==="ArrowLeft"?"ArrowRight":s==="ArrowRight"?"ArrowLeft":s}function Me(s,e,o){const t=Se(s.key,o);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(t))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(t)))return we[t]}function J(s,e=!1){const o=K();for(const t of s)if(t===o||(t.focus({preventScroll:e}),K()!==o))return}function Ae(s,e){return s.map((o,t)=>s[(e+t)%s.length])}const[Fe,Re]=G("RovingFocusGroup");var qe=m({__name:"RovingFocusGroup",props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["entryFocus","update:currentTabStopId"],setup(s,{expose:e,emit:o}){const t=s,l=o,{loop:p,orientation:c,dir:u}=$(t),d=Y(u),r=H(t,"currentTabStopId",l,{defaultValue:t.defaultCurrentTabStopId,passive:t.currentTabStopId===void 0}),i=C(!1),n=C(!1),f=C(0),{getItems:w,CollectionSlot:b}=W({isProvider:!0});function S(y){const A=!n.value;if(y.currentTarget&&y.target===y.currentTarget&&A&&!i.value){const R=new CustomEvent(Te,Ce);if(y.currentTarget.dispatchEvent(R),l("entryFocus",R),!R.defaultPrevented){const B=w().map(T=>T.ref).filter(T=>T.dataset.disabled!==""),Z=B.find(T=>T.getAttribute("data-active")===""),ee=B.find(T=>T.getAttribute("data-highlighted")===""),te=B.find(T=>T.id===r.value),ae=[Z,ee,te,...B].filter(Boolean);J(ae,t.preventScrollOnEntryFocus)}}n.value=!1}function M(){setTimeout(()=>{n.value=!1},1)}return e({getItems:w}),Re({loop:p,dir:d,orientation:c,currentTabStopId:r,onItemFocus:y=>{r.value=y},onItemShiftTab:()=>{i.value=!0},onFocusableItemAdd:()=>{f.value++},onFocusableItemRemove:()=>{f.value--}}),(y,A)=>(h(),_(a(b),null,{default:v(()=>[q(a(F),{tabindex:i.value||f.value===0?-1:0,"data-orientation":a(c),as:y.as,"as-child":y.asChild,dir:a(d),style:{outline:"none"},onMousedown:A[0]||(A[0]=R=>n.value=!0),onMouseup:M,onFocus:S,onBlur:A[1]||(A[1]=R=>i.value=!1)},{default:v(()=>[I(y.$slots,"default")]),_:3},8,["tabindex","data-orientation","as","as-child","dir"])]),_:3}))}}),Be=qe,Pe=m({__name:"RovingFocusItem",props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(s){const e=s,o=Fe(),t=z(),l=g(()=>e.tabStopId||t),p=g(()=>o.currentTabStopId.value===l.value),{getItems:c,CollectionItem:u}=W();U(()=>{e.focusable&&o.onFocusableItemAdd()}),ie(()=>{e.focusable&&o.onFocusableItemRemove()});function d(r){if(r.key==="Tab"&&r.shiftKey){o.onItemShiftTab();return}if(r.target!==r.currentTarget)return;const i=Me(r,o.orientation.value,o.dir.value);if(i!==void 0){if(r.metaKey||r.ctrlKey||r.altKey||!e.allowShiftKey&&r.shiftKey)return;r.preventDefault();let n=[...c().map(f=>f.ref).filter(f=>f.dataset.disabled!=="")];if(i==="last")n.reverse();else if(i==="prev"||i==="next"){i==="prev"&&n.reverse();const f=n.indexOf(r.currentTarget);n=o.loop.value?Ae(n,f+1):n.slice(f+1)}ue(()=>J(n))}}return(r,i)=>(h(),_(a(u),null,{default:v(()=>[q(a(F),{tabindex:p.value?0:-1,"data-orientation":a(o).orientation.value,"data-active":r.active?"":void 0,"data-disabled":r.focusable?void 0:"",as:r.as,"as-child":r.asChild,onMousedown:i[0]||(i[0]=n=>{r.focusable?a(o).onItemFocus(l.value):n.preventDefault()}),onFocus:i[1]||(i[1]=n=>a(o).onItemFocus(l.value)),onKeydown:d},{default:v(()=>[I(r.$slots,"default")]),_:3},8,["tabindex","data-orientation","data-active","data-disabled","as","as-child"])]),_:3}))}}),Ee=Pe;const[O,ke]=G("TabsRoot");var Ve=m({__name:"TabsRoot",props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:"horizontal"},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:"automatic"},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue"],setup(s,{emit:e}){const o=s,t=e,{orientation:l,unmountOnHide:p,dir:c}=$(o),u=Y(c);V();const d=H(o,"modelValue",t,{defaultValue:o.defaultValue,passive:o.modelValue===void 0}),r=C(),i=de(new Set);return ke({modelValue:d,changeModelValue:n=>{d.value=n},orientation:l,dir:u,unmountOnHide:p,activationMode:o.activationMode,baseId:z(void 0,"reka-tabs"),tabsList:r,contentIds:i,registerContent:n=>{i.value=new Set([...i.value,n])},unregisterContent:n=>{const f=new Set(i.value);f.delete(n),i.value=f}}),(n,f)=>(h(),_(a(F),{dir:a(u),"data-orientation":a(l),"as-child":n.asChild,as:n.as},{default:v(()=>[I(n.$slots,"default",{modelValue:a(d)})]),_:3},8,["dir","data-orientation","as-child","as"]))}}),$e=Ve;function Q(s,e){return`${s}-trigger-${e}`}function X(s,e){return`${s}-content-${e}`}var Oe=m({__name:"TabsContent",props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const e=s,{forwardRef:o}=V(),t=O(),l=g(()=>Q(t.baseId,e.value)),p=g(()=>X(t.baseId,e.value)),c=g(()=>e.value===t.modelValue.value),u=C(c.value);return U(()=>{t.registerContent(e.value),requestAnimationFrame(()=>{u.value=!1})}),ce(()=>{t.unregisterContent(e.value)}),(d,r)=>(h(),_(a(Ie),{present:d.forceMount||c.value,"force-mount":""},{default:v(({present:i})=>[q(a(F),{id:p.value,ref:a(o),"as-child":d.asChild,as:d.as,role:"tabpanel","data-state":c.value?"active":"inactive","data-orientation":a(t).orientation.value,"aria-labelledby":l.value,hidden:!i,tabindex:"0",style:fe({animationDuration:u.value?"0s":void 0})},{default:v(()=>[!a(t).unmountOnHide.value||i?I(d.$slots,"default",{key:0}):pe("v-if",!0)]),_:2},1032,["id","as-child","as","data-state","data-orientation","aria-labelledby","hidden","style"])]),_:3},8,["present"]))}}),xe=Oe,Ke=m({__name:"TabsList",props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const e=s,{loop:o}=$(e),{forwardRef:t,currentElement:l}=V(),p=O();return p.tabsList=l,(c,u)=>(h(),_(a(Be),{"as-child":"",orientation:a(p).orientation.value,dir:a(p).dir.value,loop:a(o)},{default:v(()=>[q(a(F),{ref:a(t),role:"tablist","as-child":c.asChild,as:c.as,"aria-orientation":a(p).orientation.value},{default:v(()=>[I(c.$slots,"default")]),_:3},8,["as-child","as","aria-orientation"])]),_:3},8,["orientation","dir","loop"]))}}),De=Ke,Ne=m({__name:"TabsTrigger",props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(s){const e=s,{forwardRef:o}=V(),t=O(),l=g(()=>Q(t.baseId,e.value)),p=g(()=>t.contentIds.value.has(e.value)?X(t.baseId,e.value):void 0),c=g(()=>e.value===t.modelValue.value);return(u,d)=>(h(),_(a(Ee),{"as-child":"",focusable:!u.disabled,active:c.value},{default:v(()=>[q(a(F),{id:l.value,ref:a(o),role:"tab",type:u.as==="button"?"button":void 0,as:u.as,"as-child":u.asChild,"aria-selected":c.value?"true":"false","aria-controls":p.value,"data-state":c.value?"active":"inactive",disabled:u.disabled,"data-disabled":u.disabled?"":void 0,"data-orientation":a(t).orientation.value,onMousedown:d[0]||(d[0]=me(r=>{!u.disabled&&r.ctrlKey===!1?a(t).changeModelValue(u.value):r.preventDefault()},["left"])),onKeydown:d[1]||(d[1]=ve(r=>a(t).changeModelValue(u.value),["enter","space"])),onFocus:d[2]||(d[2]=()=>{const r=a(t).activationMode!=="manual";!c.value&&!u.disabled&&r&&a(t).changeModelValue(u.value)})},{default:v(()=>[I(u.$slots,"default")]),_:3},8,["id","type","as","as-child","aria-selected","aria-controls","data-state","disabled","data-disabled","data-orientation"])]),_:3},8,["focusable","active"]))}}),je=Ne;const et=m({__name:"Tabs",props:{defaultValue:{},orientation:{},dir:{},activationMode:{},modelValue:{},unmountOnHide:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:["update:modelValue"],setup(s,{emit:e}){const o=s,t=e,l=k(o,"class"),p=ye(l,t);return(c,u)=>(h(),_(a($e),P({"data-slot":"tabs"},a(p),{class:a(E)("flex flex-col gap-2",o.class)}),{default:v(d=>[I(c.$slots,"default",be(ge(d)))]),_:3},16,["class"]))}}),tt=m({__name:"TabsContent",props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(s){const e=s,o=k(e,"class");return(t,l)=>(h(),_(a(xe),P({"data-slot":"tabs-content",class:a(E)("flex-1 outline-none",e.class)},a(o)),{default:v(()=>[I(t.$slots,"default")]),_:3},16,["class"]))}}),at=m({__name:"TabsList",props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(s){const e=s,o=k(e,"class");return(t,l)=>(h(),_(a(De),P({"data-slot":"tabs-list"},a(o),{class:a(E)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e.class)}),{default:v(()=>[I(t.$slots,"default")]),_:3},16,["class"]))}}),ot=m({__name:"TabsTrigger",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(s){const e=s,o=k(e,"class"),t=he(o);return(l,p)=>(h(),_(a(je),P({"data-slot":"tabs-trigger",class:a(E)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e.class)},a(t)),{default:v(()=>[I(l.$slots,"default")]),_:3},16,["class"]))}});export{Xe as P,Be as R,Ze as T,at as _,W as a,ot as b,tt as c,et as d,Y as u}; diff --git a/cloudflare/pages/assets/TasksView-CCGXWEZ4.js b/cloudflare/pages/assets/TasksView-CCGXWEZ4.js new file mode 100644 index 0000000..0bf8b9f --- /dev/null +++ b/cloudflare/pages/assets/TasksView-CCGXWEZ4.js @@ -0,0 +1 @@ +import{u as qe}from"./index-CEPd9Ray.js";import{m as Fe,p as G,d as De,l as r,b as K,u as n,w as d,e as o,y as Oe,D as E,n as y,f as i,t as l,k as ae,N as Ke,H as he,o as Ue,r as v,a as e,c as u,g as F,F as j,L as se,i as x,C as Ze}from"./index-BYiXDk_r.js";import{_ as T,A as we,a as Te}from"./index-wmMfISvJ.js";import{_ as h}from"./index-D0L1R3xN.js";import{_ as Ge,a as He,b as We}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js";import{_ as Qe}from"./Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js";import{_ as Ce}from"./Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js";import{a as Je,b as Xe,c as Ye,_ as et}from"./SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js";import{_ as tt}from"./SheetDescription.vue_vue_type_script_setup_true_lang-CC6GyU0A.js";import{_ as st}from"./TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js";import{S as at}from"./search-3_RVfAHZ.js";import{R as lt}from"./refresh-cw-DOzI5zLk.js";import{C as $e}from"./circle-alert-DI3FQNzC.js";import{L as ot}from"./list-todo-DaXA5Y93.js";import{u as nt}from"./index-Ct5H-N73.js";import"./VisuallyHidden-DmVvgUgH.js";import"./useForwardExpose-DjCgLuye.js";import"./createContext-a9Tpfoxo.js";import"./Presence-Sy1r65hd.js";import"./TooltipProvider-Ck2YUJut.js";import"./utils-TyZrBBEb.js";const rt=Fe("folder-kanban",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]),O={list:b=>G.get("/admin/tasks",{params:b}),get:b=>G.get(`/admin/tasks/${b}`),listModules:(b,_)=>G.get(`/admin/tasks/${b}/modules`,{params:_}),listSubTasks:(b,_)=>G.get(`/admin/tasks/${b}/sub-tasks`,{params:_}),getSubTask:b=>G.get(`/admin/sub-tasks/${b}`)},L=De({__name:"TextOverflowTooltip",props:{text:{},as:{default:"div"},lines:{default:1},side:{default:"top"},class:{type:[Boolean,null,String,Object,Array]},fallback:{default:"-"}},setup(b){const _=b,V=ae(()=>!_.text||!_.text.trim()?_.fallback:_.text),P=ae(()=>{if(!(_.lines<=1))return{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:String(_.lines),overflow:"hidden"}}),S=ae(()=>Ke(_.lines<=1?"truncate":"overflow-hidden break-words",_.class));return(A,B)=>(r(),K(n(Ge),null,{default:d(()=>[o(n(He),{"as-child":""},{default:d(()=>[(r(),K(Oe(b.as),{class:y(S.value),style:E(P.value),title:V.value},{default:d(()=>[i(l(V.value),1)]),_:1},8,["class","style","title"]))]),_:1}),o(n(We),{side:b.side,class:"max-w-sm whitespace-pre-wrap break-words"},{default:d(()=>[i(l(V.value),1)]),_:1},8,["side"])]),_:1}))}}),ut={class:"flex flex-col h-[calc(100vh-3.5rem)]"},dt={class:"shrink-0 border-b border-border/40 bg-background px-4 py-3 space-y-2.5"},it={class:"flex items-center gap-3"},ct={class:"relative flex-1 max-w-md"},vt={class:"flex items-center gap-4"},mt={class:"flex flex-wrap gap-1.5"},ft={class:"flex gap-1.5"},pt={class:"flex flex-1 min-h-0"},_t={class:"w-full lg:w-[380px] xl:w-[420px] shrink-0 border-r border-border/40 overflow-y-auto"},xt={key:0,class:"p-6 text-center"},bt={class:"mt-2 text-sm"},gt={key:1,class:"flex items-center justify-center py-16"},kt=["onClick"],yt={class:"flex items-start justify-between gap-2"},ht={class:"min-w-0 flex-1"},wt={class:"mt-2 flex items-center gap-3 text-[11px] text-muted-foreground"},Tt={class:"tabular-nums"},Ct={class:"flex-1 flex items-center gap-1.5"},$t={class:"flex-1 h-1.5 rounded-full bg-muted max-w-[80px]"},St={class:"tabular-nums"},Dt={class:"tabular-nums"},zt={key:0,class:"flex items-center justify-center gap-2 py-3 border-t border-border/30 text-xs text-muted-foreground"},jt={class:"tabular-nums"},Lt={key:3,class:"flex flex-col items-center justify-center py-16 text-muted-foreground/50"},Pt={key:0,class:"flex items-center justify-center flex-1"},At={key:1,class:"flex flex-col items-center justify-center flex-1 text-muted-foreground/50"},It={class:"text-sm"},Mt={class:"flex items-start justify-between gap-3"},Et={class:"min-w-0 space-y-1"},Vt={class:"flex gap-1.5 shrink-0"},Bt={class:"mt-4 rounded-xl border border-border/50 bg-muted/20 p-3.5 space-y-3"},Nt={class:"flex items-center justify-between text-xs"},Rt={class:"font-semibold tabular-nums"},qt={class:"h-2 rounded-full bg-muted"},Ft={class:"flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground tabular-nums"},Ot={class:"font-medium text-foreground"},Kt={class:"font-medium text-foreground"},Ut={class:"font-medium text-foreground"},Zt={class:"font-medium text-foreground"},Gt={class:"font-medium text-foreground"},Ht={key:0},Wt={class:"font-medium text-rose-500"},Qt={key:1},Jt={class:"font-medium text-amber-500"},Xt={class:"flex gap-4 text-[11px] text-muted-foreground/60"},Yt={key:0},es={class:"flex items-center justify-between mb-2"},ts={class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider"},ss={class:"space-y-2"},as=["onClick"],ls={class:"flex items-center justify-between gap-2"},os={class:"flex items-center gap-1.5 text-xs text-muted-foreground tabular-nums shrink-0"},ns={class:"w-12 h-1.5 rounded-full bg-muted"},rs={class:"flex items-center justify-between mb-2"},us={class:"text-xs font-medium text-muted-foreground/60 uppercase tracking-wider"},ds={class:"flex items-center gap-2 text-xs text-muted-foreground"},is={class:"tabular-nums"},cs={class:"flex flex-wrap gap-1.5 mb-3"},vs={key:0,class:"flex items-center justify-center py-10"},ms={key:1,class:"text-center py-6"},fs={class:"text-sm text-muted-foreground"},ps=["onClick"],_s={class:"flex items-start justify-between gap-2"},xs={class:"min-w-0 flex-1"},bs={class:"flex items-center gap-1.5"},gs={class:"mt-1.5 flex flex-wrap items-center gap-2 text-[11px] text-muted-foreground pl-3"},ks={key:0},ys={key:1,class:"text-primary/60"},hs={key:2,class:"text-amber-500"},ws={class:"ml-auto tabular-nums"},Ts={key:3,class:"flex flex-col items-center justify-center py-8 text-muted-foreground/40"},Cs={key:3,class:"flex flex-col items-center justify-center flex-1 text-muted-foreground/40"},$s={class:"flex-1 overflow-y-auto px-6 py-5 space-y-5"},Ss={key:0,class:"flex items-center justify-center py-12"},Ds={key:1,class:"rounded-xl border border-dashed border-border bg-muted/20 p-5 text-center"},zs={class:"mt-1 text-xs text-muted-foreground"},js={key:2,class:"space-y-4"},Ls={class:"flex flex-wrap gap-1.5"},Ps={class:"text-lg font-semibold leading-7"},As={class:"mt-1.5 text-sm leading-6 text-muted-foreground whitespace-pre-wrap"},Is={class:"grid gap-3 sm:grid-cols-2"},Ms={class:"rounded-xl border border-border/50 bg-muted/20 p-3.5"},Es={class:"mt-1.5 text-sm font-medium leading-5"},Vs={class:"mt-0.5 text-xs text-muted-foreground"},Bs={class:"rounded-xl border border-border/50 bg-muted/20 p-3.5"},Ns={class:"mt-1.5 text-sm font-medium"},Rs={class:"mt-0.5 text-xs text-muted-foreground truncate"},qs={class:"rounded-xl border border-border/50 p-3.5"},Fs={class:"mt-2 whitespace-pre-wrap text-sm leading-6"},Os={class:"rounded-xl border border-border/50 p-3.5"},Ks={class:"mt-2 whitespace-pre-wrap text-sm leading-6"},Us={class:"flex gap-4 text-xs text-muted-foreground"},Zs={class:"font-medium text-foreground"},Gs=8,Se=8,Hs=300,_a=De({__name:"TasksView",setup(b){const _=qe("(max-width: 1023px)"),V=v(null),P=v(""),S=v("all"),A=v("all"),B=v(1),D=v("all"),I=v(1),z=v(!1),N=v(!1),U=v(!1),le=v(!1),H=v(""),R=v(""),q=v(""),W=v(""),m=v(null),C=v(null),c=v(null),f=v(null),oe=v(!1),g=v($()),M=v($()),p=v($());let Q=0,J=0,X=0,Y=0;const ie=v(0);function ze(){return new Promise(a=>setTimeout(a,Hs))}const je=[{value:"all",label:"全部状态"},{value:"planning",label:"规划中"},{value:"active",label:"进行中"},{value:"in_progress",label:"推进中"},{value:"completed",label:"已完成"},{value:"archived",label:"已归档"},{value:"cancelled",label:"已取消"}],Le=[{value:"all",label:"全部类型"},{value:"once",label:"一次性任务"},{value:"recurring",label:"周期任务"}],Pe=[{value:"all",label:"全部"},{value:"pending",label:"待分配"},{value:"assigned",label:"已分配"},{value:"in_progress",label:"执行中"},{value:"review",label:"待审查"},{value:"rework",label:"返工中"},{value:"blocked",label:"阻塞"},{value:"done",label:"已完成"},{value:"cancelled",label:"已取消"}],ce=ae(()=>c.value?ee(c.value.done_count,c.value.sub_task_count):0),Ae=nt(()=>{B.value=1,te()},280);he([P,S,A],()=>{z.value=!0,Ae()}),he(D,()=>{I.value=1,m.value&&de(m.value)}),Ue(()=>{te()});function $(){return{items:[],total:0,page:1,page_size:0,total_pages:1,has_more:!1}}function ne(){m.value=null,C.value=null,c.value=null,M.value=$(),p.value=$(),R.value="",q.value=""}function Ie(a){C.value=C.value===a?null:a}function Z(a){if(!a)return"未记录";const t=new Date(a);return Number.isNaN(t.getTime())?"未记录":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(t)}function re(a){return a==="once"?"一次性":a==="recurring"?"周期性":a}function ve(a){return{planning:"规划中",active:"进行中",in_progress:"推进中",completed:"已完成",archived:"已归档",cancelled:"已取消"}[a]??a}function me(a){return{pending:"待分配",assigned:"已分配",in_progress:"执行中",review:"待审查",rework:"返工中",blocked:"阻塞",done:"已完成",cancelled:"已取消"}[a]??a}function fe(a){return{high:"高优先",medium:"中优先",low:"低优先"}[a]??a}function ee(a,t){return t?Math.round(a/t*100):0}function pe(a){return{planning:"border-slate-300 bg-slate-100 text-slate-700",active:"border-amber-200 bg-amber-50 text-amber-700",in_progress:"border-sky-200 bg-sky-50 text-sky-700",completed:"border-emerald-200 bg-emerald-50 text-emerald-700",archived:"border-stone-200 bg-stone-100 text-stone-700",cancelled:"border-rose-200 bg-rose-50 text-rose-700"}[a]??"border-border bg-muted text-muted-foreground"}function _e(a){return{pending:"border-slate-300 bg-slate-100 text-slate-700",assigned:"border-indigo-200 bg-indigo-50 text-indigo-700",in_progress:"border-sky-200 bg-sky-50 text-sky-700",review:"border-amber-200 bg-amber-50 text-amber-700",rework:"border-orange-200 bg-orange-50 text-orange-700",blocked:"border-rose-200 bg-rose-50 text-rose-700",done:"border-emerald-200 bg-emerald-50 text-emerald-700",cancelled:"border-stone-200 bg-stone-100 text-stone-700"}[a]??"border-border bg-muted text-muted-foreground"}function Me(a){return{pending:"border-l-slate-300",assigned:"border-l-indigo-400",in_progress:"border-l-sky-500",review:"border-l-amber-500",rework:"border-l-orange-500",blocked:"border-l-rose-500",done:"border-l-emerald-500",cancelled:"border-l-stone-400"}[a]??"border-l-border"}function Ee(a){return{pending:"bg-slate-400",assigned:"bg-indigo-500",in_progress:"bg-sky-500 animate-pulse",review:"bg-amber-500 animate-pulse",rework:"bg-orange-500 animate-pulse",blocked:"bg-rose-500",done:"bg-emerald-500",cancelled:"bg-stone-400"}[a]??"bg-muted-foreground"}function xe(a){return{high:"border-rose-200 bg-rose-50 text-rose-700",medium:"border-amber-200 bg-amber-50 text-amber-700",low:"border-slate-300 bg-slate-100 text-slate-700"}[a]??"border-border bg-muted text-muted-foreground"}async function te(){const a=++Q;z.value=!0,H.value="";try{const t=await O.list({page:B.value,page_size:Gs,keyword:P.value.trim()||void 0,status:S.value==="all"?void 0:S.value,type:A.value==="all"?void 0:A.value,sort_by:"updated_at",sort_order:"desc"});if(a!==Q)return;if(g.value=t.data,!t.data.items.length){ne();return}const s=t.data.items[0];if(!s){ne();return}const k=new Set(t.data.items.map(Re=>Re.id)),w=m.value&&k.has(m.value)?m.value:s.id,Ne=m.value;m.value=w,(w!==Ne||!c.value)&&ue(w)}catch(t){if(a!==Q)return;console.error("Failed to load admin tasks",t),H.value="任务列表加载失败,请稍后再试。",g.value=$(),ne()}finally{a===Q&&(z.value=!1)}}async function ue(a){const t=++J;N.value=!0,R.value="",q.value="";try{const[s,k,w]=await Promise.all([O.get(a),O.listModules(a,{page:1,page_size:24,sort_by:"created_at",sort_order:"asc"}),O.listSubTasks(a,{page:1,page_size:Se,status:D.value==="all"?void 0:D.value,sort_by:"updated_at",sort_order:"desc"})]);if(t!==J||m.value!==a)return;c.value=s.data,M.value=k.data,p.value=w.data,I.value=1,ie.value++}catch(s){if(t!==J)return;console.error("Failed to load selected task context",s),R.value="任务详情加载失败,请重新刷新。",c.value=null,M.value=$(),p.value=$()}finally{t===J&&(N.value=!1)}}async function de(a){const t=++X;U.value=!0,q.value="";try{const[s]=await Promise.all([O.listSubTasks(a,{page:I.value,page_size:Se,status:D.value==="all"?void 0:D.value,sort_by:"updated_at",sort_order:"desc"}),ze()]);if(t!==X||m.value!==a)return;p.value=s.data}catch(s){if(t!==X)return;console.error("Failed to load task sub tasks",s),q.value="子任务列表加载失败,请稍后重试。",p.value=$()}finally{t===X&&(U.value=!1)}}async function Ve(a){if(m.value===a){_.value&&await be();return}C.value=null,m.value=a,I.value=1,ue(a),_.value&&await be()}async function be(){await Ze(),V.value?.scrollIntoView({behavior:"smooth",block:"start"})}function ge(a){a<1||a>g.value.total_pages||a===B.value||(B.value=a,te())}function ke(a){a<1||a>p.value.total_pages||a===I.value||(I.value=a,m.value&&de(m.value))}function ye(){te()}async function Be(a){const t=++Y;oe.value=!0,le.value=!0,W.value="",f.value=null;try{const s=await O.getSubTask(a);if(t!==Y)return;f.value=s.data}catch(s){if(t!==Y)return;console.error("Failed to load sub task detail",s),W.value="子任务详情加载失败,请稍后重试。"}finally{t===Y&&(le.value=!1)}}return(a,t)=>(r(),K(n(st),null,{default:d(()=>[e("div",ut,[e("header",dt,[e("div",it,[e("div",ct,[o(n(at),{class:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),o(n(Qe),{modelValue:P.value,"onUpdate:modelValue":t[0]||(t[0]=s=>P.value=s),class:"h-9 bg-muted/30 pl-10 text-sm",placeholder:"搜索任务名或说明…"},null,8,["modelValue"])]),o(n(T),{variant:"secondary",class:"h-7 px-2.5 text-xs tabular-nums shrink-0"},{default:d(()=>[i(l(g.value.total)+" 个任务 ",1)]),_:1}),o(n(h),{variant:"ghost",size:"icon",class:"h-8 w-8 shrink-0",disabled:z.value||N.value,onClick:ye},{default:d(()=>[o(n(lt),{class:y(["h-3.5 w-3.5",z.value||N.value?"animate-spin":""])},null,8,["class"])]),_:1},8,["disabled"])]),e("div",vt,[e("div",mt,[(r(),u(j,null,F(je,s=>o(n(h),{key:s.value,size:"sm",variant:S.value===s.value?"default":"ghost",class:"h-7 rounded-full px-3 text-xs",onClick:k=>S.value=s.value},{default:d(()=>[i(l(s.label),1)]),_:2},1032,["variant","onClick"])),64))]),o(n(Ce),{orientation:"vertical",class:"h-4 opacity-30"}),e("div",ft,[(r(),u(j,null,F(Le,s=>o(n(h),{key:s.value,size:"sm",variant:A.value===s.value?"secondary":"ghost",class:"h-7 rounded-full px-3 text-xs",onClick:k=>A.value=s.value},{default:d(()=>[i(l(s.label),1)]),_:2},1032,["variant","onClick"])),64))])])]),e("div",pt,[e("div",_t,[H.value?(r(),u("div",xt,[o(n($e),{class:"mx-auto h-5 w-5 text-muted-foreground"}),e("p",bt,l(H.value),1),o(n(h),{class:"mt-3",size:"sm",onClick:ye},{default:d(()=>[...t[9]||(t[9]=[i(" 重新加载 ",-1)])]),_:1})])):z.value?(r(),u("div",gt,[o(n(se),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):g.value.items.length?(r(),u(j,{key:2},[(r(),u("div",{key:`tasks-${B.value}-${S.value}-${A.value}-${P.value}`,class:"divide-y divide-border/30"},[(r(!0),u(j,null,F(g.value.items,(s,k)=>(r(),u("button",{key:s.id,type:"button",class:y(["w-full px-4 py-3 text-left transition-all duration-150 hover:bg-muted/30 animate-slide-up",m.value===s.id?"bg-accent/60 border-l-[3px] border-l-primary":"border-l-[3px] border-l-transparent"]),style:E({animationDelay:`${k*40}ms`}),onClick:w=>Ve(s.id)},[e("div",yt,[e("div",ht,[o(L,{text:s.name,as:"div",class:"text-sm font-semibold leading-5"},null,8,["text"]),o(L,{text:s.description||"暂无说明",as:"p",lines:1,class:"mt-0.5 text-xs text-muted-foreground leading-4"},null,8,["text"])]),o(n(T),{variant:"outline",class:y([pe(s.status),"shrink-0 text-[10px] px-1.5"])},{default:d(()=>[i(l(ve(s.status)),1)]),_:2},1032,["class"])]),e("div",wt,[e("span",Tt,l(s.module_count)+" 模块 · "+l(s.sub_task_count)+" 子任务",1),e("div",Ct,[e("div",$t,[e("div",{class:"h-1.5 rounded-full bg-emerald-500 transition-all",style:E({width:`${ee(s.done_count,s.sub_task_count)}%`})},null,4)]),e("span",St,l(ee(s.done_count,s.sub_task_count))+"%",1)]),e("span",Dt,l(Z(s.updated_at)),1)])],14,kt))),128))])),g.value.total_pages>1?(r(),u("div",zt,[o(n(h),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:g.value.page<=1||z.value,onClick:t[1]||(t[1]=s=>ge(g.value.page-1))},{default:d(()=>[o(n(we),{class:"h-3 w-3"})]),_:1},8,["disabled"]),e("span",jt,l(g.value.page)+" / "+l(g.value.total_pages),1),o(n(h),{variant:"ghost",size:"icon",class:"h-7 w-7",disabled:g.value.page>=g.value.total_pages||z.value,onClick:t[2]||(t[2]=s=>ge(g.value.page+1))},{default:d(()=>[o(n(Te),{class:"h-3 w-3"})]),_:1},8,["disabled"])])):x("",!0)],64)):(r(),u("div",Lt,[o(n(ot),{class:"h-6 w-6 mb-2"}),t[10]||(t[10]=e("p",{class:"text-sm"},"没有找到匹配任务",-1))]))]),e("div",{ref_key:"detailAnchor",ref:V,class:"hidden lg:flex flex-col flex-1 min-h-0 overflow-y-auto"},[N.value?(r(),u("div",Pt,[o(n(se),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):R.value?(r(),u("div",At,[o(n($e),{class:"h-5 w-5 mb-2"}),e("p",It,l(R.value),1),m.value?(r(),K(n(h),{key:0,class:"mt-3",size:"sm",onClick:t[3]||(t[3]=s=>ue(m.value))},{default:d(()=>[...t[11]||(t[11]=[i("重试",-1)])]),_:1})):x("",!0)])):c.value?(r(),u("div",{key:ie.value,class:"p-6 space-y-6 animate-slide-up"},[e("div",null,[e("div",Mt,[e("div",Et,[o(L,{text:c.value.name,as:"h2",class:"text-lg font-semibold leading-7"},null,8,["text"]),o(L,{text:c.value.description||"暂无任务说明。",as:"p",lines:2,class:"text-sm text-muted-foreground leading-5"},null,8,["text"])]),e("div",Vt,[o(n(T),{variant:"outline",class:y(pe(c.value.status))},{default:d(()=>[i(l(ve(c.value.status)),1)]),_:1},8,["class"]),o(n(T),{variant:"secondary"},{default:d(()=>[i(l(re(c.value.type)),1)]),_:1})])]),e("div",Bt,[e("div",Nt,[t[12]||(t[12]=e("span",{class:"text-muted-foreground"},"完成进度",-1)),e("span",Rt,l(ce.value)+"%",1)]),e("div",qt,[e("div",{class:"h-2 rounded-full bg-emerald-500 transition-all",style:E({width:`${ce.value}%`})},null,4)]),e("div",Ft,[e("span",null,[t[13]||(t[13]=i("子任务 ",-1)),e("span",Ot,l(c.value.sub_task_count),1)]),e("span",null,[t[14]||(t[14]=i("已完成 ",-1)),e("span",Kt,l(c.value.done_count),1)]),e("span",null,[t[15]||(t[15]=i("执行中 ",-1)),e("span",Ut,l(c.value.in_progress_count),1)]),e("span",null,[t[16]||(t[16]=i("待审查 ",-1)),e("span",Zt,l(c.value.review_count),1)]),e("span",null,[t[17]||(t[17]=i("待分配 ",-1)),e("span",Gt,l(c.value.pending_count),1)]),c.value.blocked_count?(r(),u("span",Ht,[t[18]||(t[18]=i("阻塞 ",-1)),e("span",Wt,l(c.value.blocked_count),1)])):x("",!0),c.value.rework_count?(r(),u("span",Qt,[t[19]||(t[19]=i("返工 ",-1)),e("span",Jt,l(c.value.rework_count),1)])):x("",!0)]),e("div",Xt,[e("span",null,"创建于 "+l(Z(c.value.created_at)),1),e("span",null,"更新于 "+l(Z(c.value.updated_at)),1)])])]),M.value.items.length?(r(),u("div",Yt,[e("div",es,[e("div",ts," 模块拆分 · "+l(M.value.items.length),1),C.value?(r(),u("button",{key:0,class:"text-[10px] text-primary hover:underline",onClick:t[4]||(t[4]=s=>C.value=null)}," 清除筛选 ")):x("",!0)]),e("div",ss,[(r(!0),u(j,null,F(M.value.items,(s,k)=>(r(),u("button",{key:s.id,type:"button",class:y(["w-full rounded-lg border p-3 text-left transition-all animate-slide-up",C.value===s.id?"border-primary/50 ring-1 ring-primary/20 bg-accent/30":"border-border/50 hover:border-border hover:bg-muted/20"]),style:E({animationDelay:`${k*40}ms`}),onClick:w=>Ie(s.id)},[e("div",ls,[o(L,{text:s.name,as:"div",class:"text-sm font-medium"},null,8,["text"]),e("div",os,[e("span",null,l(s.done_count)+"/"+l(s.sub_task_count),1),e("div",ns,[e("div",{class:"h-1.5 rounded-full bg-sky-500",style:E({width:`${ee(s.done_count,s.sub_task_count)}%`})},null,4)])])]),s.description?(r(),K(L,{key:0,text:s.description,as:"p",lines:1,class:"mt-1 text-xs text-muted-foreground leading-4"},null,8,["text"])):x("",!0)],14,as))),128))])])):x("",!0),e("div",null,[e("div",rs,[e("div",us," 子任务 · "+l(p.value.total),1),e("div",ds,[e("span",is,l(p.value.page)+" / "+l(p.value.total_pages),1),o(n(h),{variant:"ghost",size:"icon",class:"h-6 w-6",disabled:p.value.page<=1||U.value,onClick:t[5]||(t[5]=s=>ke(p.value.page-1))},{default:d(()=>[o(n(we),{class:"h-3 w-3"})]),_:1},8,["disabled"]),o(n(h),{variant:"ghost",size:"icon",class:"h-6 w-6",disabled:p.value.page>=p.value.total_pages||U.value,onClick:t[6]||(t[6]=s=>ke(p.value.page+1))},{default:d(()=>[o(n(Te),{class:"h-3 w-3"})]),_:1},8,["disabled"])])]),e("div",cs,[(r(),u(j,null,F(Pe,s=>o(n(h),{key:s.value,size:"sm",variant:D.value===s.value?"default":"ghost",class:"h-6 rounded-full px-2.5 text-[11px]",onClick:k=>D.value=s.value},{default:d(()=>[i(l(s.label),1)]),_:2},1032,["variant","onClick"])),64))]),U.value?(r(),u("div",vs,[o(n(se),{class:"h-5 w-5 animate-spin text-muted-foreground"})])):q.value?(r(),u("div",ms,[e("p",fs,l(q.value),1),m.value?(r(),K(n(h),{key:0,class:"mt-2",size:"sm",onClick:t[7]||(t[7]=s=>de(m.value))},{default:d(()=>[...t[20]||(t[20]=[i("重试",-1)])]),_:1})):x("",!0)])):p.value.items.length?(r(),u("div",{key:`st-${I.value}-${D.value}`,class:"space-y-1.5"},[(r(!0),u(j,null,F(p.value.items,(s,k)=>(r(),u(j,{key:s.id},[!C.value||s.module_name===M.value.items.find(w=>w.id===C.value)?.name?(r(),u("button",{key:0,type:"button",class:y(["w-full rounded-lg border border-border/40 p-3 text-left transition-colors hover:bg-muted/30 animate-slide-up border-l-[3px]",Me(s.status)]),style:E({animationDelay:`${k*40}ms`}),onClick:w=>Be(s.id)},[e("div",_s,[e("div",xs,[e("div",bs,[e("span",{class:y(["inline-block w-1.5 h-1.5 rounded-full shrink-0",Ee(s.status)])},null,2),o(L,{text:s.name,as:"div",class:"text-sm font-medium leading-5"},null,8,["text"])]),o(L,{text:s.description||"暂无说明",as:"p",lines:1,class:"mt-0.5 text-xs text-muted-foreground leading-4 pl-3"},null,8,["text"])]),o(n(T),{variant:"outline",class:y([_e(s.status),"shrink-0 text-[10px] px-1.5"])},{default:d(()=>[i(l(me(s.status)),1)]),_:2},1032,["class"])]),e("div",gs,[o(n(T),{variant:"outline",class:y([xe(s.priority),"text-[10px] px-1.5 h-5"])},{default:d(()=>[i(l(fe(s.priority)),1)]),_:2},1032,["class"]),o(n(T),{variant:"secondary",class:"text-[10px] px-1.5 h-5"},{default:d(()=>[i(l(re(s.type)),1)]),_:2},1024),e("span",null,l(s.module_name||"未绑定模块"),1),s.assigned_agent_name?(r(),u("span",ks,"· "+l(s.assigned_agent_name),1)):x("",!0),s.current_session_id?(r(),u("span",ys,"Session: "+l(s.current_session_id.slice(0,8))+"…",1)):x("",!0),s.rework_count>0?(r(),u("span",hs,"返工 "+l(s.rework_count),1)):x("",!0),e("span",ws,l(Z(s.updated_at)),1)])],14,ps)):x("",!0)],64))),128))])):(r(),u("div",Ts,[...t[21]||(t[21]=[e("p",{class:"text-xs"},"当前条件下没有子任务",-1)])]))])])):x("",!0),!N.value&&!R.value&&!c.value?(r(),u("div",Cs,[o(n(rt),{class:"h-8 w-8 mb-3"}),t[22]||(t[22]=e("p",{class:"text-sm font-medium text-muted-foreground/60"},"点击左侧任务查看详情",-1)),t[23]||(t[23]=e("p",{class:"text-xs mt-1"},"模块拆分和子任务会在这里展示",-1))])):x("",!0)],512)])]),o(n(et),{open:oe.value,"onUpdate:open":t[8]||(t[8]=s=>oe.value=s)},{default:d(()=>[o(n(Je),{side:"right",class:"w-full sm:max-w-xl p-0"},{default:d(()=>[o(n(Xe),{class:"shrink-0 px-6 pt-6 pb-4 border-b border-border/30"},{default:d(()=>[o(n(Ye),{class:"pr-8"},{default:d(()=>[...t[24]||(t[24]=[i("子任务详情",-1)])]),_:1}),o(n(tt),null,{default:d(()=>[...t[25]||(t[25]=[i("查看交付要求、验收标准和执行上下文。",-1)])]),_:1})]),_:1}),e("div",$s,[le.value?(r(),u("div",Ss,[o(n(se),{class:"h-5 w-5 animate-spin text-muted-foreground"})])):W.value?(r(),u("div",Ds,[t[26]||(t[26]=e("p",{class:"text-sm font-medium"},"加载失败",-1)),e("p",zs,l(W.value),1)])):f.value?(r(),u("div",js,[e("div",Ls,[o(n(T),{variant:"outline",class:y(_e(f.value.status))},{default:d(()=>[i(l(me(f.value.status)),1)]),_:1},8,["class"]),o(n(T),{variant:"outline",class:y(xe(f.value.priority))},{default:d(()=>[i(l(fe(f.value.priority)),1)]),_:1},8,["class"]),o(n(T),{variant:"secondary"},{default:d(()=>[i(l(re(f.value.type)),1)]),_:1})]),e("div",null,[e("h3",Ps,l(f.value.name),1),e("p",As,l(f.value.description||"暂无子任务说明。"),1)]),e("div",Is,[e("div",Ms,[t[27]||(t[27]=e("div",{class:"text-[11px] text-muted-foreground/60 uppercase tracking-wider"}," 所属 ",-1)),e("div",Es,l(f.value.task_name),1),e("div",Vs,l(f.value.module_name||"未绑定模块"),1)]),e("div",Bs,[t[28]||(t[28]=e("div",{class:"text-[11px] text-muted-foreground/60 uppercase tracking-wider"}," 执行者 ",-1)),e("div",Ns,l(f.value.assigned_agent_name||"未分配"),1),e("div",Rs," Session: "+l(f.value.current_session_id||"未建立"),1)])]),e("div",qs,[t[29]||(t[29]=e("div",{class:"text-[11px] text-muted-foreground/60 uppercase tracking-wider"}," 交付物要求 ",-1)),e("p",Fs,l(f.value.deliverable||"暂无交付物要求。"),1)]),e("div",Os,[t[30]||(t[30]=e("div",{class:"text-[11px] text-muted-foreground/60 uppercase tracking-wider"}," 验收标准 ",-1)),e("p",Ks,l(f.value.acceptance||"暂无验收标准。"),1)]),o(n(Ce)),e("div",Us,[e("span",null,[t[31]||(t[31]=i("返工 ",-1)),e("span",Zs,l(f.value.rework_count),1)]),e("span",null,"更新于 "+l(Z(f.value.updated_at)),1)])])):x("",!0)])]),_:1})]),_:1},8,["open"])]),_:1}))}});export{_a as default}; diff --git a/cloudflare/pages/assets/TooltipProvider-Ck2YUJut.js b/cloudflare/pages/assets/TooltipProvider-Ck2YUJut.js new file mode 100644 index 0000000..703fa92 --- /dev/null +++ b/cloudflare/pages/assets/TooltipProvider-Ck2YUJut.js @@ -0,0 +1 @@ +import{c as v}from"./createContext-a9Tpfoxo.js";import{u as y}from"./useForwardExpose-DjCgLuye.js";import{h as b}from"./index-Ct5H-N73.js";import{d as T,V as _,q as g,r as o}from"./index-BYiXDk_r.js";const[N,C]=v("TooltipProvider");var q=T({inheritAttrs:!1,__name:"TooltipProvider",props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1},content:{type:Object,required:!1}},setup(r){const t=r,{delayDuration:a,skipDelayDuration:s,disableHoverableContent:i,disableClosingTrigger:l,ignoreNonKeyboardFocus:n,disabled:d,content:u}=_(t);y();const e=o(!0),p=o(!1),{start:f,stop:c}=b(()=>{e.value=!0},s,{immediate:!1});return C({isOpenDelayed:e,delayDuration:a,onOpen(){c(),e.value=!1},onClose(){f()},isPointerInTransitRef:p,disableHoverableContent:i,disableClosingTrigger:l,disabled:d,ignoreNonKeyboardFocus:n,content:u}),(m,D)=>g(m.$slots,"default")}}),h=q;export{h as T,N as i}; diff --git a/cloudflare/pages/assets/TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js b/cloudflare/pages/assets/TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js new file mode 100644 index 0000000..da90121 --- /dev/null +++ b/cloudflare/pages/assets/TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js @@ -0,0 +1 @@ +import{T as t}from"./TooltipProvider-Ck2YUJut.js";import{d as r,b as n,u as s,O as l,P as i,w as p,l as d,q as u}from"./index-BYiXDk_r.js";const _=r({__name:"TooltipProvider",props:{delayDuration:{default:0},skipDelayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean},content:{}},setup(e){const o=e;return(a,c)=>(d(),n(s(t),l(i(o)),{default:p(()=>[u(a.$slots,"default")]),_:3},16))}});export{_}; diff --git a/cloudflare/pages/assets/TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js b/cloudflare/pages/assets/TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js new file mode 100644 index 0000000..b6c438f --- /dev/null +++ b/cloudflare/pages/assets/TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js @@ -0,0 +1 @@ +import{V as Et,b as Rt,a as He}from"./VisuallyHidden-DmVvgUgH.js";import{W as se,r as E,o as ze,k as _,a6 as ge,C as Le,d as q,l as T,b as $,w as D,q as B,u as m,D as Ie,E as qt,Q as Bt,i as Lt,a7 as dt,c as xe,x as G,H as be,a8 as kt,a9 as $t,aa as ue,ab as Mt,e as ae,Y as Ft,O as Ve,P as je,f as Nt,t as Wt,z as Ht,y as zt,ac as It,N as Vt}from"./index-BYiXDk_r.js";import{u as K}from"./useForwardExpose-DjCgLuye.js";import{P as ve}from"./index-D0L1R3xN.js";import{c as Ke}from"./createContext-a9Tpfoxo.js";import{c as jt,o as Kt,e as Xt,a as Yt,b as et}from"./index-CEPd9Ray.js";import{a as Ut,e as Gt,f as Qt,i as pt,g as Zt,h as Jt,r as en}from"./index-Ct5H-N73.js";import{P as tn,u as nn}from"./Presence-Sy1r65hd.js";import{i as Pe}from"./TooltipProvider-Ck2YUJut.js";function ht(e,t,n){const o=n.originalEvent.target,r=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),o.dispatchEvent(r)}function on(e){return e==null}function Re(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function ke(e,t,n=".",o){if(!Re(t))return ke(e,{},n,o);const r=Object.assign({},t);for(const i in e){if(i==="__proto__"||i==="constructor")continue;const s=e[i];s!=null&&(o&&o(r,i,s,n)||(Array.isArray(s)&&Array.isArray(r[i])?r[i]=[...s,...r[i]]:Re(s)&&Re(r[i])?r[i]=ke(s,r[i],(n?`${n}.`:"")+i.toString(),o):r[i]=s))}return r}function rn(e){return(...t)=>t.reduce((n,o)=>ke(n,o,"",e),{})}const sn=rn();function an(e,t){const n=Ut(!1,300);Gt(()=>{n.value=!1});const o=E(null),r=Qt();function i(){o.value=null,n.value=!1}function s(a,c){const d=a.currentTarget,l={x:a.clientX,y:a.clientY},f=ln(l,d.getBoundingClientRect()),p=cn(l,f,1),u=un(c.getBoundingClientRect()),h=dn([...p,...u]);o.value=h,n.value=!0}return se(a=>{if(e.value&&t.value){const c=l=>s(l,t.value),d=l=>s(l,e.value);e.value.addEventListener("pointerleave",c),t.value.addEventListener("pointerleave",d),a(()=>{e.value?.removeEventListener("pointerleave",c),t.value?.removeEventListener("pointerleave",d)})}}),se(a=>{if(o.value){const c=d=>{if(!o.value||!(d.target instanceof Element))return;const l=d.target,f={x:d.clientX,y:d.clientY},p=e.value?.contains(l)||t.value?.contains(l),u=!fn(f,o.value),h=!!l.closest("[data-grace-area-trigger]");p?i():(u||h)&&(i(),r.trigger())};e.value?.ownerDocument.addEventListener("pointermove",c),a(()=>e.value?.ownerDocument.removeEventListener("pointermove",c))}}),{isPointerInTransit:n,onPointerExit:r.on}}function ln(e,t){const n=Math.abs(t.top-e.y),o=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),i=Math.abs(t.left-e.x);switch(Math.min(n,o,r,i)){case i:return"left";case r:return"right";case n:return"top";case o:return"bottom";default:throw new Error("unreachable")}}function cn(e,t,n=5){const o=[];switch(t){case"top":o.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":o.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":o.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":o.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return o}function un(e){const{top:t,right:n,bottom:o,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:o},{x:r,y:o}]}function fn(e,t){const{x:n,y:o}=e;let r=!1;for(let i=0,s=t.length-1;io!=l>o&&n<(d-a)*(o-c)/(l-c)+a&&(r=!r)}return r}function dn(e){const t=e.slice();return t.sort((n,o)=>n.xo.x?1:n.yo.y?1:0),pn(t)}function pn(e){if(e.length<=1)return e.slice();const t=[];for(let o=0;o=2;){const i=t[t.length-1],s=t[t.length-2];if((i.x-s.x)*(r.y-s.y)>=(i.y-s.y)*(r.x-s.x))t.pop();else break}t.push(r)}t.pop();const n=[];for(let o=e.length-1;o>=0;o--){const r=e[o];for(;n.length>=2;){const i=n[n.length-1],s=n[n.length-2];if((i.x-s.x)*(r.y-s.y)>=(i.y-s.y)*(r.x-s.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}function hn(e){const t=E(),n=_(()=>t.value?.width??0),o=_(()=>t.value?.height??0);return ze(()=>{const r=jt(e);if(r){t.value={width:r.offsetWidth,height:r.offsetHeight};const i=new ResizeObserver(s=>{if(!Array.isArray(s)||!s.length)return;const a=s[0];let c,d;if("borderBoxSize"in a){const l=a.borderBoxSize,f=Array.isArray(l)?l[0]:l;c=f.inlineSize,d=f.blockSize}else c=r.offsetWidth,d=r.offsetHeight;t.value={width:c,height:d}});return i.observe(r,{box:"border-box"}),()=>i.unobserve(r)}else t.value=void 0}),{width:n,height:o}}const gn="dismissableLayer.pointerDownOutside",mn="dismissableLayer.focusOutside";function gt(e,t){const n=t.closest("[data-dismissable-layer]"),o=e.dataset.dismissableLayer===""?e:e.querySelector("[data-dismissable-layer]"),r=Array.from(e.ownerDocument.querySelectorAll("[data-dismissable-layer]"));return!!(n&&(o===n||r.indexOf(o){});return se(s=>{if(!pt||!ge(n))return;const a=async d=>{const l=d.target;if(!(!t?.value||!l)){if(gt(t.value,l)){r.value=!1;return}if(d.target&&!r.value){let p=function(){ht(gn,e,f)};const f={originalEvent:d};d.pointerType==="touch"?(o.removeEventListener("click",i.value),i.value=p,o.addEventListener("click",i.value,{once:!0})):p()}else o.removeEventListener("click",i.value);r.value=!1}},c=window.setTimeout(()=>{o.addEventListener("pointerdown",a)},0);s(()=>{window.clearTimeout(c),o.removeEventListener("pointerdown",a),o.removeEventListener("click",i.value)})}),{onPointerDownCapture:()=>{ge(n)&&(r.value=!0)}}}function yn(e,t,n=!0){const o=t?.value?.ownerDocument??globalThis?.document,r=E(!1);return se(i=>{if(!pt||!ge(n))return;const s=async a=>{if(!t?.value)return;await Le(),await Le();const c=a.target;!t.value||!c||gt(t.value,c)||a.target&&!r.value&&ht(mn,e,{originalEvent:a})};o.addEventListener("focusin",s),i(()=>o.removeEventListener("focusin",s))}),{onFocusCapture:()=>{ge(n)&&(r.value=!0)},onBlurCapture:()=>{ge(n)&&(r.value=!1)}}}const z=qt({layersRoot:new Set,layersWithOutsidePointerEventsDisabled:new Set,originalBodyPointerEvents:void 0,branches:new Set});var wn=q({__name:"DismissableLayer",props:{disableOutsidePointerEvents:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","dismiss"],setup(e,{emit:t}){const n=e,o=t,{forwardRef:r,currentElement:i}=K(),s=_(()=>i.value?.ownerDocument??globalThis.document),a=_(()=>z.layersRoot),c=_(()=>i.value?Array.from(a.value).indexOf(i.value):-1),d=_(()=>z.layersWithOutsidePointerEventsDisabled.size>0),l=_(()=>{const u=Array.from(a.value),[h]=[...z.layersWithOutsidePointerEventsDisabled].slice(-1),g=u.indexOf(h);return c.value>=g}),f=vn(async u=>{const h=[...z.branches].some(g=>g?.contains(u.target));!l.value||h||(o("pointerDownOutside",u),o("interactOutside",u),await Le(),u.defaultPrevented||o("dismiss"))},i),p=yn(u=>{[...z.branches].some(g=>g?.contains(u.target))||(o("focusOutside",u),o("interactOutside",u),u.defaultPrevented||o("dismiss"))},i);return Kt("Escape",u=>{c.value===a.value.size-1&&(o("escapeKeyDown",u),u.defaultPrevented||o("dismiss"))}),se(u=>{i.value&&(n.disableOutsidePointerEvents&&(z.layersWithOutsidePointerEventsDisabled.size===0&&(z.originalBodyPointerEvents=s.value.body.style.pointerEvents,s.value.body.style.pointerEvents="none"),z.layersWithOutsidePointerEventsDisabled.add(i.value)),a.value.add(i.value),u(()=>{n.disableOutsidePointerEvents&&z.layersWithOutsidePointerEventsDisabled.size===1&&!on(z.originalBodyPointerEvents)&&(s.value.body.style.pointerEvents=z.originalBodyPointerEvents)}))}),se(u=>{u(()=>{i.value&&(a.value.delete(i.value),z.layersWithOutsidePointerEventsDisabled.delete(i.value))})}),(u,h)=>(T(),$(m(ve),{ref:m(r),"as-child":u.asChild,as:u.as,"data-dismissable-layer":"",style:Ie({pointerEvents:d.value?l.value?"auto":"none":void 0}),onFocusCapture:m(p).onFocusCapture,onBlurCapture:m(p).onBlurCapture,onPointerdownCapture:m(f).onPointerDownCapture},{default:D(()=>[B(u.$slots,"default")]),_:3},8,["as-child","as","style","onFocusCapture","onBlurCapture","onPointerdownCapture"]))}}),bn=wn,xn=q({__name:"Teleport",props:{to:{type:null,required:!1,default:"body"},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=Xt();return(n,o)=>m(t)||n.forceMount?(T(),$(Bt,{key:0,to:n.to,disabled:n.disabled,defer:n.defer},[B(n.$slots,"default")],8,["to","disabled","defer"])):Lt("v-if",!0)}}),_n=xn;const[mt,Cn]=Ke("PopperRoot");var On=q({inheritAttrs:!1,__name:"PopperRoot",setup(e){const t=E();return Cn({anchor:t,onAnchorChange:n=>t.value=n}),(n,o)=>B(n.$slots,"default")}}),Pn=On,An=q({__name:"PopperAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e,{forwardRef:n,currentElement:o}=K(),r=mt();return dt(()=>{r.onAnchorChange(t.reference??o.value)}),(i,s)=>(T(),$(m(ve),{ref:m(n),as:i.as,"as-child":i.asChild},{default:D(()=>[B(i.$slots,"default")]),_:3},8,["as","as-child"]))}}),Sn=An;const Dn={key:0,d:"M0 0L6 6L12 0"},Tn={key:1,d:"M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0"};var En=q({__name:"Arrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(e){const t=e;return K(),(n,o)=>(T(),$(m(ve),G(t,{width:n.width,height:n.height,viewBox:n.asChild?void 0:"0 0 12 6",preserveAspectRatio:n.asChild?void 0:"none"}),{default:D(()=>[B(n.$slots,"default",{},()=>[n.rounded?(T(),xe("path",Tn)):(T(),xe("path",Dn))])]),_:3},16,["width","height","viewBox","preserveAspectRatio"]))}}),Rn=En;function qn(e){return e!==null}function Bn(e){return{name:"transformOrigin",options:e,fn(t){const{placement:n,rects:o,middlewareData:r}=t,s=r.arrow?.centerOffset!==0,a=s?0:e.arrowWidth,c=s?0:e.arrowHeight,[d,l]=$e(n),f={start:"0%",center:"50%",end:"100%"}[l],p=(r.arrow?.x??0)+a/2,u=(r.arrow?.y??0)+c/2;let h="",g="";return d==="bottom"?(h=s?f:`${p}px`,g=`${-c}px`):d==="top"?(h=s?f:`${p}px`,g=`${o.floating.height+c}px`):d==="right"?(h=`${-c}px`,g=s?f:`${u}px`):d==="left"&&(h=`${o.floating.width+c}px`,g=s?f:`${u}px`),{data:{x:h,y:g}}}}}function $e(e){const[t,n="center"]=e.split("-");return[t,n]}const Ln=["top","right","bottom","left"],oe=Math.min,N=Math.max,_e=Math.round,we=Math.floor,U=e=>({x:e,y:e}),kn={left:"right",right:"left",bottom:"top",top:"bottom"};function Me(e,t,n){return N(e,oe(t,n))}function J(e,t){return typeof e=="function"?e(t):e}function ee(e){return e.split("-")[0]}function he(e){return e.split("-")[1]}function Xe(e){return e==="x"?"y":"x"}function Ye(e){return e==="y"?"height":"width"}function Y(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function Ue(e){return Xe(Y(e))}function $n(e,t,n){n===void 0&&(n=!1);const o=he(e),r=Ue(e),i=Ye(r);let s=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=Ce(s)),[s,Ce(s)]}function Mn(e){const t=Ce(e);return[Fe(e),t,Fe(t)]}function Fe(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const tt=["left","right"],nt=["right","left"],Fn=["top","bottom"],Nn=["bottom","top"];function Wn(e,t,n){switch(e){case"top":case"bottom":return n?t?nt:tt:t?tt:nt;case"left":case"right":return t?Fn:Nn;default:return[]}}function Hn(e,t,n,o){const r=he(e);let i=Wn(ee(e),n==="start",o);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(Fe)))),i}function Ce(e){const t=ee(e);return kn[t]+e.slice(t.length)}function zn(e){return{top:0,right:0,bottom:0,left:0,...e}}function vt(e){return typeof e!="number"?zn(e):{top:e,right:e,bottom:e,left:e}}function Oe(e){const{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}function ot(e,t,n){let{reference:o,floating:r}=e;const i=Y(t),s=Ue(t),a=Ye(s),c=ee(t),d=i==="y",l=o.x+o.width/2-r.width/2,f=o.y+o.height/2-r.height/2,p=o[a]/2-r[a]/2;let u;switch(c){case"top":u={x:l,y:o.y-r.height};break;case"bottom":u={x:l,y:o.y+o.height};break;case"right":u={x:o.x+o.width,y:f};break;case"left":u={x:o.x-r.width,y:f};break;default:u={x:o.x,y:o.y}}switch(he(t)){case"start":u[s]-=p*(n&&d?-1:1);break;case"end":u[s]+=p*(n&&d?-1:1);break}return u}async function In(e,t){var n;t===void 0&&(t={});const{x:o,y:r,platform:i,rects:s,elements:a,strategy:c}=e,{boundary:d="clippingAncestors",rootBoundary:l="viewport",elementContext:f="floating",altBoundary:p=!1,padding:u=0}=J(t,e),h=vt(u),v=a[p?f==="floating"?"reference":"floating":f],y=Oe(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(v)))==null||n?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:d,rootBoundary:l,strategy:c})),b=f==="floating"?{x:o,y:r,width:s.floating.width,height:s.floating.height}:s.reference,w=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),x=await(i.isElement==null?void 0:i.isElement(w))?await(i.getScale==null?void 0:i.getScale(w))||{x:1,y:1}:{x:1,y:1},O=Oe(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:b,offsetParent:w,strategy:c}):b);return{top:(y.top-O.top+h.top)/x.y,bottom:(O.bottom-y.bottom+h.bottom)/x.y,left:(y.left-O.left+h.left)/x.x,right:(O.right-y.right+h.right)/x.x}}const Vn=50,jn=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:s}=n,a=s.detectOverflow?s:{...s,detectOverflow:In},c=await(s.isRTL==null?void 0:s.isRTL(t));let d=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:l,y:f}=ot(d,o,c),p=o,u=0;const h={};for(let g=0;g({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:s,elements:a,middlewareData:c}=t,{element:d,padding:l=0}=J(e,t)||{};if(d==null)return{};const f=vt(l),p={x:n,y:o},u=Ue(r),h=Ye(u),g=await s.getDimensions(d),v=u==="y",y=v?"top":"left",b=v?"bottom":"right",w=v?"clientHeight":"clientWidth",x=i.reference[h]+i.reference[u]-p[u]-i.floating[h],O=p[u]-i.reference[u],P=await(s.getOffsetParent==null?void 0:s.getOffsetParent(d));let C=P?P[w]:0;(!C||!await(s.isElement==null?void 0:s.isElement(P)))&&(C=a.floating[w]||i.floating[h]);const S=x/2-O/2,L=C/2-g[h]/2-1,M=oe(f[y],L),X=oe(f[b],L),A=M,H=C-g[h]-X,R=C/2-g[h]/2+S,Z=Me(A,R,H),I=!c.arrow&&he(r)!=null&&R!==Z&&i.reference[h]/2-(RR<=0)){var X,A;const R=(((X=i.flip)==null?void 0:X.index)||0)+1,Z=C[R];if(Z&&(!(f==="alignment"?b!==Y(Z):!1)||M.every(k=>Y(k.placement)===b?k.overflows[0]>0:!0)))return{data:{index:R,overflows:M},reset:{placement:Z}};let I=(A=M.filter(F=>F.overflows[0]<=0).sort((F,k)=>F.overflows[1]-k.overflows[1])[0])==null?void 0:A.placement;if(!I)switch(u){case"bestFit":{var H;const F=(H=M.filter(k=>{if(P){const ne=Y(k.placement);return ne===b||ne==="y"}return!0}).map(k=>[k.placement,k.overflows.filter(ne=>ne>0).reduce((ne,Tt)=>ne+Tt,0)]).sort((k,ne)=>k[1]-ne[1])[0])==null?void 0:H[0];F&&(I=F);break}case"initialPlacement":I=a;break}if(r!==I)return{reset:{placement:I}}}return{}}}};function rt(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function it(e){return Ln.some(t=>e[t]>=0)}const Yn=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:o}=t,{strategy:r="referenceHidden",...i}=J(e,t);switch(r){case"referenceHidden":{const s=await o.detectOverflow(t,{...i,elementContext:"reference"}),a=rt(s,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:it(a)}}}case"escaped":{const s=await o.detectOverflow(t,{...i,altBoundary:!0}),a=rt(s,n.floating);return{data:{escapedOffsets:a,escaped:it(a)}}}default:return{}}}}},yt=new Set(["left","top"]);async function Un(e,t){const{placement:n,platform:o,elements:r}=e,i=await(o.isRTL==null?void 0:o.isRTL(r.floating)),s=ee(n),a=he(n),c=Y(n)==="y",d=yt.has(s)?-1:1,l=i&&c?-1:1,f=J(t,e);let{mainAxis:p,crossAxis:u,alignmentAxis:h}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof h=="number"&&(u=a==="end"?h*-1:h),c?{x:u*l,y:p*d}:{x:p*d,y:u*l}}const Gn=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:s,middlewareData:a}=t,c=await Un(t,e);return s===((n=a.offset)==null?void 0:n.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:r+c.x,y:i+c.y,data:{...c,placement:s}}}}},Qn=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:c={fn:y=>{let{x:b,y:w}=y;return{x:b,y:w}}},...d}=J(e,t),l={x:n,y:o},f=await i.detectOverflow(t,d),p=Y(ee(r)),u=Xe(p);let h=l[u],g=l[p];if(s){const y=u==="y"?"top":"left",b=u==="y"?"bottom":"right",w=h+f[y],x=h-f[b];h=Me(w,h,x)}if(a){const y=p==="y"?"top":"left",b=p==="y"?"bottom":"right",w=g+f[y],x=g-f[b];g=Me(w,g,x)}const v=c.fn({...t,[u]:h,[p]:g});return{...v,data:{x:v.x-n,y:v.y-o,enabled:{[u]:s,[p]:a}}}}}},Zn=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:o,placement:r,rects:i,middlewareData:s}=t,{offset:a=0,mainAxis:c=!0,crossAxis:d=!0}=J(e,t),l={x:n,y:o},f=Y(r),p=Xe(f);let u=l[p],h=l[f];const g=J(a,t),v=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(c){const w=p==="y"?"height":"width",x=i.reference[p]-i.floating[w]+v.mainAxis,O=i.reference[p]+i.reference[w]-v.mainAxis;uO&&(u=O)}if(d){var y,b;const w=p==="y"?"width":"height",x=yt.has(ee(r)),O=i.reference[f]-i.floating[w]+(x&&((y=s.offset)==null?void 0:y[f])||0)+(x?0:v.crossAxis),P=i.reference[f]+i.reference[w]+(x?0:((b=s.offset)==null?void 0:b[f])||0)-(x?v.crossAxis:0);hP&&(h=P)}return{[p]:u,[f]:h}}}},Jn=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,o;const{placement:r,rects:i,platform:s,elements:a}=t,{apply:c=()=>{},...d}=J(e,t),l=await s.detectOverflow(t,d),f=ee(r),p=he(r),u=Y(r)==="y",{width:h,height:g}=i.floating;let v,y;f==="top"||f==="bottom"?(v=f,y=p===(await(s.isRTL==null?void 0:s.isRTL(a.floating))?"start":"end")?"left":"right"):(y=f,v=p==="end"?"top":"bottom");const b=g-l.top-l.bottom,w=h-l.left-l.right,x=oe(g-l[v],b),O=oe(h-l[y],w),P=!t.middlewareData.shift;let C=x,S=O;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(S=w),(o=t.middlewareData.shift)!=null&&o.enabled.y&&(C=b),P&&!p){const M=N(l.left,0),X=N(l.right,0),A=N(l.top,0),H=N(l.bottom,0);u?S=h-2*(M!==0||X!==0?M+X:N(l.left,l.right)):C=g-2*(A!==0||H!==0?A+H:N(l.top,l.bottom))}await c({...t,availableWidth:S,availableHeight:C});const L=await s.getDimensions(a.floating);return h!==L.width||g!==L.height?{reset:{rects:!0}}:{}}}};function Ae(){return typeof window<"u"}function ce(e){return Ge(e)?(e.nodeName||"").toLowerCase():"#document"}function W(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Q(e){var t;return(t=(Ge(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Ge(e){return Ae()?e instanceof Node||e instanceof W(e).Node:!1}function V(e){return Ae()?e instanceof Element||e instanceof W(e).Element:!1}function te(e){return Ae()?e instanceof HTMLElement||e instanceof W(e).HTMLElement:!1}function st(e){return!Ae()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof W(e).ShadowRoot}function ye(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=j(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&r!=="inline"&&r!=="contents"}function eo(e){return/^(table|td|th)$/.test(ce(e))}function Se(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const to=/transform|translate|scale|rotate|perspective|filter/,no=/paint|layout|strict|content/,ie=e=>!!e&&e!=="none";let qe;function Qe(e){const t=V(e)?j(e):e;return ie(t.transform)||ie(t.translate)||ie(t.scale)||ie(t.rotate)||ie(t.perspective)||!Ze()&&(ie(t.backdropFilter)||ie(t.filter))||to.test(t.willChange||"")||no.test(t.contain||"")}function oo(e){let t=re(e);for(;te(t)&&!pe(t);){if(Qe(t))return t;if(Se(t))return null;t=re(t)}return null}function Ze(){return qe==null&&(qe=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),qe}function pe(e){return/^(html|body|#document)$/.test(ce(e))}function j(e){return W(e).getComputedStyle(e)}function De(e){return V(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function re(e){if(ce(e)==="html")return e;const t=e.assignedSlot||e.parentNode||st(e)&&e.host||Q(e);return st(t)?t.host:t}function wt(e){const t=re(e);return pe(t)?e.ownerDocument?e.ownerDocument.body:e.body:te(t)&&ye(t)?t:wt(t)}function me(e,t,n){var o;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=wt(e),i=r===((o=e.ownerDocument)==null?void 0:o.body),s=W(r);if(i){const a=Ne(s);return t.concat(s,s.visualViewport||[],ye(r)?r:[],a&&n?me(a):[])}else return t.concat(r,me(r,[],n))}function Ne(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function bt(e){const t=j(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=te(e),i=r?e.offsetWidth:n,s=r?e.offsetHeight:o,a=_e(n)!==i||_e(o)!==s;return a&&(n=i,o=s),{width:n,height:o,$:a}}function Je(e){return V(e)?e:e.contextElement}function de(e){const t=Je(e);if(!te(t))return U(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=bt(t);let s=(i?_e(n.width):n.width)/o,a=(i?_e(n.height):n.height)/r;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}const ro=U(0);function xt(e){const t=W(e);return!Ze()||!t.visualViewport?ro:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function io(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==W(e)?!1:t}function le(e,t,n,o){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),i=Je(e);let s=U(1);t&&(o?V(o)&&(s=de(o)):s=de(e));const a=io(i,n,o)?xt(i):U(0);let c=(r.left+a.x)/s.x,d=(r.top+a.y)/s.y,l=r.width/s.x,f=r.height/s.y;if(i){const p=W(i),u=o&&V(o)?W(o):o;let h=p,g=Ne(h);for(;g&&o&&u!==h;){const v=de(g),y=g.getBoundingClientRect(),b=j(g),w=y.left+(g.clientLeft+parseFloat(b.paddingLeft))*v.x,x=y.top+(g.clientTop+parseFloat(b.paddingTop))*v.y;c*=v.x,d*=v.y,l*=v.x,f*=v.y,c+=w,d+=x,h=W(g),g=Ne(h)}}return Oe({width:l,height:f,x:c,y:d})}function Te(e,t){const n=De(e).scrollLeft;return t?t.left+n:le(Q(e)).left+n}function _t(e,t){const n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-Te(e,n),r=n.top+t.scrollTop;return{x:o,y:r}}function so(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i=r==="fixed",s=Q(o),a=t?Se(t.floating):!1;if(o===s||a&&i)return n;let c={scrollLeft:0,scrollTop:0},d=U(1);const l=U(0),f=te(o);if((f||!f&&!i)&&((ce(o)!=="body"||ye(s))&&(c=De(o)),f)){const u=le(o);d=de(o),l.x=u.x+o.clientLeft,l.y=u.y+o.clientTop}const p=s&&!f&&!i?_t(s,c):U(0);return{width:n.width*d.x,height:n.height*d.y,x:n.x*d.x-c.scrollLeft*d.x+l.x+p.x,y:n.y*d.y-c.scrollTop*d.y+l.y+p.y}}function ao(e){return Array.from(e.getClientRects())}function lo(e){const t=Q(e),n=De(e),o=e.ownerDocument.body,r=N(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=N(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let s=-n.scrollLeft+Te(e);const a=-n.scrollTop;return j(o).direction==="rtl"&&(s+=N(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:s,y:a}}const at=25;function co(e,t){const n=W(e),o=Q(e),r=n.visualViewport;let i=o.clientWidth,s=o.clientHeight,a=0,c=0;if(r){i=r.width,s=r.height;const l=Ze();(!l||l&&t==="fixed")&&(a=r.offsetLeft,c=r.offsetTop)}const d=Te(o);if(d<=0){const l=o.ownerDocument,f=l.body,p=getComputedStyle(f),u=l.compatMode==="CSS1Compat"&&parseFloat(p.marginLeft)+parseFloat(p.marginRight)||0,h=Math.abs(o.clientWidth-f.clientWidth-u);h<=at&&(i-=h)}else d<=at&&(i+=d);return{width:i,height:s,x:a,y:c}}function uo(e,t){const n=le(e,!0,t==="fixed"),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=te(e)?de(e):U(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,c=r*i.x,d=o*i.y;return{width:s,height:a,x:c,y:d}}function lt(e,t,n){let o;if(t==="viewport")o=co(e,n);else if(t==="document")o=lo(Q(e));else if(V(t))o=uo(t,n);else{const r=xt(e);o={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return Oe(o)}function Ct(e,t){const n=re(e);return n===t||!V(n)||pe(n)?!1:j(n).position==="fixed"||Ct(n,t)}function fo(e,t){const n=t.get(e);if(n)return n;let o=me(e,[],!1).filter(a=>V(a)&&ce(a)!=="body"),r=null;const i=j(e).position==="fixed";let s=i?re(e):e;for(;V(s)&&!pe(s);){const a=j(s),c=Qe(s);!c&&a.position==="fixed"&&(r=null),(i?!c&&!r:!c&&a.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||ye(s)&&!c&&Ct(e,s))?o=o.filter(l=>l!==s):r=a,s=re(s)}return t.set(e,o),o}function po(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const s=[...n==="clippingAncestors"?Se(t)?[]:fo(t,this._c):[].concat(n),o],a=lt(t,s[0],r);let c=a.top,d=a.right,l=a.bottom,f=a.left;for(let p=1;p{s(!1,1e-7)},1e3)}C===1&&!Pt(d,e.getBoundingClientRect())&&s(),x=!1}try{n=new IntersectionObserver(O,{...w,root:r.ownerDocument})}catch{n=new IntersectionObserver(O,w)}n.observe(e)}return s(!0),i}function bo(e,t,n,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:c=!1}=o,d=Je(e),l=r||i?[...d?me(d):[],...t?me(t):[]]:[];l.forEach(y=>{r&&y.addEventListener("scroll",n,{passive:!0}),i&&y.addEventListener("resize",n)});const f=d&&a?wo(d,n):null;let p=-1,u=null;s&&(u=new ResizeObserver(y=>{let[b]=y;b&&b.target===d&&u&&t&&(u.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var w;(w=u)==null||w.observe(t)})),n()}),d&&!c&&u.observe(d),t&&u.observe(t));let h,g=c?le(e):null;c&&v();function v(){const y=le(e);g&&!Pt(g,y)&&n(),g=y,h=requestAnimationFrame(v)}return n(),()=>{var y;l.forEach(b=>{r&&b.removeEventListener("scroll",n),i&&b.removeEventListener("resize",n)}),f?.(),(y=u)==null||y.disconnect(),u=null,c&&cancelAnimationFrame(h)}}const xo=Gn,_o=Qn,ut=Xn,Co=Jn,Oo=Yn,Po=Kn,Ao=Zn,So=(e,t,n)=>{const o=new Map,r={platform:yo,...n},i={...r.platform,_c:o};return jn(e,t,{...r,platform:i})};function Do(e){return e!=null&&typeof e=="object"&&"$el"in e}function We(e){if(Do(e)){const t=e.$el;return Ge(t)&&ce(t)==="#comment"?null:t}return e}function fe(e){return typeof e=="function"?e():m(e)}function To(e){return{name:"arrow",options:e,fn(t){const n=We(fe(e.element));return n==null?{}:Po({element:n,padding:e.padding}).fn(t)}}}function At(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function ft(e,t){const n=At(e);return Math.round(t*n)/n}function Eo(e,t,n){n===void 0&&(n={});const o=n.whileElementsMounted,r=_(()=>{var C;return(C=fe(n.open))!=null?C:!0}),i=_(()=>fe(n.middleware)),s=_(()=>{var C;return(C=fe(n.placement))!=null?C:"bottom"}),a=_(()=>{var C;return(C=fe(n.strategy))!=null?C:"absolute"}),c=_(()=>{var C;return(C=fe(n.transform))!=null?C:!0}),d=_(()=>We(e.value)),l=_(()=>We(t.value)),f=E(0),p=E(0),u=E(a.value),h=E(s.value),g=Mt({}),v=E(!1),y=_(()=>{const C={position:u.value,left:"0",top:"0"};if(!l.value)return C;const S=ft(l.value,f.value),L=ft(l.value,p.value);return c.value?{...C,transform:"translate("+S+"px, "+L+"px)",...At(l.value)>=1.5&&{willChange:"transform"}}:{position:u.value,left:S+"px",top:L+"px"}});let b;function w(){if(d.value==null||l.value==null)return;const C=r.value;So(d.value,l.value,{middleware:i.value,placement:s.value,strategy:a.value}).then(S=>{f.value=S.x,p.value=S.y,u.value=S.strategy,h.value=S.placement,g.value=S.middlewareData,v.value=C!==!1})}function x(){typeof b=="function"&&(b(),b=void 0)}function O(){if(x(),o===void 0){w();return}if(d.value!=null&&l.value!=null){b=o(d.value,l.value,w);return}}function P(){r.value||(v.value=!1)}return be([i,s,a,r],w,{flush:"sync"}),be([d,l],O,{flush:"sync"}),be(r,P,{flush:"sync"}),kt()&&$t(x),{x:ue(f),y:ue(p),strategy:ue(u),placement:ue(h),middlewareData:ue(g),isPositioned:ue(v),floatingStyles:y,update:w}}const Ro={side:"bottom",sideOffset:0,sideFlip:!0,align:"center",alignOffset:0,alignFlip:!0,arrowPadding:0,hideShiftedArrow:!0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:"partial",hideWhenDetached:!1,positionStrategy:"fixed",updatePositionStrategy:"optimized",prioritizePosition:!1},[qo,Bo]=Ke("PopperContent");var Lo=q({inheritAttrs:!1,__name:"PopperContent",props:Ft({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...Ro}),emits:["placed"],setup(e,{emit:t}){const n=e,o=t,r=mt(),{forwardRef:i,currentElement:s}=K(),a=E(),c=E(),{width:d,height:l}=hn(c),f=_(()=>n.side+(n.align!=="center"?`-${n.align}`:"")),p=_(()=>typeof n.collisionPadding=="number"?n.collisionPadding:{top:0,right:0,bottom:0,left:0,...n.collisionPadding}),u=_(()=>Array.isArray(n.collisionBoundary)?n.collisionBoundary:[n.collisionBoundary]),h=_(()=>({padding:p.value,boundary:u.value.filter(qn),altBoundary:u.value.length>0})),g=_(()=>({mainAxis:n.sideFlip,crossAxis:n.alignFlip})),v=Zt(()=>[xo({mainAxis:n.sideOffset+l.value,alignmentAxis:n.alignOffset}),n.prioritizePosition&&n.avoidCollisions&&ut({...h.value,...g.value}),n.avoidCollisions&&_o({mainAxis:!0,crossAxis:!!n.prioritizePosition,limiter:n.sticky==="partial"?Ao():void 0,...h.value}),!n.prioritizePosition&&n.avoidCollisions&&ut({...h.value,...g.value}),Co({...h.value,apply:({elements:A,rects:H,availableWidth:R,availableHeight:Z})=>{const{width:I,height:F}=H.reference,k=A.floating.style;k.setProperty("--reka-popper-available-width",`${R}px`),k.setProperty("--reka-popper-available-height",`${Z}px`),k.setProperty("--reka-popper-anchor-width",`${I}px`),k.setProperty("--reka-popper-anchor-height",`${F}px`)}}),c.value&&To({element:c.value,padding:n.arrowPadding}),Bn({arrowWidth:d.value,arrowHeight:l.value}),n.hideWhenDetached&&Oo({strategy:"referenceHidden",...h.value})]),y=_(()=>n.reference??r.anchor.value),{floatingStyles:b,placement:w,isPositioned:x,middlewareData:O}=Eo(y,a,{strategy:n.positionStrategy,placement:f,whileElementsMounted:(...A)=>bo(...A,{layoutShift:!n.disableUpdateOnLayoutShift,animationFrame:n.updatePositionStrategy==="always"}),middleware:v}),P=_(()=>$e(w.value)[0]),C=_(()=>$e(w.value)[1]);dt(()=>{x.value&&o("placed")});const S=_(()=>{const A=O.value.arrow?.centerOffset!==0;return n.hideShiftedArrow&&A}),L=E("");se(()=>{s.value&&(L.value=window.getComputedStyle(s.value).zIndex)});const M=_(()=>O.value.arrow?.x??0),X=_(()=>O.value.arrow?.y??0);return Bo({placedSide:P,onArrowChange:A=>c.value=A,arrowX:M,arrowY:X,shouldHideArrow:S}),(A,H)=>(T(),xe("div",{ref_key:"floatingRef",ref:a,"data-reka-popper-content-wrapper":"",style:Ie({...m(b),transform:m(x)?m(b).transform:"translate(0, -200%)",minWidth:"max-content",zIndex:L.value,"--reka-popper-transform-origin":[m(O).transformOrigin?.x,m(O).transformOrigin?.y].join(" "),...m(O).hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}})},[ae(m(ve),G({ref:m(i)},A.$attrs,{"as-child":n.asChild,as:A.as,"data-side":P.value,"data-align":C.value,style:{animation:m(x)?void 0:"none"}}),{default:D(()=>[B(A.$slots,"default")]),_:3},16,["as-child","as","data-side","data-align","style"])],4))}}),ko=Lo;const $o={top:"bottom",right:"left",bottom:"top",left:"right"};var Mo=q({inheritAttrs:!1,__name:"PopperArrow",props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(e){const{forwardRef:t}=K(),n=qo(),o=_(()=>$o[n.placedSide.value]);return(r,i)=>(T(),xe("span",{ref:s=>{m(n).onArrowChange(s)},style:Ie({position:"absolute",left:m(n).arrowX?.value?`${m(n).arrowX?.value}px`:void 0,top:m(n).arrowY?.value?`${m(n).arrowY?.value}px`:void 0,[o.value]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[m(n).placedSide.value],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[m(n).placedSide.value],visibility:m(n).shouldHideArrow.value?"hidden":void 0})},[ae(Rn,G(r.$attrs,{ref:m(t),style:{display:"block"},as:r.as,"as-child":r.asChild,rounded:r.rounded,width:r.width,height:r.height}),{default:D(()=>[B(r.$slots,"default")]),_:3},16,["as","as-child","rounded","width","height"])],4))}}),Fo=Mo,No=q({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(e){const t=e;return K(),(n,o)=>(T(),$(m(Fo),Ve(je(t)),{default:D(()=>[B(n.$slots,"default")]),_:3},16))}}),Wo=No;const St="tooltip.open",[Ee,Ho]=Ke("TooltipRoot");var zo=q({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(e,{emit:t}){const n=e,o=t;K();const r=Pe(),i=_(()=>n.disableHoverableContent??r.disableHoverableContent.value),s=_(()=>n.disableClosingTrigger??r.disableClosingTrigger.value),a=_(()=>n.disabled??r.disabled.value),c=_(()=>n.delayDuration??r.delayDuration.value),d=_(()=>n.ignoreNonKeyboardFocus??r.ignoreNonKeyboardFocus.value),l=Yt(n,"open",o,{defaultValue:n.defaultOpen,passive:n.open===void 0});be(l,w=>{r.onClose&&(w?(r.onOpen(),document.dispatchEvent(new CustomEvent(St))):r.onClose())});const f=E(!1),p=E(),u=_(()=>l.value?f.value?"delayed-open":"instant-open":"closed"),{start:h,stop:g}=Jt(()=>{f.value=!0,l.value=!0},c,{immediate:!1});function v(){g(),f.value=!1,l.value=!0}function y(){g(),l.value=!1}function b(){h()}return Ho({contentId:"",open:l,stateAttribute:u,trigger:p,onTriggerChange(w){p.value=w},onTriggerEnter(){r.isOpenDelayed.value?b():v()},onTriggerLeave(){i.value?y():g()},onOpen:v,onClose:y,disableHoverableContent:i,disableClosingTrigger:s,disabled:a,ignoreNonKeyboardFocus:d}),(w,x)=>(T(),$(m(Pn),null,{default:D(()=>[B(w.$slots,"default",{open:m(l)})]),_:3}))}}),Io=zo,Vo=q({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const n=e,o=t,r=Ee(),i=Pe(),{forwardRef:s,currentElement:a}=K(),c=_(()=>n.ariaLabel||a.value?.textContent),d=_(()=>{const{ariaLabel:l,...f}=n;return sn(f,i.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return ze(()=>{et(window,"scroll",l=>{l.target?.contains(r.trigger.value)&&r.onClose()}),et(window,St,r.onClose)}),(l,f)=>(T(),$(m(bn),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:f[0]||(f[0]=p=>o("escapeKeyDown",p)),onPointerDownOutside:f[1]||(f[1]=p=>{m(r).disableClosingTrigger.value&&m(r).trigger.value?.contains(p.target)&&p.preventDefault(),o("pointerDownOutside",p)}),onFocusOutside:f[2]||(f[2]=Ht(()=>{},["prevent"])),onDismiss:f[3]||(f[3]=p=>m(r).onClose())},{default:D(()=>[ae(m(ko),G({ref:m(s),"data-state":m(r).stateAttribute.value},{...l.$attrs,...d.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:D(()=>[B(l.$slots,"default"),ae(m(Et),{id:m(r).contentId,role:"tooltip"},{default:D(()=>[Nt(Wt(c.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),Dt=Vo,jo=q({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){const n=Rt(e),{forwardRef:o,currentElement:r}=K(),{trigger:i,onClose:s}=Ee(),a=Pe(),{isPointerInTransit:c,onPointerExit:d}=an(i,r);return a.isPointerInTransitRef=c,d(()=>{s()}),(l,f)=>(T(),$(Dt,G({ref:m(o)},m(n)),{default:D(()=>[B(l.$slots,"default")]),_:3},16))}}),Ko=jo,Xo=q({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const n=e,o=t,r=Ee(),i=He(n,o),{forwardRef:s}=K();return(a,c)=>(T(),$(m(tn),{present:a.forceMount||m(r).open.value},{default:D(()=>[(T(),$(zt(m(r).disableHoverableContent.value?Dt:Ko),G({ref:m(s)},m(i)),{default:D(()=>[B(a.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),Yo=Xo,Uo=q({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const t=e;return(n,o)=>(T(),$(m(_n),Ve(je(t)),{default:D(()=>[B(n.$slots,"default")]),_:3},16))}}),Go=Uo,Qo=q({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,n=Ee(),o=Pe();n.contentId||=nn(void 0,"reka-tooltip-content");const{forwardRef:r,currentElement:i}=K(),s=E(!1),a=E(!1),c=_(()=>n.disabled.value?{}:{click:g,focus:u,pointermove:f,pointerleave:p,pointerdown:l,blur:h});ze(()=>{n.onTriggerChange(i.value)});function d(){setTimeout(()=>{s.value=!1},1)}function l(){n.open&&!n.disableClosingTrigger.value&&n.onClose(),s.value=!0,document.addEventListener("pointerup",d,{once:!0})}function f(v){v.pointerType!=="touch"&&!a.value&&!o.isPointerInTransitRef.value&&(n.onTriggerEnter(),a.value=!0)}function p(){n.onTriggerLeave(),a.value=!1}function u(v){s.value||n.ignoreNonKeyboardFocus.value&&!v.target.matches?.(":focus-visible")||n.onOpen()}function h(){n.onClose()}function g(){n.disableClosingTrigger.value||n.onClose()}return(v,y)=>(T(),$(m(Sn),{"as-child":"",reference:v.reference},{default:D(()=>[ae(m(ve),G({ref:m(r),"aria-describedby":m(n).open.value?m(n).contentId:void 0,"data-state":m(n).stateAttribute.value,as:v.as,"as-child":t.asChild,"data-grace-area-trigger":""},It(c.value)),{default:D(()=>[B(v.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),Zo=Qo;const lr=q({__name:"Tooltip",props:{defaultOpen:{type:Boolean},open:{type:Boolean},delayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},emits:["update:open"],setup(e,{emit:t}){const r=He(e,t);return(i,s)=>(T(),$(m(Io),G({"data-slot":"tooltip"},m(r)),{default:D(a=>[B(i.$slots,"default",Ve(je(a)))]),_:3},16))}}),cr=q({inheritAttrs:!1,__name:"TooltipContent",props:{forceMount:{type:Boolean},ariaLabel:{},asChild:{type:Boolean},as:{},side:{},sideOffset:{default:4},align:{},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},class:{type:[Boolean,null,String,Object,Array]}},emits:["escapeKeyDown","pointerDownOutside"],setup(e,{emit:t}){const n=e,o=t,r=en(n,"class"),i=He(r,o);return(s,a)=>(T(),$(m(Go),null,{default:D(()=>[ae(m(Yo),G({"data-slot":"tooltip-content"},{...m(i),...s.$attrs},{class:m(Vt)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance",n.class)}),{default:D(()=>[B(s.$slots,"default"),ae(m(Wo),{class:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]),_:3},16,["class"])]),_:3}))}}),ur=q({__name:"TooltipTrigger",props:{reference:{},asChild:{type:Boolean},as:{}},setup(e){const t=e;return(n,o)=>(T(),$(m(Zo),G({"data-slot":"tooltip-trigger"},t),{default:D(()=>[B(n.$slots,"default")]),_:3},16))}});export{bn as D,Sn as P,_n as T,lr as _,ur as a,cr as b,Pn as c,ko as d,Ro as e,sn as f}; diff --git a/cloudflare/pages/assets/VisuallyHidden-DmVvgUgH.js b/cloudflare/pages/assets/VisuallyHidden-DmVvgUgH.js new file mode 100644 index 0000000..24cca97 --- /dev/null +++ b/cloudflare/pages/assets/VisuallyHidden-DmVvgUgH.js @@ -0,0 +1 @@ +import{aj as p,ak as i,ai as l,k as u,al as f,d as c,l as h,b as m,w as v,q as y,u as P}from"./index-BYiXDk_r.js";import{P as _}from"./index-D0L1R3xN.js";function b(n){const e=l(),s=e?.type.emits,r={};return s?.length||console.warn(`No emitted event found. Please check component: ${e?.type.__name}`),s?.forEach(a=>{r[p(i(a))]=(...o)=>n(a,...o)}),r}function w(n){const e=l(),s=Object.keys(e?.type.props??{}).reduce((a,o)=>{const t=(e?.type.props[o]).default;return t!==void 0&&(a[o]=t),a},{}),r=f(n);return u(()=>{const a={},o=e?.vnode.props??{};return Object.keys(o).forEach(t=>{a[i(t)]=o[t]}),Object.keys({...s,...a}).reduce((t,d)=>(r.value[d]!==void 0&&(t[d]=r.value[d]),t),{})})}function V(n,e){const s=w(n),r=e?b(e):{};return u(()=>({...s.value,...r}))}var g=c({__name:"VisuallyHidden",props:{feature:{type:String,required:!1,default:"focusable"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(n){return(e,s)=>(h(),m(P(_),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature==="focusable"?"true":void 0,"data-hidden":e.feature==="fully-hidden"?"":void 0,tabindex:e.feature==="fully-hidden"?"-1":void 0,style:{position:"absolute",border:0,width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",clipPath:"inset(50%)",whiteSpace:"nowrap",wordWrap:"normal",top:"-1px",left:"-1px"}},{default:v(()=>[y(e.$slots,"default")]),_:3},8,["as","as-child","aria-hidden","data-hidden","tabindex"]))}}),j=g;export{j as V,V as a,w as b,b as u}; diff --git a/cloudflare/pages/assets/_plugin-vue_export-helper-DlAUqK2U.js b/cloudflare/pages/assets/_plugin-vue_export-helper-DlAUqK2U.js new file mode 100644 index 0000000..718edd3 --- /dev/null +++ b/cloudflare/pages/assets/_plugin-vue_export-helper-DlAUqK2U.js @@ -0,0 +1 @@ +const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _}; diff --git a/cloudflare/pages/assets/activity-SKRWHPM4.js b/cloudflare/pages/assets/activity-SKRWHPM4.js new file mode 100644 index 0000000..29be9bb --- /dev/null +++ b/cloudflare/pages/assets/activity-SKRWHPM4.js @@ -0,0 +1 @@ +import{m as t}from"./index-BYiXDk_r.js";const c=t("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);export{c as A}; diff --git a/cloudflare/pages/assets/check-DEjmzl3F.js b/cloudflare/pages/assets/check-DEjmzl3F.js new file mode 100644 index 0000000..8fbd12f --- /dev/null +++ b/cloudflare/pages/assets/check-DEjmzl3F.js @@ -0,0 +1 @@ +import{m as c}from"./index-BYiXDk_r.js";const o=c("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);export{o as C}; diff --git a/cloudflare/pages/assets/chevron-down-xV8GE0yH.js b/cloudflare/pages/assets/chevron-down-xV8GE0yH.js new file mode 100644 index 0000000..71169bc --- /dev/null +++ b/cloudflare/pages/assets/chevron-down-xV8GE0yH.js @@ -0,0 +1 @@ +import{m as o}from"./index-BYiXDk_r.js";const n=o("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);export{n as C}; diff --git a/cloudflare/pages/assets/chevron-right-4Ffa5RHB.js b/cloudflare/pages/assets/chevron-right-4Ffa5RHB.js new file mode 100644 index 0000000..60acb82 --- /dev/null +++ b/cloudflare/pages/assets/chevron-right-4Ffa5RHB.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const h=e("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);const o=e("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);export{o as C,h as a}; diff --git a/cloudflare/pages/assets/circle-alert-DI3FQNzC.js b/cloudflare/pages/assets/circle-alert-DI3FQNzC.js new file mode 100644 index 0000000..894c68f --- /dev/null +++ b/cloudflare/pages/assets/circle-alert-DI3FQNzC.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const r=e("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);export{r as C}; diff --git a/cloudflare/pages/assets/clipboard-BxPwmQDo.js b/cloudflare/pages/assets/clipboard-BxPwmQDo.js new file mode 100644 index 0000000..e4dea78 --- /dev/null +++ b/cloudflare/pages/assets/clipboard-BxPwmQDo.js @@ -0,0 +1 @@ +async function a(t){if(navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(t);return}catch{}const e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}export{a as c}; diff --git a/cloudflare/pages/assets/clipboard-check-B8B0idlM.js b/cloudflare/pages/assets/clipboard-check-B8B0idlM.js new file mode 100644 index 0000000..6b6bf59 --- /dev/null +++ b/cloudflare/pages/assets/clipboard-check-B8B0idlM.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const r=a("clipboard-check",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"m9 14 2 2 4-4",key:"df797q"}]]);export{r as C}; diff --git a/cloudflare/pages/assets/clock-ZB7HOEvr.js b/cloudflare/pages/assets/clock-ZB7HOEvr.js new file mode 100644 index 0000000..c4537ef --- /dev/null +++ b/cloudflare/pages/assets/clock-ZB7HOEvr.js @@ -0,0 +1 @@ +import{m as c}from"./index-BYiXDk_r.js";const o=c("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);export{o as C}; diff --git a/cloudflare/pages/assets/code-zczxpfOO.js b/cloudflare/pages/assets/code-zczxpfOO.js new file mode 100644 index 0000000..d9e9da0 --- /dev/null +++ b/cloudflare/pages/assets/code-zczxpfOO.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const t=e("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);export{t as C}; diff --git a/cloudflare/pages/assets/createContext-a9Tpfoxo.js b/cloudflare/pages/assets/createContext-a9Tpfoxo.js new file mode 100644 index 0000000..a9fb6c8 --- /dev/null +++ b/cloudflare/pages/assets/createContext-a9Tpfoxo.js @@ -0,0 +1 @@ +import{ad as s,af as c}from"./index-BYiXDk_r.js";function x(t,r){const e=typeof t=="string"&&!r?`${t}Context`:r,i=Symbol(e);return[n=>{const o=s(i,n);if(o||o===null)return o;throw new Error(`Injection \`${i.toString()}\` not found. Component must be used within ${Array.isArray(t)?`one of the following components: ${t.join(", ")}`:`\`${t}\``}`)},n=>(c(i,n),n)]}export{x as c}; diff --git a/cloudflare/pages/assets/download-Cz1Slb-U.js b/cloudflare/pages/assets/download-Cz1Slb-U.js new file mode 100644 index 0000000..536ebbe --- /dev/null +++ b/cloudflare/pages/assets/download-Cz1Slb-U.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const d=a("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);export{d as D}; diff --git a/cloudflare/pages/assets/eye-Bf9-8M_K.js b/cloudflare/pages/assets/eye-Bf9-8M_K.js new file mode 100644 index 0000000..b1d4c6e --- /dev/null +++ b/cloudflare/pages/assets/eye-Bf9-8M_K.js @@ -0,0 +1 @@ +import{m as c}from"./index-BYiXDk_r.js";const r=c("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);export{r as E}; diff --git a/cloudflare/pages/assets/file-search-DRPM2poS.js b/cloudflare/pages/assets/file-search-DRPM2poS.js new file mode 100644 index 0000000..2132035 --- /dev/null +++ b/cloudflare/pages/assets/file-search-DRPM2poS.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const c=e("file-search",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]]);export{c as F}; diff --git a/cloudflare/pages/assets/file-text-C7Xfe8Jp.js b/cloudflare/pages/assets/file-text-C7Xfe8Jp.js new file mode 100644 index 0000000..335eb90 --- /dev/null +++ b/cloudflare/pages/assets/file-text-C7Xfe8Jp.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const t=e("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);export{t as F}; diff --git a/cloudflare/pages/assets/index-BBqWFH4z.css b/cloudflare/pages/assets/index-BBqWFH4z.css new file mode 100644 index 0000000..7947333 --- /dev/null +++ b/cloudflare/pages/assets/index-BBqWFH4z.css @@ -0,0 +1 @@ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-900:oklch(40.8% .123 38.172);--color-orange-950:oklch(26.6% .079 36.259);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-green-100:oklch(96.2% .044 156.743);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-50:oklch(98.4% .014 180.72);--color-teal-200:oklch(91% .096 180.426);--color-teal-300:oklch(85.5% .138 181.071);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-teal-700:oklch(51.1% .096 186.391);--color-teal-950:oklch(27.7% .046 192.524);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-sky-950:oklch(29.3% .066 243.157);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-900:oklch(35.9% .144 278.697);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-950:oklch(28.3% .141 291.089);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-purple-950:oklch(29.1% .149 302.717);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-stone-100:oklch(97% .001 106.424);--color-stone-200:oklch(92.3% .003 48.717);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-700:oklch(37.4% .01 67.558);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.-right-3{right:calc(var(--spacing) * -3)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.-left-2{left:calc(var(--spacing) * -2)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.m-0{margin:calc(var(--spacing) * 0)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2\.5{margin-block:calc(var(--spacing) * 2.5)}.my-4{margin-block:calc(var(--spacing) * 4)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.-mt-1{margin-top:calc(var(--spacing) * -1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-auto{margin-right:auto}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-3\.5{margin-left:calc(var(--spacing) * 3.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-\[1\.15rem\]{height:1.15rem}.h-\[2px\]{height:2px}.h-\[520px\]{height:520px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[calc\(100vh-3\.5rem\)\]{height:calc(100vh - 3.5rem)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--reka-dropdown-menu-content-available-height\){max-height:var(--reka-dropdown-menu-content-available-height)}.max-h-20{max-height:calc(var(--spacing) * 20)}.max-h-28{max-height:calc(var(--spacing) * 28)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[80px\]{min-height:80px}.min-h-\[500px\]{min-height:500px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-32{width:calc(var(--spacing) * 32)}.w-44{width:calc(var(--spacing) * 44)}.w-\[380px\]{width:380px}.w-\[400px\]{width:400px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[80px\]{max-width:80px}.max-w-\[100px\]{max-width:100px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[200px\]{min-width:200px}.min-w-\[240px\]{min-width:240px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--reka-dropdown-menu-content-transform-origin\){transform-origin:var(--reka-dropdown-menu-content-transform-origin)}.origin-right{transform-origin:100%}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.\!gap-4{gap:calc(var(--spacing) * 4)!important}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border\/20>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border\/20>:not(:last-child)){border-color:color-mix(in oklab,var(--border) 20%,transparent)}}:where(.divide-border\/30>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border\/30>:not(:last-child)){border-color:color-mix(in oklab,var(--border) 30%,transparent)}}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\!rounded-xl{border-radius:calc(var(--radius) + 4px)!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-xl{border-top-left-radius:calc(var(--radius) + 4px);border-top-right-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[3px\]{border-left-style:var(--tw-border-style);border-left-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-200\/50{border-color:#fee68580}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/50{border-color:color-mix(in oklab,var(--color-amber-200) 50%,transparent)}}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-400{border-color:var(--color-amber-400)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-200\/60{border-color:#bedbff99}@supports (color:color-mix(in lab,red,red)){.border-blue-200\/60{border-color:color-mix(in oklab,var(--color-blue-200) 60%,transparent)}}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-500\/20{border-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/20{border-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.border-border,.border-border\/10{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/10{border-color:color-mix(in oklab,var(--border) 10%,transparent)}}.border-border\/20{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/20{border-color:color-mix(in oklab,var(--border) 20%,transparent)}}.border-border\/30{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/30{border-color:color-mix(in oklab,var(--border) 30%,transparent)}}.border-border\/40{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/40{border-color:color-mix(in oklab,var(--border) 40%,transparent)}}.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--border) 60%,transparent)}}.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/70{border-color:color-mix(in oklab,var(--border) 70%,transparent)}}.border-destructive\/10{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/10{border-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-400{border-color:var(--color-emerald-400)}.border-emerald-500{border-color:var(--color-emerald-500)}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-indigo-200{border-color:var(--color-indigo-200)}.border-input{border-color:var(--input)}.border-muted-foreground\/20{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/20{border-color:color-mix(in oklab,var(--muted-foreground) 20%,transparent)}}.border-orange-200{border-color:var(--color-orange-200)}.border-orange-500\/20{border-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/20{border-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.border-primary,.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.border-primary\/30{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.border-primary\/50{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/50{border-color:color-mix(in oklab,var(--primary) 50%,transparent)}}.border-primary\/60{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/60{border-color:color-mix(in oklab,var(--primary) 60%,transparent)}}.border-purple-400{border-color:var(--color-purple-400)}.border-rose-100{border-color:var(--color-rose-100)}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-200\/50{border-color:#ffccd380}@supports (color:color-mix(in lab,red,red)){.border-rose-200\/50{border-color:color-mix(in oklab,var(--color-rose-200) 50%,transparent)}}.border-rose-500\/20{border-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/20{border-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-sky-100{border-color:var(--color-sky-100)}.border-sky-200{border-color:var(--color-sky-200)}.border-sky-200\/50{border-color:#b8e6fe80}@supports (color:color-mix(in lab,red,red)){.border-sky-200\/50{border-color:color-mix(in oklab,var(--color-sky-200) 50%,transparent)}}.border-sky-300{border-color:var(--color-sky-300)}.border-sky-500\/20{border-color:#00a5ef33}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/20{border-color:color-mix(in oklab,var(--color-sky-500) 20%,transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-stone-200{border-color:var(--color-stone-200)}.border-teal-200{border-color:var(--color-teal-200)}.border-teal-300{border-color:var(--color-teal-300)}.border-transparent{border-color:#0000}.border-violet-200{border-color:var(--color-violet-200)}.border-violet-300{border-color:var(--color-violet-300)}.border-violet-500\/20{border-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.border-violet-500\/20{border-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.border-yellow-500\/20{border-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/20{border-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.border-zinc-500\/20{border-color:#71717b33}@supports (color:color-mix(in lab,red,red)){.border-zinc-500\/20{border-color:color-mix(in oklab,var(--color-zinc-500) 20%,transparent)}}.border-zinc-700\/20{border-color:#3f3f4633}@supports (color:color-mix(in lab,red,red)){.border-zinc-700\/20{border-color:color-mix(in oklab,var(--color-zinc-700) 20%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-amber-500{border-left-color:var(--color-amber-500)}.border-l-border{border-left-color:var(--border)}.border-l-emerald-500{border-left-color:var(--color-emerald-500)}.border-l-indigo-400{border-left-color:var(--color-indigo-400)}.border-l-orange-500{border-left-color:var(--color-orange-500)}.border-l-primary{border-left-color:var(--primary)}.border-l-rose-500{border-left-color:var(--color-rose-500)}.border-l-sky-500{border-left-color:var(--color-sky-500)}.border-l-slate-300{border-left-color:var(--color-slate-300)}.border-l-stone-400{border-left-color:var(--color-stone-400)}.border-l-transparent{border-left-color:#0000}.bg-accent\/30{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/30{background-color:color-mix(in oklab,var(--accent) 30%,transparent)}}.bg-accent\/60{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/60{background-color:color-mix(in oklab,var(--accent) 60%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/30{background-color:#fffbeb4d}@supports (color:color-mix(in lab,red,red)){.bg-amber-50\/30{background-color:color-mix(in oklab,var(--color-amber-50) 30%,transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background,.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/50{background-color:color-mix(in oklab,var(--background) 50%,transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/70{background-color:color-mix(in oklab,var(--background) 70%,transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background) 80%,transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background) 95%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-border,.bg-border\/50{background-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.bg-border\/50{background-color:color-mix(in oklab,var(--border) 50%,transparent)}}.bg-card,.bg-card\/50{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,var(--card) 50%,transparent)}}.bg-chart-1\/60{background-color:var(--chart-1)}@supports (color:color-mix(in lab,red,red)){.bg-chart-1\/60{background-color:color-mix(in oklab,var(--chart-1) 60%,transparent)}}.bg-chart-2\/50{background-color:var(--chart-2)}@supports (color:color-mix(in lab,red,red)){.bg-chart-2\/50{background-color:color-mix(in oklab,var(--chart-2) 50%,transparent)}}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/5{background-color:color-mix(in oklab,var(--destructive) 5%,transparent)}}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/5{background-color:#00bb7f0d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/5{background-color:color-mix(in oklab,var(--color-emerald-500) 5%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}}.bg-muted\/5{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/5{background-color:color-mix(in oklab,var(--muted) 5%,transparent)}}.bg-muted\/10{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--muted) 10%,transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--muted) 20%,transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/5{background-color:#fe6e000d}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/5{background-color:color-mix(in oklab,var(--color-orange-500) 5%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--primary) 5%,transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-primary\/\[0\.03\]{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/\[0\.03\]{background-color:color-mix(in oklab,var(--primary) 3%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-50\/30{background-color:#fff1f24d}@supports (color:color-mix(in lab,red,red)){.bg-rose-50\/30{background-color:color-mix(in oklab,var(--color-rose-50) 30%,transparent)}}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/5{background-color:#ff23570d}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/5{background-color:color-mix(in oklab,var(--color-rose-500) 5%,transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-50\/30{background-color:#f0f9ff4d}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/30{background-color:color-mix(in oklab,var(--color-sky-50) 30%,transparent)}}.bg-sky-400{background-color:var(--color-sky-400)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-500\/5{background-color:#00a5ef0d}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/5{background-color:color-mix(in oklab,var(--color-sky-500) 5%,transparent)}}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500) 10%,transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-stone-100{background-color:var(--color-stone-100)}.bg-stone-400{background-color:var(--color-stone-400)}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-teal-500\/10{background-color:#00baa71a}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/10{background-color:color-mix(in oklab,var(--color-teal-500) 10%,transparent)}}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-violet-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/10{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-zinc-400{background-color:var(--color-zinc-400)}.bg-zinc-500\/5{background-color:#71717b0d}@supports (color:color-mix(in lab,red,red)){.bg-zinc-500\/5{background-color:color-mix(in oklab,var(--color-zinc-500) 5%,transparent)}}.bg-zinc-500\/10{background-color:#71717b1a}@supports (color:color-mix(in lab,red,red)){.bg-zinc-500\/10{background-color:color-mix(in oklab,var(--color-zinc-500) 10%,transparent)}}.bg-zinc-600{background-color:var(--color-zinc-600)}.bg-zinc-700\/10{background-color:#3f3f461a}@supports (color:color-mix(in lab,red,red)){.bg-zinc-700\/10{background-color:color-mix(in oklab,var(--color-zinc-700) 10%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-amber-50{--tw-gradient-from:var(--color-amber-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-50\/80{--tw-gradient-from:#fffbebcc}@supports (color:color-mix(in lab,red,red)){.from-amber-50\/80{--tw-gradient-from:color-mix(in oklab, var(--color-amber-50) 80%, transparent)}}.from-amber-50\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-400{--tw-gradient-from:var(--color-amber-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-card{--tw-gradient-from:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-400{--tw-gradient-from:var(--color-gray-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-muted\/30{--tw-gradient-from:var(--muted)}@supports (color:color-mix(in lab,red,red)){.from-muted\/30{--tw-gradient-from:color-mix(in oklab, var(--muted) 30%, transparent)}}.from-muted\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-orange-50\/60{--tw-gradient-from:#fff7ed99}@supports (color:color-mix(in lab,red,red)){.from-orange-50\/60{--tw-gradient-from:color-mix(in oklab, var(--color-orange-50) 60%, transparent)}}.from-orange-50\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-orange-500{--tw-gradient-from:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary\/30{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/30{--tw-gradient-from:color-mix(in oklab, var(--primary) 30%, transparent)}}.from-primary\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary\/80{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/80{--tw-gradient-from:color-mix(in oklab, var(--primary) 80%, transparent)}}.from-primary\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-50{--tw-gradient-from:var(--color-sky-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sky-400{--tw-gradient-from:var(--color-sky-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-100\/80{--tw-gradient-from:#f1f5f9cc}@supports (color:color-mix(in lab,red,red)){.from-slate-100\/80{--tw-gradient-from:color-mix(in oklab, var(--color-slate-100) 80%, transparent)}}.from-slate-100\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-teal-50{--tw-gradient-from:var(--color-teal-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-teal-400{--tw-gradient-from:var(--color-teal-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-50{--tw-gradient-from:var(--color-violet-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-400{--tw-gradient-from:var(--color-violet-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-primary\/10{--tw-gradient-via:var(--primary)}@supports (color:color-mix(in lab,red,red)){.via-primary\/10{--tw-gradient-via:color-mix(in oklab, var(--primary) 10%, transparent)}}.via-primary\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/50{--tw-gradient-via:var(--primary)}@supports (color:color-mix(in lab,red,red)){.via-primary\/50{--tw-gradient-via:color-mix(in oklab, var(--primary) 50%, transparent)}}.via-primary\/50{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-blue-100{--tw-gradient-to:var(--color-blue-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-500{--tw-gradient-to:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-100{--tw-gradient-to:var(--color-emerald-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-500{--tw-gradient-to:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to:var(--color-gray-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-500{--tw-gradient-to:var(--color-gray-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-100{--tw-gradient-to:var(--color-indigo-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-500{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-100{--tw-gradient-to:var(--color-orange-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-500{--tw-gradient-to:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary\/20{--tw-gradient-to:var(--primary)}@supports (color:color-mix(in lab,red,red)){.to-primary\/20{--tw-gradient-to:color-mix(in oklab, var(--primary) 20%, transparent)}}.to-primary\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-500{--tw-gradient-to:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-\[3px\]{padding:3px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.\!py-5{padding-block:calc(var(--spacing) * 5)!important}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[120px\]{font-size:120px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-300{color:var(--color-amber-300)}.text-amber-300\/80{color:#ffd236cc}@supports (color:color-mix(in lab,red,red)){.text-amber-300\/80{color:color-mix(in oklab,var(--color-amber-300) 80%,transparent)}}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/60{color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/60{color:color-mix(in oklab,var(--color-amber-400) 60%,transparent)}}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/80{color:color-mix(in oklab,var(--color-amber-400) 80%,transparent)}}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--background)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-600\/60{color:#155dfc99}@supports (color:color-mix(in lab,red,red)){.text-blue-600\/60{color:color-mix(in oklab,var(--color-blue-600) 60%,transparent)}}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-card-foreground{color:var(--card-foreground)}.text-destructive,.text-destructive\/70{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.text-destructive\/70{color:color-mix(in oklab,var(--destructive) 70%,transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-400\/60{color:#00d29499}@supports (color:color-mix(in lab,red,red)){.text-emerald-400\/60{color:color-mix(in oklab,var(--color-emerald-400) 60%,transparent)}}.text-emerald-400\/70{color:#00d294b3}@supports (color:color-mix(in lab,red,red)){.text-emerald-400\/70{color:color-mix(in oklab,var(--color-emerald-400) 70%,transparent)}}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-500\/50{color:#00bb7f80}@supports (color:color-mix(in lab,red,red)){.text-emerald-500\/50{color:color-mix(in oklab,var(--color-emerald-500) 50%,transparent)}}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground) 60%,transparent)}}.text-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/70{color:color-mix(in oklab,var(--foreground) 70%,transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--foreground) 80%,transparent)}}.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--foreground) 90%,transparent)}}.text-gray-600{color:var(--color-gray-600)}.text-green-800{color:var(--color-green-800)}.text-indigo-700{color:var(--color-indigo-700)}.text-muted-foreground,.text-muted-foreground\/20{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/20{color:color-mix(in oklab,var(--muted-foreground) 20%,transparent)}}.text-muted-foreground\/25{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/25{color:color-mix(in oklab,var(--muted-foreground) 25%,transparent)}}.text-muted-foreground\/30{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/30{color:color-mix(in oklab,var(--muted-foreground) 30%,transparent)}}.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/40{color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}}.text-muted-foreground\/45{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/45{color:color-mix(in oklab,var(--muted-foreground) 45%,transparent)}}.text-muted-foreground\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/50{color:color-mix(in oklab,var(--muted-foreground) 50%,transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--muted-foreground) 60%,transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/70{color:color-mix(in oklab,var(--muted-foreground) 70%,transparent)}}.text-orange-700{color:var(--color-orange-700)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-primary\/40{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\/40{color:color-mix(in oklab,var(--primary) 40%,transparent)}}.text-primary\/50{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\/50{color:color-mix(in oklab,var(--primary) 50%,transparent)}}.text-primary\/60{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\/60{color:color-mix(in oklab,var(--primary) 60%,transparent)}}.text-primary\/70{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\/70{color:color-mix(in oklab,var(--primary) 70%,transparent)}}.text-purple-700{color:var(--color-purple-700)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-rose-500{color:var(--color-rose-500)}.text-rose-500\/90{color:#ff2357e6}@supports (color:color-mix(in lab,red,red)){.text-rose-500\/90{color:color-mix(in oklab,var(--color-rose-500) 90%,transparent)}}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-sky-400{color:var(--color-sky-400)}.text-sky-600{color:var(--color-sky-600)}.text-sky-700{color:var(--color-sky-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-700{color:var(--color-slate-700)}.text-stone-700{color:var(--color-stone-700)}.text-teal-500{color:var(--color-teal-500)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-transparent{color:#0000}.text-violet-400{color:var(--color-violet-400)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:var(--primary)}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadow-lg\)\]{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadow-md\)\]{--tw-shadow:var(--shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadow-sm\)\]{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-orange-500\/20{--tw-shadow-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.shadow-orange-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-orange-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-black\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.ring-black\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.ring-primary\/20{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.ring-primary\/20{--tw-ring-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.ring-primary\/30{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.ring-primary\/30{--tw-ring-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[max-width\]{transition-property:max-width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.\!paused{animation-play-state:paused!important}.\[animation-delay\:0\.3s\]{animation-delay:.3s}.\[animation-duration\:2\.5s\]{animation-duration:2.5s}.\[animation-duration\:2s\]{animation-duration:2s}.fade-in{--tw-enter-opacity:0}.paused{animation-play-state:paused}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media(hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:text-muted-foreground:is(:where(.group):hover *){color:var(--muted-foreground)}.group-hover\/link\:opacity-80:is(:where(.group\/link):hover *){opacity:.8}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder,.placeholder\:text-muted-foreground\/30::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-muted-foreground\/30::placeholder{color:color-mix(in oklab,var(--muted-foreground) 30%,transparent)}}.placeholder\:text-muted-foreground\/40::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-muted-foreground\/40::placeholder{color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}@media(hover:hover){.hover\:translate-x-0\.5:hover{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-border:hover,.hover\:border-border\/60:hover{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.hover\:border-border\/60:hover{border-color:color-mix(in oklab,var(--border) 60%,transparent)}}.hover\:border-border\/70:hover{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.hover\:border-border\/70:hover{border-color:color-mix(in oklab,var(--border) 70%,transparent)}}.hover\:border-border\/80:hover{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.hover\:border-border\/80:hover{border-color:color-mix(in oklab,var(--border) 80%,transparent)}}.hover\:border-primary\/30:hover{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-50:hover{background-color:var(--color-amber-50)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-500:hover{background-color:var(--color-amber-500)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-emerald-500\/10:hover{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/10:hover{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.hover\:bg-emerald-600:hover{background-color:var(--color-emerald-600)}.hover\:bg-muted:hover,.hover\:bg-muted\/10:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/10:hover{background-color:color-mix(in oklab,var(--muted) 10%,transparent)}}.hover\:bg-muted\/20:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/20:hover{background-color:color-mix(in oklab,var(--muted) 20%,transparent)}}.hover\:bg-muted\/30:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/30:hover{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.hover\:bg-muted\/40:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/40:hover{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-primary\/10:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-rose-50:hover{background-color:var(--color-rose-50)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-sky-50:hover{background-color:var(--color-sky-50)}.hover\:bg-teal-50:hover{background-color:var(--color-teal-50)}.hover\:bg-violet-50:hover{background-color:var(--color-violet-50)}.hover\:from-orange-600:hover{--tw-gradient-from:var(--color-orange-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-red-600:hover{--tw-gradient-to:var(--color-red-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-amber-600:hover{color:var(--color-amber-600)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover,.hover\:text-muted-foreground\/50:hover{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:text-muted-foreground\/50:hover{color:color-mix(in oklab,var(--muted-foreground) 50%,transparent)}}.hover\:text-muted-foreground\/60:hover{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:text-muted-foreground\/60:hover{color:color-mix(in oklab,var(--muted-foreground) 60%,transparent)}}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-rose-500:hover{color:var(--color-rose-500)}.hover\:text-rose-600:hover{color:var(--color-rose-600)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[var\(--shadow-md\)\]:hover{--tw-shadow:var(--shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-primary\/5:hover{--tw-shadow-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-primary\/5:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--primary) 5%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:border-primary\/30:focus{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.focus\:border-primary\/30:focus{border-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/20:focus{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-background:focus-visible{background-color:var(--background)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.98\]:active{scale:.98}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[state\=active\]\:border-primary[data-state=active]{border-color:var(--primary)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-none[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}@media(min-width:40rem){.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:max-w-\[300px\]{max-width:300px}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-\[380px\]{width:380px}.lg\:max-w-\[400px\]{max-width:400px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:80rem){.xl\:w-\[420px\]{width:420px}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-amber-600:is(.dark *){border-color:var(--color-amber-600)}.dark\:border-amber-800:is(.dark *){border-color:var(--color-amber-800)}.dark\:border-amber-900:is(.dark *){border-color:var(--color-amber-900)}.dark\:border-blue-500\/20:is(.dark *){border-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.dark\:border-blue-500\/20:is(.dark *){border-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.dark\:border-blue-600:is(.dark *){border-color:var(--color-blue-600)}.dark\:border-blue-800:is(.dark *){border-color:var(--color-blue-800)}.dark\:border-blue-900:is(.dark *){border-color:var(--color-blue-900)}.dark\:border-emerald-600:is(.dark *){border-color:var(--color-emerald-600)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-purple-600:is(.dark *){border-color:var(--color-purple-600)}.dark\:bg-amber-900:is(.dark *){background-color:var(--color-amber-900)}.dark\:bg-amber-900\/30:is(.dark *){background-color:#7b33064d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-900) 30%,transparent)}}.dark\:bg-amber-950:is(.dark *){background-color:var(--color-amber-950)}.dark\:bg-amber-950\/50:is(.dark *){background-color:#46190180}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950) 50%,transparent)}}.dark\:bg-blue-500\/10:is(.dark *){background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-500\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.dark\:bg-blue-900:is(.dark *){background-color:var(--color-blue-900)}.dark\:bg-blue-900\/30:is(.dark *){background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900) 30%,transparent)}}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/50:is(.dark *){background-color:#16245680}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950) 50%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-emerald-900:is(.dark *){background-color:var(--color-emerald-900)}.dark\:bg-emerald-950:is(.dark *){background-color:var(--color-emerald-950)}.dark\:bg-emerald-950\/90:is(.dark *){background-color:#002c22e6}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-950\/90:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-950) 90%,transparent)}}.dark\:bg-green-900\/30:is(.dark *){background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900) 30%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-purple-900:is(.dark *){background-color:var(--color-purple-900)}.dark\:bg-purple-950:is(.dark *){background-color:var(--color-purple-950)}.dark\:bg-red-900:is(.dark *){background-color:var(--color-red-900)}.dark\:bg-red-950\/90:is(.dark *){background-color:#460809e6}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-950\/90:is(.dark *){background-color:color-mix(in oklab,var(--color-red-950) 90%,transparent)}}.dark\:from-amber-950:is(.dark *){--tw-gradient-from:var(--color-amber-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-amber-950\/20:is(.dark *){--tw-gradient-from:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:from-amber-950\/20:is(.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-amber-950) 20%, transparent)}}.dark\:from-amber-950\/20:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-gray-900:is(.dark *){--tw-gradient-from:var(--color-gray-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-orange-950\/15:is(.dark *){--tw-gradient-from:#44130626}@supports (color:color-mix(in lab,red,red)){.dark\:from-orange-950\/15:is(.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-orange-950) 15%, transparent)}}.dark\:from-orange-950\/15:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-sky-950:is(.dark *){--tw-gradient-from:var(--color-sky-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-slate-800\/20:is(.dark *){--tw-gradient-from:#1d293d33}@supports (color:color-mix(in lab,red,red)){.dark\:from-slate-800\/20:is(.dark *){--tw-gradient-from:color-mix(in oklab, var(--color-slate-800) 20%, transparent)}}.dark\:from-slate-800\/20:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-teal-950:is(.dark *){--tw-gradient-from:var(--color-teal-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:from-violet-950:is(.dark *){--tw-gradient-from:var(--color-violet-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-blue-900:is(.dark *){--tw-gradient-to:var(--color-blue-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-emerald-900:is(.dark *){--tw-gradient-to:var(--color-emerald-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-gray-800:is(.dark *){--tw-gradient-to:var(--color-gray-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-indigo-900:is(.dark *){--tw-gradient-to:var(--color-indigo-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-orange-900:is(.dark *){--tw-gradient-to:var(--color-orange-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-blue-200:is(.dark *){color:var(--color-blue-200)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-blue-400\/60:is(.dark *){color:#54a2ff99}@supports (color:color-mix(in lab,red,red)){.dark\:text-blue-400\/60:is(.dark *){color:color-mix(in oklab,var(--color-blue-400) 60%,transparent)}}.dark\:text-emerald-200:is(.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-300:is(.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:is(.dark *){color:var(--color-emerald-400)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}.dark\:text-red-200:is(.dark *){color:var(--color-red-200)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-sky-400:is(.dark *){color:var(--color-sky-400)}.dark\:text-teal-400:is(.dark *){color:var(--color-teal-400)}.dark\:text-violet-400:is(.dark *){color:var(--color-violet-400)}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.dark\:hover\:bg-amber-900\/50:is(.dark *):hover{background-color:#7b330680}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-amber-900\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-amber-900) 50%,transparent)}}.dark\:hover\:bg-amber-950:is(.dark *):hover{background-color:var(--color-amber-950)}.dark\:hover\:bg-blue-900\/50:is(.dark *):hover{background-color:#1c398e80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-blue-900\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-blue-900) 50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-sky-950:is(.dark *):hover{background-color:var(--color-sky-950)}.dark\:hover\:bg-teal-950:is(.dark *):hover{background-color:var(--color-teal-950)}.dark\:hover\:bg-violet-950:is(.dark *):hover{background-color:var(--color-violet-950)}.dark\:hover\:text-amber-300:is(.dark *):hover{color:var(--color-amber-300)}.dark\:hover\:text-blue-300:is(.dark *):hover{color:var(--color-blue-300)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]),.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\\\'text-\\\'\]\)\]\:text-muted-foreground svg:not([class*="'text-'"]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.75rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.1% .005 285.823);--sidebar-primary:oklch(21% .006 285.885);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(96.7% .001 286.375);--sidebar-accent-foreground:oklch(21% .006 285.885);--sidebar-border:oklch(92% .004 286.32);--sidebar-ring:oklch(70.5% .015 286.067);--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 8px -2px #00000014, 0 2px 4px -2px #0000000a;--shadow-lg:0 12px 28px -4px #0000001f, 0 4px 8px -4px #0000000f}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(21% .006 285.885);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(27.4% .006 286.033);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.2% .016 285.938);--shadow-xs:0 0 0 1px #ffffff0f;--shadow-sm:0 0 0 1px #ffffff14, 0 1px 4px #0000004d;--shadow-md:0 0 0 1px #ffffff14, 0 4px 12px #0006;--shadow-lg:0 0 0 1px #ffffff1a, 0 16px 40px #00000080}@keyframes slide-up-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.animate-slide-up{animation:.35s ease-out both slide-up-fade-in}.animate-fade-in{animation:.25s ease-out both fade-in}.animate-scale-in{animation:.25s ease-out both scale-in}.brand-gradient{background:linear-gradient(135deg,#818cf8,#6366f1)}.login-bg{background-image:radial-gradient(circle,#00000005,#0000 70%),linear-gradient(#00000004 1px,#0000 1px),linear-gradient(90deg,#00000004 1px,#0000 1px);background-size:100% 100%,24px 24px,24px 24px}.dark .login-bg{background-image:radial-gradient(circle,#ffffff05,#0000 70%),linear-gradient(#ffffff05 1px,#0000 1px),linear-gradient(90deg,#ffffff05 1px,#0000 1px);background-size:100% 100%,24px 24px,24px 24px}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/cloudflare/pages/assets/index-BYiXDk_r.js b/cloudflare/pages/assets/index-BYiXDk_r.js new file mode 100644 index 0000000..0bc30b5 --- /dev/null +++ b/cloudflare/pages/assets/index-BYiXDk_r.js @@ -0,0 +1,7 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SetupView-DexhUT0V.js","assets/clipboard-BxPwmQDo.js","assets/index-D0L1R3xN.js","assets/CardContent.vue_vue_type_script_setup_true_lang-BQsr7qiA.js","assets/CardDescription.vue_vue_type_script_setup_true_lang-DAF_OvUJ.js","assets/CardTitle.vue_vue_type_script_setup_true_lang-DrB9MS42.js","assets/Input.vue_vue_type_script_setup_true_lang-BeSoeGyX.js","assets/index-CEPd9Ray.js","assets/index-Ct5H-N73.js","assets/Label.vue_vue_type_script_setup_true_lang-CsaHM4SY.js","assets/useForwardExpose-DjCgLuye.js","assets/Switch.vue_vue_type_script_setup_true_lang-CX3hqDXa.js","assets/VisuallyHidden-DmVvgUgH.js","assets/createContext-a9Tpfoxo.js","assets/usePrimitiveElement-JaAYjjRd.js","assets/check-DEjmzl3F.js","assets/chevron-right-4Ffa5RHB.js","assets/refresh-cw-DOzI5zLk.js","assets/FeedView-wwm_gE9_.js","assets/TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js","assets/Presence-Sy1r65hd.js","assets/TooltipProvider-Ck2YUJut.js","assets/TooltipProvider.vue_vue_type_script_setup_true_lang-Ct5cWqBI.js","assets/trophy-BMFdgvc4.js","assets/search-3_RVfAHZ.js","assets/scroll-text-XmJfG4_f.js","assets/play-BSoFcJJg.js","assets/pencil-D1GtMUQI.js","assets/message-square-Vh7MGSmH.js","assets/file-text-C7Xfe8Jp.js","assets/file-search-DRPM2poS.js","assets/eye-Bf9-8M_K.js","assets/activity-SKRWHPM4.js","assets/chevron-down-xV8GE0yH.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/Separator.vue_vue_type_script_setup_true_lang-E5eRj2Ny.js","assets/SheetTitle.vue_vue_type_script_setup_true_lang-C5avm85h.js","assets/utils-TyZrBBEb.js","assets/users-C4rtE1G7.js","assets/FeedView-CYGX00OX.css","assets/DemoView-BPR_Rmcz.js","assets/shield-alert-DYoiGl5J.js","assets/code-zczxpfOO.js","assets/star-VmEUsCX9.js","assets/shield-check-C0gcRV-i.js","assets/DemoView-vtX9cghR.css","assets/LoginView-CzW4mb8C.js","assets/LoginView-D7A_FpBE.css","assets/AppLayout-B0mng0Hs.js","assets/webui-BTCBRLGR.js","assets/SheetDescription.vue_vue_type_script_setup_true_lang-CC6GyU0A.js","assets/list-todo-DaXA5Y93.js","assets/settings-CzMAO35A.js","assets/download-Cz1Slb-U.js","assets/AppLayout-qgctDjpy.css","assets/DashboardView-Cu7R9jUe.js","assets/circle-alert-DI3FQNzC.js","assets/trending-up-9TLdiVqg.js","assets/clock-ZB7HOEvr.js","assets/zap-B-kRHIBE.js","assets/clipboard-check-B8B0idlM.js","assets/DashboardView-c71H3EkP.css","assets/TasksView-CCGXWEZ4.js","assets/index-wmMfISvJ.js","assets/AgentsView-U_WfzzKz.js","assets/TabsTrigger.vue_vue_type_script_setup_true_lang-DTpAVj20.js","assets/save-DkYVQELS.js","assets/marked.esm-D9eDbhZJ.js","assets/AgentsView-B5DwEauD.css","assets/ScoresView-CBH5Dogn.js","assets/LogsView-Co5xeyoP.js","assets/LogsView-nr-nBQlx.css","assets/ReviewsView-BIzvWmnq.js","assets/ReviewsView-Cjn5FRho.css","assets/PromptsView-C9Duf4fo.js","assets/PromptsView-Dyz04uBH.css","assets/SettingsView-Bbemcc2R.js","assets/NotFoundView-CwfZACt3.js","assets/NotFoundView-CYIoVC0_.css"])))=>i.map(i=>d[i]); +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();function Oo(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const pe={},Tn=[],Ot=()=>{},$l=()=>!1,ur=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Po=e=>e.startsWith("onUpdate:"),ke=Object.assign,ko=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},wu=Object.prototype.hasOwnProperty,be=(e,t)=>wu.call(e,t),X=Array.isArray,On=e=>_s(e)==="[object Map]",Vn=e=>_s(e)==="[object Set]",ri=e=>_s(e)==="[object Date]",se=e=>typeof e=="function",Ae=e=>typeof e=="string",ht=e=>typeof e=="symbol",he=e=>e!==null&&typeof e=="object",jl=e=>(he(e)||se(e))&&se(e.then)&&se(e.catch),Ul=Object.prototype.toString,_s=e=>Ul.call(e),_u=e=>_s(e).slice(8,-1),Vl=e=>_s(e)==="[object Object]",fr=e=>Ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,rs=Oo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),dr=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Eu=/-\w/g,it=dr(e=>e.replace(Eu,t=>t.slice(1).toUpperCase())),Su=/\B([A-Z])/g,Ht=dr(e=>e.replace(Su,"-$1").toLowerCase()),pr=dr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Us=dr(e=>e?`on${pr(e)}`:""),Qe=(e,t)=>!Object.is(e,t),Vs=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},hr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},xu=e=>{const t=Ae(e)?Number(e):NaN;return isNaN(t)?e:t};let oi;const mr=()=>oi||(oi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function tn(e){if(X(e)){const t={};for(let n=0;n{if(n){const s=n.split(Au);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function nt(e){let t="";if(Ae(e))t=e;else if(X(e))for(let n=0;nnn(n,t))}const ql=e=>!!(e&&e.__v_isRef===!0),ns=e=>Ae(e)?e:e==null?"":X(e)||he(e)&&(e.toString===Ul||!se(e.toString))?ql(e)?ns(e.value):JSON.stringify(e,Gl,2):String(e),Gl=(e,t)=>ql(t)?Gl(e,t.value):On(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Lr(s,o)+" =>"]=r,n),{})}:Vn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Lr(n))}:ht(t)?Lr(t):he(t)&&!X(t)&&!Vl(t)?String(t):t,Lr=(e,t="")=>{var n;return ht(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let $e;class Wl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=$e,!t&&$e&&(this.index=($e.scopes||($e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&($e=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(is){let t=is;for(is=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;os;){let t=os;for(os=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Zl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ea(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Lo(s),Nu(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function to(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ta(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ta(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===ps)||(e.globalVersion=ps,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!to(e))))return;e.flags|=2;const t=e.dep,n=Re,s=pt;Re=e,pt=!0;try{Zl(e);const r=e.fn(e._value);(t.version===0||Qe(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{Re=n,pt=s,ea(e),e.flags&=-3}}function Lo(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Lo(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Nu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let pt=!0;const na=[];function jt(){na.push(pt),pt=!1}function Ut(){const e=na.pop();pt=e===void 0?!0:e}function li(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Re;Re=void 0;try{t()}finally{Re=n}}}let ps=0;class Du{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class gr{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Re||!pt||Re===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Re)n=this.activeLink=new Du(Re,this),Re.deps?(n.prevDep=Re.depsTail,Re.depsTail.nextDep=n,Re.depsTail=n):Re.deps=Re.depsTail=n,sa(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Re.depsTail,n.nextDep=void 0,Re.depsTail.nextDep=n,Re.depsTail=n,Re.deps===n&&(Re.deps=s)}return n}trigger(t){this.version++,ps++,this.notify(t)}notify(t){No();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Do()}}}function sa(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)sa(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ys=new WeakMap,gn=Symbol(""),no=Symbol(""),hs=Symbol("");function je(e,t,n){if(pt&&Re){let s=Ys.get(e);s||Ys.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new gr),r.map=s,r.key=n),r.track()}}function Mt(e,t,n,s,r,o){const i=Ys.get(e);if(!i){ps++;return}const l=a=>{a&&a.trigger()};if(No(),t==="clear")i.forEach(l);else{const a=X(e),u=a&&fr(n);if(a&&n==="length"){const c=Number(s);i.forEach((f,p)=>{(p==="length"||p===hs||!ht(p)&&p>=c)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(hs)),t){case"add":a?u&&l(i.get("length")):(l(i.get(gn)),On(e)&&l(i.get(no)));break;case"delete":a||(l(i.get(gn)),On(e)&&l(i.get(no)));break;case"set":On(e)&&l(i.get(gn));break}}Do()}function Lu(e,t){const n=Ys.get(e);return n&&n.get(t)}function xn(e){const t=ce(e);return t===e?t:(je(t,"iterate",hs),ot(e)?t:t.map(mt))}function br(e){return je(e=ce(e),"iterate",hs),e}function Qt(e,t){return Vt(e)?Dn($t(e)?mt(t):t):mt(t)}const Mu={__proto__:null,[Symbol.iterator](){return Br(this,Symbol.iterator,e=>Qt(this,e))},concat(...e){return xn(this).concat(...e.map(t=>X(t)?xn(t):t))},entries(){return Br(this,"entries",e=>(e[1]=Qt(this,e[1]),e))},every(e,t){return Pt(this,"every",e,t,void 0,arguments)},filter(e,t){return Pt(this,"filter",e,t,n=>n.map(s=>Qt(this,s)),arguments)},find(e,t){return Pt(this,"find",e,t,n=>Qt(this,n),arguments)},findIndex(e,t){return Pt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Pt(this,"findLast",e,t,n=>Qt(this,n),arguments)},findLastIndex(e,t){return Pt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Pt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Fr(this,"includes",e)},indexOf(...e){return Fr(this,"indexOf",e)},join(e){return xn(this).join(e)},lastIndexOf(...e){return Fr(this,"lastIndexOf",e)},map(e,t){return Pt(this,"map",e,t,void 0,arguments)},pop(){return Wn(this,"pop")},push(...e){return Wn(this,"push",e)},reduce(e,...t){return ai(this,"reduce",e,t)},reduceRight(e,...t){return ai(this,"reduceRight",e,t)},shift(){return Wn(this,"shift")},some(e,t){return Pt(this,"some",e,t,void 0,arguments)},splice(...e){return Wn(this,"splice",e)},toReversed(){return xn(this).toReversed()},toSorted(e){return xn(this).toSorted(e)},toSpliced(...e){return xn(this).toSpliced(...e)},unshift(...e){return Wn(this,"unshift",e)},values(){return Br(this,"values",e=>Qt(this,e))}};function Br(e,t,n){const s=br(e),r=s[t]();return s!==e&&!ot(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const Bu=Array.prototype;function Pt(e,t,n,s,r,o){const i=br(e),l=i!==e&&!ot(e),a=i[t];if(a!==Bu[t]){const f=a.apply(e,o);return l?mt(f):f}let u=n;i!==e&&(l?u=function(f,p){return n.call(this,Qt(e,f),p,e)}:n.length>2&&(u=function(f,p){return n.call(this,f,p,e)}));const c=a.call(i,u,s);return l&&r?r(c):c}function ai(e,t,n,s){const r=br(e);let o=n;return r!==e&&(ot(e)?n.length>3&&(o=function(i,l,a){return n.call(this,i,l,a,e)}):o=function(i,l,a){return n.call(this,i,Qt(e,l),a,e)}),r[t](o,...s)}function Fr(e,t,n){const s=ce(e);je(s,"iterate",hs);const r=s[t](...n);return(r===-1||r===!1)&&wr(n[0])?(n[0]=ce(n[0]),s[t](...n)):r}function Wn(e,t,n=[]){jt(),No();const s=ce(e)[t].apply(e,n);return Do(),Ut(),s}const Fu=Oo("__proto__,__v_isRef,__isVue"),ra=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ht));function $u(e){ht(e)||(e=String(e));const t=ce(this);return je(t,"has",e),t.hasOwnProperty(e)}class oa{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?fa:ua:o?ca:aa).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=X(t);if(!r){let a;if(i&&(a=Mu[n]))return a;if(n==="hasOwnProperty")return $u}const l=Reflect.get(t,n,Oe(t)?t:s);if((ht(n)?ra.has(n):Fu(n))||(r||je(t,"get",n),o))return l;if(Oe(l)){const a=i&&fr(n)?l:l.value;return r&&he(a)?ro(a):a}return he(l)?r?ro(l):Es(l):l}}class ia extends oa{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=X(t)&&fr(n);if(!this._isShallow){const u=Vt(o);if(!ot(s)&&!Vt(s)&&(o=ce(o),s=ce(s)),!i&&Oe(o)&&!Oe(s))return u||(o.value=s),!0}const l=i?Number(n)e,Is=e=>Reflect.getPrototypeOf(e);function zu(e,t,n){return function(...s){const r=this.__v_raw,o=ce(r),i=On(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=r[e](...s),c=n?so:t?Dn:mt;return!t&&je(o,"iterate",a?no:gn),ke(Object.create(u),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:l?[c(f[0]),c(f[1])]:c(f),done:p}}})}}function Ns(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function qu(e,t){const n={get(r){const o=this.__v_raw,i=ce(o),l=ce(r);e||(Qe(r,l)&&je(i,"get",r),je(i,"get",l));const{has:a}=Is(i),u=t?so:e?Dn:mt;if(a.call(i,r))return u(o.get(r));if(a.call(i,l))return u(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&je(ce(r),"iterate",gn),r.size},has(r){const o=this.__v_raw,i=ce(o),l=ce(r);return e||(Qe(r,l)&&je(i,"has",r),je(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,a=ce(l),u=t?so:e?Dn:mt;return!e&&je(a,"iterate",gn),l.forEach((c,f)=>r.call(o,u(c),u(f),i))}};return ke(n,e?{add:Ns("add"),set:Ns("set"),delete:Ns("delete"),clear:Ns("clear")}:{add(r){!t&&!ot(r)&&!Vt(r)&&(r=ce(r));const o=ce(this);return Is(o).has.call(o,r)||(o.add(r),Mt(o,"add",r,r)),this},set(r,o){!t&&!ot(o)&&!Vt(o)&&(o=ce(o));const i=ce(this),{has:l,get:a}=Is(i);let u=l.call(i,r);u||(r=ce(r),u=l.call(i,r));const c=a.call(i,r);return i.set(r,o),u?Qe(o,c)&&Mt(i,"set",r,o):Mt(i,"add",r,o),this},delete(r){const o=ce(this),{has:i,get:l}=Is(o);let a=i.call(o,r);a||(r=ce(r),a=i.call(o,r)),l&&l.call(o,r);const u=o.delete(r);return a&&Mt(o,"delete",r,void 0),u},clear(){const r=ce(this),o=r.size!==0,i=r.clear();return o&&Mt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=zu(r,e,t)}),n}function yr(e,t){const n=qu(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(be(n,r)&&r in s?n:s,r,o)}const Gu={get:yr(!1,!1)},Wu={get:yr(!1,!0)},Ku={get:yr(!0,!1)},Ju={get:yr(!0,!0)},aa=new WeakMap,ca=new WeakMap,ua=new WeakMap,fa=new WeakMap;function Xu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Yu(e){return e.__v_skip||!Object.isExtensible(e)?0:Xu(_u(e))}function Es(e){return Vt(e)?e:vr(e,!1,ju,Gu,aa)}function da(e){return vr(e,!1,Vu,Wu,ca)}function ro(e){return vr(e,!0,Uu,Ku,ua)}function Vb(e){return vr(e,!0,Hu,Ju,fa)}function vr(e,t,n,s,r){if(!he(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Yu(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function $t(e){return Vt(e)?$t(e.__v_raw):!!(e&&e.__v_isReactive)}function Vt(e){return!!(e&&e.__v_isReadonly)}function ot(e){return!!(e&&e.__v_isShallow)}function wr(e){return e?!!e.__v_raw:!1}function ce(e){const t=e&&e.__v_raw;return t?ce(t):e}function Mo(e){return!be(e,"__v_skip")&&Object.isExtensible(e)&&Hl(e,"__v_skip",!0),e}const mt=e=>he(e)?Es(e):e,Dn=e=>he(e)?ro(e):e;function Oe(e){return e?e.__v_isRef===!0:!1}function Ee(e){return pa(e,!1)}function Qu(e){return pa(e,!0)}function pa(e,t){return Oe(e)?e:new Zu(e,t)}class Zu{constructor(t,n){this.dep=new gr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ce(t),this._value=n?t:mt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||ot(t)||Vt(t);t=s?t:ce(t),Qe(t,n)&&(this._rawValue=t,this._value=s?t:mt(t),this.dep.trigger())}}function Hb(e){e.dep&&e.dep.trigger()}function le(e){return Oe(e)?e.value:e}function zb(e){return se(e)?e():le(e)}const ef={get:(e,t,n)=>t==="__v_raw"?e:le(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Oe(r)&&!Oe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ha(e){return $t(e)?e:new Proxy(e,ef)}class tf{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new gr,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function nf(e){return new tf(e)}function sf(e){const t=X(e)?new Array(e.length):{};for(const n in e)t[n]=ma(e,n);return t}class rf{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=ce(t);let r=!0,o=t;if(!X(t)||!fr(String(n)))do r=!wr(o)||ot(o);while(r&&(o=o.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=le(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&Oe(this._raw[this._key])){const n=this._object[this._key];if(Oe(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Lu(this._raw,this._key)}}class of{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function qb(e,t,n){return Oe(e)?e:se(e)?new of(e):he(e)&&arguments.length>1?ma(e,t,n):Ee(e)}function ma(e,t,n){return new rf(e,t,n)}class lf{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new gr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=ps-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Re!==this)return Ql(this,!0),!0}get value(){const t=this.dep.track();return ta(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function af(e,t,n=!1){let s,r;return se(e)?s=e:(s=e.get,r=e.set),new lf(s,r,n)}const Ds={},Qs=new WeakMap;let fn;function cf(e,t=!1,n=fn){if(n){let s=Qs.get(n);s||Qs.set(n,s=[]),s.push(e)}}function uf(e,t,n=pe){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:a}=n,u=D=>r?D:ot(D)||r===!1||r===0?Bt(D,1):Bt(D);let c,f,p,g,b=!1,y=!1;if(Oe(e)?(f=()=>e.value,b=ot(e)):$t(e)?(f=()=>u(e),b=!0):X(e)?(y=!0,b=e.some(D=>$t(D)||ot(D)),f=()=>e.map(D=>{if(Oe(D))return D.value;if($t(D))return u(D);if(se(D))return a?a(D,2):D()})):se(e)?t?f=a?()=>a(e,2):e:f=()=>{if(p){jt();try{p()}finally{Ut()}}const D=fn;fn=c;try{return a?a(e,3,[g]):e(g)}finally{fn=D}}:f=Ot,t&&r){const D=f,j=r===!0?1/0:r;f=()=>Bt(D(),j)}const _=Jl(),I=()=>{c.stop(),_&&_.active&&ko(_.effects,c)};if(o&&t){const D=t;t=(...j)=>{D(...j),I()}}let x=y?new Array(e.length).fill(Ds):Ds;const N=D=>{if(!(!(c.flags&1)||!c.dirty&&!D))if(t){const j=c.run();if(r||b||(y?j.some((J,G)=>Qe(J,x[G])):Qe(j,x))){p&&p();const J=fn;fn=c;try{const G=[j,x===Ds?void 0:y&&x[0]===Ds?[]:x,g];x=j,a?a(t,3,G):t(...G)}finally{fn=J}}}else c.run()};return l&&l(N),c=new Xl(f),c.scheduler=i?()=>i(N,!1):N,g=D=>cf(D,!1,c),p=c.onStop=()=>{const D=Qs.get(c);if(D){if(a)a(D,4);else for(const j of D)j();Qs.delete(c)}},t?s?N(!0):x=c.run():i?i(N.bind(null,!0),!0):c.run(),I.pause=c.pause.bind(c),I.resume=c.resume.bind(c),I.stop=I,I}function Bt(e,t=1/0,n){if(t<=0||!he(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Oe(e))Bt(e.value,t,n);else if(X(e))for(let s=0;s{Bt(s,t,n)});else if(Vl(e)){for(const s in e)Bt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Bt(e[s],t,n)}return e}function Ss(e,t,n,s){try{return s?e(...s):e()}catch(r){_r(r,t,n)}}function gt(e,t,n,s){if(se(e)){const r=Ss(e,t,n,s);return r&&jl(r)&&r.catch(o=>{_r(o,t,n)}),r}if(X(e)){const r=[];for(let o=0;o>>1,r=We[s],o=ms(r);o=ms(n)?We.push(e):We.splice(df(t),0,e),e.flags|=1,ba()}}function ba(){Zs||(Zs=ga.then(va))}function pf(e){X(e)?Pn.push(...e):Zt&&e.id===-1?Zt.splice(An+1,0,e):e.flags&1||(Pn.push(e),e.flags|=1),ba()}function ci(e,t,n=xt+1){for(;nms(n)-ms(s));if(Pn.length=0,Zt){Zt.push(...t);return}for(Zt=t,An=0;Ane.id==null?e.flags&2?-1:1/0:e.id;function va(e){try{for(xt=0;xt{s._d&&rr(-1);const o=er(t);let i;try{i=e(...r)}finally{er(o),s._d&&rr(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Gb(e,t){if(Be===null)return e;const n=Ar(Be),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&se(t)?t.call(s&&s.proxy):t}}function hf(){return!!(En()||bn)}const mf=Symbol.for("v-scx"),gf=()=>ft(mf);function Dt(e,t){return xs(e,null,t)}function Wb(e,t){return xs(e,null,{flush:"post"})}function bf(e,t){return xs(e,null,{flush:"sync"})}function kn(e,t,n){return xs(e,t,n)}function xs(e,t,n=pe){const{immediate:s,deep:r,flush:o,once:i}=n,l=ke({},n),a=t&&s||!t&&o!=="post";let u;if(vs){if(o==="sync"){const g=gf();u=g.__watcherHandles||(g.__watcherHandles=[])}else if(!a){const g=()=>{};return g.stop=Ot,g.resume=Ot,g.pause=Ot,g}}const c=Ve;l.call=(g,b,y)=>gt(g,c,b,y);let f=!1;o==="post"?l.scheduler=g=>{Fe(g,c&&c.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(g,b)=>{b?g():Bo(g)}),l.augmentJob=g=>{t&&(g.flags|=4),f&&(g.flags|=2,c&&(g.id=c.uid,g.i=c))};const p=uf(e,t,l);return vs&&(u?u.push(p):a&&p()),p}function yf(e,t,n){const s=this.proxy,r=Ae(e)?e.includes(".")?_a(s,e):()=>s[e]:e.bind(s,s);let o;se(t)?o=t:(o=t.handler,n=t);const i=Rs(this),l=xs(r,o.bind(s),n);return i(),l}function _a(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,ls=e=>e&&(e.disabled||e.disabled===""),ui=e=>e&&(e.defer||e.defer===""),fi=e=>typeof SVGElement<"u"&&e instanceof SVGElement,di=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,oo=(e,t)=>{const n=e&&e.to;return Ae(n)?t?t(n):null:n},xa={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,a,u){const{mc:c,pc:f,pbc:p,o:{insert:g,querySelector:b,createText:y,createComment:_}}=u,I=ls(t.props);let{shapeFlag:x,children:N,dynamicChildren:D}=t;if(e==null){const j=t.el=y(""),J=t.anchor=y("");g(j,n,s),g(J,n,s);const G=(O,w)=>{x&16&&c(N,O,w,r,o,i,l,a)},T=()=>{const O=t.target=oo(t.props,b),w=io(O,t,y,g);O&&(i!=="svg"&&fi(O)?i="svg":i!=="mathml"&&di(O)&&(i="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(O),I||(G(O,w),zs(t,!1)))};I&&(G(n,J),zs(t,!0)),ui(t.props)?(t.el.__isMounted=!1,Fe(()=>{T(),delete t.el.__isMounted},o)):T()}else{if(ui(t.props)&&e.el.__isMounted===!1){Fe(()=>{xa.process(e,t,n,s,r,o,i,l,a,u)},o);return}t.el=e.el,t.targetStart=e.targetStart;const j=t.anchor=e.anchor,J=t.target=e.target,G=t.targetAnchor=e.targetAnchor,T=ls(e.props),O=T?n:J,w=T?j:G;if(i==="svg"||fi(J)?i="svg":(i==="mathml"||di(J))&&(i="mathml"),D?(p(e.dynamicChildren,D,O,r,o,i,l),Vo(e,t,!0)):a||f(e,t,O,w,r,o,i,l,!1),I)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Ls(t,n,j,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const L=t.target=oo(t.props,b);L&&Ls(t,L,null,u,0)}else T&&Ls(t,J,G,u,1);zs(t,I)}},remove(e,t,n,{um:s,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:a,targetStart:u,targetAnchor:c,target:f,props:p}=e;if(f&&(r(u),r(c)),o&&r(a),i&16){const g=o||!ls(p);for(let b=0;b{e.isMounted=!0}),$o(()=>{e.isUnmounting=!0}),e}const at=[Function,Array],Aa={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:at,onEnter:at,onAfterEnter:at,onEnterCancelled:at,onBeforeLeave:at,onLeave:at,onAfterLeave:at,onLeaveCancelled:at,onBeforeAppear:at,onAppear:at,onAfterAppear:at,onAppearCancelled:at},Ca=e=>{const t=e.subTree;return t.component?Ca(t.component):t},wf={name:"BaseTransition",props:Aa,setup(e,{slots:t}){const n=En(),s=Ra();return()=>{const r=t.default&&Fo(t.default(),!0);if(!r||!r.length)return;const o=Ta(r),i=ce(e),{mode:l}=i;if(s.isLeaving)return $r(o);const a=pi(o);if(!a)return $r(o);let u=gs(a,i,s,n,f=>u=f);a.type!==Ue&&vn(a,u);let c=n.subTree&&pi(n.subTree);if(c&&c.type!==Ue&&!pn(c,a)&&Ca(n).type!==Ue){let f=gs(c,i,s,n);if(vn(c,f),l==="out-in"&&a.type!==Ue)return s.isLeaving=!0,f.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},$r(o);l==="in-out"&&a.type!==Ue?f.delayLeave=(p,g,b)=>{const y=Oa(s,c);y[String(c.key)]=c,p[Rt]=()=>{g(),p[Rt]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{b(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function Ta(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ue){t=n;break}}return t}const _f=wf;function Oa(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function gs(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:g,onAfterLeave:b,onLeaveCancelled:y,onBeforeAppear:_,onAppear:I,onAfterAppear:x,onAppearCancelled:N}=t,D=String(e.key),j=Oa(n,e),J=(O,w)=>{O&>(O,s,9,w)},G=(O,w)=>{const L=w[1];J(O,w),X(O)?O.every(R=>R.length<=1)&&L():O.length<=1&&L()},T={mode:i,persisted:l,beforeEnter(O){let w=a;if(!n.isMounted)if(o)w=_||a;else return;O[Rt]&&O[Rt](!0);const L=j[D];L&&pn(e,L)&&L.el[Rt]&&L.el[Rt](),J(w,[O])},enter(O){if(j[D]===e)return;let w=u,L=c,R=f;if(!n.isMounted)if(o)w=I||u,L=x||c,R=N||f;else return;let V=!1;O[Kn]=de=>{V||(V=!0,de?J(R,[O]):J(L,[O]),T.delayedLeave&&T.delayedLeave(),O[Kn]=void 0)};const te=O[Kn].bind(null,!1);w?G(w,[O,te]):te()},leave(O,w){const L=String(e.key);if(O[Kn]&&O[Kn](!0),n.isUnmounting)return w();J(p,[O]);let R=!1;O[Rt]=te=>{R||(R=!0,w(),te?J(y,[O]):J(b,[O]),O[Rt]=void 0,j[L]===e&&delete j[L])};const V=O[Rt].bind(null,!1);j[L]=e,g?G(g,[O,V]):V()},clone(O){const w=gs(O,t,n,s,r);return r&&r(w),w}};return T}function $r(e){if(Er(e))return e=sn(e),e.children=null,e}function pi(e){if(!Er(e))return Sa(e.type)&&e.children?Ta(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&se(n.default))return n.default()}}function vn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,vn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Fo(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;oas(y,t&&(X(t)?t[_]:t),n,s,r));return}if(In(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&as(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Ar(s.component):s.el,i=r?null:o,{i:l,r:a}=e,u=t&&t.r,c=l.refs===pe?l.refs={}:l.refs,f=l.setupState,p=ce(f),g=f===pe?$l:y=>hi(c,y)?!1:be(p,y),b=(y,_)=>!(_&&hi(c,_));if(u!=null&&u!==a){if(mi(t),Ae(u))c[u]=null,g(u)&&(f[u]=null);else if(Oe(u)){const y=t;b(u,y.k)&&(u.value=null),y.k&&(c[y.k]=null)}}if(se(a))Ss(a,l,12,[i,c]);else{const y=Ae(a),_=Oe(a);if(y||_){const I=()=>{if(e.f){const x=y?g(a)?f[a]:c[a]:b()||!e.k?a.value:c[e.k];if(r)X(x)&&ko(x,o);else if(X(x))x.includes(o)||x.push(o);else if(y)c[a]=[o],g(a)&&(f[a]=c[a]);else{const N=[o];b(a,e.k)&&(a.value=N),e.k&&(c[e.k]=N)}}else y?(c[a]=i,g(a)&&(f[a]=i)):_&&(b(a,e.k)&&(a.value=i),e.k&&(c[e.k]=i))};if(i){const x=()=>{I(),tr.delete(e)};x.id=-1,tr.set(e,x),Fe(x,n)}else mi(e),I()}}}function mi(e){const t=tr.get(e);t&&(t.flags|=8,tr.delete(e))}mr().requestIdleCallback;mr().cancelIdleCallback;const In=e=>!!e.type.__asyncLoader,Er=e=>e.type.__isKeepAlive;function Ef(e,t){ka(e,"a",t)}function Sf(e,t){ka(e,"da",t)}function ka(e,t,n=Ve){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Sr(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Er(r.parent.vnode)&&xf(s,t,n,r),r=r.parent}}function xf(e,t,n,s){const r=Sr(t,e,s,!0);Na(()=>{ko(s[t],r)},n)}function Sr(e,t,n=Ve,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{jt();const l=Rs(n),a=gt(t,n,e,i);return l(),Ut(),a});return s?r.unshift(o):r.push(o),o}}const zt=e=>(t,n=Ve)=>{(!vs||e==="sp")&&Sr(e,(...s)=>t(...s),n)},Rf=zt("bm"),nr=zt("m"),Af=zt("bu"),Ia=zt("u"),$o=zt("bum"),Na=zt("um"),Cf=zt("sp"),Tf=zt("rtg"),Of=zt("rtc");function Pf(e,t=Ve){Sr("ec",e,t)}const Da="components";function Xb(e,t){return Ma(Da,e,!0,t)||e}const La=Symbol.for("v-ndc");function Jn(e){return Ae(e)?Ma(Da,e,!1)||e:e||La}function Ma(e,t,n=!0,s=!1){const r=Be||Ve;if(r){const o=r.type;{const l=pd(o,!1);if(l&&(l===t||l===it(t)||l===pr(it(t))))return o}const i=gi(r[e]||o[e],t)||gi(r.appContext[e],t);return!i&&s?o:i}}function gi(e,t){return e&&(e[t]||e[it(t)]||e[pr(it(t))])}function lo(e,t,n,s){let r;const o=n,i=X(e);if(i||Ae(e)){const l=i&&$t(e);let a=!1,u=!1;l&&(a=!ot(e),u=Vt(e),e=br(e)),r=new Array(e.length);for(let c=0,f=e.length;ct(l,a,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let a=0,u=l.length;a0;return t!=="default"&&(n.name=t),fe(),Ct(Te,null,[ye("slot",n,s&&s())],u?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),fe();const i=o&&Ba(o(n)),l=n.key||i&&i.key,a=Ct(Te,{key:(l&&!ht(l)?l:`_${t}`)+(!i&&s?"_fb":"")},i||(s?s():[]),i&&e._===1?64:-2);return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),o&&o._c&&(o._d=!0),a}function Ba(e){return e.some(t=>Tt(t)?!(t.type===Ue||t.type===Te&&!Ba(t.children)):!0)?e:null}function Yb(e,t){const n={};for(const s in e)n[Us(s)]=e[s];return n}const ao=e=>e?sc(e)?Ar(e):ao(e.parent):null,cs=ke(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ao(e.parent),$root:e=>ao(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>$a(e),$forceUpdate:e=>e.f||(e.f=()=>{Bo(e.update)}),$nextTick:e=>e.n||(e.n=Hn.bind(e.proxy)),$watch:e=>yf.bind(e)}),jr=(e,t)=>e!==pe&&!e.__isScriptSetup&&be(e,t),kf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const p=i[t];if(p!==void 0)switch(p){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(jr(s,t))return i[t]=1,s[t];if(r!==pe&&be(r,t))return i[t]=2,r[t];if(be(o,t))return i[t]=3,o[t];if(n!==pe&&be(n,t))return i[t]=4,n[t];co&&(i[t]=0)}}const u=cs[t];let c,f;if(u)return t==="$attrs"&&je(e.attrs,"get",""),u(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==pe&&be(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,be(f,t))return f[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return jr(r,t)?(r[t]=n,!0):s!==pe&&be(s,t)?(s[t]=n,!0):be(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let a;return!!(n[l]||e!==pe&&l[0]!=="$"&&be(e,l)||jr(t,l)||be(o,l)||be(s,l)||be(cs,l)||be(r.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:be(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function If(){return Nf().attrs}function Nf(e){const t=En();return t.setupContext||(t.setupContext=oc(t))}function bs(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function Qb(e,t){const n=bs(e);for(const s in t){if(s.startsWith("__skip"))continue;let r=n[s];r?X(r)||se(r)?r=n[s]={type:r,default:t[s]}:r.default=t[s]:r===null&&(r=n[s]={default:t[s]}),r&&t[`__skip_${s}`]&&(r.skipFactory=!0)}return n}function Zb(e,t){return!e||!t?e||t:X(e)&&X(t)?e.concat(t):ke({},bs(e),bs(t))}let co=!0;function Df(e){const t=$a(e),n=e.proxy,s=e.ctx;co=!1,t.beforeCreate&&bi(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:g,updated:b,activated:y,deactivated:_,beforeDestroy:I,beforeUnmount:x,destroyed:N,unmounted:D,render:j,renderTracked:J,renderTriggered:G,errorCaptured:T,serverPrefetch:O,expose:w,inheritAttrs:L,components:R,directives:V,filters:te}=t;if(u&&Lf(u,s,null),i)for(const Y in i){const re=i[Y];se(re)&&(s[Y]=re.bind(n))}if(r){const Y=r.call(n,n);he(Y)&&(e.data=Es(Y))}if(co=!0,o)for(const Y in o){const re=o[Y],Ne=se(re)?re.bind(n,n):se(re.get)?re.get.bind(n,n):Ot,z=!se(re)&&se(re.set)?re.set.bind(n):Ot,ve=ue({get:Ne,set:z});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ve.value,set:Se=>ve.value=Se})}if(l)for(const Y in l)Fa(l[Y],s,n,Y);if(a){const Y=se(a)?a.call(n):a;Reflect.ownKeys(Y).forEach(re=>{Hs(re,Y[re])})}c&&bi(c,e,"c");function W(Y,re){X(re)?re.forEach(Ne=>Y(Ne.bind(n))):re&&Y(re.bind(n))}if(W(Rf,f),W(nr,p),W(Af,g),W(Ia,b),W(Ef,y),W(Sf,_),W(Pf,T),W(Of,J),W(Tf,G),W($o,x),W(Na,D),W(Cf,O),X(w))if(w.length){const Y=e.exposed||(e.exposed={});w.forEach(re=>{Object.defineProperty(Y,re,{get:()=>n[re],set:Ne=>n[re]=Ne,enumerable:!0})})}else e.exposed||(e.exposed={});j&&e.render===Ot&&(e.render=j),L!=null&&(e.inheritAttrs=L),R&&(e.components=R),V&&(e.directives=V),O&&Pa(e)}function Lf(e,t,n=Ot){X(e)&&(e=uo(e));for(const s in e){const r=e[s];let o;he(r)?"default"in r?o=ft(r.from||s,r.default,!0):o=ft(r.from||s):o=ft(r),Oe(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function bi(e,t,n){gt(X(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Fa(e,t,n,s){let r=s.includes(".")?_a(n,s):()=>n[s];if(Ae(e)){const o=t[e];se(o)&&kn(r,o)}else if(se(e))kn(r,e.bind(n));else if(he(e))if(X(e))e.forEach(o=>Fa(o,t,n,s));else{const o=se(e.handler)?e.handler.bind(n):t[e.handler];se(o)&&kn(r,o,e)}}function $a(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!r.length&&!n&&!s?a=t:(a={},r.length&&r.forEach(u=>sr(a,u,i,!0)),sr(a,t,i)),he(t)&&o.set(t,a),a}function sr(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&sr(e,o,n,!0),r&&r.forEach(i=>sr(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Mf[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Mf={data:yi,props:vi,emits:vi,methods:ss,computed:ss,beforeCreate:qe,created:qe,beforeMount:qe,mounted:qe,beforeUpdate:qe,updated:qe,beforeDestroy:qe,beforeUnmount:qe,destroyed:qe,unmounted:qe,activated:qe,deactivated:qe,errorCaptured:qe,serverPrefetch:qe,components:ss,directives:ss,watch:Ff,provide:yi,inject:Bf};function yi(e,t){return t?e?function(){return ke(se(e)?e.call(this,this):e,se(t)?t.call(this,this):t)}:t:e}function Bf(e,t){return ss(uo(e),uo(t))}function uo(e){if(X(e)){const t={};for(let n=0;n{let c,f=pe,p;return bf(()=>{const g=e[r];Qe(c,g)&&(c=g,u())}),{get(){return a(),n.get?n.get(c):c},set(g){const b=n.set?n.set(g):g;if(!Qe(b,c)&&!(f!==pe&&Qe(g,f)))return;const y=s.vnode.props;y&&(t in y||r in y||o in y)&&(`onUpdate:${t}`in y||`onUpdate:${r}`in y||`onUpdate:${o}`in y)||(c=g,u()),s.emit(`update:${t}`,b),Qe(g,b)&&Qe(g,f)&&!Qe(b,p)&&u(),f=g,p=b}}});return l[Symbol.iterator]=()=>{let a=0;return{next(){return a<2?{value:a++?i||pe:l,done:!1}:{done:!0}}}},l}const Ua=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${it(t)}Modifiers`]||e[`${Ht(t)}Modifiers`];function Uf(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||pe;let r=n;const o=t.startsWith("update:"),i=o&&Ua(s,t.slice(7));i&&(i.trim&&(r=n.map(c=>Ae(c)?c.trim():c)),i.number&&(r=n.map(hr)));let l,a=s[l=Us(t)]||s[l=Us(it(t))];!a&&o&&(a=s[l=Us(Ht(t))]),a&>(a,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,gt(u,e,6,r)}}const Vf=new WeakMap;function Va(e,t,n=!1){const s=n?Vf:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!se(e)){const a=u=>{const c=Va(u,t,!0);c&&(l=!0,ke(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(he(e)&&s.set(e,null),null):(X(o)?o.forEach(a=>i[a]=null):ke(i,o),he(e)&&s.set(e,i),i)}function xr(e,t){return!e||!ur(t)?!1:(t=t.slice(2).replace(/Once$/,""),be(e,t[0].toLowerCase()+t.slice(1))||be(e,Ht(t))||be(e,t))}function wi(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:a,render:u,renderCache:c,props:f,data:p,setupState:g,ctx:b,inheritAttrs:y}=e,_=er(e);let I,x;try{if(n.shapeFlag&4){const D=r||s,j=D;I=At(u.call(j,D,c,f,g,p,b)),x=l}else{const D=t;I=At(D.length>1?D(f,{attrs:l,slots:i,emit:a}):D(f,null)),x=t.props?l:Hf(l)}}catch(D){us.length=0,_r(D,e,1),I=ye(Ue)}let N=I;if(x&&y!==!1){const D=Object.keys(x),{shapeFlag:j}=N;D.length&&j&7&&(o&&D.some(Po)&&(x=zf(x,o)),N=sn(N,x,!1,!0))}return n.dirs&&(N=sn(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&vn(N,n.transition),I=N,er(_),I}const Hf=e=>{let t;for(const n in e)(n==="class"||n==="style"||ur(n))&&((t||(t={}))[n]=e[n]);return t},zf=(e,t)=>{const n={};for(const s in e)(!Po(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function qf(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:a}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?_i(s,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let f=0;fObject.create(za),Ga=e=>Object.getPrototypeOf(e)===za;function Wf(e,t,n,s=!1){const r={},o=qa();e.propsDefaults=Object.create(null),Wa(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:da(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Kf(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=ce(r),[a]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{a=!0;const[p,g]=Ka(f,t,!0);ke(i,p),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!a)return he(e)&&s.set(e,Tn),Tn;if(X(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",Uo=e=>X(e)?e.map(At):[At(e)],Xf=(e,t,n)=>{if(t._n)return t;const s=st((...r)=>Uo(t(...r)),n);return s._c=!1,s},Ja=(e,t,n)=>{const s=e._ctx;for(const r in e){if(jo(r))continue;const o=e[r];if(se(o))t[r]=Xf(r,o,s);else if(o!=null){const i=Uo(o);t[r]=()=>i}}},Xa=(e,t)=>{const n=Uo(t);e.slots.default=()=>n},Ya=(e,t,n)=>{for(const s in t)(n||!jo(s))&&(e[s]=t[s])},Yf=(e,t,n)=>{const s=e.slots=qa();if(e.vnode.shapeFlag&32){const r=t._;r?(Ya(s,t,n),n&&Hl(s,"_",r,!0)):Ja(t,s)}else t&&Xa(e,t)},Qf=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=pe;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Ya(r,t,n):(o=!t.$stable,Ja(t,r)),i=t}else t&&(Xa(e,t),i={default:1});if(o)for(const l in r)!jo(l)&&i[l]==null&&delete r[l]},Fe=sd;function Zf(e){return ed(e)}function ed(e,t){const n=mr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:p,setScopeId:g=Ot,insertStaticContent:b}=e,y=(d,m,v,A=null,P=null,C=null,U=void 0,$=null,B=!!m.dynamicChildren)=>{if(d===m)return;d&&!pn(d,m)&&(A=h(d),Se(d,P,C,!0),d=null),m.patchFlag===-2&&(B=!1,m.dynamicChildren=null);const{type:k,ref:ee,shapeFlag:H}=m;switch(k){case Rr:_(d,m,v,A);break;case Ue:I(d,m,v,A);break;case qs:d==null&&x(m,v,A,U);break;case Te:R(d,m,v,A,P,C,U,$,B);break;default:H&1?j(d,m,v,A,P,C,U,$,B):H&6?V(d,m,v,A,P,C,U,$,B):(H&64||H&128)&&k.process(d,m,v,A,P,C,U,$,B,F)}ee!=null&&P?as(ee,d&&d.ref,C,m||d,!m):ee==null&&d&&d.ref!=null&&as(d.ref,null,C,d,!0)},_=(d,m,v,A)=>{if(d==null)s(m.el=l(m.children),v,A);else{const P=m.el=d.el;m.children!==d.children&&u(P,m.children)}},I=(d,m,v,A)=>{d==null?s(m.el=a(m.children||""),v,A):m.el=d.el},x=(d,m,v,A)=>{[d.el,d.anchor]=b(d.children,m,v,A,d.el,d.anchor)},N=({el:d,anchor:m},v,A)=>{let P;for(;d&&d!==m;)P=p(d),s(d,v,A),d=P;s(m,v,A)},D=({el:d,anchor:m})=>{let v;for(;d&&d!==m;)v=p(d),r(d),d=v;r(m)},j=(d,m,v,A,P,C,U,$,B)=>{if(m.type==="svg"?U="svg":m.type==="math"&&(U="mathml"),d==null)J(m,v,A,P,C,U,$,B);else{const k=d.el&&d.el._isVueCE?d.el:null;try{k&&k._beginPatch(),O(d,m,P,C,U,$,B)}finally{k&&k._endPatch()}}},J=(d,m,v,A,P,C,U,$)=>{let B,k;const{props:ee,shapeFlag:H,transition:Z,dirs:oe}=d;if(B=d.el=i(d.type,C,ee&&ee.is,ee),H&8?c(B,d.children):H&16&&T(d.children,B,null,A,P,Ur(d,C),U,$),oe&&ln(d,null,A,"created"),G(B,d,d.scopeId,U,A),ee){for(const xe in ee)xe!=="value"&&!rs(xe)&&o(B,xe,null,ee[xe],C,A);"value"in ee&&o(B,"value",null,ee.value,C),(k=ee.onVnodeBeforeMount)&&Et(k,A,d)}oe&&ln(d,null,A,"beforeMount");const ae=td(P,Z);ae&&Z.beforeEnter(B),s(B,m,v),((k=ee&&ee.onVnodeMounted)||ae||oe)&&Fe(()=>{k&&Et(k,A,d),ae&&Z.enter(B),oe&&ln(d,null,A,"mounted")},P)},G=(d,m,v,A,P)=>{if(v&&g(d,v),A)for(let C=0;C{for(let k=B;k{const $=m.el=d.el;let{patchFlag:B,dynamicChildren:k,dirs:ee}=m;B|=d.patchFlag&16;const H=d.props||pe,Z=m.props||pe;let oe;if(v&&an(v,!1),(oe=Z.onVnodeBeforeUpdate)&&Et(oe,v,m,d),ee&&ln(m,d,v,"beforeUpdate"),v&&an(v,!0),(H.innerHTML&&Z.innerHTML==null||H.textContent&&Z.textContent==null)&&c($,""),k?w(d.dynamicChildren,k,$,v,A,Ur(m,P),C):U||re(d,m,$,null,v,A,Ur(m,P),C,!1),B>0){if(B&16)L($,H,Z,v,P);else if(B&2&&H.class!==Z.class&&o($,"class",null,Z.class,P),B&4&&o($,"style",H.style,Z.style,P),B&8){const ae=m.dynamicProps;for(let xe=0;xe{oe&&Et(oe,v,m,d),ee&&ln(m,d,v,"updated")},A)},w=(d,m,v,A,P,C,U)=>{for(let $=0;${if(m!==v){if(m!==pe)for(const C in m)!rs(C)&&!(C in v)&&o(d,C,m[C],null,P,A);for(const C in v){if(rs(C))continue;const U=v[C],$=m[C];U!==$&&C!=="value"&&o(d,C,$,U,P,A)}"value"in v&&o(d,"value",m.value,v.value,P)}},R=(d,m,v,A,P,C,U,$,B)=>{const k=m.el=d?d.el:l(""),ee=m.anchor=d?d.anchor:l("");let{patchFlag:H,dynamicChildren:Z,slotScopeIds:oe}=m;oe&&($=$?$.concat(oe):oe),d==null?(s(k,v,A),s(ee,v,A),T(m.children||[],v,ee,P,C,U,$,B)):H>0&&H&64&&Z&&d.dynamicChildren&&d.dynamicChildren.length===Z.length?(w(d.dynamicChildren,Z,v,P,C,U,$),(m.key!=null||P&&m===P.subTree)&&Vo(d,m,!0)):re(d,m,v,ee,P,C,U,$,B)},V=(d,m,v,A,P,C,U,$,B)=>{m.slotScopeIds=$,d==null?m.shapeFlag&512?P.ctx.activate(m,v,A,U,B):te(m,v,A,P,C,U,B):de(d,m,B)},te=(d,m,v,A,P,C,U)=>{const $=d.component=cd(d,A,P);if(Er(d)&&($.ctx.renderer=F),ud($,!1,U),$.asyncDep){if(P&&P.registerDep($,W,U),!d.el){const B=$.subTree=ye(Ue);I(null,B,m,v),d.placeholder=B.el}}else W($,d,m,v,P,C,U)},de=(d,m,v)=>{const A=m.component=d.component;if(qf(d,m,v))if(A.asyncDep&&!A.asyncResolved){Y(A,m,v);return}else A.next=m,A.update();else m.el=d.el,A.vnode=m},W=(d,m,v,A,P,C,U)=>{const $=()=>{if(d.isMounted){let{next:H,bu:Z,u:oe,parent:ae,vnode:xe}=d;{const wt=Qa(d);if(wt){H&&(H.el=xe.el,Y(d,H,U)),wt.asyncDep.then(()=>{Fe(()=>{d.isUnmounted||k()},P)});return}}let we=H,Ke;an(d,!1),H?(H.el=xe.el,Y(d,H,U)):H=xe,Z&&Vs(Z),(Ke=H.props&&H.props.onVnodeBeforeUpdate)&&Et(Ke,ae,H,xe),an(d,!0);const Je=wi(d),vt=d.subTree;d.subTree=Je,y(vt,Je,f(vt.el),h(vt),d,P,C),H.el=Je.el,we===null&&Gf(d,Je.el),oe&&Fe(oe,P),(Ke=H.props&&H.props.onVnodeUpdated)&&Fe(()=>Et(Ke,ae,H,xe),P)}else{let H;const{el:Z,props:oe}=m,{bm:ae,m:xe,parent:we,root:Ke,type:Je}=d,vt=In(m);an(d,!1),ae&&Vs(ae),!vt&&(H=oe&&oe.onVnodeBeforeMount)&&Et(H,we,m),an(d,!0);{Ke.ce&&Ke.ce._hasShadowRoot()&&Ke.ce._injectChildStyle(Je);const wt=d.subTree=wi(d);y(null,wt,v,A,d,P,C),m.el=wt.el}if(xe&&Fe(xe,P),!vt&&(H=oe&&oe.onVnodeMounted)){const wt=m;Fe(()=>Et(H,we,wt),P)}(m.shapeFlag&256||we&&In(we.vnode)&&we.vnode.shapeFlag&256)&&d.a&&Fe(d.a,P),d.isMounted=!0,m=v=A=null}};d.scope.on();const B=d.effect=new Xl($);d.scope.off();const k=d.update=B.run.bind(B),ee=d.job=B.runIfDirty.bind(B);ee.i=d,ee.id=d.uid,B.scheduler=()=>Bo(ee),an(d,!0),k()},Y=(d,m,v)=>{m.component=d;const A=d.vnode.props;d.vnode=m,d.next=null,Kf(d,m.props,A,v),Qf(d,m.children,v),jt(),ci(d),Ut()},re=(d,m,v,A,P,C,U,$,B=!1)=>{const k=d&&d.children,ee=d?d.shapeFlag:0,H=m.children,{patchFlag:Z,shapeFlag:oe}=m;if(Z>0){if(Z&128){z(k,H,v,A,P,C,U,$,B);return}else if(Z&256){Ne(k,H,v,A,P,C,U,$,B);return}}oe&8?(ee&16&&me(k,P,C),H!==k&&c(v,H)):ee&16?oe&16?z(k,H,v,A,P,C,U,$,B):me(k,P,C,!0):(ee&8&&c(v,""),oe&16&&T(H,v,A,P,C,U,$,B))},Ne=(d,m,v,A,P,C,U,$,B)=>{d=d||Tn,m=m||Tn;const k=d.length,ee=m.length,H=Math.min(k,ee);let Z;for(Z=0;Zee?me(d,P,C,!0,!1,H):T(m,v,A,P,C,U,$,B,H)},z=(d,m,v,A,P,C,U,$,B)=>{let k=0;const ee=m.length;let H=d.length-1,Z=ee-1;for(;k<=H&&k<=Z;){const oe=d[k],ae=m[k]=B?Lt(m[k]):At(m[k]);if(pn(oe,ae))y(oe,ae,v,null,P,C,U,$,B);else break;k++}for(;k<=H&&k<=Z;){const oe=d[H],ae=m[Z]=B?Lt(m[Z]):At(m[Z]);if(pn(oe,ae))y(oe,ae,v,null,P,C,U,$,B);else break;H--,Z--}if(k>H){if(k<=Z){const oe=Z+1,ae=oeZ)for(;k<=H;)Se(d[k],P,C,!0),k++;else{const oe=k,ae=k,xe=new Map;for(k=ae;k<=Z;k++){const tt=m[k]=B?Lt(m[k]):At(m[k]);tt.key!=null&&xe.set(tt.key,k)}let we,Ke=0;const Je=Z-ae+1;let vt=!1,wt=0;const Gn=new Array(Je);for(k=0;k=Je){Se(tt,P,C,!0);continue}let _t;if(tt.key!=null)_t=xe.get(tt.key);else for(we=ae;we<=Z;we++)if(Gn[we-ae]===0&&pn(tt,m[we])){_t=we;break}_t===void 0?Se(tt,P,C,!0):(Gn[_t-ae]=k+1,_t>=wt?wt=_t:vt=!0,y(tt,m[_t],v,null,P,C,U,$,B),Ke++)}const ti=vt?nd(Gn):Tn;for(we=ti.length-1,k=Je-1;k>=0;k--){const tt=ae+k,_t=m[tt],ni=m[tt+1],si=tt+1{const{el:C,type:U,transition:$,children:B,shapeFlag:k}=d;if(k&6){ve(d.component.subTree,m,v,A);return}if(k&128){d.suspense.move(m,v,A);return}if(k&64){U.move(d,m,v,F);return}if(U===Te){s(C,m,v);for(let H=0;H$.enter(C),P);else{const{leave:H,delayLeave:Z,afterLeave:oe}=$,ae=()=>{d.ctx.isUnmounted?r(C):s(C,m,v)},xe=()=>{C._isLeaving&&C[Rt](!0),H(C,()=>{ae(),oe&&oe()})};Z?Z(C,ae,xe):xe()}else s(C,m,v)},Se=(d,m,v,A=!1,P=!1)=>{const{type:C,props:U,ref:$,children:B,dynamicChildren:k,shapeFlag:ee,patchFlag:H,dirs:Z,cacheIndex:oe}=d;if(H===-2&&(P=!1),$!=null&&(jt(),as($,null,v,d,!0),Ut()),oe!=null&&(m.renderCache[oe]=void 0),ee&256){m.ctx.deactivate(d);return}const ae=ee&1&&Z,xe=!In(d);let we;if(xe&&(we=U&&U.onVnodeBeforeUnmount)&&Et(we,m,d),ee&6)_e(d.component,v,A);else{if(ee&128){d.suspense.unmount(v,A);return}ae&&ln(d,null,m,"beforeUnmount"),ee&64?d.type.remove(d,m,v,F,A):k&&!k.hasOnce&&(C!==Te||H>0&&H&64)?me(k,m,v,!1,!0):(C===Te&&H&384||!P&&ee&16)&&me(B,m,v),A&&ze(d)}(xe&&(we=U&&U.onVnodeUnmounted)||ae)&&Fe(()=>{we&&Et(we,m,d),ae&&ln(d,null,m,"unmounted")},v)},ze=d=>{const{type:m,el:v,anchor:A,transition:P}=d;if(m===Te){Me(v,A);return}if(m===qs){D(d);return}const C=()=>{r(v),P&&!P.persisted&&P.afterLeave&&P.afterLeave()};if(d.shapeFlag&1&&P&&!P.persisted){const{leave:U,delayLeave:$}=P,B=()=>U(v,C);$?$(d.el,C,B):B()}else C()},Me=(d,m)=>{let v;for(;d!==m;)v=p(d),r(d),d=v;r(m)},_e=(d,m,v)=>{const{bum:A,scope:P,job:C,subTree:U,um:$,m:B,a:k}=d;Si(B),Si(k),A&&Vs(A),P.stop(),C&&(C.flags|=8,Se(U,d,m,v)),$&&Fe($,m),Fe(()=>{d.isUnmounted=!0},m)},me=(d,m,v,A=!1,P=!1,C=0)=>{for(let U=C;U{if(d.shapeFlag&6)return h(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const m=p(d.anchor||d.el),v=m&&m[Ea];return v?p(v):m};let M=!1;const S=(d,m,v)=>{let A;d==null?m._vnode&&(Se(m._vnode,null,null,!0),A=m._vnode.component):y(m._vnode||null,d,m,null,null,null,v),m._vnode=d,M||(M=!0,ci(A),ya(),M=!1)},F={p:y,um:Se,m:ve,r:ze,mt:te,mc:T,pc:re,pbc:w,n:h,o:e};return{render:S,hydrate:void 0,createApp:jf(S)}}function Ur({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function an({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function td(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Vo(e,t,n=!1){const s=e.children,r=t.children;if(X(s)&&X(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Qa(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Qa(t)}function Si(e){if(e)for(let t=0;te.__isSuspense;function sd(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):pf(e)}const Te=Symbol.for("v-fgt"),Rr=Symbol.for("v-txt"),Ue=Symbol.for("v-cmt"),qs=Symbol.for("v-stc"),us=[];let rt=null;function fe(e=!1){us.push(rt=e?null:[])}function rd(){us.pop(),rt=us[us.length-1]||null}let ys=1;function rr(e,t=!1){ys+=e,e<0&&rt&&t&&(rt.hasOnce=!0)}function tc(e){return e.dynamicChildren=ys>0?rt||Tn:null,rd(),ys>0&&rt&&rt.push(e),e}function Ce(e,t,n,s,r,o){return tc(lt(e,t,n,s,r,o,!0))}function Ct(e,t,n,s,r){return tc(ye(e,t,n,s,r,!0))}function Tt(e){return e?e.__v_isVNode===!0:!1}function pn(e,t){return e.type===t.type&&e.key===t.key}const nc=({key:e})=>e??null,Gs=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ae(e)||Oe(e)||se(e)?{i:Be,r:e,k:t,f:!!n}:e:null);function lt(e,t=null,n=null,s=0,r=null,o=e===Te?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&nc(t),ref:t&&Gs(t),scopeId:wa,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Be};return l?(Ho(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=Ae(n)?8:16),ys>0&&!i&&rt&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&rt.push(a),a}const ye=od;function od(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===La)&&(e=Ue),Tt(e)){const l=sn(e,t,!0);return n&&Ho(l,n),ys>0&&!o&&rt&&(l.shapeFlag&6?rt[rt.indexOf(e)]=l:rt.push(l)),l.patchFlag=-2,l}if(hd(e)&&(e=e.__vccOpts),t){t=id(t);let{class:l,style:a}=t;l&&!Ae(l)&&(t.class=nt(l)),he(a)&&(wr(a)&&!X(a)&&(a=ke({},a)),t.style=tn(a))}const i=Ae(e)?1:ec(e)?128:Sa(e)?64:he(e)?4:se(e)?2:0;return lt(e,t,n,s,r,i,o,!0)}function id(e){return e?wr(e)||Ga(e)?ke({},e):e:null}function sn(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:a}=e,u=t?Nn(r||{},t):r,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&nc(u),ref:t&&t.ref?n&&o?X(o)?o.concat(Gs(t)):[o,Gs(t)]:Gs(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Te?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&sn(e.ssContent),ssFallback:e.ssFallback&&sn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&vn(c,a.clone(c)),c}function po(e=" ",t=0){return ye(Rr,null,e,t)}function ty(e,t){const n=ye(qs,null,e);return n.staticCount=t,n}function dn(e="",t=!1){return t?(fe(),Ct(Ue,null,e)):ye(Ue,null,e)}function At(e){return e==null||typeof e=="boolean"?ye(Ue):X(e)?ye(Te,null,e.slice()):Tt(e)?Lt(e):ye(Rr,null,String(e))}function Lt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:sn(e)}function Ho(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ho(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ga(t)?t._ctx=Be:r===3&&Be&&(Be.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else se(t)?(t={default:t,_ctx:Be},n=32):(t=String(t),s&64?(n=16,t=[po(t)]):n=8);e.children=t,e.shapeFlag|=n}function Nn(...e){const t={};for(let n=0;nVe||Be;let or,ho;{const e=mr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};or=t("__VUE_INSTANCE_SETTERS__",n=>Ve=n),ho=t("__VUE_SSR_SETTERS__",n=>vs=n)}const Rs=e=>{const t=Ve;return or(e),e.scope.on(),()=>{e.scope.off(),or(t)}},xi=()=>{Ve&&Ve.scope.off(),or(null)};function sc(e){return e.vnode.shapeFlag&4}let vs=!1;function ud(e,t=!1,n=!1){t&&ho(t);const{props:s,children:r}=e.vnode,o=sc(e);Wf(e,s,o,t),Yf(e,r,n||t);const i=o?fd(e,t):void 0;return t&&ho(!1),i}function fd(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,kf);const{setup:s}=n;if(s){jt();const r=e.setupContext=s.length>1?oc(e):null,o=Rs(e),i=Ss(s,e,0,[e.props,r]),l=jl(i);if(Ut(),o(),(l||e.sp)&&!In(e)&&Pa(e),l){if(i.then(xi,xi),t)return i.then(a=>{Ri(e,a)}).catch(a=>{_r(a,e,0)});e.asyncDep=i}else Ri(e,i)}else rc(e)}function Ri(e,t,n){se(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:he(t)&&(e.setupState=ha(t)),rc(e)}function rc(e,t,n){const s=e.type;e.render||(e.render=s.render||Ot);{const r=Rs(e);jt();try{Df(e)}finally{Ut(),r()}}}const dd={get(e,t){return je(e,"get",""),e[t]}};function oc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,dd),slots:e.slots,emit:e.emit,expose:t}}function Ar(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ha(Mo(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in cs)return cs[n](e)},has(t,n){return n in t||n in cs}})):e.proxy}function pd(e,t=!0){return se(e)?e.displayName||e.name:e.name||t&&e.__name}function hd(e){return se(e)&&"__vccOpts"in e}const ue=(e,t)=>af(e,t,vs);function Ln(e,t,n){try{rr(-1);const s=arguments.length;return s===2?he(t)&&!X(t)?Tt(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Tt(n)&&(n=[n]),ye(e,t,n))}finally{rr(1)}}const md="3.5.29";let mo;const Ai=typeof window<"u"&&window.trustedTypes;if(Ai)try{mo=Ai.createPolicy("vue",{createHTML:e=>e})}catch{}const ic=mo?e=>mo.createHTML(e):e=>e,gd="http://www.w3.org/2000/svg",bd="http://www.w3.org/1998/Math/MathML",Nt=typeof document<"u"?document:null,Ci=Nt&&Nt.createElement("template"),yd={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Nt.createElementNS(gd,e):t==="mathml"?Nt.createElementNS(bd,e):n?Nt.createElement(e,{is:n}):Nt.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Nt.createTextNode(e),createComment:e=>Nt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Nt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Ci.innerHTML=ic(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Ci.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},qt="transition",Xn="animation",Mn=Symbol("_vtc"),lc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ac=ke({},Aa,lc),vd=e=>(e.displayName="Transition",e.props=ac,e),ny=vd((e,{slots:t})=>Ln(_f,cc(e),t)),cn=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ti=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function cc(e){const t={};for(const R in e)R in lc||(t[R]=e[R]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,b=wd(r),y=b&&b[0],_=b&&b[1],{onBeforeEnter:I,onEnter:x,onEnterCancelled:N,onLeave:D,onLeaveCancelled:j,onBeforeAppear:J=I,onAppear:G=x,onAppearCancelled:T=N}=t,O=(R,V,te,de)=>{R._enterCancelled=de,Xt(R,V?c:l),Xt(R,V?u:i),te&&te()},w=(R,V)=>{R._isLeaving=!1,Xt(R,f),Xt(R,g),Xt(R,p),V&&V()},L=R=>(V,te)=>{const de=R?G:x,W=()=>O(V,R,te);cn(de,[V,W]),Oi(()=>{Xt(V,R?a:o),St(V,R?c:l),Ti(de)||Pi(V,s,y,W)})};return ke(t,{onBeforeEnter(R){cn(I,[R]),St(R,o),St(R,i)},onBeforeAppear(R){cn(J,[R]),St(R,a),St(R,u)},onEnter:L(!1),onAppear:L(!0),onLeave(R,V){R._isLeaving=!0;const te=()=>w(R,V);St(R,f),R._enterCancelled?(St(R,p),go(R)):(go(R),St(R,p)),Oi(()=>{R._isLeaving&&(Xt(R,f),St(R,g),Ti(D)||Pi(R,s,_,te))}),cn(D,[R,te])},onEnterCancelled(R){O(R,!1,void 0,!0),cn(N,[R])},onAppearCancelled(R){O(R,!0,void 0,!0),cn(T,[R])},onLeaveCancelled(R){w(R),cn(j,[R])}})}function wd(e){if(e==null)return null;if(he(e))return[Vr(e.enter),Vr(e.leave)];{const t=Vr(e);return[t,t]}}function Vr(e){return xu(e)}function St(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Mn]||(e[Mn]=new Set)).add(t)}function Xt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Mn];n&&(n.delete(t),n.size||(e[Mn]=void 0))}function Oi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let _d=0;function Pi(e,t,n,s){const r=e._endId=++_d,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:a}=uc(e,t);if(!i)return s();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,p),o()},p=g=>{g.target===e&&++c>=a&&f()};setTimeout(()=>{c(n[b]||"").split(", "),r=s(`${qt}Delay`),o=s(`${qt}Duration`),i=ki(r,o),l=s(`${Xn}Delay`),a=s(`${Xn}Duration`),u=ki(l,a);let c=null,f=0,p=0;t===qt?i>0&&(c=qt,f=i,p=o.length):t===Xn?u>0&&(c=Xn,f=u,p=a.length):(f=Math.max(i,u),c=f>0?i>u?qt:Xn:null,p=c?c===qt?o.length:a.length:0);const g=c===qt&&/\b(?:transform|all)(?:,|$)/.test(s(`${qt}Property`).toString());return{type:c,timeout:f,propCount:p,hasTransform:g}}function ki(e,t){for(;e.lengthIi(n)+Ii(e[s])))}function Ii(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function go(e){return(e?e.ownerDocument:document).body.offsetHeight}function Ed(e,t,n){const s=e[Mn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ir=Symbol("_vod"),fc=Symbol("_vsh"),sy={name:"show",beforeMount(e,{value:t},{transition:n}){e[ir]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Yn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Yn(e,!0),s.enter(e)):s.leave(e,()=>{Yn(e,!1)}):Yn(e,t))},beforeUnmount(e,{value:t}){Yn(e,t)}};function Yn(e,t){e.style.display=t?e[ir]:"none",e[fc]=!t}const Sd=Symbol(""),xd=/(?:^|;)\s*display\s*:/;function Rd(e,t,n){const s=e.style,r=Ae(n);let o=!1;if(n&&!r){if(t)if(Ae(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Ws(s,l,"")}else for(const i in t)n[i]==null&&Ws(s,i,"");for(const i in n)i==="display"&&(o=!0),Ws(s,i,n[i])}else if(r){if(t!==n){const i=s[Sd];i&&(n+=";"+i),s.cssText=n,o=xd.test(n)}}else t&&e.removeAttribute("style");ir in e&&(e[ir]=o?s.display:"",e[fc]&&(s.display="none"))}const Ni=/\s*!important$/;function Ws(e,t,n){if(X(n))n.forEach(s=>Ws(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ad(e,t);Ni.test(n)?e.setProperty(Ht(s),n.replace(Ni,""),"important"):e[s]=n}}const Di=["Webkit","Moz","ms"],Hr={};function Ad(e,t){const n=Hr[t];if(n)return n;let s=it(t);if(s!=="filter"&&s in e)return Hr[t]=s;s=pr(s);for(let r=0;rzr||(Pd.then(()=>zr=0),zr=Date.now());function Id(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;gt(Nd(s,n.value),t,5,[s])};return n.value=e,n.attached=kd(),n}function Nd(e,t){if(X(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ji=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Dd=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Ed(e,s,i):t==="style"?Rd(e,n,s):ur(t)?Po(t)||Td(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ld(e,t,s,i))?(Bi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Mi(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Ae(s))?Bi(e,it(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Mi(e,t,s,i))};function Ld(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ji(t)&&se(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ji(t)&&Ae(n)?!1:t in e}const dc=new WeakMap,pc=new WeakMap,lr=Symbol("_moveCb"),Ui=Symbol("_enterCb"),Md=e=>(delete e.props.mode,e),Bd=Md({name:"TransitionGroup",props:ke({},ac,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=En(),s=Ra();let r,o;return Ia(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!Ud(r[0].el,n.vnode.el,i)){r=[];return}r.forEach(Fd),r.forEach($d);const l=r.filter(jd);go(n.vnode.el),l.forEach(a=>{const u=a.el,c=u.style;St(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[lr]=p=>{p&&p.target!==u||(!p||p.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",f),u[lr]=null,Xt(u,i))};u.addEventListener("transitionend",f)}),r=[]}),()=>{const i=ce(e),l=cc(i);let a=i.tag||Te;if(r=[],o)for(let u=0;u{l.split(/\s+/).forEach(a=>a&&s.classList.remove(a))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=uc(s);return o.removeChild(s),i}const rn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return X(t)?n=>Vs(t,n):t};function Vd(e){e.target.composing=!0}function Vi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const dt=Symbol("_assign");function Hi(e,t,n){return t&&(e=e.trim()),n&&(e=hr(e)),e}const oy={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[dt]=rn(r);const o=s||r.props&&r.props.type==="number";Ft(e,t?"change":"input",i=>{i.target.composing||e[dt](Hi(e.value,n,o))}),(n||o)&&Ft(e,"change",()=>{e.value=Hi(e.value,n,o)}),t||(Ft(e,"compositionstart",Vd),Ft(e,"compositionend",Vi),Ft(e,"change",Vi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[dt]=rn(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?hr(e.value):e.value,a=t??"";l!==a&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===a)||(e.value=a))}},iy={deep:!0,created(e,t,n){e[dt]=rn(n),Ft(e,"change",()=>{const s=e._modelValue,r=Bn(e),o=e.checked,i=e[dt];if(X(s)){const l=Io(s,r),a=l!==-1;if(o&&!a)i(s.concat(r));else if(!o&&a){const u=[...s];u.splice(l,1),i(u)}}else if(Vn(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(mc(e,o))})},mounted:zi,beforeUpdate(e,t,n){e[dt]=rn(n),zi(e,t,n)}};function zi(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(X(t))r=Io(t,s.props.value)>-1;else if(Vn(t))r=t.has(s.props.value);else{if(t===n)return;r=nn(t,mc(e,!0))}e.checked!==r&&(e.checked=r)}const ly={created(e,{value:t},n){e.checked=nn(t,n.props.value),e[dt]=rn(n),Ft(e,"change",()=>{e[dt](Bn(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[dt]=rn(s),t!==n&&(e.checked=nn(t,s.props.value))}},ay={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Vn(t);Ft(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?hr(Bn(i)):Bn(i));e[dt](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Hn(()=>{e._assigning=!1})}),e[dt]=rn(s)},mounted(e,{value:t}){qi(e,t)},beforeUpdate(e,t,n){e[dt]=rn(n)},updated(e,{value:t}){e._assigning||qi(e,t)}};function qi(e,t){const n=e.multiple,s=X(t);if(!(n&&!s&&!Vn(t))){for(let r=0,o=e.options.length;rString(u)===String(l)):i.selected=Io(t,l)>-1}else i.selected=t.has(l);else if(nn(Bn(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Bn(e){return"_value"in e?e._value:e.value}function mc(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Hd=["ctrl","shift","alt","meta"],zd={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Hd.some(n=>e[`${n}Key`]&&!t.includes(n))},cy=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(r=>{if(!("key"in r))return;const o=Ht(r.key);if(t.some(i=>i===o||qd[i]===o))return e(r)}))},Gd=ke({patchProp:Dd},yd);let Gi;function Wd(){return Gi||(Gi=Zf(Gd))}const Kd=((...e)=>{const t=Wd().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Xd(s);if(!r)return;const o=t._component;!se(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,Jd(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function Jd(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Xd(e){return Ae(e)?document.querySelector(e):e}let gc;const Cr=e=>gc=e,bc=Symbol();function bo(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var fs;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(fs||(fs={}));function Yd(){const e=Kl(!0),t=e.run(()=>Ee({}));let n=[],s=[];const r=Mo({install(o){Cr(r),r._a=o,o.provide(bc,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const yc=()=>{};function Wi(e,t,n,s=yc){e.add(t);const r=()=>{e.delete(t)&&s()};return!n&&Jl()&&Iu(r),r}function Rn(e,...t){e.forEach(n=>{n(...t)})}const Qd=e=>e(),Ki=Symbol(),qr=Symbol();function yo(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];bo(r)&&bo(s)&&e.hasOwnProperty(n)&&!Oe(s)&&!$t(s)?e[n]=yo(r,s):e[n]=s}return e}const Zd=Symbol();function ep(e){return!bo(e)||!Object.prototype.hasOwnProperty.call(e,Zd)}const{assign:Yt}=Object;function tp(e){return!!(Oe(e)&&e.effect)}function np(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let a;function u(){l||(n.state.value[e]=r?r():{});const c=sf(n.state.value[e]);return Yt(c,o,Object.keys(i||{}).reduce((f,p)=>(f[p]=Mo(ue(()=>{Cr(n);const g=n._s.get(e);return i[p].call(g,g)})),f),{}))}return a=vc(e,u,t,n,s,!0),a}function vc(e,t,n={},s,r,o){let i;const l=Yt({actions:{}},n),a={deep:!0};let u,c,f=new Set,p=new Set,g;const b=s.state.value[e];!o&&!b&&(s.state.value[e]={});let y;function _(T){let O;u=c=!1,typeof T=="function"?(T(s.state.value[e]),O={type:fs.patchFunction,storeId:e,events:g}):(yo(s.state.value[e],T),O={type:fs.patchObject,payload:T,storeId:e,events:g});const w=y=Symbol();Hn().then(()=>{y===w&&(u=!0)}),c=!0,Rn(f,O,s.state.value[e])}const I=o?function(){const{state:O}=n,w=O?O():{};this.$patch(L=>{Yt(L,w)})}:yc;function x(){i.stop(),f.clear(),p.clear(),s._s.delete(e)}const N=(T,O="")=>{if(Ki in T)return T[qr]=O,T;const w=function(){Cr(s);const L=Array.from(arguments),R=new Set,V=new Set;function te(Y){R.add(Y)}function de(Y){V.add(Y)}Rn(p,{args:L,name:w[qr],store:j,after:te,onError:de});let W;try{W=T.apply(this&&this.$id===e?this:j,L)}catch(Y){throw Rn(V,Y),Y}return W instanceof Promise?W.then(Y=>(Rn(R,Y),Y)).catch(Y=>(Rn(V,Y),Promise.reject(Y))):(Rn(R,W),W)};return w[Ki]=!0,w[qr]=O,w},D={_p:s,$id:e,$onAction:Wi.bind(null,p),$patch:_,$reset:I,$subscribe(T,O={}){const w=Wi(f,T,O.detached,()=>L()),L=i.run(()=>kn(()=>s.state.value[e],R=>{(O.flush==="sync"?c:u)&&T({storeId:e,type:fs.direct,events:g},R)},Yt({},a,O)));return w},$dispose:x},j=Es(D);s._s.set(e,j);const G=(s._a&&s._a.runWithContext||Qd)(()=>s._e.run(()=>(i=Kl()).run(()=>t({action:N}))));for(const T in G){const O=G[T];if(Oe(O)&&!tp(O)||$t(O))o||(b&&ep(O)&&(Oe(O)?O.value=b[T]:yo(O,b[T])),s.state.value[e][T]=O);else if(typeof O=="function"){const w=N(O,T);G[T]=w,l.actions[T]=O}}return Yt(j,G),Yt(ce(j),G),Object.defineProperty(j,"$state",{get:()=>s.state.value[e],set:T=>{_(O=>{Yt(O,T)})}}),s._p.forEach(T=>{Yt(j,i.run(()=>T({store:j,app:s._a,pinia:s,options:l})))}),b&&o&&n.hydrate&&n.hydrate(j.$state,b),u=!0,c=!0,j}function sp(e,t,n){let s;const r=typeof t=="function";s=r?n:t;function o(i,l){const a=hf();return i=i||(a?ft(bc,null):null),i&&Cr(i),i=gc,i._s.has(e)||(r?vc(e,t,s,i):np(e,s,i)),i._s.get(e)}return o.$id=e,o}const Cn=typeof document<"u";function wc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function rp(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&wc(e.default)}const ge=Object.assign;function Gr(e,t){const n={};for(const s in t){const r=t[s];n[s]=bt(r)?r.map(e):e(r)}return n}const ds=()=>{},bt=Array.isArray;function Ji(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}let Pe=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const _c=Symbol("");Pe.MATCHER_NOT_FOUND+"",Pe.NAVIGATION_GUARD_REDIRECT+"",Pe.NAVIGATION_ABORTED+"",Pe.NAVIGATION_CANCELLED+"",Pe.NAVIGATION_DUPLICATED+"";function Fn(e,t){return ge(new Error,{type:e,[_c]:!0},t)}function kt(e,t){return e instanceof Error&&_c in e&&(t==null||!!(e.type&t))}const op=["params","query","hash"];function ip(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of op)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}const lp=Symbol(""),Xi=Symbol(""),Tr=Symbol(""),zo=Symbol(""),vo=Symbol("");function fy(){return ft(Tr)}function dy(e){return ft(zo)}const Ec=/#/g,ap=/&/g,cp=/\//g,up=/=/g,fp=/\?/g,Sc=/\+/g,dp=/%5B/g,pp=/%5D/g,xc=/%5E/g,hp=/%60/g,Rc=/%7B/g,mp=/%7C/g,Ac=/%7D/g,gp=/%20/g;function qo(e){return e==null?"":encodeURI(""+e).replace(mp,"|").replace(dp,"[").replace(pp,"]")}function bp(e){return qo(e).replace(Rc,"{").replace(Ac,"}").replace(xc,"^")}function wo(e){return qo(e).replace(Sc,"%2B").replace(gp,"+").replace(Ec,"%23").replace(ap,"%26").replace(hp,"`").replace(Rc,"{").replace(Ac,"}").replace(xc,"^")}function yp(e){return wo(e).replace(up,"%3D")}function vp(e){return qo(e).replace(Ec,"%23").replace(fp,"%3F")}function wp(e){return vp(e).replace(cp,"%2F")}function ws(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const _p=/\/$/,Ep=e=>e.replace(_p,"");function Wr(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return a=l>=0&&a>l?-1:a,a>=0&&(s=t.slice(0,a),o=t.slice(a,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=Ap(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:ws(i)}}function Sp(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Yi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function xp(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&$n(t.matched[s],n.matched[r])&&Cc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function $n(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Cc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Rp(e[n],t[n]))return!1;return!0}function Rp(e,t){return bt(e)?Qi(e,t):bt(t)?Qi(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Qi(e,t){return bt(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Ap(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const Gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let _o=(function(e){return e.pop="pop",e.push="push",e})({}),Kr=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Cp(e){if(!e)if(Cn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Ep(e)}const Tp=/^[^#]+#/;function Op(e,t){return e.replace(Tp,"#")+t}function Pp(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Or=()=>({left:window.scrollX,top:window.scrollY});function kp(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Pp(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Zi(e,t){return(history.state?history.state.position-t:-1)+e}const Eo=new Map;function Ip(e,t){Eo.set(e,t)}function Np(e){const t=Eo.get(e);return Eo.delete(e),t}function Dp(e){return typeof e=="string"||e&&typeof e=="object"}function Tc(e){return typeof e=="string"||typeof e=="symbol"}function Lp(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&wo(r)):[s&&wo(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Mp(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=bt(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}function Qn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function en(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,a)=>{const u=p=>{p===!1?a(Fn(Pe.NAVIGATION_ABORTED,{from:n,to:t})):p instanceof Error?a(p):Dp(p)?a(Fn(Pe.NAVIGATION_GUARD_REDIRECT,{from:t,to:p})):(i&&s.enterCallbacks[r]===i&&typeof p=="function"&&i.push(p),l())},c=o(()=>e.call(s&&s.instances[r],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(p=>a(p))})}function Jr(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(wc(a)){const u=(a.__vccOpts||a)[t];u&&o.push(en(u,n,s,i,l,r))}else{let u=a();o.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=rp(c)?c.default:c;i.mods[l]=c,i.components[l]=f;const p=(f.__vccOpts||f)[t];return p&&en(p,n,s,i,l,r)()}))}}return o}function Bp(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;i$n(u,l))?s.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(u=>$n(u,a))||r.push(a))}return[n,s,r]}let Fp=()=>location.protocol+"//"+location.host;function Oc(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),Yi(l,"")}return Yi(n,e)+s+r}function $p(e,t,n,s){let r=[],o=[],i=null;const l=({state:p})=>{const g=Oc(e,location),b=n.value,y=t.value;let _=0;if(p){if(n.value=g,t.value=p,i&&i===b){i=null;return}_=y?p.position-y.position:0}else s(g);r.forEach(I=>{I(n.value,b,{delta:_,type:_o.pop,direction:_?_>0?Kr.forward:Kr.back:Kr.unknown})})};function a(){i=n.value}function u(p){r.push(p);const g=()=>{const b=r.indexOf(p);b>-1&&r.splice(b,1)};return o.push(g),g}function c(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(ge({},p.state,{scroll:Or()}),"")}}function f(){for(const p of o)p();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:a,listen:u,destroy:f}}function tl(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Or():null}}function jp(e){const{history:t,location:n}=window,s={value:Oc(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,u,c){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:Fp()+e+a;try{t[c?"replaceState":"pushState"](u,"",p),r.value=u}catch(g){console.error(g),n[c?"replace":"assign"](p)}}function i(a,u){o(a,ge({},t.state,tl(r.value.back,a,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=a}function l(a,u){const c=ge({},r.value,t.state,{forward:a,scroll:Or()});o(c.current,c,!0),o(a,ge({},tl(s.value,a,null),{position:c.position+1},u),!1),s.value=a}return{location:s,state:r,push:l,replace:i}}function Up(e){e=Cp(e);const t=jp(e),n=$p(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ge({location:"",base:e,go:s,createHref:Op.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let hn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Le=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Le||{});const Vp={type:hn.Static,value:""},Hp=/[a-zA-Z0-9_]/;function zp(e){if(!e)return[[]];if(e==="/")return[[Vp]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=Le.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,a,u="",c="";function f(){u&&(n===Le.Static?o.push({type:hn.Static,value:u}):n===Le.Param||n===Le.ParamRegExp||n===Le.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:hn.Param,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=a}for(;lt.length?t.length===1&&t[0]===Ge.Static+Ge.Segment?1:-1:0}function Pc(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Jp={strict:!1,end:!0,sensitive:!1};function Xp(e,t,n){const s=Wp(zp(e.path),n),r=ge(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Yp(e,t){const n=[],s=new Map;t=Ji(Jp,t);function r(f){return s.get(f)}function o(f,p,g){const b=!g,y=ol(f);y.aliasOf=g&&g.record;const _=Ji(t,f),I=[y];if("alias"in f){const D=typeof f.alias=="string"?[f.alias]:f.alias;for(const j of D)I.push(ol(ge({},y,{components:g?g.record.components:y.components,path:j,aliasOf:g?g.record:y})))}let x,N;for(const D of I){const{path:j}=D;if(p&&j[0]!=="/"){const J=p.record.path,G=J[J.length-1]==="/"?"":"/";D.path=p.record.path+(j&&G+j)}if(x=Xp(D,p,_),g?g.alias.push(x):(N=N||x,N!==x&&N.alias.push(x),b&&f.name&&!il(x)&&i(f.name)),kc(x)&&a(x),y.children){const J=y.children;for(let G=0;G{i(N)}:ds}function i(f){if(Tc(f)){const p=s.get(f);p&&(s.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function a(f){const p=eh(f,n);n.splice(p,0,f),f.record.name&&!il(f)&&s.set(f.record.name,f)}function u(f,p){let g,b={},y,_;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw Fn(Pe.MATCHER_NOT_FOUND,{location:f});_=g.record.name,b=ge(rl(p.params,g.keys.filter(N=>!N.optional).concat(g.parent?g.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),f.params&&rl(f.params,g.keys.map(N=>N.name))),y=g.stringify(b)}else if(f.path!=null)y=f.path,g=n.find(N=>N.re.test(y)),g&&(b=g.parse(y),_=g.record.name);else{if(g=p.name?s.get(p.name):n.find(N=>N.re.test(p.path)),!g)throw Fn(Pe.MATCHER_NOT_FOUND,{location:f,currentLocation:p});_=g.record.name,b=ge({},p.params,f.params),y=g.stringify(b)}const I=[];let x=g;for(;x;)I.unshift(x.record),x=x.parent;return{name:_,path:y,params:b,matched:I,meta:Zp(I)}}e.forEach(f=>o(f));function c(){n.length=0,s.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:l,getRecordMatcher:r}}function rl(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function ol(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Qp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Qp(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function il(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Zp(e){return e.reduce((t,n)=>ge(t,n.meta),{})}function eh(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Pc(e,t[o])<0?s=o:n=o+1}const r=th(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function th(e){let t=e;for(;t=t.parent;)if(kc(t)&&Pc(e,t)===0)return t}function kc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ll(e){const t=ft(Tr),n=ft(zo),s=ue(()=>{const a=le(e.to);return t.resolve(a)}),r=ue(()=>{const{matched:a}=s.value,{length:u}=a,c=a[u-1],f=n.matched;if(!c||!f.length)return-1;const p=f.findIndex($n.bind(null,c));if(p>-1)return p;const g=al(a[u-2]);return u>1&&al(c)===g&&f[f.length-1].path!==g?f.findIndex($n.bind(null,a[u-2])):p}),o=ue(()=>r.value>-1&&ih(n.params,s.value.params)),i=ue(()=>r.value>-1&&r.value===n.matched.length-1&&Cc(n.params,s.value.params));function l(a={}){if(oh(a)){const u=t[le(e.replace)?"replace":"push"](le(e.to)).catch(ds);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:ue(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function nh(e){return e.length===1?e[0]:e}const sh=_n({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:ll,setup(e,{slots:t}){const n=Es(ll(e)),{options:s}=ft(Tr),r=ue(()=>({[cl(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[cl(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&nh(t.default(n));return e.custom?o:Ln("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),rh=sh;function oh(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ih(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!bt(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function al(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const cl=(e,t,n)=>e??t??n,lh=_n({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=ft(vo),r=ue(()=>e.route||s.value),o=ft(Xi,0),i=ue(()=>{let u=le(o);const{matched:c}=r.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),l=ue(()=>r.value.matched[i.value]);Hs(Xi,ue(()=>i.value+1)),Hs(lp,l),Hs(vo,r);const a=Ee();return kn(()=>[a.value,l.value,e.name],([u,c,f],[p,g,b])=>{c&&(c.instances[f]=u,g&&g!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=g.leaveGuards),c.updateGuards.size||(c.updateGuards=g.updateGuards))),u&&c&&(!g||!$n(c,g)||!p)&&(c.enterCallbacks[f]||[]).forEach(y=>y(u))},{flush:"post"}),()=>{const u=r.value,c=e.name,f=l.value,p=f&&f.components[c];if(!p)return ul(n.default,{Component:p,route:u});const g=f.props[c],b=g?g===!0?u.params:typeof g=="function"?g(u):g:null,_=Ln(p,ge({},b,t,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(f.instances[c]=null)},ref:a}));return ul(n.default,{Component:_,route:u})||_}}});function ul(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ic=lh;function ah(e){const t=Yp(e.routes,e),n=e.parseQuery||Lp,s=e.stringifyQuery||el,r=e.history,o=Qn(),i=Qn(),l=Qn(),a=Qu(Gt);let u=Gt;Cn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Gr.bind(null,h=>""+h),f=Gr.bind(null,wp),p=Gr.bind(null,ws);function g(h,M){let S,F;return Tc(h)?(S=t.getRecordMatcher(h),F=M):F=h,t.addRoute(F,S)}function b(h){const M=t.getRecordMatcher(h);M&&t.removeRoute(M)}function y(){return t.getRoutes().map(h=>h.record)}function _(h){return!!t.getRecordMatcher(h)}function I(h,M){if(M=ge({},M||a.value),typeof h=="string"){const v=Wr(n,h,M.path),A=t.resolve({path:v.path},M),P=r.createHref(v.fullPath);return ge(v,A,{params:p(A.params),hash:ws(v.hash),redirectedFrom:void 0,href:P})}let S;if(h.path!=null)S=ge({},h,{path:Wr(n,h.path,M.path).path});else{const v=ge({},h.params);for(const A in v)v[A]==null&&delete v[A];S=ge({},h,{params:f(v)}),M.params=f(M.params)}const F=t.resolve(S,M),Q=h.hash||"";F.params=c(p(F.params));const d=Sp(s,ge({},h,{hash:bp(Q),path:F.path})),m=r.createHref(d);return ge({fullPath:d,hash:Q,query:s===el?Mp(h.query):h.query||{}},F,{redirectedFrom:void 0,href:m})}function x(h){return typeof h=="string"?Wr(n,h,a.value.path):ge({},h)}function N(h,M){if(u!==h)return Fn(Pe.NAVIGATION_CANCELLED,{from:M,to:h})}function D(h){return G(h)}function j(h){return D(ge(x(h),{replace:!0}))}function J(h,M){const S=h.matched[h.matched.length-1];if(S&&S.redirect){const{redirect:F}=S;let Q=typeof F=="function"?F(h,M):F;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=x(Q):{path:Q},Q.params={}),ge({query:h.query,hash:h.hash,params:Q.path!=null?{}:h.params},Q)}}function G(h,M){const S=u=I(h),F=a.value,Q=h.state,d=h.force,m=h.replace===!0,v=J(S,F);if(v)return G(ge(x(v),{state:typeof v=="object"?ge({},Q,v.state):Q,force:d,replace:m}),M||S);const A=S;A.redirectedFrom=M;let P;return!d&&xp(s,F,S)&&(P=Fn(Pe.NAVIGATION_DUPLICATED,{to:A,from:F}),ve(F,F,!0,!1)),(P?Promise.resolve(P):w(A,F)).catch(C=>kt(C)?kt(C,Pe.NAVIGATION_GUARD_REDIRECT)?C:z(C):re(C,A,F)).then(C=>{if(C){if(kt(C,Pe.NAVIGATION_GUARD_REDIRECT))return G(ge({replace:m},x(C.to),{state:typeof C.to=="object"?ge({},Q,C.to.state):Q,force:d}),M||A)}else C=R(A,F,!0,m,Q);return L(A,F,C),C})}function T(h,M){const S=N(h,M);return S?Promise.reject(S):Promise.resolve()}function O(h){const M=Me.values().next().value;return M&&typeof M.runWithContext=="function"?M.runWithContext(h):h()}function w(h,M){let S;const[F,Q,d]=Bp(h,M);S=Jr(F.reverse(),"beforeRouteLeave",h,M);for(const v of F)v.leaveGuards.forEach(A=>{S.push(en(A,h,M))});const m=T.bind(null,h,M);return S.push(m),me(S).then(()=>{S=[];for(const v of o.list())S.push(en(v,h,M));return S.push(m),me(S)}).then(()=>{S=Jr(Q,"beforeRouteUpdate",h,M);for(const v of Q)v.updateGuards.forEach(A=>{S.push(en(A,h,M))});return S.push(m),me(S)}).then(()=>{S=[];for(const v of d)if(v.beforeEnter)if(bt(v.beforeEnter))for(const A of v.beforeEnter)S.push(en(A,h,M));else S.push(en(v.beforeEnter,h,M));return S.push(m),me(S)}).then(()=>(h.matched.forEach(v=>v.enterCallbacks={}),S=Jr(d,"beforeRouteEnter",h,M,O),S.push(m),me(S))).then(()=>{S=[];for(const v of i.list())S.push(en(v,h,M));return S.push(m),me(S)}).catch(v=>kt(v,Pe.NAVIGATION_CANCELLED)?v:Promise.reject(v))}function L(h,M,S){l.list().forEach(F=>O(()=>F(h,M,S)))}function R(h,M,S,F,Q){const d=N(h,M);if(d)return d;const m=M===Gt,v=Cn?history.state:{};S&&(F||m?r.replace(h.fullPath,ge({scroll:m&&v&&v.scroll},Q)):r.push(h.fullPath,Q)),a.value=h,ve(h,M,S,m),z()}let V;function te(){V||(V=r.listen((h,M,S)=>{if(!_e.listening)return;const F=I(h),Q=J(F,_e.currentRoute.value);if(Q){G(ge(Q,{replace:!0,force:!0}),F).catch(ds);return}u=F;const d=a.value;Cn&&Ip(Zi(d.fullPath,S.delta),Or()),w(F,d).catch(m=>kt(m,Pe.NAVIGATION_ABORTED|Pe.NAVIGATION_CANCELLED)?m:kt(m,Pe.NAVIGATION_GUARD_REDIRECT)?(G(ge(x(m.to),{force:!0}),F).then(v=>{kt(v,Pe.NAVIGATION_ABORTED|Pe.NAVIGATION_DUPLICATED)&&!S.delta&&S.type===_o.pop&&r.go(-1,!1)}).catch(ds),Promise.reject()):(S.delta&&r.go(-S.delta,!1),re(m,F,d))).then(m=>{m=m||R(F,d,!1),m&&(S.delta&&!kt(m,Pe.NAVIGATION_CANCELLED)?r.go(-S.delta,!1):S.type===_o.pop&&kt(m,Pe.NAVIGATION_ABORTED|Pe.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),L(F,d,m)}).catch(ds)}))}let de=Qn(),W=Qn(),Y;function re(h,M,S){z(h);const F=W.list();return F.length?F.forEach(Q=>Q(h,M,S)):console.error(h),Promise.reject(h)}function Ne(){return Y&&a.value!==Gt?Promise.resolve():new Promise((h,M)=>{de.add([h,M])})}function z(h){return Y||(Y=!h,te(),de.list().forEach(([M,S])=>h?S(h):M()),de.reset()),h}function ve(h,M,S,F){const{scrollBehavior:Q}=e;if(!Cn||!Q)return Promise.resolve();const d=!S&&Np(Zi(h.fullPath,0))||(F||!S)&&history.state&&history.state.scroll||null;return Hn().then(()=>Q(h,M,d)).then(m=>m&&kp(m)).catch(m=>re(m,h,M))}const Se=h=>r.go(h);let ze;const Me=new Set,_e={currentRoute:a,listening:!0,addRoute:g,removeRoute:b,clearRoutes:t.clearRoutes,hasRoute:_,getRoutes:y,resolve:I,options:e,push:D,replace:j,go:Se,back:()=>Se(-1),forward:()=>Se(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:W.add,isReady:Ne,install(h){h.component("RouterLink",rh),h.component("RouterView",Ic),h.config.globalProperties.$router=_e,Object.defineProperty(h.config.globalProperties,"$route",{enumerable:!0,get:()=>le(a)}),Cn&&!ze&&a.value===Gt&&(ze=!0,D(r.location).catch(F=>{}));const M={};for(const F in Gt)Object.defineProperty(M,F,{get:()=>a.value[F],enumerable:!0});h.provide(Tr,_e),h.provide(zo,da(M)),h.provide(vo,a);const S=h.unmount;Me.add(h),h.unmount=function(){Me.delete(h),Me.size<1&&(u=Gt,V&&V(),V=null,a.value=Gt,ze=!1,Y=!1),S()}}};function me(h){return h.reduce((M,S)=>M.then(()=>O(S)),Promise.resolve())}return _e}const ch=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1};const fl=e=>e==="";const uh=(...e)=>e.filter((t,n,s)=>!!t&&t.trim()!==""&&s.indexOf(t)===n).join(" ").trim();const dl=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const fh=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,n,s)=>s?s.toUpperCase():n.toLowerCase());const dh=e=>{const t=fh(e);return t.charAt(0).toUpperCase()+t.slice(1)};var Zn={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const ph=({name:e,iconNode:t,absoluteStrokeWidth:n,"absolute-stroke-width":s,strokeWidth:r,"stroke-width":o,size:i=Zn.width,color:l=Zn.stroke,...a},{slots:u})=>Ln("svg",{...Zn,...a,width:i,height:i,stroke:l,"stroke-width":fl(n)||fl(s)||n===!0||s===!0?Number(r||o||Zn["stroke-width"])*24/Number(i):r||o||Zn["stroke-width"],class:uh("lucide",a.class,...e?[`lucide-${dl(dh(e))}-icon`,`lucide-${dl(e)}`]:["lucide-icon"]),...!u.default&&!ch(a)&&{"aria-hidden":"true"}},[...t.map(c=>Ln(...c)),...u.default?[u.default()]:[]]);const zn=(e,t)=>(n,{slots:s,attrs:r})=>Ln(ph,{...r,...n,iconNode:t,name:e},s);const hh=zn("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const mh=zn("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);const gh=zn("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);const bh=zn("octagon-x",[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);const yh=zn("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const vh=zn("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);let So=1;var wh=class{subscribers;toasts;dismissedToasts;constructor(){this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}subscribe=e=>(this.subscribers.push(e),()=>{const t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)});publish=e=>{this.subscribers.forEach(t=>t(e))};addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]};create=e=>{const{message:t,...n}=e,s=typeof e.id=="number"||e.id&&e.id?.length>0?e.id:So++,r=this.toasts.find(i=>i.id===s),o=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(s)&&this.dismissedToasts.delete(s),r?this.toasts=this.toasts.map(i=>i.id===s?(this.publish({...i,...e,id:s,title:t}),{...i,...e,id:s,dismissible:o,title:t}):i):this.addToast({title:t,...n,dismissible:o,id:s}),s};dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(n=>n({id:t.id,dismiss:!0}))}),e);message=(e,t)=>this.create({...t,message:e,type:"default"});error=(e,t)=>this.create({...t,type:"error",message:e});success=(e,t)=>this.create({...t,type:"success",message:e});info=(e,t)=>this.create({...t,type:"info",message:e});warning=(e,t)=>this.create({...t,type:"warning",message:e});loading=(e,t)=>this.create({...t,type:"loading",message:e});promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));const s=Promise.resolve(e instanceof Function?e():e);let r=n!==void 0,o;const i=s.then(async a=>{if(o=["resolve",a],Tt(a))r=!1,this.create({id:n,type:"default",message:a});else if(Eh(a)&&!a.ok){r=!1;const c=typeof t.error=="function"?await t.error(`HTTP error! status: ${a.status}`):t.error,f=typeof t.description=="function"?await t.description(`HTTP error! status: ${a.status}`):t.description,g=typeof c=="object"&&!Tt(c)?c:{message:c||"",id:n||""};this.create({id:n,type:"error",description:f,...g})}else if(a instanceof Error){r=!1;const c=typeof t.error=="function"?await t.error(a):t.error,f=typeof t.description=="function"?await t.description(a):t.description,g=typeof c=="object"&&!Tt(c)?c:{message:c||"",id:n||""};this.create({id:n,type:"error",description:f,...g})}else if(t.success!==void 0){r=!1;const c=typeof t.success=="function"?await t.success(a):t.success,f=typeof t.description=="function"?await t.description(a):t.description,g=typeof c=="object"&&!Tt(c)?c:{message:c||"",id:n||""};this.create({id:n,type:"success",description:f,...g})}}).catch(async a=>{if(o=["reject",a],t.error!==void 0){r=!1;const u=typeof t.error=="function"?await t.error(a):t.error,c=typeof t.description=="function"?await t.description(a):t.description,p=typeof u=="object"&&!Tt(u)?u:{message:u||"",id:n||""};this.create({id:n,type:"error",description:c,...p})}}).finally(()=>{r&&(this.dismiss(n),n=void 0),t.finally?.()}),l=()=>new Promise((a,u)=>i.then(()=>o[0]==="reject"?u(o[1]):a(o[1])).catch(u));return typeof n!="string"&&typeof n!="number"?{unwrap:l}:Object.assign(n,{unwrap:l})};custom=(e,t)=>{const n=t?.id||So++,s=this.toasts.find(o=>o.id===n),r=t?.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(n)&&this.dismissedToasts.delete(n),s?this.toasts=this.toasts.map(o=>o.id===n?(this.publish({...o,component:e,dismissible:r,id:n,...t}),{...o,component:e,dismissible:r,id:n,...t}):o):this.addToast({component:e,dismissible:r,id:n,...t}),n};getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id))};const Ye=new wh;function _h(e,t){const n=t?.id||So++;return Ye.create({message:e,id:n,type:"default",...t}),n}const Eh=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",Sh=_h,xh=()=>Ye.toasts,Rh=()=>Ye.getActiveToasts(),py=Object.assign(Sh,{success:Ye.success,info:Ye.info,warning:Ye.warning,error:Ye.error,custom:Ye.custom,message:Ye.message,promise:Ye.promise,dismiss:Ye.dismiss,loading:Ye.loading},{getHistory:xh,getToasts:Rh});function Ms(e){return e.label!==void 0}const Ah=3,Nc="24px",Dc="16px",pl=4e3,Ch=356,Th=14,Oh=45,Lc=200;function Ph(){const e=Ee(!1);return Dt(()=>{const t=()=>{e.value=document.hidden};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)}),{isDocumentHidden:e}}function Wt(...e){return e.filter(Boolean).join(" ")}function kh(e){const[t,n]=e.split("-"),s=[];return t&&s.push(t),n&&s.push(n),s}function Ih(e,t){const n={};return[e,t].forEach((s,r)=>{const o=r===1,i=o?"--mobile-offset":"--offset",l=o?Dc:Nc;function a(u){["top","right","bottom","left"].forEach(c=>{n[`${i}-${c}`]=typeof u=="number"?`${u}px`:u})}typeof s=="number"||typeof s=="string"?a(s):typeof s=="object"?["top","right","bottom","left"].forEach(u=>{s[u]===void 0?n[`${i}-${u}`]=l:n[`${i}-${u}`]=typeof s[u]=="number"?`${s[u]}px`:s[u]}):a(l)}),n}const Nh=["data-rich-colors","data-styled","data-mounted","data-promise","data-swiped","data-removed","data-visible","data-y-position","data-x-position","data-index","data-front","data-swiping","data-dismissible","data-type","data-invert","data-swipe-out","data-swipe-direction","data-expanded","data-testid"],Dh=["aria-label","data-disabled","data-close-button-position"];var Lh=_n({__name:"Toast",props:{toast:{},toasts:{},index:{},swipeDirections:{},expanded:{type:Boolean},invert:{type:Boolean},heights:{},gap:{},position:{},closeButtonPosition:{},visibleToasts:{},expandByDefault:{type:Boolean},closeButton:{type:Boolean},interacting:{type:Boolean},style:{},cancelButtonStyle:{},actionButtonStyle:{},duration:{},class:{},unstyled:{type:Boolean},descriptionClass:{},loadingIcon:{},classes:{},icons:{},closeButtonAriaLabel:{},defaultRichColors:{type:Boolean}},emits:["update:heights","update:height","removeToast"],setup(e,{emit:t}){const n=e,s=t,r=Ee(null),o=Ee(null),i=Ee(!1),l=Ee(!1),a=Ee(!1),u=Ee(!1),c=Ee(!1),f=Ee(0),p=Ee(0),g=Ee(n.toast.duration||n.duration||pl),b=Ee(null),y=Ee(null),_=ue(()=>n.index===0),I=ue(()=>n.index+1<=n.visibleToasts),x=ue(()=>n.toast.type),N=ue(()=>n.toast.dismissible!==!1),D=ue(()=>n.toast.class||""),j=ue(()=>n.descriptionClass||""),J=ue(()=>{const h=n.toast.position||n.position,S=n.heights.filter(F=>F.position===h).findIndex(F=>F.toastId===n.toast.id);return S>=0?S:0}),G=ue(()=>{const h=n.toast.position||n.position;return n.heights.filter(S=>S.position===h).reduce((S,F,Q)=>Q>=J.value?S:S+F.height,0)}),T=ue(()=>J.value*n.gap+G.value||0),O=ue(()=>n.toast.closeButton??n.closeButton),w=ue(()=>n.toast.duration||n.duration||pl),L=Ee(0),R=Ee(0),V=Ee(null),te=ue(()=>n.position.split("-")),de=ue(()=>te.value[0]),W=ue(()=>te.value[1]),Y=ue(()=>typeof n.toast.title!="string"),re=ue(()=>typeof n.toast.description!="string"),{isDocumentHidden:Ne}=Ph(),z=ue(()=>x.value&&x.value==="loading");nr(()=>{i.value=!0,g.value=w.value}),Dt(async()=>{if(!i.value||!y.value)return;await Hn();const h=y.value,M=h.style.height;h.style.height="auto";const S=h.getBoundingClientRect().height;h.style.height=M,p.value=S,s("update:height",{toastId:n.toast.id,height:S,position:n.toast.position||n.position})});function ve(){l.value=!0,f.value=T.value,setTimeout(()=>{s("removeToast",n.toast)},Lc)}function Se(){if(z.value||!N.value)return{};ve(),n.toast.onDismiss?.(n.toast)}function ze(h){h.button!==2&&(z.value||!N.value||(b.value=new Date,f.value=T.value,h.target.setPointerCapture(h.pointerId),h.target.tagName!=="BUTTON"&&(a.value=!0,V.value={x:h.clientX,y:h.clientY})))}function Me(){if(u.value||!N.value)return;V.value=null;const h=Number(y.value?.style.getPropertyValue("--swipe-amount-x").replace("px","")||0),M=Number(y.value?.style.getPropertyValue("--swipe-amount-y").replace("px","")||0),S=new Date().getTime()-(b.value?.getTime()||0),F=r.value==="x"?h:M,Q=Math.abs(F)/S;if(Math.abs(F)>=Oh||Q>.11){f.value=T.value,n.toast.onDismiss?.(n.toast),r.value==="x"?o.value=h>0?"right":"left":o.value=M>0?"down":"up",ve(),u.value=!0;return}else y.value?.style.setProperty("--swipe-amount-x","0px"),y.value?.style.setProperty("--swipe-amount-y","0px");c.value=!1,a.value=!1,r.value=null}function _e(h){if(!V.value||!N.value||(window?.getSelection()?.toString()?.length??!1))return;const S=h.clientY-V.value.y,F=h.clientX-V.value.x,Q=n.swipeDirections??kh(n.position);!r.value&&(Math.abs(F)>1||Math.abs(S)>1)&&(r.value=Math.abs(F)>Math.abs(S)?"x":"y");let d={x:0,y:0};const m=v=>1/(1.5+Math.abs(v)/20);if(r.value==="y"){if(Q.includes("top")||Q.includes("bottom"))if(Q.includes("top")&&S<0||Q.includes("bottom")&&S>0)d.y=S;else{const v=S*m(S);d.y=Math.abs(v)0)d.x=F;else{const v=F*m(F);d.x=Math.abs(v)0||Math.abs(d.y)>0)&&(c.value=!0),y.value?.style.setProperty("--swipe-amount-x",`${d.x}px`),y.value?.style.setProperty("--swipe-amount-y",`${d.y}px`)}nr(()=>{if(i.value=!0,!y.value)return;const h=y.value.getBoundingClientRect().height;p.value=h;const M=[{toastId:n.toast.id,height:h,position:n.toast.position},...n.heights];s("update:heights",M)}),$o(()=>{y.value&&s("removeToast",n.toast)}),Dt(h=>{if(n.toast.promise&&x.value==="loading"||n.toast.duration===1/0||n.toast.type==="loading")return;let M;const S=()=>{if(R.value{g.value!==1/0&&(L.value=new Date().getTime(),M=setTimeout(()=>{n.toast.onAutoClose?.(n.toast),ve()},g.value))};n.expanded||n.interacting||Ne.value?S():F(),h(()=>{clearTimeout(M)})}),kn(()=>n.toast.delete,h=>{h!==void 0&&h&&(ve(),n.toast.onDismiss?.(n.toast))},{deep:!0});function me(){a.value=!1,r.value=null,V.value=null}return(h,M)=>(fe(),Ce("li",{tabindex:"0",ref_key:"toastRef",ref:y,class:nt(le(Wt)(n.class,D.value,h.classes?.toast,h.toast.classes?.toast,h.classes?.[x.value],h.toast?.classes?.[x.value])),"data-sonner-toast":"","data-rich-colors":h.toast.richColors??h.defaultRichColors,"data-styled":!(h.toast.component||h.toast?.unstyled||h.unstyled),"data-mounted":i.value,"data-promise":!!h.toast.promise,"data-swiped":c.value,"data-removed":l.value,"data-visible":I.value,"data-y-position":de.value,"data-x-position":W.value,"data-index":h.index,"data-front":_.value,"data-swiping":a.value,"data-dismissible":N.value,"data-type":x.value,"data-invert":h.toast.invert||h.invert,"data-swipe-out":u.value,"data-swipe-direction":o.value,"data-expanded":!!(h.expanded||h.expandByDefault&&i.value),"data-testid":h.toast.testId,style:tn({"--index":h.index,"--toasts-before":h.index,"--z-index":h.toasts.length-h.index,"--offset":`${l.value?f.value:T.value}px`,"--initial-height":h.expandByDefault?"auto":`${p.value}px`,...h.style,...n.toast.style}),onDragend:me,onPointerdown:ze,onPointerup:Me,onPointermove:_e},[O.value&&!h.toast.component&&x.value!=="loading"?(fe(),Ce("button",{key:0,"aria-label":h.closeButtonAriaLabel||"Close toast","data-disabled":z.value,"data-close-button":"true","data-close-button-position":h.closeButtonPosition,class:nt(le(Wt)(h.classes?.closeButton,h.toast?.classes?.closeButton)),onClick:Se},[h.icons?.close?(fe(),Ct(Jn(h.icons?.close),{key:0})):ut(h.$slots,"close-icon",{key:1})],10,Dh)):dn("v-if",!0),h.toast.component?(fe(),Ct(Jn(h.toast.component),Nn({key:1},h.toast.componentProps,{onCloseToast:Se,isPaused:h.$props.expanded||h.$props.interacting||le(Ne)}),null,16,["isPaused"])):(fe(),Ce(Te,{key:2},[x.value!=="default"||h.toast.icon||h.toast.promise?(fe(),Ce("div",{key:0,"data-icon":"",class:nt(le(Wt)(h.classes?.icon,h.toast?.classes?.icon))},[h.toast.icon?(fe(),Ct(Jn(h.toast.icon),{key:0})):(fe(),Ce(Te,{key:1},[x.value==="loading"?ut(h.$slots,"loading-icon",{key:0}):x.value==="success"?ut(h.$slots,"success-icon",{key:1}):x.value==="error"?ut(h.$slots,"error-icon",{key:2}):x.value==="warning"?ut(h.$slots,"warning-icon",{key:3}):x.value==="info"?ut(h.$slots,"info-icon",{key:4}):dn("v-if",!0)],64))],2)):dn("v-if",!0),lt("div",{"data-content":"",class:nt(le(Wt)(h.classes?.content,h.toast?.classes?.content))},[lt("div",{"data-title":"",class:nt(le(Wt)(h.classes?.title,h.toast.classes?.title))},[Y.value?(fe(),Ct(Jn(h.toast.title),ii(Nn({key:0},h.toast.componentProps)),null,16)):(fe(),Ce(Te,{key:1},[po(ns(h.toast.title),1)],64))],2),h.toast.description?(fe(),Ce("div",{key:0,"data-description":"",class:nt(le(Wt)(h.descriptionClass,j.value,h.classes?.description,h.toast.classes?.description))},[re.value?(fe(),Ct(Jn(h.toast.description),ii(Nn({key:0},h.toast.componentProps)),null,16)):(fe(),Ce(Te,{key:1},[po(ns(h.toast.description),1)],64))],2)):dn("v-if",!0)],2),h.toast.cancel?(fe(),Ce("button",{key:1,style:tn(h.toast.cancelButtonStyle||h.cancelButtonStyle),class:nt(le(Wt)(h.classes?.cancelButton,h.toast.classes?.cancelButton)),"data-button":"","data-cancel":"",onClick:M[0]||(M[0]=S=>{le(Ms)(h.toast.cancel)&&N.value&&(h.toast.cancel.onClick?.(S),ve())})},ns(le(Ms)(h.toast.cancel)?h.toast.cancel?.label:h.toast.cancel),7)):dn("v-if",!0),h.toast.action?(fe(),Ce("button",{key:2,style:tn(h.toast.actionButtonStyle||h.actionButtonStyle),class:nt(le(Wt)(h.classes?.actionButton,h.toast.classes?.actionButton)),"data-button":"","data-action":"",onClick:M[1]||(M[1]=S=>{le(Ms)(h.toast.action)&&(h.toast.action.onClick?.(S),!S.defaultPrevented&&ve())})},ns(le(Ms)(h.toast.action)?h.toast.action?.label:h.toast.action),7)):dn("v-if",!0)],64))],46,Nh))}}),Mh=Lh,As=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const Bh={},Fh={xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stoke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"};function $h(e,t){return fe(),Ce("svg",Fh,t[0]||(t[0]=[lt("line",{x1:"18",y1:"6",x2:"6",y2:"18"},null,-1),lt("line",{x1:"6",y1:"6",x2:"18",y2:"18"},null,-1)]))}var jh=As(Bh,[["render",$h]]);const Uh=["data-visible"],Vh={class:"sonner-spinner"};var Hh=_n({__name:"Loader",props:{visible:{type:Boolean}},setup(e){const t=Array(12).fill(0);return(n,s)=>(fe(),Ce("div",{class:"sonner-loading-wrapper","data-visible":n.visible},[lt("div",Vh,[(fe(!0),Ce(Te,null,lo(le(t),r=>(fe(),Ce("div",{key:`spinner-bar-${r}`,class:"sonner-loading-bar"}))),128))])],8,Uh))}}),zh=Hh;const qh={},Gh={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"};function Wh(e,t){return fe(),Ce("svg",Gh,t[0]||(t[0]=[lt("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z","clip-rule":"evenodd"},null,-1)]))}var Kh=As(qh,[["render",Wh]]);const Jh={},Xh={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"};function Yh(e,t){return fe(),Ce("svg",Xh,t[0]||(t[0]=[lt("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z","clip-rule":"evenodd"},null,-1)]))}var Qh=As(Jh,[["render",Yh]]);const Zh={},em={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"};function tm(e,t){return fe(),Ce("svg",em,t[0]||(t[0]=[lt("path",{"fill-rule":"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"},null,-1)]))}var nm=As(Zh,[["render",tm]]);const sm={},rm={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"};function om(e,t){return fe(),Ce("svg",rm,t[0]||(t[0]=[lt("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z","clip-rule":"evenodd"},null,-1)]))}var im=As(sm,[["render",om]]);const lm=["aria-label"],am=["data-sonner-theme","dir","data-theme","data-rich-colors","data-y-position","data-x-position"],cm=typeof window<"u"&&typeof document<"u";function um(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}var fm=_n({name:"Toaster",inheritAttrs:!1,__name:"Toaster",props:{id:{},invert:{type:Boolean,default:!1},theme:{default:"light"},position:{default:"bottom-right"},closeButtonPosition:{default:"top-left"},hotkey:{default:()=>["altKey","KeyT"]},richColors:{type:Boolean,default:!1},expand:{type:Boolean,default:!1},duration:{},gap:{default:Th},visibleToasts:{default:Ah},closeButton:{type:Boolean,default:!1},toastOptions:{default:()=>({})},class:{default:""},style:{},offset:{default:Nc},mobileOffset:{default:Dc},dir:{default:"auto"},swipeDirections:{},icons:{},containerAriaLabel:{default:"Notifications"}},setup(e){const t=e,n=If(),s=Ee([]),r=ue(()=>t.id?s.value.filter(w=>w.toasterId===t.id):s.value.filter(w=>!w.toasterId));function o(w,L){return r.value.filter(R=>!R.position&&L===0||R.position===w)}const i=ue(()=>{const w=r.value.filter(L=>L.position).map(L=>L.position);return w.length>0?Array.from(new Set([t.position].concat(w))):[t.position]}),l=ue(()=>{const w={};return i.value.forEach(L=>{w[L]=s.value.filter(R=>R.position===L)}),w}),a=Ee([]),u=Ee({}),c=Ee(!1);Dt(()=>{i.value.forEach(w=>{w in u.value||(u.value[w]=!1)})});const f=Ee(t.theme!=="system"?t.theme:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),p=Ee(null),g=Ee(null),b=Ee(!1),y=t.hotkey.join("+").replace(/Key/g,"").replace(/Digit/g,"");function _(w){s.value.find(L=>L.id===w.id)?.delete||Ye.dismiss(w.id),s.value=s.value.filter(({id:L})=>L!==w.id),setTimeout(()=>{s.value.find(L=>L.id===w.id)||(a.value=a.value.filter(L=>L.toastId!==w.id))},Lc+50)}function I(w){b.value&&!w.currentTarget?.contains?.(w.relatedTarget)&&(b.value=!1,g.value&&(g.value.focus({preventScroll:!0}),g.value=null))}function x(w){w.target instanceof HTMLElement&&w.target.dataset.dismissible==="false"||b.value||(b.value=!0,g.value=w.relatedTarget)}function N(w){w.target&&w.target instanceof HTMLElement&&w.target.dataset.dismissible==="false"||(c.value=!0)}Dt(w=>{const L=Ye.subscribe(R=>{if(R.dismiss){requestAnimationFrame(()=>{s.value=s.value.map(V=>V.id===R.id?{...V,delete:!0}:V)});return}Hn(()=>{const V=s.value.findIndex(te=>te.id===R.id);V!==-1?s.value=[...s.value.slice(0,V),{...s.value[V],...R},...s.value.slice(V+1)]:s.value=[R,...s.value]})});w(L)}),Dt(w=>{if(typeof window>"u")return;if(t.theme!=="system"){f.value=t.theme;return}const L=window.matchMedia("(prefers-color-scheme: dark)"),R=te=>{f.value=te?"dark":"light"};R(L.matches);const V=te=>{R(te.matches)};try{L.addEventListener("change",V)}catch{L.addListener(V)}w(()=>{try{L.removeEventListener("change",V)}catch{L.removeListener(V)}})}),Dt(()=>{p.value&&g.value&&(g.value.focus({preventScroll:!0}),g.value=null,b.value=!1)}),Dt(()=>{s.value.length<=1&&Object.keys(u.value).forEach(w=>{u.value[w]=!1})}),Dt(w=>{function L(R){const V=t.hotkey.every(W=>R[W]||R.code===W),te=Array.isArray(p.value)?p.value[0]:p.value;V&&(i.value.forEach(W=>{u.value[W]=!0}),te?.focus());const de=document.activeElement===p.value||te?.contains(document.activeElement);R.code==="Escape"&&de&&i.value.forEach(W=>{u.value[W]=!1})}cm&&(document.addEventListener("keydown",L),w(()=>{document.removeEventListener("keydown",L)}))});function D(w){const L=w.currentTarget,R=L.getAttribute("data-y-position")+"-"+L.getAttribute("data-x-position");u.value[R]=!0}function j(w){if(!c.value){const L=w.currentTarget,R=L.getAttribute("data-y-position")+"-"+L.getAttribute("data-x-position");u.value[R]=!1}}function J(){Object.keys(u.value).forEach(w=>{u.value[w]=!1})}function G(){c.value=!1}function T(w){a.value=w}function O(w){const L=a.value.findIndex(R=>R.toastId===w.toastId);if(L!==-1)a.value[L]=w;else{const R=a.value.findIndex(V=>V.position===w.position);R!==-1?a.value.splice(R,0,w):a.value.unshift(w)}}return(w,L)=>(fe(),Ce(Te,null,[dn(" Remove item from normal navigation flow, only available via hotkey "),lt("section",{"aria-label":`${w.containerAriaLabel} ${le(y)}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false"},[(fe(!0),Ce(Te,null,lo(i.value,(R,V)=>(fe(),Ce("ol",Nn({key:R,ref_for:!0,ref_key:"listRef",ref:p,"data-sonner-toaster":"","data-sonner-theme":f.value,class:t.class,dir:w.dir==="auto"?um():w.dir,tabIndex:-1,"data-theme":w.theme,"data-rich-colors":w.richColors,"data-y-position":R.split("-")[0],"data-x-position":R.split("-")[1],style:{"--front-toast-height":`${a.value[0]?.height||0}px`,"--width":`${le(Ch)}px`,"--gap":`${w.gap}px`,...w.style,...le(n).style,...le(Ih)(w.offset,w.mobileOffset)}},{ref_for:!0},w.$attrs,{onBlur:I,onFocus:x,onMouseenter:D,onMousemove:D,onMouseleave:j,onDragend:J,onPointerdown:N,onPointerup:G}),[(fe(!0),Ce(Te,null,lo(o(R,V),(te,de)=>(fe(),Ct(Mh,{key:te.id,heights:a.value,icons:w.icons,index:de,toast:te,defaultRichColors:w.richColors,duration:w.toastOptions?.duration??w.duration,class:nt(w.toastOptions?.class??""),descriptionClass:w.toastOptions?.descriptionClass,invert:w.invert,visibleToasts:w.visibleToasts,closeButton:w.toastOptions?.closeButton??w.closeButton,interacting:c.value,position:R,closeButtonPosition:w.toastOptions?.closeButtonPosition??w.closeButtonPosition,style:tn(w.toastOptions?.style),unstyled:w.toastOptions?.unstyled,classes:w.toastOptions?.classes,cancelButtonStyle:w.toastOptions?.cancelButtonStyle,actionButtonStyle:w.toastOptions?.actionButtonStyle,"close-button-aria-label":w.toastOptions?.closeButtonAriaLabel,toasts:l.value[R],expandByDefault:w.expand,gap:w.gap,expanded:u.value[R]||!1,swipeDirections:t.swipeDirections,"onUpdate:heights":T,"onUpdate:height":O,onRemoveToast:_},{"close-icon":st(()=>[ut(w.$slots,"close-icon",{},()=>[ye(jh)])]),"loading-icon":st(()=>[ut(w.$slots,"loading-icon",{},()=>[ye(zh,{visible:te.type==="loading"},null,8,["visible"])])]),"success-icon":st(()=>[ut(w.$slots,"success-icon",{},()=>[ye(Kh)])]),"error-icon":st(()=>[ut(w.$slots,"error-icon",{},()=>[ye(im)])]),"warning-icon":st(()=>[ut(w.$slots,"warning-icon",{},()=>[ye(nm)])]),"info-icon":st(()=>[ut(w.$slots,"info-icon",{},()=>[ye(Qh)])]),_:2},1032,["heights","icons","index","toast","defaultRichColors","duration","class","descriptionClass","invert","visibleToasts","closeButton","interacting","position","closeButtonPosition","style","unstyled","classes","cancelButtonStyle","actionButtonStyle","close-button-aria-label","toasts","expandByDefault","gap","expanded","swipeDirections"]))),128))],16,am))),128))],8,lm)],2112))}}),dm=fm;function Mc(e){var t,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t{const n=new Array(e.length+t.length);for(let s=0;s({classGroupId:e,validator:t}),Bc=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),ar="-",hl=[],gm="arbitrary..",bm=e=>{const t=vm(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:i=>{if(i.startsWith("[")&&i.endsWith("]"))return ym(i);const l=i.split(ar),a=l[0]===""&&l.length>1?1:0;return Fc(l,a,t)},getConflictingClassGroupIds:(i,l)=>{if(l){const a=s[i],u=n[i];return a?u?hm(u,a):a:u||hl}return n[i]||hl}}},Fc=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const r=e[t],o=n.nextPart.get(r);if(o){const u=Fc(e,t+1,o);if(u)return u}const i=n.validators;if(i===null)return;const l=t===0?e.join(ar):e.slice(t).join(ar),a=i.length;for(let u=0;ue.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),s=t.slice(0,n);return s?gm+s:void 0})(),vm=e=>{const{theme:t,classGroups:n}=e;return wm(n,t)},wm=(e,t)=>{const n=Bc();for(const s in e){const r=e[s];Go(r,n,s,t)}return n},Go=(e,t,n,s)=>{const r=e.length;for(let o=0;o{if(typeof e=="string"){Em(e,t,n);return}if(typeof e=="function"){Sm(e,t,n,s);return}xm(e,t,n,s)},Em=(e,t,n)=>{const s=e===""?t:$c(t,e);s.classGroupId=n},Sm=(e,t,n,s)=>{if(Rm(e)){Go(e(s),t,n,s);return}t.validators===null&&(t.validators=[]),t.validators.push(mm(n,e))},xm=(e,t,n,s)=>{const r=Object.entries(e),o=r.length;for(let i=0;i{let n=e;const s=t.split(ar),r=s.length;for(let o=0;o"isThemeGetter"in e&&e.isThemeGetter===!0,Am=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),s=Object.create(null);const r=(o,i)=>{n[o]=i,t++,t>e&&(t=0,s=n,n=Object.create(null))};return{get(o){let i=n[o];if(i!==void 0)return i;if((i=s[o])!==void 0)return r(o,i),i},set(o,i){o in n?n[o]=i:r(o,i)}}},xo="!",ml=":",Cm=[],gl=(e,t,n,s,r)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:s,isExternal:r}),Tm=e=>{const{prefix:t,experimentalParseClassName:n}=e;let s=r=>{const o=[];let i=0,l=0,a=0,u;const c=r.length;for(let y=0;ya?u-a:void 0;return gl(o,g,p,b)};if(t){const r=t+ml,o=s;s=i=>i.startsWith(r)?o(i.slice(r.length)):gl(Cm,!1,i,void 0,!0)}if(n){const r=s;s=o=>n({className:o,parseClassName:r})}return s},Om=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,s)=>{t.set(n,1e6+s)}),n=>{const s=[];let r=[];for(let o=0;o0&&(r.sort(),s.push(...r),r=[]),s.push(i)):r.push(i)}return r.length>0&&(r.sort(),s.push(...r)),s}},Pm=e=>({cache:Am(e.cacheSize),parseClassName:Tm(e),sortModifiers:Om(e),...bm(e)}),km=/\s+/,Im=(e,t)=>{const{parseClassName:n,getClassGroupId:s,getConflictingClassGroupIds:r,sortModifiers:o}=t,i=[],l=e.trim().split(km);let a="";for(let u=l.length-1;u>=0;u-=1){const c=l[u],{isExternal:f,modifiers:p,hasImportantModifier:g,baseClassName:b,maybePostfixModifierPosition:y}=n(c);if(f){a=c+(a.length>0?" "+a:a);continue}let _=!!y,I=s(_?b.substring(0,y):b);if(!I){if(!_){a=c+(a.length>0?" "+a:a);continue}if(I=s(b),!I){a=c+(a.length>0?" "+a:a);continue}_=!1}const x=p.length===0?"":p.length===1?p[0]:o(p).join(":"),N=g?x+xo:x,D=N+I;if(i.indexOf(D)>-1)continue;i.push(D);const j=r(I,_);for(let J=0;J0?" "+a:a)}return a},Nm=(...e)=>{let t=0,n,s,r="";for(;t{if(typeof e=="string")return e;let t,n="";for(let s=0;s{let n,s,r,o;const i=a=>{const u=t.reduce((c,f)=>f(c),e());return n=Pm(u),s=n.cache.get,r=n.cache.set,o=l,l(a)},l=a=>{const u=s(a);if(u)return u;const c=Im(a,n);return r(a,c),c};return o=i,(...a)=>o(Nm(...a))},Lm=[],De=e=>{const t=n=>n[e]||Lm;return t.isThemeGetter=!0,t},Uc=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Vc=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Mm=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Bm=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Fm=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,$m=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,jm=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Um=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Kt=e=>Mm.test(e),ie=e=>!!e&&!Number.isNaN(Number(e)),Jt=e=>!!e&&Number.isInteger(Number(e)),Xr=e=>e.endsWith("%")&&ie(e.slice(0,-1)),It=e=>Bm.test(e),Hc=()=>!0,Vm=e=>Fm.test(e)&&!$m.test(e),Wo=()=>!1,Hm=e=>jm.test(e),zm=e=>Um.test(e),qm=e=>!q(e)&&!K(e),Gm=e=>on(e,Gc,Wo),q=e=>Uc.test(e),un=e=>on(e,Wc,Vm),bl=e=>on(e,eg,ie),Wm=e=>on(e,Jc,Hc),Km=e=>on(e,Kc,Wo),yl=e=>on(e,zc,Wo),Jm=e=>on(e,qc,zm),Bs=e=>on(e,Xc,Hm),K=e=>Vc.test(e),es=e=>Sn(e,Wc),Xm=e=>Sn(e,Kc),vl=e=>Sn(e,zc),Ym=e=>Sn(e,Gc),Qm=e=>Sn(e,qc),Fs=e=>Sn(e,Xc,!0),Zm=e=>Sn(e,Jc,!0),on=(e,t,n)=>{const s=Uc.exec(e);return s?s[1]?t(s[1]):n(s[2]):!1},Sn=(e,t,n=!1)=>{const s=Vc.exec(e);return s?s[1]?t(s[1]):n:!1},zc=e=>e==="position"||e==="percentage",qc=e=>e==="image"||e==="url",Gc=e=>e==="length"||e==="size"||e==="bg-size",Wc=e=>e==="length",eg=e=>e==="number",Kc=e=>e==="family-name",Jc=e=>e==="number"||e==="weight",Xc=e=>e==="shadow",tg=()=>{const e=De("color"),t=De("font"),n=De("text"),s=De("font-weight"),r=De("tracking"),o=De("leading"),i=De("breakpoint"),l=De("container"),a=De("spacing"),u=De("radius"),c=De("shadow"),f=De("inset-shadow"),p=De("text-shadow"),g=De("drop-shadow"),b=De("blur"),y=De("perspective"),_=De("aspect"),I=De("ease"),x=De("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],D=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],j=()=>[...D(),K,q],J=()=>["auto","hidden","clip","visible","scroll"],G=()=>["auto","contain","none"],T=()=>[K,q,a],O=()=>[Kt,"full","auto",...T()],w=()=>[Jt,"none","subgrid",K,q],L=()=>["auto",{span:["full",Jt,K,q]},Jt,K,q],R=()=>[Jt,"auto",K,q],V=()=>["auto","min","max","fr",K,q],te=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],de=()=>["start","end","center","stretch","center-safe","end-safe"],W=()=>["auto",...T()],Y=()=>[Kt,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...T()],re=()=>[Kt,"screen","full","dvw","lvw","svw","min","max","fit",...T()],Ne=()=>[Kt,"screen","full","lh","dvh","lvh","svh","min","max","fit",...T()],z=()=>[e,K,q],ve=()=>[...D(),vl,yl,{position:[K,q]}],Se=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ze=()=>["auto","cover","contain",Ym,Gm,{size:[K,q]}],Me=()=>[Xr,es,un],_e=()=>["","none","full",u,K,q],me=()=>["",ie,es,un],h=()=>["solid","dashed","dotted","double"],M=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],S=()=>[ie,Xr,vl,yl],F=()=>["","none",b,K,q],Q=()=>["none",ie,K,q],d=()=>["none",ie,K,q],m=()=>[ie,K,q],v=()=>[Kt,"full",...T()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[It],breakpoint:[It],color:[Hc],container:[It],"drop-shadow":[It],ease:["in","out","in-out"],font:[qm],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[It],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[It],shadow:[It],spacing:["px",ie],text:[It],"text-shadow":[It],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Kt,q,K,_]}],container:["container"],columns:[{columns:[ie,q,K,l]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:j()}],overflow:[{overflow:J()}],"overflow-x":[{"overflow-x":J()}],"overflow-y":[{"overflow-y":J()}],overscroll:[{overscroll:G()}],"overscroll-x":[{"overscroll-x":G()}],"overscroll-y":[{"overscroll-y":G()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:O()}],"inset-x":[{"inset-x":O()}],"inset-y":[{"inset-y":O()}],start:[{"inset-s":O(),start:O()}],end:[{"inset-e":O(),end:O()}],"inset-bs":[{"inset-bs":O()}],"inset-be":[{"inset-be":O()}],top:[{top:O()}],right:[{right:O()}],bottom:[{bottom:O()}],left:[{left:O()}],visibility:["visible","invisible","collapse"],z:[{z:[Jt,"auto",K,q]}],basis:[{basis:[Kt,"full","auto",l,...T()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ie,Kt,"auto","initial","none",q]}],grow:[{grow:["",ie,K,q]}],shrink:[{shrink:["",ie,K,q]}],order:[{order:[Jt,"first","last","none",K,q]}],"grid-cols":[{"grid-cols":w()}],"col-start-end":[{col:L()}],"col-start":[{"col-start":R()}],"col-end":[{"col-end":R()}],"grid-rows":[{"grid-rows":w()}],"row-start-end":[{row:L()}],"row-start":[{"row-start":R()}],"row-end":[{"row-end":R()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":V()}],"auto-rows":[{"auto-rows":V()}],gap:[{gap:T()}],"gap-x":[{"gap-x":T()}],"gap-y":[{"gap-y":T()}],"justify-content":[{justify:[...te(),"normal"]}],"justify-items":[{"justify-items":[...de(),"normal"]}],"justify-self":[{"justify-self":["auto",...de()]}],"align-content":[{content:["normal",...te()]}],"align-items":[{items:[...de(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...de(),{baseline:["","last"]}]}],"place-content":[{"place-content":te()}],"place-items":[{"place-items":[...de(),"baseline"]}],"place-self":[{"place-self":["auto",...de()]}],p:[{p:T()}],px:[{px:T()}],py:[{py:T()}],ps:[{ps:T()}],pe:[{pe:T()}],pbs:[{pbs:T()}],pbe:[{pbe:T()}],pt:[{pt:T()}],pr:[{pr:T()}],pb:[{pb:T()}],pl:[{pl:T()}],m:[{m:W()}],mx:[{mx:W()}],my:[{my:W()}],ms:[{ms:W()}],me:[{me:W()}],mbs:[{mbs:W()}],mbe:[{mbe:W()}],mt:[{mt:W()}],mr:[{mr:W()}],mb:[{mb:W()}],ml:[{ml:W()}],"space-x":[{"space-x":T()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":T()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],"inline-size":[{inline:["auto",...re()]}],"min-inline-size":[{"min-inline":["auto",...re()]}],"max-inline-size":[{"max-inline":["none",...re()]}],"block-size":[{block:["auto",...Ne()]}],"min-block-size":[{"min-block":["auto",...Ne()]}],"max-block-size":[{"max-block":["none",...Ne()]}],w:[{w:[l,"screen",...Y()]}],"min-w":[{"min-w":[l,"screen","none",...Y()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[i]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",n,es,un]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,Zm,Wm]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Xr,q]}],"font-family":[{font:[Xm,Km,t]}],"font-features":[{"font-features":[q]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,K,q]}],"line-clamp":[{"line-clamp":[ie,"none",K,bl]}],leading:[{leading:[o,...T()]}],"list-image":[{"list-image":["none",K,q]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",K,q]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:z()}],"text-color":[{text:z()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...h(),"wavy"]}],"text-decoration-thickness":[{decoration:[ie,"from-font","auto",K,un]}],"text-decoration-color":[{decoration:z()}],"underline-offset":[{"underline-offset":[ie,"auto",K,q]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:T()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",K,q]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",K,q]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ve()}],"bg-repeat":[{bg:Se()}],"bg-size":[{bg:ze()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Jt,K,q],radial:["",K,q],conic:[Jt,K,q]},Qm,Jm]}],"bg-color":[{bg:z()}],"gradient-from-pos":[{from:Me()}],"gradient-via-pos":[{via:Me()}],"gradient-to-pos":[{to:Me()}],"gradient-from":[{from:z()}],"gradient-via":[{via:z()}],"gradient-to":[{to:z()}],rounded:[{rounded:_e()}],"rounded-s":[{"rounded-s":_e()}],"rounded-e":[{"rounded-e":_e()}],"rounded-t":[{"rounded-t":_e()}],"rounded-r":[{"rounded-r":_e()}],"rounded-b":[{"rounded-b":_e()}],"rounded-l":[{"rounded-l":_e()}],"rounded-ss":[{"rounded-ss":_e()}],"rounded-se":[{"rounded-se":_e()}],"rounded-ee":[{"rounded-ee":_e()}],"rounded-es":[{"rounded-es":_e()}],"rounded-tl":[{"rounded-tl":_e()}],"rounded-tr":[{"rounded-tr":_e()}],"rounded-br":[{"rounded-br":_e()}],"rounded-bl":[{"rounded-bl":_e()}],"border-w":[{border:me()}],"border-w-x":[{"border-x":me()}],"border-w-y":[{"border-y":me()}],"border-w-s":[{"border-s":me()}],"border-w-e":[{"border-e":me()}],"border-w-bs":[{"border-bs":me()}],"border-w-be":[{"border-be":me()}],"border-w-t":[{"border-t":me()}],"border-w-r":[{"border-r":me()}],"border-w-b":[{"border-b":me()}],"border-w-l":[{"border-l":me()}],"divide-x":[{"divide-x":me()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":me()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...h(),"hidden","none"]}],"divide-style":[{divide:[...h(),"hidden","none"]}],"border-color":[{border:z()}],"border-color-x":[{"border-x":z()}],"border-color-y":[{"border-y":z()}],"border-color-s":[{"border-s":z()}],"border-color-e":[{"border-e":z()}],"border-color-bs":[{"border-bs":z()}],"border-color-be":[{"border-be":z()}],"border-color-t":[{"border-t":z()}],"border-color-r":[{"border-r":z()}],"border-color-b":[{"border-b":z()}],"border-color-l":[{"border-l":z()}],"divide-color":[{divide:z()}],"outline-style":[{outline:[...h(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ie,K,q]}],"outline-w":[{outline:["",ie,es,un]}],"outline-color":[{outline:z()}],shadow:[{shadow:["","none",c,Fs,Bs]}],"shadow-color":[{shadow:z()}],"inset-shadow":[{"inset-shadow":["none",f,Fs,Bs]}],"inset-shadow-color":[{"inset-shadow":z()}],"ring-w":[{ring:me()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:z()}],"ring-offset-w":[{"ring-offset":[ie,un]}],"ring-offset-color":[{"ring-offset":z()}],"inset-ring-w":[{"inset-ring":me()}],"inset-ring-color":[{"inset-ring":z()}],"text-shadow":[{"text-shadow":["none",p,Fs,Bs]}],"text-shadow-color":[{"text-shadow":z()}],opacity:[{opacity:[ie,K,q]}],"mix-blend":[{"mix-blend":[...M(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":M()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[ie]}],"mask-image-linear-from-pos":[{"mask-linear-from":S()}],"mask-image-linear-to-pos":[{"mask-linear-to":S()}],"mask-image-linear-from-color":[{"mask-linear-from":z()}],"mask-image-linear-to-color":[{"mask-linear-to":z()}],"mask-image-t-from-pos":[{"mask-t-from":S()}],"mask-image-t-to-pos":[{"mask-t-to":S()}],"mask-image-t-from-color":[{"mask-t-from":z()}],"mask-image-t-to-color":[{"mask-t-to":z()}],"mask-image-r-from-pos":[{"mask-r-from":S()}],"mask-image-r-to-pos":[{"mask-r-to":S()}],"mask-image-r-from-color":[{"mask-r-from":z()}],"mask-image-r-to-color":[{"mask-r-to":z()}],"mask-image-b-from-pos":[{"mask-b-from":S()}],"mask-image-b-to-pos":[{"mask-b-to":S()}],"mask-image-b-from-color":[{"mask-b-from":z()}],"mask-image-b-to-color":[{"mask-b-to":z()}],"mask-image-l-from-pos":[{"mask-l-from":S()}],"mask-image-l-to-pos":[{"mask-l-to":S()}],"mask-image-l-from-color":[{"mask-l-from":z()}],"mask-image-l-to-color":[{"mask-l-to":z()}],"mask-image-x-from-pos":[{"mask-x-from":S()}],"mask-image-x-to-pos":[{"mask-x-to":S()}],"mask-image-x-from-color":[{"mask-x-from":z()}],"mask-image-x-to-color":[{"mask-x-to":z()}],"mask-image-y-from-pos":[{"mask-y-from":S()}],"mask-image-y-to-pos":[{"mask-y-to":S()}],"mask-image-y-from-color":[{"mask-y-from":z()}],"mask-image-y-to-color":[{"mask-y-to":z()}],"mask-image-radial":[{"mask-radial":[K,q]}],"mask-image-radial-from-pos":[{"mask-radial-from":S()}],"mask-image-radial-to-pos":[{"mask-radial-to":S()}],"mask-image-radial-from-color":[{"mask-radial-from":z()}],"mask-image-radial-to-color":[{"mask-radial-to":z()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":D()}],"mask-image-conic-pos":[{"mask-conic":[ie]}],"mask-image-conic-from-pos":[{"mask-conic-from":S()}],"mask-image-conic-to-pos":[{"mask-conic-to":S()}],"mask-image-conic-from-color":[{"mask-conic-from":z()}],"mask-image-conic-to-color":[{"mask-conic-to":z()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ve()}],"mask-repeat":[{mask:Se()}],"mask-size":[{mask:ze()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",K,q]}],filter:[{filter:["","none",K,q]}],blur:[{blur:F()}],brightness:[{brightness:[ie,K,q]}],contrast:[{contrast:[ie,K,q]}],"drop-shadow":[{"drop-shadow":["","none",g,Fs,Bs]}],"drop-shadow-color":[{"drop-shadow":z()}],grayscale:[{grayscale:["",ie,K,q]}],"hue-rotate":[{"hue-rotate":[ie,K,q]}],invert:[{invert:["",ie,K,q]}],saturate:[{saturate:[ie,K,q]}],sepia:[{sepia:["",ie,K,q]}],"backdrop-filter":[{"backdrop-filter":["","none",K,q]}],"backdrop-blur":[{"backdrop-blur":F()}],"backdrop-brightness":[{"backdrop-brightness":[ie,K,q]}],"backdrop-contrast":[{"backdrop-contrast":[ie,K,q]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ie,K,q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ie,K,q]}],"backdrop-invert":[{"backdrop-invert":["",ie,K,q]}],"backdrop-opacity":[{"backdrop-opacity":[ie,K,q]}],"backdrop-saturate":[{"backdrop-saturate":[ie,K,q]}],"backdrop-sepia":[{"backdrop-sepia":["",ie,K,q]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":T()}],"border-spacing-x":[{"border-spacing-x":T()}],"border-spacing-y":[{"border-spacing-y":T()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",K,q]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ie,"initial",K,q]}],ease:[{ease:["linear","initial",I,K,q]}],delay:[{delay:[ie,K,q]}],animate:[{animate:["none",x,K,q]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,K,q]}],"perspective-origin":[{"perspective-origin":j()}],rotate:[{rotate:Q()}],"rotate-x":[{"rotate-x":Q()}],"rotate-y":[{"rotate-y":Q()}],"rotate-z":[{"rotate-z":Q()}],scale:[{scale:d()}],"scale-x":[{"scale-x":d()}],"scale-y":[{"scale-y":d()}],"scale-z":[{"scale-z":d()}],"scale-3d":["scale-3d"],skew:[{skew:m()}],"skew-x":[{"skew-x":m()}],"skew-y":[{"skew-y":m()}],transform:[{transform:[K,q,"","none","gpu","cpu"]}],"transform-origin":[{origin:j()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:v()}],"translate-x":[{"translate-x":v()}],"translate-y":[{"translate-y":v()}],"translate-z":[{"translate-z":v()}],"translate-none":["translate-none"],accent:[{accent:z()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:z()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",K,q]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":T()}],"scroll-mx":[{"scroll-mx":T()}],"scroll-my":[{"scroll-my":T()}],"scroll-ms":[{"scroll-ms":T()}],"scroll-me":[{"scroll-me":T()}],"scroll-mbs":[{"scroll-mbs":T()}],"scroll-mbe":[{"scroll-mbe":T()}],"scroll-mt":[{"scroll-mt":T()}],"scroll-mr":[{"scroll-mr":T()}],"scroll-mb":[{"scroll-mb":T()}],"scroll-ml":[{"scroll-ml":T()}],"scroll-p":[{"scroll-p":T()}],"scroll-px":[{"scroll-px":T()}],"scroll-py":[{"scroll-py":T()}],"scroll-ps":[{"scroll-ps":T()}],"scroll-pe":[{"scroll-pe":T()}],"scroll-pbs":[{"scroll-pbs":T()}],"scroll-pbe":[{"scroll-pbe":T()}],"scroll-pt":[{"scroll-pt":T()}],"scroll-pr":[{"scroll-pr":T()}],"scroll-pb":[{"scroll-pb":T()}],"scroll-pl":[{"scroll-pl":T()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",K,q]}],fill:[{fill:["none",...z()]}],"stroke-w":[{stroke:[ie,es,un,bl]}],stroke:[{stroke:["none",...z()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},ng=Dm(tg);function sg(...e){return ng(pm(e))}const rg=_n({__name:"Sonner",props:{id:{},invert:{type:Boolean},theme:{},position:{},closeButtonPosition:{},hotkey:{},richColors:{type:Boolean},expand:{type:Boolean},duration:{},gap:{},visibleToasts:{},closeButton:{type:Boolean},toastOptions:{},class:{},style:{},offset:{},mobileOffset:{},dir:{},swipeDirections:{},icons:{},containerAriaLabel:{}},setup(e){const t=e;return(n,s)=>(fe(),Ct(le(dm),Nn({class:le(sg)("toaster group",t.class),style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"}},t),{"success-icon":st(()=>[ye(le(hh),{class:"size-4"})]),"info-icon":st(()=>[ye(le(mh),{class:"size-4"})]),"warning-icon":st(()=>[ye(le(yh),{class:"size-4"})]),"error-icon":st(()=>[ye(le(bh),{class:"size-4"})]),"loading-icon":st(()=>[lt("div",null,[ye(le(gh),{class:"size-4 animate-spin"})])]),"close-icon":st(()=>[ye(le(vh),{class:"size-4"})]),_:1},16,["class"]))}}),og=_n({__name:"App",setup(e){return(t,n)=>(fe(),Ce(Te,null,[ye(le(rg),{position:"top-center",duration:2e3,"rich-colors":""}),ye(le(Ic))],64))}}),ig="modulepreload",lg=function(e){return"/"+e},wl={},Xe=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let a=function(u){return Promise.all(u.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=i?.nonce||i?.getAttribute("nonce");r=a(n.map(u=>{if(u=lg(u),u in wl)return;wl[u]=!0;const c=u.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${f}`))return;const p=document.createElement("link");if(p.rel=c?"stylesheet":ig,c||(p.as="script"),p.crossOrigin="",p.href=u,l&&p.setAttribute("nonce",l),document.head.appendChild(p),c)return new Promise((g,b)=>{p.addEventListener("load",g),p.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${u}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})};function Yc(e,t){return function(){return e.apply(t,arguments)}}const{toString:ag}=Object.prototype,{getPrototypeOf:Ko}=Object,{iterator:Pr,toStringTag:Qc}=Symbol,kr=(e=>t=>{const n=ag.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),yt=e=>(e=e.toLowerCase(),t=>kr(t)===e),Ir=e=>t=>typeof t===e,{isArray:qn}=Array,jn=Ir("undefined");function Cs(e){return e!==null&&!jn(e)&&e.constructor!==null&&!jn(e.constructor)&&Ze(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Zc=yt("ArrayBuffer");function cg(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Zc(e.buffer),t}const ug=Ir("string"),Ze=Ir("function"),eu=Ir("number"),Ts=e=>e!==null&&typeof e=="object",fg=e=>e===!0||e===!1,Ks=e=>{if(kr(e)!=="object")return!1;const t=Ko(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Qc in e)&&!(Pr in e)},dg=e=>{if(!Ts(e)||Cs(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},pg=yt("Date"),hg=yt("File"),mg=e=>!!(e&&typeof e.uri<"u"),gg=e=>e&&typeof e.getParts<"u",bg=yt("Blob"),yg=yt("FileList"),vg=e=>Ts(e)&&Ze(e.pipe);function wg(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const _l=wg(),El=typeof _l.FormData<"u"?_l.FormData:void 0,_g=e=>{let t;return e&&(El&&e instanceof El||Ze(e.append)&&((t=kr(e))==="formdata"||t==="object"&&Ze(e.toString)&&e.toString()==="[object FormData]"))},Eg=yt("URLSearchParams"),[Sg,xg,Rg,Ag]=["ReadableStream","Request","Response","Headers"].map(yt),Cg=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Os(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let s,r;if(typeof e!="object"&&(e=[e]),qn(e))for(s=0,r=e.length;s0;)if(r=n[s],t===r.toLowerCase())return r;return null}const mn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,nu=e=>!jn(e)&&e!==mn;function Ro(){const{caseless:e,skipUndefined:t}=nu(this)&&this||{},n={},s=(r,o)=>{if(o==="__proto__"||o==="constructor"||o==="prototype")return;const i=e&&tu(n,o)||o;Ks(n[i])&&Ks(r)?n[i]=Ro(n[i],r):Ks(r)?n[i]=Ro({},r):qn(r)?n[i]=r.slice():(!t||!jn(r))&&(n[i]=r)};for(let r=0,o=arguments.length;r(Os(t,(r,o)=>{n&&Ze(r)?Object.defineProperty(e,o,{value:Yc(r,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,o,{value:r,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:s}),e),Og=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Pg=(e,t,n,s)=>{e.prototype=Object.create(t.prototype,s),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},kg=(e,t,n,s)=>{let r,o,i;const l={};if(t=t||{},e==null)return t;do{for(r=Object.getOwnPropertyNames(e),o=r.length;o-- >0;)i=r[o],(!s||s(i,e,t))&&!l[i]&&(t[i]=e[i],l[i]=!0);e=n!==!1&&Ko(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Ig=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const s=e.indexOf(t,n);return s!==-1&&s===n},Ng=e=>{if(!e)return null;if(qn(e))return e;let t=e.length;if(!eu(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Dg=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Ko(Uint8Array)),Lg=(e,t)=>{const s=(e&&e[Pr]).call(e);let r;for(;(r=s.next())&&!r.done;){const o=r.value;t.call(e,o[0],o[1])}},Mg=(e,t)=>{let n;const s=[];for(;(n=e.exec(t))!==null;)s.push(n);return s},Bg=yt("HTMLFormElement"),Fg=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,s,r){return s.toUpperCase()+r}),Sl=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),$g=yt("RegExp"),su=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),s={};Os(n,(r,o)=>{let i;(i=t(r,o,e))!==!1&&(s[o]=i||r)}),Object.defineProperties(e,s)},jg=e=>{su(e,(t,n)=>{if(Ze(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const s=e[n];if(Ze(s)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ug=(e,t)=>{const n={},s=r=>{r.forEach(o=>{n[o]=!0})};return qn(e)?s(e):s(String(e).split(t)),n},Vg=()=>{},Hg=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function zg(e){return!!(e&&Ze(e.append)&&e[Qc]==="FormData"&&e[Pr])}const qg=e=>{const t=new Array(10),n=(s,r)=>{if(Ts(s)){if(t.indexOf(s)>=0)return;if(Cs(s))return s;if(!("toJSON"in s)){t[r]=s;const o=qn(s)?[]:{};return Os(s,(i,l)=>{const a=n(i,r+1);!jn(a)&&(o[l]=a)}),t[r]=void 0,o}}return s};return n(e,0)},Gg=yt("AsyncFunction"),Wg=e=>e&&(Ts(e)||Ze(e))&&Ze(e.then)&&Ze(e.catch),ru=((e,t)=>e?setImmediate:t?((n,s)=>(mn.addEventListener("message",({source:r,data:o})=>{r===mn&&o===n&&s.length&&s.shift()()},!1),r=>{s.push(r),mn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Ze(mn.postMessage)),Kg=typeof queueMicrotask<"u"?queueMicrotask.bind(mn):typeof process<"u"&&process.nextTick||ru,Jg=e=>e!=null&&Ze(e[Pr]),E={isArray:qn,isArrayBuffer:Zc,isBuffer:Cs,isFormData:_g,isArrayBufferView:cg,isString:ug,isNumber:eu,isBoolean:fg,isObject:Ts,isPlainObject:Ks,isEmptyObject:dg,isReadableStream:Sg,isRequest:xg,isResponse:Rg,isHeaders:Ag,isUndefined:jn,isDate:pg,isFile:hg,isReactNativeBlob:mg,isReactNative:gg,isBlob:bg,isRegExp:$g,isFunction:Ze,isStream:vg,isURLSearchParams:Eg,isTypedArray:Dg,isFileList:yg,forEach:Os,merge:Ro,extend:Tg,trim:Cg,stripBOM:Og,inherits:Pg,toFlatObject:kg,kindOf:kr,kindOfTest:yt,endsWith:Ig,toArray:Ng,forEachEntry:Lg,matchAll:Mg,isHTMLForm:Bg,hasOwnProperty:Sl,hasOwnProp:Sl,reduceDescriptors:su,freezeMethods:jg,toObjectSet:Ug,toCamelCase:Fg,noop:Vg,toFiniteNumber:Hg,findKey:tu,global:mn,isContextDefined:nu,isSpecCompliantForm:zg,toJSONObject:qg,isAsyncFn:Gg,isThenable:Wg,setImmediate:ru,asap:Kg,isIterable:Jg};let ne=class ou extends Error{static from(t,n,s,r,o,i){const l=new ou(t.message,n||t.code,s,r,o);return l.cause=t,l.name=t.name,t.status!=null&&l.status==null&&(l.status=t.status),i&&Object.assign(l,i),l}constructor(t,n,s,r,o){super(t),Object.defineProperty(this,"message",{value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),s&&(this.config=s),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:E.toJSONObject(this.config),code:this.code,status:this.status}}};ne.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";ne.ERR_BAD_OPTION="ERR_BAD_OPTION";ne.ECONNABORTED="ECONNABORTED";ne.ETIMEDOUT="ETIMEDOUT";ne.ERR_NETWORK="ERR_NETWORK";ne.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";ne.ERR_DEPRECATED="ERR_DEPRECATED";ne.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";ne.ERR_BAD_REQUEST="ERR_BAD_REQUEST";ne.ERR_CANCELED="ERR_CANCELED";ne.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";ne.ERR_INVALID_URL="ERR_INVALID_URL";const Xg=null;function Ao(e){return E.isPlainObject(e)||E.isArray(e)}function iu(e){return E.endsWith(e,"[]")?e.slice(0,-2):e}function Yr(e,t,n){return e?e.concat(t).map(function(r,o){return r=iu(r),!n&&o?"["+r+"]":r}).join(n?".":""):t}function Yg(e){return E.isArray(e)&&!e.some(Ao)}const Qg=E.toFlatObject(E,{},null,function(t){return/^is[A-Z]/.test(t)});function Nr(e,t,n){if(!E.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=E.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,_){return!E.isUndefined(_[y])});const s=n.metaTokens,r=n.visitor||c,o=n.dots,i=n.indexes,a=(n.Blob||typeof Blob<"u"&&Blob)&&E.isSpecCompliantForm(t);if(!E.isFunction(r))throw new TypeError("visitor must be a function");function u(b){if(b===null)return"";if(E.isDate(b))return b.toISOString();if(E.isBoolean(b))return b.toString();if(!a&&E.isBlob(b))throw new ne("Blob is not supported. Use a Buffer instead.");return E.isArrayBuffer(b)||E.isTypedArray(b)?a&&typeof Blob=="function"?new Blob([b]):Buffer.from(b):b}function c(b,y,_){let I=b;if(E.isReactNative(t)&&E.isReactNativeBlob(b))return t.append(Yr(_,y,o),u(b)),!1;if(b&&!_&&typeof b=="object"){if(E.endsWith(y,"{}"))y=s?y:y.slice(0,-2),b=JSON.stringify(b);else if(E.isArray(b)&&Yg(b)||(E.isFileList(b)||E.endsWith(y,"[]"))&&(I=E.toArray(b)))return y=iu(y),I.forEach(function(N,D){!(E.isUndefined(N)||N===null)&&t.append(i===!0?Yr([y],D,o):i===null?y:y+"[]",u(N))}),!1}return Ao(b)?!0:(t.append(Yr(_,y,o),u(b)),!1)}const f=[],p=Object.assign(Qg,{defaultVisitor:c,convertValue:u,isVisitable:Ao});function g(b,y){if(!E.isUndefined(b)){if(f.indexOf(b)!==-1)throw Error("Circular reference detected in "+y.join("."));f.push(b),E.forEach(b,function(I,x){(!(E.isUndefined(I)||I===null)&&r.call(t,I,E.isString(x)?x.trim():x,y,p))===!0&&g(I,y?y.concat(x):[x])}),f.pop()}}if(!E.isObject(e))throw new TypeError("data must be an object");return g(e),t}function xl(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(s){return t[s]})}function Jo(e,t){this._pairs=[],e&&Nr(e,this,t)}const lu=Jo.prototype;lu.append=function(t,n){this._pairs.push([t,n])};lu.toString=function(t){const n=t?function(s){return t.call(this,s,xl)}:xl;return this._pairs.map(function(r){return n(r[0])+"="+n(r[1])},"").join("&")};function Zg(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function au(e,t,n){if(!t)return e;const s=n&&n.encode||Zg,r=E.isFunction(n)?{serialize:n}:n,o=r&&r.serialize;let i;if(o?i=o(t,r):i=E.isURLSearchParams(t)?t.toString():new Jo(t,r).toString(s),i){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class Rl{constructor(){this.handlers=[]}use(t,n,s){return this.handlers.push({fulfilled:t,rejected:n,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){E.forEach(this.handlers,function(s){s!==null&&t(s)})}}const Xo={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},eb=typeof URLSearchParams<"u"?URLSearchParams:Jo,tb=typeof FormData<"u"?FormData:null,nb=typeof Blob<"u"?Blob:null,sb={isBrowser:!0,classes:{URLSearchParams:eb,FormData:tb,Blob:nb},protocols:["http","https","file","blob","url","data"]},Yo=typeof window<"u"&&typeof document<"u",Co=typeof navigator=="object"&&navigator||void 0,rb=Yo&&(!Co||["ReactNative","NativeScript","NS"].indexOf(Co.product)<0),ob=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",ib=Yo&&window.location.href||"http://localhost",lb=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Yo,hasStandardBrowserEnv:rb,hasStandardBrowserWebWorkerEnv:ob,navigator:Co,origin:ib},Symbol.toStringTag,{value:"Module"})),He={...lb,...sb};function ab(e,t){return Nr(e,new He.classes.URLSearchParams,{visitor:function(n,s,r,o){return He.isNode&&E.isBuffer(n)?(this.append(s,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function cb(e){return E.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function ub(e){const t={},n=Object.keys(e);let s;const r=n.length;let o;for(s=0;s=n.length;return i=!i&&E.isArray(r)?r.length:i,a?(E.hasOwnProp(r,i)?r[i]=[r[i],s]:r[i]=s,!l):((!r[i]||!E.isObject(r[i]))&&(r[i]=[]),t(n,s,r[i],o)&&E.isArray(r[i])&&(r[i]=ub(r[i])),!l)}if(E.isFormData(e)&&E.isFunction(e.entries)){const n={};return E.forEachEntry(e,(s,r)=>{t(cb(s),r,n,0)}),n}return null}function fb(e,t,n){if(E.isString(e))try{return(t||JSON.parse)(e),E.trim(e)}catch(s){if(s.name!=="SyntaxError")throw s}return(n||JSON.stringify)(e)}const Ps={transitional:Xo,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const s=n.getContentType()||"",r=s.indexOf("application/json")>-1,o=E.isObject(t);if(o&&E.isHTMLForm(t)&&(t=new FormData(t)),E.isFormData(t))return r?JSON.stringify(cu(t)):t;if(E.isArrayBuffer(t)||E.isBuffer(t)||E.isStream(t)||E.isFile(t)||E.isBlob(t)||E.isReadableStream(t))return t;if(E.isArrayBufferView(t))return t.buffer;if(E.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(o){if(s.indexOf("application/x-www-form-urlencoded")>-1)return ab(t,this.formSerializer).toString();if((l=E.isFileList(t))||s.indexOf("multipart/form-data")>-1){const a=this.env&&this.env.FormData;return Nr(l?{"files[]":t}:t,a&&new a,this.formSerializer)}}return o||r?(n.setContentType("application/json",!1),fb(t)):t}],transformResponse:[function(t){const n=this.transitional||Ps.transitional,s=n&&n.forcedJSONParsing,r=this.responseType==="json";if(E.isResponse(t)||E.isReadableStream(t))return t;if(t&&E.isString(t)&&(s&&!this.responseType||r)){const i=!(n&&n.silentJSONParsing)&&r;try{return JSON.parse(t,this.parseReviver)}catch(l){if(i)throw l.name==="SyntaxError"?ne.from(l,ne.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:He.classes.FormData,Blob:He.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};E.forEach(["delete","get","head","post","put","patch"],e=>{Ps.headers[e]={}});const db=E.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),pb=e=>{const t={};let n,s,r;return e&&e.split(` +`).forEach(function(i){r=i.indexOf(":"),n=i.substring(0,r).trim().toLowerCase(),s=i.substring(r+1).trim(),!(!n||t[n]&&db[n])&&(n==="set-cookie"?t[n]?t[n].push(s):t[n]=[s]:t[n]=t[n]?t[n]+", "+s:s)}),t},Al=Symbol("internals");function ts(e){return e&&String(e).trim().toLowerCase()}function Js(e){return e===!1||e==null?e:E.isArray(e)?e.map(Js):String(e)}function hb(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=n.exec(e);)t[s[1]]=s[2];return t}const mb=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Qr(e,t,n,s,r){if(E.isFunction(s))return s.call(this,t,n);if(r&&(t=n),!!E.isString(t)){if(E.isString(s))return t.indexOf(s)!==-1;if(E.isRegExp(s))return s.test(t)}}function gb(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,s)=>n.toUpperCase()+s)}function bb(e,t){const n=E.toCamelCase(" "+t);["get","set","has"].forEach(s=>{Object.defineProperty(e,s+n,{value:function(r,o,i){return this[s].call(this,t,r,o,i)},configurable:!0})})}let et=class{constructor(t){t&&this.set(t)}set(t,n,s){const r=this;function o(l,a,u){const c=ts(a);if(!c)throw new Error("header name must be a non-empty string");const f=E.findKey(r,c);(!f||r[f]===void 0||u===!0||u===void 0&&r[f]!==!1)&&(r[f||a]=Js(l))}const i=(l,a)=>E.forEach(l,(u,c)=>o(u,c,a));if(E.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(E.isString(t)&&(t=t.trim())&&!mb(t))i(pb(t),n);else if(E.isObject(t)&&E.isIterable(t)){let l={},a,u;for(const c of t){if(!E.isArray(c))throw TypeError("Object iterator must return a key-value pair");l[u=c[0]]=(a=l[u])?E.isArray(a)?[...a,c[1]]:[a,c[1]]:c[1]}i(l,n)}else t!=null&&o(n,t,s);return this}get(t,n){if(t=ts(t),t){const s=E.findKey(this,t);if(s){const r=this[s];if(!n)return r;if(n===!0)return hb(r);if(E.isFunction(n))return n.call(this,r,s);if(E.isRegExp(n))return n.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=ts(t),t){const s=E.findKey(this,t);return!!(s&&this[s]!==void 0&&(!n||Qr(this,this[s],s,n)))}return!1}delete(t,n){const s=this;let r=!1;function o(i){if(i=ts(i),i){const l=E.findKey(s,i);l&&(!n||Qr(s,s[l],l,n))&&(delete s[l],r=!0)}}return E.isArray(t)?t.forEach(o):o(t),r}clear(t){const n=Object.keys(this);let s=n.length,r=!1;for(;s--;){const o=n[s];(!t||Qr(this,this[o],o,t,!0))&&(delete this[o],r=!0)}return r}normalize(t){const n=this,s={};return E.forEach(this,(r,o)=>{const i=E.findKey(s,o);if(i){n[i]=Js(r),delete n[o];return}const l=t?gb(o):String(o).trim();l!==o&&delete n[o],n[l]=Js(r),s[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return E.forEach(this,(s,r)=>{s!=null&&s!==!1&&(n[r]=t&&E.isArray(s)?s.join(", "):s)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const s=new this(t);return n.forEach(r=>s.set(r)),s}static accessor(t){const s=(this[Al]=this[Al]={accessors:{}}).accessors,r=this.prototype;function o(i){const l=ts(i);s[l]||(bb(r,i),s[l]=!0)}return E.isArray(t)?t.forEach(o):o(t),this}};et.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);E.reduceDescriptors(et.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(s){this[n]=s}}});E.freezeMethods(et);function Zr(e,t){const n=this||Ps,s=t||n,r=et.from(s.headers);let o=s.data;return E.forEach(e,function(l){o=l.call(n,o,r.normalize(),t?t.status:void 0)}),r.normalize(),o}function uu(e){return!!(e&&e.__CANCEL__)}let ks=class extends ne{constructor(t,n,s){super(t??"canceled",ne.ERR_CANCELED,n,s),this.name="CanceledError",this.__CANCEL__=!0}};function fu(e,t,n){const s=n.config.validateStatus;!n.status||!s||s(n.status)?e(n):t(new ne("Request failed with status code "+n.status,[ne.ERR_BAD_REQUEST,ne.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function yb(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function vb(e,t){e=e||10;const n=new Array(e),s=new Array(e);let r=0,o=0,i;return t=t!==void 0?t:1e3,function(a){const u=Date.now(),c=s[o];i||(i=u),n[r]=a,s[r]=u;let f=o,p=0;for(;f!==r;)p+=n[f++],f=f%e;if(r=(r+1)%e,r===o&&(o=(o+1)%e),u-i{n=c,r=null,o&&(clearTimeout(o),o=null),e(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=s?i(u,c):(r=u,o||(o=setTimeout(()=>{o=null,i(r)},s-f)))},()=>r&&i(r)]}const cr=(e,t,n=3)=>{let s=0;const r=vb(50,250);return wb(o=>{const i=o.loaded,l=o.lengthComputable?o.total:void 0,a=i-s,u=r(a),c=i<=l;s=i;const f={loaded:i,total:l,progress:l?i/l:void 0,bytes:a,rate:u||void 0,estimated:u&&l&&c?(l-i)/u:void 0,event:o,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(f)},n)},Cl=(e,t)=>{const n=e!=null;return[s=>t[0]({lengthComputable:n,total:e,loaded:s}),t[1]]},Tl=e=>(...t)=>E.asap(()=>e(...t)),_b=He.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,He.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(He.origin),He.navigator&&/(msie|trident)/i.test(He.navigator.userAgent)):()=>!0,Eb=He.hasStandardBrowserEnv?{write(e,t,n,s,r,o,i){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(t)}`];E.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),E.isString(s)&&l.push(`path=${s}`),E.isString(r)&&l.push(`domain=${r}`),o===!0&&l.push("secure"),E.isString(i)&&l.push(`SameSite=${i}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function Sb(e){return typeof e!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function xb(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function du(e,t,n){let s=!Sb(t);return e&&(s||n==!1)?xb(e,t):t}const Ol=e=>e instanceof et?{...e}:e;function wn(e,t){t=t||{};const n={};function s(u,c,f,p){return E.isPlainObject(u)&&E.isPlainObject(c)?E.merge.call({caseless:p},u,c):E.isPlainObject(c)?E.merge({},c):E.isArray(c)?c.slice():c}function r(u,c,f,p){if(E.isUndefined(c)){if(!E.isUndefined(u))return s(void 0,u,f,p)}else return s(u,c,f,p)}function o(u,c){if(!E.isUndefined(c))return s(void 0,c)}function i(u,c){if(E.isUndefined(c)){if(!E.isUndefined(u))return s(void 0,u)}else return s(void 0,c)}function l(u,c,f){if(f in t)return s(u,c);if(f in e)return s(void 0,u)}const a={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:l,headers:(u,c,f)=>r(Ol(u),Ol(c),f,!0)};return E.forEach(Object.keys({...e,...t}),function(c){if(c==="__proto__"||c==="constructor"||c==="prototype")return;const f=E.hasOwnProp(a,c)?a[c]:r,p=f(e[c],t[c],c);E.isUndefined(p)&&f!==l||(n[c]=p)}),n}const pu=e=>{const t=wn({},e);let{data:n,withXSRFToken:s,xsrfHeaderName:r,xsrfCookieName:o,headers:i,auth:l}=t;if(t.headers=i=et.from(i),t.url=au(du(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&i.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),E.isFormData(n)){if(He.hasStandardBrowserEnv||He.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(E.isFunction(n.getHeaders)){const a=n.getHeaders(),u=["content-type","content-length"];Object.entries(a).forEach(([c,f])=>{u.includes(c.toLowerCase())&&i.set(c,f)})}}if(He.hasStandardBrowserEnv&&(s&&E.isFunction(s)&&(s=s(t)),s||s!==!1&&_b(t.url))){const a=r&&o&&Eb.read(o);a&&i.set(r,a)}return t},Rb=typeof XMLHttpRequest<"u",Ab=Rb&&function(e){return new Promise(function(n,s){const r=pu(e);let o=r.data;const i=et.from(r.headers).normalize();let{responseType:l,onUploadProgress:a,onDownloadProgress:u}=r,c,f,p,g,b;function y(){g&&g(),b&&b(),r.cancelToken&&r.cancelToken.unsubscribe(c),r.signal&&r.signal.removeEventListener("abort",c)}let _=new XMLHttpRequest;_.open(r.method.toUpperCase(),r.url,!0),_.timeout=r.timeout;function I(){if(!_)return;const N=et.from("getAllResponseHeaders"in _&&_.getAllResponseHeaders()),j={data:!l||l==="text"||l==="json"?_.responseText:_.response,status:_.status,statusText:_.statusText,headers:N,config:e,request:_};fu(function(G){n(G),y()},function(G){s(G),y()},j),_=null}"onloadend"in _?_.onloadend=I:_.onreadystatechange=function(){!_||_.readyState!==4||_.status===0&&!(_.responseURL&&_.responseURL.indexOf("file:")===0)||setTimeout(I)},_.onabort=function(){_&&(s(new ne("Request aborted",ne.ECONNABORTED,e,_)),_=null)},_.onerror=function(D){const j=D&&D.message?D.message:"Network Error",J=new ne(j,ne.ERR_NETWORK,e,_);J.event=D||null,s(J),_=null},_.ontimeout=function(){let D=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const j=r.transitional||Xo;r.timeoutErrorMessage&&(D=r.timeoutErrorMessage),s(new ne(D,j.clarifyTimeoutError?ne.ETIMEDOUT:ne.ECONNABORTED,e,_)),_=null},o===void 0&&i.setContentType(null),"setRequestHeader"in _&&E.forEach(i.toJSON(),function(D,j){_.setRequestHeader(j,D)}),E.isUndefined(r.withCredentials)||(_.withCredentials=!!r.withCredentials),l&&l!=="json"&&(_.responseType=r.responseType),u&&([p,b]=cr(u,!0),_.addEventListener("progress",p)),a&&_.upload&&([f,g]=cr(a),_.upload.addEventListener("progress",f),_.upload.addEventListener("loadend",g)),(r.cancelToken||r.signal)&&(c=N=>{_&&(s(!N||N.type?new ks(null,e,_):N),_.abort(),_=null)},r.cancelToken&&r.cancelToken.subscribe(c),r.signal&&(r.signal.aborted?c():r.signal.addEventListener("abort",c)));const x=yb(r.url);if(x&&He.protocols.indexOf(x)===-1){s(new ne("Unsupported protocol "+x+":",ne.ERR_BAD_REQUEST,e));return}_.send(o||null)})},Cb=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let s=new AbortController,r;const o=function(u){if(!r){r=!0,l();const c=u instanceof Error?u:this.reason;s.abort(c instanceof ne?c:new ks(c instanceof Error?c.message:c))}};let i=t&&setTimeout(()=>{i=null,o(new ne(`timeout of ${t}ms exceeded`,ne.ETIMEDOUT))},t);const l=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener("abort",o)}),e=null)};e.forEach(u=>u.addEventListener("abort",o));const{signal:a}=s;return a.unsubscribe=()=>E.asap(l),a}},Tb=function*(e,t){let n=e.byteLength;if(n{const r=Ob(e,t);let o=0,i,l=a=>{i||(i=!0,s&&s(a))};return new ReadableStream({async pull(a){try{const{done:u,value:c}=await r.next();if(u){l(),a.close();return}let f=c.byteLength;if(n){let p=o+=f;n(p)}a.enqueue(new Uint8Array(c))}catch(u){throw l(u),u}},cancel(a){return l(a),r.return()}},{highWaterMark:2})},kl=64*1024,{isFunction:$s}=E,kb=(({Request:e,Response:t})=>({Request:e,Response:t}))(E.global),{ReadableStream:Il,TextEncoder:Nl}=E.global,Dl=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Ib=e=>{e=E.merge.call({skipUndefined:!0},kb,e);const{fetch:t,Request:n,Response:s}=e,r=t?$s(t):typeof fetch=="function",o=$s(n),i=$s(s);if(!r)return!1;const l=r&&$s(Il),a=r&&(typeof Nl=="function"?(b=>y=>b.encode(y))(new Nl):async b=>new Uint8Array(await new n(b).arrayBuffer())),u=o&&l&&Dl(()=>{let b=!1;const y=new n(He.origin,{body:new Il,method:"POST",get duplex(){return b=!0,"half"}}).headers.has("Content-Type");return b&&!y}),c=i&&l&&Dl(()=>E.isReadableStream(new s("").body)),f={stream:c&&(b=>b.body)};r&&["text","arrayBuffer","blob","formData","stream"].forEach(b=>{!f[b]&&(f[b]=(y,_)=>{let I=y&&y[b];if(I)return I.call(y);throw new ne(`Response type '${b}' is not supported`,ne.ERR_NOT_SUPPORT,_)})});const p=async b=>{if(b==null)return 0;if(E.isBlob(b))return b.size;if(E.isSpecCompliantForm(b))return(await new n(He.origin,{method:"POST",body:b}).arrayBuffer()).byteLength;if(E.isArrayBufferView(b)||E.isArrayBuffer(b))return b.byteLength;if(E.isURLSearchParams(b)&&(b=b+""),E.isString(b))return(await a(b)).byteLength},g=async(b,y)=>{const _=E.toFiniteNumber(b.getContentLength());return _??p(y)};return async b=>{let{url:y,method:_,data:I,signal:x,cancelToken:N,timeout:D,onDownloadProgress:j,onUploadProgress:J,responseType:G,headers:T,withCredentials:O="same-origin",fetchOptions:w}=pu(b),L=t||fetch;G=G?(G+"").toLowerCase():"text";let R=Cb([x,N&&N.toAbortSignal()],D),V=null;const te=R&&R.unsubscribe&&(()=>{R.unsubscribe()});let de;try{if(J&&u&&_!=="get"&&_!=="head"&&(de=await g(T,I))!==0){let ve=new n(y,{method:"POST",body:I,duplex:"half"}),Se;if(E.isFormData(I)&&(Se=ve.headers.get("content-type"))&&T.setContentType(Se),ve.body){const[ze,Me]=Cl(de,cr(Tl(J)));I=Pl(ve.body,kl,ze,Me)}}E.isString(O)||(O=O?"include":"omit");const W=o&&"credentials"in n.prototype,Y={...w,signal:R,method:_.toUpperCase(),headers:T.normalize().toJSON(),body:I,duplex:"half",credentials:W?O:void 0};V=o&&new n(y,Y);let re=await(o?L(V,w):L(y,Y));const Ne=c&&(G==="stream"||G==="response");if(c&&(j||Ne&&te)){const ve={};["status","statusText","headers"].forEach(_e=>{ve[_e]=re[_e]});const Se=E.toFiniteNumber(re.headers.get("content-length")),[ze,Me]=j&&Cl(Se,cr(Tl(j),!0))||[];re=new s(Pl(re.body,kl,ze,()=>{Me&&Me(),te&&te()}),ve)}G=G||"text";let z=await f[E.findKey(f,G)||"text"](re,b);return!Ne&&te&&te(),await new Promise((ve,Se)=>{fu(ve,Se,{data:z,headers:et.from(re.headers),status:re.status,statusText:re.statusText,config:b,request:V})})}catch(W){throw te&&te(),W&&W.name==="TypeError"&&/Load failed|fetch/i.test(W.message)?Object.assign(new ne("Network Error",ne.ERR_NETWORK,b,V,W&&W.response),{cause:W.cause||W}):ne.from(W,W&&W.code,b,V,W&&W.response)}}},Nb=new Map,hu=e=>{let t=e&&e.env||{};const{fetch:n,Request:s,Response:r}=t,o=[s,r,n];let i=o.length,l=i,a,u,c=Nb;for(;l--;)a=o[l],u=c.get(a),u===void 0&&c.set(a,u=l?new Map:Ib(t)),c=u;return u};hu();const Qo={http:Xg,xhr:Ab,fetch:{get:hu}};E.forEach(Qo,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Ll=e=>`- ${e}`,Db=e=>E.isFunction(e)||e===null||e===!1;function Lb(e,t){e=E.isArray(e)?e:[e];const{length:n}=e;let s,r;const o={};for(let i=0;i`adapter ${a} `+(u===!1?"is not supported by the environment":"is not available in the build"));let l=n?i.length>1?`since : +`+i.map(Ll).join(` +`):" "+Ll(i[0]):"as no adapter specified";throw new ne("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return r}const mu={getAdapter:Lb,adapters:Qo};function eo(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ks(null,e)}function Ml(e){return eo(e),e.headers=et.from(e.headers),e.data=Zr.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),mu.getAdapter(e.adapter||Ps.adapter,e)(e).then(function(s){return eo(e),s.data=Zr.call(e,e.transformResponse,s),s.headers=et.from(s.headers),s},function(s){return uu(s)||(eo(e),s&&s.response&&(s.response.data=Zr.call(e,e.transformResponse,s.response),s.response.headers=et.from(s.response.headers))),Promise.reject(s)})}const gu="1.13.6",Dr={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Dr[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}});const Bl={};Dr.transitional=function(t,n,s){function r(o,i){return"[Axios v"+gu+"] Transitional option '"+o+"'"+i+(s?". "+s:"")}return(o,i,l)=>{if(t===!1)throw new ne(r(i," has been removed"+(n?" in "+n:"")),ne.ERR_DEPRECATED);return n&&!Bl[i]&&(Bl[i]=!0,console.warn(r(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,l):!0}};Dr.spelling=function(t){return(n,s)=>(console.warn(`${s} is likely a misspelling of ${t}`),!0)};function Mb(e,t,n){if(typeof e!="object")throw new ne("options must be an object",ne.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let r=s.length;for(;r-- >0;){const o=s[r],i=t[o];if(i){const l=e[o],a=l===void 0||i(l,o,e);if(a!==!0)throw new ne("option "+o+" must be "+a,ne.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ne("Unknown option "+o,ne.ERR_BAD_OPTION)}}const Xs={assertOptions:Mb,validators:Dr},ct=Xs.validators;let yn=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Rl,response:new Rl}}async request(t,n){try{return await this._request(t,n)}catch(s){if(s instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;const o=r.stack?r.stack.replace(/^.+\n/,""):"";try{s.stack?o&&!String(s.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(s.stack+=` +`+o):s.stack=o}catch{}}throw s}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=wn(this.defaults,n);const{transitional:s,paramsSerializer:r,headers:o}=n;s!==void 0&&Xs.assertOptions(s,{silentJSONParsing:ct.transitional(ct.boolean),forcedJSONParsing:ct.transitional(ct.boolean),clarifyTimeoutError:ct.transitional(ct.boolean),legacyInterceptorReqResOrdering:ct.transitional(ct.boolean)},!1),r!=null&&(E.isFunction(r)?n.paramsSerializer={serialize:r}:Xs.assertOptions(r,{encode:ct.function,serialize:ct.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Xs.assertOptions(n,{baseUrl:ct.spelling("baseURL"),withXsrfToken:ct.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&E.merge(o.common,o[n.method]);o&&E.forEach(["delete","get","head","post","put","patch","common"],b=>{delete o[b]}),n.headers=et.concat(i,o);const l=[];let a=!0;this.interceptors.request.forEach(function(y){if(typeof y.runWhen=="function"&&y.runWhen(n)===!1)return;a=a&&y.synchronous;const _=n.transitional||Xo;_&&_.legacyInterceptorReqResOrdering?l.unshift(y.fulfilled,y.rejected):l.push(y.fulfilled,y.rejected)});const u=[];this.interceptors.response.forEach(function(y){u.push(y.fulfilled,y.rejected)});let c,f=0,p;if(!a){const b=[Ml.bind(this),void 0];for(b.unshift(...l),b.push(...u),p=b.length,c=Promise.resolve(n);f{if(!s._listeners)return;let o=s._listeners.length;for(;o-- >0;)s._listeners[o](r);s._listeners=null}),this.promise.then=r=>{let o;const i=new Promise(l=>{s.subscribe(l),o=l}).then(r);return i.cancel=function(){s.unsubscribe(o)},i},t(function(o,i,l){s.reason||(s.reason=new ks(o,i,l),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=s=>{t.abort(s)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new bu(function(r){t=r}),cancel:t}}};function Fb(e){return function(n){return e.apply(null,n)}}function $b(e){return E.isObject(e)&&e.isAxiosError===!0}const To={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(To).forEach(([e,t])=>{To[t]=e});function yu(e){const t=new yn(e),n=Yc(yn.prototype.request,t);return E.extend(n,yn.prototype,t,{allOwnKeys:!0}),E.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return yu(wn(e,r))},n}const Ie=yu(Ps);Ie.Axios=yn;Ie.CanceledError=ks;Ie.CancelToken=Bb;Ie.isCancel=uu;Ie.VERSION=gu;Ie.toFormData=Nr;Ie.AxiosError=ne;Ie.Cancel=Ie.CanceledError;Ie.all=function(t){return Promise.all(t)};Ie.spread=Fb;Ie.isAxiosError=$b;Ie.mergeConfig=wn;Ie.AxiosHeaders=et;Ie.formToJSON=e=>cu(E.isHTMLForm(e)?new FormData(e):e);Ie.getAdapter=mu.getAdapter;Ie.HttpStatusCode=To;Ie.default=Ie;const{Axios:by,AxiosError:yy,CanceledError:vy,isCancel:wy,CancelToken:_y,VERSION:Ey,all:Sy,Cancel:xy,isAxiosError:Ry,spread:Ay,toFormData:Cy,AxiosHeaders:Ty,HttpStatusCode:Oy,formToJSON:Py,getAdapter:ky,mergeConfig:Iy}=Ie,Un=Ie.create({baseURL:"https://openmoss-cloudflare.97274247.workers.dev/api",timeout:1e4});Un.interceptors.request.use(e=>{const t=Zo();return t.token&&(e.headers=e.headers??{},e.headers["X-Admin-Token"]=t.token),e});Un.interceptors.response.use(e=>e,e=>(e.response?.status===403&&!e.config?.url?.includes("/admin/login")&&(Zo().logout(),window.location.href="/login"),Promise.reject(e)));const jb={login:e=>Un.post("/admin/login",{password:e}),resetKey:e=>Un.post(`/admin/agents/${e}/reset-key`)},Ub={status:()=>Un.get("/setup/status"),initialize:e=>Un.post("/setup/initialize",e)},Zo=sp("auth",()=>{const e=Ee(localStorage.getItem("admin_token")),t=ue(()=>!!e.value);async function n(r){const{data:o}=await jb.login(r);return e.value=o.token,localStorage.setItem("admin_token",o.token),o}function s(){e.value=null,localStorage.removeItem("admin_token")}return{token:e,isAuthenticated:t,login:n,logout:s}});let Fl=!1,js=!0;const vu=ah({history:Up("/"),routes:[{path:"/setup",name:"setup",component:()=>Xe(()=>import("./SetupView-DexhUT0V.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])),meta:{requiresAuth:!1}},{path:"/feed",name:"feed",component:()=>Xe(()=>import("./FeedView-wwm_gE9_.js"),__vite__mapDeps([18,2,19,12,10,7,8,13,20,21,22,23,24,25,26,27,28,29,30,31,32,33,16,34,35,36,37,17,38,39])),meta:{requiresAuth:!1}},{path:"/demo",name:"demo",component:()=>Xe(()=>import("./DemoView-BPR_Rmcz.js"),__vite__mapDeps([40,41,42,34,43,26,38,44,23,45])),meta:{requiresAuth:!1}},{path:"/login",name:"login",component:()=>Xe(()=>import("./LoginView-CzW4mb8C.js"),__vite__mapDeps([46,2,3,4,5,6,7,8,9,10,34,47])),meta:{requiresAuth:!1}},{path:"/",component:()=>Xe(()=>import("./AppLayout-B0mng0Hs.js"),__vite__mapDeps([48,49,36,12,2,10,7,8,20,13,37,19,21,50,35,38,51,23,25,30,52,53,34,54])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/dashboard"},{path:"dashboard",name:"dashboard",component:()=>Xe(()=>import("./DashboardView-Cu7R9jUe.js"),__vite__mapDeps([55,3,5,2,35,8,56,57,17,58,59,43,51,32,60,38,34,61]))},{path:"tasks",name:"tasks",component:()=>Xe(()=>import("./TasksView-CCGXWEZ4.js"),__vite__mapDeps([62,7,8,63,2,19,12,10,13,20,21,6,35,36,37,50,22,24,17,56,51]))},{path:"agents",name:"agents",component:()=>Xe(()=>import("./AgentsView-U_WfzzKz.js"),__vite__mapDeps([64,63,2,8,6,7,12,13,65,10,20,14,19,21,37,33,38,24,17,56,41,15,35,52,27,66,16,67,22,29,31,42,58,28,11,34,68]))},{path:"scores",name:"scores",component:()=>Xe(()=>import("./ScoresView-CBH5Dogn.js"),__vite__mapDeps([69,63,2,8,6,7,35,24,56,38,23,17,57]))},{path:"logs",name:"logs",component:()=>Xe(()=>import("./LogsView-Co5xeyoP.js"),__vite__mapDeps([70,63,2,8,6,7,24,56,29,17,33,34,71]))},{path:"reviews",name:"reviews",component:()=>Xe(()=>import("./ReviewsView-BIzvWmnq.js"),__vite__mapDeps([72,63,2,8,6,7,35,22,21,13,10,24,17,56,60,34,73]))},{path:"prompts",name:"prompts",component:()=>Xe(()=>import("./PromptsView-C9Duf4fo.js"),__vite__mapDeps([74,1,67,3,2,6,7,8,9,10,65,12,20,13,14,19,21,22,38,25,59,44,15,16,29,31,27,53,42,34,75]))},{path:"settings",name:"settings",component:()=>Xe(()=>import("./SettingsView-Bbemcc2R.js"),__vite__mapDeps([76,1,49,2,3,4,5,6,7,8,9,10,11,12,13,14,35,65,20,66,31,17,53]))}]},{path:"/:pathMatch(.*)*",name:"not-found",component:()=>Xe(()=>import("./NotFoundView-CwfZACt3.js"),__vite__mapDeps([77,2,3,34,78])),meta:{requiresAuth:!1}}]});vu.beforeEach(async e=>{const t=Zo();if(!Fl){try{const{data:n}=await Ub.status();js=n.initialized}catch{js=!0}Fl=!0}if(!js&&e.name!=="setup")return{name:"setup"};if(js&&e.name==="setup")return{name:"login"};if(e.meta.requiresAuth!==!1&&!t.isAuthenticated)return{name:"login"};if(e.name==="login"&&t.isAuthenticated)return{name:"dashboard"}});const ei=Kd(og);ei.use(Yd());ei.use(vu);ei.mount("#app");export{ly as $,Na as A,ry as B,Hn as C,tn as D,Es as E,Te as F,Mo as G,kn as H,ty as I,Zo as J,dy as K,gh as L,fy as M,sg as N,ii as O,id as P,Kb as Q,yh as R,Xb as S,ny as T,hh as U,sf as V,Dt as W,vh as X,Qb as Y,Oe as Z,ey as _,lt as a,Zb as a0,py as a1,mh as a2,sy as a3,iy as a4,ay as a5,zb as a6,Wb as a7,Jl as a8,Iu as a9,Vb as aa,Qu as ab,Yb as ac,ft as ad,Ln as ae,Hs as af,$o as ag,Jb as ah,En as ai,Us as aj,it as ak,qb as al,Ia as am,Hb as an,hf as ao,ro as ap,nf as aq,Kl as ar,pm as as,Ue as at,sn as au,Ct as b,Ce as c,_n as d,ye as e,po as f,lo as g,uy as h,dn as i,Gb as j,ue as k,fe as l,zn as m,nt as n,nr as o,Un as p,ut as q,Ee as r,Ub as s,ns as t,le as u,oy as v,st as w,Nn as x,Jn as y,cy as z}; diff --git a/cloudflare/pages/assets/index-CEPd9Ray.js b/cloudflare/pages/assets/index-CEPd9Ray.js new file mode 100644 index 0000000..d3184a4 --- /dev/null +++ b/cloudflare/pages/assets/index-CEPd9Ray.js @@ -0,0 +1 @@ +import{w as O,i as C,j as P,k as T,l as A,m as x,p as V}from"./index-Ct5H-N73.js";import{W as I,k as b,r as J,H as j,ao as z,a6 as p,o as B,ai as N,ab as M,u as D,C as K}from"./index-BYiXDk_r.js";const S=C?window:void 0,k=C?window.document:void 0;function Q(e){var t;const u=p(e);return(t=u?.$el)!==null&&t!==void 0?t:u}function L(...e){const t=(n,o,i,l)=>(n.addEventListener(o,i,l),()=>n.removeEventListener(o,i,l)),u=b(()=>{const n=x(p(e[0])).filter(o=>o!=null);return n.every(o=>typeof o!="string")?n:void 0});return O(()=>{var n,o;return[(n=(o=u.value)===null||o===void 0?void 0:o.map(i=>Q(i)))!==null&&n!==void 0?n:[S].filter(i=>i!=null),x(p(u.value?e[1]:e[0])),x(D(u.value?e[2]:e[1])),p(u.value?e[3]:e[2])]},([n,o,i,l],f,m)=>{if(!n?.length||!o?.length||!i?.length)return;const d=A(l)?{...l}:l,v=n.flatMap(r=>o.flatMap(s=>i.map(c=>t(r,s,c,d))));m(()=>{v.forEach(r=>r())})},{flush:"post"})}function R(){const e=M(!1),t=N();return t&&B(()=>{e.value=!0},t),e}function H(e){const t=R();return b(()=>(t.value,!!e()))}function U(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function q(...e){let t,u,n={};e.length===3?(t=e[0],u=e[1],n=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,u=e[0],n=e[1]):(t=e[0],u=e[1]):(t=!0,u=e[0]);const{target:o=S,eventName:i="keydown",passive:l=!1,dedupe:f=!1}=n,m=U(t);return L(o,i,v=>{v.repeat&&p(f)||m(v)&&u(v)},l)}const g=Symbol("vueuse-ssr-width");function G(){const e=z()?T(g,null):null;return typeof e=="number"?e:void 0}function F(e,t={}){const{window:u=S,ssrWidth:n=G()}=t,o=H(()=>u&&"matchMedia"in u&&typeof u.matchMedia=="function"),i=M(typeof n=="number"),l=M(),f=M(!1),m=d=>{f.value=d.matches};return I(()=>{if(i.value){i.value=!o.value,f.value=p(e).split(",").some(d=>{const v=d.includes("not all"),r=d.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),s=d.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let c=!!(r||s);return r&&c&&(c=n>=V(r[1])),s&&c&&(c=n<=V(s[1])),v?!c:c});return}o.value&&(l.value=u.matchMedia(p(e)),f.value=l.value.matches)}),L(l,"change",m,{passive:!0}),b(()=>f.value)}function X(e){return JSON.parse(JSON.stringify(e))}function _(e,t,u,n={}){var o,i;const{clone:l=!1,passive:f=!1,eventName:m,deep:d=!1,defaultValue:v,shouldEmit:r}=n,s=N(),c=u||s?.emit||(s==null||(o=s.$emit)===null||o===void 0?void 0:o.bind(s))||(s==null||(i=s.proxy)===null||i===void 0||(i=i.$emit)===null||i===void 0?void 0:i.bind(s?.proxy));let h=m;t||(t="modelValue"),h=h||`update:${t.toString()}`;const E=a=>l?typeof l=="function"?l(a):X(a):a,W=()=>P(e[t])?E(e[t]):v,w=a=>{r?r(a)&&c(h,a):c(h,a)};if(f){const a=J(W());let y=!1;return j(()=>e[t],$=>{y||(y=!0,a.value=E($),K(()=>y=!1))}),j(a,$=>{!y&&($!==e[t]||d)&&w($)},{deep:d}),a}else return b({get(){return W()},set(a){w(a)}})}export{_ as a,L as b,Q as c,k as d,R as e,S as f,q as o,F as u}; diff --git a/cloudflare/pages/assets/index-Ct5H-N73.js b/cloudflare/pages/assets/index-Ct5H-N73.js new file mode 100644 index 0000000..205d40c --- /dev/null +++ b/cloudflare/pages/assets/index-Ct5H-N73.js @@ -0,0 +1 @@ +import{aa as A,H as C,Z as v,E as g,u as _,ab as b,a6 as u,a8 as O,a9 as k,ai as P,ao as I,ad as j,ag as x,W as E,ap as F,aq as W,ar as S,k as D,V as y}from"./index-BYiXDk_r.js";function U(e,t){var n;const r=b();return E(()=>{r.value=e()},{...t,flush:(n=t?.flush)!==null&&n!==void 0?n:"sync"}),F(r)}function d(e,t){return O()?(k(e,t),!0):!1}function V(){const e=new Set,t=o=>{e.delete(o)};return{on:o=>{e.add(o);const i=()=>t(o);return d(i),{off:i}},off:t,trigger:(...o)=>Promise.all(Array.from(e).map(i=>i(...o))),clear:()=>{e.clear()}}}function q(e){let t=!1,n;const r=S(!0);return((...a)=>(t||(n=r.run(()=>e(...a)),t=!0),n))}const p=new WeakMap,z=(...e)=>{var t;const n=e[0],r=(t=P())===null||t===void 0?void 0:t.proxy,a=r??O();if(a==null&&!I())throw new Error("injectLocal must be called in setup");return a&&p.has(a)&&n in p.get(a)?p.get(a)[n]:j(...e)},w=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Z=e=>typeof e<"u",G=Object.prototype.toString,J=e=>G.call(e)==="[object Object]",h=()=>{},Q=L();function L(){var e,t,n;return w&&!!(!((e=window)===null||e===void 0||(e=e.navigator)===null||e===void 0)&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)===null||t===void 0||(t=t.navigator)===null||t===void 0?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test((n=window)===null||n===void 0?void 0:n.navigator.userAgent))}function M(e,t){function n(...r){return new Promise((a,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(a).catch(o)})}return n}function R(e,t={}){let n,r,a=h;const o=s=>{clearTimeout(s),a(),a=h};let i;return s=>{const f=u(e),c=u(t.maxWait);return n&&o(n),f<=0||c!==void 0&&c<=0?(r&&(o(r),r=void 0),Promise.resolve(s())):new Promise((m,T)=>{a=t.rejectOnCancel?T:m,i=s,c&&!r&&(r=setTimeout(()=>{n&&o(n),r=void 0,m(i())},c)),n=setTimeout(()=>{r&&o(r),r=void 0,m(s())},f)})}}function X(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function Y(e){return Array.isArray(e)?e:[e]}function B(e){return P()}function $(e){if(!w)return e;let t=0,n,r;const a=()=>{t-=1,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return((...o)=>(t+=1,r||(r=S(!0),n=r.run(()=>e(...o))),d(a),n))}function H(e){return v(e)?g(new Proxy({},{get(t,n,r){return _(Reflect.get(e.value,n,r))},set(t,n,r){return v(e.value[n])&&!v(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):g(e)}function K(e){return H(D(e))}function ee(e,...t){const n=t.flat(),r=n[0];return K(()=>Object.fromEntries(typeof r=="function"?Object.entries(y(e)).filter(([a,o])=>!r(u(o),a)):Object.entries(y(e)).filter(a=>!n.includes(a[0]))))}function te(e,t=1e4){return W((n,r)=>{let a=u(e),o;const i=()=>setTimeout(()=>{a=u(e),r()},u(t));return d(()=>{clearTimeout(o)}),{get(){return n(),a},set(l){a=l,r(),clearTimeout(o),o=i()}}})}function ne(e,t=200,n={}){return M(R(t,n),e)}function re(e,t){B()&&x(e,t)}function oe(e,t,n={}){const{immediate:r=!0,immediateCallback:a=!1}=n,o=b(!1);let i;function l(){i&&(clearTimeout(i),i=void 0)}function s(){o.value=!1,l()}function f(...c){a&&e(),l(),o.value=!0,i=setTimeout(()=>{o.value=!1,i=void 0,e(...c)},u(t))}return r&&(o.value=!0,w&&f()),d(s),{isPending:A(o),start:f,stop:s}}function ae(e,t,n){return C(e,t,{...n,immediate:!0})}export{te as a,Q as b,$ as c,q as d,d as e,V as f,U as g,oe as h,w as i,Z as j,z as k,J as l,Y as m,X as p,ee as r,re as t,ne as u,ae as w}; diff --git a/cloudflare/pages/assets/index-D0L1R3xN.js b/cloudflare/pages/assets/index-D0L1R3xN.js new file mode 100644 index 0000000..beb8502 --- /dev/null +++ b/cloudflare/pages/assets/index-D0L1R3xN.js @@ -0,0 +1 @@ +import{as as z,F as N,d as h,at as S,x as V,au as P,ae as m,b as O,w as j,n as w,u as g,N as A,l as B,q as F}from"./index-BYiXDk_r.js";const y=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,x=z,I=(t,n)=>e=>{var a;if(n?.variants==null)return x(t,e?.class,e?.className);const{variants:s,defaultVariants:r}=n,c=Object.keys(s).map(i=>{const o=e?.[i],u=r?.[i];if(o===null)return null;const d=y(o)||y(u);return s[i][d]}),l=e&&Object.entries(e).reduce((i,o)=>{let[u,d]=o;return d===void 0||(i[u]=d),i},{}),v=n==null||(a=n.compoundVariants)===null||a===void 0?void 0:a.reduce((i,o)=>{let{class:u,className:d,...C}=o;return Object.entries(C).every(k=>{let[b,f]=k;return Array.isArray(f)?f.includes({...r,...l}[b]):{...r,...l}[b]===f})?[...i,u,d]:i},[]);return x(t,c,v,e?.class,e?.className)};function p(t){return t?t.flatMap(n=>n.type===N?p(n.children):[n]):[]}const T=h({name:"PrimitiveSlot",inheritAttrs:!1,setup(t,{attrs:n,slots:e}){return()=>{if(!e.default)return null;const a=p(e.default()),s=a.findIndex(v=>v.type!==S);if(s===-1)return a;const r=a[s];delete r.props?.ref;const c=r.props?V(n,r.props):n,l=P({...r,props:{}},c);return a.length===1?l:(a[s]=l,a)}}}),_=["area","img","input"],G=h({name:"Primitive",inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:"div"}},setup(t,{attrs:n,slots:e}){const a=t.asChild?"template":t.as;return typeof a=="string"&&_.includes(a)?()=>m(a,n):a!=="template"?()=>m(t.as,n,{default:e.default}):()=>m(T,n,{default:e.default})}}),q=h({__name:"Button",props:{variant:{},size:{},class:{type:[Boolean,null,String,Object,Array]},asChild:{type:Boolean},as:{default:"button"}},setup(t){const n=t;return(e,a)=>(B(),O(g(G),{"data-slot":"button","data-variant":t.variant,"data-size":t.size,as:t.as,"as-child":t.asChild,class:w(g(A)(g(L)({variant:t.variant,size:t.size}),n.class))},{default:j(()=>[F(e.$slots,"default")]),_:3},8,["data-variant","data-size","as","as-child","class"]))}}),L=I("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});export{G as P,T as S,q as _,I as c,p as r}; diff --git a/cloudflare/pages/assets/index-wmMfISvJ.js b/cloudflare/pages/assets/index-wmMfISvJ.js new file mode 100644 index 0000000..f541f77 --- /dev/null +++ b/cloudflare/pages/assets/index-wmMfISvJ.js @@ -0,0 +1 @@ +import{m as t,d as n,b as o,w as d,x as c,u as e,N as l,l as u,q as v}from"./index-BYiXDk_r.js";import{P as g,c as p}from"./index-D0L1R3xN.js";import{r as f}from"./index-Ct5H-N73.js";const w=t("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);const k=t("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]),B=n({__name:"Badge",props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(r){const a=r,s=f(a,"class");return(i,h)=>(u(),o(e(g),c({"data-slot":"badge",class:e(l)(e(b)({variant:r.variant}),a.class)},e(s)),{default:d(()=>[v(i.$slots,"default")]),_:3},16,["class"]))}}),b=p("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});export{w as A,B as _,k as a}; diff --git a/cloudflare/pages/assets/list-todo-DaXA5Y93.js b/cloudflare/pages/assets/list-todo-DaXA5Y93.js new file mode 100644 index 0000000..0a9d5ec --- /dev/null +++ b/cloudflare/pages/assets/list-todo-DaXA5Y93.js @@ -0,0 +1 @@ +import{m as t}from"./index-BYiXDk_r.js";const e=t("list-todo",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["rect",{x:"3",y:"4",width:"6",height:"6",rx:"1",key:"cif1o7"}]]);export{e as L}; diff --git a/cloudflare/pages/assets/marked.esm-D9eDbhZJ.js b/cloudflare/pages/assets/marked.esm-D9eDbhZJ.js new file mode 100644 index 0000000..9d4cd18 --- /dev/null +++ b/cloudflare/pages/assets/marked.esm-D9eDbhZJ.js @@ -0,0 +1,59 @@ +function Q(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var R=Q();function se(n){R=n}var S={exec:()=>null};function p(n,e=""){let r=typeof n=="string"?n:n.source,s={replace:(t,i)=>{let l=typeof i=="string"?i:i.source;return l=l.replace(x.caret,"$1"),r=r.replace(t,l),s},getRegex:()=>new RegExp(r,e)};return s}var be=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),htmlBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}>`)},we=/^(?:[ \t]*(?:\n|$))+/,me=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,ye=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,P=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Se=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,H=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,le=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ie=p(le).replace(/bull/g,H).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),$e=p(le).replace(/bull/g,H).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),N=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Re=/^[^\n]+/,O=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Te=p(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",O).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ze=p(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,H).getRegex(),q="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",j=/|$))/,Ae=p("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",j).replace("tag",q).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ae=p(N).replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",q).getRegex(),_e=p(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ae).getRegex(),G={blockquote:_e,code:me,def:Te,fences:ye,heading:Se,hr:P,html:Ae,lheading:ie,list:ze,newline:we,paragraph:ae,table:S,text:Re},V=p("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",q).getRegex(),Pe={...G,lheading:$e,table:V,paragraph:p(N).replace("hr",P).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",V).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",q).getRegex()},Ie={...G,html:p(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",j).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:S,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:p(N).replace("hr",P).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",ie).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Le=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Be=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,oe=/^( {2,}|\\)\n(?!\s*$)/,Ce=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",be?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Qe=p(ue,"u").replace(/punct/g,E).getRegex(),He=p(ue,"u").replace(/punct/g,he).getRegex(),ge="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Ne=p(ge,"gu").replace(/notPunctSpace/g,ce).replace(/punctSpace/g,X).replace(/punct/g,E).getRegex(),Oe=p(ge,"gu").replace(/notPunctSpace/g,ve).replace(/punctSpace/g,Ee).replace(/punct/g,he).getRegex(),je=p("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,ce).replace(/punctSpace/g,X).replace(/punct/g,E).getRegex(),Ge=p(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,pe).getRegex(),Xe="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",We=p(Xe,"gu").replace(/notPunctSpace/g,De).replace(/punctSpace/g,Ze).replace(/punct/g,pe).getRegex(),Fe=p(/\\(punct)/,"gu").replace(/punct/g,E).getRegex(),Ue=p(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Je=p(j).replace("(?:-->|$)","-->").getRegex(),Ke=p("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",Je).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),L=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Ve=p(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",L).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ke=p(/^!?\[(label)\]\[(ref)\]/).replace("label",L).replace("ref",O).getRegex(),fe=p(/^!?\[(ref)\](?:\[\])?/).replace("ref",O).getRegex(),Ye=p("reflink|nolink(?!\\()","g").replace("reflink",ke).replace("nolink",fe).getRegex(),Y=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,W={_backpedal:S,anyPunctuation:Fe,autolink:Ue,blockSkip:Me,br:oe,code:Be,del:S,delLDelim:S,delRDelim:S,emStrongLDelim:Qe,emStrongRDelimAst:Ne,emStrongRDelimUnd:je,escape:Le,link:Ve,nolink:fe,punctuation:qe,reflink:ke,reflinkSearch:Ye,tag:Ke,text:Ce,url:S},et={...W,link:p(/^!?\[(label)\]\((.*?)\)/).replace("label",L).getRegex(),reflink:p(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",L).getRegex()},Z={...W,emStrongRDelimAst:Oe,emStrongLDelim:He,delLDelim:Ge,delRDelim:We,url:p(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Y).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:p(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ee=n=>rt[n];function m(n,e){if(e){if(x.escapeTest.test(n))return n.replace(x.escapeReplace,ee)}else if(x.escapeTestNoEncode.test(n))return n.replace(x.escapeReplaceNoEncode,ee);return n}function te(n){try{n=encodeURI(n).replace(x.percentDecode,"%")}catch{return null}return n}function re(n,e){let r=n.replace(x.findPipe,(i,l,o)=>{let a=!1,h=l;for(;--h>=0&&o[h]==="\\";)a=!a;return a?"|":" |"}),s=r.split(x.splitPipe),t=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length0?-2:-1}function st(n,e=0){let r=e,s="";for(let t of n)if(t===" "){let i=4-r%4;s+=" ".repeat(i),r+=i}else s+=t,r++;return s}function ne(n,e,r,s,t){let i=e.href,l=e.title||null,o=n[1].replace(t.other.outputLinkReplace,"$1");s.state.inLink=!0;let a={type:n[0].charAt(0)==="!"?"image":"link",raw:r,href:i,title:l,text:o,tokens:s.inlineTokens(o)};return s.state.inLink=!1,a}function lt(n,e,r){let s=n.match(r.other.indentCodeCompensation);if(s===null)return e;let t=s[1];return e.split(` +`).map(i=>{let l=i.match(r.other.beginningSpace);if(l===null)return i;let[o]=l;return o.length>=t.length?i.slice(t.length):i}).join(` +`)}var B=class{options;rules;lexer;constructor(n){this.options=n||R}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:A(r,` +`)}}}fences(n){let e=this.rules.block.fences.exec(n);if(e){let r=e[0],s=lt(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(n){let e=this.rules.block.heading.exec(n);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let s=A(r,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(r=s.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(n){let e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:A(e[0],` +`)}}blockquote(n){let e=this.rules.block.blockquote.exec(n);if(e){let r=A(e[0],` +`).split(` +`),s="",t="",i=[];for(;r.length>0;){let l=!1,o=[],a;for(a=0;a1,t={type:"list",raw:"",ordered:s,start:s?+r.slice(0,-1):"",loose:!1,items:[]};r=s?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=s?r:"[*+-]");let i=this.rules.other.listItemRegex(r),l=!1;for(;n;){let a=!1,h="",c="";if(!(e=i.exec(n))||this.rules.block.hr.test(n))break;h=e[0],n=n.substring(h.length);let g=st(e[2].split(` +`,1)[0],e[1].length),u=n.split(` +`,1)[0],d=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):d?f=e[1].length+1:(f=g.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=e[1].length),d&&this.rules.other.blankLine.test(u)&&(h+=u+` +`,n=n.substring(u.length+1),a=!0),!a){let y=this.rules.other.nextBulletRegex(f),U=this.rules.other.hrRegex(f),J=this.rules.other.fencesBeginRegex(f),K=this.rules.other.headingBeginRegex(f),de=this.rules.other.htmlBeginRegex(f),xe=this.rules.other.blockquoteBeginRegex(f);for(;n;){let v=n.split(` +`,1)[0],T;if(u=v,this.options.pedantic?(u=u.replace(this.rules.other.listReplaceNesting," "),T=u):T=u.replace(this.rules.other.tabCharGlobal," "),J.test(u)||K.test(u)||de.test(u)||xe.test(u)||y.test(u)||U.test(u))break;if(T.search(this.rules.other.nonSpaceChar)>=f||!u.trim())c+=` +`+T.slice(f);else{if(d||g.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||J.test(g)||K.test(g)||U.test(g))break;c+=` +`+u}d=!u.trim(),h+=v+` +`,n=n.substring(v.length+1),g=T.slice(f)}}t.loose||(l?t.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(l=!0)),t.items.push({type:"list_item",raw:h,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),t.raw+=h}let o=t.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;t.raw=t.raw.trimEnd();for(let a of t.items){if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),a.task){if(a.text=a.text.replace(this.rules.other.listReplaceTask,""),a.tokens[0]?.type==="text"||a.tokens[0]?.type==="paragraph"){a.tokens[0].raw=a.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),a.tokens[0].text=a.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,"");break}}let h=this.rules.other.listTaskCheckbox.exec(a.raw);if(h){let c={type:"checkbox",raw:h[0]+" ",checked:h[0]!=="[ ]"};a.checked=c.checked,t.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=c.raw+a.tokens[0].raw,a.tokens[0].text=c.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(c)):a.tokens.unshift({type:"paragraph",raw:c.raw,text:c.raw,tokens:[c]}):a.tokens.unshift(c)}}if(!t.loose){let h=a.tokens.filter(g=>g.type==="space"),c=h.length>0&&h.some(g=>this.rules.other.anyLine.test(g.raw));t.loose=c}}if(t.loose)for(let a of t.items){a.loose=!0;for(let h of a.tokens)h.type==="text"&&(h.type="paragraph")}return t}}html(n){let e=this.rules.block.html.exec(n);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(n){let e=this.rules.block.def.exec(n);if(e){let r=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),s=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",t=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:r,raw:e[0],href:s,title:t}}}table(n){let e=this.rules.block.table.exec(n);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let r=re(e[1]),s=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),t=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` +`):[],i={type:"table",raw:e[0],header:[],align:[],rows:[]};if(r.length===s.length){for(let l of s)this.rules.other.tableAlignRight.test(l)?i.align.push("right"):this.rules.other.tableAlignCenter.test(l)?i.align.push("center"):this.rules.other.tableAlignLeft.test(l)?i.align.push("left"):i.align.push(null);for(let l=0;l({text:o,tokens:this.lexer.inline(o),header:!1,align:i.align[a]})));return i}}lheading(n){let e=this.rules.block.lheading.exec(n);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(n){let e=this.rules.block.paragraph.exec(n);if(e){let r=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(n){let e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){let e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){let e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){let e=this.rules.inline.link.exec(n);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let i=A(r.slice(0,-1),"\\");if((r.length-i.length)%2===0)return}else{let i=nt(e[2],"()");if(i===-2)return;if(i>-1){let l=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let s=e[2],t="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(s);i&&(s=i[1],t=i[3])}else t=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?s=s.slice(1):s=s.slice(1,-1)),ne(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:t&&t.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let r;if((r=this.rules.inline.reflink.exec(n))||(r=this.rules.inline.nolink.exec(n))){let s=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),t=e[s.toLowerCase()];if(!t){let i=r[0].charAt(0);return{type:"text",raw:i,text:i}}return ne(r,t,r[0],this.lexer,this.rules)}}emStrong(n,e,r=""){let s=this.rules.inline.emStrongLDelim.exec(n);if(!(!s||s[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!r||this.rules.inline.punctuation.exec(r))){let t=[...s[0]].length-1,i,l,o=t,a=0,h=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*n.length+t);(s=h.exec(e))!=null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i)continue;if(l=[...i].length,s[3]||s[4]){o+=l;continue}else if((s[5]||s[6])&&t%3&&!((t+l)%3)){a+=l;continue}if(o-=l,o>0)continue;l=Math.min(l,l+o+a);let c=[...s[0]][0].length,g=n.slice(0,t+s.index+c+l);if(Math.min(t,l)%2){let d=g.slice(1,-1);return{type:"em",raw:g,text:d,tokens:this.lexer.inlineTokens(d)}}let u=g.slice(2,-2);return{type:"strong",raw:g,text:u,tokens:this.lexer.inlineTokens(u)}}}}codespan(n){let e=this.rules.inline.code.exec(n);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(r),t=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return s&&t&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(n){let e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n,e,r=""){let s=this.rules.inline.delLDelim.exec(n);if(s&&(!s[1]||!r||this.rules.inline.punctuation.exec(r))){let t=[...s[0]].length-1,i,l,o=t,a=this.rules.inline.delRDelim;for(a.lastIndex=0,e=e.slice(-1*n.length+t);(s=a.exec(e))!=null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i||(l=[...i].length,l!==t))continue;if(s[3]||s[4]){o+=l;continue}if(o-=l,o>0)continue;l=Math.min(l,l+o);let h=[...s[0]][0].length,c=n.slice(0,t+s.index+h+l),g=c.slice(t,-t);return{type:"del",raw:c,text:g,tokens:this.lexer.inlineTokens(g)}}}}autolink(n){let e=this.rules.inline.autolink.exec(n);if(e){let r,s;return e[2]==="@"?(r=e[1],s="mailto:"+r):(r=e[1],s=r),{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}url(n){let e;if(e=this.rules.inline.url.exec(n)){let r,s;if(e[2]==="@")r=e[0],s="mailto:"+r;else{let t;do t=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(t!==e[0]);r=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(n){let e=this.rules.inline.text.exec(n);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},b=class D{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||R,this.options.tokenizer=this.options.tokenizer||new B,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:x,block:I.normal,inline:z.normal};this.options.pedantic?(r.block=I.pedantic,r.inline=z.pedantic):this.options.gfm&&(r.block=I.gfm,this.options.breaks?r.inline=z.breaks:r.inline=z.gfm),this.tokenizer.rules=r}static get rules(){return{block:I,inline:z}}static lex(e,r){return new D(r).lex(e)}static lexInline(e,r){return new D(r).inlineTokens(e)}lex(e){e=e.replace(x.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let r=0;r(t=l.call({lexer:this},e,r))?(e=e.substring(t.raw.length),r.push(t),!0):!1))continue;if(t=this.tokenizer.space(e)){e=e.substring(t.raw.length);let l=r.at(-1);t.raw.length===1&&l!==void 0?l.raw+=` +`:r.push(t);continue}if(t=this.tokenizer.code(e)){e=e.substring(t.raw.length);let l=r.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+t.raw,l.text+=` +`+t.text,this.inlineQueue.at(-1).src=l.text):r.push(t);continue}if(t=this.tokenizer.fences(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.heading(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.hr(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.blockquote(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.list(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.html(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.def(e)){e=e.substring(t.raw.length);let l=r.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+t.raw,l.text+=` +`+t.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[t.tag]||(this.tokens.links[t.tag]={href:t.href,title:t.title},r.push(t));continue}if(t=this.tokenizer.table(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.lheading(e)){e=e.substring(t.raw.length),r.push(t);continue}let i=e;if(this.options.extensions?.startBlock){let l=1/0,o=e.slice(1),a;this.options.extensions.startBlock.forEach(h=>{a=h.call({lexer:this},o),typeof a=="number"&&a>=0&&(l=Math.min(l,a))}),l<1/0&&l>=0&&(i=e.substring(0,l+1))}if(this.state.top&&(t=this.tokenizer.paragraph(i))){let l=r.at(-1);s&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+t.raw,l.text+=` +`+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):r.push(t),s=i.length!==e.length,e=e.substring(t.raw.length);continue}if(t=this.tokenizer.text(e)){e=e.substring(t.raw.length);let l=r.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+t.raw,l.text+=` +`+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):r.push(t);continue}if(e){let l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let s=e,t=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(t=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)a.includes(t[0].slice(t[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(t=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,t.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(t=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)i=t[2]?t[2].length:0,s=s.slice(0,t.index+i)+"["+"a".repeat(t[0].length-i-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let l=!1,o="";for(;e;){l||(o=""),l=!1;let a;if(this.options.extensions?.inline?.some(c=>(a=c.call({lexer:this},e,r))?(e=e.substring(a.raw.length),r.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=r.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):r.push(a);continue}if(a=this.tokenizer.emStrong(e,s,o)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.del(e,s,o)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),r.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),r.push(a);continue}let h=e;if(this.options.extensions?.startInline){let c=1/0,g=e.slice(1),u;this.options.extensions.startInline.forEach(d=>{u=d.call({lexer:this},g),typeof u=="number"&&u>=0&&(c=Math.min(c,u))}),c<1/0&&c>=0&&(h=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(h)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(o=a.raw.slice(-1)),l=!0;let c=r.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):r.push(a);continue}if(e){let c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return r}},C=class{options;parser;constructor(n){this.options=n||R}space(n){return""}code({text:n,lang:e,escaped:r}){let s=(e||"").match(x.notSpaceStart)?.[0],t=n.replace(x.endingNewline,"")+` +`;return s?'
'+(r?t:m(t,!0))+`
+`:"
"+(r?t:m(t,!0))+`
+`}blockquote({tokens:n}){return`
+${this.parser.parse(n)}
+`}html({text:n}){return n}def(n){return""}heading({tokens:n,depth:e}){return`${this.parser.parseInline(n)} +`}hr(n){return`
+`}list(n){let e=n.ordered,r=n.start,s="";for(let l=0;l +`+s+" +`}listitem(n){return`
  • ${this.parser.parse(n.tokens)}
  • +`}checkbox({checked:n}){return" '}paragraph({tokens:n}){return`

    ${this.parser.parseInline(n)}

    +`}table(n){let e="",r="";for(let t=0;t${s}`),` + +`+e+` +`+s+`
    +`}tablerow({text:n}){return` +${n} +`}tablecell(n){let e=this.parser.parseInline(n.tokens),r=n.header?"th":"td";return(n.align?`<${r} align="${n.align}">`:`<${r}>`)+e+` +`}strong({tokens:n}){return`${this.parser.parseInline(n)}`}em({tokens:n}){return`${this.parser.parseInline(n)}`}codespan({text:n}){return`${m(n,!0)}`}br(n){return"
    "}del({tokens:n}){return`${this.parser.parseInline(n)}`}link({href:n,title:e,tokens:r}){let s=this.parser.parseInline(r),t=te(n);if(t===null)return s;n=t;let i='
    ",i}image({href:n,title:e,text:r,tokens:s}){s&&(r=this.parser.parseInline(s,this.parser.textRenderer));let t=te(n);if(t===null)return m(r);n=t;let i=`${m(r)}{let l=t[i].flat(1/0);r=r.concat(this.walkTokens(l,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...n){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(r=>{let s={...r};if(s.async=this.defaults.async||s.async||!1,r.extensions&&(r.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let i=e.renderers[t.name];i?e.renderers[t.name]=function(...l){let o=t.renderer.apply(this,l);return o===!1&&(o=i.apply(this,l)),o}:e.renderers[t.name]=t.renderer}if("tokenizer"in t){if(!t.level||t.level!=="block"&&t.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[t.level];i?i.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&(t.level==="block"?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:t.level==="inline"&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),s.extensions=e),r.renderer){let t=this.defaults.renderer||new C(this.defaults);for(let i in r.renderer){if(!(i in t))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let l=i,o=r.renderer[l],a=t[l];t[l]=(...h)=>{let c=o.apply(t,h);return c===!1&&(c=a.apply(t,h)),c||""}}s.renderer=t}if(r.tokenizer){let t=this.defaults.tokenizer||new B(this.defaults);for(let i in r.tokenizer){if(!(i in t))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let l=i,o=r.tokenizer[l],a=t[l];t[l]=(...h)=>{let c=o.apply(t,h);return c===!1&&(c=a.apply(t,h)),c}}s.tokenizer=t}if(r.hooks){let t=this.defaults.hooks||new _;for(let i in r.hooks){if(!(i in t))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let l=i,o=r.hooks[l],a=t[l];_.passThroughHooks.has(i)?t[l]=h=>{if(this.defaults.async&&_.passThroughHooksRespectAsync.has(i))return(async()=>{let g=await o.call(t,h);return a.call(t,g)})();let c=o.call(t,h);return a.call(t,c)}:t[l]=(...h)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(t,h);return g===!1&&(g=await a.apply(t,h)),g})();let c=o.apply(t,h);return c===!1&&(c=a.apply(t,h)),c}}s.hooks=t}if(r.walkTokens){let t=this.defaults.walkTokens,i=r.walkTokens;s.walkTokens=function(l){let o=[];return o.push(i.call(this,l)),t&&(o=o.concat(t.call(this,l))),o}}this.defaults={...this.defaults,...s}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return b.lex(n,e??this.defaults)}parser(n,e){return w.parse(n,e??this.defaults)}parseMarkdown(n){return(e,r)=>{let s={...r},t={...this.defaults,...s},i=this.onError(!!t.silent,!!t.async);if(this.defaults.async===!0&&s.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(t.hooks&&(t.hooks.options=t,t.hooks.block=n),t.async)return(async()=>{let l=t.hooks?await t.hooks.preprocess(e):e,o=await(t.hooks?await t.hooks.provideLexer():n?b.lex:b.lexInline)(l,t),a=t.hooks?await t.hooks.processAllTokens(o):o;t.walkTokens&&await Promise.all(this.walkTokens(a,t.walkTokens));let h=await(t.hooks?await t.hooks.provideParser():n?w.parse:w.parseInline)(a,t);return t.hooks?await t.hooks.postprocess(h):h})().catch(i);try{t.hooks&&(e=t.hooks.preprocess(e));let l=(t.hooks?t.hooks.provideLexer():n?b.lex:b.lexInline)(e,t);t.hooks&&(l=t.hooks.processAllTokens(l)),t.walkTokens&&this.walkTokens(l,t.walkTokens);let o=(t.hooks?t.hooks.provideParser():n?w.parse:w.parseInline)(l,t);return t.hooks&&(o=t.hooks.postprocess(o)),o}catch(l){return i(l)}}}onError(n,e){return r=>{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,n){let s="

    An error occurred:

    "+m(r.message+"",!0)+"
    ";return e?Promise.resolve(s):s}if(e)return Promise.reject(r);throw r}}},$=new it;function k(n,e){return $.parse(n,e)}k.options=k.setOptions=function(n){return $.setOptions(n),k.defaults=$.defaults,se(k.defaults),k};k.getDefaults=Q;k.defaults=R;k.use=function(...n){return $.use(...n),k.defaults=$.defaults,se(k.defaults),k};k.walkTokens=function(n,e){return $.walkTokens(n,e)};k.parseInline=$.parseInline;k.Parser=w;k.parser=w.parse;k.Renderer=C;k.TextRenderer=F;k.Lexer=b;k.lexer=b.lex;k.Tokenizer=B;k.Hooks=_;k.parse=k;k.options;k.setOptions;k.use;k.walkTokens;k.parseInline;w.parse;b.lex;export{k as g}; diff --git a/cloudflare/pages/assets/message-square-Vh7MGSmH.js b/cloudflare/pages/assets/message-square-Vh7MGSmH.js new file mode 100644 index 0000000..355742e --- /dev/null +++ b/cloudflare/pages/assets/message-square-Vh7MGSmH.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const s=e("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);const t=e("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);export{s as L,t as M}; diff --git a/cloudflare/pages/assets/pencil-D1GtMUQI.js b/cloudflare/pages/assets/pencil-D1GtMUQI.js new file mode 100644 index 0000000..c346490 --- /dev/null +++ b/cloudflare/pages/assets/pencil-D1GtMUQI.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const c=a("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);export{c as P}; diff --git a/cloudflare/pages/assets/play-BSoFcJJg.js b/cloudflare/pages/assets/play-BSoFcJJg.js new file mode 100644 index 0000000..6133a38 --- /dev/null +++ b/cloudflare/pages/assets/play-BSoFcJJg.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const o=a("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);export{o as P}; diff --git a/cloudflare/pages/assets/refresh-cw-DOzI5zLk.js b/cloudflare/pages/assets/refresh-cw-DOzI5zLk.js new file mode 100644 index 0000000..3e3d1a7 --- /dev/null +++ b/cloudflare/pages/assets/refresh-cw-DOzI5zLk.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const t=e("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);export{t as R}; diff --git a/cloudflare/pages/assets/save-DkYVQELS.js b/cloudflare/pages/assets/save-DkYVQELS.js new file mode 100644 index 0000000..3e8e7fe --- /dev/null +++ b/cloudflare/pages/assets/save-DkYVQELS.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const t=a("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);export{t as S}; diff --git a/cloudflare/pages/assets/scroll-text-XmJfG4_f.js b/cloudflare/pages/assets/scroll-text-XmJfG4_f.js new file mode 100644 index 0000000..74169cc --- /dev/null +++ b/cloudflare/pages/assets/scroll-text-XmJfG4_f.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const e=a("scroll-text",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]);export{e as S}; diff --git a/cloudflare/pages/assets/search-3_RVfAHZ.js b/cloudflare/pages/assets/search-3_RVfAHZ.js new file mode 100644 index 0000000..5475e1a --- /dev/null +++ b/cloudflare/pages/assets/search-3_RVfAHZ.js @@ -0,0 +1 @@ +import{m as c}from"./index-BYiXDk_r.js";const r=c("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);export{r as S}; diff --git a/cloudflare/pages/assets/settings-CzMAO35A.js b/cloudflare/pages/assets/settings-CzMAO35A.js new file mode 100644 index 0000000..30245f3 --- /dev/null +++ b/cloudflare/pages/assets/settings-CzMAO35A.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const t=e("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);export{t as S}; diff --git a/cloudflare/pages/assets/shield-alert-DYoiGl5J.js b/cloudflare/pages/assets/shield-alert-DYoiGl5J.js new file mode 100644 index 0000000..8b9deec --- /dev/null +++ b/cloudflare/pages/assets/shield-alert-DYoiGl5J.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const t=a("rocket",[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]]);const c=a("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const d=a("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);export{c as R,d as S,t as a}; diff --git a/cloudflare/pages/assets/shield-check-C0gcRV-i.js b/cloudflare/pages/assets/shield-check-C0gcRV-i.js new file mode 100644 index 0000000..162c0a6 --- /dev/null +++ b/cloudflare/pages/assets/shield-check-C0gcRV-i.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const c=e("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);export{c as S}; diff --git a/cloudflare/pages/assets/star-VmEUsCX9.js b/cloudflare/pages/assets/star-VmEUsCX9.js new file mode 100644 index 0000000..f742fc5 --- /dev/null +++ b/cloudflare/pages/assets/star-VmEUsCX9.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const r=a("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);export{r as S}; diff --git a/cloudflare/pages/assets/trending-up-9TLdiVqg.js b/cloudflare/pages/assets/trending-up-9TLdiVqg.js new file mode 100644 index 0000000..9874af6 --- /dev/null +++ b/cloudflare/pages/assets/trending-up-9TLdiVqg.js @@ -0,0 +1 @@ +import{m as n}from"./index-BYiXDk_r.js";const e=n("trending-down",[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]]);const d=n("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]);export{d as T,e as a}; diff --git a/cloudflare/pages/assets/trophy-BMFdgvc4.js b/cloudflare/pages/assets/trophy-BMFdgvc4.js new file mode 100644 index 0000000..d7b9f73 --- /dev/null +++ b/cloudflare/pages/assets/trophy-BMFdgvc4.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const e=a("trophy",[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]]);export{e as T}; diff --git a/cloudflare/pages/assets/useForwardExpose-DjCgLuye.js b/cloudflare/pages/assets/useForwardExpose-DjCgLuye.js new file mode 100644 index 0000000..6c66d4e --- /dev/null +++ b/cloudflare/pages/assets/useForwardExpose-DjCgLuye.js @@ -0,0 +1 @@ +import{c as p}from"./index-CEPd9Ray.js";import{am as f,an as m,k as b,r as d,ai as g}from"./index-BYiXDk_r.js";function O(){const n=g(),t=d(),u=b(()=>c());f(()=>{u.value!==c()&&m(t)});function c(){return t.value&&"$el"in t.value&&["#text","#comment"].includes(t.value.$el.nodeName)?t.value.$el.nextElementSibling:p(t)}const o=Object.assign({},n.exposed),r={};for(const e in n.props)Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>n.props[e]});if(Object.keys(o).length>0)for(const e in o)Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>o[e]});Object.defineProperty(r,"$el",{enumerable:!0,configurable:!0,get:()=>n.vnode.el}),n.exposed=r;function i(e){if(t.value=e,!!e&&(Object.defineProperty(r,"$el",{enumerable:!0,configurable:!0,get:()=>e instanceof Element?e:e.$el}),!(e instanceof Element)&&!Object.prototype.hasOwnProperty.call(e,"$el"))){const a=e.$.exposed,l=Object.assign({},r);for(const s in a)Object.defineProperty(l,s,{enumerable:!0,configurable:!0,get:()=>a[s]});n.exposed=l}}return{forwardRef:i,currentRef:t,currentElement:u}}export{O as u}; diff --git a/cloudflare/pages/assets/usePrimitiveElement-JaAYjjRd.js b/cloudflare/pages/assets/usePrimitiveElement-JaAYjjRd.js new file mode 100644 index 0000000..9c08ba4 --- /dev/null +++ b/cloudflare/pages/assets/usePrimitiveElement-JaAYjjRd.js @@ -0,0 +1 @@ +import{m as n,k as r,r as c}from"./index-BYiXDk_r.js";import{c as i}from"./index-CEPd9Ray.js";const a=n("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);function u(){const e=c(),t=r(()=>["#text","#comment"].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:i(e));return{primitiveElement:e,currentElement:t}}export{a as C,u}; diff --git a/cloudflare/pages/assets/users-C4rtE1G7.js b/cloudflare/pages/assets/users-C4rtE1G7.js new file mode 100644 index 0000000..6c73c62 --- /dev/null +++ b/cloudflare/pages/assets/users-C4rtE1G7.js @@ -0,0 +1 @@ +import{m as e}from"./index-BYiXDk_r.js";const r=e("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);export{r as U}; diff --git a/cloudflare/pages/assets/utils-TyZrBBEb.js b/cloudflare/pages/assets/utils-TyZrBBEb.js new file mode 100644 index 0000000..6f91414 --- /dev/null +++ b/cloudflare/pages/assets/utils-TyZrBBEb.js @@ -0,0 +1 @@ +import{i as D,g as b}from"./Presence-Sy1r65hd.js";import{b as W,c as H}from"./index-CEPd9Ray.js";import{t as Y,c as q,i as P,b as C,d as j}from"./index-Ct5H-N73.js";import{f as $}from"./TooltipTrigger.vue_vue_type_script_setup_true_lang-CuCUfyn9.js";import{k as x,r as S,H as N,C as B,A as V,d as X,W as O,l as G,b as z,w as J,q as Q,u as Z,E as ee}from"./index-BYiXDk_r.js";import{u as te}from"./useForwardExpose-DjCgLuye.js";import{P as ne}from"./index-D0L1R3xN.js";const re=q(()=>{const e=S(new Map),t=S(),n=x(()=>{for(const c of e.value.values())if(c)return!0;return!1}),o=D({scrollBody:S(!0)});let u=null;const l=()=>{document.body.style.paddingRight="",document.body.style.marginRight="",document.body.style.pointerEvents="",document.documentElement.style.removeProperty("--scrollbar-width"),document.body.style.overflow=t.value??"",C&&u?.(),t.value=void 0};return N(n,(c,p)=>{if(!P)return;if(!c){p&&l();return}t.value===void 0&&(t.value=document.body.style.overflow);const i=window.innerWidth-document.documentElement.clientWidth,y={padding:i,margin:0},s=o.scrollBody?.value?typeof o.scrollBody.value=="object"?$({padding:o.scrollBody.value.padding===!0?i:o.scrollBody.value.padding,margin:o.scrollBody.value.margin===!0?i:o.scrollBody.value.margin},y):y:{padding:0,margin:0};i>0&&(document.body.style.paddingRight=typeof s.padding=="number"?`${s.padding}px`:String(s.padding),document.body.style.marginRight=typeof s.margin=="number"?`${s.margin}px`:String(s.margin),document.documentElement.style.setProperty("--scrollbar-width",`${i}px`),document.body.style.overflow="hidden"),C&&(u=W(document,"touchmove",r=>oe(r),{passive:!1})),B(()=>{document.body.style.pointerEvents="none",document.body.style.overflow="hidden"})},{immediate:!0,flush:"sync"}),e});function Ce(e){const t=Math.random().toString(36).substring(2,7),n=re();n.value.set(t,e??!1);const o=x({get:()=>n.value.get(t)??!1,set:u=>n.value.set(t,u)});return Y(()=>{n.value.delete(t)}),o}function K(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}var se=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},g=new WeakMap,w=new WeakMap,F={},T=0,R=function(e){return e&&(e.host||R(e.parentNode))},ae=function(e,t){return t.map(function(n){if(e.contains(n))return n;var o=R(n);return o&&e.contains(o)?o:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},ue=function(e,t,n,o){var u=ae(t,Array.isArray(e)?e:[e]);F[n]||(F[n]=new WeakMap);var l=F[n],c=[],p=new Set,i=new Set(u),y=function(r){!r||p.has(r)||(p.add(r),y(r.parentNode))};u.forEach(y);var s=function(r){!r||i.has(r)||Array.prototype.forEach.call(r.children,function(a){if(p.has(a))s(a);else try{var v=a.getAttribute(o),f=v!==null&&v!=="false",d=(g.get(a)||0)+1,m=(l.get(a)||0)+1;g.set(a,d),l.set(a,m),c.push(a),d===1&&f&&w.set(a,!0),m===1&&a.setAttribute(n,"true"),f||a.setAttribute(o,"true")}catch(h){console.error("aria-hidden: cannot operate on ",a,h)}})};return s(t),p.clear(),T++,function(){c.forEach(function(r){var a=g.get(r)-1,v=l.get(r)-1;g.set(r,a),l.set(r,v),a||(w.has(r)||r.removeAttribute(o),w.delete(r)),v||r.removeAttribute(n)}),T--,T||(g=new WeakMap,g=new WeakMap,w=new WeakMap,F={})}},ie=function(e,t,n){n===void 0&&(n="data-aria-hidden");var o=Array.from(Array.isArray(e)?e:[e]),u=se(e);return u?(o.push.apply(o,Array.from(u.querySelectorAll("[aria-live], script"))),ue(o,u,n,"aria-hidden")):function(){return null}};function Oe(e){let t;N(()=>H(e),n=>{n?t=ie(n):t&&t()}),V(()=>{t&&t()})}const ce=j(()=>S([]));function le(){const e=ce();return{add(t){const n=e.value[0];t!==n&&n?.pause(),e.value=L(e.value,t),e.value.unshift(t)},remove(t){e.value=L(e.value,t),e.value[0]?.resume()}}}function L(e,t){const n=[...e],o=n.indexOf(t);return o!==-1&&n.splice(o,1),n}const A="focusScope.autoFocusOnMount",_="focusScope.autoFocusOnUnmount",k={bubbles:!1,cancelable:!0};function fe(e,{select:t=!1}={}){const n=b();for(const o of e)if(E(o,{select:t}),b()!==n)return!0}function de(e){const t=U(e),n=I(t,e),o=I(t.reverse(),e);return[n,o]}function U(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const u=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||u?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function I(e,t){for(const n of e)if(!pe(n,{upTo:t}))return n}function pe(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function ve(e){return e instanceof HTMLInputElement&&"select"in e}function E(e,{select:t=!1}={}){if(e&&e.focus){const n=b();e.focus({preventScroll:!0}),e!==n&&ve(e)&&t&&e.select()}}var me=X({__name:"FocusScope",props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["mountAutoFocus","unmountAutoFocus"],setup(e,{emit:t}){const n=e,o=t,{currentRef:u,currentElement:l}=te(),c=S(null),p=le(),i=ee({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});O(s=>{if(!P)return;const r=l.value;if(!n.trapped)return;function a(m){if(i.paused||!r)return;const h=m.target;r.contains(h)?c.value=h:E(c.value,{select:!0})}function v(m){if(i.paused||!r)return;const h=m.relatedTarget;h!==null&&(r.contains(h)||E(c.value,{select:!0}))}function f(m){r.contains(c.value)||E(r)}document.addEventListener("focusin",a),document.addEventListener("focusout",v);const d=new MutationObserver(f);r&&d.observe(r,{childList:!0,subtree:!0}),s(()=>{document.removeEventListener("focusin",a),document.removeEventListener("focusout",v),d.disconnect()})}),O(async s=>{const r=l.value;if(await B(),!r)return;p.add(i);const a=b();if(!r.contains(a)){const f=new CustomEvent(A,k);r.addEventListener(A,d=>o("mountAutoFocus",d)),r.dispatchEvent(f),f.defaultPrevented||(fe(U(r),{select:!0}),b()===a&&E(r))}s(()=>{r.removeEventListener(A,m=>o("mountAutoFocus",m));const f=new CustomEvent(_,k),d=m=>{o("unmountAutoFocus",m)};r.addEventListener(_,d),r.dispatchEvent(f),setTimeout(()=>{f.defaultPrevented||E(a??document.body,{select:!0}),r.removeEventListener(_,d),p.remove(i)},0)})});function y(s){if(!n.loop&&!n.trapped||i.paused)return;const r=s.key==="Tab"&&!s.altKey&&!s.ctrlKey&&!s.metaKey,a=b();if(r&&a){const v=s.currentTarget,[f,d]=de(v);f&&d?!s.shiftKey&&a===d?(s.preventDefault(),n.loop&&E(f,{select:!0})):s.shiftKey&&a===f&&(s.preventDefault(),n.loop&&E(d,{select:!0})):a===v&&s.preventDefault()}}return(s,r)=>(G(),z(Z(ne),{ref_key:"currentRef",ref:u,tabindex:"-1","as-child":s.asChild,as:s.as,onKeydown:y},{default:J(()=>[Q(s.$slots,"default")]),_:3},8,["as-child","as"]))}}),Le=me;const ke="menu.itemSelect",M=["Enter"," "],ye=["ArrowDown","PageUp","Home"],he=["ArrowUp","PageDown","End"],Ie=[...ye,...he];[...M],[...M];function Me(e){return e?"open":"closed"}function Ee(e){return e==="indeterminate"}function Pe(e){return Ee(e)?"indeterminate":e?"checked":"unchecked"}function xe(e){const t=b();for(const n of e)if(n===t||(n.focus(),b()!==t))return}function be(e,t){const{x:n,y:o}=e;let u=!1;for(let l=0,c=t.length-1;lo!=s>o&&n<(y-p)*(o-i)/(s-i)+p&&(u=!u)}return u}function Ne(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return be(n,t)}function Be(e){return e.pointerType==="mouse"}export{Le as F,ke as I,he as L,M as S,Ce as a,Ie as b,Be as c,Pe as d,Ee as e,xe as f,Me as g,Ne as i,Oe as u}; diff --git a/cloudflare/pages/assets/webui-BTCBRLGR.js b/cloudflare/pages/assets/webui-BTCBRLGR.js new file mode 100644 index 0000000..311e935 --- /dev/null +++ b/cloudflare/pages/assets/webui-BTCBRLGR.js @@ -0,0 +1 @@ +import{p as e}from"./index-BYiXDk_r.js";const o={version:()=>e.get("/webui/version"),check:()=>e.get("/webui/version/check"),update:()=>e.post("/admin/webui/update")};export{o as w}; diff --git a/cloudflare/pages/assets/zap-B-kRHIBE.js b/cloudflare/pages/assets/zap-B-kRHIBE.js new file mode 100644 index 0000000..f88ad99 --- /dev/null +++ b/cloudflare/pages/assets/zap-B-kRHIBE.js @@ -0,0 +1 @@ +import{m as a}from"./index-BYiXDk_r.js";const o=a("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);export{o as Z}; diff --git a/cloudflare/pages/favicon.ico b/cloudflare/pages/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..62116a028b59de5d61e65b6fe8e446d8e27a145d GIT binary patch literal 3445 zcmaKtX*d)N7ly|YV;_v{8AG;;$&xf#vkYb5*C9d}(I8C|W2Z^7hQ_|VVl0t0jV&VC z*CB++nz3*3dEfWX_v5?1^XHuBoa;Kj?(2B~04e|t00aV@7X)BV4FKHudxHF{@w5N{ z{(J|6{i~650Ki3h03gQ5K!=5qkMVrVqKnWpIq!de00GbM0HN(OCjfw2Kvz@UERYak zI_be_47NY+5!Jsh=InKSaPIB!jRHra9zIarODk!X{$RG~@WSZbd-0=8X6%VNT9UgK zSVRmD{@a6uG;|FiaZ{LHVZ>;B4b(Al6Y zLm7^5SGnkmt!$?G-)c6>h`D;7E9uL(9#}IY?vo&DhCT!ot9=AbU!$i=GKtoPD(hc( z4YH}y8Exr`@pX}Per*!a1*23}d-iH1@=DjId69DY@%&HohooKmuH}q)wA7%6S6Mzz z2EH6eFuQR-N?+EHqOnT3(6jb6rCU_p($XVkn$G2|6%UMLgDt<<&foNLxi) z%%|(@ar5&<*OHz{S=puP)Z4W<5F_`6Zp0(nvs0Y}#j;x*X-#rB*Dj}&BRl%KWlBkb zEUKGu(nH{!nmSOx-!yR3hik0NPIF_A!{QP#JzeFvT#|l%qDoB;{wptGSDp3a18w)P(jYmkbj^;V=y}a0IkWtP<^(t zHMBDapYEv~6Y7nN(~a^_>|_mGJ0DTMsd{+yFEgqB+z+wAt>Vbxc6Vp2an=cgSQF03 zyJNJ7%c z1j|FjkgvopE3Sy@002v}1mkFNo{nqV5zAfDt)mb&Gliy3rQ>L?BxvIEew%O=T zLG0c#{lSmpAZFx7+Z!Yya$c(U*!&Umf{jaIyk3-*t)LaZYU_l8x4tuw$cJSAh(ubPj4rDCc0 zd-Mcli`^*AY@f|x@Tux(5N#yvu?Nm1!AGFFMj-M*8V}Erbd%-&2Mz|rcSy*O66e&^ zj}bI7Yg(vpdj$Ew%y606&f;3K?^3O*&tbPu?{oqXvR#1w5lq>Qc;uKa=HM0Nt;BNc z@LSY@o9o5AG3^hi2?n6>Y(3Mj4c^ec_dd~s zv!b&N(gCUi;r4J(pFOOQ3pBU!!32ZEt*dDfpIYu>o|oon6-6NY1fFY=R#yZEZwzyG z8>s0qxL$zCVrWPwM{w4S;ER*B%7waw+XICq!7hH(6`}j)e@eu%zl?)Zk1)xU$sx=3dxwlTH;_ykGzBd@i2zBLtJUz#fE^WxSr2b~kU*dK*W zAB6Nzdo0Ld8V z+F>R_)zq%*U9BA)?GVosR&jhOrgGph7pC$nY@oeeaUM?zNd@Wug%Y)Qm)r?ey9;Ka zd)-aE21zRLbE|2DqkDq)G;C}9Y8(5@kg{*9_?TPmWlm>{oa=saRcC6XdcGS3*6W+qrwN zue)W8tA2{e6i($wyOi~$)h7l&9N`cBMK6hh>wW@4P*8nzKGqbpklBuwwd`B=%C6H} zG&tRQaUHsq0~9V`#^1l(=ePmo^2CEp`V@58++n}6|Zz30eafd@bHp+TIn}e#Nile?w6hOR;N3O63F+!6}}{&`I88I zog79{T-@H@g^V7i!KlWh2&8j-k6)w3z@I92?{MCM+ z;@4R01jjOAD^TJkA+WZK0p2sYUpnV}AK=&9mEJ5y69f^;?H?&bS2IhZwthB8;lt^D zM}vrYL{iePKw_~$yz6p4YVn?GoDv(-$Lnfobtyy0QG+EYR#TW`yRC;?B$O-0@n^SN z#o^&DuLxNLjVtI6s^hQK)>sLiFC)rzBiyOkhcpDgcFwnaSqB{%WJH$r1u>?Km2UUR zE&1gBRvck9BX*>#U2ZK@AilIxk*?*}kA){;j|?-kk!Qi_+!}7SCiqn;@m|$_k|?tUL~Eth8|uzMt)M^1~wrS409lrd~LX z_1Xm9_U3wO!{#T!k6r{swX}qgeBYn#OUgE=@>QBnk&2ycZB)((%1mvkcjyDnbhQVj z$c3k#7(MO8JYx+Nc3NsKtJ)jc3qw7FXsBG|_ox*>pR?%Gfq+ekdqXD2e6pG%0b(9n zN$qxJ9R5+Pv~a4e)&N4ipIYeDB?4R(=iF&n{5<5Hxs|D$wKn0(cyY&3I2IGPJHJ-X z1c{>`?0R$~>ufGVNAY5#xCrX~%kh{B-WIgyJ7ZJ(_}7Ma`R`Zq{G!tR9j^otq*rOf z&*n%cr}47*Gw^;!=_oble5ed6(X+~d=K*V;w7{5eTK8mJYM}AS?|#QkC!M=wH6zMv zU09IG8C;B1`n;t?er~tBi<$ZunnuqGOYn^NW17IXME~`LW7`p5acX3eVy{xX4i8v{MmUBLZ-a;OGo?DjIud$%~owXD+i_?8*0mt>KH;+ zMyx1nTh&-bd$l2^2hp4fW3Y3C=yUo7laiC~+pgc0kU^HdVq-ye#+M;~-0hAknvYOx zc~N(jAv53pqu&LchPV>Ic59*k`1a`PyXO^6Ol^0@egwP$-&3i23^8xi_2PX6f0e*4 zQ(ZS@VzFq6N@0sT8b&WL?=fxwJmDX}1Sy&nI-S&4y_dLR4{q-B3p7M-Omo7pD!T+1 zPZ|CNzep+V2>oRJr}GR`?F!f8awpeYM@sIvdn>1I)c!8Am}*d>euH0Co|ybfXVy?H zyUO25TMzmfP(OG@*1#-HFV@a!UXm`Xh{sN)Yq;-At3!(bqDwS6{HBt=VwT(E+e{e} ziP$x+t1o4Fr#VtjTizlT)s1z&4o-&&AS{%s?$iiZ^#3UgSrC>gd~(-RJrp^VjSx;O zPsK#j&U8*)DM8b}Rg!xmtUhzu#q8drbkQ>qnmccd`|Q`v0D2M?y$g8zl5DqKnjHE} z73%?LVc~e3=eGtSQHgg~k#|69qO@pJfrzOugdw44;O(UwXH-}k*&kZpvQPgzUj74% CY-ykX literal 0 HcmV?d00001 diff --git a/cloudflare/pages/favicon.png b/cloudflare/pages/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..0943012e40493dd2151cd718b2806a1b3b23ea23 GIT binary patch literal 3971 zcmcgv`8$+d+&}lsG{`bDWt(h+EQyFxA*09IW~nSi;mKBFJSgj!A&(S|HmM}>SVCEo zC1VI-k~WcbWJ$>gX)=qM_x4=Zb6xKr@Lumv=Um_K=lePLea`uQ&h@$M>}W5&e$#pY zfb@O`ncNeaE8jvquLnxZ0|AE*^M+)oxP`z#hXML;E|Q zxTY?(pRoBU`Gfl^7|kNTBfZ7E-L)!CPe%PgP~V6xqCQGRqwaPBgzo{x9rW3H*~CMx zaRcS0Cs}V!kO$89o@(di@P6E@PS#vn3XB>`KohovJTW-_0_s;ylEHk!B-=1ivi|KId6UQl8d@U*d=*et{#vFx zKvpwib61AMYE!V0@dOpE#3gZRFQ$HfF-dP7$WaT+KC8x#0B^Yv@zL@}j{yiQ9Lz;f zy(uk*WOfZ54MP@=dhj193$NB&z}`QDUW_e+CZ$NE0r? z0jrkkN20{A?FfLdgU{l>pg17-pa9kg@o(Y3bpLm0-e3Z77yKrQzi za)Y)D_cjmL@F{{gO2S&6!-a8~cEV z75*)qm}M+*+5q{qJ}tSai)?gpd$B;=kD_Ybf-16!QH}v<(5(*i^Q59xNTQqez(XH- z=X-+s)~#tS*Vmz_w)*R1eHZh&e@-O-B`@0Ks{!=$rJ@r*GgRQ*Er`MF?#5|#1fLUb zNwNhVc6dU2@j->lRj2I+g-21BL1nrzwUA+o1GoP^g0UC;UR3zlVM$Ctck@B>8fzQNVIn&pgr9{KCgH8cjy?jjS=Eg<3j`UR)kDVROz{8XcpBO$jNk zp3!^~3NBpbV{EJ^Avm=S87VIsX^3;$F>f9;74wHZP^>{h(N2H! z=KgANP4fgdV)d8YS5?TTtM}f^o~GLJ9lhwT21*RCLQh_F#~LVVuucs0?>tlIbQ=HA zM8HU(yDFdUXPr)bfCFe3bW{A+>fX5&FAq8YEUj2Opm^-$b9;+~k@8W?!~WFyULs6l z3l#gt#?;Twa?aK{9mQ83Kg||#C9^u*S@D5WF$-G}Ek;bB9zZv-ZZiKKGEI4I$Sg}2 z99}>`K6m1Ay58a`Ug&e%J}L`qRyudX;5~A>#VG4-NalgQOCna?efeU?+?`7n(TTvp zs>`2hF&FuAxrE7%=4MGD2vGR(FwbEmn^UMXu~c_#bg7d{Jq|4ouNysx8uSh-?^mPLVkWrGGr z;`*h(lb4O1XZqC|W(}F&n9kNmte={ROoz&|py2hlFXvfb(yg0huXXvl*Y*sYd&Q`OKmK9FQig>cz1f#>eP-VqaUf}C zZf@Jbx!0EoT@=G?2zEC-8tUFq<7g4X>+3Sf3q(;b{kx0rk}%1^e(c=r?6MKsXU1Mw zeL9;h)wi8&zE=u=W*eo!=qyVZp!w$F7!Eurmk4_z)%8kA+pXNA^cRVs;Ls|AXvu#f z_pxLP(o|MH6zV1w066OGDCU?DoK(juhuZ(}Q(O?Y_tt>Hxu%M#I2efwr{2PUvLhOQeF zQNmjg^$h-;XpbsRx4^&`Cd`WaET{%Da}VwG7p%lr`MpC-U%1boK_gmz(xGap%7$GJ zAN%FFfsidTpGXQ=AahNNs=qE?f2|q21~JDGEwCi5Gem}DLLZ78-#6B#W>Mw|;7H}J zmi}|p-U`NjPFlD|<0PXl48PBoAT>%q1F2A>vg zo+1iW2g(y4@*ln~v}J}&73E$zuo{8I5)m!x;c=BC+H=-;Lb2!=JLIf<9pybk0b0}q zN0yC^N{oHx`86G$CPiCdxocu}{j^ep#>eBpsI>9^OvvmYW%{}|tUF3Es$VsMas)dz zxWJ&gNMT(!E~PiBub=%&StwD51zS8fookfxSbjIs;%XFHbRxXxE_PNg0KA2wjM`#_yd3bBwT~8W5u#5|+m3oU8de=v5z3;W#d=Z3s!IJat?IYq>dn_;0~O3eP-(vK zw-_{jd3I=TKAo=l&e$q&#gHY)WrQ7XP?;kDi^Y|{;XB^S?705@o?}zvpHEM`yqe8q z`(U7P+`m$M{@1S^x$t{`xloN#AmGjke!{7{y4L6RJpK{vJT>)5S~Oj5+wfa0K^<5e zWmS6fquE<->RjPQ%q;Un!v$6G9uIgCGxK|&%p}3W5IFUc5YrWKYbUh#dZ3Wpv|>H| zW|~PN;(+Rv_k*VLa?56dtYT3qtcZ3JT5DY%N8Sb_2=RXE;F}tLXCn0(7g25P}7G6kE~)=MB}Y(J#@;# zMreFXj99a6N*~ArpRAL(v2Ly|$2A`i2c9=e zg~CUo9mVP{Yyamq6#o5(&cQwf(YY-HYKbklIHKN^6A!@ypqV0{dVgO6nm~%(4=gTN&o&=C#cVu&P+-nEQ5cHa&T^Gw? zP=v56=UNy-Zq)XN6iT5f@d2Fx%jP?wWBo*IyK+gd4E~1=qZ=%k0ZHtH`Qpl=o@Cp`_jp%22CIJNf(-c3IQ5p^fQ9C` z>yp_LhePwQl$?i`o}DP%I`L^hM}s2MnNX|*UHjAJ6*Vs8x2^SL;-?2W!yG}4DU*CKHSKye-T*5}F!fc?|sSHMRW6da5qHxA=~Iw-JqBH!Hr z#62>g7G1F5Ng~$|ti@MK49Rs)T5Gey3i9nJ*iZ44K{^7!2G6x{4N-r%HbXB9B!hA7 zoM!wtM{1K`Fvn#GnYxXc5nhl*O-F<0`JC3S8W`eZuS_=V4{p_!06!-L@2;L#0slZP zkL&q&s?zr1rNO+YeiH+KhX6)YTyfKsP4^H0 literal 0 HcmV?d00001 diff --git a/cloudflare/pages/favicon.svg b/cloudflare/pages/favicon.svg new file mode 100644 index 0000000..53d5552 --- /dev/null +++ b/cloudflare/pages/favicon.svg @@ -0,0 +1,4 @@ + + + M + diff --git a/cloudflare/pages/index.html b/cloudflare/pages/index.html index d319f0c..824c8cb 100644 --- a/cloudflare/pages/index.html +++ b/cloudflare/pages/index.html @@ -1,11 +1,18 @@ -OpenMOSS Cloudflare Pages
    Cloudflare Pages + Workers API + D1

    OpenMOSS Cloudflare

    前端由 Cloudflare Pages 托管,API 由 Worker 提供,数据持久化到 D1。

    Admin Login

    Agent 注册

    输出

    Ready. API_BASE=https://openmoss-cloudflare.97274247.workers.dev
    \ No newline at end of file + + + + + + + + + + + OpenMOSS + + + + +
    + + diff --git a/cloudflare/pages/logo-200.png b/cloudflare/pages/logo-200.png new file mode 100644 index 0000000000000000000000000000000000000000..95f42cdfe55e0d90070e108dc648eb8ed23d468d GIT binary patch literal 38391 zcmV)*K#9MJP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91$e;rN1ONa40RR91!T zfP}qe%2HHhIT075#ZgDywTk-p*H*2ow$%=;r4GcZb&C_VDk7pNifoX*H(?|pd*}T> zpL5@R?|r`s6cI;|o4oH`=bpRHx%b>Ha#S5HfukjGv;>Zpz|j&oS^`H);AjaPErFvY zaI^%DmcS8H0*>QE;fvI7iW7CjWb7xBk%*s2KEKy&f*InkzWVBZYgey4b7%JU?t6Fd zjfsqkl2%z+B~3D#e{lc(e|fQ2uU^I9Yod-ucC-Y3=n`NranVH=ozl5ehuLXqsZM-q zh7;eko0HsXpp(-2I43^6gA*5@=(KCodcnQFzqi*9o!+DI|L+nw+JpS>GCC*-Fh|7L zv16~AIdjG%`%0pslG_cF`1E!X6PGBFQ85x38Hq1KO82glT?<~6wwXbekLo{c2}J*}(H}XnuU)%#SV4Y%Qf#9h z5*gPJ%uy{7g5r&cmI!=QHBOCGmljA&QX{FX7Fo9J>l+6T9z0;{)~%79Ug(gLKCNkb zO%1|DL^|!-wcD1EkWkgQapNket*tUM%ac=+wzX>2c6YaK-S&Dq~|~BtAYtl9CcjV`5^qHEh^mO^X(ptJ2caW}SHAiA#R5SFfJZs#R;* zxpN0Zvu%=>mkZcR4|i-#jDSfBnq_3HXx6OR^j`gXeen1D|Go&!QtAO6H5^h29A%J0 zC^j<1pa1;lHeY`E<;ZpG)}5J`mp5Sdp53W6)isJOH91MTcIzs=`y4CB9($~G>)K6P zv}_@b8a0ySq-2Q(LDyEMm#}SCd0DBfT(wH3OnFtNPMs<}dUTgtZn;G|b?PKLwr!X7 z8#X{hTP6z@E|5iw7R!bW>&0VV=G#oF~v!0oT)_Dp+kG;z5l-J)Krr&Yn%!)L}{`4K+TCZRO0PmyY(4P=}A97YfC{Yt8OgO%4*JIvEO-oTiicLszGP(|NI-PmD({1b{ zx?Lo*MTWC_t)C!E^!;3OcKf{OvGDn zzM+JE{q?^B!&ZYa*o*iKLgv%((93A%SOsd`+BMEuXN}abadB}@-@bjHgmc1?U(??_ zhd=4<*C2|h6{}Z|d*+#EUjF*)CButLN~4=}I8NG}c)29B7$BfgsVpxSsVtFgbDx$A zes;dxcKhwdEh0h}ktm;p$|%O2RpG#gexyVyH3tF&{S1Wt4FIVV?Nr8{_^Ppe<(Te0 zr5amV{`U93>r`^j-o0V3ln9lYY#29~n+n3GH*PGW$BY4NwS4;Nr;@#E*Rg0Mj={L( z-Nzq)++Sc}ls|D5D8-*vNvvA6D&^A4FMVLe@)g$>E6Bj)TK+8UWhav-HMMgqWVcr_g!_>RmYARHR_XjbLU-KSX3;n`ko~n zPydZXq;`;EFbl*LFa~5T$XnHw#ge;rri>f+GwFKFF<_3`4XiSQDNp?ku`6L4PusVE zM?6KdbvKSAWS5u;2f{YQ9m*W^;ue&oq$GLhp$DMCj1zJu)Ey-S{$JXuDKJWE&YO*-8Op;^3v zplal9<9-7MN`nSz^4@#z%ig_vdrw=msAlu#&9m;g=bqXb2uE;)+kY|)g7HS=@>R>P zg`7PpHzzl_VP-e!Fzg1Yiftk#g$3GUaAP1z*pMs5t4PUS`nL4#)=F-_;|}yJH3331 zCg7>$Yuzb17hClU5VbjYA_cvH5YL zCj!$C8gznSATOWJnkD=8?Hi2VWHrRCWe1M=$oKt8h*%tqpFDKvO&?C1{x6I-;+u6H zENzG1AjMezD=#SoBY<37868{AL9qBJUX>L{<=(Y&#+heHY+O9HtD6>`WXz8{uk2?@ z#gaJDkqBM1*4wzLjiQg|tOn2O8AAPin@xdnsls@vP1|;I&DB@Sn{U1;3+FGu_#)Pe zi|Bkd4DHtx6Y^DwjgoiYbGM8db(Rzq6hzLLG2@{J9(W+rkMpN#I^r3GJ;#ZI2mgBh z{CR&X*q0yCyyt1sV&J8czpn`6i*lDa3`OdinHdeMd)dCN5*c9z!5o)Z;t!H1Lt1*K zyET)XI2fl2y3ua&L;xV%kNy_G#AAMqqctm(3uv%m^<1vH>PksWN|Y!5{iH-hv1*Ck z#DEc%i#Ie*8-ERY#~AD=o;Y!$v~Jy6cI?=ZfnCZIQGP$^@yHR)AZ(+tx$uJJ%a%S^ zg28x;o~KK*-eVYNO7^Um=Gc`!46mi+Sa%cQWdP~Lp&EzB{* zA|4Z9|H0gpX-gqGvo!`|nDIaVxfB-{<4nquKmC;VZ5^=;^3X$*nt%A=hfnR@vp2Cp zW>?7?cmbGWuMV^!KcV@>Fxk=`&1|n-JIxfostU5D&#`?m1xhKyc#_a+U^dTK8 z5z?RzE*YC(>Zks6rojbsjSB4ftL>ZrRH6sq`I8e*JV9PUFH(U;PF;6#)1yqO=`o4Y zJTn?tZ8}uP(cru8x=YWmY}>Z2HO{`={LNEyWP~^(83b~3%+pUlG7)FJTgN3gly+Dd zFDfjC2*EK2vdmm7gMc!WOVmMYREZRBT>p^jVjNKFT&t!@UbY9YL`U6_nXh?-M*`&M zdJ$B?p;K9NxV!N^_+R#1(J^uIi;FLodGqGU^5x6H+&r9RF9WRMCjCOgtHD-*vQeHg{CM)~6lOZb-36~=XBhk|Pr;YA0dG=6J=?)!ua zX91A?8VzI88(7gZ*3?wVnP;4-3y9M`{18_TMN1scvDfD@uc>pMDw}zJ7Y=NRGH$P2PL&y(U**d(EFpic2KD{Xj`=bDZR4Zv~Z- zERA5qUnOECDnqW`u5YDiO!1Z%q4kZz_#<6ctZfLT9Q`pEtQ|*1jM1ld>lJXPr(u;~ zXqrth#!{O}IPpwH7>+5Tzz8~a!mN{ui*P4nl$4a>yn3D#mz1FA>nJb3^b*d$H^;h0 zo)i@osmN80^%2fkvGJhz6&(|eiy-3lC~!hzf~2OTsA$!oVFSU15Hc2fwjO-wA=$Wb z<1gQMI1gl^@)%$Fs@*++>_0+pRnf2+N4zAkidEVVpQW1^4RrwNy zt3S>55oDPIa`YyV5nLyYa@ocd1%G)>=)O%~Ny)0$WZ~i^(xy$DI`&@~cvEO3HbcOc zPlAO>NPd!JaZ%y?PDKsIS+{ z9(M2E!-YO&0u$iSf8(&0LgvXYFqcoXZ{L1-lV(j8CB!8xY>}0yh zi$offnRV;{%EOG**6rJ58O9Tf7A?|`mo;qPz8z^Y4LPm=!i_0Sr6n$gXwkAIw!~zj z^=}~=%`>obH(hY>OK``Q#A0)zG8-ERjg37I?&`u6aXAL`?0MMJwbxGA24<>L3#fU@`inPiPauhNJE`xJJ}L4}o3{rvqgJ)-Z5mihMlt z6PW{j?YgxfWCPFLx?Q?-kv_fq;HHxv(xGDqX$gjCj2lz9agoeoV`FMKexlIEaTW=i zE^3Bulo1}81~Mmg*G0VlYu~2LE9Z?FGxg$&FWw7$^;#UWHD=1H9{-~9<2rQgID7rNb$!!24wBX0V2y;`H>{-`BE0(eyTl@ z5_I#qgt4KnS+Y1piehYZ4CRGy)(bQ=)E*%Tqo z-NMljKcjhLBs_SJ7k3daS+W>u|5($HJzN^Fc}B*r%&e@J&OLYJbGO}g*W&uhC`Zg7 z{id64>X(z7+Xpo%O*)<=xJg9UJR%{#lMrn0z}i!B2yj%S5j$+A7_G!b082AUM6~cz z3v^$3t~P=Y5R1g@*f9A z1-tLE%P!0IQ&vArfg-9O3Ep2S2Of9aALh-UcSmeey7V~jKFQs?M=DB-a5XO50MldW zZe3Qs-j@r;VQ&JZ5){ zc|`^I(1>UpyToJqH!U><;#@;%*f3QZq@_vS-*a*JpTA3dE$x5 z-2BM>U0VhW7;pUruN6D9T7bU#H)lZ$8;T4gCnHL%{qz`9fuyISX)I< z7bt^FVcI{6R3sE77V0il<8F0hR#?L%RcNL884#E9l+s*sbDb0!aJjCEoFWuY>@oh; zYu3oyZ@(=sV%l{vZb78N13Fl(zEiMfgRSbvNMd5LV&Kl)ii$F_n?rxlJ@O8 z%3uHbH@WoEOXSWw?-ooEx5~-MnKEqHus@)_?yWCOazrr5gAe{OJ!kLU_N>X2jLz7) zU4hHhYtVa`DO?p3P`P9VRZ7{)LPe!(0Lh{!m=A294iN`a@m3}@2ANfjWvJC+f` zk9d@z;m&o1C@jw9@ z>W@j0=){H+m5?RTX^9fuh+_<5usF$(Tsxsyhce}O2Qzv_XgKnV%Vk4uiF~?biADIo5j2JRd&Kh~D^y$?dd)a!(Yp+g`M;>`ZZvDUCM9iK&`_AKz8-!|b?x_z< zazrr5j2T}XgN=2`WQgR(t)!}~1QpC4!)=FMrce#_PDU}rMt?w&7NAT|K@+EX<#1j?oeuE~uTIH0YyccIXpp4fvTBAQ zQ&eE<3l)e(bl^$pS(WpU}Hmw{QA z{T?%1Jd8C3-;Y`y5e$M#J%#i5v1ke7lGAZ~wn!^CLMz%3j;RI97RE+GBsG%!Xyj_T zp*t`LUWVeHr2GObGNLs``>BKr%~j}SKqS#|u~LFvuOEFpLncAy#trYvC?}k7f^PU5 zIr2=bqhufqnW93)CuOb>ng^R|0t{-CN*fP#mxA*OLV~E)^XUm)K zOqW@+=gPJ%TcxtB5OfWZt(q6TW74*K7q;;)M-LeyP zWfJ6v?}e~;TfJt3y!O`n^42>uu&TZmYd^U-+)<31S6L3Zp8V8p-9BggY1z7m-fgnvKbdL3sQk#k- zH<2$^?UB>R{910m=|Z{gx@%N;8iV~utysQs zc)1Crjm0*MGL@i6T9zD5YiDe9XH^D>)K-w&R7S@ofpTMY1=%HS9ba&4!r7-6o_}5@ zKRFp<)K#%3=xlB zi!)50eLh#7fB7w$HhmUEs%_#_qPM^fWD<34bzrxv3;H>n8E| zq7oZ{`dOyH3;tlqIT)-PQ59y*1Iv=#3hi#DRCgo+mt$1Nr^xMpd0C2a?j7qRvIvWe z8#b(MUOSyXE|+@GAULa#Tv%L~&SH&0Me5cG3?NyF`tMc}Yf-lgSv%mhS8(Zu&ZhSu zCbW=fQPGSFb_LTxVzE^NHxlZ!<>V)y)YW62y}0wvy9779>sW&)^2*A=6vT;-nktHJ zF3m6wO#(bLP77iHU7HEZAj}8hxJJQgR&ED*>)j9K$^X16v%i=tMf>)kwkQwsALc$HwVT*L|B16P+Y{DH0g2q_mlsYB8)dU zzL;>+O&ENhuG>4xFw<3nmXSoPTmhUgdCHotD5Vtd`5J@i(Tv$mk`fsa#mC3#R*$#e zm@bq4{gN_9c}X6Ku?PfPx5(t9XY9myXv(Q7lalQVq-^(cNzCjkNiF)L?BY;Xm?;Em zEnY^UEdb)-bU8Vi9w<-4B-{fB$qZj{VV;zu4Dn*tGKg5SpLyn)Lrd8A6sq1c2xhO^ zpx4lRM8&1(o+1UrwAB-o; z%PRysg$3^b%J2~*BrzdTdkbzcR|Qlg1~*pY7Wg$i2ni>Yc}&#y7Z@~srpJiG3{i1u ziM;maf90{sFXCp$`BGk*2T>{?Lkqlt7{FiKNJIw0q{)zKZMcJT!6PJ6v~jkS?_Dn` z9Y&z>Xo)LX$(-m)m^n_BGdlJlP-G3gEe7i;9HZ1!gVC}VNqOEXEHE~#I_abnf7h>H zKTbFPs8zjZki7i7G)|dPabR7oGcY6u{MqgvmB>0&l7WsfCt5QDL$OP%6qHHEprtHt zyX0?}BSl*mLaa%WK_?BC-`p}mPC9Xru5ob2tQ0*4Vaaf$i#ioO403DOFD%b_@Q*|l zkHIlTsdwJ}NFD`ad@*M(t_RLDqEz)a*(j@#yGbLPFoyr7f?*7-aWQOGS(q((OQ%S3 z`(YB-v^xruA{WIhqnHm1kIZ09R4J8(Tcvd8B0Ofg3(V1=a`=d0w?6;;^Y6Xz!VCW^ zF+aF}y=M?S(a}Wb?J>m|8I!2u6)$*W-LN_46eY%_1#aBzSR?THcPMO5VfPiBov6{@5(GZ;yhuizGMwLJU zlt?2#x?3Ga7m#jTcZrf1+ylI?Fkjwyf0{f#`30FXcLAnp^ChCX5Ix3$7{ibxFqHJaLIRXFafS=Wm&U4P{5qxt>K+w z`CFwTXALIQc40;@O4_zC(MtA3TuR7!_Uxf_A_t5fX=W2r>+1Y#oOHJ8PfhrUO{$R91YV znLQ8BeMCia-MU6LZr&ul@dI0or@Q)cS=?McBw4b z0Y*ZDg6%dLEn9Bs)w9?0zxwsB{(-GEd)Tnl7gc{!x}Orot4a5M_SvVukHq>%hcoU1 zAz-Wewzay5$CH7)K+O<5)-FJdDn?;}kMEZkXMZh4+ZJKA1~WlWgi}HY(43jF^c~u? zZ7Y5H9Vh(;4w7zoexOCmEF4HmfhZQEOcDbwL6n%ap^o+zpRaSvxM5E2@!GL7TfUsL zP~Q7srp%o66%HtE(W%;q>XQ9T)oLpFW9ZeVcf$ed;ipxt-VgHT)pjV1w*G`u{~&wN zk?Exh4P(j)jSYI=XpBe595pCYD&{>ctzk(<^X3aM1^)7_x8C~d;K74UAuB}v`Kk9k zNK9NzI$KFy0Y+<9joyU42&mok2J8{odw@Bp%JMcz(T*ijwr4dOXN(a^H_8}pr70bd zQe1*iqi^4YH4uJpzWS0*Rc7M-@(vw4Nqc;4+jfv<87(9Y3x>(bskjV*@1JwKz1dn) zjMITTv-jv;sHI;olch^|GH@Hj_!1k{1rlM#1)C3_u2F`RKh~ z`$4Qdt#XIU95%b!(lZbp0!s1VhdnVEy((`5PAuYFd()=bO`0@Wl9`z~9rua7^Y_31 zeG7VvvUlEjClI)P8N+g3zY@>Xwr$^b;>PtGua8S@h92Y|J%7G$#|B;Pj>JqpXDsm~ChA2B4RL6zF&@6*$M@E)9mifV@J*9ce7uc>M{6m% zY2JXE>q4CNuE3ZIQ{sAT7T1bmk#2*mT8*8&>(=Q-4>mh`pv+oartz#n18`eDVmi+{ z>&(CX?8lF>*GJ zXWJJoUL^1R_kF=ddpJ_NRbhB6*$>S8ySdl04MBq`@G@DrV8N*qC;s!UBZ)bf%X-Zq zNPi>H!=z{IDeeqKW9)v*%=_0%v=ooy4pmPF%yz zPGnRptCE5fW*#GDC2z>h0Qy?BCgioz!`|~s581~>kGD|qa5I@!OjnL?{TF^;_Y=nB{n>wHaE!PFUTJ(q7cuKQ#3MZu`&5Nkx?w+&9D|+bAp^wd)HR}qPP3n~gg4y$#!bnBdkGdNs z$QWK3xPG+5XykF49c2hyRww8^^hhn4f`re{Dr*YHPMWmt7S8I{U1KGlK=cO2LckU< z+VJ54m|jc6K1?8}=E;N#MrFcag&*5*sxa=k=GtrJ>8GEwSdzf7Z$aaX*wOAnP>TZ%#H*;7_Hddyb zxR8ANxgdn_p$r^h84Z=f!^SIyco)_q|C)$ApN{P%6$)kHObFQMfb{WE(H+@4FTsgH z-a=9DRlOInSOeMF*&`M%T=*-qY0*}lTQ_dqvBK%YmM+-Bn~H^p7tAxb2rM2S0ndNn zc`{v#V4RB24d#)U3vLNWb;7uCA;{sz^r=$D&_t@0L~MD*1u)uvf9s0GOO=V=#-%J0 zl0vx9Zrw~ITsPuO8@KttHFc_xhaWF@{MkD9B%kD^geNH<|Usqu%!*=p`cX z$jcaBjY&!(F=xS50l@nA5;5Q+wPUE&5okyKn8BZV?H z)1z6N@v(p=1vZ7Xkh{PKr)g*xMI<(h#o(bG{jmNL?XJP7K&r!r06QTJQ%aXAoQWAf z{^$DsNEHrhc_O7v8g+(8rgmlT8iHB9W(SwLA1_qB7qRy2*>mjNx$|yCw~j4H ztJqUoESifzdia7>EEX4A;l8hzbbIQufLKfQWS_1XTaxC!S<2nWIz0yzDBw!9IOrttgfYA>NhFmm+7~@n{!3{dj zw}*Vj-@+YO_rn@|#94{>xi$lF)al!|ujYyQ;)lIk&ToJBTL;ILor)@xW=%Wupm{>R z%KVRMKkKYf8a6g2&cW?1SV%v@-mrtz4y3NCK!3E>hlli*;&-d%O`xxwq_7!6`d9oV)xMTS8%P!NcDrT0DJs}`n zP=?`}NKsMYVAPShd7A-`s_(Z1Q20r>6nQntE7)^HMxYf7Sp`Qg!QO&y)b(>$fZ1zs z`viIp?Ln|gY`0U`-s3mF`JFcY<>)e!L&?90t_x^(G^GL6(81fm;s ztgf>sL2t}nJEM7vl1CqXwB7eh6^A!A(^wu}oZlNZtX{W(xYJtOdToOJHZ!D+*OrYx z__TTUnmV+4bTeK|I9o&$7Fe-EI0@%EevUW8?Q2ecNJ2xo&A&apNV}ytwzS+thsLuWG0ISmCr#2==_D2~sTuUL+r ztlFD>{u~Fl4}hfe0Rn z1;$F5aPuwLMVqZB9~GCy!Rak1E5fMdAbuFigyF3%CWkiIu3fv;IO*}n<(6A+kzf4c z65R5>*?Ox!W5x{MP6SYfNoaBt=enPE>S@YM*2l!n0AMM6m^k5ClOFW1uc}@%NPbRX z7DNhE8*0o5?phCiKSHZpsbMu_T1D&48h85*7)kraCUWYjr|1=*L_@+ekT5F&(`J-* zU@+R)cxY+swyk1M)17zTd3t{?kLL~?c$~Jp(YV%U^QH~*%zyp^i3C&078wlKN(p2> ze(UwWbiaw9i5NYs<{%YZ3NZe8@WBV=zyJMjEp)3^uL5CX3YR%WP=mpy!|43wQxko9 z_m&KtThT2xUWxfAxkaVAvbsOYs@~FBy-hf)Vc)*oruu$|)`?FDeihM#>ePBQmFrrJ zMkoCc*7defBrZOBqr?nR%lf+*VRa#ukm+ia4Noy;&6>4>Z7}LFf58IPArj(%(h}gK zSVib)c>`h=WP9Db7?KOM5GKS`@$B!%FtHEsn?#?4-d{NDo|BWSm(;Nb@cGkaH73Q) zAg@dnp1Zv|VuJ$F=Z83e5ojv_?2sll5Sh6rrsP!E!Y z))s$isajBq0;JE%))Z2L?)L1>C)fw*i6Y(!)Z_B0%e{A=PPauGzD zv(GsnvsquDH^Ifw0K|Y6$6nX#TYqM^tZlVjESku0%r=H_-HZp6u-z`rhU8eGV}}m9 z10Xz9(9ZPg7Z%>nxnH_`3#D7vZV1jqnwZ#dum@HJTqVUtJnw}eKt4S-&_Xw#Ng+iTLvB>jOV$>guKd^G%wk^(o{*R=%Qh{M_~ zK0Zl6rQ;2pMStPBXJtB$wMKy{$b?)Z^AF)`&&<88k#q=0f zs$v)y6%58^>`FrVZaFV-pyD?0Xg)Z@OC+cO$RK1M_JX|H)GC7metu%qi`F21I(m$u z7W%rM8`k1tufTWGIWRwv>V{W!ysVAA2H>lk6AGJF57>Et*zA5HO!wHZ;5TAmidHQN3?W16g<%1H(cLOGHmnZ@0eJ+pdpw zz%HDXKuWNcrgpl*EnLyhb9O7!gE0X?1U^(EcI^5Ae0P;E+_;I)!>J&&;erK-WxSQ- zgcAnIOE0|$af)I%01(cEAuwixz&#Dp8tH5hEb6B|##>?dLo1WUo`{#>QEkQ)?Ysqx za1-Nl$=+N)No6d;GxudLaYhIMYW(u_+PP0zLKAzh%srvHIwbdbmF$hL4bQ z@qS`8F21nkY5l$AkV{kOiBKP|w;i3q-N8<4FSx~5U-Wv-API@dpf+1! zhKTHMXa)E%Ufl+qOzn|4$#6jr!+?~xx$tFcnYv!_@5XIIl2royrOYsH+*o<}`txp~5`W#E7Tj0$Txxa19AhYlSD3wSaS zhoIhl=UqGjT_i(>43Yc(aG$=(&YtF=6cWiNpeZJz%LH@Svhz}ZP-uS4K=qkHoVfT{ zzOae%^+`&J*VdC)@^w|1Lb_o+Ko^sN=VLf_FzQ1XlMQWj1Fs^8F#-=n8Z0iJamMK~ z0xQnbKb$6UcpjNetW6%r1!RR^UVa(GB;4c0OXWNwV>|{~6ke;v78ZH#x#xBLBD!F; z{QUTa^5Cx0uE?n3CR&Pp-W&8lR@axRG#?~|=MYsg&8EI~r>>)-cMe-gMS z=Fx=&A4mZG<1k2n_#Y3+*=L_4>(;HsKsgbBW;{@Z%bhQ|{&Bg{_pIjGX8|FlAHjBs^VQ)7~q4bBhoS@vO#N5Y_-HyluF;s zJbAK5wk%qoBY*keKQj7^=cH-d?sDQuC(F>2Pm}@u`r;|HOuf006A8R|kwsV+C7Ytf zFN@47n&HG}Ah_94EgIMdq7~~U6&PRf8p(R8j4)d-la7~{Vq z2Mk8eri)oW2oJOq7pdWv4)yh`Jsc|B9tz19uex^as;k!LpFc+Lu;pcJEm~&a72JE| zF`UbYCX;J#f;53M^sRNQF)YM8eq(-iq5S;3Gh|5G68ZAp4szv)rV@u6DpHE`EOdt|MlG_19`4YKyoGNpf?GJ7#v9nPnu@e- z9xvlhYAhvXHL`qbsXRIJ9XaE)|H?xTKZ4n&3uBy5E>Z^UfdSt5C4AQQ1=WTJHeO^;qQid^fU1T4q2~?ILe4l*%5N4Qd ze8?mqRuI|_+*`|!YXgqMnIJ!eX<32Pbuzd~DD*L+lKC}h;7k(J*riKnh2cUZ8Hc@C z6hs`}<@+`U-~W2_3Hf^NOc~xOLf*Y8QwDUzbJP&?Dj-fVi<(W1lW|cYt+3-3HwyfQ zRPio4WFI)<{0c=#w}+w>$5VrN&P4jRi%&QF;Z4qEPRNR4D9EK#YG!`O$7Su{t%M8b$RhM zu)CizX<7hBSKLRu6B-98^-|UA9%RsVWJ_EJo)(!m+P))w5 z;1k_PGp5VM7hh~>UXc@lAsL zguL>H4$`s-UYx>AR3!!&5s@`Iy=&tmu^I)PMs{0Blb((zPmuDJIS2&@^dJhzi3SX$ zan?x+Azl@iIkG3eTBa|~kw-r*kn3*vy|if2T&I~$??>b&2i8s(Rdj}hjmG-*8)W(N zmAYW51%$K^&N6Hiw%Xt<{{k@HLCzbSD1J=8^_oFg@W&lDXdxc78LHbsyjo-t!{QQ< zRyJv;j*@3(YP+ePZtYt*5F4&F<-J=N@8At~wA@?|v5L{DO_BKS^!NO%GjvNh^d}k~ zOTFu!KgnsGD&&!CJL4vLFa|{__;c<-30`{wxY&5vd*H1_ry6gLK0z=lA4g{9T9 zuee6?@a2|NOHL8iLh{RHFZ6(~=pRbu&J-f9a18l}j275&?JDZr{39KK}S)x#*$`AckOF1g)ep zl#7V)L3?fdbWuUb(726&@nHt41@6CHIj>AM@2Zy85O*RmWy>XvLbUb;WtEa!R3p0! zagENtYT21vDckZYC3{~L7@$V>7FK~Nssvydz#EY(J~~oT6Cx!&IYwHh#YpRhvC^w$ zqO@%sE8UvK$(rmUx$?yg^7HW*%H&Cp>DwbU5c`-cO&ZF;c9cHDgyxE(SOr8fUY^Ii zF=nHHL6MO8YcN1hDa9$ul{i{#0qUJj>ZsT1?z``9@y~xwT$Y=g*N_!w6l;k!ZL{Xq znsId<>FJ9`eppk-8WcYyo)M>rf#lhpS8*VU%e!9eN#3|4n2x9QyA@aco?*l)>Vl09RIFh)|)Tf||(QO86;%N74p zh-EniHL_`Mg)H1uB%iD*lGXd-rCs;_*v@jfj2nF}w!6gZESi^IHH4?wq}B8weyTYs z5rbXF|9tpixpBe--9@Z9ase%KaJDWHZ#14Ya@3e9Q(k&KG_Lw(tE*({R}PTc2@@uC z{m*}%U6Pl#FUIQukTct3*nY!g*0$eV4xIs!W79n3S zjGi4gh}|&cp>QTK02a*aO1EpaPg9_@l^C&nU7UZ~OC&a; zT;edx6$NHxd}P`38i-6$Ns`>CnRM)OjGT1hiE`@jA<`Y|IN&6+D2bUZJ7&;SGSf_l z&AgXLlY4c>57S8Im^!P6dJN*%KD`X_lfYS@LE13b=myu2l0o%D9BJ5~ zq3(k1hkZ;Ouv@SolPFFicX1n>;S6J38J>h?(_+Ke(7KJrWmfu?WAQH!TRV9AFgGt> zFJGW|Mg~bvPL@X4aM-j-x-`K#mUuk+X%%gg?8 zww_Q{O2RcHR%gvJJLfy^1dol4!MTy9`tp-H5OuiX@nC#4 z?irAvH$@+-f@b4}2>i&^iB@Jm8qBc)gX#^y4lT0(vT zKy+s$0Vg%uh~03^o0frVXBZ1&n+6|E0GXm@&lZVoT+#9w2IH6i@|W0+ybj|I)214x zKqH_C`C~9sylT^??dFYhzC0!(Bf~r~Y~!zox{){PVZy_c+^=81y`4LEdNvwc#BH5X z53P37Z`iPgIc(*c3ic}61+uO-3~wR%47VhnbMCoVNnS7U81zzEEEZ1P+{lA8AB3}J z5*f{;X3tF#;Kw@94#gH)oq*eVsg57&I*~;11ET}rT(iUhCx^r=bwN6MC|b06TD6{yo!_z z@Z&Q_5W=l!ujUn6TVX=kR+CIJf8IPf?ex=iH8~!GSB@8KXeBnbIUPGiw8gL2rDA9F0btZ-GR*c6-aa zar19`x3|7S=bItnH^Ac-_$Yi4d`HCn%uVJ|q!*`0j~>o*&pqc96&Is!9UQ}`3VB0> z@1eHgpn_Qk_J6jT$$t=+vd#m!n6Iy9R0Zr|G^;g#RO~-=O>tz{Bm0 z3}QZZZ{lN*J>R6JCZ+*Sot5BV%?`v<^le+8;loe8aL$)sJkR5xRNCUHDe%J{gdQO! z5Ml}U^g&%P+p-cX&!1EE>(^hdyy^-$2h*WE_f4gD)atQR6CH!snI?s<{lj=PsT#;8 z+HbpShp6qMy+oilz@^f%c*zoZ`|Y=J+VMS1;o=nuC=k7F2sRiHmmeK{-GnneuAc(H z2VS_Q_36DLkwVbc2D{JK^B-5{?ED;Oj0lFKhSpG#wN5wnpaCkpIKu5N z6r5GSQ13u^P)W5rz1pf(D_neis_s|n->)BTEop|eIy2T4)@V_fotiq!^*r&io0nzZX?dq@)xlCN|zl zNonAuH*V@QNNece!ZVh-ibJ?zqiXQr6aNJQGE+o{keh3-y|!nQ^rnT_i~-RoT0ie$ z9esYyeS$5-Y(*=p+edb+PIo@lMllN_mwra%f(#E)gkOw!Wu*?qCG1OcFw^Ed`|NYh?YH0IoPEwYPRCB2 zorL&AEn}85Mjl9iEFRQ}!-vO%_=r$IeAMUEf_C^vP{h>FEe}3aBvB5=VKsOP?~u>b zq5vXJIqkID;t~>_D9}YzY?6M_vB^$UOp+53oro{NiHJ#XB4Y@Xub2kQZwWJ{)pJ~~$rG7l9)ErlwHiQ__ z5cdG{ra~^Xv21vG1LNTz(~fb2p5iMhDaP|=MG!X%B?lK|=jP_}Rax1Ib1Qpx?~xoV zXcoYacWzk)Le^eI)9q%3nkuGW^Jg8P+pKHGTz5Bs(NL){aKmH!_U#v9*DiK39NOR+ zb(PSoSFf*@E?d!qw?z7p2h!su2sMH9Qt7S8GEalGd~|IyS{gYt#&bt_B$F#i4}R`o=n`7>H#wZ|TIu#G8R1o=QXZ(K01CqehLo z;7}9Jfc1=RyVeG9+4@4mak z;-xG8U076%=@A?PQW=tiXYdDPa>}m-g#~zJX{Wojf^`q}z~(v*vax!5DG2?Lw#1-C zEB(bK7hT;vqxo(MwA_Kq-LIyxw@oBtGjY=N&6I6-kr&_~*&4yhxGPphn4|) z0wzGGoOMk^ZAdNB#Z;P|2AV3^;D~sPGCK34U%-{PEffdOIE#}y?SpC0{N^{mY2|`_ zQ>`3%TBA6%cd%uN^uZqfnNmc;m^S?2mYB$utJhuP+?#;8~^FvEdF<7Hf_OuYo}pf@t6L;J}jAEI^W`(|LhMzKuTk#Z~NB~x6Z2Gxy2G|V)AO2yd zm5MfcOx6ugGhxl2g?Du#gfgi#%xqlTU+(n+j7c9;3dRHn=_X9rG(8~!jK%U2j|O9l zPn+kTd;ZM{*G>4w)4X8*%J!W)Jj3giIDvs|XqlLZZS2&^;=Wx?EIUki?A?=lGAcKPWTeO}OEP z8=u&=ZF_6wzpzj~Sz8aADr=`sH!52(#%ApF4fuP(L8i;dlyP%$z~3?l zse;%0Kr_sO`20V{hQLe$e^j^WFgkBg@ttWh45LY6{KQXZ_tRxOYbFYqZF&i70coNl z9$y7rjhQ_hF4{ZxrPp4XIePTytB|kYd(wW;{g~c-?X@@XFz8n-4=UTkX?iVRFiUP3 znS5X-5cy=~G+pYN1GFlBc^enC;R_8!cUTdvg9h#H}83g4JDZ*XKm z@jVM%wEP+h{~OdNipc6DRLp`t|@mNEmjNT z>Tc6YUqY+y=7|utMxuDD_d()T|X^Z*lqHLxLt z`Gp-=I3}ki*WtYeeR=JXUVWrlGwCg_tW3b&0f+q^5>sZOIXx^k$5|fRv)9F+EL*Ya zcq3k!3eie6wTyU7)4+PAGDU+VX~ow_+ji|{eLQ2vX>HrK{YG00X3m`1;MQAjeR%n@ zmA}Bd=8(x*-Hb$w7r(w@3uK5P=t`GRyB~sBg38$V>-UBvTnocE-56ZX2n}!GOzMn} zG1J{5@k7vL{jIOT5d1YhHVuC0{f7vKrnz<;rrGc?0C|wnHH=1R^X^DmTAGv9Dr+tl zOkctC*PmfJb|v6A(`3=a;1%F*AAIn^m{qG*{W>RSUm`EEP^FD0Qtm?9e7l|@8pmr` zFDZ|StnLAke68_3JimU~9UgohmfgFTC-**f&4jC+Sm@?i=wKAf#>eRckWEYwi_C|&Wl3oI>bM9xCmwL1 zt0p-)X-i^a;`W5Z#7f*k6M;i#%`w1khgWx_xp$5ik$Xy`wDAI)Tdu|*Y4H5<01=KW zH*VCZqIIk0J?74xyT-$D7z~FrJ9IGd{^K8$Q}7OWDht^ZoGm_tW`5B^Fpstff;ib# zbIyOmhSgnBQS)FYh3{7ZCgz@d?&)#-3CI6>^@`OO;y7rGnE^7@$;vYApGIxsR7bbE zX?B&SGVIi0FqJmFR=44(D^WowR{DEr!+}xRn2!wrAdJG$&4f}iq?-~d^q_LnP6Rd> z;cR@=ZCY$F4HC4_%;>1Oo*o9+4FS@FA7PLujf_qPQnO&Zy|{_g;?Ws6fRp(1@^T~b zwSkpiKoKt{1<-Ra9HY?EQ@kdA{`y!M6mUq71&PEBFNui>mBWS&s{n%#;IJv1<->;1 zBD(a_OEcbjXWB|EST%^i?3GR@YJP2|v5N!+?I(aH%`$W@jPYKjEjE*?piz|AQ3{j z)vo4{A9{P#!N4W~Y6$rupdY8^gZ?@gpzeFK5%53>LlyLgRijl8lQtzB3xn`9QYm2p z*v8CV#39HON&&qvCX@?i{XGnxgKID`F-8)m!Ea(9fMo~+Y*L}Wf%-LN9SGy*-^+zp zz6Qq6n~A~T_J2(*U=j@4lT*@oGvxZ!tCn>~xqc&Y+{akA={xH|AamBd|KUtXOFk3W zy7jBlCd#b<+bY1yRno%3;@AZX7G8t*#;B_?jhTN4$Sv53ZArp)~O{48wQ zNYM-3P-5P?0nw7^Z7I71<6CKBy8NoO1#VJgY{tyQ&`x;M$^{S`5ck($^+IVYtZob* z^dyKfB^`Zb!3e9~@Cv3xA+3WA?=qj~?4h$R0VIkyknhmwy^ysH2ABRajEg$p>IU(f z7)5Pip6*4cjEBwW zI9n64+74Z^eOq=%Y~e#GAlsTl79u(UEf6?(xwd8`39X6e43jwk<-3F=k}VHDgWLFc zt&%BvbyPPuw_c{*K#CdZ@ni5!ZuJ3&RvUDNwx6O7{P^JrK`~0tg!s;ZIEckfi2?`E z)M+FVFN8w4p%te^VO#eQ6bNcznGY|g)-jO25X2!!EHE5xcMy^rgPB20?b#I3-6)fK zCdS3(;c)?inj2huTDW^@4#2SS<-KApGh5@1fb@&M_~MJ_1Kx+lxc{-@w?@CK3cD~j zYt?9hm_qSL-z}p+&ABmp5MByYMn#XpUd5Qr3bU1Qz2+7nO!ZqLVAa^_p%G^D4+|5( z>_ZQLz`?lHN*IZq@*RO|1z?~MrBH5smLO~>oAr!hM)i8!X(<3k`re zX>or6=#O|n-!o-~wF5tyjN3D`dJ#YC+pkU6&Hy2bKz@9_7u;=>uD_Z31#7Vf zWsjvFG#d}~{VE%WMQU|7fQB^)$h;=s;mAxF3###25F5AE=}xo#terY4#xQ^*@z_k6 zn%2aBqzRf<88O?4g@)D z#_xXxwRF?~=P-hS)zYAW zuxw#$_E!s>g^oY$M77QcYtlv>bt%`^^|Fa_fvE+;snLRjAgk?Iw@Uz-7v6_dlM7(0R=Rl^2MvpaO#3^{O_ZB>6bPRBzAIF!T-V~Q+#1su0H26`7VqOeh;KN|} zP8sA+e;U29NqVDq6XKKg?6z(bV4}6W%zB6B%B?X|5jIzWk_yRsz}_(=24nE787^OAqBLF9Q7nu`?MBzA=my1(jj?%A&}uo8Vbn~=V48er zV{(y&z-W-b51RnO+0XY<96pNBwD@4b1cato!{Wzn`MtclVFRcQ?tlXum@S*u$)FR5 zNTc*-hDiecwYo?3!;g*2rY{(VZeeyZK^nII-;K8%Z~xuzaWB_6`Pt9LYd%tv(<$_v2hcSsJ=zGiG2xnHi_XjT-CBlf59#C!qsm zlZ6;okQUlH6Hh3vAbY?M%+bDmM`_)XmwEx@bWMbEJV5CLI5lf@<3uW|0a}+%YYj= znt5rRHXbf+`f%V}h@-Dd7tNJnr<^H`nr4AXOh}s`*XD*|Am6AaBC7QP$V3gTMjz?9 zX~NC8LUk~1yD!&Mm^f^v3yKXuJF#)mUp)BW-~Ret^&U*;cgi4);PJ;NE@;;_YjQPK zwVU8gZyq(RuCA2vKOZkoKJjn)%L9Lv0sRN++jwS^97Ca$NP%u)(M1bbd(kjQYjrC? ztu%WT;u#bjnWJg53>kISD499)W4+0Pv|{@iMnxP-n(9GMkg01{KmHJ{qQ;M>!$3Gc za+qC(FqYh{Q&1;Lt3uh?$LE`f%l|YSJwucaT^Exvi5i5u3u%N=9aTWIYz0uh~#*#ti^eL^gsz0yT2lS+>N9F$U_!=w^+qOP6kP z^2tMRroRefjT9Uc{!-q0>kZIRbHRz?O(TX4{RQqr`%drQ`p(utY*CQA7tNe`=h&-m z7+O(T)twL4@52SmojP^FqmhmH$cl9B(p8?AJW1X}=5Yu|2}wm3i=-}{1LLR&XwCQz96Y8IfD?&H^lkRlPl;IS#T@tMFjgoQ!jX`J-c z{KHNrS-X0LjuA$mf3D2HLqn@p<1P4v6tuh*c&<89ii?Z&xdf9y5WZDhJ?FX-k3e7* zy?ggQI2qWBE8@6oY`U!9uuh8b8gSmeeR}2UTW`H7Pd)QA&dw)FVshf1;U^6qj|&^t zTXf%*?&bfxiooK%?z-!GzcuxJ%xc9o*|~Fz^zPYH{&e4;@fM%CSeX_5+u#01mMmRj zwjF4Nu;Q7-@MOA`2^clmx(xyI2|%AiuBntp=$3E1;U-y%I9`9_Rp175goLrFJ+N+r zSi;6BJe9+ljL`PhxCA57Z0!fV#Ybs4j)Vk$` z4UB)!-rYEWnk=oeTCN>==7@_QdE}9U-lON|>6@DZyTiVD;BOLQ-n@C)xDw}!ojbOl zos!xpasB!=I9FXL{re5j!c0s|LLuytg$oyGg>tT))33aoO)HoKXH@|bu=Qr^FhG4g zfJMS(4^ab=j0V?kiCo5WUS%fC0I)53xf*V+lt8gg;PDSQx zg))p!LWIGm_^H$Pz{+4XIIKB{v98cQT$r!*AW^%SB|~-Z-c$DCEIYU5*qAJ%SPX`x zh`=IoeS!=EKT{l$*lV?0RxDp8C*t1X)9}#H_U&8c6Ns?v3HI*Ujq~@Ja{KLf%9#*t zM~)n&y~Yx}e==tDSh@6)%kVa1m5wK76KK!Jww(rOu8K0P%v}DO*^caivS%I9Kz4GRpZzz*= z>eyNCxcx4S6V5?p_CNs@<1o$+R5F~V@~->-%U1G9;of^5~gt)!%;;?e}9&u-POGkonf zx=t|H(J-0KpwDvq3quI|M;OZx7GB95`DBCBx^+8g-l7G@5F51tQS2_^TO8E=euoGR zrVzYZZY&eV7lr4fOJw1Kxe|{j+Ah8HGU)-4Y2Es@I8MD4$8z_`ym|9w-P$!WfBrnY zGct#VoOoOoYbvR@fMTC~g^h-fKK7VQpZ*aBITW?=NKkx&;Ml{OAtxVy^Nbn)xNGRp z^YUz-z7IXDdH6n}6v087o-;q0^-O+2S)aT-v}BcK=q;kWGwCD27@XE)4}%NkAj4M4 zhXmyE3`_-lG-FAkA!W^Z&c` z-Yr|Qug}dZzyuZ_ljLe?B@VwN%UyTgBPR?xQJIF!vkH&4T=C0GwYC1|!;eC&$<(R8 zO`A8#op=6Da`C7P@5wDGF(-77J+`0x0eLOpo5ut9M_S^73u5@V9q$zH~KTpnwD8)u?%hs)>OP4N=TR4Ay!KziOOYr7O6dJ*JWUe$JA!%=1 zOw^LBtQPaJ+4YmV?z(VgL_|ltFY&`EEyf=zddHa(b@kOB4WB({{_i($-gaV1NjX}0 zv?4VXI&;A%#CrAWjh-M@KA!Qh%$++&YlpWMW@cq!F1}DUZQh8RQub*UC^oToIp>`7 zAXfF&!QN9(J&9H;TSWAcYw;0c5^GH3QDrWN+M zkI4k10Nx85h^{U-&zp3H#-e45mc?le(n?paUZ>}*mEeHWCe7*$7tE1o1^{C>>`J7B zG%>S`J9X|V7hili802|bzHAA4KZrCQQV$CQA*}WA<2N2Q?l5?bnSQ1rA#5CuPxtQA z*Xez1pS8Gga(7m%%*WfdYBeuCJuV0LC$jtCRX3F=x5K(!opFB~Wpn;*aD3~qAfz~) zNj`1ZcIqT6 zm#>g#pZyQs_WKe*6jNCKsKo!3TlF_UKBzI7wiP(|kJfSM@Y5k1cas0U`-be=x!q+D zo2YN06F(TRRaWNO%+{^eELymDBng!Ay-qy1nE;rtm_*mXbGI3wgXd2RastNX#eCfxojlLE&%?8TCT3>UKg7JqR|Fv;3aGc)73VB6Z zT54{5Lj3x;nAoi;X(>B#f!>yO?b?0*zyl9_4MzDvdk&_ZDwtQ}@&o>&5ThP_^wGBO zzyJPF9Mv6)+XMUJ(uXFP;Yfz~5`{vmj){#fYumbYO1t)Lv6j+Vx}k!z(4+9|`Bz|w zH{X0+@15nXf}F->3#!$!znli#S#esKEEwy~z%-+RxrGGxg$iyMm$S|~R~9Z>C|`a) z3%4DjE*0JeI)p+b0lATKDzr=IjtjeX>-x!uA5OnHF)0li_yj8L)D=X{E0Rsly^W>9H&P1J?0gDO#z5niSmF#;@2qPo| zKwHNTh5FPU*^}_mOCQB!u_*;tb4E97-K@G-_g*cdB4Z!J1$3=8ZrqfzVBP|V2`|Z) zUw$E5w`?XFs7M_!>$wxytY8qVMnZW^pw;hJsdXp3hSl0crGhz9u{UTO=KELULCf9Q z+x1ChtzabM-eDPUr=}`{|&qX|orgpw8o0w9wk$M4aK-JY3Kb!+F z5X>iC`MC;_;h6{C;2yni-@cQ!Z`=0%o?UzHLjM2a(uIZmUiBXpg9LNVLP6p1jl1~I zKmWW(VPSsH-MjZ@=H=(Ls;aDx1=B>~Mn5SjHiL48)u~%8cvb_eP+j#`O?04Fpk9pV z;5wMv^I(jtOB|>`R_f3He|y&f7*(;g@9t*P3+WINNJs(+ffPXLy$J#$SP)ULyvKVY z_WI;KiV9eM3nJ>XA_59n=v5Fx00C)A5lDa}^j=aoyZ8UTxn=Keit?n1xyjvo@6$R7e8I1$OoN(O-a3 zxZ_{<m&z} zrQ-a%e!0ehXN{l_JW@BhZjOh=3{xbVM{sDURG5d^ZyOL;g$Yc3>2 zwA4~YMiY$H*1^W$>70*59(pA;EOgreFd}p?W}OdM1w~jdu&P8nzfG|K6EI8 zhJw-2b)SHii}lCBFjiBK1{1h7AQ;IjRisvwMkxx~mCUu^cq*^z#%Zd%=FPx@ zIiPxO)v_&2tp`YR=g!6%6{kfjUszN?e$_9-D`O(AtBW46f)|G5?Tv{s4#q*ixkH8w z$-|a8r_P=^jiaAy!Pf|xYa+sjgjQ(~)k6eP-bt9)`?$Daa`J&yE0<%gXtvM*-h_E0 zMH%9nhs&3qkC8c)5L&4Tj)osL8RAk4N_VH9nli&10DSPi8Y2Usa=@^U*dD@Ubrp^E=?%=4`9i3c= zRP*6edspMBtr%UEbd?Ykq0-WtNW+IeB5mHXNm>je$BguJY3Gies%XW~B8Hx#)*_O0 zeh-t7c=$)A_k-~!TX!!XuRJ7d!}l>7?1hAcV_a3$*0WAR)%Zjyp#qyyN@tlxIgw9p z?g1~%xnzR@53uL>=G$3V3XmZ7vXY?=R&I`yjp-<#>^UmBG*^~GMXMfCFpWzjgjSPQ zn1~-*3P1pQ)7`uGwgpbF3awt1OkMC}_~5+Aj2SauIdte?8j-79sCZzNlUsseNJ<>Y z(jUwrLh)6-iEW{cQhbmEk*(bfts!5;6rW;WTj8wqBus$=a!y*ZCGFD(M?UY%mOlFE zzfg-NpFVT?bP-J>2!{#*!j-?23fJ;;^C!G;QuI;)17!>j4HHTL3p7bFF>#!7E(;C{ z$}7U;rxgZ!RG4 zw4TU-Pk`ooC7;(6gNz%uH-6WzyYJxI5n~l7=p&+?&Mqq~bs9t%_88(@b5xM65r;Ef zqM3d`ffiJaYsW-obnR%Et~@2RZQEXY@4a`Vv14DR8nU2%V#0>CYt~vVP$4rOTSO6E z{n2_4;izU!V&tpKjl6`b3IfMCX&KG1ONR%yu_pVr$p?yoR;}A&-OfO1 z+}Kw!_G%6$p^{NaOFDt@&nRu3eehF;A>iKnHaxw<~piU$GqxT%-) z*4yt06A6;x30N7^9_*&>-M_-wehs0H6v_=f7XZTDP6&^FiR9E4RJgNWBOJ<~Ks;$n z6%l#1M|?se)Vas85t{#@VZ(;;KvS4_d#uIrbix=iHZB3{A(%B1WIXnu>QgBjaAKrU z9T=8Ey;N9;Kji{EV4A&q_O?B9>WsNntCl0k9Jw&z`C{s1A<9O;T;#DwpO8Ys!oeh} z*af3UG7@B9mFKkdw2TZ-7cb+70LGBN!N81ktgmU1}W_^ritNy=C`Xp7MzaxDWjVh)+lGO1BYW9jKM8#wdn@ zYfvDVxWqSM6Yy!Q$|sgLVXN15KmIrx2dHjMNK6<57^K;lbRGZ7OVaio+j&llu#2O* zxkJa!;*NqvFqca!rBl-@H&oEdsgzcSM07zcJN*?uu()Em}06)4X}pU2nfV@fB8_LSM*HZuwcQ0BRJzEhC4{ss#QlZ zZBepU)6?)FO0K#www9a1nk>1Jqw1kX*r=z`S$wgJ+^4-H4pQY_|8mM&d_3C5{Vq!cS@i^f3NLrg0v;UFa1w+1a) zoUYopc+mo(A@PU8g7pOR6XHV;rlfaeey^z>1WPF|u+g zOq}uL(@%Xib?R56uyDsiCwyeVTnwoiGZRc=bkM`0o`uPZ${cKg>%}KYefkfQ{9&^1 z?d@exPOiUNiyIaeR)}K+GFkprD;A5Dc^tU#=+zsTmQuor`UtcLb7vCP7vB5w*w<<(;2eH7oD@R>SFCw+N()QLHS=%oL>@ z5?W|!_`{D1(|J~+m$w%We!=RuY-B-{cwlohKbW&O`f&R6FP?mK_~Rqu)0`@JD(#~JE$BoL5ebQ}EDwphO^2?+4yxcn0T{%4-~SCCzDam91S|^Tv}v${)X!OMrw|!E6E^Gw`r4 z?$*AyE$Y>)*Sv0ByW9dZ^O}J##C8drizDUX&8q#p1VO^ip-|#C|K@$A=@$40gR3o^CEj=yuU!Qz6 zeM;9h9lp)Y%}Wy%EfQuX%B4aiJ~S{iKR%sqcthoD18ByhcturmbWAL?S2v19SEZQm zsT-T}qZAwKB5&iI#UHY=)}DqYE7&(MR7%R|C}r>5Am#4fs4OdX$%`La&SVF?YZbHZD1Lc`NrlgWveHSq(*uctCt*CFJbq6_x-K?haY~JoY){`r^)PvqmOZ1 zvI$2p<2H*MM=kTXW&NA(nw$C*M?@>fHbZ2@QOdY+L^O|w7Dp~yd7QH(_vv?+{PENU za!PtD*~=$T?%)58-tI&IyqFuNq|6~c8aBUK{^!^Qa_Qwnt>PO!CT~| z9&^pSEh_GaKTJl7yBxeMi#Y0;$5eaa_5pmJa!^o++`4s}i8(nrkzKp@yeBFqKHusS ziaPO!KMpQN80EIe_ul(}oVjw1ykOoUdH%e`^1=m6tQ)z_9T!*n`QQ@+hY6ATcuxj{({yxB7gkT zPpov$gDq%!TG}@>THL?uC+XDjLsEEjiWC?erHWdr2q#1+XKV#)1c)#xx8|$+X%6a> z?i%c1HVniIpxxRqtWDc?t0Kcg9G`wPsb!P&hOgC%j=Eq)9hp3RC7flBcFbGKT%9GX zoVjE2cpfn6z79?8yx^SWo-*@0X4op*^A*br6benZlszJ}NbB zk~U)T;>BO9U|qFGWq7)30HL)sVRG)-O`Erjt5Y`~+NE6SEY_K$XAm%PaL4T@ANuDo zvCNee$L&M&^7EyCJ^w70bnchxz;0{ulxbiN@IU;ycAT4NulQjFnCjmcU}BIcx^qR2 zu2UywLx=XAo*q5=-`o54>pyfOox@wm=tqGP_$qzOMQ$X!o`?l>$ac8 z_>MV;g@#DOhy9ajpu7b_eLQp4*IIgk#b5UE4H6=UMHQ8d;*{p5Jt?jT5lk1WC|X$|nrXKp{-D(q@OA6nL!L3?8+q`M z2k{ND$iq(#kE~rZX3Uth%IcmCN5_sGM|*lf^g(`_=!w&nL|IsFA-+MxV%}ymL@(Zi zO%(q&t!@?r*ZIL0K?!aQEx`Y*{eAVuE z+ij0EY}{m7SY+L^-T@J4RVc<%{DSCe@t4h>LBMGs-hJWcBm4RX%O1cn>y%-v-obKc zSd_hSE|WjLsIH(&q+;g`|0>1Y0d!E$VTk{lHkD|>h-V+Bl9$%`Pzl1aY* zex+De`{&@yAiMYuCZrSjhdzuWoFD{P9PV<#*rx zubh^ap_H9t5Wye{lPGXG#~v=sqK`-5kMy)g01MJk76X%*Jb_Pdxj|B6;3gWKuUSq? zO5O@9Td`iA)h5dut#7{hX1zP^xO;F$(-spjj`*o|orE*Np;5A5V7Tn%8wy6KA$xcQ z$yVInej##=keYUs;XrzN(@DdJ4{wk1Ulnr_!e7~?^{^-wnDA3g-tlV3$UTXdMvqJ2Y6NS0NM~u$l-K1S?-{Iv9#htUfi zk^xVU;8jn+uYn`x1!%JV)|(T=Zh~Ik-qOT(-@&ef)1~l;$bw-H-rr)>*s;GD5~}bO z1J|ckty=RMwR~N=c9))e_Ia!yDHGz_%P)_?o>S|Ee9x@eJ_{kr1=tFc6%v^?auNk6 z=tcw}K@9$(Ws8&Y@(y6!RwAXQHlDh9^X4HHi9#s5&(x_?L!qUry?6iqFsV$gg|UWr z8LV@|!^0&%KmS9qu`&BG5t@zFqUS0SD=UVy+O-@8aF%vzlO|0+jfkvu-ajA&t+LXS zARwyIcvI7FL2KtJ2L=Yo*cs$_!-fs#_wV2TiPv9$JqeYj%&;*Mn6F_{!NOO)sRVY9UZb2W19n0oRz-^_)m32o4#ymX1V(oyJ_!_Uu)@G(67b~s z@vq67Hvb}j_uV`>J-vx=s~4ZJ8*>FA7lY9O0|s=i0W~Pozx|GZV7M$*Y+EA_xa)3_ zE*YP&irbx$$t=cO_>(bslR2~}8wQnGL?ZzeuqdA*zOmJB(xl1P!0|OF8eI%Nue-3U z5Zu1M{`zZJetv%Rwr$&j@$HY>hkn0RV1)6Cjf>kR2L7mUeK3vr1QNEGN1!Y(J6e2?|iBR#&3;5bml-W1Q=wfE#+EK(F)T+ZjXzthk1_M<>;6?!apQ5tmy8$@9z9t z@Vfg0esjBa9mcUWCo>No{D3@r_Ck3+lojpTcSPDILFh0-6!}n>C5WEHEpEbZR^Zm2 zqKrnyz`Guv?+UXR$2TlvWMs|#+gEJ&cZae1`%jF4M;>{k6}HBN{+1JqU=ZFU5O;{FYev)*jKT&% z8HkfnTze5w7T`hYb+#&pj9G4&U|iU7`4Ky%esp za-2MUI-|Ix#BHRF&>Y!{;kWT=NQI;<%-=MOA9w^eBJAm+Q7*Rn^7WvuAxBu!B-ARy1z$uak&IA%YA9-zfB;#?j`Q zopeTR5v@}j<7k0)?b>6<73@p`M!-gQmk1s0I3rB$!mP+~4aHJqaK^c*OGM2&|{hHVXk?>sV>o3V5;h~}DNKnpJl4#YN zN%5-dYE_I2{@@RJNWEyCYKK9kV%n`t`f_%h#6)uoADCKjd;bYA);o)xP&l*SpnhW3 zbI-llAF9stS~`E^Iez^3y}f()>QOtY)@IIu`ape5M$E)QuQK!`v@)Ota}m~S)P@?n zckf$3|1<(M3)p?JeG!x#*p0o0VyZ6Gti&pv^T z*LG>b+iyy}diN1KuuPvmP1=JqF}$!Uv2kkZ5*#`?s9n2u$F(#s#q-^F-#vgyyKdvg zjsG}j-+?|Rvo|*GUMsykZmjh8zYUe5u&X*(O|ntoaS>?u!3;LBdp?e$5X`|{Vt9Va zr=NZ-#mFoAeTnm>Q8bOakcTQRXXddy2O`R*)^Vc>pN@4r6@ z1on}@0nNFU6PzSYib;(dr%qbCHtT7KRbnaaAR!&OZPAa~YTg-*-96b1kI#m+V16q@{iO^m!Kq|6j3G6tcImxg;IPDszk< z_ZqBH{lwZ7w!l0~@0n+w5(bbwYM}^gIJhMdiHiebUeIU>=D?&SPSg!Qm6n$JJSN;5Fv*LLKmK^;vSlmA?aeuG znt6^O%S-D7iebDs;xh1t2+Q&&C#U@9;fEjI4+at8uE!r|^Lag%u8K0vo;`aqtV-w5 zbY2Wl1rZ3=&|6AOLP{ZMfw^%VHBvmxhC7ecPppqI#Tl4&Y!oKlWSlkFJbMPr=M~wW z=ZE-8DJjYG1`ocs6(%hId%2lID=PAFy!F;w%YXiPONXwV+y5;#E_#m-%+e)`7xol} zSvs_6uniOI$*I+X!a{5kM>8HCi8f`*=hDfO#|0B9h#-47FESF%)EhKt@Y1qni{C|l zMsH`p>bE~X2C(irG%>OMO00iICBsYw^Bm%ao}bMov_SGC7y>T;J`?vU`3D$Be)j1U z%qv84@hzRO~Bt&&d9hyu33|d)VLCW^Fy5XQ1Jo0(49Bd$QM9ldlF^) zOG+PCyFRaY{+XGX!8nWJGaSUJ69E^3U`ej{#yReC>z1wMUN`rVyL9d*M}$RyIZR@r zjZCEx4$W5LV&i`8(4o^~D{#Er6)(tdWC()x9Xj-Zc38gqTD^Mpx7G-WDE0EGfrfyV z&YbyYS@@)h3>iWz8!V%(uyPIwDNIjK{{|*JO_0`KX6*WxDQH#n!`5)fkRd(SZ&?52 z;loGTLN#lmg=`m7_JjZc6-h}%K~&`zkEn(Wk5zMl0sbe@s;+F*C}q~$Z@)eNQmJn% z&-;)0sKo7sIh5qXhYxqo*}uOb7Kb$`Ewx2sbG$&@UR;3*EuS6Y=MfC%f5kksA>?8CkD7Tz;wPN=+5<3(lhin=?;o>JvQRmp!OVqswo}>fueI>DYO=+=USsDrRjm{@doJfN{ zJ_)DWdSQYp67v$r0s;cgV>RE;*y%hAyOCtIYSjwXbl2|%^>OpOyu3knn5>t(u$%+i zmr4P?zL~4CvSw)hEnBu62-~uj*p6K_G}L_fG}HX024IwMLA|fI( zfV*#imohv((3m_8bN2Mg!o%MIyRmoS@4_Iq1^2XfY`OpcEcU{tk{S77oeNBDaAXZ| z&nG(&*sMuq*rENv$^6o}{a^9yJ!=v?x$?^8Dw}_2FFE_GH%*Sh1eg;eEm*cNjS{3~ zHm6Euu#9Ic`vu8XnA;q0>$L<>1`8%7AH!VCzfkWX;sh(zlSfwLO5^$(lvlcNq44O! zh5p=R?wlIrvOKOjg8(TeY|Zl@5X13nYM)~#>P%F0?;Rh&Po zAIj=%B`PTda1itCv(M5b_dK@Wi6|{CiLE54=3I!z2WBMB%eG)}H*?Y6@67f>A6un4 zG74{pb0$>7$Gb9-iBYvl^k0+*<#hY9mX4`$}<9Z3h6 zt$zrcaJE%2WU7dg|@1=7wdP`<$Cl4ZNMDQ{T6e$7YtpmAG+c9F!Oy;Tjl_{ z9MAmb&L{5q@%xX&HKvDjC`)r^7PhVb^94exg$AMy6WF_VZwkysF3JW>&Kwsk7v@Z= zh&imlkk!+KbuVB61C%&RN3vrdUUSLu5%QAz+iJjbyl6Y0Khi7}yD$ek9xIlm={M5F z!b;IGX>s|4cpZ$5NXMmh zuLvfi8}MNTT#ewi9U{mLM$yz5uCjN>xy=Ku=HhspTgOd1Gn?6KyQ$2v4;%hQNT!ku zi^*nHH>8Ku1cH}JOr;m{o&aNHjv8fhjO;SHrtM(ijdqAs+C|2K+3>kClh03**;*hu z%CMiST+?JPsfis@!X&%8-~+C~pwT7>>IZaB9IA z#lX7Gc-PI_ph1Ibfl#;xRO`dV6YC8Mnl)?Ig9M7(1nXFDbiX5kB$sfE2jjry2qSug z&Ye4l`uqEzXE^N!B4Nf|a|IUo6siQMr$Ik#d%3Son>HPcNM)WF=d?!JnTRL0`f-Pm zX`$kWge*OB@)#78FL;#rRxRyVkw1x%z)1Y9;v&dEO3x+f?_1$bSUQZ7J>+FWZnDp8ajtB-GhEs9blEne)fsuys3?XjnRj!tZF;j( zn<0#2<_(Ur`M2FdHenb%%^NqOPP3khC|x?Fg}h>v-s55A<2~;10xxIpzyJOQET4LN z;Jik!9zA+Qqt2SMF;ddKPJh$V(mIkzi8$Vk|Z^IzG@~yy)I83|aC`mt@<@xmQ!D=kW*FoSFB+NxEJf(MXU`rllu>Uy%E!KZE-plP`Ld}vWr!RJ zni!&m0FtL66jNq?fNt^jKS9 ze|iK#OmZ8#p)<6Xo)%2)8I)WqS*$JtXL}iBsG|HA?VF}-v(N4_t!#e32jvyd#RALa zh&?tow%EOHP&QwPUflxkL z-x0=yo@SLXZ{Q>hN{(KDL0`QH<~V@-cDlzme%oxvu~nH9D^PD%k^?voJ;w#%()z@ZjIKZrwTu2Z1ia64qBigf4Rln4pV8S<1o9e8}`*u+dDd&pqg1t$6l-zS)FrPt{kP`9dg)dQg}tiBaS z!Y~iGufR*Ti?NC+u4A#;yXI@?MI>s#j2AUuwo+NLmEdGATVasdc4V;Q_}b+qEB>CO zg_|>H&K~!MNAuI3Y>1$ksm&`Zc18Kfd{g~+H(Hp^00>4U{&+YSpSW4x;pF_xdry!ur8vVyAiY=G|v>zZ~yZl|eAz z1YV5j6NJh$FkBr`a<G*9CXzQG5}}f=Nu*$ZARmZ{%X^hfu*_$R*bbKg`L= z$>-TaROkywG!`~A2${&wr57w0-oGA}*6aJ`sop?)S;eZ;QmbExvP|7ArLy9aP8VqQ zZkh9mxn}34l7H*~hb8#KGE2ZNQw6<>1N;j!ln(Nqsd_^*YSgG=sMKG;!n7tR=P-z) zv(eM$Rn!2Yd^jBRRCm;sTYu$*=2E=5RPv=r@M6+{oXn-FE>TFFpq+Xyj>?A_NU7uQ z4soLt#OcBS?qS@&k*|?h-MugRn`HnKT|mS#jE7tcbkV6*9RZ>q4hIUvPAnDE1$wG| zm{Z9{Dpi)z>Kk$za6|QN;AcfltBdBS99@{@vO3OL3l&E62G~Z3S~Zu;)N0fzQ}>x) zS^6&fyGPT>8J5tDZe`ZM9pyl_m-Qk0aNe1m#fmX4T)5B|=j^pZx+|GJRFQDLd>3%x@!D&z<#g)QDI54m zHs*x25QZzY8xkWUpsRif2Y7}hBqU^G5ZDo8lAeYj;uQm5szvQkcvkZ17MoKh$njwe< zEHJfwo|X`j*>>D4m3j6uo6iSHrN^Nl12PNHxqxXc>f5 zfo;=^Sys<8t*M69E*qG{B-za-hn)wWLq)6kC{NCH*zI0t%4$Tt?&>2IJ4zfunmrcu zRl?g=krd>GL`*dn0&iOC0sz)K8UYbcd%EQzKGAzfPz%q#+<32APOS*COYAmx?%ZAI zR)<1%E0+19MQut@0vc@T!P8=#I2jVFPAvptY&>62gG(x&mQeu@2C-I#-USbZ!wyTor(X=I~U z^}s;A;l0XNHfX4yDeu4k{+ucUUII@8N-jZa|6>wA|NQezhz;FQ=tW?ZB8pBRRBShBG{2lLs>bH2n?V$FJI21oRYTtaqA5uq|kok@76}vDbu~9p#`h z!sYVq_-Z~J{!y@c)EM8AeT^K&=aMkJ6fPBFu=Gaio8V#)07k2C_$W2x;9b5P9c+2J?$tR}W8fOcKsAG0;}uj5-qppxb;Tf% -?=PxwW!mXkK zvF2U6Jovksi<_6=NVj8CoZO@JkI826%bKd5eoowmNt<2C6Yoje%+m jRAZnT1JxL~NDTZx_gHMK`clZ*00000NkvXXu0mjfmlWi5 literal 0 HcmV?d00001 diff --git a/cloudflare/pages/webui-manifest.json b/cloudflare/pages/webui-manifest.json new file mode 100644 index 0000000..c022188 --- /dev/null +++ b/cloudflare/pages/webui-manifest.json @@ -0,0 +1,4 @@ +{ + "version": "0.0.1", + "buildTime": "2026-05-31T12:55:01.395Z" +} \ No newline at end of file diff --git a/cloudflare/worker.js b/cloudflare/worker.js index 860908c..46b0477 100644 --- a/cloudflare/worker.js +++ b/cloudflare/worker.js @@ -46,6 +46,15 @@ async function logRequest(req, env, agent, status, body) { .bind(uid(), nowIso(), req.method, new URL(req.url).pathname, agent.id, agent.name, agent.role, body ? JSON.stringify(body).slice(0,10000) : null, status).run(); } catch (e) { console.log('request log failed', e.message); } } + +function page(items, url) { + const currentPage = Math.max(1, Number(url.searchParams.get('page') || 1)); + const pageSize = Math.min(100, Math.max(1, Number(url.searchParams.get('page_size') || items.length || 20))); + const total = items.length; + const start = (currentPage - 1) * pageSize; + return { items: items.slice(start, start + pageSize), total, page: currentPage, page_size: pageSize, total_pages: Math.max(1, Math.ceil(total / pageSize)), has_more: currentPage * pageSize < total }; +} + function pageParams(url) { const page = Math.max(1, Number(url.searchParams.get('page') || 1)); const pageSize = Math.min(100, Math.max(0, Number(url.searchParams.get('page_size') || 0))); @@ -77,6 +86,10 @@ async function routeApi(req, env, ctx) { if (path === '/health') return json({ ok: true, runtime: 'cloudflare-workers', project: projectName(env), time: nowIso() }); if (path === '/version') return json({ name: 'OpenMOSS Cloudflare', version: '2.0.0-cloudflare', runtime: 'cloudflare-workers' }); if (path === '/setup/status') return json({ initialized: true, has_external_url: true }); + if (path === '/setup/initialize' && req.method === 'POST') return json({ ok: true, initialized: true }); + if (path === '/webui/version') return json({ current_version: '0.0.1', latest_version: '0.0.1', update_available: false, update_type: 'none', checked_at: nowIso() }); + if (path === '/webui/version/check') return json({ current_version: '0.0.1', latest_version: '0.0.1', update_available: false, update_type: 'none', checked_at: nowIso() }); + if (path === '/admin/webui/update' && req.method === 'POST') return json({ ok: true, message: 'Cloudflare Pages deployment is managed by Wrangler/Pages.' }); if (path === '/config/notification') { agent = await requireAgent(req, env); return json({ enabled: false, channels: [], events: [] }); } if (path === '/admin/login' && req.method === 'POST') { @@ -88,6 +101,23 @@ async function routeApi(req, env, ctx) { } if (path === '/admin/config' && req.method === 'GET') { await requireAdmin(req, env); return json({ project: { name: projectName(env) }, agent: { allow_registration: true, registration_token: registrationToken(env) }, webui: { public_feed: publicFeed(env) }, server: { external_url: url.origin }, database: { type: 'cloudflare-d1' } }); } if (path === '/admin/dashboard/overview' && req.method === 'GET') { await requireAdmin(req, env); return json(await dashboardOverview(env)); } + + if (path === '/admin/dashboard/highlights' && req.method === 'GET') { await requireAdmin(req, env); return json({ generated_at: nowIso(), limit: Number(url.searchParams.get('limit') || 5), inactive_hours: Number(url.searchParams.get('inactive_hours') || 24), blocked_sub_tasks: [], pending_review_sub_tasks: [], busy_agents: [], low_activity_agents: [], recent_reviews: [] }); } + if (path === '/admin/dashboard/trends' && req.method === 'GET') { await requireAdmin(req, env); const days=Number(url.searchParams.get('days')||14); return json({ generated_at: nowIso(), days, start_date: nowIso().slice(0,10), end_date: nowIso().slice(0,10), sub_task_created_trend: [], sub_task_completed_trend: [], review_trend: [], score_delta_trend: [], request_trend: [], activity_trend: [] }); } + if (path === '/admin/scores/summary' && req.method === 'GET') { await requireAdmin(req, env); const rows=(await env.DB.prepare("SELECT total_score FROM agent").all()).results||[]; const scores=rows.map(r=>Number(r.total_score||0)); return json({ total_agents: scores.length, positive_score_agents: scores.filter(x=>x>0).length, zero_score_agents: scores.filter(x=>x===0).length, negative_score_agents: scores.filter(x=>x<0).length, top_score: Math.max(0,...scores), average_score: scores.length? scores.reduce((a,b)=>a+b,0)/scores.length:0, last_score_at: null }); } + if (path === '/admin/scores/logs' && req.method === 'GET') { await requireAdmin(req, env); const rows=(await env.DB.prepare("SELECT r.*, a.name AS agent_name FROM reward_log r LEFT JOIN agent a ON a.id=r.agent_id ORDER BY r.created_at DESC").all()).results||[]; return json(page(rows, url)); } + if (path === '/admin/scores/adjust' && req.method === 'POST') { await requireAdmin(req, env); reqBody=await bodyJson(req); const id=uid(); await env.DB.prepare("INSERT INTO reward_log (id,agent_id,sub_task_id,reason,score_delta,created_at) VALUES (?,?,?,?,?,?)").bind(id,reqBody.agent_id,reqBody.sub_task_id||null,reqBody.reason||'manual',Number(reqBody.score_delta||0),nowIso()).run(); await env.DB.prepare("UPDATE agent SET total_score=total_score+? WHERE id=?").bind(Number(reqBody.score_delta||0),reqBody.agent_id).run(); return json({ok:true,id}); } + if (path === '/admin/prompts/templates') { await requireAdmin(req, env); return json(['planner','executor','reviewer','patrol'].map(role=>({role,filename:`${role}.md`,content:`# ${role}\n\nCloudflare OpenMOSS prompt placeholder.`}))); } + if (path.startsWith('/admin/prompts/')) { await requireAdmin(req, env); return json({ content: 'Cloudflare deployment is stateless for prompt files in this build.', status: 'unconfigured' }); } + + + if (path === '/admin/review-records' && req.method === 'GET') { await requireAdmin(req, env); const rows=(await env.DB.prepare(`SELECT r.*, s.task_id, t.name AS task_name, s.module_id, m.name AS module_name, s.name AS sub_task_name, a.name AS reviewer_agent_name, ra.name AS rework_agent_name FROM review_record r LEFT JOIN sub_task s ON s.id=r.sub_task_id LEFT JOIN task t ON t.id=s.task_id LEFT JOIN module m ON m.id=s.module_id LEFT JOIN agent a ON a.id=r.reviewer_agent LEFT JOIN agent ra ON ra.id=r.rework_agent ORDER BY r.created_at DESC`).all()).results||[]; return json(page(rows, url)); } + if (path.match(/^\/admin\/review-records\/[^/]+$/) && req.method === 'GET') { await requireAdmin(req, env); return json({detail:'Not implemented in Cloudflare compact backend'},404); } + if (path === '/admin/managed-agents/meta/host-platforms') { await requireAdmin(req, env); return json({ platforms: [] }); } + if (path === '/admin/managed-agents/meta/prompt-templates') { await requireAdmin(req, env); return json({ templates: [] }); } + if (path === '/admin/managed-agents' && req.method === 'GET') { await requireAdmin(req, env); return json({ items: [], total:0, page:1, page_size:20, total_pages:1, has_more:false }); } + if (path.startsWith('/admin/managed-agents/')) { await requireAdmin(req, env); return json({ detail: 'Managed agent host operations are not available on Cloudflare Workers.' }, 501); } + if (path === '/admin/agents' && req.method === 'GET') { await requireAdmin(req, env); return json(await listAdminAgents(env, url)); } if (path === '/admin/tasks' && req.method === 'GET') { await requireAdmin(req, env); return json(await listAdminTasks(env, url)); } if (path === '/admin/logs' && req.method === 'GET') { await requireAdmin(req, env); return json(await listQuery(env, `SELECT l.*, a.name AS agent_name, a.role AS agent_role FROM activity_log l LEFT JOIN agent a ON a.id=l.agent_id ORDER BY l.created_at DESC`, [], url)); } @@ -183,8 +213,36 @@ async function dashboardOverview(env) { const roleD=await dist('agent','role',['planner','executor','reviewer','patrol']); return { generated_at: nowIso(), core_cards:{ open_task_count:taskD.planning+taskD.active+taskD.in_progress, active_sub_task_count:subD.assigned+subD.in_progress+subD.review+subD.rework+subD.blocked, review_queue_count:subD.review, blocked_sub_task_count:subD.blocked, active_agent_count:agentD.active, today_completed_sub_task_count:0 }, secondary_cards:{ disabled_agent_count:agentD.disabled, today_review_count:0, today_rejected_review_count:0, today_reject_rate:0, today_net_score_delta:0 }, distributions:{ task_status_distribution:taskD, sub_task_status_distribution:subD, agent_status_distribution:agentD, agent_role_distribution:roleD, review_result_distribution_7d:{approved:0,rejected:0} } }; } -async function listAdminAgents(env,url){ return await listQuery(env, `SELECT id,name,role,description,status,total_score,created_at FROM agent ORDER BY created_at DESC`, [], url); } -async function listAdminTasks(env,url){ return await listQuery(env, `SELECT t.*, (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id) AS sub_task_count, (SELECT count(*) FROM module m WHERE m.task_id=t.id) AS module_count FROM task t ORDER BY created_at DESC`, [], url); } +async function listAdminAgents(env,url){ + const rows=(await env.DB.prepare(`SELECT a.id,a.name,a.role,a.description,a.status,a.total_score,a.created_at, + 0 AS rank, + (SELECT count(*) FROM sub_task s WHERE s.assigned_agent=a.id AND s.status NOT IN ('done','cancelled')) AS open_sub_task_count, + (SELECT count(*) FROM sub_task s WHERE s.assigned_agent=a.id AND s.status='assigned') AS assigned_count, + (SELECT count(*) FROM sub_task s WHERE s.assigned_agent=a.id AND s.status='in_progress') AS in_progress_count, + (SELECT count(*) FROM sub_task s WHERE s.assigned_agent=a.id AND s.status='review') AS review_count, + (SELECT count(*) FROM sub_task s WHERE s.assigned_agent=a.id AND s.status='rework') AS rework_count, + (SELECT count(*) FROM sub_task s WHERE s.assigned_agent=a.id AND s.status='blocked') AS blocked_count, + (SELECT max(timestamp) FROM request_log l WHERE l.agent_id=a.id) AS last_request_at, + (SELECT max(created_at) FROM activity_log l WHERE l.agent_id=a.id) AS last_activity_at + FROM agent a ORDER BY total_score DESC, created_at DESC`).all()).results||[]; + rows.forEach((r,i)=>r.rank=i+1); + return page(rows,url); +} +async function listAdminTasks(env,url){ + const rows=(await env.DB.prepare(`SELECT t.*, + (SELECT count(*) FROM module m WHERE m.task_id=t.id) AS module_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id) AS sub_task_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='pending') AS pending_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='assigned') AS assigned_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='in_progress') AS in_progress_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='review') AS review_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='rework') AS rework_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='blocked') AS blocked_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='done') AS done_count, + (SELECT count(*) FROM sub_task s WHERE s.task_id=t.id AND s.status='cancelled') AS cancelled_count + FROM task t ORDER BY created_at DESC`).all()).results||[]; + return page(rows,url); +} const INDEX_HTML = `OpenMOSS Cloudflare
    Cloudflare Workers + Pages-style UI + D1

    OpenMOSS Cloudflare

    OpenMOSS 多 Agent 协作中间件的 Cloudflare 原生实现:Worker API、D1 数据库、单页管理界面。

    /api/health

    Admin Login

    登录后 token 保存在浏览器 localStorage。

    Agent 注册

    输出

    Ready.