@codeflow-ai/cli 1.27.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +37 -31
  2. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -1,39 +1,45 @@
1
1
  #!/usr/bin/env node
2
- import{once as mx}from"events";import{createInterface as dx}from"readline/promises";import{parseArgs as px}from"util";var Fa={name:"@codeflow-ai/cli",version:"1.27.0",type:"module",description:"CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF\uFF1A\u4E00\u952E\u914D\u7F6E AI \u5BA2\u6237\u7AEF",keywords:["codeflow","claude-code","codex","openclaw","hermes-agent","opencode","pi-coding-agent","cli"],license:"UNLICENSED",engines:{node:">=22"},bin:{codeflow:"dist/cli.js"},files:["dist"],publishConfig:{access:"public"},scripts:{dev:"tsx src/cli.ts",build:"tsup",typecheck:"tsc --noEmit"},dependencies:{"@decimalturn/toml-patch":"3.0.4",ink:"7.1.1",json5:"2.2.3","jsonc-parser":"3.3.1",marked:"18.0.5",qrcode:"1.5.4",react:"19.2.0","smol-toml":"1.9.0","string-width":"8.2.0",yaml:"2.9.1",zod:"4.4.3"},devDependencies:{"@codeflow/shared":"workspace:*","@types/node":"25.9.1","@types/qrcode":"1.5.6","@types/react":"19.2.2",tsup:"8.5.1",tsx:"4.22.3",typescript:"5.9.3"}};var gt="codeflow",ht=Fa.version,Ua="https://codeflow.asia",Vn="@codeflow-ai/cli",_o=0,Jn=1,Ki=2,kn=3,ja=4;import{randomBytes as ff}from"crypto";import{mkdirSync as za,readFileSync as gf,rmSync as Ka,statSync as hf,writeFileSync as bf}from"fs";import{join as Va}from"path";import{setTimeout as yf}from"timers/promises";import{z as Pt}from"zod";var O=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??Jn,this.hint=o.hint}};function ve(e){return e instanceof Error?e.message:String(e)}import{chmodSync as af,existsSync as cf,mkdirSync as lf,readFileSync as uf,writeFileSync as mf}from"fs";import{dirname as df}from"path";function st(e){return cf(e)?uf(e,"utf8"):null}function zt(e,t,o){lf(df(e),{recursive:!0,mode:448});try{mf(e,t,{mode:o}),af(e,o)}catch(n){throw new O(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${ve(n)}`,{cause:n})}}function Ha(e,t,o){zt(e,`${JSON.stringify(t,null,2)}
3
- `,o)}function gr(e,t,o,n,r){let i=null,s=()=>{if(i)return i;let a=o(),c=st(a);if(c===null)return i=structuredClone(t),i;let l;try{l=JSON.parse(c)}catch(p){throw new O(`${n} ${a} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${r}`,{cause:p})}let m=e.safeParse(l);if(!m.success)throw new O(`${n} ${a} \u7ED3\u6784\u4E0D\u7B26\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${r}`);return i=m.data,i};return{load:s,reload:()=>(i=null,s()),update:a=>{let c=structuredClone(s());return a(c),Ha(o(),c,384),i=c,c}}}import{homedir as pf}from"os";import{join as Yn}from"path";function Kt(){let e=process.env.XDG_CONFIG_HOME;if(e)return Yn(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return Yn(t,"codeflow")}return Yn(pf(),".config","codeflow")}var qa=()=>Yn(Kt(),"config.json"),Wa=()=>Yn(Kt(),"credentials.json"),Ga=()=>Yn(Kt(),"refresh.lock");var Sf=Pt.object({refreshCookie:Pt.string(),accessToken:Pt.string(),accessExpiresAt:Pt.number(),username:Pt.string(),email:Pt.string(),site:Pt.string()}),xf=Pt.object({site:Pt.string(),cookie:Pt.string()}),Tf=Pt.object({session:Sf.nullable(),device:xf.nullable()}),Vi=gr(Tf,{session:null,device:null},Wa,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Ct=Vi.load,Ja=Vi.reload,Ji=Vi.update;function Ya(){let{session:e}=Ct();if(!e)throw new O("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:kn});return e}var wf=6e4,kf=75e3,vf=120;function _f(e,t){try{za(e)}catch{try{Date.now()-hf(e).mtimeMs>wf&&Ka(e,{recursive:!0,force:!0})}catch{}return!1}return bf(Va(e,"owner"),t),!0}function Rf(e,t){let o;try{o=gf(Va(e,"owner"),"utf8")}catch{return}o===t&&Ka(e,{recursive:!0,force:!0})}async function Xa(e){let t=Ga(),o=ff(16).toString("hex");za(Kt(),{recursive:!0,mode:448});let n=Date.now()+kf;for(;!_f(t,o);){if(Date.now()>n)throw new O(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${gt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await yf(vf)}try{return await e()}finally{Rf(t,o)}}function Pf(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Ct().session;return t?t.site:Ua}function Qa(){return{site:Pf()}}function vn(e,t,o){if(!e.isTTY)return o;let n=Number.parseInt(t.slice(1),16);return`\x1B[38;2;${n>>16&255};${n>>8&255};${n&255}m${o}\x1B[39m`}import{existsSync as xg,rmSync as Tg}from"fs";import{z as $e}from"zod";var Cf=["active","disabled"],Yx=$e.enum(Cf),Yi=["subscription_first","balance_first","subscription_only","balance_only"],Xi=$e.enum(Yi),Ef=["openai","anthropic"],Za=$e.enum(Ef),Af=["openai-chat","openai-responses","anthropic-messages"],ec=$e.enum(Af);var Ro=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],tc=$e.enum(Ro),Nf=["recharge","subscription"],Xx=$e.enum(Nf),If=["requested","pending","succeeded","failed","rejected","canceled"],nc=$e.enum(If),Qi=["pending","issued","rejected"],oc=$e.enum(Qi),Lf=["special","general"],Zi=$e.enum(Lf),Mf=["info","success","warning","error"],rc=$e.enum(Mf),Of=["terms","privacy"],Qx=$e.enum(Of),es=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],ic=$e.enum(es),$f=["usage_log","order","invitation","admin"],sc=$e.enum($f),ts=["first_inviter","first_invitee","subsequent_inviter"],ac=$e.enum(ts),ns=["success","error","canceled","anomaly"],cc=$e.enum(ns),os=["open","replied","closed"],lc=$e.enum(os),rs=["billing","technical","account","other"],uc=$e.enum(rs),is=["low","normal","high"],mc=$e.enum(is),Df=["user","admin"],dc=$e.enum(Df),Bf=["none","minor","major","critical"],pc=$e.enum(Bf);import{z as Xn}from"zod";var Ff=["internal_error","validation_error","not_found","conflict","rate_limited","forbidden","unauthorized","invalid_credentials","password_incorrect","account_disabled","email_already_registered","username_taken","verification_code_invalid","verification_code_expired","token_expired","token_reuse_detected","token_limit_exceeded","totp_invalid","totp_replayed","totp_setup_expired","totp_not_enabled","login_ticket_invalid","recovery_code_invalid","passkey_registration_failed","passkey_verification_failed","passkey_not_found","passkey_origin_not_allowed","insufficient_quota","no_available_channel","model_not_found","model_not_in_group","token_group_missing","token_quota_exceeded","upstream_error","order_not_found","order_not_payable","payment_verify_failed","payment_precreate_failed","amount_mismatch","refund_not_allowed","refund_amount_invalid","refund_insufficient_balance","refund_failed","refund_pending","refund_in_progress","refund_blocked_by_pending_order","refund_order_superseded","refund_request_not_found","refund_nothing_refundable","subscription_limit_reached","no_subscription_coverage","subscription_revoked","plan_disabled","order_already_invoiced","order_not_eligible","order_invoiced","invoice_profile_exists","invite_code_invalid","ticket_closed","ticket_limit_exceeded","attachment_storage_unconfigured","attachment_too_large","attachment_invalid","attachment_staging_limit_exceeded","docs_not_configured","docs_source_unavailable","docs_page_not_found","provider_status_unavailable"],Uf=Xn.enum(Ff),fc=Xn.object({error:Xn.object({code:Uf,message:Xn.string(),details:Xn.unknown().optional(),requestId:Xn.string().optional()})});var gc={internal_error:"\u670D\u52A1\u6682\u65F6\u51FA\u73B0\u95EE\u9898\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",validation_error:"\u63D0\u4EA4\u7684\u5185\u5BB9\u6709\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5",not_found:"\u8BBF\u95EE\u7684\u5185\u5BB9\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664",conflict:"\u5DF2\u5B58\u5728\u76F8\u540C\u7684\u8BB0\u5F55\uFF0C\u8BF7\u52FF\u91CD\u590D\u63D0\u4EA4",rate_limited:"\u64CD\u4F5C\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",forbidden:"\u6CA1\u6709\u6743\u9650\u6267\u884C\u6B64\u64CD\u4F5C",unauthorized:"\u8BF7\u5148\u767B\u5F55",invalid_credentials:"\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u6B63\u786E",password_incorrect:"\u5F53\u524D\u5BC6\u7801\u4E0D\u6B63\u786E",account_disabled:"\u8D26\u6237\u5DF2\u88AB\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",email_already_registered:"\u8BE5\u90AE\u7BB1\u5DF2\u88AB\u6CE8\u518C",username_taken:"\u8BE5\u7528\u6237\u540D\u5DF2\u88AB\u4F7F\u7528",verification_code_invalid:"\u9A8C\u8BC1\u7801\u4E0D\u6B63\u786E",verification_code_expired:"\u9A8C\u8BC1\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u83B7\u53D6",token_expired:"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",token_reuse_detected:"\u767B\u5F55\u72B6\u6001\u5F02\u5E38\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",token_limit_exceeded:"\u4EE4\u724C\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u5220\u9664\u4E0D\u518D\u4F7F\u7528\u7684\u4EE4\u724C",totp_invalid:"\u52A8\u6001\u9A8C\u8BC1\u7801\u4E0D\u6B63\u786E\uFF0C\u8BF7\u91CD\u8BD5",totp_replayed:"\u8BE5\u9A8C\u8BC1\u7801\u521A\u521A\u5DF2\u88AB\u4F7F\u7528\uFF0C\u8BF7\u7B49\u5F85\u9A8C\u8BC1\u5668\u663E\u793A\u4E0B\u4E00\u4E2A\u9A8C\u8BC1\u7801\u540E\u518D\u8F93\u5165",totp_setup_expired:"\u7ED1\u5B9A\u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u5F00\u59CB\u7ED1\u5B9A",totp_not_enabled:"\u5C1A\u672A\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",login_ticket_invalid:"\u767B\u5F55\u9A8C\u8BC1\u5DF2\u8FC7\u671F\u6216\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",recovery_code_invalid:"\u6062\u590D\u7801\u4E0D\u6B63\u786E\u6216\u5DF2\u88AB\u4F7F\u7528",passkey_registration_failed:"Passkey \u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",passkey_verification_failed:"Passkey \u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",passkey_not_found:"\u8BE5 Passkey \u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664",passkey_origin_not_allowed:"\u5F53\u524D\u8BBF\u95EE\u5730\u5740\u672A\u914D\u7F6E\u4E3A\u7AD9\u70B9\u5730\u5740\uFF0C\u65E0\u6CD5\u4F7F\u7528 Passkey",insufficient_quota:"\u989D\u5EA6\u4E0D\u8DB3\uFF0C\u8BF7\u5145\u503C\u540E\u518D\u8BD5",no_available_channel:"\u4E0A\u6E38\u670D\u52A1\u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",model_not_found:"\u8BE5\u6A21\u578B\u4E0D\u5B58\u5728",model_not_in_group:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u4E0D\u652F\u6301\u8BE5\u6A21\u578B\uFF0C\u8BF7\u66F4\u6362\u4EE4\u724C\u5206\u7EC4\u6216\u6539\u7528\u5206\u7EC4\u652F\u6301\u7684\u6A21\u578B",token_group_missing:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u5DF2\u88AB\u5220\u9664\uFF0C\u8BF7\u7F16\u8F91\u4EE4\u724C\u91CD\u65B0\u9009\u62E9\u5206\u7EC4",token_quota_exceeded:"\u8BE5\u4EE4\u724C\u7684\u6D88\u8D39\u5DF2\u8FBE\u8D39\u7528\u9650\u5236\uFF0C\u8BF7\u8C03\u9AD8\u6216\u6E05\u9664\u9650\u5236\u540E\u518D\u4F7F\u7528",upstream_error:"\u4E0A\u6E38\u670D\u52A1\u8FD4\u56DE\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",order_not_found:"\u8BA2\u5355\u4E0D\u5B58\u5728",order_not_payable:"\u8BA2\u5355\u72B6\u6001\u5DF2\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u518D\u8BD5",payment_verify_failed:"\u652F\u4ED8\u7ED3\u679C\u786E\u8BA4\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",payment_precreate_failed:"\u53D1\u8D77\u652F\u4ED8\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",amount_mismatch:"\u652F\u4ED8\u91D1\u989D\u4E0E\u8BA2\u5355\u4E0D\u7B26\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",refund_not_allowed:"\u8BE5\u8BA2\u5355\u5F53\u524D\u4E0D\u53EF\u9000\u6B3E",refund_amount_invalid:"\u9000\u6B3E\u91D1\u989D\u4E0D\u6B63\u786E\u6216\u8D85\u8FC7\u53EF\u9000\u4F59\u989D",refund_insufficient_balance:"\u53EF\u7528\u989D\u5EA6\u4E0D\u8DB3\u4EE5\u6263\u56DE\u672C\u6B21\u9000\u6B3E\uFF08\u5DF2\u6D88\u8017\u90E8\u5206\u5BF9\u5E94\u7684\u73B0\u91D1\u4E0D\u53EF\u9000\uFF09",refund_failed:"\u652F\u4ED8\u5B9D\u9000\u6B3E\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u68C0\u67E5\u652F\u4ED8\u5B9D\u5546\u6237\u540E\u53F0",refund_pending:"\u9000\u6B3E\u7ED3\u679C\u5F85\u786E\u8BA4\uFF0C\u8BF7\u7A0D\u540E\u67E5\u770B\u9000\u6B3E\u8BB0\u5F55",refund_in_progress:"\u8BE5\u8BA2\u5355\u6216\u8BA2\u9605\u6709\u9000\u6B3E\u6B63\u5728\u5904\u7406\u4E2D\uFF0C\u8BF7\u5F85\u5176\u5B8C\u6210\u540E\u518D\u64CD\u4F5C",refund_blocked_by_pending_order:"\u8BE5\u8BA2\u9605\u6709\u5F85\u652F\u4ED8\u7684\u7EED\u8D39\u8BA2\u5355\uFF0C\u8BF7\u5F85\u5176\u652F\u4ED8\u6216\u8D85\u65F6\u540E\u518D\u9000\u6B3E",refund_order_superseded:"\u5B58\u5728\u66F4\u665A\u5165\u8D26\u7684\u8BA2\u5355\uFF0C\u8BF7\u6309\u4ECE\u65B0\u5230\u65E7\u7684\u987A\u5E8F\u9000\u6B3E",refund_request_not_found:"\u9000\u6B3E\u7533\u8BF7\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5904\u7406\uFF0C\u8BF7\u5237\u65B0\u540E\u67E5\u770B",refund_nothing_refundable:"\u8BE5\u8BA2\u9605\u8BA2\u5355\u6309\u9650\u989D\u5468\u671F\u8BA1\u8D39\u540E\u5DF2\u65E0\u53EF\u9000\u91D1\u989D",subscription_limit_reached:"\u8BA2\u9605\u989D\u5EA6\u5DF2\u7528\u5C3D\uFF0C\u8BF7\u7B49\u5F85\u7A97\u53E3\u91CD\u7F6E",no_subscription_coverage:"\u5F53\u524D\u5206\u7EC4\u6CA1\u6709\u53EF\u7528\u7684\u8BA2\u9605\uFF0C\u8BF7\u8BA2\u9605\u5957\u9910\u6216\u8C03\u6574\u6263\u8D39\u65B9\u5F0F",subscription_revoked:"\u8BE5\u8BA2\u9605\u5DF2\u88AB\u4F5C\u5E9F",plan_disabled:"\u8BE5\u5957\u9910\u5DF2\u505C\u552E",order_already_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u7533\u8BF7\u8FC7\u53D1\u7968",order_not_eligible:"\u6240\u9009\u8BA2\u5355\u4E0D\u7B26\u5408\u5F00\u7968\u6761\u4EF6",order_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u5F00\u7968\u6216\u6709\u672A\u5904\u7406\u7684\u5F00\u7968\u7533\u8BF7\uFF0C\u65E0\u6CD5\u9000\u6B3E",invoice_profile_exists:"\u5DF2\u5B58\u5728\u76F8\u540C\u7684\u5E38\u7528\u5F00\u7968\u4FE1\u606F",invite_code_invalid:"\u9080\u8BF7\u7801\u65E0\u6548",ticket_closed:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u8BF7\u5148\u91CD\u65B0\u6253\u5F00\u540E\u518D\u56DE\u590D",ticket_limit_exceeded:"\u672A\u5173\u95ED\u7684\u5DE5\u5355\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u5173\u95ED\u5DF2\u89E3\u51B3\u7684\u5DE5\u5355",attachment_storage_unconfigured:"\u5C1A\u672A\u914D\u7F6E\u9644\u4EF6\u5B58\u50A8",attachment_too_large:"\u9644\u4EF6\u5927\u5C0F\u8D85\u8FC7\u9650\u5236",attachment_invalid:"\u9644\u4EF6\u65E0\u6548\u6216\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20",attachment_staging_limit_exceeded:"\u5F85\u63D0\u4EA4\u7684\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u63D0\u4EA4\u73B0\u6709\u9644\u4EF6",docs_not_configured:"\u6587\u6863\u4E2D\u5FC3\u672A\u542F\u7528",docs_source_unavailable:"\u6587\u6863\u5185\u5BB9\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",docs_page_not_found:"\u8BE5\u6587\u6863\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664",provider_status_unavailable:"\u5B98\u65B9\u670D\u52A1\u72B6\u6001\u6682\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"};import{z as Qn}from"zod";var jf=Qn.string().trim().min(1),ss=jf.pipe(Qn.url()),Hf=Qn.object({name:Qn.string().trim().min(1),description:Qn.string().trim().min(1),url:ss}),rT=Qn.array(Hf);function hc(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function hr(e){if(!e)return"\u672A\u77E5\u8BBE\u5907";let t=e.type==="cli"?e.clientVersion:e.clientVersion?.split(".")[0],n=[e.client?t?`${e.client} ${t}`:e.client:null,e.os].filter(r=>r!==null);return n.length>0?n.join(" \xB7 "):"\u672A\u77E5\u8BBE\u5907"}import{z as Vt}from"zod";var as=1e8;var cT=Vt.object({id:Vt.coerce.number().int().positive()}),bc=100,lT=Vt.object({page:Vt.coerce.number().int().min(1)});function _n(e){return Vt.object({items:Vt.array(e),total:Vt.number()})}var me=Vt.object({ok:Vt.literal(!0)});import{z as Y}from"zod";var Rn=Y.email().max(254).toLowerCase(),at=8,Po=Y.string().min(at).max(128),Co=Y.string().min(1).max(128),Pn=32,cs=Y.string().trim().min(1).max(Pn),ls=Y.string().trim().min(1).max(254),dT=Y.object({email:Rn}),pT=Y.object({username:cs,email:Rn,password:Po,code:Y.string().min(4).max(8),inviteCode:Y.string().trim().min(1).max(32).optional()}),fT=Y.object({account:ls,password:Co}),gT=Y.object({email:Rn,code:Y.string().min(4).max(8),password:Po}),hT=Y.object({oldPassword:Co,newPassword:Po}),bT=Y.object({email:Rn}),yT=Y.object({email:Rn,code:Y.string().min(4).max(8),password:Co}),yc=Y.object({username:Y.string(),email:Y.string()}),Zn=Y.object({accessToken:Y.string(),user:yc}),Sc=Y.discriminatedUnion("status",[Zn.extend({status:Y.literal("ok")}),Y.object({status:Y.literal("totp_required"),ticket:Y.string()})]),xc=Y.object({user:yc}),qf=Y.object({client:Y.string().nullable(),clientVersion:Y.string().nullable(),os:Y.string().nullable(),osVersion:Y.string().nullable(),type:Y.string().nullable(),vendor:Y.string().nullable(),model:Y.string().nullable()}),Wf=Y.object({id:Y.number().int(),ip:Y.string(),userAgent:Y.string().nullable(),device:qf.nullable(),loginAt:Y.string(),lastActiveAt:Y.string(),expiresAt:Y.string(),current:Y.boolean()}),Tc=Y.object({sessions:Y.array(Wf)});import{z as ue}from"zod";var eo=ue.string().trim().length(6),Gf=ue.string().trim().min(10).max(20),br=ue.string().trim().min(1).max(64),yr=ue.record(ue.string(),ue.unknown()),TT=ue.object({ticket:ue.string().min(1),code:eo}),wT=ue.object({ticket:ue.string().min(1),code:Gf}),kT=ue.object({code:eo.optional()}),vT=ue.object({code:eo}),wc=ue.object({secret:ue.string(),otpauthUri:ue.string()}),us=ue.object({recoveryCodes:ue.array(ue.string())}),zf=ue.object({id:ue.number().int(),name:ue.string(),createdAt:ue.string(),lastUsedAt:ue.string().nullable()}),kc=ue.object({totp:ue.object({enabled:ue.boolean(),enabledAt:ue.string().nullable(),recoveryCodesRemaining:ue.number().int()}),passkeys:ue.array(zf)}),_T=ue.object({name:br,response:yr}),RT=ue.object({name:br}),PT=ue.object({response:yr});import{z as xe}from"zod";var IT=xe.object({account:ls,password:Co}),Kf=xe.object({totp:xe.boolean(),passkeys:xe.boolean()}),LT=xe.discriminatedUnion("status",[xe.object({status:xe.literal("totp_required"),ticket:xe.string()}),xe.object({status:xe.literal("setup_required"),ticket:xe.string(),missing:Kf})]),MT=xe.object({ticket:xe.string().min(1)}),OT=xe.object({ticket:xe.string().min(1),code:eo}),$T=xe.object({ticket:xe.string().min(1),name:br,response:yr}),DT=xe.object({ticket:xe.string().min(1),code:eo.optional()}),vc=xe.object({username:xe.string(),email:xe.string()}),BT=xe.object({accessToken:xe.string(),admin:vc}),FT=xe.object({admin:vc});import{z as ms}from"zod";var WT=ms.object({siteName:ms.string().trim().min(1).max(64),siteDescription:ms.string().trim().max(200).optional(),siteOrigin:ss,username:cs,email:Rn,password:Po});import{z as Te}from"zod";var _c={orderNo:Te.string(),amountCny:Te.number().int(),status:tc,credited:Te.boolean(),refundedAmountCny:Te.number().int(),succeededRefundCny:Te.number().int(),pendingRefundCny:Te.number().int(),createdAt:Te.string()},Eo=Te.object({..._c,quota:Te.number(),refundedQuota:Te.number()}),Ao=Te.object({..._c,planName:Te.string(),renewal:Te.boolean(),grantedDurationDays:Te.number().int()}),Sr=Te.object({order:Eo.pick({orderNo:!0,amountCny:!0,quota:!0}),qrCode:Te.string()}),No=Te.object({order:Ao.pick({orderNo:!0,amountCny:!0,planName:!0,grantedDurationDays:!0}),qrCode:Te.string()}),Rc=Te.object({id:Te.number().int(),amountCny:Te.number().int(),status:nc,refundTradeNo:Te.string().nullable(),reason:Te.string().nullable(),rejectReason:Te.string().nullable(),createdAt:Te.string()});function Pc(e){return e.status!=="paid"&&e.status!=="partially_refunded"||e.pendingRefundCny>0?!1:e.kind==="recharge"?e.refundedAmountCny<e.amountCny:e.refundedAmountCny===0}import{z as Ge}from"zod";var xr=Ge.object({id:Ge.number().int(),title:Ge.string(),category:uc,priority:mc,status:lc,createdAt:Ge.string(),updatedAt:Ge.string()}),Cc=xr.pick({id:!0}),Io=25*1024*1024,Tr=5,Ec=Ge.object({id:Ge.number().int(),fileName:Ge.string(),fileSize:Ge.number().int(),contentType:Ge.string()}),Ac=Ec.pick({id:!0,fileSize:!0}),Vf=Ge.object({id:Ge.number().int(),authorKind:dc,content:Ge.string(),attachments:Ge.array(Ec),createdAt:Ge.string()}),Nc=Ge.object({ticket:xr,messages:Ge.array(Vf)});import{z as Lo}from"zod";var ds=Lo.object({id:Lo.number().int(),title:Lo.string(),content:Lo.string(),level:rc,publishedAt:Lo.string()});import{z as Ie}from"zod";var nw=Ie.object({groups:Ie.array(Ie.object({title:Ie.string(),items:Ie.array(Ie.object({slug:Ie.string(),title:Ie.string()}))}))}),ow=Ie.object({title:Ie.string(),markdown:Ie.string(),images:Ie.record(Ie.string(),Ie.object({width:Ie.number().int(),height:Ie.number().int()}))}),rw=Ie.object({slug:Ie.string(),title:Ie.string(),anchor:Ie.string().nullable(),snippet:Ie.string()});import{z as je}from"zod";function Se(e){return e.toLocaleString("en-US")}function ln(e){let t=Math.abs(e);return t>=1e9?`${(e/1e9).toFixed(1)}B`:t>=1e6?`${(e/1e6).toFixed(1)}M`:t>=1e3?`${(e/1e3).toFixed(1)}k`:Se(e)}function $t(e,t){return e===0&&t!==void 0?t:e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6})}function Cn(e){return(e/1e3).toFixed(2)}function to(e){return e>=1024**3?`${(e/1024**3).toFixed(1)} GB`:e>=1024**2?`${(e/1024**2).toFixed(1)} MB`:e>=1024?`${(e/1024).toFixed(1)} KB`:`${e} B`}function wr(e,t){return`${e}******${t}`}var ps=je.object({inputPricePerMillionTokens:je.number(),outputPricePerMillionTokens:je.number(),cachedInputPricePerMillionTokens:je.number(),cacheWritePricePerMillionTokens:je.number()});var Jf=je.number().int().nonnegative(),Yf=je.discriminatedUnion("kind",[ps.extend({kind:je.literal("price"),inputTokensOver:Jf}),je.object({kind:je.literal("multiplier"),param:je.string(),value:je.string(),multiplier:je.number()})]),Ic=je.array(Yf);function Xf(e){return e.kind==="price"}function Lc(e){return e.kind==="multiplier"}function Mc(e){return e>=1e6&&e%1e5===0?`${e/1e6}M`:e>=1e3&&e%1e3===0?`${e/1e3}k`:Se(e)}function Mo(e){return e===null?"\u57FA\u7840":"\u6269\u5C55"}function fs(e){return`> ${Mc(e)}`}function Oc(e,t){let o=t.filter(Xf).sort((r,i)=>r.inputTokensOver-i.inputTokensOver),n=o[0];return n===void 0?[{name:Mo(null),range:null,price:e}]:[{name:Mo(null),range:`\u2264 ${Mc(n.inputTokensOver)}`,price:e},...o.map(r=>({name:Mo(r.inputTokensOver),range:fs(r.inputTokensOver),price:r}))]}var Qf=je.object({value:je.string(),multiplier:je.number()}),$c=je.array(Qf);function Dc(e){return Fc(e.map(t=>t.multiplier))}function Bc(e,t){return Fc([e,...t.map(o=>o.multiplier)])}function Fc(e){return Number(e.reduce((t,o)=>t*o,1).toFixed(4))}import{z as En}from"zod";var Zf=En.object({provider:Za,pageUrl:En.string(),indicator:pc,incidents:En.array(En.object({title:En.string()}))}),Uc=En.object({providers:En.array(Zf)}),eg={minor:{label:"\u90E8\u5206\u964D\u7EA7",tone:"warning"},major:{label:"\u90E8\u5206\u4E2D\u65AD",tone:"danger"},critical:{label:"\u4E25\u91CD\u4E2D\u65AD",tone:"danger"}};function jc(e){return e.filter(t=>t.indicator!=="none"||t.incidents.length>0)}function Hc(e){return e.indicator==="none"?{label:"\u4E8B\u4EF6\u5904\u7406\u4E2D",tone:"warning"}:eg[e.indicator]}var tg="Asia/Shanghai",ng="+08:00";function og(e){return new Date(new Date(e).getTime()+288e5)}function rg(e=Date.now()){let t=og(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function gs(e=Date.now()){return rg(e).day}function hs(e=gs()){return new Date(`${e}T00:00:00${ng}`)}function un(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var ig=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:tg});function V(e){return ig.format(new Date(e))}var sg=[{name:"\u4E00\u6574\u4E2A left-pad npm \u5305",tokens:110},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u5065\u8C08\u9E66\u9E49\u6BD5\u751F\u5B66\u4F1A\u7684\u8BCD\u6C47",tokens:2200},{name:"\u300A\u8BBA\u8BED\u300B",tokens:25e3},{name:"\u300A\u5C0F\u738B\u5B50\u300B",tokens:3e4},{name:"\u300A\u96F7\u950B\u65E5\u8BB0\u300B",tokens:54e3},{name:"\u300A\u8BD7\u7ECF\u300B",tokens:6e4},{name:"\u5468\u6770\u4F26\u5341\u4E94\u5F20\u4E13\u8F91\u7684\u5168\u90E8\u6B4C\u8BCD",tokens:82e3},{name:"\u300A\u6D3B\u7740\u300B",tokens:11e4},{name:"\u300A\u970D\u6BD4\u7279\u4EBA\u300B",tokens:12e4},{name:"\u300A\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD\u6C11\u6CD5\u5178\u300B",tokens:126e3},{name:"\u300A\u94F6\u6CB3\u7CFB\u642D\u8F66\u5BA2\u6307\u5357\u300B\u4E94\u90E8\u66F2",tokens:26e4},{name:"\u79E6\u59CB\u7687\u4E00\u5929\u6279\u9605\u7684\u7AF9\u7B80\u594F\u7AE0",tokens:34e4},{name:"\u300A\u7EB3\u5C3C\u4E9A\u4F20\u5947\u300B\u5168\u4E03\u518C",tokens:45e4},{name:"\u300A\u5802\u5409\u8BC3\u5FB7\u300B",tokens:56e4},{name:"\u300A\u9B54\u6212\u300B\u4E09\u90E8\u66F2",tokens:59e4},{name:"\u300A\u804A\u658B\u5FD7\u5F02\u300B",tokens:6e5},{name:"\u300A\u6218\u4E89\u4E0E\u548C\u5E73\u300B",tokens:76e4},{name:"\u300A\u65B0\u534E\u5B57\u5178\u300B",tokens:8e5},{name:"\u300A\u7EA2\u697C\u68A6\u300B",tokens:9e5},{name:"\u300A\u897F\u6E38\u8BB0\u300B",tokens:1e6},{name:"\u300A\u4E09\u4F53\u300B\u4E09\u90E8\u66F2",tokens:11e5},{name:"\u838E\u58EB\u6BD4\u4E9A\u5168\u96C6",tokens:115e4},{name:"\u300A\u7504\u5B1B\u4F20\u300B\u5168\u5267\u5267\u672C",tokens:12e5},{name:"\u963F\u6CE2\u7F57 11 \u53F7\u767B\u6708\u5236\u5BFC\u7A0B\u5E8F\u6E90\u7801",tokens:13e5},{name:"\u300A\u54C8\u5229\xB7\u6CE2\u7279\u300B\u5168\u4E03\u90E8",tokens:14e5},{name:"\u8FC4\u4ECA\u51FA\u571F\u7684\u5168\u90E8\u7532\u9AA8\u6587",tokens:15e5},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u957F\u5C0F\u8BF4\u300A\u8FFD\u5FC6\u4F3C\u6C34\u5E74\u534E\u300B",tokens:165e4},{name:"\u300A\u51B0\u4E0E\u706B\u4E4B\u6B4C\u300B\u5DF2\u51FA\u4E94\u5377",tokens:226e4},{name:"\u300A\u65F6\u5149\u4E4B\u8F6E\u300B\u5168\u5341\u56DB\u5377",tokens:57e5},{name:"\u300A\u5168\u5510\u8BD7\u300B",tokens:64e5},{name:"\u300A\u9C81\u8FC5\u5168\u96C6\u300B",tokens:85e5},{name:"\u91D1\u5EB8\u5341\u4E94\u90E8\u5C0F\u8BF4",tokens:105e5},{name:"\u300A\u8F9E\u6D77\u300B",tokens:282e5},{name:"\u300A\u5927\u82F1\u767E\u79D1\u5168\u4E66\u300B",tokens:52e6},{name:"\u4E00\u6574\u5E74\u300A\u4EBA\u6C11\u65E5\u62A5\u300B",tokens:53e6},{name:"\u300A\u4E8C\u5341\u56DB\u53F2\u300B",tokens:6e7},{name:"\u300A\u725B\u6D25\u82F1\u8BED\u8BCD\u5178\u300B\u7B2C\u4E8C\u7248",tokens:767e5},{name:"\u5355\u7530\u82B3\u6BD5\u751F\u8BC4\u4E66\u4F5C\u54C1",tokens:86e6},{name:"\u300A\u4E2D\u56FD\u5927\u767E\u79D1\u5168\u4E66\u300B\u7B2C\u4E00\u7248",tokens:1508e5},{name:"\u6574\u5957 Linux \u5185\u6838\u6E90\u7801",tokens:4e8},{name:"\u4E00\u4E2A\u666E\u901A\u4EBA\u4E00\u751F\u8BF4\u51FA\u7684\u5168\u90E8\u8BDD\u8BED",tokens:5e8},{name:"\u4E2D\u6587\u7EF4\u57FA\u767E\u79D1",tokens:1e9},{name:"\u300A\u56DB\u5E93\u5168\u4E66\u300B",tokens:12e8},{name:"\u82F1\u6587\u7EF4\u57FA\u767E\u79D1",tokens:676e7},{name:"\u8C37\u6B4C\u5168\u90E8\u4EE3\u7801\u5E93",tokens:2e10}];function ag(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function ct(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function qc(e){return e<365?`${ct(e)} \u5929`:`${ct(e/365)} \u5E74`}function cg(e){let t=e/1.2/250/60;if(t<48)return`${Math.max(1,Math.round(t))} \u5C0F\u65F6`;let o=t/24;return o<730?`${Math.round(o)} \u5929`:`${ct(o/365)} \u5E74`}function lg(e){let t=e/1.2/80/60/8;return t<250?`${ct(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${ct(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function ug(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${ct(t/1e3)} \u516C\u65A4`:`${ct(t/1e6)} \u5428`}var mg=[...sg.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${ag(t/e.tokens)} \u500D`})),{min:3e5,max:1/0,suffix:e=>`\u6253\u5370\u6210 A4 \u7EB8\u7EA6\u6709 ${Math.round(e/1.2/1500).toLocaleString("en-US")} \u9875`},{min:3e5,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 250 \u5B57\u7684\u8BED\u901F\u6717\u8BFB\u7EA6\u9700 ${cg(e)}`},{min:1680,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/140).toLocaleString("en-US")} \u6761\u5199\u6EE1 140 \u5B57\u7684\u5FAE\u535A`},{min:9600,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/800).toLocaleString("en-US")} \u7BC7 800 \u5B57\u7684\u9AD8\u8003\u4F5C\u6587`},{min:131400,max:1/0,suffix:e=>`\u6309\u6BCF\u5929\u4E00\u7BC7 300 \u5B57\u7684\u65E5\u8BB0\u8BA1\uFF0C\u591F\u8FDE\u7EED\u5199 ${ct(e/1.2/300/365)} \u5E74`},{min:12e5,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/1e5).toLocaleString("en-US")} \u672C\u5341\u4E07\u5B57\u7684\u535A\u58EB\u8BBA\u6587`},{min:33e3,max:1/0,suffix:e=>`\u6309\u300A\u8D44\u6CBB\u901A\u9274\u300B\u7684\u7B14\u58A8\u5BC6\u5EA6\uFF0C\u7EA6\u591F\u53F8\u9A6C\u5149\u8BB0\u8F7D ${Math.round(e/45e5*1362).toLocaleString("en-US")} \u5E74\u5386\u53F2`},{min:49e3,max:1/0,suffix:e=>`\u7EA6\u5408\u300A\u4E00\u5343\u96F6\u4E00\u591C\u300B\u91CC\u5C71\u9C81\u4F50\u5FB7\u8BB2\u6545\u4E8B\u7684 ${Math.round(e/492e4*1001).toLocaleString("en-US")} \u4E2A\u591C\u665A`},{min:640,max:1/0,suffix:e=>`\u6309\u91D1\u9675\u523B\u7ECF\u5904\u523B\u5DE5\u534A\u6708\u523B\u6210\u4E00\u5757 800 \u5B57\u7ECF\u7248\u7684\u8FDB\u5EA6\uFF0C\u5168\u90E8\u523B\u4E0A\u96D5\u7248\u9700\u8981 ${qc(e/1.2/53)}`},{min:460800,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 80 \u5B57\u3001\u6BCF\u5929 8 \u5C0F\u65F6\u8BA1\uFF0C\u591F\u4E00\u4F4D\u4E13\u804C\u6253\u5B57\u5458\u6253 ${lg(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${ug(e)}`},{min:18e3,max:1/0,suffix:e=>`\u6309\u300A\u6C38\u4E50\u5927\u5178\u300B\u91CD\u5F55\u4E66\u624B\u6BCF\u5929\u4E09\u53F6\u3001\u7EA6 1500 \u5B57\u7684\u5B9A\u989D\uFF0C\u591F\u4E00\u4F4D\u4E66\u624B\u6284\u5199 ${qc(e/1.2/1500)}`},{min:108e3,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/9e3).toLocaleString("en-US")} \u671F\u300A\u65B0\u95FB\u8054\u64AD\u300B\u7684\u64AD\u62A5\u7A3F`},{min:4e4,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${ct(e/1.2/33e3)} \u5C4A\u592E\u89C6\u6625\u665A\u7684\u5168\u90E8\u53F0\u8BCD\u548C\u6B4C\u8BCD`},{min:96e3,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6807\u51C6 400 \u7C73\u8DD1\u9053 ${ct(e/1.2*.005/400)} \u5708`},{min:96e5,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u5408\u5730\u9762\u5230\u56FD\u9645\u7A7A\u95F4\u7AD9\u8DDD\u79BB\u7684 ${ct(e/1.2*.005/4e5)} \u500D`},{min:26e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6708\u7403\u8D64\u9053 ${ct(e/1.2*.005/10917e3)} \u5708`},{min:96e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u5730\u7403\u8D64\u9053 ${ct(e/1.2*.005/40075e3)} \u5708`}];function Wc(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=mg.filter(c=>t>=c.min&&t<=c.max),i=r[Math.floor(Math.random()*r.length)];return i?`${o==="user"?"\u4F60":"\u5168\u7AD9"}${n==="all"?"\u7D2F\u8BA1":n==="30d"?"\u8FD1 30 \u5929":"\u8FD1 7 \u5929"}\u4F7F\u7528\u7684 Token \u91CF${i.suffix(t)}`:null}function mn(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function Et(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var dn=mn({pending:{label:"\u5F85\u652F\u4ED8",tone:"warning"},paid:{label:"\u5DF2\u652F\u4ED8",tone:"success"},refund_requested:{label:"\u9000\u6B3E\u5BA1\u6838\u4E2D",tone:"warning"},partially_refunded:{label:"\u90E8\u5206\u9000\u6B3E",tone:"warning"},refunded:{label:"\u5DF2\u9000\u6B3E",tone:"danger"},failed:{label:"\u5931\u8D25",tone:"danger"},expired:{label:"\u5DF2\u8FC7\u671F",tone:"neutral"}}),hw=Et({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),kr=mn({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),bw=mn({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),bs=Et({subscription_first:"\u8BA2\u9605\u4F18\u5148",balance_first:"\u4F59\u989D\u4F18\u5148",subscription_only:"\u4EC5\u8BA2\u9605",balance_only:"\u4EC5\u4F59\u989D"}),ys=Et({subscription_first:"\u6709\u53EF\u7528\u8BA2\u9605\u65F6\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6\uFF0C\u8BA2\u9605\u7528\u5C3D\u6216\u672A\u8986\u76D6\u5F53\u524D\u5206\u7EC4\u65F6\u6539\u6263\u4F59\u989D",balance_first:"\u4F59\u989D\u5145\u8DB3\u65F6\u6263\u4F59\u989D\uFF0C\u4F59\u989D\u4E0D\u8DB3\u65F6\u6539\u7528\u8BA2\u9605\u989D\u5EA6",subscription_only:"\u53EA\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6\uFF0C\u8BA2\u9605\u7528\u5C3D\u6216\u672A\u8986\u76D6\u5F53\u524D\u5206\u7EC4\u65F6\u62D2\u7EDD\u8BF7\u6C42",balance_only:"\u53EA\u6263\u8D26\u6237\u4F59\u989D\uFF0C\u4E0D\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6"}),Gc=Yi.map(e=>({value:e,label:bs(e)})),Ss=Et({recharge:"\u5145\u503C",reserve:"\u9884\u6263",consume:"\u6D88\u8D39",reserve_refund:"\u9884\u6263\u9000\u56DE",refund:"\u9000\u6B3E",refund_release:"\u9000\u6B3E\u8FD4\u8FD8",reward:"\u5956\u52B1",admin_adjust:"\u7BA1\u7406\u5458\u8C03\u6574"}),zc=Et({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),Kc=mn({requested:{label:"\u5F85\u5BA1\u6838",tone:"warning"},pending:{label:"\u5F85\u786E\u8BA4",tone:"warning"},succeeded:{label:"\u5DF2\u9000\u6B3E",tone:"success"},failed:{label:"\u5931\u8D25",tone:"danger"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"},canceled:{label:"\u5DF2\u64A4\u9500",tone:"neutral"}}),vr=mn({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),Vc=Et({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),Oo=Et({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),An=Et({special:"\u4E13\u7968",general:"\u666E\u7968"}),_r=Et({first_inviter:"\u9996\u5145\u8FD4\u5229\uFF08\u9080\u8BF7\u4EBA\uFF09",first_invitee:"\u9996\u5145\u8FD4\u5229\uFF08\u88AB\u9080\u8BF7\u4EBA\uFF09",subsequent_inviter:"\u7EED\u5145\u8FD4\u5229\uFF08\u9080\u8BF7\u4EBA\uFF09"}),$o=mn({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),xs=mn({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),Rr=Et({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),Ts=mn({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}}),Jc=Et({openai:"OpenAI",anthropic:"Anthropic"});function Ze(e,t,o){let n=r=>{let i=t(r);return typeof i=="string"?i:i.label};return[{value:"",label:o},...e.map(r=>({value:r,label:n(r)}))]}function be(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function ws(e){return Math.round(e*100)}function Yc(e){return e/100}function Xc(e,t,o){let n=e/t;return`${n<0?"-":""}$${Math.abs(n).toLocaleString("en-US",{minimumFractionDigits:o,maximumFractionDigits:o})}`}function ae(e,t){return Xc(e,t,2)}function no(e,t){return Xc(e,t,6)}var Pr=10080,Cr=1440;function Qc(e){if(e%Pr===0){let t=e/Pr;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%Cr===0){let t=e/Cr;return t===1?"\u6BCF\u65E5\u9650\u989D":`${t} \u5929\u9650\u989D`}return e%60===0?`${e/60} \u5C0F\u65F6\u9650\u989D`:`${e} \u5206\u949F\u9650\u989D`}function dg(e){if(e%Pr===0){let t=e/Pr;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%Cr===0){let t=e/Cr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function Zc(e,t){return e.windows.map(o=>`${dg(o.durationMinutes)} ${ae(o.quota,t)}`)}function ks(e){return Math.min(100,Math.floor(e.used/e.quota*100))}function vs(e){return e.revokedAt!==null?{label:"\u5DF2\u4F5C\u5E9F",tone:"danger"}:new Date(e.expiresAt).getTime()<=Date.now()?{label:"\u5DF2\u8FC7\u671F",tone:"neutral"}:{label:"\u751F\u6548\u4E2D",tone:"success"}}var _s={recharge:["\u5145\u9519\u91D1\u989D\u6216\u91CD\u590D\u5145\u503C","\u9700\u8981\u7684\u6A21\u578B\u4E0D\u53EF\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u5B9E\u9645\u8BA1\u8D39\u9AD8\u4E8E\u9884\u671F","\u4F59\u989D\u7528\u4E0D\u5B8C\uFF0C\u4E0D\u518D\u9700\u8981"],subscription:["\u8BEF\u8D2D\u6216\u9009\u9519\u5957\u9910","\u5957\u9910\u4E0D\u542B\u9700\u8981\u7684\u6A21\u578B","\u9650\u989D\u592A\u4F4E\uFF0C\u4E0D\u591F\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u4F7F\u7528\u9891\u7387\u4F4E\uFF0C\u4E0D\u5212\u7B97"]},el={recharge:"\u63D0\u4EA4\u540E\u672C\u5355\u5269\u4F59\u989D\u5EA6\u4E0E\u5173\u8054\u7684\u9080\u8BF7\u5956\u52B1\u5C06\u7ACB\u5373\u4ECE\u4F59\u989D\u6536\u56DE\uFF1B\u5BA1\u6838\u901A\u8FC7\u540E\u539F\u8DEF\u9000\u56DE\u652F\u4ED8\u5B9D\uFF0C\u9A73\u56DE\u6216\u64A4\u9500\u540E\u81EA\u52A8\u6062\u590D",subscription:"\u63D0\u4EA4\u540E\u672C\u5355\u672A\u5F00\u59CB\u7684\u65F6\u957F\u7ACB\u5373\u5931\u6548\uFF0C\u6B63\u5728\u670D\u52A1\u4E2D\u7684\u65F6\u6BB5\u4FDD\u7559\u81F3\u5F53\u524D\u9650\u989D\u5468\u671F\u7ED3\u675F\uFF1B\u5BA1\u6838\u901A\u8FC7\u540E\u6309\u672A\u5F00\u59CB\u7684\u9650\u989D\u5468\u671F\u6298\u7B97\u539F\u8DEF\u9000\u6B3E\uFF0C\u9A73\u56DE\u6216\u64A4\u9500\u540E\u81EA\u52A8\u6062\u590D"};import{release as pg}from"os";var fg=3e4,gg=hc({cliVersion:ht,platform:process.platform,release:pg(),arch:process.arch,nodeVersion:process.versions.node});async function tl(e,t){if(t.json!==void 0&&t.body!==void 0)throw new Error("httpRequest cannot accept both json and body");let o=new Headers(t.headers);o.set("user-agent",gg);let n=t.body;t.json!==void 0&&(o.set("content-type","application/json"),n=JSON.stringify(t.json));try{return await fetch(e,{method:t.method??(n===void 0?"GET":"POST"),headers:o,body:n,signal:AbortSignal.timeout(t.timeoutMs??fg),redirect:"follow"})}catch(r){let i=URL.canParse(e)?new URL(e).origin:e;throw new O(`\u65E0\u6CD5\u8FDE\u63A5 ${i}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:ja,cause:r})}}async function nl(e){let t=await e.text();if(t==="")return null;try{return JSON.parse(t)}catch{return null}}async function bt(e,t={}){let o=await tl(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await nl(o)};let n=await o.text(),r=null;if(n!=="")try{r=JSON.parse(n)}catch(i){throw new O(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:i})}return{status:o.status,ok:!0,headers:o.headers,data:r}}async function ol(e,t={}){let o=await tl(e,t);if(!o.ok)return{status:o.status,ok:!1,headers:o.headers,data:await nl(o),bytes:null};let n=new Uint8Array(await o.arrayBuffer());return{status:o.status,ok:!0,headers:o.headers,data:null,bytes:n}}function hg(e,t){let o=fc.safeParse(t);if(!o.success)return new O(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:n,message:r}=o.data.error,i=n==="unauthorized"||n==="token_expired"?kn:void 0;return new O(gc[n]??r,i?{exitCode:i}:{})}function At(e){if(!e.ok)throw hg(e.status,e.data)}var sl="cf_refresh",al="cf_device",rl=6e4;function il(e,t){for(let o of e.getSetCookie()){let n=o.split(";",1)[0];if(n===void 0)continue;let r=n.indexOf("=");if(!(r<0)&&n.slice(0,r).trim()===t)return n.slice(r+1).trim()}return null}function Do(e,t){return{refresh:il(t,sl)??e.refresh,device:il(t,al)??e.device}}function Er(e){let t=[];return e.refresh&&t.push(`${sl}=${e.refresh}`),e.device&&t.push(`${al}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function bg(e){let t=e.split(".")[1];if(t===void 0)throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u683C\u5F0F\u4E0D\u6B63\u786E");let o;try{o=JSON.parse(Buffer.from(t,"base64url").toString("utf8"))}catch(r){throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u65E0\u6CD5\u89E3\u6790",{cause:r})}let n=o.exp;if(typeof n!="number")throw new O("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u7F3A\u5C11\u6709\u6548\u671F");return n*1e3}function Bo(e,t,o){if(!t.refresh)throw new O("\u670D\u52A1\u7AEF\u672A\u4E0B\u53D1\u5237\u65B0\u51ED\u636E\uFF0C\u65E0\u6CD5\u4FDD\u6301\u767B\u5F55\u72B6\u6001");let n={refreshCookie:t.refresh,accessToken:o.accessToken,accessExpiresAt:bg(o.accessToken),username:o.user.username,email:o.user.email,site:e};return Ji(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function Rs(e){let{device:t}=Ct();return t!==null&&t.site===e?t.cookie:null}async function cl(e,t,o){let n={refresh:null,device:Rs(e)},r=await bt(`${e}/api/auth/login`,{json:{account:t,password:o},headers:Er(n)});At(r);let i=Sc.parse(r.data),s=Do(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:Bo(e,s,i)}}async function ll(e,t,o,n,r){let s=await bt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:Er(t)});At(s);let a=Zn.parse(s.data);return Bo(e,Do(t,s.headers),a)}function ul(){Ji(e=>{e.session=null})}async function yg(e){let t={refresh:e.refreshCookie,device:Rs(e.site)},o=await bt(`${e.site}/api/auth/refresh`,{method:"POST",headers:Er(t)});if(o.status===401||o.status===403)throw ul(),new O("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:kn});At(o);let n=Zn.parse(o.data);return Bo(e.site,Do(t,o.headers),n)}async function Fo(e=!1){let t=Ya();return!e&&Date.now()<t.accessExpiresAt-rl?t:Xa(async()=>{let o=Ja().session;if(!o)throw new O("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:kn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-rl?o:yg(o)})}async function Ar(){let e=Ct().session;if(!e)return;let t=await bt(`${e.site}/api/auth/logout`,{method:"POST",headers:Er({refresh:e.refreshCookie,device:Rs(e.site)})});ul(),At(t)}import{spawn as Sg}from"child_process";function Uo(e,t={}){return new Promise((o,n)=>{let r=Sg("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
4
- `)){let m=l.trimEnd();m!==""&&(s.push(m),s.length>20&&s.shift())}};r.stdout.on("data",c=>{i.push(c.toString("utf8")),a(c)}),r.stderr.on("data",a),r.on("error",c=>n(new O(`\u6267\u884C npm \u5931\u8D25\uFF1A${c.message}`,{cause:c}))),r.on("close",c=>{if(c===0){o(i.join(""));return}let l=s.slice(-2).join(" / ");n(new O(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function ml(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${ve(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>Ar()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Kt();xg(n)&&Tg(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await Uo(["uninstall","-g",Vn])}),t}import{z as jo}from"zod";var wg=jo.object({line:jo.object({name:jo.string(),url:jo.string()}).nullable(),lastUpdateCheckAt:jo.number().nullable()}),dl=gr(wg,{line:null,lastUpdateCheckAt:null},qa,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),Nn=dl.load,Nr=dl.update;var kg=1440*60*1e3;async function pl(){let e=(await Uo(["view",Vn,"version"])).trim();if(e==="")throw new O(`npm \u6CA1\u6709\u62A5\u51FA ${Vn} \u7684\u7248\u672C`);return e}async function fl(e,t){return await Uo(["install","-g",`${Vn}@${e}`],{background:t}),e}async function gl(){let e=await pl();return e===ht?null:await fl(e,!1)}function vg(){let e=Date.now(),t=Nn().lastUpdateCheckAt;return t!==null&&e-t<kg?!1:(Nr(o=>{o.lastUpdateCheckAt=e}),!0)}async function hl(){if(!vg())return null;let e;try{e=await pl()}catch{return null}return e===ht?null:await fl(e,!0)}import{Box as QS,render as ZS,useInput as ex}from"ink";import{useEffect as Ba,useRef as tx}from"react";async function Nt(e,t,o={}){let n=await bt(t,o);return At(n),e.parse(n.data)}async function M(e,t,o={}){let n=await Fo(),r=s=>bt(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await Fo(!0);i=await r(s.accessToken)}return At(i),e.parse(i.data)}async function Ir(e,t={}){let o=await Fo(),n=i=>ol(`${o.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await n(o.accessToken);if(r.status===401){let i=await Fo(!0);r=await n(i.accessToken)}return At(r),r.bytes}function Dt(e,t){let o=new URLSearchParams;for(let[r,i]of Object.entries(t))i!==void 0&&o.set(r,String(i));let n=o.toString();return n===""?e:`${e}?${n}`}var bl=e=>M(_n(ds),Dt("/announcements",{...e})),yl=()=>M(ds.nullable(),"/announcements/unread"),Lr=e=>M(me,`/announcements/${e}/read`,{method:"POST"});import{Box as Sl,useWindowSize as _g}from"ink";import{Children as Rg}from"react";import{jsx as xl}from"react/jsx-runtime";var Pg=1,Ps=1,W=1;function j(){let{columns:e,rows:t}=_g();return{width:Math.max(1,e-Pg*2),columns:e,rows:t}}function Tl({height:e,children:t}){return xl(Sl,{flexDirection:"column",height:e,justifyContent:"space-between",children:Rg.toArray(t).map((o,n)=>xl(Sl,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as kl}from"ink";import{createContext as As,useCallback as Mr,useContext as Cg,useEffect as Ns,useMemo as Cs,useRef as Ho,useState as wl}from"react";import{jsx as Es}from"react/jsx-runtime";var Or=As(null),Is=As(null),oo={screen:0,panel:10,input:20},Ls=As(null);function vl({children:e}){let[t,o]=wl(!1),[n,r]=wl(!1),i=Ho(0),s=Ho(0),a=Ho([]),c=Ho(0),l=Mr(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),m=Mr(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),p=Mr(h=>{let y={...h,seq:c.current+=1};return a.current.push(y),()=>{a.current=a.current.filter(x=>x!==y)}},[]),d=Mr(()=>{a.current.reduce((y,x)=>y===null||x.layer>y.layer||x.layer===y.layer&&x.seq>y.seq?x:y,null)?.handler()},[]);kl((h,y)=>{y.escape&&d()});let f=Cs(()=>({active:t,acquire:l}),[t,l]),S=Cs(()=>({locked:n,acquire:m}),[n,m]),b=Cs(()=>({push:p,fire:d}),[p,d]);return Es(Or.Provider,{value:f,children:Es(Is.Provider,{value:S,children:Es(Ls.Provider,{value:b,children:e})})})}function In(e){let t=Cg(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function $r(e){let{acquire:t}=In(Or);Ns(()=>{if(e)return t()},[e,t])}function _l(e){let{acquire:t}=In(Is);Ns(()=>{if(e)return t()},[e,t])}function Dr(){return In(Is).locked}function Br(){return In(Or).active}function G(e,t=!0){let o=In(Or).active;kl(e,{isActive:t&&!o})}function Rl(){return In(Ls).fire}function pn(e,{isActive:t=!0,layer:o=oo.screen}={}){let{push:n}=In(Ls),r=Ho(e);r.current=e,Ns(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as Eg}from"ink";import{PassThrough as Ag}from"stream";import{createContext as Ng,useCallback as Ig,useContext as Lg,useEffect as Al,useRef as Fr}from"react";import{jsx as qg}from"react/jsx-runtime";var Mg="\x1B[?1000h\x1B[?1003h\x1B[?1006h",Og="\x1B[?1006l\x1B[?1003l\x1B[?1000l",$g=27,Dg=91,Bg=60,Pl=77,Cl=109,El=20,Fg=64,Ug=32,jg=20;function Hg(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==$g){o.push(r),n+=1;continue}let i=e[n+1],s=e[n+2];if(i===void 0||s===void 0)break;if(i!==Dg){o.push(r),n+=1;continue}if(s===Pl){if(n+6>e.length)break;n+=6;continue}if(s!==Bg){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<El;){let f=e[a];if(f===Pl||f===Cl){c=f;break}a+=1}if(c===void 0){if(a-n<El)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===Cl||l.length!==3)continue;let m=Number(l[0]),p=Number(l[1]),d=Number(l[2]);!Number.isFinite(m)||!Number.isFinite(p)||!Number.isFinite(d)||t.push((m&Fg)!==0?{row:d,column:p,kind:"wheel",delta:(m&1)===0?-1:1}:{row:d,column:p,kind:(m&Ug)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function Nl(e,t){let o=new Set,n=new Ag,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(n.write(r),r=Buffer.alloc(0))},a=d=>{i!==null&&clearTimeout(i),i=null;let f=Hg(Buffer.concat([r,d]));r=f.pending,f.clean.length>0&&n.write(f.clean);for(let S of f.events)for(let b of o)b(S);r.length>0&&(i=setTimeout(s,jg))},c=()=>{t.write(Og)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},m=d=>{process.exit(128+(l[d]??0))};e.on("data",a),process.once("exit",c);for(let d of Object.keys(l))process.on(d,m);t.write(Mg);let p=n;return Object.assign(p,{isTTY:!0,setRawMode(d){return e.setRawMode(d),p},ref(){return e.ref(),p},unref(){return e.unref(),p}}),{stdin:p,subscribe(d){return o.add(d),()=>{o.delete(d)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let d of Object.keys(l))process.off(d,m);e.off("data",a),o.clear()}}}var Il=Ng(null);function Ll({subscribe:e,children:t}){let o=Fr(new Set).current,n=Fr(null),r=Ig(i=>(o.add(i),()=>{o.delete(i)}),[o]);return Al(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let m of o){let p=m.node.current;if(p===null||m.handlers.current.isActive===!1)continue;let d=Eg(p);if(s<d.y||s>=d.y+d.height||a<d.x||a>=d.x+d.width)continue;let f=d.width*d.height;(c===null||f<c.area)&&(c={region:m,top:d.y,left:d.x,area:f})}if(i.kind==="move"){let m=c===null?null:c.region;if(n.current!==m){let p=n.current;p!==null&&o.has(p)&&p.handlers.current.onHoverLeave?.(),n.current=m}c!==null&&c.region.handlers.current.onHover?.({row:s-c.top,column:a-c.left});return}if(c===null)return;let l=c.region.handlers.current;i.kind==="wheel"?l.onWheel?.(i.delta):l.onClick?.({row:s-c.top,column:a-c.left})}),[e,o]),qg(Il.Provider,{value:r,children:t})}function He(e){let t=Lg(Il);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=Fr(null),n=Fr(e);return n.current=e,Al(()=>t({node:o,handlers:n}),[t]),o}import{useApp as Wg}from"ink";import{createContext as Gg,useCallback as Ln,useContext as zg,useEffect as Ms,useRef as jr,useState as Wo}from"react";var et=[{id:"usage",label:"\u6570\u636E\u770B\u677F"},{id:"tokens",label:"\u4EE4\u724C\u7BA1\u7406"},{id:"logs",label:"\u4F7F\u7528\u65E5\u5FD7"},{id:"models",label:"\u6A21\u578B\u5E7F\u573A"},{id:"recharge",label:"\u8D26\u6237\u5145\u503C"},{id:"subscription",label:"\u8BA2\u9605\u5957\u9910"},{id:"ledger",label:"\u989D\u5EA6\u6D41\u6C34"},{id:"invoices",label:"\u53D1\u7968\u7BA1\u7406"},{id:"invite",label:"\u9080\u8BF7\u597D\u53CB"},{id:"tickets",label:"\u5DE5\u5355\u652F\u6301"},{id:"announcements",label:"\u7CFB\u7EDF\u516C\u544A"},{id:"profile",label:"\u4E2A\u4EBA\u4E2D\u5FC3"}],Ml="usage",qo=e=>et.findIndex(t=>t.id===e),Ur=e=>qo(e)>=0;import{jsx as Vg}from"react/jsx-runtime";var Kg=5e3,$l=Gg(null),Dl=e=>({id:e,params:void 0}),Ol=()=>Ct().session===null?[{id:"home",params:void 0}]:[Dl(Ml)];function B(){let e=zg($l);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Bl({ctx:e,children:t}){let o=Wg(),[n,r]=Wo(Ol),[i,s]=Wo(0),[a,c]=Wo([]),l=jr({announcementsChecked:!1,announcementsShown:!1}).current,m=jr(new WeakMap).current,p=Ln((P,...$)=>{r(U=>[...U,{id:P,params:$[0]}])},[]),d=Ln(()=>{r(P=>P.length>1?P.slice(0,-1):P),s(P=>P+1)},[]),f=Ln(P=>{r([Dl(P)]),s($=>$+1)},[]),S=Ln(()=>{r(Ol()),s(P=>P+1)},[]),b=Ln(()=>s(P=>P+1),[]),h=Ln((P,$)=>{c(U=>[...U,{tone:P,message:$}])},[]),y=Ln(()=>c(P=>P.slice(1)),[]),x=a[0]??null;Ms(()=>{if(x===null)return;let P=setTimeout(y,Kg);return()=>clearTimeout(P)},[x,y]);let k=n[n.length-1];if(k===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let g=m.get(k);g===void 0&&(g=new Map,m.set(k,g));let w={ctx:e,current:k,depth:n.length,push:p,pop:d,select:f,home:S,reload:b,toast:h,message:x,dismissToast:y,exit:o.exit,revision:i,gate:l,retained:g};return Vg($l.Provider,{value:w,children:t})}function Xe(e,t){let{retained:o}=B(),[n,r]=Wo(()=>e!==void 0&&o.has(e)?o.get(e):t());return Ms(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Q(e,t){let[o,n]=Wo({phase:"loading"}),r=jr(t);r.current=t;let i=jr(0);return Ms(()=>{let s=i.current+=1;n({phase:"loading"}),r.current().then(a=>{i.current===s&&n({phase:"ready",data:a})}).catch(a=>{i.current===s&&n({phase:"error",message:ve(a),hint:a instanceof O?a.hint:void 0})})},e),o}import{Box as ii,Text as $n,useInput as _h}from"ink";import{Box as Jo,Text as ao}from"ink";import Go from"string-width";var u={background:"#0d0d0d",foreground:"#f3f3f3",mutedForeground:"#949494",faintForeground:"#696969",cursorBackground:"#c8c8c8",border:"#393939",accent:"#37be95",success:"#34d399",warning:"#fbbf24",danger:"#f87171"},Hr=["#242424","#5a4233","#746533","#70924f","#37be95"],qr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],De={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},ro=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Wr=80,Z={cursor:"\u276F",bullet:"\xB7",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var Jg=Go(Z.ellipsis),Yg=(e,t)=>e+" ".repeat(Math.max(0,t-Go(e))),Xg=(e,t)=>" ".repeat(Math.max(0,t-Go(e)))+e;function _e(e,t){if(t<=0)return"";if(Go(e)<=t)return e;let o=t-Jg,n="";for(let r of e){if(Go(n+r)>o)break;n+=r}return n+Z.ellipsis}var Le=(e,t)=>Yg(_e(e,t),t),fn=(e,t)=>Xg(_e(e,t),t),Be=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${Z.bullet} `);import{Text as It,useInput as Qg}from"ink";import{useImperativeHandle as Zg,useRef as Fl,useEffect as eh,useState as jl}from"react";import Os from"string-width";import{jsx as Bt,jsxs as $s}from"react/jsx-runtime";var th=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Ul(e,t,o){let n=t,r=0;for(;n>0;){let s=Os(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=Os(e[i]??"");if(r+s>o)break;r+=s,i+=1}return{start:n,before:e.slice(n,t).join(""),at:e[t]??" ",after:e.slice(t+1,i).join("")}}function zo({char:e}){return Bt(It,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function Gr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,m]=jl(c.length),p=Math.min(l,c.length),d=Math.max(8,s),f=Fl(e),S=Fl(p);f.current=e,S.current=p,$r(i);let b=w=>{S.current=w,m(w)},h=(w,P)=>{f.current=w,b(P),t(w)};if(Zg(a,()=>({moveToColumn:w=>{let P=[...f.current],$=r?Array.from({length:P.length},()=>"\u2022"):P,T=Ul($,Math.min(S.current,P.length),d).start,N=0;for(;T<P.length;){let _=Os($[T]??"");if(N+_>w)break;N+=_,T+=1}b(T)}})),Qg((w,P)=>{let $=[...f.current],U=Math.min(S.current,$.length);if(P.return){o(f.current);return}if(P.tab||P.upArrow||P.downArrow)return;if(P.leftArrow){b(Math.max(0,U-1));return}if(P.rightArrow){b(Math.min($.length,U+1));return}if(P.home){b(0);return}if(P.end){b($.length);return}if(P.backspace){if(U===0)return;h([...$.slice(0,U-1),...$.slice(U)].join(""),U-1);return}if(P.delete){if(U>=$.length)return;h([...$.slice(0,U),...$.slice(U+1)].join(""),U);return}if(P.ctrl){if(w==="a")b(0);else if(w==="e")b($.length);else if(w==="k")h($.slice(0,U).join(""),U);else if(w==="u")h($.slice(U).join(""),0);else if(w==="w"){let v=U;for(;v>0&&$[v-1]===" ";)v-=1;for(;v>0&&$[v-1]!==" ";)v-=1;h([...$.slice(0,v),...$.slice(U)].join(""),v)}return}if(P.meta||!w)return;let T=w.search(/[\r\n]/),N=th(T===-1?w:w.slice(0,T)),_=[...$.slice(0,U),N,...$.slice(U)].join("");h(_,U+[...N].length),T!==-1&&o(_)},{isActive:i}),e===""){let w=[...n??""];return i?$s(It,{children:[Bt(zo,{char:w[0]??" "}),Bt(It,{color:u.faintForeground,children:w.slice(1).join("")})]}):Bt(It,{color:u.faintForeground,children:w.join("")})}let y=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Bt(It,{color:u.foreground,children:y.join("")});let{before:x,at:k,after:g}=Ul(y,p,d);return $s(It,{children:[Bt(It,{color:u.foreground,children:x}),Bt(zo,{char:k}),Bt(It,{color:u.foreground,children:g})]})}function tt({label:e}){let[t,o]=jl(0);return eh(()=>{let n=setInterval(()=>o(r=>(r+1)%ro.length),Wr);return()=>clearInterval(n)},[]),$s(It,{children:[Bt(It,{color:u.accent,children:ro[t]}),Bt(It,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as Wl,Text as io}from"ink";import{useEffect as zl,useState as oh}from"react";import Gl from"string-width";import{Box as Hl,Text as zr}from"ink";import nh from"string-width";import{jsx as Ko,jsxs as ql}from"react/jsx-runtime";var ce=2,lt=1,Fe=1,ut=lt+Fe;function Vo({title:e,note:t,width:o}){let n=t===void 0?0:nh(t)+2,r=Math.max(0,o-ce-n);return ql(zr,{wrap:"truncate",children:[Ko(zr,{color:u.accent,children:`${Z.section} `}),Ko(zr,{bold:!0,color:u.foreground,children:_e(e,r)}),t!==void 0&&Ko(zr,{color:u.faintForeground,children:` ${t}`})]})}function te({title:e,note:t,width:o,gap:n=Fe,children:r}){return ql(Hl,{flexDirection:"column",children:[Ko(Vo,{title:e,note:t,width:o}),Ko(Hl,{flexDirection:"column",marginTop:n,paddingLeft:ce,children:r})]})}import{jsx as Jt,jsxs as Vl}from"react/jsx-runtime";var so=e=>!("heading"in e),rh=e=>e.flatMap(t=>!so(t)&&t.heading!==""?[t,{heading:""}]:[t]),Kl=2,Kr=2,ih=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function sh(e,t,o,n){let[r,i]=Xe(n,()=>e.findIndex(m=>so(m)&&m.disabled!==!0));zl(()=>{i(m=>m>=e.length?Math.max(0,e.length-1):m)},[e.length]);let s=m=>{i(p=>{let d=e.length;if(d===0)return p;let f=p;for(let S=0;S<d;S+=1){f=(f+m+d)%d;let b=e[f];if(b!==void 0&&so(b)&&b.disabled!==!0)return f}return p})},a=m=>{let p=e[m];return p!==void 0&&so(p)&&p.disabled!==!0?p:null},c=m=>{a(m)!==null&&i(m)},l=m=>{let p=a(m);p!==null&&(i(m),o(p.value))};return G((m,p)=>{if(p.upArrow||m==="k"){s(-1);return}if(p.downArrow||m==="j"){s(1);return}p.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function Ds(e,t){let[o,n]=oh(()=>e>=t?e-t+1:0);return zl(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function ah(e,t){let o=e.filter(so),n=Math.max(0,...o.map(s=>Gl(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:Gl(s.badge))),i=Kl+n+(r>0?r+Kr:0)+Kr;return{label:n,badge:r,hint:Math.max(0,t-i)}}function ch({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?De[e.labelTone]:t?u.accent:u.foreground;return Vl(io,{wrap:"truncate",children:[Jt(io,{color:u.accent,children:t?`${Z.cursor} `:" "}),Jt(io,{color:r,bold:t,children:Le(e.label,o.label)}),o.badge>0&&Jt(io,{color:e.badgeTone===void 0?u.faintForeground:De[e.badgeTone],children:`${" ".repeat(Kr)}${Le(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Jt(io,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(Kr)}${_e(e.hint,o.hint)}`})]})}function lh({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=Ds(t,n),m=e.slice(l,l+n),p=f=>f<m.length?l+f:null,d=He({isActive:i,onWheel:c,onClick:({row:f})=>{let S=p(f);S!==null&&s(S)},onHover:({row:f})=>{let S=p(f);S!==null&&a(S)}});return Vl(Wl,{ref:d,flexDirection:"column",children:[m.map((f,S)=>{let b=l+S;return so(f)?Jt(ch,{item:f,active:b===t&&i,metrics:o},b):f.heading===""?Jt(Wl,{height:1},b):Jt(Vo,{title:f.heading,width:r},b)}),e.length>n&&Jt(io,{color:u.faintForeground,children:`${" ".repeat(Kl)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function ie({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=rh(e),a=sh(s,r,t,i);return Jt(lh,{items:s,cursor:a.index,metrics:ah(s,o),window:ih(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as yt,jsxs as Vr}from"react/jsx-runtime";var Jl={ok:{glyph:Z.ok,color:u.success},warn:{glyph:Z.warn,color:u.warning},fail:{glyph:Z.fail,color:u.danger},info:{glyph:Z.bullet,color:u.mutedForeground}};function he({tone:e,title:t,detail:o,width:n}){let r=Jl[e];return Vr(Jo,{flexDirection:"column",children:[Vr(ao,{children:[yt(ao,{color:r.color,children:`${r.glyph} `}),yt(ao,{color:u.foreground,children:_e(t,n-2)})]}),o!==void 0&&yt(ao,{color:u.faintForeground,children:` ${_e(o,n-2)}`})]})}function Mn({message:e,hint:t,width:o}){return yt(he,{tone:"fail",title:e,detail:t,width:o})}var uh=2,mh=2;function Yl({tone:e,message:t,width:o,onDismiss:n}){let r=Jl[e],i=He({onClick:n});return Vr(Jo,{ref:i,children:[yt(ao,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),yt(ao,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${_e(t,o-uh-mh)} `})]})}function ze({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Vr(Jo,{flexDirection:"column",children:[yt(he,{tone:"warn",title:e,detail:t,width:i}),a!=null&&yt(Jo,{marginTop:1,children:yt(Mn,{message:a.message,hint:a.hint,width:i})}),yt(Jo,{marginTop:1,children:typeof s=="string"?yt(tt,{label:s}):yt(ie,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as dh,Text as Jr,useInput as ph}from"ink";import{useRef as fh,useState as gh}from"react";import{jsx as Yr,jsxs as hh}from"react/jsx-runtime";function gn({lines:e,height:t,isActive:o=!0,pinBottom:n=!1}){let r=e.length>t,i=r?Math.max(1,t-1):t,s=Math.max(0,e.length-i),[a,c]=gh(n?s:0),l=fh(s);if(s!==l.current){let f=a>=l.current;l.current=s;let S=n&&f?s:Math.min(a,s);S!==a&&c(S)}let m=f=>c(S=>Math.min(Math.max(0,S+f),s));ph((f,S)=>{S.upArrow?m(-1):S.downArrow?m(1):S.pageUp?m(-i):S.pageDown&&m(i)},{isActive:o&&r}),G(f=>{f==="k"?m(-1):f==="j"&&m(1)},o&&r);let p=He({isActive:o&&r,onWheel:m}),d=e.slice(a,a+i);return hh(dh,{ref:p,flexDirection:"column",children:[d.map((f,S)=>Yr(Jr,{wrap:"truncate",children:f.spans.length===0?" ":f.spans.map((b,h)=>Yr(Jr,{color:b.color??u.foreground,bold:b.bold===!0,children:b.text},h))},a+S)),Array.from({length:Math.max(0,i-d.length)},(f,S)=>Yr(Jr,{children:" "},S)),r&&Yr(Jr,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function Ve(e){return e.tone==="neutral"?void 0:e.tone}function Yt(e){let t=Ve(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as Bs,useRef as bh,useState as Xl}from"react";function de(){let e=B(),[t,o]=Xl(null),[n,r]=Xl(null),i=bh(0),s=Bs(()=>{i.current+=1,o(null),r(null)},[]),a=Bs((l,m)=>{r({message:l,hint:m})},[]),c=Bs((l,m,p={})=>{let d=i.current+=1;o(l),r(null),m().then(f=>{i.current===d&&(o(null),p.onSuccess?.(f))}).catch(f=>{if(i.current!==d)return;o(null);let S={message:ve(f),hint:f instanceof O?f.hint:void 0};p.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as yh}from"marked";import Xr from"string-width";var Sh={spans:[]},Fs=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function Ql(e){let t=[];for(let o of e){let n=t[t.length-1];n!==void 0&&n.color===o.color&&n.bold===o.bold?n.text+=o.ch:t.push({text:o.ch,color:o.color,bold:o.bold})}return{spans:t}}function Ft(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(Ql(i)),a=!1,i=n(),s=o};for(let l of e)for(let m of l.text){if(m===`
5
- `){c();continue}let p=Xr(m);if(s+p>t&&i.length>(a?0:o)){let d=a?0:o,f=-1;for(let S=i.length-1;S>d;S-=1)if(i[S]?.ch===" "){f=S;break}if(f>d){let S=i.slice(f+1);i=i.slice(0,f),c(),i=[...i,...S],s=i.reduce((b,h)=>b+Xr(h.ch),0)}else c()}i.push({ch:m,color:l.color,bold:l.bold}),s+=p}return(i.length>0||r.length===0)&&r.push(Ql(i)),r}function Ut(e,t){if(e===void 0)return[];let o=[];for(let n of e)switch(n.type){case"text":o.push(..."tokens"in n&&n.tokens!==void 0?Ut(n.tokens,t):[{text:n.text,...t}]);break;case"strong":o.push(...Ut(n.tokens,{...t,bold:!0}));break;case"em":o.push(...Ut(n.tokens,t));break;case"del":o.push(...Ut(n.tokens,{...t,color:u.faintForeground}));break;case"codespan":o.push({text:n.text,color:u.accent,bold:t.bold});break;case"link":{let r=Ut(n.tokens,{...t,color:u.accent});o.push(...r);let i=r.map(s=>s.text).join("");n.href!==i&&o.push({text:`\uFF08${n.href}\uFF09`,color:u.faintForeground});break}case"image":o.push({text:n.text===""?"\u56FE\u7247":n.text,...t}),o.push({text:`\uFF08${n.href}\uFF09`,color:u.faintForeground});break;case"br":o.push({text:`
6
- `});break;case"escape":o.push({text:n.text,...t});break;default:o.push({text:n.raw,...t})}return o}var Zl=2,eu=e=>e.reduce((t,o)=>t+Xr(o.text),0);function xh(e,t,o,n){let r=e.map(d=>({spans:Ut(d.tokens,{bold:!0,color:u.foreground}),align:d.align})),i=t.map(d=>d.map(f=>({spans:Ut(f.tokens,{color:u.foreground}),align:f.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*Zl)return Ft([{text:o,color:u.foreground}],n);let a=e.map(()=>Zl);for(let d of[r,...i])d.forEach((f,S)=>{for(let b of Ft(f.spans,Number.MAX_SAFE_INTEGER)){let h=a[S],y=eu(b.spans);h!==void 0&&y>h&&(a[S]=y)}});let c=a.reduce((d,f)=>d+f,0);for(;c>s;){let d=0,f=0;a.forEach((S,b)=>{S>f&&(d=b,f=S)}),a[d]=f-1,c-=1}let l=d=>({text:d,color:u.faintForeground}),m=(d,f,S)=>({spans:[l(`${d}${a.map(b=>"\u2500".repeat(b+2)).join(f)}${S}`)]}),p=d=>{let f=a.map((h,y)=>{let x=d[y];return{width:h,align:x?.align??null,lines:Ft(x?.spans??[],h)}}),S=f.reduce((h,y)=>Math.max(h,y.lines.length),1),b=[];for(let h=0;h<S;h+=1){let y=[];for(let x of f){let k=x.lines[h]?.spans??[],g=x.width-eu(k),w=x.align==="right"?g:x.align==="center"?Math.floor(g/2):0;y.push(l("\u2502"),{text:` ${" ".repeat(w)}`}),y.push(...k),y.push({text:`${" ".repeat(g-w)} `})}y.push(l("\u2502")),b.push({spans:y})}return b};return[m("\u250C","\u252C","\u2510"),...p(r),m("\u251C","\u253C","\u2524"),...i.flatMap(p),m("\u2514","\u2534","\u2518")]}function Us(e,t){let o=[],n=()=>{o.length>0&&!Fs(o[o.length-1])&&o.push(Sh)};for(let r of e)switch(r.type){case"space":n();break;case"heading":{let i=Ut(r.tokens,{bold:!0,color:u.foreground}),s=r.depth<=2?[{text:`${Z.section} `,color:u.accent},...i]:i;o.push(...Ft(s,t,r.depth<=2?2:0)),n();break}case"paragraph":o.push(...Ft(Ut(r.tokens,{color:u.foreground}),t)),n();break;case"text":o.push(...Ft("tokens"in r&&r.tokens!==void 0?Ut(r.tokens,{color:u.foreground}):[{text:r.text,color:u.foreground}],t));break;case"code":for(let i of r.text.split(`
7
- `))o.push(...Ft([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=Us(r.tokens??[],Math.max(4,t-2));for(let s of i)o.push({spans:[{text:`${Z.section} `,color:u.accent},...s.spans.map(a=>({...a,color:a.color??u.mutedForeground}))]});n();break}case"list":{let i=r.ordered===!0,s=typeof r.start=="number"?r.start:1;r.items.forEach((a,c)=>{let l=i?`${s+c}. `:`${Z.bullet} `,m=Xr(l),p=Us(a.tokens,Math.max(4,t-m));p.forEach((d,f)=>{Fs(d)&&f===p.length-1||o.push({spans:f===0?[{text:l,color:u.mutedForeground},...d.spans]:[{text:" ".repeat(m)},...d.spans]})})}),n();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:u.faintForeground}]}),n();break;case"table":o.push(...xh(r.header,r.rows,r.raw,t)),n();break;default:o.push(...Ft([{text:r.raw,color:u.foreground}],t))}return o}function co(e,t){let o=yh.lex(e,{gfm:!0,breaks:!0}),n=Us(o,Math.max(8,t));for(;n.length>0&&Fs(n[n.length-1]);)n.pop();return n}import{Box as Xo}from"ink";import{Box as Th,Text as tu}from"ink";import ou from"string-width";import{jsx as nu,jsxs as wh}from"react/jsx-runtime";var Qr=["\u2588\u2580\u2580 \u2588\u2580\u2588 \u2588\u2580\u2584 \u2588\u2580\u2580 \u2588\u2580\u2580 \u2588 \u2588\u2580\u2588 \u2588 \u2588 \u2588","\u2588\u2584\u2584 \u2588\u2584\u2588 \u2588\u2584\u2580 \u2588\u2584\u2584 \u2588\u2580\u2580 \u2588\u2584\u2584 \u2588\u2584\u2588 \u2580\u2584\u2580\u2584\u2580"],ru=Math.max(...Qr.map(e=>ou(e))),Zr=Qr.length,ei=e=>ru<=e;function ti({width:e}){let t=`v${ht}`,o=ru+2+ou(t)<=e;return nu(Th,{flexDirection:"column",children:Qr.map((n,r)=>wh(tu,{color:u.accent,children:[n,r===Qr.length-1&&o&&nu(tu,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as qs,Text as mt}from"ink";import{useState as iu}from"react";import uo from"string-width";import{jsx as St,jsxs as ni}from"react/jsx-runtime";var oi=2,js=` ${Z.crumb} `;function ri({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((d,f)=>d+uo(f)+uo(js),0),a=s+uo(r)<=t,c=a?s:0,[l,m]=iu(!1),p=He({isActive:n,onClick:({column:d})=>{d<c&&o()},onHover:({column:d})=>m(d<c),onHoverLeave:()=>m(!1)});return St(qs,{ref:p,marginBottom:1,children:a?ni(mt,{children:[i.map((d,f)=>ni(mt,{children:[St(mt,{color:f===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:d}),St(mt,{color:u.faintForeground,children:js})]},f)),St(mt,{bold:!0,color:u.foreground,children:r})]}):St(mt,{color:u.mutedForeground,children:_e(e.join(js),t)})})}var Hs=2,Yo=2,lo=2;function su({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,qo(e)),[i,s]=iu(null),a=Math.max(...et.map(y=>uo(y.label))),l=(y=>y*a+(y-1)*Yo+Hs)(et.length)>t,m=l?t-lo*2:t,p=l?Math.max(1,Math.floor((m+Yo-Hs)/(a+Yo))):et.length,d=Math.min(Math.max(0,r-Math.floor((p-1)/2)),et.length-p),f=et.slice(d,d+p),S=[],b=l?lo:0;f.forEach((y,x)=>{x>0&&(b+=Yo);let k=uo(y.label)+(y.id===e?Hs:0);S.push({id:y.id,from:b,to:b+k}),b+=k});let h=He({isActive:n,onHover:({column:y})=>{let x=S.find(k=>y>=k.from&&y<k.to);s(x?.id??null)},onHoverLeave:()=>s(null),onClick:({column:y})=>{let x=S.find(g=>y>=g.from&&y<g.to);if(x!==void 0){o(x.id);return}if(!l||y>=lo&&y<b)return;let k=y<lo?et[d-1]:et[d+p];k!==void 0&&o(k.id)}});return St(qs,{ref:h,marginBottom:1,children:ni(mt,{wrap:"truncate",children:[l&&St(mt,{color:u.border,children:d>0?`${Z.prev} `:" ".repeat(lo)}),f.map((y,x)=>ni(mt,{children:[x>0&&" ".repeat(Yo),y.id===e?St(mt,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${y.label} `}):St(mt,{color:n&&y.id===i?u.foreground:u.mutedForeground,children:y.label})]},y.id)),l&&St(mt,{color:u.border,children:d+p<et.length?` ${Z.next}`:" ".repeat(lo)})]})})}function au({hints:e,width:t}){let o=[];for(let n of e){if(uo(Be([...o,n]))>t)break;o.push(n)}return St(qs,{children:St(mt,{color:u.faintForeground,children:Be(o)})})}import{Fragment as vh,jsx as nt,jsxs as uu}from"react/jsx-runtime";var cu=3,kh=8;function Qo(e){let{rows:t}=j();return Math.max(1,t-Ps-cu-e)}function lu(){let e=B(),{width:t,rows:o}=j(),n=e.current.id,r=e.depth===1&&Ur(n)?n:null,i=Math.max(1,o-Ps-cu),s=Zr+W,a=r!==null&&ei(t)&&i-oi-s>=kh;return{tab:r,mark:a,rows:a?oi+s:oi}}var ne=()=>Qo(lu().rows);function On({header:e,hints:t,children:o}){let{width:n}=j(),{message:r,dismissToast:i}=B();return uu(Xo,{flexDirection:"column",flexGrow:1,children:[e,nt(Xo,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:nt(Xo,{flexDirection:"column",flexShrink:0,children:o})}),nt(Xo,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&nt(Yl,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),nt(au,{hints:t,width:n})]})}function X({trail:e,hints:t=[],children:o,onEscape:n,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=B(),{width:c}=j(),{tab:l,mark:m}=lu(),p=Dr(),d=Br(),f=d?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=d?[]:["? \u5E2E\u52A9"];pn(n??a.pop,{isActive:r});let b=Rl(),h=r&&!i&&!p;return G(y=>{if(l===null||y!=="["&&y!=="]")return;let x=et[(qo(l)+(y==="["?-1:1)+et.length)%et.length];x!==void 0&&a.select(x.id)},r&&!i&&!p&&!s),s?nt(On,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?nt(On,{header:uu(vh,{children:[m&&nt(Xo,{marginBottom:W,children:nt(ti,{width:c})}),nt(su,{current:l,width:c,onPick:y=>{y===l?b():a.select(y)},isActive:h})]}),hints:i?t:[...t,...f],children:o}):nt(On,{header:nt(ri,{trail:["CodeFlow",...e??[]],width:c,onBack:b,isActive:h}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function ee({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?nt(tt,{label:t}):e.phase==="error"?nt(Mn,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as xt,jsxs as Ws}from"react/jsx-runtime";function mu({params:e}){let t=B(),{width:o}=j(),n=ne(),{item:r}=e,{busy:i,error:s,run:a}=de();_h((p,d)=>{d.return&&a("\u6B63\u5728\u786E\u8BA4",()=>Lr(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=$o(r.level),l=Ve(c),m=Math.max(3,n-4-(s===null?0:2));return xt(X,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:Ws(ii,{flexDirection:"column",children:[Ws($n,{wrap:"truncate",children:[xt($n,{bold:!0,color:u.foreground,children:r.title}),xt($n,{color:l===void 0?u.mutedForeground:De[l],children:` ${c.label}`}),xt($n,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${V(r.publishedAt)}`})]}),xt(ii,{marginTop:1,children:xt(gn,{lines:co(r.content,o),height:m})}),s!==null&&xt(ii,{marginTop:1,children:xt(Mn,{message:s.message,hint:s.hint,width:o})}),xt(ii,{marginTop:1,children:i!==null?xt(tt,{label:i}):Ws($n,{wrap:"truncate",children:[xt($n,{color:u.accent,children:`${Z.cursor} `}),xt($n,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as Js,Text as si}from"ink";import{useState as Oh}from"react";import{Box as Gs,Text as Xt}from"ink";import{useEffect as du,useRef as Rh,useState as pu}from"react";import zs from"string-width";import{jsx as hn,jsxs as er}from"react/jsx-runtime";var fu=e=>e===void 0?"":typeof e=="string"?e:e.text,Ks=2,Ph=6;function Ch(e,t,o){let n=e.map(a=>t===0?o/e.length:o*a/t),r=n.map(a=>Math.floor(a)),i=o-r.reduce((a,c)=>a+c,0),s=n.map((a,c)=>({i:c,fraction:a-Math.floor(a)})).sort((a,c)=>c.fraction-a.fraction);for(let{i:a}of s){if(i<=0)break;r[a]=(r[a]??0)+1,i-=1}return e.map((a,c)=>a+(r[c]??0))}function Vs(e,t,o){let n=e.map((c,l)=>Math.max(zs(c.label),...t.map(m=>zs(m[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+Ks*Math.max(0,e.length-1)-o;if(i<0)return Ch(n,r,-i);let s=e.flatMap((c,l)=>c.shrink===!0?[l]:[]),a=s.length>0?s:e.map((c,l)=>l);for(;i>0;){let c=a.filter(l=>(n[l]??0)>Ph).sort((l,m)=>(n[m]??0)-(n[l]??0))[0];if(c===void 0)break;n[c]=(n[c]??0)-1,i-=1}return n}var Eh=(e,t,o)=>t.map((n,r)=>n.align==="right"?fn(e[r]??"",o[r]??0):Le(e[r]??"",o[r]??0)).join(" ".repeat(Ks)),Zo=2,Ah=2;function Re({items:e,columns:t,row:o,width:n,height:r,onOpen:i,searchOf:s,isActive:a=!0,emptyLabel:c="\u6682\u65E0\u6570\u636E",emptyDescription:l,retain:m}){let p=F=>m===void 0?void 0:`${m}:${F}`,d=i!==void 0,[f,S]=Xe(d?p("cursor"):void 0,()=>0),[b,h]=Xe(p("query"),()=>""),[y,x]=pu(!1),k=b.trim().toLowerCase(),g=k===""||s===void 0?e:e.filter(F=>s(F).toLowerCase().includes(k)),w=y||k!=="",P=Math.max(1,r-1-(w?1:0)),$=g.length>P?Math.max(1,P-1):P,U=Math.max(0,g.length-$),[T,N]=pu(()=>f>=$?f-$+1:0);du(()=>{S(F=>Math.min(F,Math.max(0,g.length-1)))},[g.length]),du(()=>{N(F=>d?f<F?f:f>=F+$?f-$+1:F:Math.min(F,U))},[f,$,U,d]);let _=F=>{if(!d){N(K=>Math.min(Math.max(0,K+F),U));return}g.length!==0&&S(K=>(K+F+g.length)%g.length)};G((F,K)=>{if(K.upArrow||F==="k"){_(-1);return}if(K.downArrow||F==="j"){_(1);return}if(K.return){let H=g[f];H!==void 0&&i?.(H,f);return}s!==void 0&&F.startsWith("/")&&(x(!0),F.length>1&&h(F.slice(1)))},a&&!y),pn(()=>{x(!1),h("")},{isActive:y||k!=="",layer:y?oo.input:oo.panel});let v=w?1:0,C=Rh(null),I=F=>{if(F<=v)return null;let K=T+F-v-1;return g[K]===void 0?null:K},R=He({isActive:a,onWheel:_,onClick:({row:F,column:K})=>{if(w&&F===0){x(!0),C.current?.moveToColumn(K-Ah);return}if(i===void 0)return;let H=I(F);if(H===null)return;let oe=g[H];oe!==void 0&&(S(H),i(oe,H))},onHover:d?({row:F})=>{let K=I(F);K!==null&&S(K)}:void 0}),A=Vs(t,g.map(F=>o(F).map(fu)),n-Zo),q=g.slice(T,T+$);return er(Gs,{ref:R,flexDirection:"column",children:[w&&er(Gs,{children:[hn(Xt,{color:u.accent,children:"/ "}),hn(Gr,{ref:C,value:b,onChange:h,onSubmit:()=>x(!1),isActive:y,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-zs(` ${g.length}/${e.length}`)}),hn(Xt,{color:u.faintForeground,children:` ${g.length}/${e.length}`})]}),er(Xt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Zo),Eh(t.map(F=>F.label),t,A)]}),g.length===0?er(Gs,{flexDirection:"column",children:[hn(Xt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(Zo)}${k===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&k===""&&P>1&&hn(Xt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(Zo)}${l}`})]}):q.map((F,K)=>{let H=T+K,oe=d&&H===f&&a,ke=oe?u.accent:a?u.foreground:u.mutedForeground,E=o(F);return er(Xt,{wrap:"truncate",children:[hn(Xt,{color:u.accent,children:oe?`${Z.cursor} `:" "}),t.map((D,J)=>{let pe=E[J],Me=fu(pe),_t=D.align==="right"?fn(Me,A[J]??0):Le(Me,A[J]??0),Rt=typeof pe=="object"?pe.tone:void 0,Oe=!oe&&a&&Rt!==void 0?De[Rt]:ke;return hn(Xt,{color:Oe,bold:oe,children:J>0?`${" ".repeat(Ks)}${_t}`:_t},D.label)})]},H)}),(T>0||T+$<g.length)&&hn(Xt,{color:u.faintForeground,children:`${" ".repeat(Zo)}${T+1}-${Math.min(T+$,g.length)} / ${g.length}`})]})}import{Text as Nh}from"ink";import{useEffect as Ih,useState as Lh}from"react";import{jsx as Mh}from"react/jsx-runtime";function bn(e,t,{retain:o}={}){let[n,r]=Xe(o,()=>1),[i,s]=Lh({pages:1,total:0}),a=Q([...e,n],()=>t(n));Ih(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/bc)),total:a.data.total})},[a]);let c=m=>{r(p=>Math.min(Math.max(1,p+m),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function yn({page:e,pages:t,total:o,width:n}){return Mh(Nh,{wrap:"truncate",color:u.faintForeground,children:_e(Be([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as Qt,jsxs as Ys}from"react/jsx-runtime";function gu(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Oh({name:"list"}),i=bn([e.revision],a=>bl({page:a}),{retain:"page"});G((a,c)=>{n.name==="list"&&(a==="r"?e.reload():c.leftArrow?i.go(-1):c.rightArrow&&i.go(1))});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Qt(X,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:Qt(ee,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=$o(n.item.level),l=Ve(c);return Ys(Js,{flexDirection:"column",children:[Ys(si,{wrap:"truncate",children:[Qt(si,{bold:!0,color:u.foreground,children:n.item.title}),Qt(si,{color:l===void 0?u.mutedForeground:De[l],children:` ${c.label}`}),Qt(si,{color:u.faintForeground,children:` ${Be([`\u53D1\u5E03\u4E8E ${V(n.item.publishedAt)}`])}`})]}),Qt(Js,{marginTop:1,children:Qt(gn,{lines:co(n.item.content,t),height:Math.max(3,o-2)})})]})}return Ys(Js,{flexDirection:"column",children:[Qt(Re,{retain:"list",items:a.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u7EA7\u522B"},{label:"\u53D1\u5E03\u4E8E",align:"right"}],row:c=>[c.title,Yt($o(c.level)),V(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),Lr(c.id).catch(()=>e.toast("warn","\u5DF2\u8BFB\u786E\u8BA4\u53D1\u9001\u5931\u8D25"))},emptyLabel:"\u6682\u65E0\u516C\u544A",emptyDescription:"\u5E73\u53F0\u6709\u65B0\u901A\u77E5\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Qt(yn,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as wt,Text as or}from"ink";import{useState as Zu}from"react";import rb from"string-width";var hu=()=>M(xc,"/auth/me"),bu=e=>M(me,"/auth/me",{method:"PATCH",json:e}),yu=e=>M(me,"/auth/me/password",{method:"POST",json:e}),Su=e=>M(me,"/auth/me/email/code",{method:"POST",json:e}),xu=e=>M(me,"/auth/me/email",{method:"POST",json:e}),Tu=()=>M(Tc,"/auth/me/sessions"),wu=e=>M(me,`/auth/me/sessions/${e}`,{method:"DELETE"}),ku=()=>M(kc,"/auth/me/security"),Xs=e=>M(wc,"/auth/me/totp/setup",{method:"POST",json:e}),vu=e=>M(us,"/auth/me/totp/confirm",{method:"POST",json:e}),_u=e=>M(me,"/auth/me/totp/disable",{method:"POST",json:e}),Ru=e=>M(us,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),Pu=(e,t)=>M(me,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}),Cu=e=>M(me,`/auth/me/passkeys/${e}`,{method:"DELETE"});import{Box as jt,measureElement as $u,Text as Ae,useInput as ju}from"ink";import{useEffect as Uh,useRef as Du,useState as mo}from"react";import ta from"string-width";import{Box as $h,Text as Sn,useInput as Dh}from"ink";import{useRef as Eu,useState as Au}from"react";import Zs from"string-width";import{jsx as Zt,jsxs as Mu}from"react/jsx-runtime";var Bh=e=>e.replace(/\r\n?/g,`
8
- `).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function Nu(e,t){let o=[],n=0,r=0;for(let i=0;i<e.length;i+=1){let s=e[i]??"";if(s===`
9
- `){o.push({start:n,end:i,nl:!0}),n=i+1,r=0;continue}let a=Zs(s);r+a>t&&i>n&&(o.push({start:n,end:i,nl:!1}),n=i,r=0),r+=a}return o.push({start:n,end:e.length,nl:!1}),o}function Iu(e,t){for(let o=0;o<e.length;o+=1){let n=e[o];if(n!==void 0&&(n.nl?t<=n.end:t<n.end))return o}return e.length-1}function Lu(e,t,o){let n=0;for(let r=t.start;r<t.end;r+=1){let i=Zs(e[r]??"");if(n+i>o)return r;n+=i}return t.end}var Fh=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+Zs(r),0);function Qs(e,t){let o=t;for(;o>0&&e[o-1]!==`
10
- `;)o-=1;let n=t;for(;n<e.length&&e[n]!==`
11
- `;)n+=1;return{start:o,end:n}}function Ou({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[m,p]=Au(l.length),d=Math.min(m,l.length),[f,S]=Au(0),b=Eu(e),h=Eu(d);b.current=e,h.current=d,$r(o);let y=Math.max(4,n),x=_=>{h.current=_,p(_)},k=(_,v)=>{b.current=_,x(v),t(_)},g=_=>{let v=[...b.current],C=Math.min(h.current,v.length),I=Nu(v,y),R=Iu(I,C),A=I[R],q=I[R+_];return A===void 0||q===void 0?!1:(x(Lu(v,q,Fh(v,A,C))),!0)},w=(_,v,C)=>{let I=Bh(C);if(s!==void 0){let R=s-_.length;if(R<=0)return;I=[...I].slice(0,R).join("")}I!==""&&k([..._.slice(0,v),I,..._.slice(v)].join(""),v+[...I].length)};Dh((_,v)=>{let C=[...b.current],I=Math.min(h.current,C.length);if(v.return){w(C,I,`
12
- `);return}if(!v.tab){if(v.upArrow||v.downArrow){let R=v.upArrow?-1:1;g(R)||a?.(v.upArrow?"up":"down");return}if(v.leftArrow){x(Math.max(0,I-1));return}if(v.rightArrow){x(Math.min(C.length,I+1));return}if(v.home){x(Qs(C,I).start);return}if(v.end){x(Qs(C,I).end);return}if(v.backspace){if(I===0)return;k([...C.slice(0,I-1),...C.slice(I)].join(""),I-1);return}if(v.delete){if(I>=C.length)return;k([...C.slice(0,I),...C.slice(I+1)].join(""),I);return}if(v.ctrl){let R=Qs(C,I);if(_==="a")x(R.start);else if(_==="e")x(R.end);else if(_==="k")k([...C.slice(0,I),...C.slice(R.end)].join(""),I);else if(_==="u")k([...C.slice(0,R.start),...C.slice(I)].join(""),R.start);else if(_==="w"){let A=I;for(;A>R.start&&C[A-1]===" ";)A-=1;for(;A>R.start&&C[A-1]!==" ";)A-=1;k([...C.slice(0,A),...C.slice(I)].join(""),A)}return}v.meta||!_||w(C,I,_)}},{isActive:o});let P=Nu(l,y),$=Iu(P,d),U=Math.min(f,Math.max(0,P.length-r));$<U&&(U=$),$>U+r-1&&(U=$-r+1),U!==f&&S(U);let T=[];for(let _=0;_<r;_+=1){let v=U+_,C=P[v];if(C===void 0){T.push(Zt(Sn,{children:" "},v));continue}let I=l.slice(C.start,C.end).join("");if(!o||v!==$){T.push(Zt(Sn,{wrap:"truncate",color:u.foreground,children:I===""?" ":I},v));continue}let R=l.slice(C.start,d).join(""),A=d<C.end?l[d]??" ":" ",q=d<C.end?l.slice(d+1,C.end).join(""):"";T.push(Mu(Sn,{wrap:"truncate",children:[Zt(Sn,{color:u.foreground,children:R}),Zt(zo,{char:A}),Zt(Sn,{color:u.foreground,children:q})]},v))}if(e===""&&i!==void 0){let _=[...i];T[0]=o?Mu(Sn,{wrap:"truncate",children:[Zt(zo,{char:_[0]??" "}),Zt(Sn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):Zt(Sn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let N=He({onWheel:_=>{g(_)},onClick:({row:_,column:v})=>{c?.();let C=P[U+_];x(C===void 0?l.length:Lu(l,C,v))}});return Zt($h,{ref:N,flexDirection:"column",children:T})}import{Fragment as Uu,jsx as fe,jsxs as Tt}from"react/jsx-runtime";var jh=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Bu="\u9009\u586B",Hh=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,qh=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return Hh(e,t)?o===void 0?Bu:`${Bu} \xB7 ${o}`:o},Wh=e=>{let t=[];return e.forEach((o,n)=>{t.push({type:"field",index:n}),o.kind==="code"&&t.push({type:"send",index:n})}),t.push({type:"submit"}),t},Gh=6e4,zh=4,ea=4,Kh=2,ai=(e,t)=>e?u.accent:t?u.foreground:u.mutedForeground;function z({title:e,fields:t,submitLabel:o,onSubmit:n,onCancel:r,width:i,busy:s,busyLabel:a="\u6B63\u5728\u63D0\u4EA4",error:c}){let[l,m]=mo(()=>jh(t)),[p,d]=mo(0),[f,S]=mo({}),[b,h]=mo(null),[,y]=mo(0),x=s===!0,k=Wh(t),g=k[Math.min(p,k.length-1)],w=g!==void 0&&g.type!=="submit"?t[g.index]:void 0,P=g?.type==="field"&&(w?.kind==="text"||w?.kind==="code"),$=g?.type==="field"&&w?.kind==="textarea",U=Object.values(f).some(E=>E.phase==="cooldown"&&E.until>Date.now());Uh(()=>{if(!U)return;let E=setInterval(()=>y(D=>D+1),1e3);return()=>clearInterval(E)},[U]);let T=E=>d(D=>(D+E+k.length)%k.length),N=(E,D)=>{if(E.options.length===0)return;let J=E.options.findIndex(Me=>Me.value===l[E.name]),pe=E.options[(J+D+E.options.length)%E.options.length];pe!==void 0&&m(Me=>({...Me,[E.name]:pe.value}))},_=E=>{g?.type!=="field"||w?.kind!=="select"||N(w,E)},v=E=>{let D=t[E];if(D===void 0||D.kind!=="code")return;let J=(l[D.emailField]??"").trim();if(J===""){S(Me=>({...Me,[D.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let pe=f[D.name];pe?.phase!=="sending"&&(pe?.phase==="cooldown"&&pe.email===J&&pe.until>Date.now()||(S(Me=>({...Me,[D.name]:{phase:"sending"}})),D.send(J).then(()=>S(Me=>({...Me,[D.name]:{phase:"cooldown",email:J,until:Date.now()+Gh}}))).catch(Me=>S(_t=>({..._t,[D.name]:{phase:"error",message:ve(Me)}})))))};ju((E,D)=>{if(D.tab){T(D.shift?-1:1);return}if(!$){if(D.upArrow){T(-1);return}if(D.downArrow){T(1);return}if(!P){if(D.leftArrow){_(-1);return}if(D.rightArrow){_(1);return}D.return&&(g?.type==="submit"?n(l):g?.type==="send"?v(g.index):T(1))}}},{isActive:!x}),pn(r,{isActive:!x,layer:oo.panel});let C=Math.max(0,...t.map(E=>ta(E.label))),I=i-ce,R=Math.max(8,I-C-8),A=(E,D)=>k.findIndex(J=>J.type===E&&(J.type==="submit"||J.index===D)),q=Du(new Map).current,F=Du(new Map).current,K=2+C+ea,H=(E,D)=>{let J=k[E];if(J===void 0)return;if(d(E),J.type==="submit"){n(l);return}if(J.type==="send"){v(J.index);return}let pe=t[J.index];if(pe!==void 0){if(pe.kind==="select"){let Me=pe.options.find(Rt=>Rt.value===l[pe.name]),_t=_e(Me?.label??"\u2014",R);D>=K-Kh&&D<K?N(pe,-1):D>=K+ta(_t)&&N(pe,1);return}D>=K&&F.get(J.index)?.moveToColumn(D-K)}},oe=(E,D)=>{if(E===null)return null;let J=$u(E),pe=null;for(let[Me,_t]of q){if(_t===null)continue;let Rt=$u(_t),Oe=Rt.y-J.y;D<Oe||D>=Oe+Rt.height||(pe===null||Rt.height<pe.box.height)&&(pe={index:Me,box:Rt})}return pe===null?null:{...pe,frameX:J.x}},ke=He({isActive:!x,onClick:({row:E,column:D})=>{let J=oe(ke.current,E);J!==null&&H(J.index,D-(J.box.x-J.frameX))},onHover:({row:E})=>h(oe(ke.current,E)?.index??null),onHoverLeave:()=>h(null)});return Tt(jt,{ref:ke,flexDirection:"column",children:[fe(Vo,{title:e,width:i}),Tt(jt,{flexDirection:"column",marginTop:Fe,paddingLeft:ce,children:[c!=null&&fe(jt,{marginBottom:1,children:fe(Mn,{message:c.message,hint:c.hint,width:I})}),t.map((E,D)=>{let J=p===A("field",D)&&!x,pe=qh(E,l),Me=E.kind==="select"?E.options.find(Oe=>Oe.value===l[E.name]):void 0;if(E.kind==="textarea")return Tt(jt,{flexDirection:"column",ref:Oe=>{q.set(A("field",D),Oe)},children:[Tt(Ae,{children:[fe(Ae,{color:u.accent,children:J?`${Z.cursor} `:" "}),fe(Ae,{color:ai(J,b===A("field",D)),bold:J,children:E.label})]}),fe(jt,{paddingLeft:2,children:fe(Ou,{value:l[E.name]??"",onChange:Oe=>m(zi=>({...zi,[E.name]:Oe})),isActive:J,width:I-2,rows:E.rows??zh,placeholder:E.placeholder,maxLength:E.maxLength,onEdge:Oe=>T(Oe==="up"?-1:1),onFocusRequest:()=>d(A("field",D))})}),J&&pe!==void 0&&fe(Ae,{color:u.faintForeground,children:` ${_e(pe,I-2)}`})]},E.name);let _t=E.kind==="code"&&p===A("send",D)&&!x,Rt=f[E.name];return Tt(jt,{flexDirection:"column",ref:Oe=>{q.set(A("field",D),Oe)},children:[Tt(Ae,{children:[fe(Ae,{color:u.accent,children:J?`${Z.cursor} `:" "}),fe(Ae,{color:ai(J,b===A("field",D)),bold:J,children:Le(E.label,C)}),E.kind==="select"?Tt(Uu,{children:[fe(Ae,{color:J?u.accent:u.border,children:` ${Z.prev} `}),fe(Ae,{color:u.foreground,children:_e(Me?.label??"\u2014",R)}),fe(Ae,{color:J?u.accent:u.border,children:` ${Z.next}`})]}):Tt(Uu,{children:[fe(Ae,{children:" ".repeat(ea)}),fe(Gr,{ref:Oe=>{F.set(D,Oe)},value:l[E.name]??"",onChange:Oe=>m(zi=>({...zi,[E.name]:Oe})),onSubmit:()=>T(1),isActive:J,placeholder:E.kind==="text"||E.kind==="code"?E.placeholder:void 0,mask:E.kind==="text"?E.mask:void 0,width:R})]})]}),J&&pe!==void 0&&fe(Ae,{color:u.faintForeground,children:`${" ".repeat(2+C+ea)}${_e(pe,R)}`}),E.kind==="code"&&fe(Vh,{active:_t,state:Rt,email:(l[E.emailField]??"").trim(),indent:K,width:R,hovered:b===A("send",D),nodeRef:Oe=>{q.set(A("send",D),Oe)}})]},E.name)}),fe(jt,{marginTop:1,ref:E=>{q.set(A("submit"),E)},children:x?fe(tt,{label:a}):Tt(Ae,{children:[fe(Ae,{color:u.accent,children:g?.type==="submit"?`${Z.cursor} `:" "}),fe(Ae,{color:ai(g?.type==="submit",b===A("submit")),bold:g?.type==="submit",children:o})]})})]})]})}function Vh({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return fe(jt,{paddingLeft:n,children:fe(tt,{label:"\u6B63\u5728\u53D1\u9001\u9A8C\u8BC1\u7801"})});let a=t?.phase==="cooldown"&&t.email===o?Math.ceil((t.until-Date.now())/1e3):0,c=a>0?`${a} \u79D2\u540E\u53EF\u91CD\u53D1`:"\u53D1\u9001\u9A8C\u8BC1\u7801";return Tt(jt,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[Tt(Ae,{children:[fe(Ae,{color:u.accent,children:e?`${Z.cursor} `:" "}),fe(Ae,{color:a>0?u.faintForeground:ai(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&fe(Ae,{color:u.danger,children:` ${_e(t.message,r)}`})]})}var Jh=2,Fu=2;function Hu({options:e,value:t,onChange:o}){let n=e.findIndex(m=>m.value===t),r=Br();ju((m,p)=>{if(!p.leftArrow&&!p.rightArrow)return;let d=p.leftArrow?-1:1,f=e[(n+d+e.length)%e.length];f!==void 0&&o(f.value)},{isActive:!r});let i=[],s=0;e.forEach((m,p)=>{p>0&&(s+=Fu);let d=ta(m.label)+Jh;i.push({value:m.value,from:s,to:s+d}),s+=d});let[a,c]=mo(null),l=He({onClick:({column:m})=>{let p=i.find(d=>m>=d.from&&m<d.to);p!==void 0&&o(p.value)},onHover:({column:m})=>{let p=i.find(d=>m>=d.from&&m<d.to);c(p?.value??null)},onHoverLeave:()=>c(null)});return fe(jt,{ref:l,children:fe(Ae,{wrap:"truncate",children:e.map((m,p)=>{let d=m.value===t;return Tt(Ae,{children:[p>0&&" ".repeat(Fu),fe(Ae,{backgroundColor:d?u.foreground:u.border,color:d?u.background:m.value===a?u.foreground:u.mutedForeground,bold:d,children:` ${m.label} `})]},m.value)})})})}import{Box as ra,Text as qu}from"ink";import Yh from"qrcode";import{jsx as tr,jsxs as nb}from"react/jsx-runtime";var Xh="#000000",Qh="#ffffff",na=2,Gu=2,ia=1,Wu,oa;function zu(e){if(e===Wu&&oa!==void 0)return oa;let t=Yh.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+na*2,i=Array.from({length:r},()=>Array.from({length:r},()=>!1));for(let s=0;s<o;s+=1)for(let a=0;a<o;a+=1){let c=i[s+na];c!==void 0&&(c[a+na]=n[s*o+a]===1)}return Wu=e,oa=i,i}function Zh(e){let t=zu(e).length;return{columns:t*Gu,rows:t}}function ci(e,t,o,n){let r=Zh(e),i=t.rows-r.rows-ia;return r.columns<=t.width&&i>=o.rows?{fits:!0,qr:r,asideWidth:t.width,asideRows:i}:{fits:!1,target:{columns:Math.max(r.columns,o.columns)+n.columns,rows:r.rows+ia+o.rows+n.rows}}}function eb(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(tr(qu,{backgroundColor:e[n]??!1?Xh:Qh,children:" ".repeat((r-n)*Gu)},n)),n=r);return tr(qu,{children:o},t)}function tb({value:e}){return tr(ra,{flexDirection:"column",flexShrink:0,children:zu(e).map((t,o)=>eb(t,o))})}function li({value:e,aside:t}){return nb(ra,{flexDirection:"column",flexShrink:0,children:[tr(tb,{value:e}),tr(ra,{marginTop:ia,flexDirection:"column",children:t})]})}import{Box as ui,Text as ot}from"ink";import Ku from"string-width";import{jsx as rt,jsxs as nr}from"react/jsx-runtime";var mi=2,sa=4,Vu=e=>" ".repeat(e),aa=13,Ju=4,Yu=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+mi)/(aa+mi)))),en=(e,t,o=Ju)=>Math.ceil(e/Yu(e,t,o))*2;function it({tiles:e,width:t,maxPerRow:o=Ju}){let n=Yu(e.length,t,o),r=Math.floor((t-mi*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return rt(ui,{flexDirection:"column",children:i.map((s,a)=>rt(ui,{flexDirection:"column",children:["label","value"].map(c=>rt(ot,{wrap:"truncate",children:s.map((l,m)=>nr(ot,{children:[m>0&&Vu(mi),rt(ot,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Le(l[c],r)})]},l.label))},c))},a))})}function Xu({used:e,total:t,width:o=20}){let n=t<=0?1:Math.min(1,e/t),r=Math.round(n*o),i=n>=1?u.danger:n>=.8?u.warning:u.foreground;return nr(ot,{children:[rt(ot,{color:i,children:Z.barFilled.repeat(r)}),rt(ot,{color:u.border,children:Z.barEmpty.repeat(o-r)})]})}function ob({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>Ku(r))),n=Math.max(0,t-o-3);return rt(ui,{flexDirection:"column",children:e.map(([r,i])=>nr(ot,{wrap:"truncate",children:[rt(ot,{color:u.mutedForeground,children:Le(r,o)})," ",rt(ot,{color:u.foreground,children:_e(i,n)})]},r))})}var Qu=(e,t)=>Math.floor((t-sa)/2)<aa*2?e:Math.ceil(e/2);function Ne({items:e,width:t}){let o=Math.floor((t-sa)/2);if(o<aa*2)return rt(ob,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>Ku(a))),r=o-n-2,i=[];for(let a=0;a<e.length;a+=2)i.push(e.slice(a,a+2));let s=a=>a===void 0?rt(ot,{children:" ".repeat(o)}):nr(ot,{children:[rt(ot,{color:u.mutedForeground,children:Le(a[0],n)})," ",rt(ot,{color:u.foreground,children:Le(a[1],r)})]});return rt(ui,{flexDirection:"column",children:i.map((a,c)=>nr(ot,{wrap:"truncate",children:[s(a[0]),Vu(sa),s(a[1])]},c))})}import{Fragment as ub,jsx as re,jsxs as xn}from"react/jsx-runtime";var ib={cli:"\u547D\u4EE4\u884C",mobile:"\u624B\u673A",tablet:"\u5E73\u677F",smarttv:"\u667A\u80FD\u7535\u89C6",console:"\u6E38\u620F\u4E3B\u673A",wearable:"\u53EF\u7A7F\u6234\u8BBE\u5907",embedded:"\u5D4C\u5165\u5F0F\u8BBE\u5907"},em="\u5BC6\u94A5 ",sb=10,ab={rebind:{title:"\u91CD\u65B0\u7ED1\u5B9A\u4E24\u6B65\u9A8C\u8BC1",submit:"\u7EE7\u7EED",hint:"\u786E\u8BA4\u540E\u751F\u6210\u65B0\u5BC6\u94A5\uFF0C\u9A8C\u8BC1\u5668\u4E2D\u539F\u6709\u6761\u76EE\u5C06\u5931\u6548\uFF0C\u6062\u590D\u7801\u4E5F\u4F1A\u66F4\u6362"},regenerate:{title:"\u91CD\u65B0\u751F\u6210\u6062\u590D\u7801",submit:"\u751F\u6210",hint:"\u751F\u6210\u540E\u539F\u6709\u6062\u590D\u7801\u5168\u90E8\u4F5C\u5E9F"},disable:{title:"\u505C\u7528\u4E24\u6B65\u9A8C\u8BC1",submit:"\u505C\u7528",hint:"\u505C\u7528\u540E\u767B\u5F55\u4E0D\u518D\u8981\u6C42\u52A8\u6001\u7801\uFF0C\u6062\u590D\u7801\u540C\u65F6\u4F5C\u5E9F"}},cb=2+W;function lb({codes:e,width:t}){let o=Math.max(...e.map(r=>r.length))+4,n=[];for(let r=0;r<e.length;r+=2)n.push(xn(or,{wrap:"truncate",color:u.accent,children:[Le(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return re(wt,{flexDirection:"column",children:n})}function tm(){let e=B(),{width:t,columns:o,rows:n}=j(),r=ne(),[i,s]=Zu({name:"menu"}),[a,c]=Zu(!1),{busy:l,error:m,reset:p,fail:d,run:f}=de(),S=Q([e.revision],async()=>{let[k,g,w]=await Promise.all([hu(),ku(),Tu()]);return{user:k.user,security:g,sessions:w.sessions}});G(k=>{i.name==="menu"&&l===null&&k==="r"&&e.reload()}),_l(i.name==="codes");let b=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}p(),i.name==="passkey-rename"||i.name==="passkey-delete"?s({name:"passkey",item:i.item}):i.name==="confirm-revoke"?s({name:"session",item:i.item}):s({name:"menu"})}},h=k=>{s({name:"menu"}),e.reload(),e.toast("ok",k)},y=(k,g)=>{c(!1),s({name:"codes",codes:k,message:g})},x=(k,g)=>{k==="rebind"?f("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>Xs({code:g}),{onSuccess:w=>s({name:"enroll",setup:w})}):k==="regenerate"?f("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>Ru({code:g}),{onSuccess:({recoveryCodes:w})=>y(w,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):f("\u6B63\u5728\u505C\u7528",()=>_u({code:g}),{onSuccess:()=>h("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return re(X,{hints:i.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","r \u5237\u65B0"]:i.name==="codes"?["\u2191\u2193 \u79FB\u52A8","Enter \u786E\u8BA4"]:["Esc \u8FD4\u56DE"],locked:i.name==="codes",onEscape:b,children:re(ee,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:k,security:g,sessions:w})=>{if(i.name==="rename")return re(z,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:k.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:b,onSubmit:T=>{let N=(T.username??"").trim();if(N===""||N.length>Pn){d(`\u8BF7\u8F93\u5165 1 \u5230 ${Pn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>bu({username:N}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return re(z,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"email",label:"\u65B0\u90AE\u7BB1",placeholder:"\u7528\u4E8E\u767B\u5F55\u4E0E\u63A5\u6536\u901A\u77E5\u7684\u65B0\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",emailField:"email",send:T=>Su({email:T})},{kind:"text",name:"password",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u7ACB\u5373\u4EE5\u65B0\u90AE\u7BB1\u767B\u5F55\u548C\u63A5\u6536\u901A\u77E5\uFF0C\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"}],onCancel:b,onSubmit:T=>{let N=(T.email??"").trim(),_=(T.code??"").trim(),v=T.password??"";if(N===""||_===""||v===""){d("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}f("\u6B63\u5728\u4FDD\u5B58",()=>xu({email:N,code:_,password:v}),{onSuccess:()=>h("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return re(z,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"old",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801"},{kind:"text",name:"next",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801",hint:`\u81F3\u5C11 ${at} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:b,onSubmit:T=>{let N=T.old??"",_=T.next??"";if(N===""){d("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(_.length<at){d(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${at} \u4F4D`);return}f("\u6B63\u5728\u4FDD\u5B58",()=>yu({oldPassword:N,newPassword:_}),{onSuccess:()=>h("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return re(ze,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u767B\u5F55\uFF1F",detail:"\u9000\u51FA\u540E\u9700\u91CD\u65B0\u767B\u5F55\u624D\u80FD\u7BA1\u7406\u8D26\u6237",confirmLabel:"\u9000\u51FA\u767B\u5F55",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA",()=>Ar(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:b});if(i.name==="code"){let T=ab[i.intent];return re(z,{title:T.title,width:t,submitLabel:T.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:T.hint}],onCancel:b,onSubmit:N=>{let _=(N.code??"").trim();if(_===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}x(i.intent,_)}})}if(i.name==="enroll"){let T=(_,v)=>xn(ub,{children:[v&&re(or,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),xn(or,{children:[re(or,{color:u.mutedForeground,children:em}),re(or,{color:u.accent,children:i.setup.secret})]}),re(wt,{marginTop:1,children:re(z,{title:"\u586B\u5165\u52A8\u6001\u9A8C\u8BC1\u7801\u5B8C\u6210\u7ED1\u5B9A",width:_,submitLabel:"\u7ED1\u5B9A",busy:l!==null,busyLabel:l??"\u6B63\u5728\u7ED1\u5B9A",error:m,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:b,onSubmit:C=>{let I=(C.code??"").trim();if(I===""){d("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}f("\u6B63\u5728\u7ED1\u5B9A",()=>vu({code:I}),{onSuccess:({recoveryCodes:R})=>y(R,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),N=ci(i.setup.otpauthUri,{width:t,rows:r},{columns:rb(em)+i.setup.secret.length,rows:sb},{columns:o-t,rows:n-r});return N.fits?re(li,{value:i.setup.otpauthUri,aside:T(N.asideWidth,!0)}):xn(wt,{flexDirection:"column",children:[re(he,{tone:"info",width:t,title:"\u7EC8\u7AEF\u5C3A\u5BF8\u4E0D\u8DB3\uFF0C\u6539\u4E3A\u624B\u52A8\u5F55\u5165",detail:"\u5728\u9A8C\u8BC1\u5668\u4E2D\u9009\u62E9\u624B\u52A8\u8F93\u5165\uFF0C\u586B\u5165\u4E0B\u65B9\u5BC6\u94A5"}),T(t,!1)]})}if(i.name==="codes")return xn(wt,{flexDirection:"column",children:[re(he,{tone:"warn",width:t,title:"\u6062\u590D\u7801\u4EC5\u6B64\u4E00\u6B21\u5C55\u793A\uFF0C\u8BF7\u7ACB\u5373\u4FDD\u5B58\u5230\u5B89\u5168\u7684\u4F4D\u7F6E",detail:"\u6BCF\u679A\u6062\u590D\u7801\u53EA\u80FD\u4F7F\u7528\u4E00\u6B21\uFF0C\u53EF\u5728\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u4EE3\u66FF\u52A8\u6001\u9A8C\u8BC1\u7801\u767B\u5F55"}),re(wt,{marginTop:1,children:re(lb,{codes:i.codes,width:t})}),re(wt,{marginTop:1,children:re(ie,{width:t,items:[{value:"ack",label:`${a?"[x]":"[ ]"} \u6211\u5DF2\u59A5\u5584\u4FDD\u5B58\u8FD9\u4E9B\u6062\u590D\u7801`},{value:"done",label:"\u5B8C\u6210",disabled:!a}],onSelect:T=>{if(T==="ack"){c(_=>!_);return}let N=i.message;s({name:"menu"}),e.reload(),e.toast("ok",N)}})})]});if(i.name==="passkey-add")return re(he,{tone:"info",width:t,title:`\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ${e.ctx.site} \u7684\u300C\u4E2A\u4EBA\u4E2D\u5FC3\u300D\u5B8C\u6210\u6DFB\u52A0`,detail:"\u6DFB\u52A0\u4E0E\u4F7F\u7528 Passkey \u4F9D\u8D56\u6D4F\u89C8\u5668\u7684 WebAuthn \u80FD\u529B\uFF0C\u7EC8\u7AEF\u65E0\u6CD5\u5B8C\u6210"});if(i.name==="passkey-rename")return re(z,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:m,fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:i.item.name,placeholder:"\u6807\u8BB0\u6240\u5728\u8BBE\u5907\uFF0C\u5982 MacBook \u6307\u7EB9"}],onCancel:b,onSubmit:T=>{let N=(T.name??"").trim();if(N===""){d("\u8BF7\u8F93\u5165\u540D\u79F0");return}f("\u6B63\u5728\u4FDD\u5B58",()=>Pu(i.item.id,{name:N}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return re(ze,{width:t,title:`\u786E\u8BA4\u5220\u9664 Passkey\u300C${i.item.name}\u300D\uFF1F`,detail:"\u5220\u9664\u540E\u65E0\u6CD5\u518D\u7528\u5B83\u767B\u5F55",confirmLabel:"\u5220\u9664",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u5220\u9664",()=>Cu(i.item.id),{onSuccess:()=>h("\u5DF2\u5220\u9664")}),onCancel:b});if(i.name==="passkey"){let T=i.item;return re(wt,{flexDirection:"column",children:xn(te,{title:`Passkey ${T.name}`,width:t,children:[re(Ne,{width:t-ce,items:[["\u540D\u79F0",T.name],["\u6DFB\u52A0\u65F6\u95F4",V(T.createdAt)],["\u6700\u8FD1\u4F7F\u7528",T.lastUsedAt===null?"\u2014":V(T.lastUsedAt)]]}),re(wt,{marginTop:1,children:re(ie,{width:t-ce,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:N=>{p(),s(N==="rename"?{name:"passkey-rename",item:T}:{name:"passkey-delete",item:T})}})})]})})}if(i.name==="confirm-revoke")return re(ze,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:m,onConfirm:()=>f("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>wu(i.item.id),{onSuccess:()=>h("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:b});if(i.name==="session"){let T=i.item;return xn(wt,{flexDirection:"column",children:[re(te,{title:hr(T.device),note:T.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:re(Ne,{width:t-ce,items:[["\u8BBE\u5907\u7C7B\u578B",T.device?.type!=null?ib[T.device.type]??T.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",T.device?.client!=null?`${T.device.client} ${T.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",T.device?.os!=null?`${T.device.os} ${T.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",T.device?.model!=null?`${T.device.vendor??""} ${T.device.model}`.trim():"\u2014"],["IP \u5730\u5740",T.ip],["\u767B\u5F55\u65F6\u95F4",V(T.loginAt)],["\u6700\u540E\u6D3B\u8DC3",V(T.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",V(T.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",T.userAgent??"\u2014"]]})}),!T.current&&l===null&&re(wt,{marginTop:1,children:re(ie,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{p(),s({name:"confirm-revoke",item:T})}})})]})}let P=g.totp,$=P.enabled?P.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${P.recoveryCodesRemaining} \u679A\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1`:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1\u540E\u751F\u6210\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4F5C\u4E3A\u767B\u5F55\u51ED\u8BC1",U=[{heading:"\u8D26\u6237"},{value:{kind:"rename"},label:"\u4FEE\u6539\u7528\u6237\u540D"},{value:{kind:"email"},label:"\u4FEE\u6539\u90AE\u7BB1",hint:"\u9700\u8981\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801"},{value:{kind:"password"},label:"\u4FEE\u6539\u5BC6\u7801",hint:"\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"},{heading:""},{heading:"\u4E24\u6B65\u9A8C\u8BC1"},...P.enabled?[{value:{kind:"code",intent:"rebind"},label:"\u91CD\u65B0\u7ED1\u5B9A",hint:"\u751F\u6210\u65B0\u5BC6\u94A5\u5E76\u66F4\u6362\u6062\u590D\u7801"},{value:{kind:"code",intent:"regenerate"},label:"\u91CD\u65B0\u751F\u6210\u6062\u590D\u7801",hint:"\u539F\u6709\u6062\u590D\u7801\u5168\u90E8\u4F5C\u5E9F"},{value:{kind:"code",intent:"disable"},label:"\u505C\u7528",labelTone:"danger"}]:[{value:{kind:"enable"},label:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",hint:"\u767B\u5F55\u65F6\u8981\u6C42\u989D\u5916\u8F93\u5165\u9A8C\u8BC1\u5668\u52A8\u6001\u7801\uFF0C\u5BC6\u7801\u6CC4\u9732\u540E\u4ECD\u53EF\u62E6\u622A\u5192\u7528\u767B\u5F55"}],{heading:""},{heading:"Passkey"},...g.passkeys.length===0?[{value:{kind:"none"},label:"\u6682\u65E0 Passkey",hint:"\u6DFB\u52A0\u540E\u53EF\u4F7F\u7528\u6307\u7EB9\u3001\u9762\u5BB9\u6216\u786C\u4EF6\u5BC6\u94A5\u4E00\u6B65\u767B\u5F55",disabled:!0}]:[],...g.passkeys.map(T=>({value:{kind:"passkey",item:T},label:T.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${T.lastUsedAt===null?"\u2014":V(T.lastUsedAt)}`})),{value:{kind:"add-passkey"},label:"\u6DFB\u52A0 Passkey",hint:"\u9700\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"},{heading:""},{heading:"\u767B\u5F55\u8BBE\u5907"},...w.map(T=>({value:{kind:"session",item:T},label:T.current?`${hr(T.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:hr(T.device),...T.current?{labelTone:"accent"}:{},hint:`${T.ip} \xB7 \u6700\u540E\u6D3B\u8DC3 ${V(T.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return xn(wt,{flexDirection:"column",children:[re(Ne,{width:t,items:[["\u7528\u6237\u540D",k.username],["\u90AE\u7BB1",k.email],["\u4E24\u6B65\u9A8C\u8BC1",P.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${P.enabledAt===null?"\u2014":V(P.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",$]]}),re(wt,{marginTop:W,children:re(ie,{width:t,height:Math.max(3,r-cb),isActive:l===null,items:U,retain:"menu",onSelect:T=>{p(),T.kind==="rename"?s({name:"rename"}):T.kind==="email"?s({name:"email"}):T.kind==="password"?s({name:"password"}):T.kind==="logout"?s({name:"confirm-logout"}):T.kind==="enable"?f("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>Xs({}),{onSuccess:N=>s({name:"enroll",setup:N})}):T.kind==="code"?s({name:"code",intent:T.intent}):T.kind==="add-passkey"?s({name:"passkey-add"}):T.kind==="passkey"?s({name:"passkey",item:T.item}):T.kind==="session"&&s({name:"session",item:T.item})}})})]})}})})}import{Box as yi,Text as Si,useInput as kb}from"ink";import{useRef as fm,useState as po}from"react";import vb from"string-width";import{z as Je}from"zod";var mb=Je.object({siteName:Je.string(),apiLines:Je.array(Je.object({name:Je.string(),description:Je.string(),url:Je.string()})),quotaPerUsd:Je.number(),ticketAutoCloseMinutes:Je.number(),docsEnabled:Je.boolean(),legal:Je.object({termsConfigured:Je.boolean(),privacyConfigured:Je.boolean()})});function Ee(e,t){return Nt(mb,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var db=Je.object({content:Je.string(),configured:Je.boolean()});function nm(e,t){return Nt(db,`${e}/api/agreements/${t}`)}var om=12e4,rm=e=>M(_n(xr),Dt("/tickets",{...e})),im=e=>M(Cc,"/tickets",{method:"POST",json:e}),ca=e=>M(Nc,`/tickets/${e}`),sm=(e,t,o)=>M(me,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:o}}),am=e=>M(Ac,Dt("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:om}),cm=e=>M(me,`/tickets/attachments/${e}`,{method:"DELETE"}),lm=(e,t)=>Ir(`/tickets/${e}/attachments/${t}`,{timeoutMs:om}),um=e=>M(me,`/tickets/${e}/close`,{method:"POST"}),mm=e=>M(me,`/tickets/${e}/reopen`,{method:"POST"});import{existsSync as di,readFileSync as pb,statSync as dm,writeFileSync as fb}from"fs";import{homedir as la}from"os";import kt from"path";var gb={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"};function hb(e){return e.split(`
13
- `).map(t=>t.trim()).filter(t=>t!=="").map(t=>t.startsWith("~/")?kt.join(la(),t.slice(2)):t)}function bb(e){if(!di(e))throw new O(`${e} \u4E0D\u5B58\u5728`);let t=dm(e);if(!t.isFile())throw new O(`${e} \u4E0D\u662F\u6587\u4EF6`);if(t.size===0)throw new O(`${e} \u662F\u7A7A\u6587\u4EF6\uFF0C\u65E0\u6CD5\u4E0A\u4F20`);if(t.size>Io)throw new O(`${e} \u8D85\u8FC7\u5355\u4E2A\u9644\u4EF6\u5927\u5C0F\u4E0A\u9650 ${to(Io)}`);let o;try{o=pb(e)}catch(r){throw new O(`${e} \u8BFB\u53D6\u5931\u8D25\uFF1A${ve(r)}`,{cause:r})}let n=kt.basename(e);return{fileName:n,contentType:gb[kt.extname(n).toLowerCase()]??"application/octet-stream",bytes:o}}function pi(e){let t=hb(e);if(t.length>Tr)throw new O("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return t.map(bb)}async function fi(e,t){let o=[];try{for(let n of e)o.push((await am(n)).id);return await t(o)}catch(n){for(let r of o)await cm(r).catch(()=>{});throw n}}function yb(e,t){let o=kt.basename(t),n=kt.extname(o),r=o.slice(0,o.length-n.length),i=kt.join(e,o);for(let s=1;di(i);s+=1)i=kt.join(e,`${r}-${s}${n}`);return i}function Sb(e,t){let o=e.trim();if(o==="")return{dir:process.cwd(),fileName:t};if(o==="~")return{dir:la(),fileName:t};let n=o.startsWith("~/")||o.startsWith(`~${kt.sep}`)?kt.join(la(),o.slice(2)):o;return o.endsWith("/")||o.endsWith(kt.sep)||di(n)&&dm(n).isDirectory()?{dir:n,fileName:t}:{dir:kt.dirname(n),fileName:kt.basename(n)}}function pm(e,t,o){let n=Sb(e,t);if(!di(n.dir))throw new O(`${n.dir} \u76EE\u5F55\u4E0D\u5B58\u5728`);let r=yb(n.dir,n.fileName);try{fb(r,o)}catch(i){throw new O(`\u5199\u5165 ${r} \u5931\u8D25\uFF1A${ve(i)}`,{cause:i})}return r}import{jsx as xb}from"react/jsx-runtime";function gi({title:e,width:t,fileName:o,download:n,onCancel:r,onSaved:i}){let{busy:s,error:a,run:c}=de();return xb(z,{title:e,width:t,submitLabel:"\u4E0B\u8F7D",busy:s!==null,busyLabel:"\u6B63\u5728\u4E0B\u8F7D",error:a,fields:[{kind:"text",name:"path",label:"\u4FDD\u5B58\u8DEF\u5F84",placeholder:"\u7559\u7A7A\u4FDD\u5B58\u5230\u5F53\u524D\u76EE\u5F55",hint:"\u53EF\u586B\u76EE\u5F55\u6216\u5E26\u6587\u4EF6\u540D\u7684\u5B8C\u6574\u8DEF\u5F84",optional:!0}],onCancel:r,onSubmit:l=>{c("\u6B63\u5728\u4E0B\u8F7D",async()=>{let m=await n();return pm(l.path??"",o,m)},{onSuccess:i})}})}import{useEffect as Tb,useRef as wb}from"react";function hi(e,t,o=!0){let n=wb(t);n.current=t,Tb(()=>{if(!o)return;let r=!1,i=setInterval(()=>{r||(r=!0,n.current().catch(()=>{}).finally(()=>{r=!1}))},e);return()=>clearInterval(i)},[e,o])}var bi={kind:"textarea",name:"attachments",label:"\u9644\u4EF6\u8DEF\u5F84",rows:2,placeholder:"\u6BCF\u884C\u4E00\u4E2A\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\uFF0C\u53EF\u7559\u7A7A",hint:`\u6700\u591A ${Tr} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${Io/1024/1024}MB`,optional:!0};import{jsx as dt,jsxs as ua}from"react/jsx-runtime";var _b=5e3,Rb=11,Pb=3,gm=1;function Cb(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+vb(c.text),0),s=Math.max(0,t-i);return s===0?r:{spans:[{text:" ".repeat(s)},...r.spans]}};return e.forEach((r,i)=>{i>0&&o.push({spans:[]});let s=r.authorKind==="user",a={spans:[{text:s?"\u6211":"\u7BA1\u7406\u5458",color:s?u.accent:u.mutedForeground},{text:` ${V(r.createdAt)}`,color:u.faintForeground}]},c=r.content===""?[]:Ft([{text:r.content,color:u.foreground}],Math.max(8,t-4)),l=r.attachments.map(m=>({spans:[{text:"[\u9644\u4EF6] ",color:u.faintForeground},{text:m.fileName,color:u.foreground},{text:` (${to(m.fileSize)})`,color:u.mutedForeground}]}));s?o.push(n(a),...c.map(n),...l.map(n)):o.push(a,...c,...l)}),o}function hm({params:e}){let t=B(),{width:o}=j(),n=ne(),[r,i]=po("main"),[s,a]=po(!1),[c,l]=po(null),[m,p]=po(null),[d,f]=po(0),{busy:S,error:b,reset:h,fail:y,run:x}=de(),k=Q([e.id,t.revision],async()=>{let[I,R]=await Promise.all([ca(e.id),Ee(t.ctx.site)]);return{detail:I,site:R}}),[g,w]=po(null),P=fm(0),$=fm(t.revision);$.current!==t.revision&&($.current=t.revision,P.current+=1,g!==null&&w(null));let U=k.phase==="ready"?k.data:null,T=g??U?.detail??null;hi(_b,async()=>{if(T===null||S!==null)return;let I=P.current,R=await ca(e.id);I===P.current&&(R.ticket.updatedAt!==T.ticket.updatedAt||R.messages.length!==T.messages.length)&&w(R)},r==="main"&&U!==null);let N=T?.messages.some(I=>I.attachments.length>0)??!1;G(I=>{r!=="main"||s||S!==null||(I==="r"?t.reload():I==="x"&&T!==null&&T.ticket.status!=="closed"?(h(),i("confirm-close")):I==="a"&&N&&(h(),l(null),p(null),i("attachments")))}),kb((I,R)=>{R.tab&&r==="main"&&!s&&T?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&S===null});let _=()=>{if(r!=="main"){h(),i("main");return}if(s){a(!1);return}t.pop()},v=(I,R)=>{x("\u6B63\u5728\u53D1\u9001",()=>fi(R,A=>sm(e.id,I,A)),{onSuccess:()=>{a(!1),f(A=>A+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},C=r==="main"&&!s?["\u2191\u2193 \u6EDA\u52A8",...T?.ticket.status==="closed"?[]:["Tab \u56DE\u590D"],...N?["a \u9644\u4EF6"]:[],...T?.ticket.status==="closed"?[]:["x \u5173\u95ED\u5DE5\u5355"],"r \u5237\u65B0"]:[];return dt(X,{trail:["\u5DE5\u5355\u652F\u6301",T?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:C,onEscape:_,children:dt(ee,{state:k,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:I,detail:R})=>{let A=g??R,q=A.ticket,F=q.status==="closed";if(r==="confirm-close")return dt(ze,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${q.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:S,error:b,onConfirm:()=>x("\u6B63\u5728\u5173\u95ED",()=>um(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:_});if(r==="attachments")return m!==null?dt(gi,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${m.fileName}`,width:o,fileName:m.fileName,download:()=>lm(e.id,m.id),onCancel:()=>p(null),onSaved:ke=>{p(null),l(ke),t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):ua(yi,{flexDirection:"column",children:[dt(ie,{width:o,height:Math.max(3,n-1),isActive:S===null,items:[{heading:"\u9644\u4EF6"},...A.messages.flatMap(ke=>ke.attachments.map(E=>({value:E,label:E.fileName,hint:`${ke.authorKind==="user"?"\u6211":"\u7BA1\u7406\u5458"} \xB7 ${to(E.fileSize)} \xB7 ${V(ke.createdAt)}`})))],onSelect:ke=>{l(null),p(ke)}}),c!==null&&dt(Si,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let K=I.ticketAutoCloseMinutes>0?gm:0,H=F?Pb:s?Rb:gm,oe=Math.max(3,n-K-H-W);return ua(yi,{flexDirection:"column",children:[K>0&&dt(Si,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${I.ticketAutoCloseMinutes} \u5206\u949F\u672A\u56DE\u5E94\uFF0C\u5DE5\u5355\u5C06\u81EA\u52A8\u5173\u95ED\uFF1B\u5DF2\u5173\u95ED\u7684\u5DE5\u5355\u53EF\u968F\u65F6\u91CD\u65B0\u6253\u5F00`}),dt(gn,{lines:Cb(A.messages,o),height:oe,isActive:!s&&S===null,pinBottom:!0}),dt(yi,{marginTop:1,flexDirection:"column",children:F?ua(yi,{flexDirection:"column",children:[dt(Si,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),dt(ie,{width:o,isActive:S===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>x("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>mm(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?dt(z,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:S!==null,busyLabel:S??"\u6B63\u5728\u53D1\u9001",error:b,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9",optional:!0},bi],onCancel:()=>a(!1),onSubmit:ke=>{let E=(ke.content??"").trim(),D;try{D=pi(ke.attachments??"")}catch(J){y(ve(J));return}if(E===""&&D.length===0){y("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}v(E,D)}},d):dt(Si,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Eb}from"ink";import{useState as Ab}from"react";import{jsx as Dn,jsxs as Lb}from"react/jsx-runtime";var Nb=Ze(os,xs,"\u5168\u90E8\u72B6\u6001"),Ib={title:"\u7B80\u8981\u63CF\u8FF0\u4F60\u7684\u95EE\u9898",content:"\u8BE6\u7EC6\u63CF\u8FF0\u9047\u5230\u7684\u95EE\u9898\uFF0C\u4FBF\u4E8E\u7BA1\u7406\u5458\u5FEB\u901F\u5B9A\u4F4D"},ma={billing:{title:"\u7B80\u8FF0\u8BA1\u8D39\u6216\u989D\u5EA6\u7591\u95EE",content:"\u8BF4\u660E\u7591\u95EE\u6D89\u53CA\u7684\u65F6\u95F4\u6BB5\u3001\u6A21\u578B\u4E0E\u9884\u671F\u5DEE\u5F02\uFF0C\u53EF\u9644\u989D\u5EA6\u6D41\u6C34\u6216\u4F7F\u7528\u65E5\u5FD7\u4E2D\u7684\u8BB0\u5F55"},technical:{title:"\u7B80\u8FF0\u63A5\u53E3\u6216\u8C03\u7528\u95EE\u9898",content:"\u63CF\u8FF0\u62A5\u9519\u73B0\u8C61\u4E0E\u590D\u73B0\u6B65\u9AA4\uFF0C\u9644\u8BF7\u6C42 ID\u3001\u6A21\u578B\u540D\u3001\u53D1\u751F\u65F6\u95F4\u7B49\u4FE1\u606F"},account:{title:"\u7B80\u8FF0\u8D26\u53F7\u76F8\u5173\u95EE\u9898",content:"\u63CF\u8FF0\u767B\u5F55\u3001\u90AE\u7BB1\u6216\u5B89\u5168\u76F8\u5173\u7684\u5177\u4F53\u95EE\u9898\uFF0C\u5207\u52FF\u586B\u5199\u5BC6\u7801\u7B49\u654F\u611F\u4FE1\u606F"},other:Ib};function bm(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Ab({name:"list"}),[i,s]=Xe("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:p}=de(),d=bn([e.revision,i],b=>rm({page:b,...i===""?{}:{status:i}}),{retain:"page"}),f=n.name==="list";G((b,h)=>{f&&(b==="r"?e.reload():b==="f"?r({name:"filter"}):b==="n"?r({name:"create-category"}):h.leftArrow?d.go(-1):h.rightArrow&&d.go(1))});let S=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return Dn(X,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","n \u65B0\u5EFA","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:n.name==="filter"?Dn(z,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Nb,initial:i}],onCancel:S,onSubmit:b=>{s(b.status??""),d.reset(),r({name:"list"})}}):n.name==="create-category"?Dn(ie,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...rs.map(b=>({value:b,label:Rr(b),hint:ma[b].title}))],onSelect:b=>r({name:"create",category:b})}):n.name==="create"?Dn(z,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${Rr(n.category)}`,width:t,submitLabel:"\u63D0\u4EA4",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[{kind:"select",name:"priority",label:"\u4F18\u5148\u7EA7",options:is.map(b=>({value:b,label:Ts(b).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:ma[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:ma[n.category].content},bi],onCancel:S,onSubmit:b=>{let h=(b.title??"").trim(),y=(b.content??"").trim();if(h===""){m("\u8BF7\u586B\u5199\u6807\u9898");return}if(y===""){m("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}let x;try{x=pi(b.attachments??"")}catch(k){m(ve(k));return}p("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>fi(x,k=>im({title:h,category:n.category,priority:b.priority??"normal",content:y,attachmentIds:k})),{onSuccess:k=>{r({name:"list"}),d.reset(),e.reload(),e.push("ticket",{id:k.id}),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):Dn(ee,{state:d.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:b=>Lb(Eb,{flexDirection:"column",children:[Dn(Re,{retain:"list",items:b.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u4F18\u5148\u7EA7"},{label:"\u5206\u7C7B"},{label:"\u6700\u540E\u66F4\u65B0"},{label:"\u72B6\u6001",align:"right"}],row:h=>[h.title,Yt(Ts(h.priority)),Rr(h.category),V(h.updatedAt),Yt(xs(h.status))],onOpen:h=>e.push("ticket",{id:h.id}),emptyLabel:i===""?"\u6682\u65E0\u5DE5\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u9047\u5230\u95EE\u9898\u65F6\u53EF\u65B0\u5EFA\u5DE5\u5355\uFF0C\u7BA1\u7406\u5458\u4F1A\u5C3D\u5FEB\u56DE\u590D":void 0}),Dn(yn,{page:d.page,pages:d.pages,total:d.total,width:t})]})})})}import{Box as Mb}from"ink";import{jsx as rr}from"react/jsx-runtime";function ym({params:e}){let t=B(),{width:o}=j(),n=ne(),r=Q([e.type,t.revision],()=>nm(t.ctx.site,e.type));return rr(X,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:rr(ee,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?rr(Mb,{flexDirection:"column",children:rr(gn,{lines:co(i.content,o),height:n})}):rr(he,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}var Sm=(e,t)=>Nt(me,`${e}/api/auth/send-code`,{json:t});async function xm(e,t){let o=await bt(`${e}/api/auth/register`,{json:t});At(o);let n=Zn.parse(o.data);return Bo(e,Do({refresh:null,device:null},o.headers),n)}var Tm=(e,t)=>Nt(me,`${e}/api/auth/forgot-password`,{json:t}),wm=(e,t)=>Nt(me,`${e}/api/auth/reset-password`,{json:t});import{jsx as km}from"react/jsx-runtime";function vm(){let e=B(),{width:t}=j(),{busy:o,error:n,fail:r,run:i}=de();return km(X,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:km(z,{title:"\u91CD\u7F6E\u5BC6\u7801",width:t,submitLabel:"\u63D0\u4EA4",busy:o!==null,busyLabel:o??"\u6B63\u5728\u91CD\u7F6E",error:n,fields:[{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u6CE8\u518C\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:s=>Tm(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${at} \u4F4D`,hint:"\u91CD\u7F6E\u540E\u6240\u6709\u8BBE\u5907\u90FD\u9700\u91CD\u65B0\u767B\u5F55"}],onCancel:()=>e.pop(),onSubmit:s=>{let a=(s.email??"").trim(),c=(s.code??"").trim(),l=s.password??"";if(a===""||c===""){r("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(l.length<at){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${at} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>wm(e.ctx.site,{email:a,code:c,password:l}),{onSuccess:()=>{e.toast("ok","\u5BC6\u7801\u5DF2\u91CD\u7F6E\uFF0C\u8BF7\u767B\u5F55"),e.pop()}})}})})}import{Box as pa,Text as $b}from"ink";import{useState as Rm}from"react";import{Box as _m}from"ink";import{jsx as da,jsxs as Ob}from"react/jsx-runtime";var xi=e=>e.termsConfigured||e.privacyConfigured;function Ti({legal:e,width:t,onAgree:o}){let n=B(),r=[e.termsConfigured?"\u300A\u7528\u6237\u534F\u8BAE\u300B":"",e.privacyConfigured?"\u300A\u9690\u79C1\u653F\u7B56\u300B":""].filter(s=>s!==""),i=[{value:"agree",label:"\u6211\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\uFF0C\u7EE7\u7EED",hint:r.join("\u4E0E")},...e.termsConfigured?[{value:"terms",label:"\u67E5\u770B\u7528\u6237\u534F\u8BAE"}]:[],...e.privacyConfigured?[{value:"privacy",label:"\u67E5\u770B\u9690\u79C1\u653F\u7B56"}]:[],{value:"back",label:"\u8FD4\u56DE"}];return Ob(_m,{flexDirection:"column",children:[da(he,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),da(_m,{marginTop:1,children:da(ie,{items:i,width:t,onSelect:s=>{s==="agree"?o():s==="terms"?n.push("agreement",{type:"terms"}):s==="privacy"?n.push("agreement",{type:"privacy"}):n.pop()}})})]})}import{jsx as Tn,jsxs as Pm}from"react/jsx-runtime";function Cm(){let e=B(),{width:t}=j(),[o,n]=Rm({name:"credentials"}),[r,i]=Rm(!1),{busy:s,error:a,reset:c,fail:l,run:m}=de(),p=Q([e.revision],()=>Ee(e.ctx.site)),d=h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${h}`),e.home()},f=(h,y)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>cl(e.ctx.site,h,y),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}d(x.session.username)}})},S=(h,y)=>{m("\u6B63\u5728\u9A8C\u8BC1",()=>ll(e.ctx.site,h.jar,h.ticket,y,h.kind),{onSuccess:x=>d(x.username)})},b=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return Pm(X,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:b,isActive:s===null,children:[o.name==="credentials"&&Tn(ee,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:h=>xi(h.legal)&&!r?Tn(Ti,{legal:h.legal,width:t,onAgree:()=>i(!0)}):Pm(pa,{flexDirection:"column",children:[Tn(z,{title:"\u767B\u5F55",width:t,submitLabel:"\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"account",label:"\u8D26\u53F7",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D\u6216\u90AE\u7BB1"},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801"}],onCancel:b,onSubmit:y=>{let x=(y.account??"").trim(),k=y.password??"";if(x===""||k===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}f(x,k)}}),Tn(pa,{marginTop:1,children:Tn($b,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&Tn(ie,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:h=>n({name:"code",ticket:o.ticket,jar:o.jar,kind:h})}),o.name==="code"&&Tn(pa,{flexDirection:"column",children:Tn(z,{title:"\u4E24\u6B65\u9A8C\u8BC1",width:t,submitLabel:"\u9A8C\u8BC1\u5E76\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"code",label:o.kind==="totp"?"\u52A8\u6001\u9A8C\u8BC1\u7801":"\u6062\u590D\u7801",placeholder:o.kind==="totp"?"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801":"\u8BF7\u8F93\u5165\u6062\u590D\u7801",hint:o.kind==="totp"?"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801":"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onCancel:b,onSubmit:h=>{let y=(h.code??"").trim();if(y===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,y)}})})]})}import{useState as Db}from"react";import{jsx as wi}from"react/jsx-runtime";function Em(){let e=B(),{width:t}=j(),[o,n]=Db(!1),{busy:r,error:i,fail:s,run:a}=de(),c=Q([e.revision],()=>Ee(e.ctx.site));return wi(X,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:wi(ee,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>xi(l.legal)&&!o?wi(Ti,{legal:l.legal,width:t,onAgree:()=>n(!0)}):wi(z,{title:"\u6CE8\u518C",width:t,submitLabel:"\u6CE8\u518C",busy:r!==null,busyLabel:r??"\u6B63\u5728\u6CE8\u518C",error:i,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"},{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:m=>Sm(e.ctx.site,{email:m})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${at} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:m=>{let p=(m.username??"").trim(),d=(m.email??"").trim(),f=(m.code??"").trim(),S=m.password??"",b=(m.invite??"").trim();if(p===""||p.length>Pn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${Pn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(d===""||f===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<at){s(`\u5BC6\u7801\u81F3\u5C11 ${at} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>xm(e.ctx.site,{username:p,email:d,password:S,code:f,...b===""?{}:{inviteCode:b}}),{onSuccess:h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u6CE8\u518C\u6210\u529F\uFF1A${h.username}`),e.home()}})}})})})}import{Box as Fn}from"ink";import{useEffect as Zb,useRef as ey,useState as ya}from"react";import{z as L}from"zod";var Bb=L.object({balance:L.number(),today:L.object({requests:L.number(),tokens:L.number(),cost:L.number()})}),Am=()=>M(Bb,"/dashboard/summary"),Nm=["all","30d","7d"],Fb=L.object({totals:L.object({requests:L.number(),tokens:L.number(),cost:L.number()}),hourly:L.array(L.number()),models:L.array(L.object({model:L.string(),displayName:L.string(),tokens:L.number(),inTokens:L.number(),outTokens:L.number()})),chart:L.object({start:L.string(),end:L.string(),points:L.array(L.object({day:L.string(),model:L.string(),tokens:L.number()}))}),heatmap:L.object({start:L.string(),end:L.string(),days:L.array(L.object({day:L.string(),cost:L.number()}))}),activeDays:L.number(),currentStreak:L.number(),longestStreak:L.number()}),fa=e=>M(Fb,Dt("/dashboard/stats",{range:e})),Ub=L.object({id:L.number().int(),requestId:L.string(),tokenName:L.string(),protocol:ec,model:L.string(),modelDisplayName:L.string(),groupName:L.string(),promptTokens:L.number(),completionTokens:L.number(),cachedTokens:L.number(),cacheWriteTokens:L.number(),cacheWrite1hTokens:L.number(),webSearchRequests:L.number(),imageGenerationCalls:L.number(),totalTokens:L.number(),quotaCost:L.number(),subscriptionPlanName:L.string().nullable(),multiplier:L.number(),tierOver:L.number().int().nullable(),paramMultipliers:$c,status:cc,httpStatus:L.number().int(),stopReason:L.string().nullable(),latencyMs:L.number(),firstByteMs:L.number().nullable(),stream:L.boolean(),ip:L.string(),createdAt:L.string()}),Im=e=>M(_n(Ub),Dt("/logs",{...e})),jb=L.object({quotaCost:L.number(),rpm:L.number(),tpm:L.number(),concurrency:L.number()}),Lm=e=>M(jb,Dt("/logs/stats",{...e})),Hb=L.object({id:L.number().int(),type:ic,amount:L.number(),balanceAfter:L.number(),refType:sc,refId:L.string().nullable(),createdAt:L.string()}),Mm=e=>M(_n(Hb),Dt("/quota-ledger",{...e}));import{Box as qb,Text as Lt}from"ink";import ir from"string-width";import{Fragment as $m,jsx as Mt,jsxs as ga}from"react/jsx-runtime";var Bn=1,Wb=4,Gb=1,fo=8,zb=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],Om=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function Dm({data:e,order:t,width:o,rows:n}){let r=n-Gb,i=[];for(let N=e.start;N<=e.end;N=un(N,1))i.push(N);let s=Math.min(Wb,Math.floor((o+Bn)/i.length)-Bn);s<1&&(s=1,i=i.slice(-Math.floor((o+Bn)/(1+Bn))));let a=i[0],c=i[i.length-1];if(a===void 0||c===void 0)return null;let l=new Map(t.slice(0,qr.length).map((N,_)=>[N,_])),m=qr.length,p=N=>qr[N]??u.faintForeground,d=new Map(i.map((N,_)=>[N,_])),f=i.map(()=>Array.from({length:m+1},()=>0));for(let N of e.points){let _=d.get(N.day);if(_===void 0)continue;let v=f[_];if(v===void 0)continue;let C=l.get(N.model)??m;v[C]=(v[C]??0)+N.tokens}let S=f.map(N=>N.reduce((_,v)=>_+v,0)),b=Math.max(0,...S),h=r*fo,y=f.map((N,_)=>{let v=Array.from({length:r},()=>null),C=S[_]??0;if(C<=0)return v;let I=Math.max(1,Math.round(C/b*h)),R=[],A=0,q=0;N.forEach((F,K)=>{A+=F;let H=Math.round(A/C*I);for(let oe=q;oe<H;oe+=1)R[oe]=p(K);q=H});for(let F=0;F<r;F+=1){let K=Math.min(fo,I-F*fo);if(K<=0)break;let H=new Map;for(let E=F*fo;E<F*fo+K;E+=1){let D=R[E];D!==void 0&&H.set(D,(H.get(D)??0)+1)}let oe=null,ke=0;for(let[E,D]of H)D>ke&&(oe=E,ke=D);if(oe===null)break;v[F]={color:oe,glyph:K===fo?null:zb[K-1]??null}}return v}),x=N=>{let _=[],v=(C,I,R)=>{let A=_[_.length-1];A!==void 0&&A.color===C&&A.glyph===I?A.width+=R:_.push({color:C,glyph:I,width:R})};return y.forEach((C,I)=>{I>0&&v(null,null,Bn);let R=C[N]??null;R===null?v(null,null,s):v(R.color,R.glyph,s)}),_},k=i.length*(s+Bn)-Bn,g=Om(a),w=Om(c),P=b>0?`\u5355\u65E5\u5CF0\u503C ${ln(b)}`:"",$=k-ir(g)-ir(w),U=P!==""&&$>=ir(P)+4,T=U?Math.floor(($-ir(P))/2):$;return ga(qb,{flexDirection:"column",children:[Array.from({length:r},(N,_)=>{let v=r-1-_;return Mt(Lt,{wrap:"truncate",children:x(v).map((C,I)=>C.color===null?Mt(Lt,{children:" ".repeat(C.width)},I):C.glyph===null?Mt(Lt,{backgroundColor:C.color,children:" ".repeat(C.width)},I):Mt(Lt,{color:C.color,children:C.glyph.repeat(C.width)},I))},v)}),Mt(Lt,{wrap:"truncate",children:$<2?Mt(Lt,{color:u.faintForeground,children:_e(g,k)}):ga($m,{children:[Mt(Lt,{color:u.faintForeground,children:g}),Mt(Lt,{children:" ".repeat(T)}),U&&ga($m,{children:[Mt(Lt,{color:u.mutedForeground,children:P}),Mt(Lt,{children:" ".repeat($-ir(P)-T)})]}),Mt(Lt,{color:u.faintForeground,children:w})]})})]})}import{Box as Bm,Text as qt}from"ink";import Kb from"string-width";import{jsx as Ht,jsxs as ha}from"react/jsx-runtime";var ki=3,tn=2,ba=10,Vb=8,Fm=e=>Math.floor((e-ki)/tn),Um=e=>Fm(e)>=Vb;function Jb(e){let t=new Map(e.days.map(c=>[c.day,c.cost])),o=e.days.map(c=>c.cost).sort((c,l)=>c-l),n=c=>o[Math.floor((o.length-1)*c)]??0,[r,i,s]=[n(.25),n(.5),n(.75)],a=[];for(let c=e.start;c<=e.end;c=un(c,1)){let l=t.get(c)??0;a.push({day:c,level:l<=0?0:l<=r?1:l<=i?2:l<=s?3:4})}return a}function Yb(e,t){let o=t*tn,n="",r=0,i="";for(;r<o;){let s=r%tn===0?e[r/tn*7]:void 0;if(s!==void 0){let a=s.day.slice(0,7);if(a!==i){i=a;let c=`${Number(s.day.slice(5,7))}\u6708`,l=Kb(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var Xb={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function Qb({cells:e,day:t,weeks:o}){return ha(qt,{wrap:"truncate",children:[Ht(qt,{color:u.faintForeground,children:Le(Xb[t]??"",ki)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?Ht(qt,{children:" ".repeat(tn)},r):Ht(qt,{backgroundColor:Hr[i.level],children:" ".repeat(tn)},r)})]})}function jm({data:e,funFact:t,width:o}){let n=Jb(e),r=Math.ceil(n.length/7),i=Math.min(r,Fm(o)),s=n.slice((r-i)*7),a=3+Hr.length*tn+3,c=Math.max(0,ki+i*tn-a-2);return ha(Bm,{flexDirection:"column",children:[Ht(qt,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(ki)+Yb(s,i)}),Array.from({length:7},(l,m)=>Ht(Qb,{cells:s,day:m,weeks:i},m)),Ht(Bm,{marginTop:1,children:ha(qt,{wrap:"truncate",children:[Ht(qt,{color:u.mutedForeground,children:Le(t??"",c)})," ",Ht(qt,{color:u.faintForeground,children:"\u5C11 "}),Hr.map(l=>Ht(qt,{backgroundColor:l,children:" ".repeat(tn)},l)),Ht(qt,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as qe,jsxs as qm}from"react/jsx-runtime";var ty={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},ny=1,vi=4,Hm=5,oy=9;function ry(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function Wm(){let e=B(),{width:t}=j(),o=ne(),[n,r]=ya("30d"),[i,s]=ya("heatmap"),[a,c]=ya(null),l=ey(null),m=Q([n,e.revision],async()=>{let p=l.current;if(p!==null&&p.revision===e.revision){let b=await fa(n);return{summary:p.summary,stats:b,site:p.site}}let[d,f,S]=await Promise.all([Am(),fa(n),Ee(e.ctx.site)]);return l.current={revision:e.revision,summary:d,site:S},{summary:d,stats:f,site:S}});return Zb(()=>{m.phase==="ready"&&c(Wc({tokens:m.data.stats.totals.tokens,scope:"user",range:n}))},[m,n]),G(p=>{p==="r"&&e.reload(),p==="t"&&s(d=>d==="heatmap"?"chart":"heatmap")}),qe(X,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:qe(Fn,{flexDirection:"column",children:qe(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:p,stats:d,site:f})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:ae(p.balance,f.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Se(p.today.requests)},{label:"\u4ECA\u65E5 Token",value:Se(p.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ae(p.today.cost,f.quotaPerUsd)}],b=[{label:"\u8BF7\u6C42\u6570",value:Se(d.totals.requests)},{label:"Token \u603B\u91CF",value:ln(d.totals.tokens)},{label:"\u6D88\u8017",value:ae(d.totals.cost,f.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Se(d.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${d.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${d.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:ry(d.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:d.models[0]?.displayName??"\u2014"}],h=t-ce,y=_=>lt+_+en(S.length,h)+W+lt+_+ny+_+en(b.length,h)+W+lt+_,x=o-y(Fe)>=vi?Fe:0,k=o-y(x),g=W+lt+x+Hm,w=i==="chart"&&d.chart.points.length>0&&k>=g+vi,P=i==="heatmap"&&Um(h)&&k-(W+ba)>=vi,$=P?W+ba:0,U=w?Math.min(oy,Hm+Math.floor((k-g-vi)/2)):0,T=k-$-(w?W+lt+x+U:0),N=_=>`${(d.totals.tokens>0?_/d.totals.tokens*100:0).toFixed(1)}%`;return qm(Fn,{flexDirection:"column",children:[qe(te,{title:"\u6982\u89C8",width:t,gap:x,children:qe(it,{width:h,tiles:S})}),qe(Fn,{marginTop:1,flexDirection:"column",children:qm(te,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[qe(Hu,{options:Nm.map(_=>({value:_,label:ty[_]})),value:n,onChange:r}),qe(Fn,{marginTop:x,children:qe(it,{width:h,tiles:b})}),P&&qe(Fn,{marginTop:1,flexDirection:"column",children:qe(jm,{data:d.heatmap,funFact:a,width:h})})]})}),w&&qe(Fn,{marginTop:1,flexDirection:"column",children:qe(te,{title:"\u7528\u91CF\u8D8B\u52BF",note:"\u67F1\u8272\u7531\u4EAE\u81F3\u6697\u5BF9\u5E94\u7528\u91CF\u524D\u4E94\u7684\u6A21\u578B\uFF0C\u7070\u8272\u4E3A\u5176\u4ED6",width:t,gap:x,children:qe(Dm,{data:d.chart,order:d.models.map(_=>_.model),width:h,rows:U})})}),qe(Fn,{marginTop:1,flexDirection:"column",children:qe(te,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:d.models.length===0?qe(he,{tone:"info",width:h,title:"\u6682\u65E0\u7528\u91CF\u6570\u636E",detail:"\u8C03\u7528 API \u540E\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u6A21\u578B\u7684\u6BCF\u65E5 Token \u7528\u91CF"}):qe(Re,{retain:"list",items:d.models,width:h,height:T,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:_=>[_.displayName,ln(_.tokens),ln(_.inTokens),ln(_.outTokens),N(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as go,Text as xa}from"ink";import{useState as Km}from"react";import{z as sy}from"zod";import{z as Ke}from"zod";var iy=Ke.object({id:Ke.number().int(),name:Ke.string(),description:Ke.string(),multiplier:Ke.number()}),_i=()=>M(Ke.array(iy),"/groups"),Sa=Ke.object({id:Ke.number().int(),name:Ke.string(),keyPrefix:Ke.string(),keySuffix:Ke.string(),groupId:Ke.number().int().nullable(),groupName:Ke.string().nullable(),usedQuota:Ke.number(),quotaLimit:Ke.number().nullable()}),Ri=()=>M(Ke.array(Sa),"/tokens"),Gm=e=>M(Sa.extend({token:Ke.string()}),"/tokens",{method:"POST",json:e}),Pi=(e,t)=>M(Sa,`/tokens/${e}`,{method:"PATCH",json:t}),zm=e=>M(me,`/tokens/${e}`,{method:"DELETE"});import{jsx as We,jsxs as Ci}from"react/jsx-runtime";var Vm={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},Jm=sy.iso.date();function ay(e){let t=gs();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:un(t,-6),until:t}:e.range==="30d"?{since:un(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function Ym(e){let t=ay(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.token===""?{}:{token:e.token},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:hs(t.since).toISOString()},...t.until===void 0?{}:{until:hs(un(t.until,1)).toISOString()}}}var cy=Ze(ns,vr,"\u5168\u90E8\u72B6\u6001"),ly=[{value:"",label:"\u4E0D\u9650"},{value:"today",label:"\u4ECA\u5929"},{value:"7d",label:"\u8FD1 7 \u5929"},{value:"30d",label:"\u8FD1 30 \u5929"},{value:"custom",label:"\u81EA\u5B9A\u4E49\u8D77\u6B62"}];function uy({log:e,quotaPerUsd:t,width:o}){let n=o-ce,r=vr(e.status),i=Ve(r),s=e.status!=="anomaly"?null:e.totalTokens>0?"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\uFF0C\u8D39\u7528\u6309\u8BF7\u6C42\u4E0E\u54CD\u5E94\u7684\u6587\u672C\u91CF\u4F30\u7B97":"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\u4E14\u65E0\u6CD5\u4F30\u7B97\uFF0C\u672A\u8BA1\u8D39",a=[];e.cachedTokens>0&&a.push(["\u7F13\u5B58\u8BFB",Se(e.cachedTokens)]),e.cacheWriteTokens>0&&a.push(["\u7F13\u5B58\u5199",Se(e.cacheWriteTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Se(e.cacheWrite1hTokens)]),e.webSearchRequests>0&&a.push(["\u7F51\u9875\u641C\u7D22",`${Se(e.webSearchRequests)} \u6B21`]),e.imageGenerationCalls>0&&a.push(["\u56FE\u50CF\u751F\u6210",`${Se(e.imageGenerationCalls)} \u6B21`]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${Cn(e.firstByteMs)} s`]),e.tierOver!==null&&a.push(["\u8F93\u5165\u957F\u5EA6",fs(e.tierOver)]),e.paramMultipliers.length>0&&a.push(["\u547D\u4E2D\u53C2\u6570",Be(e.paramMultipliers.map(l=>`${l.value} \xD7${l.multiplier}`))]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u8BF7\u6C42 IP",e.ip],["\u534F\u8BAE",Vc(e.protocol)],["\u8BA1\u8D39\u6765\u6E90",e.subscriptionPlanName!==null?`\u8BA2\u9605 \xB7 ${e.subscriptionPlanName}`:"\u4F59\u989D"],["HTTP \u72B6\u6001",String(e.httpStatus)],...e.stopReason===null?[]:[["\u7ED3\u675F\u539F\u56E0",e.stopReason]]];return Ci(te,{title:e.modelDisplayName,note:V(e.createdAt),width:o,children:[Ci(xa,{wrap:"truncate",children:[We(xa,{color:i===void 0?u.mutedForeground:De[i],children:r.label}),We(xa,{color:u.faintForeground,children:` ${Be([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),We(go,{marginTop:1,children:We(it,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Se(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Se(e.completionTokens)},{label:"\u6D88\u8017",value:no(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${Cn(e.latencyMs)} s`},{label:"\u6863\u4F4D",value:Mo(e.tierOver)},{label:"\u5206\u7EC4\u500D\u7387",value:`\xD7${e.multiplier}`},{label:"\u53C2\u6570\u500D\u7387",value:`\xD7${Dc(e.paramMultipliers)}`},{label:"\u603B\u500D\u7387",value:`\xD7${Bc(e.multiplier,e.paramMultipliers)}`}]})}),s!==null&&We(go,{marginTop:1,children:We(he,{tone:"warn",width:n,title:s})}),We(go,{marginTop:1,children:We(Ne,{width:n,items:[...a,...c]})})]})}function Xm(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Km({name:"list"}),[i,s]=Km(Vm),{error:a,fail:c,reset:l}=de(),m=Q([e.revision],async()=>{let[h,y,x]=await Promise.all([_i(),Ri(),Ee(e.ctx.site)]);return{groups:h,tokens:y,site:x}}),p=bn([e.revision,JSON.stringify(i)],h=>Im({page:h,...Ym(i)}),{retain:"page"}),d=Q([e.revision,JSON.stringify(i)],()=>Lm(Ym(i))),f=n.name==="list";G((h,y)=>{f&&(h==="r"?e.reload():h==="f"?(l(),r({name:"filter"})):y.leftArrow?p.go(-1):y.rightArrow&&p.go(1))});let S=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},b=JSON.stringify(i)!==JSON.stringify(Vm);return We(X,{hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:We(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:h,tokens:y,site:x})=>{if(n.name==="filter")return We(z,{title:"\u7B5B\u9009\u65E5\u5FD7",width:t,submitLabel:"\u67E5\u8BE2",error:a,fields:[{kind:"text",name:"model",label:"\u6A21\u578B",initial:i.model,placeholder:"\u641C\u7D22\u6A21\u578B ID \u6216\u540D\u79F0"},{kind:"text",name:"requestId",label:"\u8BF7\u6C42 ID",initial:i.requestId,placeholder:"\u641C\u7D22\u8BF7\u6C42 ID"},{kind:"select",name:"token",label:"\u4EE4\u724C",options:[{value:"",label:"\u5168\u90E8\u4EE4\u724C"},...[...new Set(y.map(g=>g.name))].map(g=>({value:g,label:g}))],initial:i.token},{kind:"select",name:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...h.map(g=>({value:g.name,label:g.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:cy,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:ly,initial:i.range},{kind:"text",name:"since",label:"\u5F00\u59CB\u65E5\u671F",initial:i.since,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"},{kind:"text",name:"until",label:"\u7ED3\u675F\u65E5\u671F",initial:i.until,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"}],onCancel:S,onSubmit:g=>{let w=g.range??"",P=(g.since??"").trim(),$=(g.until??"").trim();if(w==="custom"&&(P!==""&&!Jm.safeParse(P).success||$!==""&&!Jm.safeParse($).success)){c("\u65E5\u671F\u65E0\u6548");return}s({model:g.model??"",requestId:g.requestId??"",token:g.token??"",group:g.group??"",status:g.status??"",range:w,since:P,until:$}),p.reset(),r({name:"list"})}});if(n.name==="detail")return We(uy,{log:n.log,quotaPerUsd:x.quotaPerUsd,width:t});let k=en(4,t);return Ci(go,{flexDirection:"column",children:[We(go,{height:k+1,flexDirection:"column",overflow:"hidden",children:We(ee,{state:d,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:g=>We(it,{width:t,tiles:[{label:"\u6D88\u8017",value:ae(g.quotaCost,x.quotaPerUsd)},{label:"RPM",value:Se(g.rpm)},{label:"TPM",value:Se(g.tpm)},{label:"\u5E76\u53D1",value:Se(g.concurrency)}]})})}),We(ee,{state:p.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:g=>Ci(go,{flexDirection:"column",children:[We(Re,{retain:"list",items:g.items,width:t,height:Math.max(3,o-2-k),columns:[{label:"\u65F6\u95F4"},{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u6D88\u8017",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:w=>[V(w.createdAt),w.modelDisplayName,Se(w.promptTokens),Se(w.completionTokens),no(w.quotaCost,x.quotaPerUsd),Yt(vr(w.status))],onOpen:w=>r({name:"detail",log:w}),emptyLabel:b?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:b?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),We(yn,{page:p.page,pages:p.pages,total:p.total,width:t})]})})]})}})})}import{Box as nn,Text as Un}from"ink";import{useState as hy}from"react";import{z as le}from"zod";var my=ps.extend({id:le.number().int(),model:le.string(),displayName:le.string(),rules:Ic}),dy=le.object({quotaPerUsd:le.number(),minTopupCny:le.number(),models:le.array(my)});function Ei(e){return Nt(dy,`${e}/api/pricing`)}var py=le.object({cnyPerUsd:le.number(),groups:le.array(le.object({id:le.number().int(),name:le.string(),description:le.string(),multiplier:le.number()})),stats:le.object({requests:le.number(),errors:le.number(),latencyP50Ms:le.number().nullable(),firstByteP50Ms:le.number().nullable()}),heartbeat:le.object({groups:le.array(le.object({id:le.number().int(),name:le.string(),minutes:le.array(le.object({requests:le.number(),errors:le.number()}))}))})});function Qm(e,t){return Nt(py,`${e}/api/pricing/${t}`)}var fy=le.object({data:le.array(le.object({id:le.string()}))});async function Zm(e,t,o){return(await Nt(fy,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}var ed=()=>M(Uc,"/provider-status");import{Text as ho}from"ink";import{jsx as Ai,jsxs as td}from"react/jsx-runtime";var gy=` ${Z.bullet} `,nd=1;function od({providers:e}){return td(ho,{wrap:"truncate",children:[Ai(ho,{color:u.faintForeground,children:"\u5B98\u65B9\u72B6\u6001"}),e.map(t=>{let o=Hc(t);return td(ho,{children:[Ai(ho,{color:u.faintForeground,children:gy}),Ai(ho,{color:u.foreground,children:`${Jc(t.provider)} `}),Ai(ho,{color:De[o.tone],children:o.label})]},t.provider)})]})}import{jsx as ge,jsxs as sr}from"react/jsx-runtime";var by=4,yy=1+Fe,Sy=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function xy({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=Sy(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return ge(Un,{wrap:"truncate",children:n.map((r,i)=>ge(Un,{color:r.color,children:Z.barFilled.repeat(r.count)},i))})}function Ty({price:e,width:t,contentRows:o}){let n=B(),r=Q([e.id,n.revision],()=>Qm(n.ctx.site,e.id)),i=Oc(e,e.rules),s=i.length>1,a=e.rules.filter(Lc),c=t-ce,l=1+i.length,m=1+a.length;return ge(ee,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:p=>{let d=p.stats,f=[{label:"\u53EF\u7528\u7387",value:d.requests>0?`${((d.requests-d.errors)/d.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:Se(d.requests)},{label:"\u5EF6\u8FDF P50",value:d.latencyP50Ms!==null?`${Cn(d.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:d.firstByteP50Ms!==null?`${Cn(d.firstByteP50Ms)} s`:"\u2014"}],S=a.length>0?W+ut+m:0,b=yy+ut+en(f.length,c,2)+W+ut+l+S+W+ut,h=p.heartbeat.groups.length,y=o-b-by-W-ut,x=Math.max(0,Math.floor(y/2));x<h&&(x=Math.max(0,Math.floor((y-1)/2))),x=Math.min(h,x);let k=x>0?W+ut+x*2+(x<h?1:0):0,g=Math.max(1,o-b-k);return sr(nn,{flexDirection:"column",children:[ge(nn,{marginBottom:Fe,children:sr(Un,{wrap:"truncate",children:[ge(Un,{bold:!0,color:u.foreground,children:e.displayName}),ge(Un,{color:u.faintForeground,children:` ${e.model}`})]})}),ge(te,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:ge(it,{width:c,tiles:f,maxPerRow:2})}),x>0&&ge(nn,{marginTop:1,flexDirection:"column",children:sr(te,{title:"\u53EF\u7528\u6027",note:"\u6700\u8FD1\u4E00\u6BB5\u65F6\u95F4\u5404\u5206\u7EC4\u7684\u8C03\u7528\u5065\u5EB7\u72B6\u51B5",width:t,children:[p.heartbeat.groups.slice(0,x).map(w=>sr(nn,{flexDirection:"column",children:[ge(Un,{wrap:"truncate",color:u.foreground,children:w.name}),ge(xy,{minutes:w.minutes,width:c})]},w.id)),x<h&&ge(Un,{color:u.faintForeground,children:`\u5176\u4F59 ${h-x} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),ge(nn,{marginTop:1,flexDirection:"column",children:ge(te,{title:"\u6A21\u578B\u4EF7\u683C",note:"\u6BCF\u767E\u4E07 Token \u7684\u7F8E\u5143\u6807\u4EF7",width:t,children:ge(Re,{items:i,width:c,height:l,columns:[{label:"\u6863\u4F4D"},...s?[{label:"\u8F93\u5165\u957F\u5EA6"}]:[],{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:w=>[w.name,...w.range===null?[]:[w.range],$t(w.price.inputPricePerMillionTokens,"-"),$t(w.price.outputPricePerMillionTokens,"-"),$t(w.price.cachedInputPricePerMillionTokens,"-"),$t(w.price.cacheWritePricePerMillionTokens,"-")]})})}),a.length>0&&ge(nn,{marginTop:1,flexDirection:"column",children:ge(te,{title:"\u8BF7\u6C42\u53C2\u6570\u500D\u7387",note:"\u547D\u4E2D\u65F6 Token \u8D39\u7528\u4E58\u4EE5\u500D\u7387\uFF0C\u591A\u6761\u547D\u4E2D\u4F9D\u6B21\u76F8\u4E58",width:t,children:ge(Re,{items:a,width:c,height:m,columns:[{label:"\u53C2\u6570\u540D",shrink:!0},{label:"\u53C2\u6570\u503C",shrink:!0},{label:"\u500D\u7387",align:"right"}],row:w=>[w.param,w.value,`\xD7${w.multiplier}`]})})}),ge(nn,{marginTop:1,flexDirection:"column",children:ge(te,{title:"\u5206\u7EC4\u4EF7\u683C",note:"\u500D\u7387\u968F\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u800C\u5B9A\uFF0C\u5355\u4EF7\u4E3A 1 \u7F8E\u5143\u6807\u4EF7\u7528\u91CF\u7684\u4EBA\u6C11\u5E01\u4EF7\u683C",width:t,children:p.groups.length===0?ge(he,{tone:"info",width:c,title:"\u6682\u65E0\u53EF\u7528\u5206\u7EC4",detail:"\u5F53\u524D\u6CA1\u6709\u542F\u7528\u7684\u6E20\u9053\u63D0\u4F9B\u8BE5\u6A21\u578B"}):ge(Re,{items:p.groups,width:c,height:g,columns:[{label:"\u5206\u7EC4",shrink:!0},{label:"\u8BF4\u660E",shrink:!0},{label:"\u500D\u7387",align:"right"},{label:"\u5355\u4EF7",align:"right"}],row:w=>[w.name,w.description,`\xD7${w.multiplier}`,`\xA5${(p.cnyPerUsd*w.multiplier).toFixed(2)}`]})})})]})}})}function rd(){let e=B(),{width:t}=j(),o=ne(),[n,r]=hy({name:"list"}),i=Q([e.revision],async()=>(await Ei(e.ctx.site)).models),s=Q([e.revision],ed);G(c=>{c==="r"&&e.reload()});let a=()=>{n.name==="list"?e.pop():r({name:"list"})};return ge(X,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","r \u5237\u65B0","Esc \u8FD4\u56DE"],onEscape:a,children:ge(ee,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:c=>{if(c.length===0)return ge(he,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"});if(n.name==="detail")return ge(Ty,{price:n.price,width:t,contentRows:o});let l=s.phase==="ready"?jc(s.data.providers):[],m=l.length>0?nd+W:0;return sr(nn,{flexDirection:"column",children:[l.length>0&&ge(nn,{marginBottom:W,children:ge(od,{providers:l})}),ge(Re,{retain:"list",items:c,width:t,height:o-m,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:p=>[p.displayName,$t(p.inputPricePerMillionTokens,"-"),$t(p.outputPricePerMillionTokens,"-"),$t(p.cachedInputPricePerMillionTokens,"-"),$t(p.cacheWritePricePerMillionTokens,"-")],searchOf:p=>`${p.displayName} ${p.model}`,onOpen:p=>r({name:"detail",price:p}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})]})}})})}import{Box as jn,Text as Wd}from"ink";import{useState as Bi}from"react";function id(e,t){let o=e.line??t.apiLines[0];if(o===void 0)throw new O("\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF",{hint:"\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u5728\u8BBE\u7F6E\u91CC\u6DFB\u52A0\u63A5\u5165\u7EBF\u8DEF"});return o}async function sd(e,t){let o=await Ee(e.site);return Zm(id(Nn(),o).url,t)}async function ad(e,t,o){let n=await Ee(e.site),r=id(Nn(),n).url;return{input:{siteName:n.siteName,baseUrl:t.relayUrl(r),apiKey:o},at:t.resolveDir()}}async function cd(e,t,o){let{input:n,at:r}=await ad(e,t,o);t.apply(n,r)}async function ld(e,t,o,n,r){let{input:i,at:s}=await ad(e,t,o);t.apply({...i,model:n,models:r},s)}import{homedir as hd}from"os";import{join as Ii,resolve as Ry}from"path";import wy from"json5";import{applyEdits as ky,modify as vy,parse as _y}from"jsonc-parser";function ud(e,t){if(typeof e!="object"||e===null||Array.isArray(e))throw new O(`${t} \u7684\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);return e}function md(e){let t=[],o=_y(e,t,{allowTrailingComma:!0});return t.length>0?null:o}function dd(e,t){let o=md(e);if(o!==null)return{root:ud(o,t),jsonc:!0};try{return{root:ud(wy.parse(e),t),jsonc:!1}}catch(n){throw new O(`${t} \u4E0D\u662F\u5408\u6CD5 JSON\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:n})}}function wn(e,t){let o=e;for(let n of t){if(typeof o!="object"||o===null||Array.isArray(o))return;o=o[n]}return o}function ar(e){let t=st(e);return t===null?null:dd(t,e).root}function on(e,t){let o=ar(e),n=o===null?void 0:wn(o,t);return typeof n=="string"?n:null}function Ni(e,t){let o=ar(e);return o!==null&&wn(o,t)!==void 0}function pt(e,t){let o=st(e)??"{}",n=o.includes(`\r
2
+ import{once as HC}from"events";import{createInterface as qC}from"readline/promises";import{parseArgs as GC}from"util";var km={name:"@codeflow-ai/cli",version:"1.29.0",type:"module",description:"CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF\uFF1A\u4E00\u952E\u914D\u7F6E AI \u5BA2\u6237\u7AEF",keywords:["codeflow","claude-code","codex","openclaw","hermes-agent","opencode","pi-coding-agent","cli"],license:"UNLICENSED",engines:{node:">=22"},bin:{codeflow:"dist/cli.js"},files:["dist"],publishConfig:{access:"public"},scripts:{dev:"tsx src/cli.ts",build:"tsup",typecheck:"tsc --noEmit"},dependencies:{"@decimalturn/toml-patch":"3.0.4",ink:"7.1.1",json5:"2.2.3","jsonc-parser":"3.3.1",marked:"18.0.9",qrcode:"1.5.4",react:"19.2.0","smol-toml":"1.9.0","string-width":"8.2.0",yaml:"2.9.1",zod:"4.4.3"},devDependencies:{"@codeflow/shared":"workspace:*","@types/node":"25.9.1","@types/qrcode":"1.5.6","@types/react":"19.2.2",tsup:"8.5.1",tsx:"4.22.3",typescript:"5.9.3"}};var zt="codeflow",Vt=km.version,vm="https://codeflow.asia",Bo="@codeflow-ai/cli",Cr=0,Fo=1,Wa=2,ro=3,Rm=4;import{randomBytes as sS}from"crypto";import{mkdirSync as Em,readFileSync as aS,rmSync as Mm,statSync as cS,writeFileSync as lS}from"fs";import{join as Im}from"path";import{setTimeout as mS}from"timers/promises";import{z as rn}from"zod";var j=class extends Error{exitCode;hint;constructor(t,n={}){super(t,{cause:n.cause}),this.name="CliError",this.exitCode=n.exitCode??Fo,this.hint=n.hint}};function xe(e){return e instanceof Error?e.message:String(e)}import{chmodSync as Zb,existsSync as eS,mkdirSync as tS,readFileSync as nS,writeFileSync as oS}from"fs";import{dirname as rS}from"path";function Nt(e){return eS(e)?nS(e,"utf8"):null}function wn(e,t,n){tS(rS(e),{recursive:!0,mode:448});try{oS(e,t,{mode:n}),Zb(e,n)}catch(o){throw new j(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${xe(o)}`,{cause:o})}}function Cm(e,t,n){wn(e,`${JSON.stringify(t,null,2)}
3
+ `,n)}function Ai(e,t,n,o,r){let i=null,s=()=>{if(i)return i;let a=n(),c=Nt(a);if(c===null)return i=structuredClone(t),i;let l;try{l=JSON.parse(c)}catch(m){throw new j(`${o} ${a} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${r}`,{cause:m})}let u=e.safeParse(l);if(!u.success)throw new j(`${o} ${a} \u7ED3\u6784\u4E0D\u7B26\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${r}`);return i=u.data,i};return{load:s,reload:()=>(i=null,s()),update:a=>{let c=structuredClone(s());return a(c),Cm(n(),c,384),i=c,c}}}import{homedir as iS}from"os";import{join as Uo}from"path";function kn(){let e=process.env.XDG_CONFIG_HOME;if(e)return Uo(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return Uo(t,"codeflow")}return Uo(iS(),".config","codeflow")}var _m=()=>Uo(kn(),"config.json"),Pm=()=>Uo(kn(),"credentials.json"),Am=()=>Uo(kn(),"refresh.lock");var uS=rn.object({refreshCookie:rn.string(),accessToken:rn.string(),accessExpiresAt:rn.number(),username:rn.string(),email:rn.string(),site:rn.string()}),dS=rn.object({site:rn.string(),cookie:rn.string()}),pS=rn.object({session:uS.nullable(),device:dS.nullable()}),za=Ai(pS,{session:null,device:null},Pm,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Lt=za.load,Nm=za.reload,Va=za.update;function Lm(){let{session:e}=Lt();if(!e)throw new j("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:ro});return e}var fS=6e4,gS=75e3,hS=120;function yS(e,t){try{Em(e)}catch{try{Date.now()-cS(e).mtimeMs>fS&&Mm(e,{recursive:!0,force:!0})}catch{}return!1}return lS(Im(e,"owner"),t),!0}function bS(e,t){let n;try{n=aS(Im(e,"owner"),"utf8")}catch{return}n===t&&Mm(e,{recursive:!0,force:!0})}async function Om(e){let t=Am(),n=sS(16).toString("hex");Em(kn(),{recursive:!0,mode:448});let o=Date.now()+gS;for(;!yS(t,n);){if(Date.now()>o)throw new j(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${zt} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await mS(hS)}try{return await e()}finally{bS(t,n)}}function SS(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Lt().session;return t?t.site:vm}function Dm(){return{site:SS()}}function io(e,t,n){if(!e.isTTY)return n;let o=Number.parseInt(t.slice(1),16);return`\x1B[38;2;${o>>16&255};${o>>8&255};${o&255}m${n}\x1B[39m`}import{existsSync as xx,rmSync as Tx}from"fs";import{z as qe}from"zod";var xS=["active","disabled"],__=qe.enum(xS),Ka=["subscription_first","balance_first","subscription_only","balance_only"],Ya=qe.enum(Ka),TS=["openai","anthropic"],$m=qe.enum(TS),wS=["openai-chat","openai-responses","anthropic-messages"],Bm=qe.enum(wS);var _r=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],Fm=qe.enum(_r),kS=["recharge","subscription"],Ja=qe.enum(kS),vS=["requested","pending","succeeded","failed","rejected","canceled"],Um=qe.enum(vS),Xa=["pending","issued","rejected"],jm=qe.enum(Xa),RS=["special","general"],Qa=qe.enum(RS),CS=["info","success","warning","error"],Hm=qe.enum(CS),_S=["terms","privacy"],P_=qe.enum(_S),Za=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],qm=qe.enum(Za),PS=["usage_log","order","invitation","admin"],Gm=qe.enum(PS),ec=["first_inviter","first_invitee","subsequent_inviter"],Wm=qe.enum(ec),tc=["success","error","canceled","anomaly"],zm=qe.enum(tc),nc=["open","replied","closed"],Vm=qe.enum(nc),oc=["billing","technical","account","other"],Km=qe.enum(oc),rc=["low","normal","high"],Ym=qe.enum(rc),AS=["user","admin"],Jm=qe.enum(AS),ES=["pending","published","rejected","removed"],Pr=qe.enum(ES),ic=["activity","published"],Xm=qe.enum(ic),Ei=["spam","abuse","explicit","illegal","privacy","other"],Qm=qe.enum(Ei),MS=["none","minor","major","critical"],Zm=qe.enum(MS);import{z as jo}from"zod";var IS=["internal_error","validation_error","not_found","conflict","rate_limited","forbidden","unauthorized","invalid_credentials","password_incorrect","account_disabled","email_already_registered","username_taken","verification_code_invalid","verification_code_expired","token_expired","token_reuse_detected","token_limit_exceeded","totp_invalid","totp_replayed","totp_setup_expired","totp_not_enabled","login_ticket_invalid","recovery_code_invalid","passkey_registration_failed","passkey_verification_failed","passkey_not_found","passkey_origin_not_allowed","insufficient_quota","no_available_channel","model_not_found","model_not_in_group","token_group_missing","token_quota_exceeded","upstream_error","order_not_found","order_not_payable","payment_verify_failed","payment_precreate_failed","amount_mismatch","refund_not_allowed","refund_amount_invalid","refund_insufficient_balance","refund_failed","refund_pending","refund_in_progress","refund_blocked_by_pending_order","refund_order_superseded","refund_request_not_found","refund_nothing_refundable","subscription_limit_reached","no_subscription_coverage","subscription_revoked","plan_disabled","order_already_invoiced","order_not_eligible","order_invoiced","invoice_profile_exists","invite_code_invalid","ticket_closed","ticket_limit_exceeded","attachment_storage_unconfigured","attachment_too_large","attachment_image_too_large","attachment_invalid","attachment_staging_limit_exceeded","docs_not_configured","docs_source_unavailable","docs_page_not_found","provider_status_unavailable","community_muted","community_state_changed","community_category_missing"],NS=jo.enum(IS),eu=jo.object({error:jo.object({code:NS,message:jo.string(),details:jo.unknown().optional(),requestId:jo.string().optional()})});var tu={internal_error:"\u670D\u52A1\u6682\u65F6\u51FA\u73B0\u95EE\u9898\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",validation_error:"\u63D0\u4EA4\u7684\u5185\u5BB9\u6709\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5",not_found:"\u8BBF\u95EE\u7684\u5185\u5BB9\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664",conflict:"\u5DF2\u5B58\u5728\u76F8\u540C\u7684\u8BB0\u5F55\uFF0C\u8BF7\u52FF\u91CD\u590D\u63D0\u4EA4",rate_limited:"\u64CD\u4F5C\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",forbidden:"\u6CA1\u6709\u6743\u9650\u6267\u884C\u6B64\u64CD\u4F5C",unauthorized:"\u8BF7\u5148\u767B\u5F55",invalid_credentials:"\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u6B63\u786E",password_incorrect:"\u5F53\u524D\u5BC6\u7801\u4E0D\u6B63\u786E",account_disabled:"\u8D26\u6237\u5DF2\u88AB\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",email_already_registered:"\u8BE5\u90AE\u7BB1\u5DF2\u88AB\u6CE8\u518C",username_taken:"\u8BE5\u7528\u6237\u540D\u5DF2\u88AB\u4F7F\u7528",verification_code_invalid:"\u9A8C\u8BC1\u7801\u4E0D\u6B63\u786E",verification_code_expired:"\u9A8C\u8BC1\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u83B7\u53D6",token_expired:"\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",token_reuse_detected:"\u767B\u5F55\u72B6\u6001\u5F02\u5E38\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",token_limit_exceeded:"\u4EE4\u724C\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u5220\u9664\u4E0D\u518D\u4F7F\u7528\u7684\u4EE4\u724C",totp_invalid:"\u52A8\u6001\u9A8C\u8BC1\u7801\u4E0D\u6B63\u786E\uFF0C\u8BF7\u91CD\u8BD5",totp_replayed:"\u8BE5\u9A8C\u8BC1\u7801\u521A\u521A\u5DF2\u88AB\u4F7F\u7528\uFF0C\u8BF7\u7B49\u5F85\u9A8C\u8BC1\u5668\u663E\u793A\u4E0B\u4E00\u4E2A\u9A8C\u8BC1\u7801\u540E\u518D\u8F93\u5165",totp_setup_expired:"\u7ED1\u5B9A\u4F1A\u8BDD\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u5F00\u59CB\u7ED1\u5B9A",totp_not_enabled:"\u5C1A\u672A\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",login_ticket_invalid:"\u767B\u5F55\u9A8C\u8BC1\u5DF2\u8FC7\u671F\u6216\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",recovery_code_invalid:"\u6062\u590D\u7801\u4E0D\u6B63\u786E\u6216\u5DF2\u88AB\u4F7F\u7528",passkey_registration_failed:"Passkey \u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",passkey_verification_failed:"Passkey \u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5",passkey_not_found:"\u8BE5 Passkey \u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664",passkey_origin_not_allowed:"\u5F53\u524D\u8BBF\u95EE\u5730\u5740\u672A\u914D\u7F6E\u4E3A\u7AD9\u70B9\u5730\u5740\uFF0C\u65E0\u6CD5\u4F7F\u7528 Passkey",insufficient_quota:"\u989D\u5EA6\u4E0D\u8DB3\uFF0C\u8BF7\u5145\u503C\u540E\u518D\u8BD5",no_available_channel:"\u4E0A\u6E38\u670D\u52A1\u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",model_not_found:"\u8BE5\u6A21\u578B\u4E0D\u5B58\u5728",model_not_in_group:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u4E0D\u652F\u6301\u8BE5\u6A21\u578B\uFF0C\u8BF7\u66F4\u6362\u4EE4\u724C\u5206\u7EC4\u6216\u6539\u7528\u5206\u7EC4\u652F\u6301\u7684\u6A21\u578B",token_group_missing:"\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u5DF2\u88AB\u5220\u9664\uFF0C\u8BF7\u7F16\u8F91\u4EE4\u724C\u91CD\u65B0\u9009\u62E9\u5206\u7EC4",token_quota_exceeded:"\u8BE5\u4EE4\u724C\u7684\u6D88\u8D39\u5DF2\u8FBE\u8D39\u7528\u9650\u5236\uFF0C\u8BF7\u8C03\u9AD8\u6216\u6E05\u9664\u9650\u5236\u540E\u518D\u4F7F\u7528",upstream_error:"\u4E0A\u6E38\u670D\u52A1\u8FD4\u56DE\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",order_not_found:"\u8BA2\u5355\u4E0D\u5B58\u5728",order_not_payable:"\u8BA2\u5355\u72B6\u6001\u5DF2\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u518D\u8BD5",payment_verify_failed:"\u652F\u4ED8\u7ED3\u679C\u786E\u8BA4\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",payment_precreate_failed:"\u53D1\u8D77\u652F\u4ED8\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",amount_mismatch:"\u652F\u4ED8\u91D1\u989D\u4E0E\u8BA2\u5355\u4E0D\u7B26\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458",refund_not_allowed:"\u8BE5\u8BA2\u5355\u5F53\u524D\u4E0D\u53EF\u9000\u6B3E",refund_amount_invalid:"\u9000\u6B3E\u91D1\u989D\u4E0D\u6B63\u786E\u6216\u8D85\u8FC7\u53EF\u9000\u4F59\u989D",refund_insufficient_balance:"\u53EF\u7528\u989D\u5EA6\u4E0D\u8DB3\u4EE5\u6263\u56DE\u672C\u6B21\u9000\u6B3E\uFF08\u5DF2\u6D88\u8017\u90E8\u5206\u5BF9\u5E94\u7684\u73B0\u91D1\u4E0D\u53EF\u9000\uFF09",refund_failed:"\u652F\u4ED8\u5B9D\u9000\u6B3E\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u68C0\u67E5\u652F\u4ED8\u5B9D\u5546\u6237\u540E\u53F0",refund_pending:"\u9000\u6B3E\u7ED3\u679C\u5F85\u786E\u8BA4\uFF0C\u8BF7\u7A0D\u540E\u67E5\u770B\u9000\u6B3E\u8BB0\u5F55",refund_in_progress:"\u8BE5\u8BA2\u5355\u6216\u8BA2\u9605\u6709\u9000\u6B3E\u6B63\u5728\u5904\u7406\u4E2D\uFF0C\u8BF7\u5F85\u5176\u5B8C\u6210\u540E\u518D\u64CD\u4F5C",refund_blocked_by_pending_order:"\u8BE5\u8BA2\u9605\u6709\u5F85\u652F\u4ED8\u7684\u7EED\u8D39\u8BA2\u5355\uFF0C\u8BF7\u5F85\u5176\u652F\u4ED8\u6216\u8D85\u65F6\u540E\u518D\u9000\u6B3E",refund_order_superseded:"\u5B58\u5728\u66F4\u665A\u5165\u8D26\u7684\u8BA2\u5355\uFF0C\u8BF7\u6309\u4ECE\u65B0\u5230\u65E7\u7684\u987A\u5E8F\u9000\u6B3E",refund_request_not_found:"\u9000\u6B3E\u7533\u8BF7\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5904\u7406\uFF0C\u8BF7\u5237\u65B0\u540E\u67E5\u770B",refund_nothing_refundable:"\u8BE5\u8BA2\u9605\u8BA2\u5355\u6309\u9650\u989D\u5468\u671F\u8BA1\u8D39\u540E\u5DF2\u65E0\u53EF\u9000\u91D1\u989D",subscription_limit_reached:"\u8BA2\u9605\u989D\u5EA6\u5DF2\u7528\u5C3D\uFF0C\u8BF7\u7B49\u5F85\u7A97\u53E3\u91CD\u7F6E",no_subscription_coverage:"\u5F53\u524D\u5206\u7EC4\u6CA1\u6709\u53EF\u7528\u7684\u8BA2\u9605\uFF0C\u8BF7\u8BA2\u9605\u5957\u9910\u6216\u8C03\u6574\u6263\u8D39\u65B9\u5F0F",subscription_revoked:"\u8BE5\u8BA2\u9605\u5DF2\u88AB\u4F5C\u5E9F",plan_disabled:"\u8BE5\u5957\u9910\u5DF2\u505C\u552E",order_already_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u7533\u8BF7\u8FC7\u53D1\u7968",order_not_eligible:"\u6240\u9009\u8BA2\u5355\u4E0D\u7B26\u5408\u5F00\u7968\u6761\u4EF6",order_invoiced:"\u8BE5\u8BA2\u5355\u5DF2\u5F00\u7968\u6216\u6709\u672A\u5904\u7406\u7684\u5F00\u7968\u7533\u8BF7\uFF0C\u65E0\u6CD5\u9000\u6B3E",invoice_profile_exists:"\u5DF2\u5B58\u5728\u76F8\u540C\u7684\u5E38\u7528\u5F00\u7968\u4FE1\u606F",invite_code_invalid:"\u9080\u8BF7\u7801\u65E0\u6548",ticket_closed:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u8BF7\u5148\u91CD\u65B0\u6253\u5F00\u540E\u518D\u56DE\u590D",ticket_limit_exceeded:"\u672A\u5173\u95ED\u7684\u5DE5\u5355\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u5173\u95ED\u5DF2\u89E3\u51B3\u7684\u5DE5\u5355",attachment_storage_unconfigured:"\u5C1A\u672A\u914D\u7F6E\u9644\u4EF6\u5B58\u50A8",attachment_too_large:"\u9644\u4EF6\u5927\u5C0F\u8D85\u8FC7\u9650\u5236",attachment_image_too_large:"\u56FE\u7247\u5C3A\u5BF8\u6216\u5E27\u6570\u8D85\u8FC7\u9650\u5236",attachment_invalid:"\u9644\u4EF6\u65E0\u6548\u6216\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20",attachment_staging_limit_exceeded:"\u5F85\u63D0\u4EA4\u7684\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u5148\u63D0\u4EA4\u73B0\u6709\u9644\u4EF6",docs_not_configured:"\u6587\u6863\u4E2D\u5FC3\u672A\u542F\u7528",docs_source_unavailable:"\u6587\u6863\u5185\u5BB9\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",docs_page_not_found:"\u8BE5\u6587\u6863\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664",provider_status_unavailable:"\u5B98\u65B9\u670D\u52A1\u72B6\u6001\u6682\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",community_muted:"\u8D26\u53F7\u5904\u4E8E\u7981\u8A00\u671F\u95F4\uFF0C\u6682\u65F6\u65E0\u6CD5\u53D1\u5E16\u3001\u8BC4\u8BBA\u3001\u7F16\u8F91\u3001\u4E0A\u4F20\u6216\u66F4\u6362\u5934\u50CF\u4E0E\u7528\u6237\u540D",community_state_changed:"\u5185\u5BB9\u72B6\u6001\u5DF2\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5",community_category_missing:"\u6240\u9009\u677F\u5757\u5DF2\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9"};import{z as Ho}from"zod";var LS=Ho.string().trim().min(1),sc=LS.pipe(Ho.url()),OS=Ho.object({name:Ho.string().trim().min(1),description:Ho.string().trim().min(1),url:sc}),L_=Ho.array(OS);function nu(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function qo(e){if(!e)return"\u672A\u77E5\u8BBE\u5907";let t=e.type==="cli"?e.clientVersion:e.clientVersion?.split(".")[0],o=[e.client?t?`${e.client} ${t}`:e.client:null,e.os].filter(r=>r!==null);return o.length>0?o.join(" \xB7 "):"\u672A\u77E5\u8BBE\u5907"}import{z as dn}from"zod";var ac=1e8;var B_=dn.object({id:dn.coerce.number().int().positive()}),ou=100,ru=dn.object({page:dn.coerce.number().int().min(1)});function lt(e){return dn.object({items:dn.array(e),total:dn.number()})}var se=dn.object({ok:dn.literal(!0)}),iu=(e=dn.string().trim())=>e.nullable().optional().transform(t=>t==null||t.length===0?null:t);import{z as ae}from"zod";var so=ae.email().max(254).toLowerCase(),Ot=8,Ar=ae.string().min(Ot).max(128),Er=ae.string().min(1).max(128),Kt=32,cc=ae.string().trim().min(1).max(Kt),lc=ae.string().trim().min(1).max(254),j_=ae.object({email:so}),H_=ae.object({username:cc,email:so,password:Ar,code:ae.string().min(4).max(8),inviteCode:ae.string().trim().min(1).max(32).optional()}),q_=ae.object({account:lc,password:Er}),G_=ae.object({email:so,code:ae.string().min(4).max(8),password:Ar}),W_=ae.object({oldPassword:Er,newPassword:Ar}),z_=ae.object({email:so}),V_=ae.object({email:so,code:ae.string().min(4).max(8),password:Er}),su=ae.object({username:ae.string(),email:ae.string(),avatarUrl:ae.string().nullable()}),Go=ae.object({accessToken:ae.string(),user:su}),au=ae.discriminatedUnion("status",[Go.extend({status:ae.literal("ok")}),ae.object({status:ae.literal("totp_required"),ticket:ae.string()})]),cu=ae.object({user:su}),mc=ae.object({client:ae.string().nullable(),clientVersion:ae.string().nullable(),os:ae.string().nullable(),osVersion:ae.string().nullable(),type:ae.string().nullable(),vendor:ae.string().nullable(),model:ae.string().nullable()}),DS=ae.object({id:ae.number().int(),ip:ae.string(),userAgent:ae.string().nullable(),device:mc.nullable(),loginAt:ae.string(),lastActiveAt:ae.string(),expiresAt:ae.string(),current:ae.boolean()}),lu=ae.object({sessions:ae.array(DS)});import{z as ke}from"zod";var Wo=ke.string().trim().length(6),$S=ke.string().trim().min(10).max(20),Mi=ke.string().trim().min(1).max(64),Ii=ke.record(ke.string(),ke.unknown()),J_=ke.object({ticket:ke.string().min(1),code:Wo}),X_=ke.object({ticket:ke.string().min(1),code:$S}),Q_=ke.object({code:Wo.optional()}),Z_=ke.object({code:Wo}),mu=ke.object({secret:ke.string(),otpauthUri:ke.string()}),uc=ke.object({recoveryCodes:ke.array(ke.string())}),BS=ke.object({id:ke.number().int(),name:ke.string(),createdAt:ke.string(),lastUsedAt:ke.string().nullable()}),uu=ke.object({totp:ke.object({enabled:ke.boolean(),enabledAt:ke.string().nullable(),recoveryCodesRemaining:ke.number().int()}),passkeys:ke.array(BS)}),e0=ke.object({name:Mi,response:Ii}),t0=ke.object({name:Mi}),n0=ke.object({response:Ii});import{z as Le}from"zod";var a0=Le.object({account:lc,password:Er}),FS=Le.object({totp:Le.boolean(),passkeys:Le.boolean()}),c0=Le.discriminatedUnion("status",[Le.object({status:Le.literal("totp_required"),ticket:Le.string()}),Le.object({status:Le.literal("setup_required"),ticket:Le.string(),missing:FS})]),l0=Le.object({ticket:Le.string().min(1)}),m0=Le.object({ticket:Le.string().min(1),code:Wo}),u0=Le.object({ticket:Le.string().min(1),name:Mi,response:Ii}),d0=Le.object({ticket:Le.string().min(1),code:Wo.optional()}),du=Le.object({username:Le.string(),email:Le.string(),avatarUrl:Le.string().nullable()}),p0=Le.object({accessToken:Le.string(),admin:du}),f0=Le.object({admin:du});import{z as dc}from"zod";var S0=dc.object({siteName:dc.string().trim().min(1).max(64),siteDescription:dc.string().trim().max(200).optional(),siteOrigin:sc,username:cc,email:so,password:Ar});import{z as Fe}from"zod";var pu={orderNo:Fe.string(),amountCny:Fe.number().int(),status:Fm,credited:Fe.boolean(),refundedAmountCny:Fe.number().int(),succeededRefundCny:Fe.number().int(),pendingRefundCny:Fe.number().int(),createdAt:Fe.string()},Mr=Fe.object({...pu,quota:Fe.number(),refundedQuota:Fe.number()}),Ir=Fe.object({...pu,planName:Fe.string(),renewal:Fe.boolean(),grantedDurationDays:Fe.number().int()}),Ni=Fe.object({order:Mr.pick({orderNo:!0,amountCny:!0,quota:!0}),qrCode:Fe.string()}),Nr=Fe.object({order:Ir.pick({orderNo:!0,amountCny:!0,planName:!0,grantedDurationDays:!0}),qrCode:Fe.string()}),fu=Fe.object({id:Fe.number().int(),amountCny:Fe.number().int(),status:Um,refundTradeNo:Fe.string().nullable(),reason:Fe.string().nullable(),rejectReason:Fe.string().nullable(),createdAt:Fe.string()});function gu(e){return e.status!=="paid"&&e.status!=="partially_refunded"||e.pendingRefundCny>0?!1:e.kind==="recharge"?e.refundedAmountCny<e.amountCny:e.refundedAmountCny===0}import{z as mt}from"zod";import{z as Yt}from"zod";var pc=Yt.object({kind:Yt.literal("user"),username:Yt.string(),avatarUrl:Yt.string().nullable(),points:Yt.number().int()}),fc=Yt.object({kind:Yt.literal("admin"),username:Yt.string(),avatarUrl:Yt.string().nullable()}),zo=Yt.discriminatedUnion("kind",[pc,fc]),hu=Yt.object({kind:Jm,username:Yt.string()});var Li=mt.object({id:mt.number().int(),title:mt.string(),category:Km,priority:Ym,status:Vm,createdAt:mt.string(),updatedAt:mt.string()}),yu=Li.pick({id:!0}),bu=25*1024*1024,Su=5,xu=mt.object({id:mt.number().int(),fileName:mt.string(),fileSize:mt.number().int(),contentType:mt.string()}),Tu=xu.pick({id:!0,fileSize:!0}),US=mt.object({id:mt.number().int(),author:zo,content:mt.string(),attachments:mt.array(xu),createdAt:mt.string()}),wu=mt.object({ticket:Li,messages:mt.array(US)});import{z as Lr}from"zod";var gc=Lr.object({id:Lr.number().int(),title:Lr.string(),content:Lr.string(),level:Hm,publishedAt:Lr.string()});import{z as Xe}from"zod";var hc=100,ku=Xe.object({groups:Xe.array(Xe.object({title:Xe.string(),items:Xe.array(Xe.object({slug:Xe.string(),title:Xe.string()}))}))}),vu=Xe.object({title:Xe.string(),markdown:Xe.string(),images:Xe.record(Xe.string(),Xe.object({width:Xe.number().int(),height:Xe.number().int()}))}),Ru=Xe.object({slug:Xe.string(),title:Xe.string(),anchor:Xe.string().nullable(),snippet:Xe.string()});function Cu(e){return e.trim().toLowerCase().replace(/[^\p{L}\p{N}\s-]/gu,"").replace(/\s+/g,"-")}function yc(e){try{return decodeURIComponent(e)}catch{return e}}function Oi(e){if(!e.startsWith("/guides/"))return null;let t=e.indexOf("#");return{slug:(t===-1?e:e.slice(0,t)).slice(8,-3),anchor:t===-1?null:yc(e.slice(t+1))}}import{z as ot}from"zod";function Oe(e){return e.toLocaleString("en-US")}function qn(e){let t=Math.abs(e);return t>=1e9?`${(e/1e9).toFixed(1)}B`:t>=1e6?`${(e/1e6).toFixed(1)}M`:t>=1e3?`${(e/1e3).toFixed(1)}k`:Oe(e)}function pn(e,t){return e===0&&t!==void 0?t:e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6})}function ao(e){return(e/1e3).toFixed(2)}function Vo(e){return e>=1024**3?`${(e/1024**3).toFixed(1)} GB`:e>=1024**2?`${(e/1024**2).toFixed(1)} MB`:e>=1024?`${(e/1024).toFixed(1)} KB`:`${e} B`}function Di(e,t){return`${e}******${t}`}var bc=ot.object({inputPricePerMillionTokens:ot.number(),outputPricePerMillionTokens:ot.number(),cachedInputPricePerMillionTokens:ot.number(),cacheWritePricePerMillionTokens:ot.number()});var jS=ot.number().int().nonnegative(),HS=ot.discriminatedUnion("kind",[bc.extend({kind:ot.literal("price"),inputTokensOver:jS}),ot.object({kind:ot.literal("multiplier"),param:ot.string(),value:ot.string(),multiplier:ot.number()})]),_u=ot.array(HS);function qS(e){return e.kind==="price"}function Pu(e){return e.kind==="multiplier"}function Au(e){return e>=1e6&&e%1e5===0?`${e/1e6}M`:e>=1e3&&e%1e3===0?`${e/1e3}k`:Oe(e)}function Or(e){return e===null?"\u57FA\u7840":"\u6269\u5C55"}function Sc(e){return`> ${Au(e)}`}function Eu(e,t){let n=t.filter(qS).sort((r,i)=>r.inputTokensOver-i.inputTokensOver),o=n[0];return o===void 0?[{name:Or(null),range:null,price:e}]:[{name:Or(null),range:`\u2264 ${Au(o.inputTokensOver)}`,price:e},...n.map(r=>({name:Or(r.inputTokensOver),range:Sc(r.inputTokensOver),price:r}))]}var GS=ot.object({value:ot.string(),multiplier:ot.number()}),Mu=ot.array(GS);function Iu(e){return Lu(e.map(t=>t.multiplier))}function Nu(e,t){return Lu([e,...t.map(n=>n.multiplier)])}function Lu(e){return Number(e.reduce((t,n)=>t*n,1).toFixed(4))}import{z as co}from"zod";var WS=co.object({provider:$m,pageUrl:co.string(),indicator:Zm,incidents:co.array(co.object({title:co.string()}))}),Ou=co.object({providers:co.array(WS)}),zS={minor:{label:"\u90E8\u5206\u964D\u7EA7",tone:"warning"},major:{label:"\u90E8\u5206\u4E2D\u65AD",tone:"danger"},critical:{label:"\u4E25\u91CD\u4E2D\u65AD",tone:"danger"}};function Du(e){return e.filter(t=>t.indicator!=="none"||t.incidents.length>0)}function $u(e){return e.indicator==="none"?{label:"\u4E8B\u4EF6\u5904\u7406\u4E2D",tone:"warning"}:zS[e.indicator]}import{z as lo}from"zod";var Dr=25*1024*1024,Bu=20,Fu=5;var xc="/api/media/";function Uu(e){return`${xc}${e}`}var ju=lo.object({width:lo.number().int(),height:lo.number().int()}),$i=lo.record(lo.string(),ju),Hu=lo.object({id:lo.number().int(),image:ju.nullable()}),qu=String.raw`([1-9]\d{0,14})`,G0=new RegExp(String.raw`^${xc}${qu}$`),Gu=new RegExp(String.raw`(!?)\[((?:\\.|[^\\\]\n])*)\]\(${xc}${qu}(?:\s+"[^"\n]*")?\)`,"g");function Wu(e,t,n){return{id:Number(n),image:e==="!",name:t.replace(/\\(.)/g,"$1")}}function zu(e){return[...e.matchAll(Gu)].map(([,t="",n="",o=""])=>Wu(t,n,o))}function Tc(e,t){return e.replace(Gu,(n,o,r,i)=>t(Wu(o,r,i)))}import{z as ut}from"zod";import{z as I}from"zod";var mo=100,Bi=2e4,wc=5e3,Fi=500,Ui=64,VS=new RegExp("\\p{Cc}","u"),KS=new RegExp("(?![\\n\\t])\\p{Cc}","u");function kc(e){return I.string().trim().max(e).refine(t=>!VS.test(t))}function vc(e){return I.string().trim().max(e).refine(t=>!KS.test(t))}var Q0=I.object({categoryId:I.number().int().positive(),title:kc(mo).min(1),content:vc(Bi).min(1)}),Z0=I.object({categoryId:I.number().int().positive().nullable(),title:kc(mo),content:vc(Bi)}),eP=I.object({content:vc(wc).min(1),replyToId:I.number().int().positive().optional()}),tP=I.object({reason:Qm,detail:iu(kc(Fi))}),nP=ru.extend({sort:Xm,categoryId:I.coerce.number().int().positive().optional(),q:I.string().trim().min(1).max(Ui).optional(),author:I.string().trim().min(1).max(Kt).optional()}),Rc=I.object({id:I.number().int(),name:I.string(),description:I.string()}),ji=Rc.pick({id:!0,name:!0}),$r=I.object({id:I.number().int(),title:I.string()}),Ko=I.object({id:I.number().int(),title:I.string().nullable()}),oP=I.object({posts:I.array(I.object({id:I.number().int(),lastModified:I.string()})),users:I.array(I.string()),staff:I.array(I.string())}),Cc=I.object({id:I.number().int(),title:I.string(),category:ji,author:zo,commentCount:I.number().int(),viewCount:I.number().int(),likeCount:I.number().int(),lastActivityAt:I.string()}),Vu=I.object({id:I.number().int(),title:I.string(),content:I.string(),images:$i,category:ji,author:zo,status:Pr,reviewReason:I.string().nullable(),commentCount:I.number().int(),viewCount:I.number().int(),likeCount:I.number().int(),coverUrl:I.string().nullable(),createdAt:I.string(),publishedAt:I.string().nullable(),editedAt:I.string().nullable(),liked:I.boolean(),bookmarked:I.boolean()}),Ku={id:I.number().int(),author:zo,content:I.string(),images:$i,status:Pr,reviewReason:I.string().nullable(),likeCount:I.number().int(),liked:I.boolean(),createdAt:I.string()},_c=I.object({...Ku,replyTo:I.object({id:I.number().int(),author:hu}).nullable()}),Pc=I.object({...Ku,floor:I.number().int().nullable(),replyCount:I.number().int(),replies:I.array(_c)}),Ac=I.object({likeCount:I.number().int()}),Br=I.object({id:I.number().int(),status:I.enum(["pending","published","rejected"]),reviewReason:I.string().nullable()}),Fr=I.object({id:I.number().int(),title:I.string(),category:ji,status:Pr,reviewReason:I.string().nullable(),commentCount:I.number().int(),viewCount:I.number().int(),likeCount:I.number().int(),createdAt:I.string(),publishedAt:I.string().nullable()}),Hi=I.object({id:I.number().int(),content:I.string(),post:Ko,floorId:I.number().int(),status:Pr,reviewReason:I.string().nullable(),likeCount:I.number().int(),createdAt:I.string()}),Ec=I.object({id:I.number().int(),category:ji.nullable(),title:I.string(),content:I.string(),images:$i,createdAt:I.string()}),Yu=I.object({posts:I.array(Fr),drafts:I.number().int()}),Ju=Ec.pick({id:!0}),Xu=I.object({muted:I.object({reason:I.string(),until:I.string().nullable()}).nullable()});var YS=ut.object({posts:ut.number().int(),comments:ut.number().int(),likesReceived:ut.number().int()}),JS=ut.object({start:ut.string(),end:ut.string(),days:ut.array(ut.object({day:ut.string(),count:ut.number().int()}))}),XS=ut.object({posts:ut.array(Fr),comments:ut.array(Hi)}),Qu={joinedAt:ut.string(),stats:YS,activity:JS,overview:XS},Zu=ut.object({identity:pc,...Qu}),ed=ut.object({identity:fc,...Qu});import{z as J}from"zod";var gt={id:J.number().int(),read:J.boolean(),createdAt:J.string()},Ur=J.object({floorId:J.number().int()}),td=J.object({username:J.string()}),nd=J.discriminatedUnion("kind",[J.object({...gt,kind:J.literal("post_commented"),post:$r,comment:Ur,actor:td}),J.object({...gt,kind:J.literal("comment_replied"),post:Ko,comment:Ur,actor:td}),J.object({...gt,kind:J.literal("post_approved"),post:$r}),J.object({...gt,kind:J.literal("post_rejected"),post:$r,reason:J.string()}),J.object({...gt,kind:J.literal("post_removed"),post:$r,reason:J.string()}),J.object({...gt,kind:J.literal("comment_approved"),post:Ko,comment:Ur}),J.object({...gt,kind:J.literal("comment_rejected"),post:Ko,comment:Ur,reason:J.string()}),J.object({...gt,kind:J.literal("comment_removed"),post:Ko,comment:Ur,reason:J.string()}),J.object({...gt,kind:J.literal("ticket_replied"),ticket:J.object({id:J.number().int(),title:J.string()})}),J.object({...gt,kind:J.literal("invoice_issued"),invoice:J.object({title:J.string(),amountCny:J.number().int()})}),J.object({...gt,kind:J.literal("invoice_rejected"),invoice:J.object({title:J.string()}),reason:J.string()}),J.object({...gt,kind:J.literal("refund_approved"),refund:J.object({orderNo:J.string(),orderType:Ja,amountCny:J.number().int()})}),J.object({...gt,kind:J.literal("refund_rejected"),refund:J.object({orderNo:J.string(),orderType:Ja}),reason:J.string()}),J.object({...gt,kind:J.literal("subscription_expiring"),subscription:J.object({planName:J.string(),expiresAt:J.string()})}),J.object({...gt,kind:J.literal("email_changed"),newEmail:J.string()}),J.object({...gt,kind:J.literal("new_device_login"),ip:J.string(),device:mc.nullable()})]),od=J.object({unread:J.boolean()});var rd="Asia/Shanghai",QS="+08:00";function ZS(e){return new Date(new Date(e).getTime()+288e5)}function ex(e=Date.now()){let t=ZS(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function Mc(e=Date.now()){return ex(e).day}function Ic(e=Mc()){return new Date(`${e}T00:00:00${QS}`)}function Gn(e,t){let n=new Date(`${e}T00:00:00Z`);return new Date(n.getTime()+t*864e5).toISOString().slice(0,10)}var tx=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:rd}),nx=new Intl.DateTimeFormat("zh-CN",{dateStyle:"long",timeZone:rd});function V(e){return tx.format(new Date(e))}function jr(e){return nx.format(new Date(e))}var[ox,...rx]=[{min:0,name:"\u65B0\u624B"},{min:20,name:"\u5165\u95E8"},{min:100,name:"\u8FDB\u9636"},{min:300,name:"\u719F\u7EC3"},{min:800,name:"\u9AD8\u624B"},{min:2e3,name:"\u4E13\u5BB6"},{min:5e3,name:"\u5927\u5E08"}];function qi(e){let t=1,n=ox;for(let o of rx){if(e<o.min)return{level:t,name:n.name,min:n.min,next:o.min};t+=1,n=o}return{level:t,name:n.name,min:n.min,next:null}}function Gi(e){let t=qi(e);return`Lv.${t.level} ${t.name}`}function Wi(e){let t=qi(e);return t.next===null?"\u5DF2\u8FBE\u6700\u9AD8\u7B49\u7EA7":`\u8DDD Lv.${t.level+1} \u8FD8\u5DEE ${t.next-e} \u79EF\u5206`}var zi="\u7BA1\u7406\u5458",Hr={pending:"\u6B63\u5728\u5BA1\u6838\uFF0C\u901A\u8FC7\u540E\u516C\u5F00\u663E\u793A",rejected:"\u672A\u901A\u8FC7\u5BA1\u6838\uFF0C\u4FEE\u6539\u540E\u53EF\u91CD\u65B0\u63D0\u4EA4",removed:"\u5DF2\u88AB\u5C4F\u853D\uFF0C\u4EC5\u81EA\u5DF1\u53EF\u89C1\u4E14\u65E0\u6CD5\u4FEE\u6539"},Yo={pending:"\u6B63\u5728\u5BA1\u6838\uFF0C\u901A\u8FC7\u540E\u516C\u5F00\u663E\u793A",rejected:"\u672A\u901A\u8FC7\u5BA1\u6838\uFF0C\u4EC5\u81EA\u5DF1\u53EF\u89C1",removed:"\u5DF2\u88AB\u5C4F\u853D\uFF0C\u4EC5\u81EA\u5DF1\u53EF\u89C1"};function Nc(e,t){if(t.status==="published")return null;let n=e[t.status];return t.reviewReason===null?n:`${n}\uFF0C\u539F\u56E0\uFF1A${t.reviewReason}`}var Vi="\u8BE5\u5E16\u5B50\u6682\u4E0D\u53EF\u89C1",ix=4;function id(e){let t=[],n=new Map;for(let o of e){let r=o.replyTo===null?void 0:n.get(o.replyTo.id),i={reply:o,mention:r===void 0&&o.replyTo!==null?o.replyTo.author:null,children:[]};n.set(o.id,i),r===void 0?t.push(i):r.children.push(i)}return sd(t,1)}function sd(e,t){return t<ix?e.map(n=>({...n,children:sd(n.children,t+1)})):e.flatMap(n=>[{...n,children:[]},...ad(n)])}function ad(e){return e.children.flatMap(t=>[{reply:t.reply,mention:e.reply.author,children:[]},...ad(t)])}function Lc(e){return`${e===null?"\u4F60\u5DF2\u88AB\u6C38\u4E45\u7981\u8A00":`\u4F60\u5DF2\u88AB\u7981\u8A00\u81F3 ${V(e)}`}\uFF0C\u671F\u95F4\u65E0\u6CD5\u53D1\u5E16\u3001\u8BC4\u8BBA\u3001\u7F16\u8F91\u3001\u4E0A\u4F20\u6216\u66F4\u6362\u5934\u50CF\u4E0E\u7528\u6237\u540D`}function Re(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function Oc(e){return Math.round(e*100)}function cd(e){return e/100}function ld(e,t,n){let o=e/t;return`${o<0?"-":""}$${Math.abs(o).toLocaleString("en-US",{minimumFractionDigits:n,maximumFractionDigits:n})}`}function Te(e,t){return ld(e,t,2)}function Jo(e,t){return ld(e,t,6)}var ud={post:"\u67E5\u770B\u5E16\u5B50",floor:"\u67E5\u770B\u8BC4\u8BBA",ticket:"\u67E5\u770B\u5DE5\u5355",invoices:"\u67E5\u770B\u53D1\u7968",recharge:"\u67E5\u770B\u5145\u503C\u8BB0\u5F55",subscription:"\u67E5\u770B\u8BA2\u9605",security:"\u67E5\u770B\u8D26\u6237"};function md(e){return e==="subscription"?{kind:"subscription"}:{kind:"recharge"}}function Dc(e){return e.title===null?"":`\u300C${e.title}\u300D\u4E0B\u7684`}function $c(e){switch(e.kind){case"post_commented":return{title:`${e.actor.username} \u8BC4\u8BBA\u4E86\u4F60\u7684\u5E16\u5B50`,body:`\u300C${e.post.title}\u300D`,target:{kind:"floor",postId:e.post.id,floorId:e.comment.floorId}};case"comment_replied":return{title:`${e.actor.username} \u56DE\u590D\u4E86\u4F60\u7684\u8BC4\u8BBA`,body:e.post.title===null?Vi:`\u300C${e.post.title}\u300D`,target:{kind:"floor",postId:e.post.id,floorId:e.comment.floorId}};case"post_approved":return{title:"\u5E16\u5B50\u5DF2\u901A\u8FC7\u5BA1\u6838",body:`\u300C${e.post.title}\u300D\u5DF2\u516C\u5F00\u53D1\u5E03`,target:{kind:"post",postId:e.post.id}};case"post_rejected":return{title:"\u5E16\u5B50\u672A\u901A\u8FC7\u5BA1\u6838",body:`\u300C${e.post.title}\u300D\u672A\u901A\u8FC7\u5BA1\u6838\uFF0C\u539F\u56E0\uFF1A${e.reason}\uFF1B\u4FEE\u6539\u540E\u53EF\u91CD\u65B0\u63D0\u4EA4`,target:{kind:"post",postId:e.post.id}};case"post_removed":return{title:"\u5E16\u5B50\u5DF2\u88AB\u5C4F\u853D",body:`\u300C${e.post.title}\u300D\u5DF2\u88AB\u5C4F\u853D\uFF0C\u539F\u56E0\uFF1A${e.reason}`,target:{kind:"post",postId:e.post.id}};case"comment_approved":return{title:"\u8BC4\u8BBA\u5DF2\u901A\u8FC7\u5BA1\u6838",body:`${Dc(e.post)}\u8BC4\u8BBA\u5DF2\u516C\u5F00\u53D1\u5E03`,target:{kind:"floor",postId:e.post.id,floorId:e.comment.floorId}};case"comment_rejected":return{title:"\u8BC4\u8BBA\u672A\u901A\u8FC7\u5BA1\u6838",body:`${Dc(e.post)}\u8BC4\u8BBA\u672A\u901A\u8FC7\u5BA1\u6838\uFF0C\u539F\u56E0\uFF1A${e.reason}`,target:{kind:"floor",postId:e.post.id,floorId:e.comment.floorId}};case"comment_removed":return{title:"\u8BC4\u8BBA\u5DF2\u88AB\u5C4F\u853D",body:`${Dc(e.post)}\u8BC4\u8BBA\u5DF2\u88AB\u5C4F\u853D\uFF0C\u539F\u56E0\uFF1A${e.reason}`,target:{kind:"floor",postId:e.post.id,floorId:e.comment.floorId}};case"ticket_replied":return{title:"\u5DE5\u5355\u6709\u65B0\u56DE\u590D",body:`\u5DE5\u5355\u300C${e.ticket.title}\u300D\u6536\u5230\u7BA1\u7406\u5458\u56DE\u590D`,target:{kind:"ticket",ticketId:e.ticket.id}};case"invoice_issued":return{title:"\u53D1\u7968\u5DF2\u5F00\u5177",body:`\u62AC\u5934\u300C${e.invoice.title}\u300D\u91D1\u989D ${Re(e.invoice.amountCny)} \u7684\u53D1\u7968\u5DF2\u5F00\u5177`,target:{kind:"invoices"}};case"invoice_rejected":return{title:"\u5F00\u7968\u7533\u8BF7\u88AB\u9A73\u56DE",body:`\u62AC\u5934\u300C${e.invoice.title}\u300D\u7684\u5F00\u7968\u7533\u8BF7\u88AB\u9A73\u56DE\uFF0C\u539F\u56E0\uFF1A${e.reason}\uFF1B\u53EF\u4FEE\u6B63\u4FE1\u606F\u540E\u91CD\u65B0\u7533\u8BF7`,target:{kind:"invoices"}};case"refund_approved":return{title:"\u9000\u6B3E\u7533\u8BF7\u5DF2\u901A\u8FC7",body:`\u8BA2\u5355 ${e.refund.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\u5DF2\u901A\u8FC7\uFF0C${Re(e.refund.amountCny)} \u5C06\u539F\u8DEF\u9000\u56DE\u652F\u4ED8\u5B9D\u8D26\u6237`,target:md(e.refund.orderType)};case"refund_rejected":return{title:"\u9000\u6B3E\u7533\u8BF7\u88AB\u9A73\u56DE",body:`\u8BA2\u5355 ${e.refund.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\u88AB\u9A73\u56DE\uFF0C${e.refund.orderType==="subscription"?"\u8BA2\u9605\u65F6\u957F\u5DF2\u6062\u590D":"\u5230\u8D26\u989D\u5EA6\u5DF2\u6062\u590D"}\uFF0C\u539F\u56E0\uFF1A${e.reason}`,target:md(e.refund.orderType)};case"subscription_expiring":return{title:"\u8BA2\u9605\u5373\u5C06\u5230\u671F",body:`\u5957\u9910\u300C${e.subscription.planName}\u300D\u5C06\u4E8E ${V(e.subscription.expiresAt)} \u5230\u671F\uFF0C\u5230\u671F\u540E\u5C06\u65E0\u6CD5\u7EE7\u7EED\u4F7F\u7528\u5957\u9910\u5185\u989D\u5EA6`,target:{kind:"subscription"}};case"email_changed":return{title:"\u90AE\u7BB1\u5DF2\u53D8\u66F4",body:`\u8D26\u53F7\u90AE\u7BB1\u5DF2\u53D8\u66F4\u4E3A ${e.newEmail}\uFF0C\u5982\u679C\u4E0D\u662F\u672C\u4EBA\u64CD\u4F5C\uFF0C\u8BF7\u7ACB\u5373\u8054\u7CFB\u7BA1\u7406\u5458`,target:{kind:"security"}};case"new_device_login":return{title:"\u65B0\u8BBE\u5907\u767B\u5F55\u63D0\u9192",body:`\u8D26\u53F7\u5728\u65B0\u8BBE\u5907\u4E0A\u767B\u5F55\uFF1A${qo(e.device)}\uFF0CIP \u5730\u5740 ${e.ip}\uFF1B\u5982\u679C\u4E0D\u662F\u672C\u4EBA\u64CD\u4F5C\uFF0C\u8BF7\u7ACB\u5373\u4FEE\u6539\u5BC6\u7801`,target:{kind:"security"}}}}function qr(e){if(e===void 0)return"";let t="";for(let n of e)switch(n.type){case"codespan":case"escape":case"html":case"image":t+=n.text;break;case"br":t+=" ";break;case"link":case"strong":case"em":case"del":t+=qr(n.tokens);break;case"text":t+="tokens"in n&&n.tokens!==void 0?qr(n.tokens):n.text;break}return t}function Bc(e){if(e===void 0)return[];let t=[];for(let n of e)switch(n.type){case"paragraph":case"heading":t.push(qr(n.tokens));break;case"text":t.push("tokens"in n&&n.tokens!==void 0?qr(n.tokens):n.text);break;case"code":case"html":t.push(n.text);break;case"blockquote":t.push(...Bc(n.tokens));break;case"list":n.items.forEach(o=>t.push(...Bc(o.tokens)));break;case"table":[...n.header,...n.rows.flat()].forEach(o=>t.push(qr(o.tokens)));break}return t}function dd(e){return Bc(e).join(" ").replace(/\s+/g," ").trim()}var sx=[{name:"\u4E00\u6574\u4E2A left-pad npm \u5305",tokens:110},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u5065\u8C08\u9E66\u9E49\u6BD5\u751F\u5B66\u4F1A\u7684\u8BCD\u6C47",tokens:2200},{name:"\u300A\u8BBA\u8BED\u300B",tokens:25e3},{name:"\u300A\u5C0F\u738B\u5B50\u300B",tokens:3e4},{name:"\u300A\u96F7\u950B\u65E5\u8BB0\u300B",tokens:54e3},{name:"\u300A\u8BD7\u7ECF\u300B",tokens:6e4},{name:"\u5468\u6770\u4F26\u5341\u4E94\u5F20\u4E13\u8F91\u7684\u5168\u90E8\u6B4C\u8BCD",tokens:82e3},{name:"\u300A\u6D3B\u7740\u300B",tokens:11e4},{name:"\u300A\u970D\u6BD4\u7279\u4EBA\u300B",tokens:12e4},{name:"\u300A\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD\u6C11\u6CD5\u5178\u300B",tokens:126e3},{name:"\u300A\u94F6\u6CB3\u7CFB\u642D\u8F66\u5BA2\u6307\u5357\u300B\u4E94\u90E8\u66F2",tokens:26e4},{name:"\u79E6\u59CB\u7687\u4E00\u5929\u6279\u9605\u7684\u7AF9\u7B80\u594F\u7AE0",tokens:34e4},{name:"\u300A\u7EB3\u5C3C\u4E9A\u4F20\u5947\u300B\u5168\u4E03\u518C",tokens:45e4},{name:"\u300A\u5802\u5409\u8BC3\u5FB7\u300B",tokens:56e4},{name:"\u300A\u9B54\u6212\u300B\u4E09\u90E8\u66F2",tokens:59e4},{name:"\u300A\u804A\u658B\u5FD7\u5F02\u300B",tokens:6e5},{name:"\u300A\u6218\u4E89\u4E0E\u548C\u5E73\u300B",tokens:76e4},{name:"\u300A\u65B0\u534E\u5B57\u5178\u300B",tokens:8e5},{name:"\u300A\u7EA2\u697C\u68A6\u300B",tokens:9e5},{name:"\u300A\u897F\u6E38\u8BB0\u300B",tokens:1e6},{name:"\u300A\u4E09\u4F53\u300B\u4E09\u90E8\u66F2",tokens:11e5},{name:"\u838E\u58EB\u6BD4\u4E9A\u5168\u96C6",tokens:115e4},{name:"\u300A\u7504\u5B1B\u4F20\u300B\u5168\u5267\u5267\u672C",tokens:12e5},{name:"\u963F\u6CE2\u7F57 11 \u53F7\u767B\u6708\u5236\u5BFC\u7A0B\u5E8F\u6E90\u7801",tokens:13e5},{name:"\u300A\u54C8\u5229\xB7\u6CE2\u7279\u300B\u5168\u4E03\u90E8",tokens:14e5},{name:"\u8FC4\u4ECA\u51FA\u571F\u7684\u5168\u90E8\u7532\u9AA8\u6587",tokens:15e5},{name:"\u5409\u5C3C\u65AF\u7EAA\u5F55\u6700\u957F\u5C0F\u8BF4\u300A\u8FFD\u5FC6\u4F3C\u6C34\u5E74\u534E\u300B",tokens:165e4},{name:"\u300A\u51B0\u4E0E\u706B\u4E4B\u6B4C\u300B\u5DF2\u51FA\u4E94\u5377",tokens:226e4},{name:"\u300A\u65F6\u5149\u4E4B\u8F6E\u300B\u5168\u5341\u56DB\u5377",tokens:57e5},{name:"\u300A\u5168\u5510\u8BD7\u300B",tokens:64e5},{name:"\u300A\u9C81\u8FC5\u5168\u96C6\u300B",tokens:85e5},{name:"\u91D1\u5EB8\u5341\u4E94\u90E8\u5C0F\u8BF4",tokens:105e5},{name:"\u300A\u8F9E\u6D77\u300B",tokens:282e5},{name:"\u300A\u5927\u82F1\u767E\u79D1\u5168\u4E66\u300B",tokens:52e6},{name:"\u4E00\u6574\u5E74\u300A\u4EBA\u6C11\u65E5\u62A5\u300B",tokens:53e6},{name:"\u300A\u4E8C\u5341\u56DB\u53F2\u300B",tokens:6e7},{name:"\u300A\u725B\u6D25\u82F1\u8BED\u8BCD\u5178\u300B\u7B2C\u4E8C\u7248",tokens:767e5},{name:"\u5355\u7530\u82B3\u6BD5\u751F\u8BC4\u4E66\u4F5C\u54C1",tokens:86e6},{name:"\u300A\u4E2D\u56FD\u5927\u767E\u79D1\u5168\u4E66\u300B\u7B2C\u4E00\u7248",tokens:1508e5},{name:"\u6574\u5957 Linux \u5185\u6838\u6E90\u7801",tokens:4e8},{name:"\u4E00\u4E2A\u666E\u901A\u4EBA\u4E00\u751F\u8BF4\u51FA\u7684\u5168\u90E8\u8BDD\u8BED",tokens:5e8},{name:"\u4E2D\u6587\u7EF4\u57FA\u767E\u79D1",tokens:1e9},{name:"\u300A\u56DB\u5E93\u5168\u4E66\u300B",tokens:12e8},{name:"\u82F1\u6587\u7EF4\u57FA\u767E\u79D1",tokens:676e7},{name:"\u8C37\u6B4C\u5168\u90E8\u4EE3\u7801\u5E93",tokens:2e10}];function ax(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function Dt(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function pd(e){return e<365?`${Dt(e)} \u5929`:`${Dt(e/365)} \u5E74`}function cx(e){let t=e/1.2/250/60;if(t<48)return`${Math.max(1,Math.round(t))} \u5C0F\u65F6`;let n=t/24;return n<730?`${Math.round(n)} \u5929`:`${Dt(n/365)} \u5E74`}function lx(e){let t=e/1.2/80/60/8;return t<250?`${Dt(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${Dt(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function mx(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${Dt(t/1e3)} \u516C\u65A4`:`${Dt(t/1e6)} \u5428`}var ux=[...sx.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${ax(t/e.tokens)} \u500D`})),{min:3e5,max:1/0,suffix:e=>`\u6253\u5370\u6210 A4 \u7EB8\u7EA6\u6709 ${Math.round(e/1.2/1500).toLocaleString("en-US")} \u9875`},{min:3e5,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 250 \u5B57\u7684\u8BED\u901F\u6717\u8BFB\u7EA6\u9700 ${cx(e)}`},{min:1680,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/140).toLocaleString("en-US")} \u6761\u5199\u6EE1 140 \u5B57\u7684\u5FAE\u535A`},{min:9600,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/800).toLocaleString("en-US")} \u7BC7 800 \u5B57\u7684\u9AD8\u8003\u4F5C\u6587`},{min:131400,max:1/0,suffix:e=>`\u6309\u6BCF\u5929\u4E00\u7BC7 300 \u5B57\u7684\u65E5\u8BB0\u8BA1\uFF0C\u591F\u8FDE\u7EED\u5199 ${Dt(e/1.2/300/365)} \u5E74`},{min:12e5,max:1/0,suffix:e=>`\u7EA6\u5408 ${Math.round(e/1.2/1e5).toLocaleString("en-US")} \u672C\u5341\u4E07\u5B57\u7684\u535A\u58EB\u8BBA\u6587`},{min:33e3,max:1/0,suffix:e=>`\u6309\u300A\u8D44\u6CBB\u901A\u9274\u300B\u7684\u7B14\u58A8\u5BC6\u5EA6\uFF0C\u7EA6\u591F\u53F8\u9A6C\u5149\u8BB0\u8F7D ${Math.round(e/45e5*1362).toLocaleString("en-US")} \u5E74\u5386\u53F2`},{min:49e3,max:1/0,suffix:e=>`\u7EA6\u5408\u300A\u4E00\u5343\u96F6\u4E00\u591C\u300B\u91CC\u5C71\u9C81\u4F50\u5FB7\u8BB2\u6545\u4E8B\u7684 ${Math.round(e/492e4*1001).toLocaleString("en-US")} \u4E2A\u591C\u665A`},{min:640,max:1/0,suffix:e=>`\u6309\u91D1\u9675\u523B\u7ECF\u5904\u523B\u5DE5\u534A\u6708\u523B\u6210\u4E00\u5757 800 \u5B57\u7ECF\u7248\u7684\u8FDB\u5EA6\uFF0C\u5168\u90E8\u523B\u4E0A\u96D5\u7248\u9700\u8981 ${pd(e/1.2/53)}`},{min:460800,max:1/0,suffix:e=>`\u6309\u6BCF\u5206\u949F 80 \u5B57\u3001\u6BCF\u5929 8 \u5C0F\u65F6\u8BA1\uFF0C\u591F\u4E00\u4F4D\u4E13\u804C\u6253\u5B57\u5458\u6253 ${lx(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${mx(e)}`},{min:18e3,max:1/0,suffix:e=>`\u6309\u300A\u6C38\u4E50\u5927\u5178\u300B\u91CD\u5F55\u4E66\u624B\u6BCF\u5929\u4E09\u53F6\u3001\u7EA6 1500 \u5B57\u7684\u5B9A\u989D\uFF0C\u591F\u4E00\u4F4D\u4E66\u624B\u6284\u5199 ${pd(e/1.2/1500)}`},{min:108e3,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Math.round(e/1.2/9e3).toLocaleString("en-US")} \u671F\u300A\u65B0\u95FB\u8054\u64AD\u300B\u7684\u64AD\u62A5\u7A3F`},{min:4e4,max:1/0,suffix:e=>`\u7EA6\u7B49\u4E8E ${Dt(e/1.2/33e3)} \u5C4A\u592E\u89C6\u6625\u665A\u7684\u5168\u90E8\u53F0\u8BCD\u548C\u6B4C\u8BCD`},{min:96e3,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6807\u51C6 400 \u7C73\u8DD1\u9053 ${Dt(e/1.2*.005/400)} \u5708`},{min:96e5,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u5408\u5730\u9762\u5230\u56FD\u9645\u7A7A\u95F4\u7AD9\u8DDD\u79BB\u7684 ${Dt(e/1.2*.005/4e5)} \u500D`},{min:26e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u6708\u7403\u8D64\u9053 ${Dt(e/1.2*.005/10917e3)} \u5708`},{min:96e7,max:1/0,suffix:e=>`\u6362\u7B97\u6210\u6C49\u5B57\u6309\u6BCF\u5B57 5 \u6BEB\u7C73\u9996\u5C3E\u76F8\u63A5\u6392\u5F00\uFF0C\u7EA6\u80FD\u7ED5\u5730\u7403\u8D64\u9053 ${Dt(e/1.2*.005/40075e3)} \u5708`}];function fd(e){let{tokens:t,scope:n,range:o}=e;if(t<=0)return null;let r=ux.filter(c=>t>=c.min&&t<=c.max),i=r[Math.floor(Math.random()*r.length)];return i?`${n==="user"?"\u4F60":"\u5168\u7AD9"}${o==="all"?"\u7D2F\u8BA1":o==="30d"?"\u8FD1 30 \u5929":"\u8FD1 7 \u5929"}\u4F7F\u7528\u7684 Token \u91CF${i.suffix(t)}`:null}function vn(e){return t=>{let n=e[t];if(!n)throw new Error(`unknown status value: ${t}`);return n}}function $t(e){return t=>{let n=e[t];if(!n)throw new Error(`unknown label value: ${t}`);return n}}var Wn=vn({pending:{label:"\u5F85\u652F\u4ED8",tone:"warning"},paid:{label:"\u5DF2\u652F\u4ED8",tone:"success"},refund_requested:{label:"\u9000\u6B3E\u5BA1\u6838\u4E2D",tone:"warning"},partially_refunded:{label:"\u90E8\u5206\u9000\u6B3E",tone:"warning"},refunded:{label:"\u5DF2\u9000\u6B3E",tone:"danger"},failed:{label:"\u5931\u8D25",tone:"danger"},expired:{label:"\u5DF2\u8FC7\u671F",tone:"neutral"}}),CP=$t({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),Ki=vn({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),_P=vn({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),Fc=$t({subscription_first:"\u8BA2\u9605\u4F18\u5148",balance_first:"\u4F59\u989D\u4F18\u5148",subscription_only:"\u4EC5\u8BA2\u9605",balance_only:"\u4EC5\u4F59\u989D"}),Uc=$t({subscription_first:"\u6709\u53EF\u7528\u8BA2\u9605\u65F6\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6\uFF0C\u8BA2\u9605\u7528\u5C3D\u6216\u672A\u8986\u76D6\u5F53\u524D\u5206\u7EC4\u65F6\u6539\u6263\u4F59\u989D",balance_first:"\u4F59\u989D\u5145\u8DB3\u65F6\u6263\u4F59\u989D\uFF0C\u4F59\u989D\u4E0D\u8DB3\u65F6\u6539\u7528\u8BA2\u9605\u989D\u5EA6",subscription_only:"\u53EA\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6\uFF0C\u8BA2\u9605\u7528\u5C3D\u6216\u672A\u8986\u76D6\u5F53\u524D\u5206\u7EC4\u65F6\u62D2\u7EDD\u8BF7\u6C42",balance_only:"\u53EA\u6263\u8D26\u6237\u4F59\u989D\uFF0C\u4E0D\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6"}),gd=Ka.map(e=>({value:e,label:Fc(e)})),jc=$t({recharge:"\u5145\u503C",reserve:"\u9884\u6263",consume:"\u6D88\u8D39",reserve_refund:"\u9884\u6263\u9000\u56DE",refund:"\u9000\u6B3E",refund_release:"\u9000\u6B3E\u8FD4\u8FD8",reward:"\u5956\u52B1",admin_adjust:"\u7BA1\u7406\u5458\u8C03\u6574"}),hd=$t({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),yd=vn({requested:{label:"\u5F85\u5BA1\u6838",tone:"warning"},pending:{label:"\u5F85\u786E\u8BA4",tone:"warning"},succeeded:{label:"\u5DF2\u9000\u6B3E",tone:"success"},failed:{label:"\u5931\u8D25",tone:"danger"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"},canceled:{label:"\u5DF2\u64A4\u9500",tone:"neutral"}}),Yi=vn({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),bd=$t({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),Gr=$t({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),uo=$t({special:"\u4E13\u7968",general:"\u666E\u7968"}),Ji=$t({first_inviter:"\u9996\u5145\u8FD4\u5229\uFF08\u9080\u8BF7\u4EBA\uFF09",first_invitee:"\u9996\u5145\u8FD4\u5229\uFF08\u88AB\u9080\u8BF7\u4EBA\uFF09",subsequent_inviter:"\u7EED\u5145\u8FD4\u5229\uFF08\u9080\u8BF7\u4EBA\uFF09"}),Wr=vn({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),Hc=vn({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),Xi=$t({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),qc=vn({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}}),Sd=$t({openai:"OpenAI",anthropic:"Anthropic"}),po=vn({pending:{label:"\u5BA1\u6838\u4E2D",tone:"warning"},published:{label:"\u5DF2\u53D1\u5E03",tone:"success"},rejected:{label:"\u672A\u901A\u8FC7",tone:"danger"},removed:{label:"\u5DF2\u5C4F\u853D",tone:"danger"}}),xd=$t({spam:"\u5783\u573E\u5E7F\u544A",abuse:"\u4EBA\u8EAB\u653B\u51FB",explicit:"\u8272\u60C5\u4F4E\u4FD7",illegal:"\u8FDD\u6CD5\u8FDD\u89C4",privacy:"\u6CC4\u9732\u9690\u79C1",other:"\u5176\u4ED6"}),Td=$t({activity:"\u6700\u65B0\u56DE\u590D",published:"\u6700\u65B0\u53D1\u5E03"});function _t(e,t,n){let o=r=>{let i=t(r);return typeof i=="string"?i:i.label};return[{value:"",label:n},...e.map(r=>({value:r,label:o(r)}))]}function es(e){return`${e.name} \xD7${e.multiplier}`}var Qi=10080,Zi=1440;function wd(e){if(e%Qi===0){let t=e/Qi;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%Zi===0){let t=e/Zi;return t===1?"\u6BCF\u65E5\u9650\u989D":`${t} \u5929\u9650\u989D`}return e%60===0?`${e/60} \u5C0F\u65F6\u9650\u989D`:`${e} \u5206\u949F\u9650\u989D`}function dx(e){if(e%Qi===0){let t=e/Qi;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%Zi===0){let t=e/Zi;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function kd(e,t){return e.windows.map(n=>`${dx(n.durationMinutes)} ${Te(n.quota,t)}`)}function Gc(e){return Math.min(100,Math.floor(e.used/e.quota*100))}function Wc(e){return e.revokedAt!==null?{label:"\u5DF2\u4F5C\u5E9F",tone:"danger"}:new Date(e.expiresAt).getTime()<=Date.now()?{label:"\u5DF2\u8FC7\u671F",tone:"neutral"}:{label:"\u751F\u6548\u4E2D",tone:"success"}}var zc={recharge:["\u5145\u9519\u91D1\u989D\u6216\u91CD\u590D\u5145\u503C","\u9700\u8981\u7684\u6A21\u578B\u4E0D\u53EF\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u5B9E\u9645\u8BA1\u8D39\u9AD8\u4E8E\u9884\u671F","\u4F59\u989D\u7528\u4E0D\u5B8C\uFF0C\u4E0D\u518D\u9700\u8981"],subscription:["\u8BEF\u8D2D\u6216\u9009\u9519\u5957\u9910","\u5957\u9910\u4E0D\u542B\u9700\u8981\u7684\u6A21\u578B","\u9650\u989D\u592A\u4F4E\uFF0C\u4E0D\u591F\u7528","\u8C03\u7528\u7ECF\u5E38\u62A5\u9519\u6216\u8D85\u65F6","\u4F7F\u7528\u9891\u7387\u4F4E\uFF0C\u4E0D\u5212\u7B97"]},vd={recharge:"\u63D0\u4EA4\u540E\u672C\u5355\u5269\u4F59\u989D\u5EA6\u4E0E\u5173\u8054\u7684\u9080\u8BF7\u5956\u52B1\u5C06\u7ACB\u5373\u4ECE\u4F59\u989D\u6536\u56DE\uFF1B\u5BA1\u6838\u901A\u8FC7\u540E\u539F\u8DEF\u9000\u56DE\u652F\u4ED8\u5B9D\uFF0C\u9A73\u56DE\u6216\u64A4\u9500\u540E\u81EA\u52A8\u6062\u590D",subscription:"\u63D0\u4EA4\u540E\u672C\u5355\u672A\u5F00\u59CB\u7684\u65F6\u957F\u7ACB\u5373\u5931\u6548\uFF0C\u6B63\u5728\u670D\u52A1\u4E2D\u7684\u65F6\u6BB5\u4FDD\u7559\u81F3\u5F53\u524D\u9650\u989D\u5468\u671F\u7ED3\u675F\uFF1B\u5BA1\u6838\u901A\u8FC7\u540E\u6309\u672A\u5F00\u59CB\u7684\u9650\u989D\u5468\u671F\u6298\u7B97\u539F\u8DEF\u9000\u6B3E\uFF0C\u9A73\u56DE\u6216\u64A4\u9500\u540E\u81EA\u52A8\u6062\u590D"};import{release as px}from"os";var fx=3e4,gx=nu({cliVersion:Vt,platform:process.platform,release:px(),arch:process.arch,nodeVersion:process.versions.node});async function Rd(e,t){if(t.json!==void 0&&t.body!==void 0)throw new Error("httpRequest cannot accept both json and body");let n=new Headers(t.headers);n.set("user-agent",gx);let o=t.body;t.json!==void 0&&(n.set("content-type","application/json"),o=JSON.stringify(t.json));try{return await fetch(e,{method:t.method??(o===void 0?"GET":"POST"),headers:n,body:o,signal:AbortSignal.timeout(t.timeoutMs??fx),redirect:"follow"})}catch(r){let i=URL.canParse(e)?new URL(e).origin:e;throw new j(`\u65E0\u6CD5\u8FDE\u63A5 ${i}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:Rm,cause:r})}}async function Cd(e){let t=await e.text();if(t==="")return null;try{return JSON.parse(t)}catch{return null}}async function Jt(e,t={}){let n=await Rd(e,t);if(!n.ok)return{status:n.status,ok:!1,headers:n.headers,data:await Cd(n)};let o=await n.text(),r=null;if(o!=="")try{r=JSON.parse(o)}catch(i){throw new j(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:i})}return{status:n.status,ok:!0,headers:n.headers,data:r}}async function _d(e,t={}){let n=await Rd(e,t);if(!n.ok)return{status:n.status,ok:!1,headers:n.headers,data:await Cd(n),bytes:null};let o=new Uint8Array(await n.arrayBuffer());return{status:n.status,ok:!0,headers:n.headers,data:null,bytes:o}}function hx(e,t){let n=eu.safeParse(t);if(!n.success)return new j(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:o,message:r}=n.data.error,i=o==="unauthorized"||o==="token_expired"?ro:void 0;return new j(tu[o]??r,i?{exitCode:i}:{})}function sn(e){if(!e.ok)throw hx(e.status,e.data)}var Ed="cf_refresh",Md="cf_device",Pd=6e4;function Ad(e,t){for(let n of e.getSetCookie()){let o=n.split(";",1)[0];if(o===void 0)continue;let r=o.indexOf("=");if(!(r<0)&&o.slice(0,r).trim()===t)return o.slice(r+1).trim()}return null}function zr(e,t){return{refresh:Ad(t,Ed)??e.refresh,device:Ad(t,Md)??e.device}}function ts(e){let t=[];return e.refresh&&t.push(`${Ed}=${e.refresh}`),e.device&&t.push(`${Md}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function yx(e){let t=e.split(".")[1];if(t===void 0)throw new j("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u683C\u5F0F\u4E0D\u6B63\u786E");let n;try{n=JSON.parse(Buffer.from(t,"base64url").toString("utf8"))}catch(r){throw new j("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u65E0\u6CD5\u89E3\u6790",{cause:r})}let o=n.exp;if(typeof o!="number")throw new j("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u7F3A\u5C11\u6709\u6548\u671F");return o*1e3}function Vr(e,t,n){if(!t.refresh)throw new j("\u670D\u52A1\u7AEF\u672A\u4E0B\u53D1\u5237\u65B0\u51ED\u636E\uFF0C\u65E0\u6CD5\u4FDD\u6301\u767B\u5F55\u72B6\u6001");let o={refreshCookie:t.refresh,accessToken:n.accessToken,accessExpiresAt:yx(n.accessToken),username:n.user.username,email:n.user.email,site:e};return Va(r=>{r.session=o,t.device&&(r.device={site:e,cookie:t.device})}),o}function Vc(e){let{device:t}=Lt();return t!==null&&t.site===e?t.cookie:null}async function Id(e,t,n){let o={refresh:null,device:Vc(e)},r=await Jt(`${e}/api/auth/login`,{json:{account:t,password:n},headers:ts(o)});sn(r);let i=au.parse(r.data),s=zr(o,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:Vr(e,s,i)}}async function Nd(e,t,n,o,r){let s=await Jt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:n,code:o},headers:ts(t)});sn(s);let a=Go.parse(s.data);return Vr(e,zr(t,s.headers),a)}function ns(){Va(e=>{e.session=null})}async function bx(e){let t={refresh:e.refreshCookie,device:Vc(e.site)},n=await Jt(`${e.site}/api/auth/refresh`,{method:"POST",headers:ts(t)});if(n.status===401||n.status===403)throw ns(),new j("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:ro});sn(n);let o=Go.parse(n.data);return Vr(e.site,zr(t,n.headers),o)}async function Kr(e=!1){let t=Lm();return!e&&Date.now()<t.accessExpiresAt-Pd?t:Om(async()=>{let n=Nm().session;if(!n)throw new j("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:ro});return(n.refreshCookie!==t.refreshCookie||n.accessToken!==t.accessToken)&&Date.now()<n.accessExpiresAt-Pd?n:bx(n)})}async function os(){let e=Lt().session;if(!e)return;let t=await Jt(`${e.site}/api/auth/logout`,{method:"POST",headers:ts({refresh:e.refreshCookie,device:Vc(e.site)})});ns(),sn(t)}import{spawn as Sx}from"child_process";function Yr(e,t={}){return new Promise((n,o)=>{let r=Sx("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
4
+ `)){let u=l.trimEnd();u!==""&&(s.push(u),s.length>20&&s.shift())}};r.stdout.on("data",c=>{i.push(c.toString("utf8")),a(c)}),r.stderr.on("data",a),r.on("error",c=>o(new j(`\u6267\u884C npm \u5931\u8D25\uFF1A${c.message}`,{cause:c}))),r.on("close",c=>{if(c===0){n(i.join(""));return}let l=s.slice(-2).join(" / ");o(new j(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function Ld(e){let t=[],n=async(o,r)=>{try{await r(),e.done(o)}catch(i){t.push(`${o}\uFF1A${xe(i)}`),e.failed(o)}};return await n("\u9000\u51FA\u767B\u5F55",()=>os()),await n("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let o=kn();xx(o)&&Tx(o,{recursive:!0,force:!0})}),await n("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await Yr(["uninstall","-g",Bo])}),t}import{z as Jr}from"zod";var wx=Jr.object({line:Jr.object({name:Jr.string(),url:Jr.string()}).nullable(),lastUpdateCheckAt:Jr.number().nullable()}),Od=Ai(wx,{line:null,lastUpdateCheckAt:null},_m,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),fo=Od.load,rs=Od.update;var kx=1440*60*1e3;async function Dd(){let e=(await Yr(["view",Bo,"version"])).trim();if(e==="")throw new j(`npm \u6CA1\u6709\u62A5\u51FA ${Bo} \u7684\u7248\u672C`);return e}async function $d(e,t){return await Yr(["install","-g",`${Bo}@${e}`],{background:t}),e}async function Bd(){let e=await Dd();return e===Vt?null:await $d(e,!1)}function vx(){let e=Date.now(),t=fo().lastUpdateCheckAt;return t!==null&&e-t<kx?!1:(rs(n=>{n.lastUpdateCheckAt=e}),!0)}async function Fd(){if(!vx())return null;let e;try{e=await Dd()}catch{return null}return e===Vt?null:await $d(e,!0)}import{Box as AC,render as EC,useInput as MC}from"ink";import{useEffect as wm,useRef as IC}from"react";async function fn(e,t,n={}){let o=await Jt(t,n);return sn(o),e.parse(o.data)}async function P(e,t,n={}){let o=await Kr(),r=s=>Jt(`${o.site}/api${t}`,{...n,headers:{...n.headers,authorization:`Bearer ${s}`}}),i=await r(o.accessToken);if(i.status===401){let s=await Kr(!0);i=await r(s.accessToken)}return sn(i),e.parse(i.data)}async function Kc(e,t={}){let n=await Kr(),o=i=>_d(`${n.site}/api${e}`,{...t,headers:{...t.headers,authorization:`Bearer ${i}`}}),r=await o(n.accessToken);if(r.status===401){let i=await Kr(!0);r=await o(i.accessToken)}return sn(r),{bytes:r.bytes,headers:r.headers}}async function is(e,t={}){return(await Kc(e,t)).bytes}function je(e,t){let n=new URLSearchParams;for(let[r,i]of Object.entries(t))i!==void 0&&n.set(r,String(i));let o=n.toString();return o===""?e:`${e}?${o}`}var Ud=e=>P(lt(gc),je("/announcements",{...e})),jd=()=>P(gc.nullable(),"/announcements/unread"),ss=e=>P(se,`/announcements/${e}/read`,{method:"POST"});import{Box as Hd,useWindowSize as Rx}from"ink";import{Children as Cx}from"react";import{jsx as qd}from"react/jsx-runtime";var _x=1,Yc=1,Q=1;function H(){let{columns:e,rows:t}=Rx();return{width:Math.max(1,e-_x*2),columns:e,rows:t}}function Gd({height:e,children:t}){return qd(Hd,{flexDirection:"column",height:e,justifyContent:"space-between",children:Cx.toArray(t).map((n,o)=>qd(Hd,{flexDirection:"column",flexShrink:0,children:n},o))})}import{useInput as Wd}from"ink";import{createContext as ls,useCallback as Xc,useContext as Px,useEffect as zd,useMemo as Vd,useRef as cs,useState as Ax}from"react";import{jsx as as}from"react/jsx-runtime";var ms=ls(null),Qc=ls(null),Zc=ls(null);function Jc(){let[e,t]=Ax(!1),n=cs(0),o=Xc(()=>(n.current+=1,t(!0),()=>{n.current-=1,n.current===0&&t(!1)}),[]);return Vd(()=>({held:e,acquire:o}),[e,o])}var zn={screen:0,panel:10,input:20},el=ls(null);function Kd({children:e}){let t=Jc(),n=Jc(),o=Jc(),r=cs([]),i=cs(0),s=Xc(l=>{let u={...l,seq:i.current+=1};return r.current.push(u),()=>{r.current=r.current.filter(m=>m!==u)}},[]),a=Xc(()=>{r.current.reduce((u,m)=>u===null||m.layer>u.layer||m.layer===u.layer&&m.seq>u.seq?m:u,null)?.handler()},[]);Wd((l,u)=>{u.escape&&a()});let c=Vd(()=>({push:s,fire:a}),[s,a]);return as(ms.Provider,{value:t,children:as(Qc.Provider,{value:n,children:as(Zc.Provider,{value:o,children:as(el.Provider,{value:c,children:e})})})})}function go(e){let t=Px(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function tl(e,t){let{acquire:n}=go(e);zd(()=>{if(t)return n()},[t,n])}function us(e){tl(ms,e)}function Ce(e){tl(Qc,e)}function Yd(e){tl(Zc,e)}function ds(){return go(Qc).held}function ps(){return go(ms).held}function Jd(){return go(Zc).held}function G(e,t=!0){let n=go(ms).held;Wd(e,{isActive:t&&!n})}function Xd(){return go(el).fire}function gn(e,{isActive:t=!0,layer:n=zn.screen}={}){let{push:o}=go(el),r=cs(e);r.current=e,zd(()=>{if(t)return o({handler:()=>r.current(),layer:n})},[t,n,o])}import{measureElement as Ex}from"ink";import{PassThrough as Mx}from"stream";import{createContext as Ix,useCallback as Nx,useContext as Lx,useEffect as tp,useRef as fs}from"react";import{jsx as Gx}from"react/jsx-runtime";var Ox="\x1B[?1000h\x1B[?1003h\x1B[?1006h",Dx="\x1B[?1006l\x1B[?1003l\x1B[?1000l",$x=27,Bx=91,Fx=60,Qd=77,Zd=109,ep=20,Ux=64,jx=32,Hx=20;function qx(e){let t=[],n=[],o=0;for(;o<e.length;){let r=e[o];if(r===void 0)break;if(r!==$x){n.push(r),o+=1;continue}let i=e[o+1],s=e[o+2];if(i===void 0||s===void 0)break;if(i!==Bx){n.push(r),o+=1;continue}if(s===Qd){if(o+6>e.length)break;o+=6;continue}if(s!==Fx){n.push(r),o+=1;continue}let a=o+3,c;for(;a<e.length&&a-o<ep;){let d=e[a];if(d===Qd||d===Zd){c=d;break}a+=1}if(c===void 0){if(a-o<ep)break;n.push(r),o+=1;continue}let l=e.subarray(o+3,a).toString("latin1").split(";");if(o=a+1,c===Zd||l.length!==3)continue;let u=Number(l[0]),m=Number(l[1]),f=Number(l[2]);!Number.isFinite(u)||!Number.isFinite(m)||!Number.isFinite(f)||t.push((u&Ux)!==0?{row:f,column:m,kind:"wheel",delta:(u&1)===0?-1:1}:{row:f,column:m,kind:(u&jx)!==0?"move":"press"})}return{events:t,clean:Buffer.from(n),pending:e.subarray(o)}}function np(e,t){let n=new Set,o=new Mx,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(o.write(r),r=Buffer.alloc(0))},a=f=>{i!==null&&clearTimeout(i),i=null;let d=qx(Buffer.concat([r,f]));r=d.pending,d.clean.length>0&&o.write(d.clean);for(let h of d.events)for(let y of n)y(h);r.length>0&&(i=setTimeout(s,Hx))},c=()=>{t.write(Dx)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},u=f=>{process.exit(128+(l[f]??0))};e.on("data",a),process.once("exit",c);for(let f of Object.keys(l))process.on(f,u);t.write(Ox);let m=o;return Object.assign(m,{isTTY:!0,setRawMode(f){return e.setRawMode(f),m},ref(){return e.ref(),m},unref(){return e.unref(),m}}),{stdin:m,subscribe(f){return n.add(f),()=>{n.delete(f)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let f of Object.keys(l))process.off(f,u);e.off("data",a),n.clear()}}}var op=Ix(null);function rp({subscribe:e,children:t}){let n=fs(new Set).current,o=fs(null),r=Nx(i=>(n.add(i),()=>{n.delete(i)}),[n]);return tp(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let u of n){let m=u.node.current;if(m===null||u.handlers.current.isActive===!1)continue;let f=Ex(m);if(s<f.y||s>=f.y+f.height||a<f.x||a>=f.x+f.width)continue;let d=f.width*f.height;(c===null||d<c.area)&&(c={region:u,top:f.y,left:f.x,area:d})}if(i.kind==="move"){let u=c===null?null:c.region;if(o.current!==u){let m=o.current;m!==null&&n.has(m)&&m.handlers.current.onHoverLeave?.(),o.current=u}c!==null&&c.region.handlers.current.onHover?.({row:s-c.top,column:a-c.left});return}if(c===null)return;let l=c.region.handlers.current;i.kind==="wheel"?l.onWheel?.(i.delta):l.onClick?.({row:s-c.top,column:a-c.left})}),[e,n]),Gx(op.Provider,{value:r,children:t})}function rt(e){let t=Lx(op);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let n=fs(null),o=fs(e);return o.current=e,tp(()=>t({node:n,handlers:o}),[t]),n}import{useApp as Wx}from"ink";import{createContext as zx,useCallback as ho,useContext as Vx,useEffect as nl,useRef as hs,useState as Qr}from"react";var Tt=[{id:"usage",label:"\u6570\u636E\u770B\u677F"},{id:"tokens",label:"\u4EE4\u724C\u7BA1\u7406"},{id:"logs",label:"\u4F7F\u7528\u65E5\u5FD7"},{id:"models",label:"\u6A21\u578B\u5E7F\u573A"},{id:"docs",label:"\u4F7F\u7528\u6587\u6863"},{id:"recharge",label:"\u8D26\u6237\u5145\u503C"},{id:"subscription",label:"\u8BA2\u9605\u5957\u9910"},{id:"ledger",label:"\u989D\u5EA6\u6D41\u6C34"},{id:"invoices",label:"\u53D1\u7968\u7BA1\u7406"},{id:"invite",label:"\u9080\u8BF7\u597D\u53CB"},{id:"tickets",label:"\u5DE5\u5355\u652F\u6301"},{id:"community",label:"\u793E\u533A\u8BBA\u575B"},{id:"inbox",label:"\u7AD9\u5185\u6D88\u606F"},{id:"announcements",label:"\u7CFB\u7EDF\u516C\u544A"},{id:"profile",label:"\u4E2A\u4EBA\u4E3B\u9875"}],ip="usage",Xr=e=>Tt.findIndex(t=>t.id===e),gs=e=>Xr(e)>=0;import{jsx as Yx}from"react/jsx-runtime";var Kx=5e3,ap=zx(null),cp=e=>({id:e,params:void 0}),sp=()=>Lt().session===null?[{id:"home",params:void 0}]:[cp(ip)];function L(){let e=Vx(ap);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function lp({ctx:e,children:t}){let n=Wx(),[o,r]=Qr(sp),[i,s]=Qr(0),[a,c]=Qr([]),l=hs({announcementsChecked:!1,announcementsShown:!1}).current,u=hs(new WeakMap).current,m=ho((v,...M)=>{r(N=>[...N,{id:v,params:M[0]}])},[]),f=ho(()=>{r(v=>v.length>1?v.slice(0,-1):v),s(v=>v+1)},[]),d=ho(v=>{r([cp(v)]),s(M=>M+1)},[]),h=ho(()=>{r(sp()),s(v=>v+1)},[]),y=ho(()=>s(v=>v+1),[]),g=ho((v,M)=>{c(N=>[...N,{tone:v,message:M}])},[]),x=ho(()=>c(v=>v.slice(1)),[]),T=a[0]??null;nl(()=>{if(T===null)return;let v=setTimeout(x,Kx);return()=>clearTimeout(v)},[T,x]);let R=o[o.length-1];if(R===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let b=u.get(R);b===void 0&&(b=new Map,u.set(R,b));let S={ctx:e,current:R,depth:o.length,push:m,pop:f,select:d,home:h,reload:y,toast:g,message:T,dismissToast:x,exit:n.exit,revision:i,gate:l,retained:b};return Yx(ap.Provider,{value:S,children:t})}function Ie(e,t){let{retained:n}=L(),[o,r]=Qr(()=>e!==void 0&&n.has(e)?n.get(e):t());return nl(()=>{e!==void 0&&n.set(e,o)},[n,e,o]),[o,r]}function ee(e,t){let[n,o]=Qr({phase:"loading"}),r=hs(t);r.current=t;let i=hs(0);return nl(()=>{let s=i.current+=1;o({phase:"loading"}),r.current().then(a=>{i.current===s&&o({phase:"ready",data:a})}).catch(a=>{i.current===s&&o({phase:"error",message:xe(a),hint:a instanceof j?a.hint:void 0})})},e),n}import{Box as Ns,Text as xo,useInput as UT}from"ink";import{Box as ni,Text as tr}from"ink";import{Lexer as eT}from"marked";import Qo from"string-width";import Zr from"string-width";var p={background:"#0d0d0d",foreground:"#f3f3f3",mutedForeground:"#949494",faintForeground:"#696969",cursorBackground:"#c8c8c8",border:"#393939",accent:"#37be95",success:"#34d399",warning:"#fbbf24",danger:"#f87171"},ys=["#242424","#5a4233","#746533","#70924f","#37be95"],bs=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],tt={accent:p.accent,success:p.success,warning:p.warning,danger:p.danger},Xo=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Ss=80,ie={cursor:"\u276F",bullet:"\xB7",dot:"\u2219",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var Jx=Zr(ie.ellipsis),Xx=new Intl.Segmenter(void 0,{granularity:"grapheme"}),ol=e=>Array.from(Xx.segment(e),t=>t.segment),Qx=(e,t)=>e+" ".repeat(Math.max(0,t-Zr(e))),Zx=(e,t)=>" ".repeat(Math.max(0,t-Zr(e)))+e;function Ge(e,t){if(t<=0)return"";if(Zr(e)<=t)return e;let n=t-Jx,o="";for(let r of ol(e)){if(Zr(o+r)>n)break;o+=r}return o+ie.ellipsis}var Vn=e=>e.replaceAll(" "," "),Qe=(e,t)=>Qx(Ge(e,t),t),Kn=(e,t)=>Zx(Ge(e,t),t),_e=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${ie.bullet} `);var tT=e=>e.startsWith("#")||Oi(e)!==null,nT={spans:[]},xs=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function mp(e){let t=[];for(let n of e){let o=t[t.length-1];o!==void 0&&o.color===n.color&&o.bold===n.bold?o.text+=n.ch:t.push({text:n.ch,color:n.color,bold:n.bold})}return{spans:t}}var oT=new Set([..."\uFF0C\u3002\u3001\uFF1B\uFF1A\uFF01\uFF1F\uFF09\u300D\u300F\u3011\u300B\u2026\u201D\u2019,.;:!?)]}"]),rT=new Set([..."\uFF08\u300C\u300E\u3010\u300A\u201C\u2018([{"]),iT=(e,t)=>(Qo(e)>1||Qo(t)>1)&&!rT.has(e)&&!oT.has(t);function sT(e,t,n){for(let o=e.length;o>n;o-=1){if(e[o]?.ch===" ")return{end:o,carry:o+1};let r=e[o-1]?.ch,i=o===e.length?t:e[o]?.ch;if(r!==void 0&&i!==void 0&&r!==" "&&iT(r,i))return{end:o,carry:o}}return null}function aT(e){let t=[],n=0,o=0,r=0;for(let i of ol(e.map(s=>s.text).join(""))){let s=e[n];for(;s!==void 0&&r>=o+s.text.length;)o+=s.text.length,n+=1,s=e[n];if(s===void 0)break;t.push({ch:i,color:s.color,bold:s.bold}),r+=i.length}return t}function Pt(e,t,n=0){let o=()=>Array.from({length:n},()=>({ch:" "})),r=[],i=[],s=0,a=()=>{r.push(mp(i)),i=o(),s=n};for(let c of aT(e)){let{ch:l}=c;if(l===`
5
+ `||l===`\r
6
+ `){a();continue}let u=Qo(l);if(s+u>t&&i.length>n){if(l===" "){a();continue}let m=sT(i,l,n),f=m===null?[]:i.slice(m.carry),d=f.reduce((h,y)=>h+Qo(y.ch),0);m===null||n+d+u>t?a():(i=i.slice(0,m.end),a(),i=[...i,...f],s=n+d)}i.push(c),s+=u}return(i.length>0||r.length===0)&&r.push(mp(i)),r}var pp=(e,t)=>t==="docs"?e.replaceAll(`
7
+ `," "):e;function an(e,t,n){if(e===void 0)return[];let o=[];for(let r of e)switch(r.type){case"text":o.push(..."tokens"in r&&r.tokens!==void 0?an(r.tokens,t,n):[{text:pp(r.text,n),...t}]);break;case"strong":o.push(...an(r.tokens,{...t,bold:!0},n));break;case"em":o.push(...an(r.tokens,t,n));break;case"del":o.push(...an(r.tokens,{...t,color:p.faintForeground},n));break;case"codespan":o.push({text:r.text,color:p.accent,bold:t.bold});break;case"link":{let i=an(r.tokens,{...t,color:p.accent},n);o.push(...i);let s=i.map(a=>a.text).join("");r.href!==s&&!(n==="docs"&&tT(r.href))&&o.push({text:`\uFF08${r.href}\uFF09`,color:p.faintForeground});break}case"image":if(n==="docs"){o.push({text:r.text===""?"[\u56FE\u7247]":`[\u56FE\u7247] ${r.text}`,color:p.mutedForeground});break}o.push({text:r.text===""?"\u56FE\u7247":r.text,...t}),o.push({text:`\uFF08${r.href}\uFF09`,color:p.faintForeground});break;case"br":o.push({text:`
8
+ `});break;case"escape":o.push({text:r.text,...t});break;default:o.push({text:r.raw,...t})}return o}var up=2,dp=e=>e.reduce((t,n)=>t+Qo(n.text),0);function cT(e,t,n,o,r){let i=e.map(d=>({spans:an(d.tokens,{bold:!0,color:p.foreground},r),align:d.align})),s=t.map(d=>d.map(h=>({spans:an(h.tokens,{color:p.foreground},r),align:h.align}))),a=o-(e.length+1)-e.length*2;if(a<e.length*up)return Pt([{text:n,color:p.foreground}],o);let c=e.map(()=>up);for(let d of[i,...s])d.forEach((h,y)=>{for(let g of Pt(h.spans,Number.MAX_SAFE_INTEGER)){let x=c[y],T=dp(g.spans);x!==void 0&&T>x&&(c[y]=T)}});let l=c.reduce((d,h)=>d+h,0);for(;l>a;){let d=0,h=0;c.forEach((y,g)=>{y>h&&(d=g,h=y)}),c[d]=h-1,l-=1}let u=d=>({text:d,color:p.faintForeground}),m=(d,h,y)=>({spans:[u(`${d}${c.map(g=>"\u2500".repeat(g+2)).join(h)}${y}`)]}),f=d=>{let h=c.map((x,T)=>{let R=d[T];return{width:x,align:R?.align??null,lines:Pt(R?.spans??[],x)}}),y=h.reduce((x,T)=>Math.max(x,T.lines.length),1),g=[];for(let x=0;x<y;x+=1){let T=[];for(let R of h){let b=R.lines[x]?.spans??[],S=R.width-dp(b),v=R.align==="right"?S:R.align==="center"?Math.floor(S/2):0;T.push(u("\u2502"),{text:` ${" ".repeat(v)}`}),T.push(...b),T.push({text:`${" ".repeat(S-v)} `})}T.push(u("\u2502")),g.push({spans:T})}return g};return[m("\u250C","\u252C","\u2510"),...f(i),m("\u251C","\u253C","\u2524"),...s.flatMap(f),m("\u2514","\u2534","\u2518")]}function rl(e,t,n){let o=[],r=()=>{o.length>0&&!xs(o[o.length-1])&&o.push(nT)};for(let i of e)switch(i.type){case"space":r();break;case"heading":{let s=an(i.tokens,{bold:!0,color:p.foreground},n),a=i.depth<=2?[{text:`${ie.section} `,color:p.accent},...s]:s,c=n==="docs"?Cu(i.text):void 0;Pt(a,t,i.depth<=2?2:0).forEach((l,u)=>o.push(u===0?{...l,anchor:c}:l)),r();break}case"paragraph":o.push(...Pt(an(i.tokens,{color:p.foreground},n),t)),r();break;case"text":o.push(...Pt("tokens"in i&&i.tokens!==void 0?an(i.tokens,{color:p.foreground},n):[{text:pp(i.text,n),color:p.foreground}],t));break;case"code":for(let s of i.text.split(`
9
+ `))o.push(...Pt([{text:` ${s}`,color:p.mutedForeground}],t,2));r();break;case"blockquote":{let s=rl(i.tokens??[],Math.max(4,t-2),n);for(;s.length>0&&xs(s[s.length-1]);)s.pop();for(let a of s)o.push({spans:[{text:`${ie.section} `,color:p.accent},...a.spans.map(c=>({...c,color:c.color??p.mutedForeground}))]});r();break}case"list":{let s=i.ordered===!0,a=typeof i.start=="number"?i.start:1;i.items.forEach((c,l)=>{let u=s?`${a+l}. `:`${ie.bullet} `,m=Qo(u),f=rl(c.tokens,Math.max(4,t-m),n);f.forEach((d,h)=>{xs(d)&&h===f.length-1||o.push({spans:h===0?[{text:u,color:p.mutedForeground},...d.spans]:[{text:" ".repeat(m)},...d.spans]})})}),r();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:p.faintForeground}]}),r();break;case"table":o.push(...cT(i.header,i.rows,i.raw,t,n)),r();break;default:o.push(...Pt([{text:i.raw,color:p.foreground}],t))}return o}var il=(e,t)=>an(e,{},t).map(n=>n.text).join("");function hn(e,t,n="default"){let o=eT.lex(Vn(e),{gfm:!0,breaks:n!=="docs"}),r=rl(o,Math.max(8,t),n);for(;r.length>0&&xs(r[r.length-1]);)r.pop();return r}import{Text as cn,useInput as lT}from"ink";import{useImperativeHandle as mT,useRef as fp,useEffect as uT,useState as hp}from"react";import sl from"string-width";import{jsx as yn,jsxs as al}from"react/jsx-runtime";var dT=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function gp(e,t,n){let o=t,r=0;for(;o>0;){let s=sl(e[o-1]??"");if(r+s>n)break;r+=s,o-=1}let i=t;for(r+=1;i<e.length;){let s=sl(e[i]??"");if(r+s>n)break;r+=s,i+=1}return{start:o,before:e.slice(o,t).join(""),at:e[t]??" ",after:e.slice(t+1,i).join("")}}function ei({char:e}){return yn(cn,{backgroundColor:p.cursorBackground,color:p.foreground,children:e})}function Zo({value:e,onChange:t,onSubmit:n,placeholder:o,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,u]=hp(c.length),m=Math.min(l,c.length),f=Math.max(8,s),d=fp(e),h=fp(m);d.current=e,h.current=m,us(i);let y=S=>{h.current=S,u(S)},g=(S,v)=>{d.current=S,y(v),t(S)};if(mT(a,()=>({moveToColumn:S=>{let v=[...d.current],M=r?Array.from({length:v.length},()=>"\u2022"):v,O=gp(M,Math.min(h.current,v.length),f).start,U=0;for(;O<v.length;){let C=sl(M[O]??"");if(U+C>S)break;U+=C,O+=1}y(O)}})),lT((S,v)=>{let M=[...d.current],N=Math.min(h.current,M.length);if(v.return){n(d.current);return}if(v.tab||v.upArrow||v.downArrow)return;if(v.leftArrow){y(Math.max(0,N-1));return}if(v.rightArrow){y(Math.min(M.length,N+1));return}if(v.home){y(0);return}if(v.end){y(M.length);return}if(v.backspace){if(N===0)return;g([...M.slice(0,N-1),...M.slice(N)].join(""),N-1);return}if(v.delete){if(N>=M.length)return;g([...M.slice(0,N),...M.slice(N+1)].join(""),N);return}if(v.ctrl){if(S==="a")y(0);else if(S==="e")y(M.length);else if(S==="k")g(M.slice(0,N).join(""),N);else if(S==="u")g(M.slice(N).join(""),0);else if(S==="w"){let w=N;for(;w>0&&M[w-1]===" ";)w-=1;for(;w>0&&M[w-1]!==" ";)w-=1;g([...M.slice(0,w),...M.slice(N)].join(""),w)}return}if(v.meta||!S)return;let O=S.search(/[\r\n]/),U=dT(O===-1?S:S.slice(0,O)),C=[...M.slice(0,N),U,...M.slice(N)].join("");g(C,N+[...U].length),O!==-1&&n(C)},{isActive:i}),e===""){let S=[...o??""];return i?al(cn,{children:[yn(ei,{char:S[0]??" "}),yn(cn,{color:p.faintForeground,children:S.slice(1).join("")})]}):yn(cn,{color:p.faintForeground,children:S.join("")})}let x=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return yn(cn,{color:p.foreground,children:x.join("")});let{before:T,at:R,after:b}=gp(x,m,f);return al(cn,{children:[yn(cn,{color:p.foreground,children:T}),yn(ei,{char:R}),yn(cn,{color:p.foreground,children:b})]})}function De({label:e}){let[t,n]=hp(0);return uT(()=>{let o=setInterval(()=>n(r=>(r+1)%Xo.length),Ss);return()=>clearInterval(o)},[]),al(cn,{children:[yn(cn,{color:p.accent,children:Xo[t]}),yn(cn,{color:p.mutedForeground,children:` ${e}`})]})}import{Box as Sp,Text as er}from"ink";import{useEffect as Tp,useState as fT}from"react";import xp from"string-width";import{Box as yp,Text as Ts}from"ink";import pT from"string-width";import{jsx as ti,jsxs as bp}from"react/jsx-runtime";var pe=2,Bt=1,We=1,Ze=Bt+We;function Rn({title:e,note:t,width:n}){let o=t===void 0?0:pT(t)+2,r=Math.max(0,n-pe-o);return bp(Ts,{wrap:"truncate",children:[ti(Ts,{color:p.accent,children:`${ie.section} `}),ti(Ts,{bold:!0,color:p.foreground,children:Ge(e,r)}),t!==void 0&&ti(Ts,{color:p.faintForeground,children:` ${t}`})]})}function de({title:e,note:t,width:n,gap:o=We,children:r}){return bp(yp,{flexDirection:"column",children:[ti(Rn,{title:e,note:t,width:n}),ti(yp,{flexDirection:"column",marginTop:o,paddingLeft:pe,children:r})]})}import{jsx as Cn,jsxs as kp}from"react/jsx-runtime";var yo=e=>!("heading"in e),gT=e=>e.flatMap(t=>!yo(t)&&t.heading!==""?[t,{heading:""}]:[t]),wp=2,ws=2,hT=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function yT(e,t,n,o){let[r,i]=Ie(o,()=>e.findIndex(u=>yo(u)&&u.disabled!==!0));Tp(()=>{i(u=>{let m=Math.min(u,e.length-1);for(let f=0;f<e.length;f+=1)for(let d of[m-f,m+f]){let h=e[d];if(h!==void 0&&yo(h)&&h.disabled!==!0)return d}return Math.max(0,m)})},[e.length]);let s=u=>{i(m=>{let f=e.length;if(f===0)return m;let d=m;for(let h=0;h<f;h+=1){d=(d+u+f)%f;let y=e[d];if(y!==void 0&&yo(y)&&y.disabled!==!0)return d}return m})},a=u=>{let m=e[u];return m!==void 0&&yo(m)&&m.disabled!==!0?m:null},c=u=>{a(u)!==null&&i(u)},l=u=>{let m=a(u);m!==null&&(i(u),n(m.value))};return G((u,m)=>{if(m.upArrow||u==="k"){s(-1);return}if(m.downArrow||u==="j"){s(1);return}m.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function cl(e,t){let[n,o]=fT(()=>e>=t?e-t+1:0);return Tp(()=>{o(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),n}function bT(e,t){let n=e.filter(yo),o=Math.max(0,...n.map(s=>xp(s.label))),r=Math.max(0,...n.map(s=>s.badge===void 0?0:xp(s.badge))),i=wp+o+(r>0?r+ws:0)+ws;return{label:o,badge:r,hint:Math.max(0,t-i)}}function ST({item:e,active:t,metrics:n}){let o=e.disabled===!0,r=o?p.faintForeground:e.labelTone!==void 0?tt[e.labelTone]:t?p.accent:p.foreground;return kp(er,{wrap:"truncate",children:[Cn(er,{color:p.accent,children:t?`${ie.cursor} `:" "}),Cn(er,{color:r,bold:t,children:Qe(e.label,n.label)}),n.badge>0&&Cn(er,{color:e.badgeTone===void 0?p.faintForeground:tt[e.badgeTone],children:`${" ".repeat(ws)}${Qe(e.badge??"",n.badge)}`}),e.hint!==void 0&&n.hint>0&&Cn(er,{color:o||!t?p.faintForeground:p.mutedForeground,children:`${" ".repeat(ws)}${Ge(e.hint,n.hint)}`})]})}function xT({items:e,cursor:t,metrics:n,window:o,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=cl(t,o),u=e.slice(l,l+o),m=d=>d<u.length?l+d:null,f=rt({isActive:i,onWheel:c,onClick:({row:d})=>{let h=m(d);h!==null&&s(h)},onHover:({row:d})=>{let h=m(d);h!==null&&a(h)}});return kp(Sp,{ref:f,flexDirection:"column",children:[u.map((d,h)=>{let y=l+h;return yo(d)?Cn(ST,{item:d,active:y===t&&i,metrics:n},y):d.heading===""?Cn(Sp,{height:1},y):Cn(Rn,{title:d.heading,width:r},y)}),e.length>o&&Cn(er,{color:p.faintForeground,children:`${" ".repeat(wp)}${l+1}-${Math.min(l+o,e.length)} / ${e.length}`})]})}function ce({items:e,onSelect:t,width:n,height:o,isActive:r=!0,retain:i}){let s=gT(e),a=yT(s,r,t,i);return Cn(xT,{items:s,cursor:a.index,metrics:bT(s,n),window:hT(s.length,o),width:n,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as Xt,jsxs as ks}from"react/jsx-runtime";var vp={ok:{glyph:ie.ok,color:p.success},warn:{glyph:ie.warn,color:p.warning},fail:{glyph:ie.fail,color:p.danger},info:{glyph:ie.bullet,color:p.mutedForeground}},ll=2,ml=(e,t)=>Pt([{text:Vn(e)}],t-ll).map(n=>n.spans.map(o=>o.text).join("")),ul=(e,t,n)=>ml(e,n).length+(t===void 0?0:ml(t,n).length);function he({tone:e,title:t,detail:n,width:o,wrap:r=!1}){let i=vp[e],s=c=>r?ml(c,o):[Ge(c,o-ll)],a=" ".repeat(ll);return ks(ni,{flexDirection:"column",children:[s(t).map((c,l)=>ks(tr,{children:[Xt(tr,{color:i.color,children:l===0?`${i.glyph} `:a}),Xt(tr,{color:p.foreground,children:c})]},l)),n!==void 0&&s(n).map((c,l)=>Xt(tr,{color:p.faintForeground,children:`${a}${c}`},`detail-${l}`))]})}function Ft({message:e,hint:t,width:n}){return Xt(he,{tone:"fail",title:e,detail:t,width:n})}var TT=2,wT=2;function Rp({tone:e,message:t,width:n,onDismiss:o}){let r=vp[e],i=rt({onClick:o});return ks(ni,{ref:i,children:[Xt(tr,{backgroundColor:p.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),Xt(tr,{backgroundColor:p.border,color:p.foreground,wrap:"truncate",children:`${Ge(t,n-TT-wT)} `})]})}function Ae({title:e,detail:t,confirmLabel:n,onConfirm:o,onCancel:r,width:i,busy:s,error:a}){return ks(ni,{flexDirection:"column",children:[Xt(he,{tone:"warn",title:e,detail:t,width:i}),a!=null&&Xt(ni,{marginTop:1,children:Xt(Ft,{message:a.message,hint:a.hint,width:i})}),Xt(ni,{marginTop:1,children:typeof s=="string"?Xt(De,{label:s}):Xt(ce,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:n,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?o():r()})})]})}import{Box as kT,Text as vs,useInput as vT}from"ink";import{useRef as RT}from"react";import{jsx as Rs,jsxs as CT}from"react/jsx-runtime";function dt({lines:e,height:t,isActive:n=!0,pinBottom:o=!1,pageKeysOnly:r=!1,start:i=0,retain:s}){let a=e.length>t,c=a?Math.max(1,t-1):t,l=Math.max(0,e.length-c),[u,m]=Ie(s,()=>o?l:Math.min(i,l)),f=RT(l);if(l!==f.current||u>l){let g=u>=f.current;f.current=l;let x=o&&g?l:Math.min(u,l);x!==u&&m(x)}let d=g=>m(x=>Math.min(Math.max(0,x+g),l));vT((g,x)=>{x.pageUp?d(-c):x.pageDown?d(c):!r&&x.upArrow?d(-1):!r&&x.downArrow&&d(1)},{isActive:n&&a}),G(g=>{g==="k"?d(-1):g==="j"&&d(1)},n&&a&&!r);let h=rt({isActive:n&&a,onWheel:d}),y=e.slice(u,u+c);return CT(kT,{ref:h,flexDirection:"column",children:[y.map((g,x)=>Rs(vs,{wrap:"truncate",children:g.spans.length===0?" ":g.spans.map((T,R)=>Rs(vs,{color:T.color??p.foreground,bold:T.bold===!0,children:T.text},R))},u+x)),Array.from({length:Math.max(0,c-y.length)},(g,x)=>Rs(vs,{children:" "},x)),a&&Rs(vs,{color:p.faintForeground,wrap:"truncate",children:`${u+1}-${Math.min(u+c,e.length)} / ${e.length}`})]})}function ht(e){return e.tone==="neutral"?void 0:e.tone}function yt(e){let t=ht(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as dl,useRef as _T,useState as Cp}from"react";function le(){let e=L(),[t,n]=Cp(null),[o,r]=Cp(null),i=_T(0),s=dl(()=>{i.current+=1,n(null),r(null)},[]),a=dl((l,u)=>{r({message:l,hint:u})},[]),c=dl((l,u,m={})=>{let f=i.current+=1;n(l),r(null),u().then(d=>{i.current===f&&(n(null),m.onSuccess?.(d))}).catch(d=>{if(i.current!==f)return;n(null);let h={message:xe(d),hint:d instanceof j?d.hint:void 0};m.failToast===!0?e.toast("fail",h.message):r(h)})},[e]);return{busy:t,error:o,reset:s,fail:a,run:c}}import{Box as rr}from"ink";import{Box as PT,Text as _p}from"ink";import Ap from"string-width";import{jsx as Pp,jsxs as AT}from"react/jsx-runtime";var Cs=["\u2588\u2580\u2580 \u2588\u2580\u2588 \u2588\u2580\u2584 \u2588\u2580\u2580 \u2588\u2580\u2580 \u2588 \u2588\u2580\u2588 \u2588 \u2588 \u2588","\u2588\u2584\u2584 \u2588\u2584\u2588 \u2588\u2584\u2580 \u2588\u2584\u2584 \u2588\u2580\u2580 \u2588\u2584\u2584 \u2588\u2584\u2588 \u2580\u2584\u2580\u2584\u2580"],Ep=Math.max(...Cs.map(e=>Ap(e))),_s=Cs.length,Ps=e=>Ep<=e;function As({width:e}){let t=`v${Vt}`,n=Ep+2+Ap(t)<=e;return Pp(PT,{flexDirection:"column",children:Cs.map((o,r)=>AT(_p,{color:p.accent,children:[o,r===Cs.length-1&&n&&Pp(_p,{color:p.faintForeground,children:` ${t}`})]},o))})}import{Box as gl,Text as wt}from"ink";import{useState as Mp}from"react";import bo from"string-width";import{jsx as Qt,jsxs as or}from"react/jsx-runtime";var Es=2,pl=` ${ie.crumb} `;function Ms({trail:e,width:t,onBack:n,isActive:o}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((f,d)=>f+bo(d)+bo(pl),0),a=s+bo(r)<=t,c=a?s:0,[l,u]=Mp(!1),m=rt({isActive:o,onClick:({column:f})=>{f<c&&n()},onHover:({column:f})=>u(f<c),onHoverLeave:()=>u(!1)});return Qt(gl,{ref:m,marginBottom:1,children:a?or(wt,{children:[i.map((f,d)=>or(wt,{children:[Qt(wt,{color:d===0?p.accent:l&&o?p.foreground:p.mutedForeground,children:f}),Qt(wt,{color:p.faintForeground,children:pl})]},d)),Qt(wt,{bold:!0,color:p.foreground,children:r})]}):Qt(wt,{color:p.mutedForeground,children:Ge(e.join(pl),t)})})}var fl=2,oi=2,nr=2;function Ip({current:e,width:t,onPick:n,isActive:o,unread:r}){let i=Math.max(0,Xr(e)),[s,a]=Mp(null),c=S=>r[S.id]===!0,l=S=>c(S)?`${S.label} ${ie.dot}`:S.label,u=Math.max(...Tt.map(S=>bo(S.label))),m=Tt.some(c)?bo(` ${ie.dot}`):0,d=(S=>S*u+(S-1)*oi+fl+m)(Tt.length)>t,h=d?t-nr*2:t,y=d?Math.max(1,Math.floor((h-m+oi-fl)/(u+oi))):Tt.length,g=Math.min(Math.max(0,i-Math.floor((y-1)/2)),Tt.length-y),x=Tt.slice(g,g+y),T=[],R=d?nr:0;x.forEach((S,v)=>{v>0&&(R+=oi);let M=bo(l(S))+(S.id===e?fl:0);T.push({id:S.id,from:R,to:R+M}),R+=M});let b=rt({isActive:o,onHover:({column:S})=>{let v=T.find(M=>S>=M.from&&S<M.to);a(v?.id??null)},onHoverLeave:()=>a(null),onClick:({column:S})=>{let v=T.find(N=>S>=N.from&&S<N.to);if(v!==void 0){n(v.id);return}if(!d||S>=nr&&S<R)return;let M=S<nr?Tt[g-1]:Tt[g+y];M!==void 0&&n(M.id)}});return Qt(gl,{ref:b,marginBottom:1,children:or(wt,{wrap:"truncate",children:[d&&Qt(wt,{color:p.border,children:g>0?`${ie.prev} `:" ".repeat(nr)}),x.map((S,v)=>{let M=c(S)&&Qt(wt,{color:p.danger,children:` ${ie.dot}`});return or(wt,{children:[v>0&&" ".repeat(oi),S.id===e?or(wt,{backgroundColor:p.foreground,color:p.background,bold:!0,children:[` ${S.label}`,M," "]}):or(wt,{children:[Qt(wt,{color:o&&S.id===s?p.foreground:p.mutedForeground,children:S.label}),M]})]},S.id)}),d&&Qt(wt,{color:p.border,children:g+y<Tt.length?` ${ie.next}`:" ".repeat(nr)})]})})}var ET=2;function Np(e,t){let n=[];for(let o of e){let r=n[n.length-1];if(r!==void 0&&bo(_e([...r,o]))<=t)r.push(o);else if(n.length<ET)n.push([o]);else break}return n.map(_e)}function Lp({lines:e}){return Qt(gl,{flexDirection:"column",flexShrink:0,children:e.map((t,n)=>Qt(wt,{wrap:"truncate",color:p.faintForeground,children:t},n))})}import{createContext as MT,useCallback as IT,useContext as NT,useEffect as Fp,useMemo as LT,useRef as Up,useState as OT}from"react";var Op=e=>P(lt(nd),je("/inbox",{...e})),Dp=()=>P(od,"/inbox/unread"),$p=e=>P(se,`/inbox/${e}/read`,{method:"POST"}),Bp=()=>P(se,"/inbox/read-all",{method:"POST"});import{jsx as $T}from"react/jsx-runtime";var DT=6e4,jp=MT(null);function Hp({children:e}){let{revision:t,toast:n}=L(),[o,r]=OT(!1),i=Up(0),s=Up(!1),a=IT(()=>{let l=i.current+=1;if(Lt().session===null){r(!1);return}Dp().then(u=>{s.current=!1,i.current===l&&r(u.unread)},u=>{i.current!==l||s.current||(s.current=!0,n("warn",`\u7AD9\u5185\u6D88\u606F\u672A\u8BFB\u72B6\u6001\u83B7\u53D6\u5931\u8D25\uFF1A${xe(u)}`))})},[n]);Fp(a,[t,a]),Fp(()=>{let l=setInterval(a,DT);return()=>clearInterval(l)},[a]);let c=LT(()=>({any:o,refresh:a}),[o,a]);return $T(jp.Provider,{value:c,children:e})}function Is(){let e=NT(jp);if(!e)throw new Error("useUnread \u5FC5\u987B\u5728 UnreadProvider \u5185\u4F7F\u7528");return e}import{Fragment as FT,jsx as kt,jsxs as Wp}from"react/jsx-runtime";var qp=3,BT=8;function ri(e){let{rows:t}=H();return Math.max(1,t-Yc-qp-e)}function Gp(){let e=L(),{width:t,rows:n}=H(),o=e.current.id,r=e.depth===1&&gs(o)?o:null,i=Math.max(1,n-Yc-qp),s=_s+Q,a=r!==null&&Ps(t)&&i-Es-s>=BT;return{tab:r,mark:a,rows:a?Es+s:Es}}var te=()=>ri(Gp().rows);function So({header:e,hints:t,children:n}){let{width:o}=H(),{message:r,dismissToast:i}=L(),s=Np(t,o);return Wp(rr,{flexDirection:"column",flexGrow:1,children:[kt(rr,{flexDirection:"column",flexShrink:0,children:e}),kt(rr,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:kt(rr,{flexDirection:"column",flexShrink:0,children:n})}),kt(rr,{height:1,marginTop:s.length>1?0:1,flexShrink:0,justifyContent:"flex-end",children:r!==null&&kt(Rp,{tone:r.tone,message:r.message,width:o,onDismiss:i})}),kt(Lp,{lines:s})]})}function K({trail:e,hints:t=[],children:n,onEscape:o,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=L(),{width:c}=H(),{tab:l,mark:u}=Gp(),m=Is(),f=ds(),d=ps(),h=Jd(),y=r&&!h,g=y?t:t.filter(S=>S!=="Esc \u8FD4\u56DE"),x=d||f?[]:[...r?["[] \u5207\u529F\u80FD"]:[],"q \u9000\u51FA","? \u5E2E\u52A9"],T=[...y?["Esc \u8FD4\u56DE"]:[],...d||f?[]:["? \u5E2E\u52A9"]];gn(o??a.pop,{isActive:r});let R=Xd(),b=r&&!i&&!f;return G(S=>{if(l===null||S!=="["&&S!=="]")return;let v=Tt[(Xr(l)+(S==="["?-1:1)+Tt.length)%Tt.length];v!==void 0&&a.select(v.id)},r&&!i&&!f&&!s),s?kt(So,{header:null,hints:i?g:[...g,...T],children:n}):l!==null?kt(So,{header:Wp(FT,{children:[u&&kt(rr,{marginBottom:Q,children:kt(As,{width:c})}),kt(Ip,{current:l,width:c,onPick:S=>{S===l?R():a.select(S)},isActive:b,unread:{inbox:m.any}})]}),hints:i?g:[...g,...x],children:n}):kt(So,{header:kt(Ms,{trail:["CodeFlow",...e??[]],width:c,onBack:R,isActive:b}),hints:i?g:[...g,...T],children:n})}function W({state:e,loading:t,width:n,children:o}){return e.phase==="loading"?kt(De,{label:t}):e.phase==="error"?kt(Ft,{message:e.message,hint:e.hint,width:n}):o(e.data)}import{jsx as Zt,jsxs as hl}from"react/jsx-runtime";function zp({params:e}){let t=L(),{width:n}=H(),o=te(),{item:r}=e,{busy:i,error:s,run:a}=le();UT((m,f)=>{f.return&&a("\u6B63\u5728\u786E\u8BA4",()=>ss(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=Wr(r.level),l=ht(c),u=Math.max(3,o-4-(s===null?0:2));return Zt(K,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:hl(Ns,{flexDirection:"column",children:[hl(xo,{wrap:"truncate",children:[Zt(xo,{bold:!0,color:p.foreground,children:r.title}),Zt(xo,{color:l===void 0?p.mutedForeground:tt[l],children:` ${c.label}`}),Zt(xo,{color:p.faintForeground,children:` \u53D1\u5E03\u4E8E ${V(r.publishedAt)}`})]}),Zt(Ns,{marginTop:1,children:Zt(dt,{lines:hn(r.content,n),height:u})}),s!==null&&Zt(Ns,{marginTop:1,children:Zt(Ft,{message:s.message,hint:s.hint,width:n})}),Zt(Ns,{marginTop:1,children:i!==null?Zt(De,{label:i}):hl(xo,{wrap:"truncate",children:[Zt(xo,{color:p.accent,children:`${ie.cursor} `}),Zt(xo,{bold:!0,color:p.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as wl,Text as Ls}from"ink";import{useState as XT}from"react";import{Box as yl,Text as _n}from"ink";import{useEffect as bl,useRef as jT,useState as Vp}from"react";import Sl from"string-width";import{jsx as Yn,jsxs as si}from"react/jsx-runtime";var Kp=e=>e===void 0?"":typeof e=="string"?e:e.text,xl=2,HT=6;function qT(e,t,n){let o=e.map(a=>t===0?n/e.length:n*a/t),r=o.map(a=>Math.floor(a)),i=n-r.reduce((a,c)=>a+c,0),s=o.map((a,c)=>({i:c,fraction:a-Math.floor(a)})).sort((a,c)=>c.fraction-a.fraction);for(let{i:a}of s){if(i<=0)break;r[a]=(r[a]??0)+1,i-=1}return e.map((a,c)=>a+(r[c]??0))}function Tl(e,t,n){let o=e.map((c,l)=>Math.max(Sl(c.label),...t.map(u=>Sl(u[l]??"")))),r=o.reduce((c,l)=>c+l,0),i=r+xl*Math.max(0,e.length-1)-n;if(i<0)return qT(o,r,-i);e.forEach((c,l)=>{if(c.cap===void 0||i<=0)return;let u=Math.min(i,Math.max(0,(o[l]??0)-c.cap));o[l]=(o[l]??0)-u,i-=u});let s=e.flatMap((c,l)=>c.shrink===!0||c.cap!==void 0?[l]:[]),a=s.length>0?s:e.map((c,l)=>l);for(;i>0;){let c=a.filter(l=>(o[l]??0)>HT).sort((l,u)=>(o[u]??0)-(o[l]??0))[0];if(c===void 0)break;o[c]=(o[c]??0)-1,i-=1}return o}var GT=(e,t,n)=>t.map((o,r)=>o.align==="right"?Kn(e[r]??"",n[r]??0):Qe(e[r]??"",n[r]??0)).join(" ".repeat(xl)),ii=2,WT=2;function ue({items:e,columns:t,row:n,width:o,height:r,onOpen:i,searchOf:s,isActive:a=!0,emptyLabel:c="\u6682\u65E0\u6570\u636E",emptyDescription:l,retain:u,select:m}){let f=D=>u===void 0?void 0:`${u}:${D}`,d=i!==void 0,[h,y]=Ie(d?f("cursor"):void 0,()=>0),[g,x]=Ie(f("query"),()=>""),[T,R]=Vp(!1),b=g.trim().toLowerCase(),S=b===""||s===void 0?e:e.filter(D=>s(D).toLowerCase().includes(b)),v=T||b!=="",M=Math.max(1,r-1-(v?1:0)),N=S.length>M?Math.max(1,M-1):M,O=Math.max(0,S.length-N),[U,C]=Vp(()=>h>=N?h-N+1:0);bl(()=>{y(D=>Math.min(D,Math.max(0,S.length-1)))},[S.length]);let w=m===void 0?-1:S.findIndex(m);bl(()=>{w>=0&&y(w)},[w]),bl(()=>{C(D=>d?h<D?h:h>=D+N?h-N+1:D:Math.min(D,O))},[h,N,O,d]);let E=D=>{if(!d){C(k=>Math.min(Math.max(0,k+D),O));return}S.length!==0&&y(k=>(k+D+S.length)%S.length)};G((D,k)=>{if(k.upArrow||D==="k"){E(-1);return}if(k.downArrow||D==="j"){E(1);return}if(k.return){let X=S[h];X!==void 0&&i?.(X,h);return}s!==void 0&&D.startsWith("/")&&(R(!0),D.length>1&&x(D.slice(1)))},a&&!T),gn(()=>{R(!1),x("")},{isActive:T||b!=="",layer:T?zn.input:zn.panel});let _=v?1:0,A=jT(null),$=D=>{if(D<=_)return null;let k=U+D-_-1;return S[k]===void 0?null:k},Z=rt({isActive:a,onWheel:E,onClick:({row:D,column:k})=>{if(v&&D===0){R(!0),A.current?.moveToColumn(k-WT);return}if(i===void 0)return;let X=$(D);if(X===null)return;let F=S[X];F!==void 0&&(y(X),i(F,X))},onHover:d?({row:D})=>{let k=$(D);k!==null&&y(k)}:void 0}),oe=Tl(t,S.map(D=>n(D).map(Kp)),o-ii),fe=S.slice(U,U+N);return si(yl,{ref:Z,flexDirection:"column",children:[v&&si(yl,{children:[Yn(_n,{color:p.accent,children:"/ "}),Yn(Zo,{ref:A,value:g,onChange:x,onSubmit:()=>R(!1),isActive:T,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:o-2-Sl(` ${S.length}/${e.length}`)}),Yn(_n,{color:p.faintForeground,children:` ${S.length}/${e.length}`})]}),si(_n,{wrap:"truncate",color:p.faintForeground,children:[" ".repeat(ii),GT(t.map(D=>D.label),t,oe)]}),S.length===0?si(yl,{flexDirection:"column",children:[Yn(_n,{wrap:"truncate",color:p.mutedForeground,children:`${" ".repeat(ii)}${b===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&b===""&&M>1&&Yn(_n,{wrap:"truncate",color:p.faintForeground,children:`${" ".repeat(ii)}${l}`})]}):fe.map((D,k)=>{let X=U+k,F=d&&X===h&&a,re=F?p.accent:a?p.foreground:p.mutedForeground,B=n(D);return si(_n,{wrap:"truncate",children:[Yn(_n,{color:p.accent,children:F?`${ie.cursor} `:" "}),t.map((z,Y)=>{let be=B[Y],Me=Kp(be),ge=z.align==="right"?Kn(Me,oe[Y]??0):Qe(Me,oe[Y]??0),et=typeof be=="object"?be.tone:void 0,Be=!F&&a&&et!==void 0?tt[et]:re;return Yn(_n,{color:Be,bold:F,children:Y>0?`${" ".repeat(xl)}${ge}`:ge},z.label)})]},X)}),(U>0||U+N<S.length)&&Yn(_n,{color:p.faintForeground,children:`${" ".repeat(ii)}${U+1}-${Math.min(U+N,S.length)} / ${S.length}`})]})}import{Text as zT}from"ink";import{useEffect as VT,useRef as KT,useState as YT}from"react";import{jsx as JT}from"react/jsx-runtime";function Ve(e,t,{retain:n}={}){let[o,r]=Ie(n,()=>1),[i,s]=YT({pages:1,total:0}),a=KT(!1),c=ee([...e,o],()=>t(o));VT(()=>{if(c.phase!=="ready")return;let f=Math.max(1,Math.ceil(c.data.total/ou));if(s({pages:f,total:c.data.total}),o>f){r(f);return}a.current&&(a.current=!1,o<f&&r(f))},[c]);let l=f=>{r(d=>Math.min(Math.max(1,d+f),i.pages))},u=()=>r(1),m=()=>{a.current=!0};return{state:c,page:o,pages:i.pages,total:i.total,go:l,reset:u,last:m}}function Ke({page:e,pages:t,total:n,width:o}){return JT(zT,{wrap:"truncate",color:p.faintForeground,children:Ge(_e([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${n} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),o)})}import{jsx as Pn,jsxs as kl}from"react/jsx-runtime";function Yp(){let e=L(),{width:t}=H(),n=te(),[o,r]=XT({name:"list"}),i=Ve([e.revision],a=>Ud({page:a}),{retain:"page"});G((a,c)=>{o.name==="list"&&(a==="r"?e.reload():c.leftArrow?i.go(-1):c.rightArrow&&i.go(1))});let s=()=>{o.name==="list"?e.pop():r({name:"list"})};return Pn(K,{hints:o.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Esc \u8FD4\u56DE"],onEscape:s,children:Pn(W,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(o.name==="detail"){let c=Wr(o.item.level),l=ht(c);return kl(wl,{flexDirection:"column",children:[kl(Ls,{wrap:"truncate",children:[Pn(Ls,{bold:!0,color:p.foreground,children:o.item.title}),Pn(Ls,{color:l===void 0?p.mutedForeground:tt[l],children:` ${c.label}`}),Pn(Ls,{color:p.faintForeground,children:` ${_e([`\u53D1\u5E03\u4E8E ${V(o.item.publishedAt)}`])}`})]}),Pn(wl,{marginTop:1,children:Pn(dt,{lines:hn(o.item.content,t),height:Math.max(3,n-2)})})]})}return kl(wl,{flexDirection:"column",children:[Pn(ue,{retain:"list",items:a.items,width:t,height:Math.max(3,n-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u7EA7\u522B"},{label:"\u53D1\u5E03\u4E8E",align:"right"}],row:c=>[c.title,yt(Wr(c.level)),V(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),ss(c.id).catch(()=>e.toast("warn","\u5DF2\u8BFB\u786E\u8BA4\u53D1\u9001\u5931\u8D25"))},emptyLabel:"\u6682\u65E0\u516C\u544A",emptyDescription:"\u5E73\u53F0\u6709\u65B0\u901A\u77E5\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Pn(Ke,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as bt,Text as fi}from"ink";import{useState as hg}from"react";import Gw from"string-width";import{z as QT}from"zod";var Os=12e4,Ds=e=>`/community/${e.kind==="user"?"users":"staff"}/${encodeURIComponent(e.username)}`,$s=()=>P(QT.array(Rc),"/community/categories"),ir=()=>P(Xu,"/community/me"),Jp=e=>P(lt(Cc),je("/community/posts",{...e})),Bs=e=>P(Vu,`/community/posts/${e}`),Xp=e=>P(se,`/community/posts/${e}/view`,{method:"POST"}),Qp=(e,t)=>P(lt(Pc),je(`/community/posts/${e}/floors`,{page:t})),Zp=(e,t)=>P(Pc,`/community/posts/${e}/floors/${t}`),ef=(e,t)=>P(lt(_c),je(`/community/comments/${e}/replies`,{page:t})),vl=e=>P(Zu,Ds({kind:"user",username:e})),tf=e=>e.kind==="user"?vl(e.username):P(ed,Ds(e)),nf=(e,t)=>P(lt(Fr),je(`${Ds(e)}/posts`,{page:t})),of=(e,t)=>P(lt(Hi),je(`${Ds(e)}/comments`,{page:t})),rf=e=>P(lt(Cc),je("/community/mine/bookmarks",{page:e})),sf=e=>P(lt(Ec),je("/community/mine/drafts",{page:e})),af=()=>P(Yu,"/community/mine/todo"),cf=e=>P(Br,"/community/posts",{method:"POST",json:e,timeoutMs:Os}),lf=(e,t)=>P(Br,`/community/posts/${e}`,{method:"PATCH",json:t,timeoutMs:Os}),Fs=e=>P(se,`/community/posts/${e}`,{method:"DELETE"}),mf=e=>P(Ju,"/community/drafts",{method:"POST",json:e}),uf=(e,t)=>P(se,`/community/drafts/${e}`,{method:"PATCH",json:t}),df=(e,t)=>P(Br,`/community/drafts/${e}/publish`,{method:"POST",json:t,timeoutMs:Os}),pf=(e,t)=>P(Br,`/community/posts/${e}/comments`,{method:"POST",json:t,timeoutMs:Os}),ff=e=>P(se,`/community/comments/${e}`,{method:"DELETE"}),gf=(e,t)=>P(Ac,`/community/posts/${e}/like`,{method:t?"PUT":"DELETE"}),hf=(e,t)=>P(Ac,`/community/comments/${e}/like`,{method:t?"PUT":"DELETE"}),yf=(e,t)=>P(se,`/community/posts/${e}/bookmark`,{method:t?"PUT":"DELETE"}),bf=(e,t)=>P(se,`/community/posts/${e}/reports`,{method:"POST",json:t}),Sf=(e,t)=>P(se,`/community/comments/${e}/reports`,{method:"POST",json:t});var An=()=>P(cu,"/auth/me"),xf=e=>P(se,"/auth/me",{method:"PATCH",json:e}),Tf=e=>P(se,"/auth/me/password",{method:"POST",json:e}),wf=e=>P(se,"/auth/me/email/code",{method:"POST",json:e}),kf=e=>P(se,"/auth/me/email",{method:"POST",json:e}),vf=()=>P(lu,"/auth/me/sessions"),Rf=e=>P(se,`/auth/me/sessions/${e}`,{method:"DELETE"});async function Cf(){await P(se,"/auth/me/sessions",{method:"DELETE"}),ns()}var _f=()=>P(uu,"/auth/me/security"),Rl=e=>P(mu,"/auth/me/totp/setup",{method:"POST",json:e}),Pf=e=>P(uc,"/auth/me/totp/confirm",{method:"POST",json:e}),Af=e=>P(se,"/auth/me/totp/disable",{method:"POST",json:e}),Ef=e=>P(uc,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),Mf=(e,t)=>P(se,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}),If=e=>P(se,`/auth/me/passkeys/${e}`,{method:"DELETE"});var Cl=12e4,ZT=e=>P(Hu,je("/media",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:Cl}),ew=e=>P(se,`/media/${e}`,{method:"DELETE"}),ai={upload:async e=>({...await ZT(e),fileName:e.fileName}),discard:ew};async function Nf(e){let{bytes:t,headers:n}=await Kc(`/media/${e}`,{timeoutMs:Cl}),o=n.get("content-disposition")?.split("filename*=UTF-8''")[1];if(o===void 0)throw new j("\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE\u9644\u4EF6\u6587\u4EF6\u540D");return{fileName:decodeURIComponent(o),bytes:t}}var Lf=e=>P(se,"/auth/me/avatar",{method:"PUT",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:Cl}),Of=()=>P(se,"/auth/me/avatar",{method:"DELETE"});import{existsSync as Us,readFileSync as tw,statSync as Df,writeFileSync as nw}from"fs";import{homedir as _l}from"os";import en from"path";var ow={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".avif":"image/avif"},$f=e=>e.startsWith("~/")?en.join(_l(),e.slice(2)):e;function rw(e){return e.split(`
10
+ `).map(t=>t.trim()).filter(t=>t!=="").map($f)}function Bf(e,t,n){if(!Us(e))throw new j(`${e} \u4E0D\u5B58\u5728`);let o=Df(e);if(!o.isFile())throw new j(`${e} \u4E0D\u662F\u6587\u4EF6`);if(o.size===0)throw new j(`${e} \u662F\u7A7A\u6587\u4EF6\uFF0C\u65E0\u6CD5\u4E0A\u4F20`);if(o.size>t)throw new j(`${e} \u8D85\u8FC7\u5355\u4E2A${n}\u5927\u5C0F\u4E0A\u9650 ${Vo(t)}`);let r=en.basename(e);return{filePath:e,fileName:r,contentType:ow[en.extname(r).toLowerCase()]??"application/octet-stream"}}function Ff(e){let t;try{t=tw(e.filePath)}catch(n){throw new j(`${e.filePath} \u8BFB\u53D6\u5931\u8D25\uFF1A${xe(n)}`,{cause:n})}return{fileName:e.fileName,contentType:e.contentType,bytes:t}}function Jn(e,t){let n=rw(e);if(n.length>t.maxCount)throw new j("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return n.map(o=>Bf(o,t.maxBytes,"\u9644\u4EF6"))}function Uf(e,t){let n=Bf($f(e),t,"\u56FE\u7247");if(!n.contentType.startsWith("image/"))throw new j("\u4EC5\u652F\u6301 PNG\u3001JPG\u3001WebP\u3001GIF\u3001AVIF \u683C\u5F0F\u7684\u56FE\u7247");return Ff(n)}async function En(e,t,n){let o=[];try{for(let r of e)o.push(await t.upload(Ff(r)));return await n(o)}catch(r){let s=(await Promise.allSettled(o.map(l=>t.discard(l.id)))).filter(l=>l.status==="rejected").length;if(s===0)throw r;let a=`${s} \u4E2A\u5DF2\u4E0A\u4F20\u7684\u9644\u4EF6\u672A\u80FD\u6E05\u7406\uFF0C\u5C06\u5728 24 \u5C0F\u65F6\u540E\u81EA\u52A8\u5220\u9664`,c=r instanceof j?r:null;throw new j(xe(r),{hint:c?.hint===void 0?a:`${c.hint}\uFF1B${a}`,...c===null?{}:{exitCode:c.exitCode},cause:r})}}function iw(e,t){let n=en.basename(t),o=en.extname(n),r=n.slice(0,n.length-o.length),i=en.join(e,n);for(let s=1;Us(i);s+=1)i=en.join(e,`${r}-${s}${o}`);return i}function sw(e,t){let n=e.trim();if(n==="")return{dir:process.cwd(),fileName:t};if(n==="~")return{dir:_l(),fileName:t};let o=n.startsWith("~/")||n.startsWith(`~${en.sep}`)?en.join(_l(),n.slice(2)):n;return n.endsWith("/")||n.endsWith(en.sep)||Us(o)&&Df(o).isDirectory()?{dir:o,fileName:t}:{dir:en.dirname(o),fileName:en.basename(o)}}function jf(e,t,n){let o=sw(e,t);if(!Us(o.dir))throw new j(`${o.dir} \u76EE\u5F55\u4E0D\u5B58\u5728`);let r=iw(o.dir,o.fileName);try{nw(r,n)}catch(i){throw new j(`\u5199\u5165 ${r} \u5931\u8D25\uFF1A${xe(i)}`,{cause:i})}return r}import{Box as tn,measureElement as Yf,Text as Ue,useInput as tg}from"ink";import{useEffect as Jf,useRef as Xf,useState as sr}from"react";import Ml from"string-width";import{Box as aw,Text as Xn,useInput as cw}from"ink";import{useRef as Hf,useState as qf}from"react";import Al from"string-width";import{jsx as Mn,jsxs as Vf}from"react/jsx-runtime";var lw=e=>e.replace(/\r\n?/g,`
11
+ `).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function Gf(e,t){let n=[],o=0,r=0;for(let i=0;i<e.length;i+=1){let s=e[i]??"";if(s===`
12
+ `){n.push({start:o,end:i,nl:!0}),o=i+1,r=0;continue}let a=Al(s);r+a>t&&i>o&&(n.push({start:o,end:i,nl:!1}),o=i,r=0),r+=a}return n.push({start:o,end:e.length,nl:!1}),n}function Wf(e,t){for(let n=0;n<e.length;n+=1){let o=e[n];if(o!==void 0&&(o.nl?t<=o.end:t<o.end))return n}return e.length-1}function zf(e,t,n){let o=0;for(let r=t.start;r<t.end;r+=1){let i=Al(e[r]??"");if(o+i>n)return r;o+=i}return t.end}var mw=(e,t,n)=>e.slice(t.start,n).reduce((o,r)=>o+Al(r),0);function Pl(e,t){let n=t;for(;n>0&&e[n-1]!==`
13
+ `;)n-=1;let o=t;for(;o<e.length&&e[o]!==`
14
+ `;)o+=1;return{start:n,end:o}}function Kf({value:e,onChange:t,isActive:n,width:o,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[u,m]=qf(l.length),f=Math.min(u,l.length),[d,h]=qf(0),y=Hf(e),g=Hf(f);y.current=e,g.current=f,us(n);let x=Math.max(4,o),T=C=>{g.current=C,m(C)},R=(C,w)=>{y.current=C,T(w),t(C)},b=C=>{let w=[...y.current],E=Math.min(g.current,w.length),_=Gf(w,x),A=Wf(_,E),$=_[A],Z=_[A+C];return $===void 0||Z===void 0?!1:(T(zf(w,Z,mw(w,$,E))),!0)},S=(C,w,E)=>{let _=lw(E);if(s!==void 0){let A=s-C.length;if(A<=0)return;_=[..._].slice(0,A).join("")}_!==""&&R([...C.slice(0,w),_,...C.slice(w)].join(""),w+[..._].length)};cw((C,w)=>{let E=[...y.current],_=Math.min(g.current,E.length);if(w.return){S(E,_,`
15
+ `);return}if(!w.tab){if(w.upArrow||w.downArrow){let A=w.upArrow?-1:1;b(A)||a?.(w.upArrow?"up":"down");return}if(w.leftArrow){T(Math.max(0,_-1));return}if(w.rightArrow){T(Math.min(E.length,_+1));return}if(w.home){T(Pl(E,_).start);return}if(w.end){T(Pl(E,_).end);return}if(w.backspace){if(_===0)return;R([...E.slice(0,_-1),...E.slice(_)].join(""),_-1);return}if(w.delete){if(_>=E.length)return;R([...E.slice(0,_),...E.slice(_+1)].join(""),_);return}if(w.ctrl){let A=Pl(E,_);if(C==="a")T(A.start);else if(C==="e")T(A.end);else if(C==="k")R([...E.slice(0,_),...E.slice(A.end)].join(""),_);else if(C==="u")R([...E.slice(0,A.start),...E.slice(_)].join(""),A.start);else if(C==="w"){let $=_;for(;$>A.start&&E[$-1]===" ";)$-=1;for(;$>A.start&&E[$-1]!==" ";)$-=1;R([...E.slice(0,$),...E.slice(_)].join(""),$)}return}w.meta||!C||S(E,_,C)}},{isActive:n});let v=Gf(l,x),M=Wf(v,f),N=Math.min(d,Math.max(0,v.length-r));M<N&&(N=M),M>N+r-1&&(N=M-r+1),N!==d&&h(N);let O=[];for(let C=0;C<r;C+=1){let w=N+C,E=v[w];if(E===void 0){O.push(Mn(Xn,{children:" "},w));continue}let _=l.slice(E.start,E.end).join("");if(!n||w!==M){O.push(Mn(Xn,{wrap:"truncate",color:p.foreground,children:_===""?" ":_},w));continue}let A=l.slice(E.start,f).join(""),$=f<E.end?l[f]??" ":" ",Z=f<E.end?l.slice(f+1,E.end).join(""):"";O.push(Vf(Xn,{wrap:"truncate",children:[Mn(Xn,{color:p.foreground,children:A}),Mn(ei,{char:$}),Mn(Xn,{color:p.foreground,children:Z})]},w))}if(e===""&&i!==void 0){let C=[...i];O[0]=n?Vf(Xn,{wrap:"truncate",children:[Mn(ei,{char:C[0]??" "}),Mn(Xn,{color:p.faintForeground,children:C.slice(1).join("")})]},"placeholder"):Mn(Xn,{wrap:"truncate",color:p.faintForeground,children:i},"placeholder")}let U=rt({onWheel:C=>{b(C)},onClick:({row:C,column:w})=>{c?.();let E=v[N+C];T(E===void 0?l.length:zf(l,E,w))}});return Mn(aw,{ref:U,flexDirection:"column",children:O})}import{Fragment as eg,jsx as ve,jsxs as At}from"react/jsx-runtime";var uw=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Qf="\u9009\u586B",dw=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,pw=(e,t)=>{let n=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return dw(e,t)?n===void 0?Qf:`${Qf} \xB7 ${n}`:n},fw=(e,t)=>{let n=[];return e.forEach((o,r)=>{n.push({type:"field",index:r}),o.kind==="code"&&n.push({type:"send",index:r})}),n.push({type:"submit"}),t!==void 0&&n.push({type:"secondary",action:t}),n},gw=6e4,hw=4,El=4,yw=2,ci=(e,t)=>e?p.accent:t?p.foreground:p.mutedForeground;function ne({title:e,fields:t,submitLabel:n,onSubmit:o,onCancel:r,onChange:i,secondary:s,width:a,busy:c,busyLabel:l="\u6B63\u5728\u63D0\u4EA4",error:u}){let[m,f]=sr(()=>uw(t)),[d,h]=sr(0),[y,g]=sr({}),[x,T]=sr(null),[,R]=sr(0),b=c===!0,S=fw(t,s),v=S[Math.min(d,S.length-1)],M=v?.type==="field"||v?.type==="send"?t[v.index]:void 0;Jf(()=>{i?.(m)},[m]);let N=v?.type==="field"&&(M?.kind==="text"||M?.kind==="code"),O=v?.type==="field"&&M?.kind==="textarea",U=Object.values(y).some(B=>B.phase==="cooldown"&&B.until>Date.now());Jf(()=>{if(!U)return;let B=setInterval(()=>R(z=>z+1),1e3);return()=>clearInterval(B)},[U]);let C=B=>h(z=>(z+B+S.length)%S.length),w=(B,z)=>{if(B.options.length===0)return;let Y=B.options.findIndex(Me=>Me.value===m[B.name]),be=B.options[(Y+z+B.options.length)%B.options.length];be!==void 0&&f(Me=>({...Me,[B.name]:be.value}))},E=B=>{v?.type!=="field"||M?.kind!=="select"||w(M,B)},_=B=>{let z=t[B];if(z===void 0||z.kind!=="code")return;let Y=(m[z.emailField]??"").trim();if(Y===""){g(Me=>({...Me,[z.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let be=y[z.name];be?.phase!=="sending"&&(be?.phase==="cooldown"&&be.email===Y&&be.until>Date.now()||(g(Me=>({...Me,[z.name]:{phase:"sending"}})),z.send(Y).then(()=>g(Me=>({...Me,[z.name]:{phase:"cooldown",email:Y,until:Date.now()+gw}}))).catch(Me=>g(ge=>({...ge,[z.name]:{phase:"error",message:xe(Me)}})))))};tg((B,z)=>{if(z.tab){C(z.shift?-1:1);return}if(!O){if(z.upArrow){C(-1);return}if(z.downArrow){C(1);return}if(!N){if(z.leftArrow){E(-1);return}if(z.rightArrow){E(1);return}z.return&&(v?.type==="submit"?o(m):v?.type==="secondary"?v.action.onSubmit(m):v?.type==="send"?_(v.index):C(1))}}},{isActive:!b}),gn(()=>{b||r(m)},{layer:zn.panel}),Yd(b),Ce(b);let A=Math.max(0,...t.map(B=>Ml(B.label))),$=a-pe,Z=Math.max(8,$-A-8),oe=(B,z)=>S.findIndex(Y=>Y.type===B&&(Y.type==="field"||Y.type==="send"?Y.index===z:!0)),fe=Xf(new Map).current,D=Xf(new Map).current,k=2+A+El,X=(B,z)=>{let Y=S[B];if(Y===void 0)return;if(h(B),Y.type==="submit"){o(m);return}if(Y.type==="secondary"){Y.action.onSubmit(m);return}if(Y.type==="send"){_(Y.index);return}let be=t[Y.index];if(be!==void 0){if(be.kind==="select"){let Me=be.options.find(et=>et.value===m[be.name]),ge=Ge(Me?.label??"\u2014",Z);z>=k-yw&&z<k?w(be,-1):z>=k+Ml(ge)&&w(be,1);return}z>=k&&D.get(Y.index)?.moveToColumn(z-k)}},F=(B,z)=>{if(B===null)return null;let Y=Yf(B),be=null;for(let[Me,ge]of fe){if(ge===null)continue;let et=Yf(ge),Be=et.y-Y.y;z<Be||z>=Be+et.height||(be===null||et.height<be.box.height)&&(be={index:Me,box:et})}return be===null?null:{...be,frameX:Y.x}},re=rt({isActive:!b,onClick:({row:B,column:z})=>{let Y=F(re.current,B);Y!==null&&X(Y.index,z-(Y.box.x-Y.frameX))},onHover:({row:B})=>T(F(re.current,B)?.index??null),onHoverLeave:()=>T(null)});return At(tn,{ref:re,flexDirection:"column",children:[ve(Rn,{title:e,width:a}),At(tn,{flexDirection:"column",marginTop:We,paddingLeft:pe,children:[u!=null&&ve(tn,{marginBottom:1,children:ve(Ft,{message:u.message,hint:u.hint,width:$})}),t.map((B,z)=>{let Y=d===oe("field",z)&&!b,be=pw(B,m),Me=B.kind==="select"?B.options.find(Be=>Be.value===m[B.name]):void 0;if(B.kind==="textarea")return At(tn,{flexDirection:"column",ref:Be=>{fe.set(oe("field",z),Be)},children:[At(Ue,{children:[ve(Ue,{color:p.accent,children:Y?`${ie.cursor} `:" "}),ve(Ue,{color:ci(Y,x===oe("field",z)),bold:Y,children:B.label})]}),ve(tn,{paddingLeft:2,children:ve(Kf,{value:m[B.name]??"",onChange:Be=>f(Ga=>({...Ga,[B.name]:Be})),isActive:Y,width:$-2,rows:B.rows??hw,placeholder:B.placeholder,maxLength:B.maxLength,onEdge:Be=>C(Be==="up"?-1:1),onFocusRequest:()=>h(oe("field",z))})}),Y&&be!==void 0&&ve(Ue,{color:p.faintForeground,children:` ${Ge(be,$-2)}`})]},B.name);let ge=B.kind==="code"&&d===oe("send",z)&&!b,et=y[B.name];return At(tn,{flexDirection:"column",ref:Be=>{fe.set(oe("field",z),Be)},children:[At(Ue,{children:[ve(Ue,{color:p.accent,children:Y?`${ie.cursor} `:" "}),ve(Ue,{color:ci(Y,x===oe("field",z)),bold:Y,children:Qe(B.label,A)}),B.kind==="select"?At(eg,{children:[ve(Ue,{color:Y?p.accent:p.border,children:` ${ie.prev} `}),ve(Ue,{color:p.foreground,children:Ge(Me?.label??"\u2014",Z)}),ve(Ue,{color:Y?p.accent:p.border,children:` ${ie.next}`})]}):At(eg,{children:[ve(Ue,{children:" ".repeat(El)}),ve(Zo,{ref:Be=>{D.set(z,Be)},value:m[B.name]??"",onChange:Be=>f(Ga=>({...Ga,[B.name]:Be})),onSubmit:()=>C(1),isActive:Y,placeholder:B.kind==="text"||B.kind==="code"?B.placeholder:void 0,mask:B.kind==="text"?B.mask:void 0,width:Z})]})]}),Y&&be!==void 0&&ve(Ue,{color:p.faintForeground,children:`${" ".repeat(2+A+El)}${Ge(be,Z)}`}),B.kind==="code"&&ve(bw,{active:ge,state:et,email:(m[B.emailField]??"").trim(),indent:k,width:Z,hovered:x===oe("send",z),nodeRef:Be=>{fe.set(oe("send",z),Be)}})]},B.name)}),At(tn,{marginTop:1,flexDirection:"column",children:[ve(tn,{ref:B=>{fe.set(oe("submit"),B)},children:b?ve(De,{label:l}):At(Ue,{children:[ve(Ue,{color:p.accent,children:v?.type==="submit"?`${ie.cursor} `:" "}),ve(Ue,{color:ci(v?.type==="submit",x===oe("submit")),bold:v?.type==="submit",children:n})]})}),s!==void 0&&!b&&ve(tn,{ref:B=>{fe.set(oe("secondary"),B)},children:At(Ue,{children:[ve(Ue,{color:p.accent,children:v?.type==="secondary"?`${ie.cursor} `:" "}),ve(Ue,{color:ci(v?.type==="secondary",x===oe("secondary")),bold:v?.type==="secondary",children:s.label})]})})]})]})]})}function bw({active:e,state:t,email:n,indent:o,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return ve(tn,{paddingLeft:o,children:ve(De,{label:"\u6B63\u5728\u53D1\u9001\u9A8C\u8BC1\u7801"})});let a=t?.phase==="cooldown"&&t.email===n?Math.ceil((t.until-Date.now())/1e3):0,c=a>0?`${a} \u79D2\u540E\u53EF\u91CD\u53D1`:"\u53D1\u9001\u9A8C\u8BC1\u7801";return At(tn,{ref:s,flexDirection:"column",paddingLeft:o-2,children:[At(Ue,{children:[ve(Ue,{color:p.accent,children:e?`${ie.cursor} `:" "}),ve(Ue,{color:a>0?p.faintForeground:ci(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&ve(Ue,{color:p.danger,children:` ${Ge(t.message,r)}`})]})}var Sw=2,Zf=2;function js({options:e,value:t,onChange:n,arrowKeys:o=!0}){let r=e.findIndex(m=>m.value===t),i=ps();tg((m,f)=>{if(!f.leftArrow&&!f.rightArrow)return;let d=f.leftArrow?-1:1,h=e[(r+d+e.length)%e.length];h!==void 0&&n(h.value)},{isActive:o&&!i});let s=[],a=0;e.forEach((m,f)=>{f>0&&(a+=Zf);let d=Ml(m.label)+Sw;s.push({value:m.value,from:a,to:a+d}),a+=d});let[c,l]=sr(null),u=rt({onClick:({column:m})=>{let f=s.find(d=>m>=d.from&&m<d.to);f!==void 0&&n(f.value)},onHover:({column:m})=>{let f=s.find(d=>m>=d.from&&m<d.to);l(f?.value??null)},onHoverLeave:()=>l(null)});return ve(tn,{ref:u,children:ve(Ue,{wrap:"truncate",children:e.map((m,f)=>{let d=m.value===t;return At(Ue,{children:[f>0&&" ".repeat(Zf),ve(Ue,{backgroundColor:d?p.foreground:p.border,color:d?p.background:m.value===c?p.foreground:p.mutedForeground,bold:d,children:` ${m.label} `})]},m.value)})})})}import{Box as ng,Text as Sn}from"ink";import xw from"string-width";import{jsx as bn,jsxs as Il}from"react/jsx-runtime";var Hs=3,In=2,To=10,Tw=8,og=e=>Math.floor((e-Hs)/In),ar=e=>og(e)>=Tw;function ww(e,t){let n=new Map(e.days.map(l=>[l.day,t(l)])),o=[...n.values()].sort((l,u)=>l-u),r=l=>o[Math.floor((o.length-1)*l)]??0,[i,s,a]=[r(.25),r(.5),r(.75)],c=[];for(let l=e.start;l<=e.end;l=Gn(l,1)){let u=n.get(l)??0;c.push({day:l,level:u<=0?0:u<=i?1:u<=s?2:u<=a?3:4})}return c}function kw(e,t){let n=t*In,o="",r=0,i="";for(;r<n;){let s=r%In===0?e[r/In*7]:void 0;if(s!==void 0){let a=s.day.slice(0,7);if(a!==i){i=a;let c=`${Number(s.day.slice(5,7))}\u6708`,l=xw(c);if(r+l<=n){o+=c,r+=l;continue}}}o+=" ",r+=1}return o}var vw={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function Rw({cells:e,day:t,weeks:n}){return Il(Sn,{wrap:"truncate",children:[bn(Sn,{color:p.faintForeground,children:Qe(vw[t]??"",Hs)}),Array.from({length:n},(o,r)=>{let i=e[r*7+t];return i===void 0?bn(Sn,{children:" ".repeat(In)},r):bn(Sn,{backgroundColor:ys[i.level],children:" ".repeat(In)},r)})]})}function cr({data:e,value:t,caption:n,width:o}){let r=ww(e,t),i=Math.ceil(r.length/7),s=Math.min(i,og(o)),a=r.slice((i-s)*7),c=3+ys.length*In+3,l=Math.max(0,Hs+s*In-c-2);return Il(ng,{flexDirection:"column",children:[bn(Sn,{wrap:"truncate",color:p.faintForeground,children:" ".repeat(Hs)+kw(a,s)}),Array.from({length:7},(u,m)=>bn(Rw,{cells:a,day:m,weeks:s},m)),bn(ng,{marginTop:1,children:Il(Sn,{wrap:"truncate",children:[bn(Sn,{color:p.mutedForeground,children:Qe(n??"",l)})," ",bn(Sn,{color:p.faintForeground,children:"\u5C11 "}),ys.map(u=>bn(Sn,{backgroundColor:u,children:" ".repeat(In)},u)),bn(Sn,{color:p.faintForeground,children:" \u591A"})]})})]})}import{Box as Ol,Text as rg}from"ink";import Cw from"qrcode";import{jsx as li,jsxs as Iw}from"react/jsx-runtime";var _w="#000000",Pw="#ffffff",Nl=2,sg=2,Dl=1,ig,Ll;function ag(e){if(e===ig&&Ll!==void 0)return Ll;let t=Cw.create(e,{errorCorrectionLevel:"L"}),n=t.modules.size,o=t.modules.data,r=n+Nl*2,i=Array.from({length:r},()=>Array.from({length:r},()=>!1));for(let s=0;s<n;s+=1)for(let a=0;a<n;a+=1){let c=i[s+Nl];c!==void 0&&(c[a+Nl]=o[s*n+a]===1)}return ig=e,Ll=i,i}function Aw(e){let t=ag(e).length;return{columns:t*sg,rows:t}}function qs(e,t,n,o){let r=Aw(e),i=t.rows-r.rows-Dl;return r.columns<=t.width&&i>=n.rows?{fits:!0,qr:r,asideWidth:t.width,asideRows:i}:{fits:!1,target:{columns:Math.max(r.columns,n.columns)+o.columns,rows:r.rows+Dl+n.rows+o.rows}}}function Ew(e,t){let n=[],o=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[o]||(n.push(li(rg,{backgroundColor:e[o]??!1?_w:Pw,children:" ".repeat((r-o)*sg)},o)),o=r);return li(rg,{children:n},t)}function Mw({value:e}){return li(Ol,{flexDirection:"column",flexShrink:0,children:ag(e).map((t,n)=>Ew(t,n))})}function Gs({value:e,aside:t}){return Iw(Ol,{flexDirection:"column",flexShrink:0,children:[li(Mw,{value:e}),li(Ol,{marginTop:Dl,flexDirection:"column",children:t})]})}import{Box as Ws,Text as Et}from"ink";import cg from"string-width";import{jsx as Mt,jsxs as mi}from"react/jsx-runtime";var zs=2,$l=4,lg=e=>" ".repeat(e),Bl=13,mg=4,ug=(e,t,n)=>Math.max(1,Math.min(e,n,Math.floor((t+zs)/(Bl+zs)))),Ut=(e,t,n=mg)=>Math.ceil(e/ug(e,t,n))*2;function it({tiles:e,width:t,maxPerRow:n=mg}){let o=ug(e.length,t,n),r=Math.floor((t-zs*(o-1))/o),i=[];for(let s=0;s<e.length;s+=o)i.push(e.slice(s,s+o));return Mt(Ws,{flexDirection:"column",children:i.map((s,a)=>Mt(Ws,{flexDirection:"column",children:["label","value"].map(c=>Mt(Et,{wrap:"truncate",children:s.map((l,u)=>mi(Et,{children:[u>0&&lg(zs),Mt(Et,{color:c==="label"?p.mutedForeground:p.foreground,bold:c==="value",children:Qe(l[c],r)})]},l.label))},c))},a))})}function dg({used:e,total:t,width:n=20}){let o=t<=0?1:Math.min(1,e/t),r=Math.round(o*n),i=o>=1?p.danger:o>=.8?p.warning:p.foreground;return mi(Et,{children:[Mt(Et,{color:i,children:ie.barFilled.repeat(r)}),Mt(Et,{color:p.border,children:ie.barEmpty.repeat(n-r)})]})}function Nw({items:e,width:t}){let n=Math.max(0,...e.map(([r])=>cg(r))),o=Math.max(0,t-n-3);return Mt(Ws,{flexDirection:"column",children:e.map(([r,i])=>mi(Et,{wrap:"truncate",children:[Mt(Et,{color:p.mutedForeground,children:Qe(r,n)})," ",Mt(Et,{color:p.foreground,children:Ge(i,o)})]},r))})}var Vs=(e,t)=>Math.floor((t-$l)/2)<Bl*2?e:Math.ceil(e/2);function Ye({items:e,width:t}){let n=Math.floor((t-$l)/2);if(n<Bl*2)return Mt(Nw,{items:e,width:t});let o=Math.max(0,...e.map(([a])=>cg(a))),r=n-o-2,i=[];for(let a=0;a<e.length;a+=2)i.push(e.slice(a,a+2));let s=a=>a===void 0?Mt(Et,{children:" ".repeat(n)}):mi(Et,{children:[Mt(Et,{color:p.mutedForeground,children:Qe(a[0],o)})," ",Mt(Et,{color:p.foreground,children:Qe(a[1],r)})]});return Mt(Ws,{flexDirection:"column",children:i.map((a,c)=>mi(Et,{wrap:"truncate",children:[s(a[0]),lg($l),s(a[1])]},c))})}import{Lexer as Lw}from"marked";var Ow=new RegExp("\\p{Cc}","gu"),Dw=/[\\[\]]/g,$w=/[\\`*_{}[\]()#+\-.!|<>~]/g,Bw=/[\uD800-\uDBFF]$/,Fw=400,Uw=12,jw=20,lr={label:"\u677F\u5757",cap:Uw},Qn={label:"\u4F5C\u8005",cap:jw},Ks={maxCount:Bu,maxBytes:Dr},Ys={maxCount:Fu,maxBytes:Dr},pg={published:{tone:"ok",message:"\u5DF2\u53D1\u5E03"},pending:{tone:"ok",message:"\u5DF2\u63D0\u4EA4\u5BA1\u6838"},rejected:{tone:"fail",message:"\u672A\u901A\u8FC7\u5BA1\u6838"}},st=e=>e.replace(Ow,""),ui=e=>({kind:e.kind,username:e.username});function vt(e){let t=st(e.username);return e.kind==="user"?`${t} Lv.${qi(e.points).level}`:`${t} [${zi}]`}var Js=e=>`@${st(e.username)}`,fg=e=>e.flatMap(t=>[{reply:t.reply,mention:t.mention,prefix:""},...gg(t.children,"")]);function gg(e,t){return e.flatMap((n,o)=>{let r=o===e.length-1;return[{reply:n.reply,mention:n.mention,prefix:`${t}${r?"\u2514\u2500 ":"\u251C\u2500 "}`},...gg(n.children,`${t}${r?" ":"\u2502 "}`)]})}var Nn=(e,t)=>e.kind==="user"&&e.username===t,Fl=e=>`${e.image?"[\u56FE\u7247]":"[\u9644\u4EF6]"} ${st(e.name)}`;function jt(e){let t=new Set;return zu(e).filter(n=>t.has(n.id)?!1:(t.add(n.id),!0))}var Hw=e=>Tc(e,t=>Fl(t).replace($w,"\\$&")),di=(e,t)=>hn(Hw(e),t);function wo(e){let t=Tc(e,n=>n.image?"[\u56FE\u7247]":`[\u9644\u4EF6] ${n.name}`).slice(0,Fw).replace(Bw,"");return st(dd(Lw.lex(t,{gfm:!0,breaks:!0}))).trim()}var qw=e=>st(e).trim().replace(Dw,"\\$&");function pi(e,t){if(t.length===0)return e;let n=t.map(o=>`${o.image===null?"":"!"}[${qw(o.fileName)}](${Uu(o.id)})`).join(`
16
+ `);return e===""?n:`${e}
17
+
18
+ ${n}`}import{Fragment as Xw,jsx as me,jsxs as Ln}from"react/jsx-runtime";var Ww={cli:"\u547D\u4EE4\u884C",mobile:"\u624B\u673A",tablet:"\u5E73\u677F",smarttv:"\u667A\u80FD\u7535\u89C6",console:"\u6E38\u620F\u4E3B\u673A",wearable:"\u53EF\u7A7F\u6234\u8BBE\u5907",embedded:"\u5D4C\u5165\u5F0F\u8BBE\u5907"},yg="\u5BC6\u94A5 ",zw=10,Vw={rebind:{title:"\u91CD\u65B0\u7ED1\u5B9A\u4E24\u6B65\u9A8C\u8BC1",submit:"\u7EE7\u7EED",hint:"\u786E\u8BA4\u540E\u751F\u6210\u65B0\u5BC6\u94A5\uFF0C\u9A8C\u8BC1\u5668\u4E2D\u539F\u6709\u6761\u76EE\u5C06\u5931\u6548\uFF0C\u6062\u590D\u7801\u4E5F\u4F1A\u66F4\u6362"},regenerate:{title:"\u91CD\u65B0\u751F\u6210\u6062\u590D\u7801",submit:"\u751F\u6210",hint:"\u751F\u6210\u540E\u539F\u6709\u6062\u590D\u7801\u5168\u90E8\u4F5C\u5E9F"},disable:{title:"\u505C\u7528\u4E24\u6B65\u9A8C\u8BC1",submit:"\u505C\u7528",hint:"\u505C\u7528\u540E\u767B\u5F55\u4E0D\u518D\u8981\u6C42\u52A8\u6001\u7801\uFF0C\u6062\u590D\u7801\u540C\u65F6\u4F5C\u5E9F"}},Kw=3,Yw=8;function Jw({codes:e,width:t}){let n=Math.max(...e.map(r=>r.length))+4,o=[];for(let r=0;r<e.length;r+=2)o.push(Ln(fi,{wrap:"truncate",color:p.accent,children:[Qe(e[r]??"",Math.min(n,t)),e[r+1]??""]},r));return me(bt,{flexDirection:"column",children:o})}function bg(){let e=L(),{width:t,columns:n,rows:o}=H(),r=te(),[i,s]=hg({name:"menu"}),[a,c]=hg(!1),{busy:l,error:u,reset:m,fail:f,run:d}=le(),h=ee([e.revision],async()=>{let[b,S,v]=await Promise.all([An(),_f(),vf()]);return{user:b.user,security:S,sessions:v.sessions}}),y=ee([e.revision],async()=>{let[b,S]=await Promise.all([An(),af()]);return{homepage:await vl(b.user.username),todo:S}});G(b=>{i.name==="menu"&&l===null&&b==="r"&&e.reload()}),Ce(i.name==="codes"||l!==null);let g=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}m(),i.name==="passkey-rename"||i.name==="passkey-delete"?s({name:"passkey",item:i.item}):i.name==="confirm-revoke"?s({name:"session",item:i.item}):s({name:"menu"})}},x=b=>{s({name:"menu"}),e.reload(),e.toast("ok",b)},T=(b,S)=>{c(!1),s({name:"codes",codes:b,message:S})},R=(b,S)=>{b==="rebind"?d("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>Rl({code:S}),{onSuccess:v=>s({name:"enroll",setup:v})}):b==="regenerate"?d("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>Ef({code:S}),{onSuccess:({recoveryCodes:v})=>T(v,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):d("\u6B63\u5728\u505C\u7528",()=>Af({code:S}),{onSuccess:()=>x("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return me(K,{hints:i.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","r \u5237\u65B0"]:i.name==="codes"?["\u2191\u2193 \u79FB\u52A8","Enter \u786E\u8BA4"]:["Esc \u8FD4\u56DE"],locked:i.name==="codes",onEscape:g,isActive:l===null,children:me(W,{state:h,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:b,security:S,sessions:v})=>{if(i.name==="avatar")return me(ne,{title:"\u4FEE\u6539\u5934\u50CF",width:t,submitLabel:"\u4E0A\u4F20",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4E0A\u4F20",error:u,fields:[{kind:"text",name:"path",label:"\u56FE\u7247\u8DEF\u5F84",placeholder:"\u672C\u5730\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84"}],onCancel:g,onSubmit:k=>{let X=(k.path??"").trim();if(X===""){f("\u8BF7\u8F93\u5165\u56FE\u7247\u8DEF\u5F84");return}let F;try{F=Uf(X,Dr)}catch(re){f(xe(re));return}d("\u6B63\u5728\u4E0A\u4F20",()=>Lf(F),{onSuccess:()=>x("\u5934\u50CF\u5DF2\u66F4\u65B0")})}});if(i.name==="avatar-delete")return me(Ae,{width:t,title:"\u786E\u8BA4\u5220\u9664\u5934\u50CF\uFF1F",detail:"\u5220\u9664\u540E\u663E\u793A\u9ED8\u8BA4\u5934\u50CF",confirmLabel:"\u5220\u9664",busy:l,error:u,onConfirm:()=>d("\u6B63\u5728\u5220\u9664",()=>Of(),{onSuccess:()=>x("\u5934\u50CF\u5DF2\u5220\u9664")}),onCancel:g});if(i.name==="rename")return me(ne,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:u,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:b.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:g,onSubmit:k=>{let X=(k.username??"").trim();if(X===""||X.length>Kt){f(`\u8BF7\u8F93\u5165 1 \u5230 ${Kt} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}d("\u6B63\u5728\u4FDD\u5B58",()=>xf({username:X}),{onSuccess:()=>x("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return me(ne,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:u,fields:[{kind:"text",name:"email",label:"\u65B0\u90AE\u7BB1",placeholder:"\u7528\u4E8E\u767B\u5F55\u4E0E\u63A5\u6536\u901A\u77E5\u7684\u65B0\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",emailField:"email",send:k=>wf({email:k})},{kind:"text",name:"password",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u7ACB\u5373\u4EE5\u65B0\u90AE\u7BB1\u767B\u5F55\u548C\u63A5\u6536\u901A\u77E5\uFF0C\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"}],onCancel:g,onSubmit:k=>{let X=(k.email??"").trim(),F=(k.code??"").trim(),re=k.password??"";if(X===""||F===""||re===""){f("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}d("\u6B63\u5728\u4FDD\u5B58",()=>kf({email:X,code:F,password:re}),{onSuccess:()=>x("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return me(ne,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:u,fields:[{kind:"text",name:"old",label:"\u5F53\u524D\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801"},{kind:"text",name:"next",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801",hint:`\u81F3\u5C11 ${Ot} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:g,onSubmit:k=>{let X=k.old??"",F=k.next??"";if(X===""){f("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(F.length<Ot){f(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${Ot} \u4F4D`);return}d("\u6B63\u5728\u4FDD\u5B58",()=>Tf({oldPassword:X,newPassword:F}),{onSuccess:()=>x("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout-all")return me(Ae,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",detail:"\u5F53\u524D\u8BBE\u5907\u4E5F\u4F1A\u4E00\u5E76\u9000\u51FA",confirmLabel:"\u9000\u51FA",busy:l,error:u,onConfirm:()=>d("\u6B63\u5728\u9000\u51FA",()=>Cf(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907"),e.home()}}),onCancel:g});if(i.name==="code"){let k=Vw[i.intent];return me(ne,{title:k.title,width:t,submitLabel:k.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:u,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:k.hint}],onCancel:g,onSubmit:X=>{let F=(X.code??"").trim();if(F===""){f("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}R(i.intent,F)}})}if(i.name==="enroll"){let k=(F,re)=>Ln(Xw,{children:[re&&me(fi,{color:p.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),Ln(fi,{children:[me(fi,{color:p.mutedForeground,children:yg}),me(fi,{color:p.accent,children:i.setup.secret})]}),me(bt,{marginTop:1,children:me(ne,{title:"\u586B\u5165\u52A8\u6001\u9A8C\u8BC1\u7801\u5B8C\u6210\u7ED1\u5B9A",width:F,submitLabel:"\u7ED1\u5B9A",busy:l!==null,busyLabel:l??"\u6B63\u5728\u7ED1\u5B9A",error:u,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:g,onSubmit:B=>{let z=(B.code??"").trim();if(z===""){f("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}d("\u6B63\u5728\u7ED1\u5B9A",()=>Pf({code:z}),{onSuccess:({recoveryCodes:Y})=>T(Y,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),X=qs(i.setup.otpauthUri,{width:t,rows:r},{columns:Gw(yg)+i.setup.secret.length,rows:zw},{columns:n-t,rows:o-r});return X.fits?me(Gs,{value:i.setup.otpauthUri,aside:k(X.asideWidth,!0)}):Ln(bt,{flexDirection:"column",children:[me(he,{tone:"info",width:t,title:"\u7EC8\u7AEF\u5C3A\u5BF8\u4E0D\u8DB3\uFF0C\u6539\u4E3A\u624B\u52A8\u5F55\u5165",detail:"\u5728\u9A8C\u8BC1\u5668\u4E2D\u9009\u62E9\u624B\u52A8\u8F93\u5165\uFF0C\u586B\u5165\u4E0B\u65B9\u5BC6\u94A5"}),k(t,!1)]})}if(i.name==="codes")return Ln(bt,{flexDirection:"column",children:[me(he,{tone:"warn",width:t,title:"\u6062\u590D\u7801\u4EC5\u6B64\u4E00\u6B21\u5C55\u793A\uFF0C\u8BF7\u7ACB\u5373\u4FDD\u5B58\u5230\u5B89\u5168\u7684\u4F4D\u7F6E",detail:"\u6BCF\u679A\u6062\u590D\u7801\u53EA\u80FD\u4F7F\u7528\u4E00\u6B21\uFF0C\u53EF\u5728\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u4EE3\u66FF\u52A8\u6001\u9A8C\u8BC1\u7801\u767B\u5F55"}),me(bt,{marginTop:1,children:me(Jw,{codes:i.codes,width:t})}),me(bt,{marginTop:1,children:me(ce,{width:t,items:[{value:"ack",label:`${a?"[x]":"[ ]"} \u6211\u5DF2\u59A5\u5584\u4FDD\u5B58\u8FD9\u4E9B\u6062\u590D\u7801`},{value:"done",label:"\u5B8C\u6210",disabled:!a}],onSelect:k=>{if(k==="ack"){c(F=>!F);return}let X=i.message;s({name:"menu"}),e.reload(),e.toast("ok",X)}})})]});if(i.name==="passkey-add")return me(he,{tone:"info",width:t,title:`\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 ${e.ctx.site} \u7684\u300C\u4E2A\u4EBA\u4E3B\u9875\u300D\u5B8C\u6210\u6DFB\u52A0`,detail:"\u6DFB\u52A0\u4E0E\u4F7F\u7528 Passkey \u4F9D\u8D56\u6D4F\u89C8\u5668\u7684 WebAuthn \u80FD\u529B\uFF0C\u7EC8\u7AEF\u65E0\u6CD5\u5B8C\u6210"});if(i.name==="passkey-rename")return me(ne,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:u,fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:i.item.name,placeholder:"\u6807\u8BB0\u6240\u5728\u8BBE\u5907\uFF0C\u5982 MacBook \u6307\u7EB9"}],onCancel:g,onSubmit:k=>{let X=(k.name??"").trim();if(X===""){f("\u8BF7\u8F93\u5165\u540D\u79F0");return}d("\u6B63\u5728\u4FDD\u5B58",()=>Mf(i.item.id,{name:X}),{onSuccess:()=>x("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return me(Ae,{width:t,title:`\u786E\u8BA4\u5220\u9664 Passkey\u300C${i.item.name}\u300D\uFF1F`,detail:"\u5220\u9664\u540E\u65E0\u6CD5\u518D\u7528\u5B83\u767B\u5F55",confirmLabel:"\u5220\u9664",busy:l,error:u,onConfirm:()=>d("\u6B63\u5728\u5220\u9664",()=>If(i.item.id),{onSuccess:()=>x("\u5DF2\u5220\u9664")}),onCancel:g});if(i.name==="passkey"){let k=i.item;return me(bt,{flexDirection:"column",children:Ln(de,{title:`Passkey ${k.name}`,width:t,children:[me(Ye,{width:t-pe,items:[["\u540D\u79F0",k.name],["\u6DFB\u52A0\u65F6\u95F4",V(k.createdAt)],["\u6700\u8FD1\u4F7F\u7528",k.lastUsedAt===null?"\u2014":V(k.lastUsedAt)]]}),me(bt,{marginTop:1,children:me(ce,{width:t-pe,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:X=>{m(),s(X==="rename"?{name:"passkey-rename",item:k}:{name:"passkey-delete",item:k})}})})]})})}if(i.name==="confirm-revoke"){let k=i.item;return me(Ae,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:u,onConfirm:()=>{if(k.current){d("\u6B63\u5728\u9000\u51FA",()=>os(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}});return}d("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>Rf(k.id),{onSuccess:()=>x("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")})},onCancel:g})}if(i.name==="session"){let k=i.item;return Ln(bt,{flexDirection:"column",children:[me(de,{title:qo(k.device),note:k.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:me(Ye,{width:t-pe,items:[["\u8BBE\u5907\u7C7B\u578B",k.device?.type!=null?Ww[k.device.type]??k.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",k.device?.client!=null?`${k.device.client} ${k.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",k.device?.os!=null?`${k.device.os} ${k.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",k.device?.model!=null?`${k.device.vendor??""} ${k.device.model}`.trim():"\u2014"],["IP \u5730\u5740",k.ip],["\u767B\u5F55\u65F6\u95F4",V(k.loginAt)],["\u6700\u540E\u6D3B\u8DC3",V(k.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",V(k.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",k.userAgent??"\u2014"]]})}),l===null&&me(bt,{marginTop:1,children:me(ce,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{m(),s({name:"confirm-revoke",item:k})}})})]})}let M=S.totp,N=y.phase==="ready"?y.data:null,O=N===null?null:N.todo,U=O===null?0:O.posts.filter(k=>k.status==="pending").length,C=O===null?0:O.posts.filter(k=>k.status==="rejected").length,w=_e([U>0&&`${U} \u7BC7\u5BA1\u6838\u4E2D`,C>0&&`${C} \u7BC7\u672A\u901A\u8FC7`]),E=[{heading:"\u793E\u533A"},{value:{kind:"my-posts"},label:"\u6211\u7684\u5E16\u5B50",hint:w===""?void 0:w},{value:{kind:"my-comments"},label:"\u6211\u7684\u8BC4\u8BBA"},{value:{kind:"bookmarks"},label:"\u6211\u7684\u6536\u85CF"},{value:{kind:"drafts"},label:"\u6211\u7684\u8349\u7A3F",hint:O!==null&&O.drafts>0?`${O.drafts} \u7BC7\u672A\u53D1\u5E03`:void 0},{heading:""},{heading:"\u8D26\u6237"},{value:{kind:"avatar"},label:"\u4FEE\u6539\u5934\u50CF",hint:"\u663E\u793A\u5728\u4E2A\u4EBA\u4E3B\u9875\u548C\u4F60\u7684\u53D1\u8A00\u4E2D"},{value:{kind:"rename"},label:"\u4FEE\u6539\u7528\u6237\u540D"},{value:{kind:"email"},label:"\u4FEE\u6539\u90AE\u7BB1",hint:"\u9700\u8981\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801"},{value:{kind:"password"},label:"\u4FEE\u6539\u5BC6\u7801",hint:"\u4FEE\u6539\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55"},...b.avatarUrl===null?[]:[{value:{kind:"avatar-delete"},label:"\u5220\u9664\u5934\u50CF",labelTone:"danger"}],{heading:""},{heading:"\u4E24\u6B65\u9A8C\u8BC1"},...M.enabled?[{value:{kind:"code",intent:"rebind"},label:"\u91CD\u65B0\u7ED1\u5B9A",hint:"\u751F\u6210\u65B0\u5BC6\u94A5\u5E76\u66F4\u6362\u6062\u590D\u7801"},{value:{kind:"code",intent:"regenerate"},label:"\u91CD\u65B0\u751F\u6210\u6062\u590D\u7801",hint:"\u539F\u6709\u6062\u590D\u7801\u5168\u90E8\u4F5C\u5E9F"},{value:{kind:"code",intent:"disable"},label:"\u505C\u7528",labelTone:"danger"}]:[{value:{kind:"enable"},label:"\u542F\u7528\u4E24\u6B65\u9A8C\u8BC1",hint:"\u767B\u5F55\u65F6\u8981\u6C42\u989D\u5916\u8F93\u5165\u9A8C\u8BC1\u5668\u52A8\u6001\u7801"}],{heading:""},{heading:"Passkey"},...S.passkeys.length===0?[{value:{kind:"none"},label:"\u6682\u65E0 Passkey",hint:"\u6DFB\u52A0\u540E\u53EF\u4F7F\u7528\u6307\u7EB9\u3001\u9762\u5BB9\u6216\u786C\u4EF6\u5BC6\u94A5\u4E00\u6B65\u767B\u5F55",disabled:!0}]:[],...S.passkeys.map(k=>({value:{kind:"passkey",item:k},label:k.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${k.lastUsedAt===null?"\u2014":V(k.lastUsedAt)}`})),{value:{kind:"add-passkey"},label:"\u6DFB\u52A0 Passkey",hint:"\u9700\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"},{heading:""},{heading:"\u767B\u5F55\u8BBE\u5907"},...v.map(k=>({value:{kind:"session",item:k},label:k.current?`${qo(k.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:qo(k.device),...k.current?{labelTone:"accent"}:{},hint:`${k.ip} \xB7 \u6700\u540E\u6D3B\u8DC3 ${V(k.lastActiveAt)}`})),{value:{kind:"logout-all"},label:"\u9000\u51FA\u6240\u6709\u8BBE\u5907",labelTone:"danger",hint:"\u5F53\u524D\u8BBE\u5907\u4E5F\u4F1A\u4E00\u5E76\u9000\u51FA"}],_=N===null?null:N.homepage,A=[["\u7528\u6237\u540D",st(b.username)],["\u90AE\u7BB1",b.email],...M.enabled?[["\u4E24\u6B65\u9A8C\u8BC1",`\u542F\u7528\u4E8E ${M.enabledAt===null?"\u2014":V(M.enabledAt)}`],["\u6062\u590D\u7801",M.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${M.recoveryCodesRemaining} \u679A\uFF0C\u9A8C\u8BC1\u5668\u4E0D\u53EF\u7528\u65F6\u53EF\u4EE3\u66FF\u52A8\u6001\u7801\u767B\u5F55`]]:[],..._===null?[]:[["\u7B49\u7EA7",Gi(_.identity.points)],["\u79EF\u5206",`${_.identity.points} \xB7 ${Wi(_.identity.points)}`],["\u52A0\u5165\u65F6\u95F4",jr(_.joinedAt)]]],$=y.phase==="error"?y:null,Z=_!==null?Ut(Kw,t)+Q:$!==null?($.hint===void 0?1:2)+Q:0,oe=Vs(A.length,t)+Q+Z,fe=Q+Ze+To,D=_!==null&&ar(t)&&r-oe-fe>=Yw;return Ln(bt,{flexDirection:"column",children:[me(Ye,{width:t,items:A}),_!==null&&me(bt,{marginTop:Q,children:me(it,{width:t,tiles:[{label:"\u5E16\u5B50",value:String(_.stats.posts)},{label:"\u8BC4\u8BBA",value:String(_.stats.comments)},{label:"\u83B7\u8D5E",value:String(_.stats.likesReceived)}]})}),$!==null&&me(bt,{marginTop:Q,children:me(Ft,{message:`\u793E\u533A\u6570\u636E\u8BFB\u53D6\u5931\u8D25\uFF1A${$.message}`,hint:$.hint,width:t})}),D&&Ln(bt,{marginTop:Q,flexDirection:"column",children:[me(Rn,{title:"\u793E\u533A\u8DB3\u8FF9",width:t}),me(bt,{marginTop:We,flexDirection:"column",children:me(cr,{data:_.activity,value:k=>k.count,caption:`\u8FD1\u4E00\u5E74\u5171 ${_.activity.days.reduce((k,X)=>k+X.count,0)} \u6B21`,width:t})})]}),me(bt,{marginTop:Q,children:me(ce,{width:t,height:Math.max(3,r-oe-(D?fe:0)),isActive:l===null,items:E,retain:"menu",onSelect:k=>{m(),k.kind==="my-posts"?e.push("my-posts",{username:b.username}):k.kind==="my-comments"?e.push("my-comments",{username:b.username}):k.kind==="bookmarks"?e.push("bookmarks"):k.kind==="drafts"?e.push("drafts"):k.kind==="avatar"?s({name:"avatar"}):k.kind==="avatar-delete"?s({name:"avatar-delete"}):k.kind==="rename"?s({name:"rename"}):k.kind==="email"?s({name:"email"}):k.kind==="password"?s({name:"password"}):k.kind==="logout-all"?s({name:"confirm-logout-all"}):k.kind==="enable"?d("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>Rl({}),{failToast:!0,onSuccess:X=>s({name:"enroll",setup:X})}):k.kind==="code"?s({name:"code",intent:k.intent}):k.kind==="add-passkey"?s({name:"passkey-add"}):k.kind==="passkey"?s({name:"passkey",item:k.item}):k.kind==="session"&&s({name:"session",item:k.item})}})})]})}})})}import{Box as Zs,Text as ea,useInput as ik}from"ink";import{useRef as _g,useState as dr}from"react";import sk from"string-width";import{z as Rt}from"zod";var Qw=Rt.object({siteName:Rt.string(),apiLines:Rt.array(Rt.object({name:Rt.string(),description:Rt.string(),url:Rt.string()})),quotaPerUsd:Rt.number(),ticketAutoCloseMinutes:Rt.number(),legal:Rt.object({termsConfigured:Rt.boolean(),privacyConfigured:Rt.boolean()})});function ze(e,t){return fn(Qw,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var Zw=Rt.object({content:Rt.string(),configured:Rt.boolean()});function Sg(e,t){return fn(Zw,`${e}/api/agreements/${t}`)}var xg=12e4,Tg=e=>P(lt(Li),je("/tickets",{...e})),wg=e=>P(yu,"/tickets",{method:"POST",json:e}),Ul=e=>P(wu,`/tickets/${e}`),kg=(e,t,n)=>P(se,`/tickets/${e}/messages`,{method:"POST",json:{content:t,attachmentIds:n}}),ek=e=>P(Tu,je("/tickets/attachments",{filename:e.fileName,contentType:e.contentType}),{method:"POST",body:e.bytes,headers:{"content-type":"application/octet-stream"},timeoutMs:xg}),tk=e=>P(se,`/tickets/attachments/${e}`,{method:"DELETE"}),Xs={upload:ek,discard:tk},vg=(e,t)=>is(`/tickets/${e}/attachments/${t}`,{timeoutMs:xg}),Rg=e=>P(se,`/tickets/${e}/close`,{method:"POST"}),Cg=e=>P(se,`/tickets/${e}/reopen`,{method:"POST"});import{jsx as nk}from"react/jsx-runtime";function mr({title:e,width:t,download:n,onCancel:o,onSaved:r}){let{busy:i,error:s,run:a}=le();return nk(ne,{title:e,width:t,submitLabel:"\u4E0B\u8F7D",busy:i!==null,busyLabel:"\u6B63\u5728\u4E0B\u8F7D",error:s,fields:[{kind:"text",name:"path",label:"\u4FDD\u5B58\u8DEF\u5F84",placeholder:"\u7559\u7A7A\u4FDD\u5B58\u5230\u5F53\u524D\u76EE\u5F55",hint:"\u53EF\u586B\u76EE\u5F55\u6216\u5E26\u6587\u4EF6\u540D\u7684\u5B8C\u6574\u8DEF\u5F84",optional:!0}],onCancel:o,onSubmit:c=>{a("\u6B63\u5728\u4E0B\u8F7D",async()=>{let l=await n();return jf(c.path??"",l.fileName,l.bytes)},{onSuccess:r})}})}import{useEffect as ok,useRef as rk}from"react";function Qs(e,t,n=!0){let o=rk(t);o.current=t,ok(()=>{if(!n)return;let r=!1,i=setInterval(()=>{r||(r=!0,o.current().catch(()=>{}).finally(()=>{r=!1}))},e);return()=>clearInterval(i)},[e,n])}var ur={maxCount:Su,maxBytes:bu},Zn=e=>({kind:"textarea",name:"attachments",label:"\u9644\u4EF6\u8DEF\u5F84",rows:2,placeholder:"\u6BCF\u884C\u4E00\u4E2A\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\uFF0C\u53EF\u7559\u7A7A",hint:`\u6700\u591A ${e.maxCount} \u4E2A\uFF0C\u5355\u4E2A\u4E0D\u8D85\u8FC7 ${e.maxBytes/1024/1024}MB`,optional:!0});import{jsx as Ht,jsxs as jl}from"react/jsx-runtime";var ak=5e3,ck=11,lk=3,Pg=1;function mk(e,t){let n=[],o=r=>{let i=r.spans.reduce((a,c)=>a+sk(c.text),0),s=Math.max(0,t-i);return s===0?r:{spans:[{text:" ".repeat(s)},...r.spans]}};return e.forEach((r,i)=>{i>0&&n.push({spans:[]});let s=r.author.kind==="user",a={spans:[{text:vt(r.author),color:s?p.accent:p.mutedForeground},{text:` ${V(r.createdAt)}`,color:p.faintForeground}]},c=r.content===""?[]:Pt([{text:Vn(r.content),color:p.foreground}],Math.max(8,t-4)),l=r.attachments.map(u=>({spans:[{text:"[\u9644\u4EF6] ",color:p.faintForeground},{text:u.fileName,color:p.foreground},{text:` (${Vo(u.fileSize)})`,color:p.mutedForeground}]}));s?n.push(o(a),...c.map(o),...l.map(o)):n.push(a,...c,...l)}),n}function Ag({params:e}){let t=L(),{width:n}=H(),o=te(),[r,i]=dr("main"),[s,a]=dr(!1),[c,l]=dr(null),[u,m]=dr(null),[f,d]=dr(0),{busy:h,error:y,reset:g,fail:x,run:T}=le();Ce(h!==null);let R=ee([e.id,t.revision],async()=>{let[_,A]=await Promise.all([Ul(e.id),ze(t.ctx.site)]);return{detail:_,site:A}}),[b,S]=dr(null),v=_g(0),M=_g(t.revision);M.current!==t.revision&&(M.current=t.revision,v.current+=1,b!==null&&S(null));let N=R.phase==="ready"?R.data:null,O=b??N?.detail??null;Qs(ak,async()=>{if(O===null||h!==null)return;let _=v.current,A=await Ul(e.id);_===v.current&&(A.ticket.updatedAt!==O.ticket.updatedAt||A.messages.length!==O.messages.length)&&S(A)},r==="main"&&N!==null);let U=O?.messages.some(_=>_.attachments.length>0)??!1;G(_=>{r!=="main"||s||h!==null||(_==="r"?t.reload():_==="x"&&O!==null&&O.ticket.status!=="closed"?(g(),i("confirm-close")):_==="a"&&U&&(g(),l(null),m(null),i("attachments")))}),ik((_,A)=>{A.tab&&r==="main"&&!s&&O?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&h===null});let C=()=>{if(r!=="main"){g(),i("main");return}if(s){a(!1);return}t.pop()},w=(_,A)=>{T("\u6B63\u5728\u53D1\u9001",()=>En(A,Xs,$=>kg(e.id,_,$.map(Z=>Z.id))),{onSuccess:()=>{a(!1),d($=>$+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},E=r==="main"&&!s?["\u2191\u2193 \u6EDA\u52A8",...O?.ticket.status==="closed"?[]:["Tab \u56DE\u590D"],...U?["a \u9644\u4EF6"]:[],...O?.ticket.status==="closed"?[]:["x \u5173\u95ED\u5DE5\u5355"],"r \u5237\u65B0"]:[];return Ht(K,{trail:["\u5DE5\u5355\u652F\u6301",O?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:E,onEscape:C,isActive:h===null,children:Ht(W,{state:R,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:n,children:({site:_,detail:A})=>{let $=b??A,Z=$.ticket,oe=Z.status==="closed";if(r==="confirm-close")return Ht(Ae,{width:n,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${Z.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:h,error:y,onConfirm:()=>T("\u6B63\u5728\u5173\u95ED",()=>Rg(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:C});if(r==="attachments")return u!==null?Ht(mr,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${u.fileName}`,width:n,download:async()=>({fileName:u.fileName,bytes:await vg(e.id,u.id)}),onCancel:()=>m(null),onSaved:X=>{m(null),l(X),t.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):jl(Zs,{flexDirection:"column",children:[Ht(ce,{width:n,height:Math.max(3,o-1),isActive:h===null,items:[{heading:"\u9644\u4EF6"},...$.messages.flatMap(X=>X.attachments.map(F=>({value:F,label:F.fileName,hint:`${vt(X.author)} \xB7 ${Vo(F.fileSize)} \xB7 ${V(X.createdAt)}`})))],onSelect:X=>{l(null),m(X)}}),c!==null&&Ht(ea,{wrap:"truncate",color:p.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${c}`})]});let fe=_.ticketAutoCloseMinutes>0?Pg:0,D=oe?lk:s?ck:Pg,k=Math.max(3,o-fe-D-Q);return jl(Zs,{flexDirection:"column",children:[fe>0&&Ht(ea,{wrap:"truncate",color:p.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${_.ticketAutoCloseMinutes} \u5206\u949F\u672A\u56DE\u5E94\uFF0C\u5DE5\u5355\u5C06\u81EA\u52A8\u5173\u95ED\uFF1B\u5DF2\u5173\u95ED\u7684\u5DE5\u5355\u53EF\u968F\u65F6\u91CD\u65B0\u6253\u5F00`}),Ht(dt,{lines:mk($.messages,n),height:k,isActive:!s&&h===null,pinBottom:!0}),Ht(Zs,{marginTop:1,flexDirection:"column",children:oe?jl(Zs,{flexDirection:"column",children:[Ht(ea,{color:p.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),Ht(ce,{width:n,isActive:h===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>T("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>Cg(e.id),{failToast:!0,onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?Ht(ne,{title:"\u56DE\u590D\u5DE5\u5355",width:n,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:h!==null,busyLabel:h??"\u6B63\u5728\u53D1\u9001",error:y,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9",optional:!0},Zn(ur)],onCancel:()=>a(!1),onSubmit:X=>{let F=(X.content??"").trim(),re;try{re=Jn(X.attachments??"",ur)}catch(B){x(xe(B));return}if(F===""&&re.length===0){x("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9\u6216\u9644\u4EF6\u8DEF\u5F84");return}w(F,re)}},f):Ht(ea,{color:p.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as uk}from"ink";import{useState as dk}from"react";import{jsx as ko,jsxs as gk}from"react/jsx-runtime";var pk=_t(nc,Hc,"\u5168\u90E8\u72B6\u6001"),fk={title:"\u7B80\u8981\u63CF\u8FF0\u4F60\u7684\u95EE\u9898",content:"\u8BE6\u7EC6\u63CF\u8FF0\u9047\u5230\u7684\u95EE\u9898\uFF0C\u4FBF\u4E8E\u7BA1\u7406\u5458\u5FEB\u901F\u5B9A\u4F4D"},Hl={billing:{title:"\u7B80\u8FF0\u8BA1\u8D39\u6216\u989D\u5EA6\u7591\u95EE",content:"\u8BF4\u660E\u7591\u95EE\u6D89\u53CA\u7684\u65F6\u95F4\u6BB5\u3001\u6A21\u578B\u4E0E\u9884\u671F\u5DEE\u5F02\uFF0C\u53EF\u9644\u989D\u5EA6\u6D41\u6C34\u6216\u4F7F\u7528\u65E5\u5FD7\u4E2D\u7684\u8BB0\u5F55"},technical:{title:"\u7B80\u8FF0\u63A5\u53E3\u6216\u8C03\u7528\u95EE\u9898",content:"\u63CF\u8FF0\u62A5\u9519\u73B0\u8C61\u4E0E\u590D\u73B0\u6B65\u9AA4\uFF0C\u9644\u8BF7\u6C42 ID\u3001\u6A21\u578B\u540D\u3001\u53D1\u751F\u65F6\u95F4\u7B49\u4FE1\u606F"},account:{title:"\u7B80\u8FF0\u8D26\u53F7\u76F8\u5173\u95EE\u9898",content:"\u63CF\u8FF0\u767B\u5F55\u3001\u90AE\u7BB1\u6216\u5B89\u5168\u76F8\u5173\u7684\u5177\u4F53\u95EE\u9898\uFF0C\u5207\u52FF\u586B\u5199\u5BC6\u7801\u7B49\u654F\u611F\u4FE1\u606F"},other:fk};function Eg(){let e=L(),{width:t}=H(),n=te(),[o,r]=dk({name:"list"}),[i,s]=Ie("status",()=>""),{busy:a,error:c,reset:l,fail:u,run:m}=le(),f=Ve([e.revision,i],y=>Tg({page:y,...i===""?{}:{status:i}}),{retain:"page"}),d=o.name==="list";G((y,g)=>{d&&(y==="r"?e.reload():y==="f"?r({name:"filter"}):y==="n"?r({name:"create-category"}):g.leftArrow?f.go(-1):g.rightArrow&&f.go(1))});let h=()=>{o.name==="list"?e.pop():o.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return ko(K,{hints:d?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","n \u65B0\u5EFA","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:h,children:o.name==="filter"?ko(ne,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:pk,initial:i}],onCancel:h,onSubmit:y=>{s(y.status??""),f.reset(),r({name:"list"})}}):o.name==="create-category"?ko(ce,{width:t,height:n,items:[{heading:"\u5206\u7C7B"},...oc.map(y=>({value:y,label:Xi(y),hint:Hl[y].title}))],onSelect:y=>r({name:"create",category:y})}):o.name==="create"?ko(ne,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${Xi(o.category)}`,width:t,submitLabel:"\u63D0\u4EA4",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[{kind:"select",name:"priority",label:"\u4F18\u5148\u7EA7",options:rc.map(y=>({value:y,label:qc(y).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:Hl[o.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:Hl[o.category].content},Zn(ur)],onCancel:h,onSubmit:y=>{let g=(y.title??"").trim(),x=(y.content??"").trim();if(g===""){u("\u8BF7\u586B\u5199\u6807\u9898");return}if(x===""){u("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}let T;try{T=Jn(y.attachments??"",ur)}catch(R){u(xe(R));return}m("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>En(T,Xs,R=>wg({title:g,category:o.category,priority:y.priority??"normal",content:x,attachmentIds:R.map(b=>b.id)})),{onSuccess:R=>{r({name:"list"}),f.reset(),e.reload(),e.push("ticket",{id:R.id}),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):ko(W,{state:f.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:y=>gk(uk,{flexDirection:"column",children:[ko(ue,{retain:"list",items:y.items,width:t,height:Math.max(3,n-1),columns:[{label:"\u6807\u9898",shrink:!0},{label:"\u4F18\u5148\u7EA7"},{label:"\u5206\u7C7B"},{label:"\u6700\u540E\u66F4\u65B0"},{label:"\u72B6\u6001",align:"right"}],row:g=>[g.title,yt(qc(g.priority)),Xi(g.category),V(g.updatedAt),yt(Hc(g.status))],onOpen:g=>e.push("ticket",{id:g.id}),emptyLabel:i===""?"\u6682\u65E0\u5DE5\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u9047\u5230\u95EE\u9898\u65F6\u53EF\u65B0\u5EFA\u5DE5\u5355\uFF0C\u7BA1\u7406\u5458\u4F1A\u5C3D\u5FEB\u56DE\u590D":void 0}),ko(Ke,{page:f.page,pages:f.pages,total:f.total,width:t})]})})})}import{Box as hk}from"ink";import{jsx as gi}from"react/jsx-runtime";function Mg({params:e}){let t=L(),{width:n}=H(),o=te(),r=ee([e.type,t.revision],()=>Sg(t.ctx.site,e.type));return gi(K,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:gi(W,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:n,children:i=>i.configured?gi(hk,{flexDirection:"column",children:gi(dt,{lines:hn(i.content,n),height:o})}):gi(he,{tone:"info",width:n,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}var Ig=(e,t)=>fn(se,`${e}/api/auth/send-code`,{json:t});async function Ng(e,t){let n=await Jt(`${e}/api/auth/register`,{json:t});sn(n);let o=Go.parse(n.data);return Vr(e,zr({refresh:null,device:null},n.headers),o)}var Lg=(e,t)=>fn(se,`${e}/api/auth/forgot-password`,{json:t}),Og=(e,t)=>fn(se,`${e}/api/auth/reset-password`,{json:t});import{jsx as Dg}from"react/jsx-runtime";function $g(){let e=L(),{width:t}=H(),{busy:n,error:o,fail:r,run:i}=le();return Ce(n!==null),Dg(K,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:n===null,children:Dg(ne,{title:"\u91CD\u7F6E\u5BC6\u7801",width:t,submitLabel:"\u63D0\u4EA4",busy:n!==null,busyLabel:n??"\u6B63\u5728\u91CD\u7F6E",error:o,fields:[{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u6CE8\u518C\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:s=>Lg(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${Ot} \u4F4D`,hint:"\u91CD\u7F6E\u540E\u6240\u6709\u8BBE\u5907\u90FD\u9700\u91CD\u65B0\u767B\u5F55"}],onCancel:()=>e.pop(),onSubmit:s=>{let a=(s.email??"").trim(),c=(s.code??"").trim(),l=s.password??"";if(a===""||c===""){r("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(l.length<Ot){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${Ot} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>Og(e.ctx.site,{email:a,code:c,password:l}),{onSuccess:()=>{e.toast("ok","\u5BC6\u7801\u5DF2\u91CD\u7F6E\uFF0C\u8BF7\u767B\u5F55"),e.pop()}})}})})}import{Box as Gl,Text as bk}from"ink";import{useState as Fg}from"react";import{Box as Bg}from"ink";import{jsx as ql,jsxs as yk}from"react/jsx-runtime";var ta=e=>e.termsConfigured||e.privacyConfigured;function na({legal:e,width:t,onAgree:n}){let o=L(),r=[e.termsConfigured?"\u300A\u7528\u6237\u534F\u8BAE\u300B":"",e.privacyConfigured?"\u300A\u9690\u79C1\u653F\u7B56\u300B":""].filter(s=>s!==""),i=[{value:"agree",label:"\u6211\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\uFF0C\u7EE7\u7EED",hint:r.join("\u4E0E")},...e.termsConfigured?[{value:"terms",label:"\u67E5\u770B\u7528\u6237\u534F\u8BAE"}]:[],...e.privacyConfigured?[{value:"privacy",label:"\u67E5\u770B\u9690\u79C1\u653F\u7B56"}]:[],{value:"back",label:"\u8FD4\u56DE"}];return yk(Bg,{flexDirection:"column",children:[ql(he,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),ql(Bg,{marginTop:1,children:ql(ce,{items:i,width:t,onSelect:s=>{s==="agree"?n():s==="terms"?o.push("agreement",{type:"terms"}):s==="privacy"?o.push("agreement",{type:"privacy"}):o.pop()}})})]})}import{jsx as eo,jsxs as Ug}from"react/jsx-runtime";function jg(){let e=L(),{width:t}=H(),[n,o]=Fg({name:"credentials"}),[r,i]=Fg(!1),{busy:s,error:a,reset:c,fail:l,run:u}=le(),m=ee([e.revision],()=>ze(e.ctx.site)),f=g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${g}`),e.home()},d=(g,x)=>{u("\u6B63\u5728\u9A8C\u8BC1",()=>Id(e.ctx.site,g,x),{onSuccess:T=>{if(T.status==="totp_required"){o({name:"factor",ticket:T.ticket,jar:T.jar});return}f(T.session.username)}})},h=(g,x)=>{u("\u6B63\u5728\u9A8C\u8BC1",()=>Nd(e.ctx.site,g.jar,g.ticket,x,g.kind),{onSuccess:T=>f(T.username)})},y=()=>{n.name==="credentials"?e.pop():(c(),o({name:"credentials"}))};return Ug(K,{trail:n.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:y,isActive:s===null,children:[n.name==="credentials"&&eo(W,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:g=>ta(g.legal)&&!r?eo(na,{legal:g.legal,width:t,onAgree:()=>i(!0)}):Ug(Gl,{flexDirection:"column",children:[eo(ne,{title:"\u767B\u5F55",width:t,submitLabel:"\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"account",label:"\u8D26\u53F7",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D\u6216\u90AE\u7BB1"},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801"}],onCancel:y,onSubmit:x=>{let T=(x.account??"").trim(),R=x.password??"";if(T===""||R===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}d(T,R)}}),eo(Gl,{marginTop:1,children:eo(bk,{color:p.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),n.name==="factor"&&eo(ce,{width:t,items:[{value:"totp",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",hint:"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801"},{value:"recovery-code",label:"\u6062\u590D\u7801",hint:"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onSelect:g=>o({name:"code",ticket:n.ticket,jar:n.jar,kind:g})}),n.name==="code"&&eo(Gl,{flexDirection:"column",children:eo(ne,{title:"\u4E24\u6B65\u9A8C\u8BC1",width:t,submitLabel:"\u9A8C\u8BC1\u5E76\u767B\u5F55",error:a,busy:s!==null,busyLabel:s??"\u6B63\u5728\u9A8C\u8BC1",fields:[{kind:"text",name:"code",label:n.kind==="totp"?"\u52A8\u6001\u9A8C\u8BC1\u7801":"\u6062\u590D\u7801",placeholder:n.kind==="totp"?"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801":"\u8BF7\u8F93\u5165\u6062\u590D\u7801",hint:n.kind==="totp"?"\u8F93\u5165\u9A8C\u8BC1\u5668 App \u4E2D\u663E\u793A\u7684\u52A8\u6001\u9A8C\u8BC1\u7801":"\u8F93\u5165\u672A\u4F7F\u7528\u8FC7\u7684\u4E00\u6B21\u6027\u6062\u590D\u7801"}],onCancel:y,onSubmit:g=>{let x=(g.code??"").trim();if(x===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}h(n,x)}})})]})}import{useState as Sk}from"react";import{jsx as oa}from"react/jsx-runtime";function Hg(){let e=L(),{width:t}=H(),[n,o]=Sk(!1),{busy:r,error:i,fail:s,run:a}=le(),c=ee([e.revision],()=>ze(e.ctx.site));return oa(K,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:oa(W,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>ta(l.legal)&&!n?oa(na,{legal:l.legal,width:t,onAgree:()=>o(!0)}):oa(ne,{title:"\u6CE8\u518C",width:t,submitLabel:"\u6CE8\u518C",busy:r!==null,busyLabel:r??"\u6B63\u5728\u6CE8\u518C",error:i,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"},{kind:"text",name:"email",label:"\u90AE\u7BB1",placeholder:"\u8BF7\u8F93\u5165\u90AE\u7BB1"},{kind:"code",name:"code",label:"\u9A8C\u8BC1\u7801",placeholder:"6 \u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801",emailField:"email",send:u=>Ig(e.ctx.site,{email:u})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${Ot} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:u=>{let m=(u.username??"").trim(),f=(u.email??"").trim(),d=(u.code??"").trim(),h=u.password??"",y=(u.invite??"").trim();if(m===""||m.length>Kt){s(`\u8BF7\u8F93\u5165 1 \u5230 ${Kt} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(f===""||d===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(h.length<Ot){s(`\u5BC6\u7801\u81F3\u5C11 ${Ot} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>Ng(e.ctx.site,{username:m,email:f,password:h,code:d,...y===""?{}:{inviteCode:y}}),{onSuccess:g=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u6CE8\u518C\u6210\u529F\uFF1A${g.username}`),e.home()}})}})})})}import{Box as bi}from"ink";import{useState as Ck}from"react";import{Box as qg,Text as xk}from"ink";import{useState as ra}from"react";import{jsx as On,jsxs as Rk}from"react/jsx-runtime";function pr(){let e=L();return t=>{let n=pg[t.status];e.toast(n.tone,n.message)}}var ia=e=>e===null?void 0:`\u539F\u56E0\uFF1A${e}`,fr=(e,t)=>e===null?0:ul(Lc(e.until),ia(e.reason),t)+1;function vo({muted:e,width:t}){return e===null?null:On(qg,{marginBottom:1,children:On(he,{tone:"warn",width:t,title:Lc(e.until),detail:ia(e.reason),wrap:!0})})}var sa=(e,t,n,o)=>t==="published"?0:ul(e[t],ia(n),o);function hi({notices:e,status:t,reason:n,width:o}){return t==="published"?null:On(he,{tone:t==="pending"?"warn":"fail",title:e[t],detail:ia(n),width:o,wrap:!0})}var yi=e=>e===null?0:(e.hint===void 0?1:2)+1,Tk=["content","attachments"],wk=9,kk=3,vk=8;function aa({postId:e,replyTo:t,width:n,height:o,onDone:r,onCancel:i}){let{busy:s,error:a,fail:c,run:l}=le(),[u,m]=ra({content:"",attachments:""}),[f,d]=ra(!1),h=Tk.some(g=>(u[g]??"").trim()!==""),y=Math.min(vk,Math.max(kk,o-wk-yi(a)));return Ce(h),gn(()=>d(!1),{isActive:f,layer:zn.panel}),G(g=>{g==="q"&&h&&d(!0)},!f&&s===null),f?On(Ae,{width:n,title:t===null?"\u653E\u5F03\u8BC4\u8BBA":"\u653E\u5F03\u56DE\u590D",detail:t===null?"\u8BC4\u8BBA\u5C1A\u672A\u53D1\u8868\uFF0C\u786E\u5B9A\u653E\u5F03\u5417\uFF1F":"\u56DE\u590D\u5C1A\u672A\u53D1\u8868\uFF0C\u786E\u5B9A\u653E\u5F03\u5417\uFF1F",confirmLabel:"\u653E\u5F03",onConfirm:i,onCancel:()=>d(!1)}):On(ne,{title:t===null?"\u53D1\u8868\u8BC4\u8BBA":`\u56DE\u590D ${t.mention}`,width:n,submitLabel:t===null?"\u53D1\u8868\u8BC4\u8BBA":"\u53D1\u8868\u56DE\u590D",busy:s!==null,busyLabel:s??"\u6B63\u5728\u63D0\u4EA4",error:a,fields:[{kind:"textarea",name:"content",label:"\u5185\u5BB9",rows:y,maxLength:wc,initial:u.content,placeholder:t===null?"\u8BF7\u8F93\u5165\u8BC4\u8BBA\u5185\u5BB9\uFF0C\u652F\u6301 Markdown":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9"},{...Zn(Ys),initial:u.attachments}],onChange:m,onCancel:()=>h?d(!0):i(),onSubmit:g=>{let x=(g.content??"").trim(),T;try{T=Jn(g.attachments??"",Ys)}catch(R){c(xe(R));return}if(x===""&&T.length===0){c(t===null?"\u8BF7\u8F93\u5165\u8BC4\u8BBA\u5185\u5BB9":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9");return}if(jt(x).length+T.length>Ys.maxCount){c("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");return}l("\u6B63\u5728\u63D0\u4EA4",()=>En(T,ai,R=>pf(e,{content:pi(x,R),...t===null?{}:{replyToId:t.id}})),{onSuccess:r})}})}function ca({target:e,width:t,onDone:n,onCancel:o}){let{busy:r,error:i,fail:s,run:a}=le();return On(ne,{title:e.kind==="post"?"\u4E3E\u62A5\u5E16\u5B50":"\u4E3E\u62A5\u8BC4\u8BBA",width:t,submitLabel:"\u63D0\u4EA4\u4E3E\u62A5",busy:r!==null,busyLabel:r??"\u6B63\u5728\u63D0\u4EA4",error:i,fields:[{kind:"select",name:"reason",label:"\u4E3E\u62A5\u539F\u56E0",options:[{value:"",label:"\u8BF7\u9009\u62E9\u4E3E\u62A5\u539F\u56E0"},...Ei.map(c=>({value:c,label:xd(c)}))],initial:""},{kind:"text",name:"detail",label:"\u8865\u5145\u8BF4\u660E",placeholder:"\u8BF4\u660E\u5177\u4F53\u95EE\u9898\uFF0C\u4FBF\u4E8E\u7BA1\u7406\u5458\u6838\u5B9E",optional:!0}],onCancel:o,onSubmit:c=>{let l=Ei.find(f=>f===c.reason);if(l===void 0){s("\u8BF7\u9009\u62E9\u4E3E\u62A5\u539F\u56E0");return}let u=(c.detail??"").trim();if(u.length>Fi){s(`\u8865\u5145\u8BF4\u660E\u6700\u591A ${Fi} \u4E2A\u5B57\u7B26`);return}let m={reason:l,detail:u===""?null:u};a("\u6B63\u5728\u63D0\u4EA4",()=>e.kind==="post"?bf(e.id,m):Sf(e.id,m),{onSuccess:n})}})}function la({refs:e,width:t,height:n}){let o=L(),[r,i]=ra(null),[s,a]=ra(null);return r!==null?On(mr,{title:`\u4FDD\u5B58\u9644\u4EF6 \u2014 ${st(r.name)}`,width:t,download:async()=>{let c=await Nf(r.id);return{fileName:st(c.fileName),bytes:c.bytes}},onCancel:()=>i(null),onSaved:c=>{i(null),a(c),o.toast("ok","\u9644\u4EF6\u5DF2\u4FDD\u5B58")}}):Rk(qg,{flexDirection:"column",children:[On(ce,{width:t,height:Math.max(3,n-(s===null?0:1)),items:[{heading:"\u9644\u4EF6"},...e.map(c=>({value:c,label:Fl(c)}))],onSelect:c=>{a(null),i(c)}}),s!==null&&On(xk,{wrap:"truncate",color:p.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${st(s)}`})]})}import{jsx as It,jsxs as Wg}from"react/jsx-runtime";var _k=["category","title","content","attachments"],Pk=11,Ak=2,Ek=3,Mk=16,Gg={new:"\u53D1\u5E03\u5E16\u5B50",draft:"\u7F16\u8F91\u8349\u7A3F",edit:"\u7F16\u8F91\u5E16\u5B50"};function Ik(e){return e.kind==="edit"?{category:String(e.post.category.id),title:e.post.title,content:e.post.content,attachments:""}:e.kind==="draft"?{category:e.draft.category===null?"":String(e.draft.category.id),title:e.draft.title,content:e.draft.content,attachments:""}:{category:"",title:"",content:"",attachments:""}}function Nk(e,t){return e.find(n=>String(n.id)===t)?.description}function zg({mode:e}){let t=L(),{width:n}=H(),o=te(),r=Ik(e),[i,s]=Ie("values",()=>r),[a,c]=Ck(!1),{busy:l,error:u,fail:m,reset:f,run:d}=le(),h=pr(),y=ee([],$s),g=_k.some(N=>(i[N]??"")!==(r[N]??""));Ce(g||l!==null);let x=N=>{let O=N.category??"";return{categoryId:O===""?null:Number(O),title:(N.title??"").trim(),content:(N.content??"").trim()}},T=(N,O)=>{let U;try{U=Jn(N.attachments??"",Ks)}catch(C){return m(xe(C)),null}return jt(O).length+U.length>Ks.maxCount?(m("\u9644\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650"),null):U},R=N=>{if(e.kind==="edit"&&!g){m("\u5185\u5BB9\u672A\u4FEE\u6539");return}let{categoryId:O,title:U,content:C}=x(N);if(O===null){m("\u8BF7\u9009\u62E9\u677F\u5757");return}if(U===""){m("\u8BF7\u586B\u5199\u6807\u9898");return}if(U.length>mo){m(`\u6807\u9898\u6700\u591A ${mo} \u4E2A\u5B57\u7B26`);return}let w=T(N,C);if(w!==null){if(C===""&&w.length===0){m("\u8BF7\u586B\u5199\u6B63\u6587");return}d("\u6B63\u5728\u63D0\u4EA4",()=>En(w,ai,E=>{let _={categoryId:O,title:U,content:pi(C,E)};return e.kind==="edit"?lf(e.post.id,_):e.kind==="draft"?df(e.draft.id,_):cf(_)}),{onSuccess:E=>{h(E),t.pop(),e.kind!=="edit"&&t.push("post",{id:E.id})}})}},b=(N,O)=>{let{categoryId:U,title:C,content:w}=x(N);if(C.length>mo){m(`\u6807\u9898\u6700\u591A ${mo} \u4E2A\u5B57\u7B26`);return}let E=T(N,w);E!==null&&d("\u6B63\u5728\u4FDD\u5B58\u8349\u7A3F",()=>En(E,ai,async _=>{let A={categoryId:U,title:C,content:pi(w,_)};O===null?await mf(A):await uf(O,A)}),{onSuccess:()=>{t.pop(),t.toast("ok","\u5DF2\u5B58\u8349\u7A3F")}})},S=e.kind==="draft"?e.draft.id:null,v=()=>{if(!g){t.pop();return}f(),c(!0)},M=()=>{if(!a){t.pop();return}f(),c(!1)};return G(N=>{N==="q"&&g&&v()},!a&&l===null),It(K,{trail:["\u793E\u533A\u8BBA\u575B",Gg[e.kind]],onEscape:M,isActive:l===null,children:It(W,{state:y,loading:"\u6B63\u5728\u8BFB\u53D6\u677F\u5757",width:n,children:N=>{if(a&&e.kind==="edit")return It(Ae,{width:n,title:"\u653E\u5F03\u4FEE\u6539",detail:"\u4FEE\u6539\u5C1A\u672A\u63D0\u4EA4\uFF0C\u786E\u5B9A\u653E\u5F03\u5417\uFF1F",confirmLabel:"\u653E\u5F03\u4FEE\u6539",onConfirm:t.pop,onCancel:M});if(a)return Wg(bi,{flexDirection:"column",children:[It(he,{tone:"warn",width:n,title:"\u4FDD\u5B58\u8349\u7A3F",detail:"\u5185\u5BB9\u5C1A\u672A\u53D1\u5E03\uFF0C\u662F\u5426\u5B58\u4E3A\u8349\u7A3F\uFF1F"}),u!==null&&It(bi,{marginTop:1,children:It(Ft,{message:u.message,hint:u.hint,width:n})}),It(bi,{marginTop:1,children:l!==null?It(De,{label:l}):It(ce,{width:n,items:[{value:"save",label:"\u5B58\u8349\u7A3F"},{value:"stay",label:"\u7EE7\u7EED\u7F16\u8F91"},{value:"discard",label:"\u4E0D\u4FDD\u5B58",labelTone:"danger"}],onSelect:_=>{_==="save"?b(i,S):_==="stay"?M():t.pop()}})})]});let O=e.kind==="edit"?0:1,U=e.kind==="edit"&&e.post.status==="published",C=U?Ak:0,w=Math.min(Mk,Math.max(Ek,o-Pk-O-C-yi(u))),E=i.category??"";return Wg(bi,{flexDirection:"column",children:[U&&It(bi,{marginBottom:1,children:It(he,{tone:"info",width:n,title:"\u4FEE\u6539\u540E\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u671F\u95F4\u5E16\u5B50\u6682\u65F6\u9690\u85CF"})}),It(ne,{title:Gg[e.kind],width:n,submitLabel:e.kind==="edit"?"\u63D0\u4EA4\u4FEE\u6539":"\u53D1\u5E03",busy:l!==null,busyLabel:l??"\u6B63\u5728\u63D0\u4EA4",error:u,fields:[{kind:"select",name:"category",label:"\u677F\u5757",options:[...E===""?[{value:"",label:"\u8BF7\u9009\u62E9\u677F\u5757"}]:[],...N.map(_=>({value:String(_.id),label:_.name}))],initial:i.category,hint:_=>Nk(N,_)},{kind:"text",name:"title",label:"\u6807\u9898",initial:i.title,placeholder:"\u8BF7\u8F93\u5165\u5E16\u5B50\u6807\u9898"},{kind:"textarea",name:"content",label:"\u6B63\u6587",rows:w,maxLength:Bi,initial:i.content,placeholder:"\u8BF7\u8F93\u5165\u6B63\u6587\uFF0C\u652F\u6301 Markdown"},{...Zn(Ks),initial:i.attachments}],secondary:e.kind==="edit"?void 0:{label:"\u5B58\u8349\u7A3F",onSubmit:_=>b(_,S)},onChange:s,onCancel:v,onSubmit:R})]})}})})}function Vg({params:e}){return It(zg,{mode:e.draft===null?{kind:"new"}:{kind:"draft",draft:e.draft}})}function Kg({params:e}){return It(zg,{mode:{kind:"edit",post:e.post}})}import{Box as to,Text as Wl}from"ink";import{useEffect as zl,useMemo as Yg,useState as ma}from"react";import{useRef as Lk}from"react";function qt(e){let t=Lk(null);return e.phase==="ready"&&(t.current={data:e.data}),e.phase==="error"&&(t.current=null),e.phase==="loading"&&t.current!==null?{phase:"ready",data:t.current.data}:e}import{jsx as Ee,jsxs as Vl}from"react/jsx-runtime";var ua={kind:"floor"},Ok=2,Jg=3,Dk=4,Zg=2,Xg=3,Qg="PgUp PgDn \u6EDA\u52A8\u6B63\u6587",da=(e,t)=>{let n=sa(Yo,e.status,e.reviewReason,t);return n===0?0:n+1};function $k(e,t,n,o,r){let i=Math.max(Zg+Xg,o-Ok-da(e,r)-3),s=Math.max(Xg,Math.min(Dk,i-Jg)),a=Math.min(Jg,i-s),c=Math.min(1+Math.max(2,n),Math.max(s,Math.floor(i/2))),l=Math.min(t.length,Math.max(a,i-c));return{bodyRows:l,listRows:i-l}}function Bk(e,t,n,o,r){let i=o-Ze-1-da(e,r)-2-n;return Math.min(t.length,Math.max(Zg,i))}function Fk(e,t,n,o){let r=e.status==="published"&&t.status==="published"&&n.status==="published",i=Nn(n.author,o);return[...r&&!i?[{value:"like",label:n.liked?"\u53D6\u6D88\u70B9\u8D5E":"\u70B9\u8D5E"}]:[],...r?[{value:"reply",label:"\u56DE\u590D"}]:[],...r&&!i?[{value:"report",label:"\u4E3E\u62A5"}]:[],...jt(n.content).length>0?[{value:"attachments",label:"\u9644\u4EF6"}]:[],{value:"author",label:"\u7528\u6237\u4E3B\u9875",hint:vt(n.author)},...i?[{value:"delete",label:"\u5220\u9664",labelTone:"danger"}]:[]]}function eh({params:e}){let t=L(),{width:n}=H(),o=te(),[r,i]=ma({name:"main"}),[s,a]=ma(null),{busy:c,error:l,reset:u,run:m}=le();Ce(r.name==="confirm-delete"&&c!==null);let f=pr(),d=qt(ee([e.postId,e.floorId,t.revision],async()=>{let[F,re,B,z]=await Promise.all([Bs(e.postId),Zp(e.postId,e.floorId),An(),ir()]);return{post:F,floor:re,me:B.user,muted:z.muted}})),h=Ve([e.floorId,t.revision],F=>ef(e.floorId,F),{retain:"replies-page"}),y=qt(h.state),g=d.phase==="ready"?d.data:null,x=y.phase==="ready"?y.data:null,[T,R]=ma(void 0);zl(()=>R(void 0),[g]);let[b,S]=ma(new Map);zl(()=>S(new Map),[x]);let v=g===null?null:{...g,floor:{...g.floor,...T}},M=x===null?[]:x.items.map(F=>({...F,...b.get(F.id)})),N=fg(id(M)),O=r.name==="actions"?M.find(F=>F.id===r.id)??null:null,U=s!==null&&M.some(F=>F.id===s);zl(()=>{U&&a(null)},[U]);let C=v===null?null:v.floor.content,w=Yg(()=>C===null?[]:di(C,n),[C,n]),E=O===null?null:O.content,_=Yg(()=>E===null?[]:di(E,n-pe),[E,n]),A=v===null?null:$k(v.floor,w,M.length,o-fr(v.muted,n),n),$=v===null||O===null?null:Fk(v.post,v.floor,O,v.me.username),Z=O===null||$===null?null:Bk(O,_,$.length,o,n-pe),oe=F=>v===null?null:F.kind==="floor"?v.floor:M.find(re=>re.id===F.id)??null,fe=(F,re)=>{m(F.liked?"\u6B63\u5728\u53D6\u6D88\u70B9\u8D5E":"\u6B63\u5728\u70B9\u8D5E",()=>hf(F.id,!F.liked),{failToast:!0,onSuccess:({likeCount:B})=>re({liked:!F.liked,likeCount:B})})};G((F,re)=>{if(v===null||r.name!=="main"||c!==null)return;let{post:B,floor:z,me:Y}=v,be=B.status==="published"&&z.status==="published",Me=Nn(z.author,Y.username);F==="r"?t.reload():re.leftArrow?h.go(-1):re.rightArrow?h.go(1):F==="c"&&be?i({name:"reply",target:ua}):F==="l"&&be&&!Me?fe(z,R):F==="p"&&be&&!Me?i({name:"report",target:ua}):F==="a"&&jt(z.content).length>0?i({name:"attachments",target:ua}):F==="u"?t.push("homepage",{author:ui(z.author)}):F==="d"&&Me&&(u(),i({name:"confirm-delete",target:ua}))});let D=()=>{if(r.name==="main"){t.pop();return}if(u(),r.name!=="actions"&&r.target.kind==="reply"){i({name:"actions",id:r.target.id});return}i({name:"main"})},k=(F,re)=>{let B={kind:"reply",id:F.id};re==="like"?fe(F,z=>S(Y=>new Map(Y).set(F.id,z))):re==="reply"?i({name:"reply",target:B}):re==="report"?i({name:"report",target:B}):re==="attachments"?i({name:"attachments",target:B}):re==="author"?t.push("homepage",{author:ui(F.author)}):(u(),i({name:"confirm-delete",target:B}))};return Ee(K,{trail:["\u793E\u533A\u8BBA\u575B","\u697C\u5C42\u8BE6\u60C5"],hints:(()=>{if(v===null)return[];if(r.name==="actions")return Z===null?[]:["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C",..._.length>Z?[Qg]:[]];if(r.name!=="main"||A===null)return[];let{post:F,floor:re,me:B}=v,z=F.status==="published"&&re.status==="published",Y=Nn(re.author,B.username);return[...M.length>0?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C"]:[],...w.length>A.bodyRows?[Qg]:[],...z?["c \u56DE\u590D"]:[],...z&&!Y?[re.liked?"l \u53D6\u6D88\u70B9\u8D5E":"l \u70B9\u8D5E","p \u4E3E\u62A5"]:[],...jt(re.content).length>0?["a \u9644\u4EF6"]:[],"u \u7528\u6237\u4E3B\u9875",...Y?["d \u5220\u9664"]:[],"r \u5237\u65B0"]})(),onEscape:D,isActive:r.name==="main"||c===null,children:Ee(W,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u697C\u5C42",width:n,children:({post:F,floor:re,me:B,muted:z})=>{let Y={...re,...T},be=ge=>`${Nn(ge.author,B.username)?"\u83B7\u8D5E":ge.liked?"\u5DF2\u8D5E":"\u70B9\u8D5E"} ${ge.likeCount}`;if(r.name==="actions"){if(O===null||$===null||Z===null)return Ee(he,{tone:"info",width:n,title:"\u8BE5\u56DE\u590D\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664"});let ge=n-pe;return Vl(de,{title:vt(O.author),note:V(O.createdAt),width:n,children:[Ee(Wl,{wrap:"truncate",color:p.mutedForeground,children:_e([O.replyTo!==null&&`\u56DE\u590D ${Js(O.replyTo.author)}`,be(O)])}),da(O,ge)>0&&Ee(to,{marginTop:1,children:Ee(hi,{notices:Yo,status:O.status,reason:O.reviewReason,width:ge})}),Ee(to,{marginTop:1,children:Ee(dt,{lines:_,height:Z,isActive:c===null,pageKeysOnly:!0})}),Ee(to,{marginTop:1,children:c!==null?Ee(De,{label:c}):Ee(ce,{width:ge,items:$,onSelect:et=>k(O,et)})})]})}if(r.name!=="main"){let ge=oe(r.target);if(ge===null)return Ee(he,{tone:"info",width:n,title:"\u8BE5\u56DE\u590D\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664"});if(r.name==="reply")return Ee(aa,{postId:F.id,replyTo:{id:ge.id,mention:Js(ge.author)},width:n,height:o,onCancel:D,onDone:Be=>{i({name:"main"}),a(Be.id),h.last(),t.reload(),f(Be)}});if(r.name==="report")return Ee(ca,{target:{kind:"comment",id:ge.id},width:n,onCancel:D,onDone:()=>{D(),t.toast("ok","\u5DF2\u63D0\u4EA4\u4E3E\u62A5")}});if(r.name==="attachments")return Ee(la,{refs:jt(ge.content),width:n,height:o});let et=r.target.kind==="floor";return Ee(Ae,{width:n,title:et?"\u5220\u9664\u8BC4\u8BBA":"\u5220\u9664\u56DE\u590D",detail:et?"\u5220\u9664\u540E\u8BE5\u697C\u5C42\u53CA\u5176\u5168\u90E8\u56DE\u590D\u5C06\u65E0\u6CD5\u6062\u590D\uFF0C\u786E\u5B9A\u5220\u9664\u5417\uFF1F":"\u5220\u9664\u540E\u65E0\u6CD5\u6062\u590D\uFF0C\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u56DE\u590D\u5417\uFF1F",confirmLabel:"\u5220\u9664",busy:c,error:l,onConfirm:()=>m("\u6B63\u5728\u5220\u9664",()=>ff(ge.id),{onSuccess:()=>{et?t.pop():(i({name:"main"}),t.reload()),t.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:D})}if(A===null)return null;let Me=c===null;return Vl(to,{flexDirection:"column",children:[Ee(vo,{muted:z,width:n}),Ee(Wl,{bold:!0,wrap:"truncate",color:p.foreground,children:F.title}),c!==null?Ee(De,{label:c}):Ee(Wl,{wrap:"truncate",color:p.mutedForeground,children:_e([Y.floor!==null&&`#${Y.floor}`,vt(Y.author),V(Y.createdAt),`\u56DE\u590D ${Y.replyCount}`,be(Y)])}),da(Y,n)>0&&Ee(to,{marginTop:1,children:Ee(hi,{notices:Yo,status:Y.status,reason:Y.reviewReason,width:n})}),Ee(to,{marginTop:1,children:Ee(dt,{lines:w,height:A.bodyRows,isActive:Me,pageKeysOnly:!0})}),Ee(to,{marginTop:1,children:Ee(W,{state:y,loading:"\u6B63\u5728\u8BFB\u53D6\u56DE\u590D",width:n,children:()=>Vl(to,{flexDirection:"column",children:[Ee(ue,{retain:"replies",items:N,width:n,height:A.listRows,isActive:Me,columns:[Qn,{label:"\u56DE\u590D",shrink:!0},{label:"\u70B9\u8D5E",align:"right"},{label:"\u65F6\u95F4"},{label:"\u72B6\u6001",align:"right"}],row:({reply:ge,mention:et,prefix:Be})=>[`${Be}${vt(ge.author)}`,et===null?wo(ge.content):`\u56DE\u590D ${Js(et)}\uFF1A${wo(ge.content)}`,String(ge.likeCount),V(ge.createdAt),ge.status==="published"?"":yt(po(ge.status))],onOpen:({reply:ge})=>i({name:"actions",id:ge.id}),select:s===null?void 0:({reply:ge})=>ge.id===s,emptyLabel:"\u6682\u65E0\u56DE\u590D",emptyDescription:F.status==="published"&&Y.status==="published"?"\u6309 c \u56DE\u590D\u672C\u697C":void 0}),Ee(Ke,{page:h.page,pages:h.pages,total:h.total,width:n})]})})})]})}})})}import{Box as Ro,Text as ga}from"ink";import{Box as th}from"ink";import{jsx as gr,jsxs as nh}from"react/jsx-runtime";function pa({author:e,owner:t,width:n,height:o}){let r=L(),i=Ve([e.kind,e.username,r.revision],a=>nf(e,a),{retain:"posts-page"}),s=qt(i.state);return G((a,c)=>{c.leftArrow?i.go(-1):c.rightArrow&&i.go(1)}),gr(W,{state:s,loading:"\u6B63\u5728\u8BFB\u53D6\u5E16\u5B50",width:n,children:a=>nh(th,{flexDirection:"column",children:[gr(ue,{retain:"posts",items:a.items,width:n,height:Math.max(3,o-1),columns:[{label:"\u6807\u9898",shrink:!0},...t?[{label:"\u8BF4\u660E",shrink:!0}]:[],lr,{label:"\u56DE\u590D",align:"right"},{label:"\u6D4F\u89C8",align:"right"},{label:"\u70B9\u8D5E",align:"right"},t?{label:"\u65F6\u95F4"}:{label:"\u65F6\u95F4",align:"right"},...t?[{label:"\u72B6\u6001",align:"right"}]:[]],row:c=>[c.title,...t?[Nc(Hr,c)??""]:[],c.category.name,String(c.commentCount),String(c.viewCount),String(c.likeCount),V(c.publishedAt??c.createdAt),...t?[yt(po(c.status))]:[]],onOpen:c=>r.push("post",{id:c.id}),emptyLabel:"\u6682\u65E0\u5E16\u5B50"}),gr(Ke,{page:i.page,pages:i.pages,total:i.total,width:n})]})})}function fa({author:e,owner:t,width:n,height:o}){let r=L(),i=Ve([e.kind,e.username,r.revision],a=>of(e,a),{retain:"comments-page"}),s=qt(i.state);return G((a,c)=>{c.leftArrow?i.go(-1):c.rightArrow&&i.go(1)}),gr(W,{state:s,loading:"\u6B63\u5728\u8BFB\u53D6\u8BC4\u8BBA",width:n,children:a=>nh(th,{flexDirection:"column",children:[gr(ue,{retain:"comments",items:a.items,width:n,height:Math.max(3,o-1),columns:[{label:"\u8BC4\u8BBA",shrink:!0},...t?[{label:"\u8BF4\u660E",shrink:!0}]:[],{label:"\u5E16\u5B50",shrink:!0},{label:"\u70B9\u8D5E",align:"right"},{label:"\u65F6\u95F4"},...t?[{label:"\u72B6\u6001",align:"right"}]:[]],row:c=>[wo(c.content),...t?[Nc(Yo,c)??""]:[],c.post.title??Vi,String(c.likeCount),V(c.createdAt),...t?[yt(po(c.status))]:[]],onOpen:c=>r.push("floor",{postId:c.post.id,floorId:c.floorId}),emptyLabel:"\u6682\u65E0\u8BC4\u8BBA"}),gr(Ke,{page:i.page,pages:i.pages,total:i.total,width:n})]})})}import{jsx as St,jsxs as ha}from"react/jsx-runtime";var Uk=[{value:"posts",label:"\u5E16\u5B50"},{value:"comments",label:"\u8BC4\u8BBA"}],jk=3,Hk=2,qk=5;function Gk({profile:e,owner:t,width:n,heatmapOn:o}){let{identity:r,stats:i}=e,s=e.activity.days.reduce((a,c)=>a+c.count,0);return ha(Ro,{flexDirection:"column",children:[ha(ga,{wrap:"truncate",children:[St(ga,{bold:!0,color:p.foreground,children:st(r.username)}),St(ga,{color:p.accent,children:` ${r.kind==="user"?Gi(r.points):`[${zi}]`}`})]}),St(ga,{wrap:"truncate",color:p.mutedForeground,children:_e([r.kind==="user"&&`${r.points} \u79EF\u5206`,t&&r.kind==="user"&&Wi(r.points),`\u52A0\u5165\u4E8E ${jr(e.joinedAt)}`])}),St(Ro,{marginTop:1,children:St(it,{width:n,tiles:[{label:"\u5E16\u5B50",value:String(i.posts)},{label:"\u8BC4\u8BBA",value:String(i.comments)},{label:"\u83B7\u8D5E",value:String(i.likesReceived)}]})}),o&&ha(Ro,{marginTop:Q,flexDirection:"column",children:[St(Rn,{title:"\u793E\u533A\u8DB3\u8FF9",width:n}),St(Ro,{marginTop:We,flexDirection:"column",children:St(cr,{data:e.activity,value:a=>a.count,caption:`\u8FD1\u4E00\u5E74\u5171 ${s} \u6B21`,width:n})})]})]})}function oh({params:e}){let t=L(),{width:n}=H(),o=te(),[r,i]=Ie("content",()=>"posts"),s=ee([e.author.kind,e.author.username,t.revision],async()=>{let[f,d]=await Promise.all([tf(e.author),An()]),h=e.author.kind==="user"&&e.author.username===d.user.username;return{profile:f,owner:h}});G(f=>{f==="r"?t.reload():f==="t"&&i(d=>d==="posts"?"comments":"posts")});let a=Hk+1+Ut(jk,n),c=o-a-2-1,l=Q+Ze+To,u=ar(n)&&c-l>=qk,m=Math.max(3,c-(u?l:0));return St(K,{trail:["\u793E\u533A\u8BBA\u575B","\u7528\u6237\u4E3B\u9875"],hints:["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","t \u5207\u6362","r \u5237\u65B0"],children:St(W,{state:s,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u6237\u4E3B\u9875",width:n,children:({profile:f,owner:d})=>ha(Ro,{flexDirection:"column",children:[St(Gk,{profile:f,owner:d,width:n,heatmapOn:u}),St(Ro,{marginTop:1,children:St(js,{options:Uk,value:r,onChange:i,arrowKeys:!1})}),St(Ro,{marginTop:1,children:r==="posts"?St(pa,{author:e.author,owner:d,width:n,height:m}):St(fa,{author:e.author,owner:d,width:n,height:m})})]})})})}import{Box as rh}from"ink";import{useState as Wk}from"react";import{jsx as Co,jsxs as sh}from"react/jsx-runtime";var zk={sort:"activity",categoryId:"",q:"",author:""},ih=e=>e.categoryId!==""||e.q!==""||e.author!=="",Vk=(e,t)=>({page:t,sort:e.sort,...e.categoryId===""?{}:{categoryId:Number(e.categoryId)},...e.q===""?{}:{q:e.q},...e.author===""?{}:{author:e.author}});function ah(){let e=L(),{width:t}=H(),n=te(),[o,r]=Wk(!1),[i,s]=Ie("filters",()=>zk),{error:a,fail:c,reset:l}=le(),u=ee([e.revision],async()=>{let[d,h]=await Promise.all([ir(),$s()]);return{muted:d.muted,categories:h}}),m=Ve([e.revision,JSON.stringify(i)],d=>Jp(Vk(i,d)),{retain:"page"});G((d,h)=>{o||(d==="r"?e.reload():d==="f"?r(!0):d==="n"?e.push("compose",{draft:null}):h.leftArrow?m.go(-1):h.rightArrow&&m.go(1))});let f=()=>{if(!o){e.pop();return}l(),r(!1)};return Co(K,{hints:o?[]:["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","n \u53D1\u5E03\u5E16\u5B50","f \u7B5B\u9009","r \u5237\u65B0"],onEscape:f,children:Co(W,{state:u,loading:"\u6B63\u5728\u8BFB\u53D6\u793E\u533A",width:t,children:({muted:d,categories:h})=>o?Co(ne,{title:"\u7B5B\u9009\u5E16\u5B50",width:t,submitLabel:"\u67E5\u8BE2",error:a,fields:[{kind:"select",name:"sort",label:"\u6392\u5E8F",options:ic.map(y=>({value:y,label:Td(y)})),initial:i.sort},{kind:"select",name:"category",label:"\u677F\u5757",options:[{value:"",label:"\u5168\u90E8\u677F\u5757"},...h.map(y=>({value:String(y.id),label:y.name}))],initial:i.categoryId},{kind:"text",name:"q",label:"\u5173\u952E\u8BCD",initial:i.q,placeholder:"\u641C\u7D22\u6807\u9898\u6216\u6B63\u6587"},{kind:"text",name:"author",label:"\u4F5C\u8005",initial:i.author,placeholder:"\u8F93\u5165\u4F5C\u8005\u5B8C\u6574\u7528\u6237\u540D"}],onCancel:f,onSubmit:y=>{let g=(y.q??"").trim(),x=(y.author??"").trim();if(g.length>Ui){c(`\u5173\u952E\u8BCD\u6700\u591A ${Ui} \u4E2A\u5B57\u7B26`);return}if(x.length>Kt){c(`\u7528\u6237\u540D\u6700\u591A ${Kt} \u4E2A\u5B57\u7B26`);return}s({sort:y.sort,categoryId:y.category??"",q:g,author:x}),m.reset(),l(),r(!1)}}):sh(rh,{flexDirection:"column",children:[Co(vo,{muted:d,width:t}),Co(W,{state:m.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5E16\u5B50",width:t,children:y=>sh(rh,{flexDirection:"column",children:[Co(ue,{retain:"list",items:y.items,width:t,height:Math.max(3,n-1-fr(d,t)),columns:[{label:"\u4E3B\u9898",shrink:!0},Qn,lr,{label:"\u56DE\u590D",align:"right"},{label:"\u6D4F\u89C8",align:"right"},{label:"\u70B9\u8D5E",align:"right"},{label:"\u6700\u540E\u6D3B\u52A8",align:"right"}],row:g=>[g.title,vt(g.author),g.category.name,String(g.commentCount),String(g.viewCount),String(g.likeCount),V(g.lastActivityAt)],onOpen:g=>e.push("post",{id:g.id}),emptyLabel:ih(i)?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u5E16\u5B50",emptyDescription:ih(i)?void 0:"\u6309 n \u53D1\u5E03\u7B2C\u4E00\u7BC7\u5E16\u5B50"}),Co(Ke,{page:m.page,pages:m.pages,total:m.total,width:t})]})})]})})})}import{Box as ya}from"ink";import{useState as Kk}from"react";import{jsx as pt,jsxs as fh}from"react/jsx-runtime";var Yk=Q+Ze+2,Jk=Q+2+1+2;function lh(){let e=L();G(t=>{t==="r"&&e.reload()})}function mh({params:e}){let{width:t}=H(),n=te();return lh(),pt(K,{trail:["\u4E2A\u4EBA\u4E3B\u9875","\u6211\u7684\u5E16\u5B50"],hints:["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"],children:pt(pa,{author:{kind:"user",username:e.username},owner:!0,width:t,height:n})})}function uh({params:e}){let{width:t}=H(),n=te();return lh(),pt(K,{trail:["\u4E2A\u4EBA\u4E3B\u9875","\u6211\u7684\u8BC4\u8BBA"],hints:["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"],children:pt(fa,{author:{kind:"user",username:e.username},owner:!0,width:t,height:n})})}function dh(){let e=L(),{width:t}=H(),n=te(),o=Ve([e.revision],r=>rf(r),{retain:"page"});return G((r,i)=>{r==="r"?e.reload():i.leftArrow?o.go(-1):i.rightArrow&&o.go(1)}),pt(K,{trail:["\u4E2A\u4EBA\u4E3B\u9875","\u6211\u7684\u6536\u85CF"],hints:["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"],children:pt(W,{state:o.state,loading:"\u6B63\u5728\u8BFB\u53D6\u6536\u85CF",width:t,children:r=>fh(ya,{flexDirection:"column",children:[pt(ue,{retain:"list",items:r.items,width:t,height:Math.max(3,n-1),columns:[{label:"\u6807\u9898",shrink:!0},Qn,{label:"\u56DE\u590D",align:"right"},{label:"\u70B9\u8D5E",align:"right"},{label:"\u6700\u540E\u6D3B\u52A8",align:"right"}],row:i=>[i.title,vt(i.author),String(i.commentCount),String(i.likeCount),V(i.lastActivityAt)],onOpen:i=>e.push("post",{id:i.id}),emptyLabel:"\u6682\u65E0\u6536\u85CF"}),pt(Ke,{page:o.page,pages:o.pages,total:o.total,width:t})]})})})}var ch=e=>e.title===""?"\u672A\u547D\u540D\u8349\u7A3F":e.title;function ph(){let e=L(),{width:t}=H(),n=te(),[o,r]=Kk({name:"list"}),{busy:i,error:s,reset:a,run:c}=le();Ce(i!==null);let l=Ve([e.revision],d=>sf(d),{retain:"page"}),u=o.name==="list";G((d,h)=>{u&&(d==="r"?e.reload():h.leftArrow?l.go(-1):h.rightArrow&&l.go(1))});let m=()=>{if(u){e.pop();return}a(),r({name:"list"})},f=o.name==="actions"?Yk:o.name==="confirm-delete"?Jk+yi(s):0;return pt(K,{trail:["\u4E2A\u4EBA\u4E3B\u9875","\u6211\u7684\u8349\u7A3F"],hints:u?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","\u2190\u2192 \u7FFB\u9875","r \u5237\u65B0"]:[],onEscape:m,isActive:i===null,children:pt(W,{state:l.state,loading:"\u6B63\u5728\u8BFB\u53D6\u8349\u7A3F",width:t,children:d=>fh(ya,{flexDirection:"column",children:[pt(ue,{retain:"list",items:d.items,width:t,height:Math.max(3,n-1-f),isActive:u,columns:[{label:"\u6807\u9898",shrink:!0},lr,{label:"\u521B\u5EFA\u65F6\u95F4",align:"right"}],row:h=>[ch(h),h.category===null?"\u2014":h.category.name,V(h.createdAt)],onOpen:h=>r({name:"actions",draft:h}),emptyLabel:"\u6682\u65E0\u8349\u7A3F",emptyDescription:"\u53D1\u5E03\u5E16\u5B50\u65F6\u53EF\u9009\u62E9\u5B58\u4E3A\u8349\u7A3F"}),pt(Ke,{page:l.page,pages:l.pages,total:l.total,width:t}),o.name==="actions"&&pt(ya,{marginTop:Q,children:pt(de,{title:ch(o.draft),width:t,children:pt(ce,{width:t-pe,items:[{value:"edit",label:"\u7EE7\u7EED\u7F16\u8F91"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:h=>{if(h==="edit"){r({name:"list"}),e.push("compose",{draft:o.draft});return}a(),r({name:"confirm-delete",draft:o.draft})}})})}),o.name==="confirm-delete"&&pt(ya,{marginTop:Q,children:pt(Ae,{width:t,title:"\u5220\u9664\u8349\u7A3F",detail:"\u5220\u9664\u540E\u65E0\u6CD5\u6062\u590D\uFF0C\u786E\u5B9A\u5220\u9664\u8FD9\u7BC7\u8349\u7A3F\u5417\uFF1F",confirmLabel:"\u5220\u9664",busy:i,error:s,onConfirm:()=>c("\u6B63\u5728\u5220\u9664",()=>Fs(o.draft.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:m})})]})})})}import{Box as _o,Text as Kl}from"ink";import{useEffect as ba,useMemo as Xk,useRef as Qk,useState as Yl}from"react";import{jsx as Je,jsxs as Jl}from"react/jsx-runtime";var gh=2,Zk=2,ev=2;function tv({post:e,width:t,height:n,isActive:o,follow:r,onFollowed:i}){let s=L(),a=Ve([e.id,s.revision],u=>Qp(e.id,u),{retain:"floors-page"}),c=qt(a.state),l=r!==null&&c.phase==="ready"&&c.data.items.some(u=>u.id===r);return ba(()=>{r!==null&&a.last()},[r]),ba(()=>{l&&i()},[l]),G((u,m)=>{m.leftArrow?a.go(-1):m.rightArrow&&a.go(1)},o),Je(W,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u697C\u5C42",width:t,children:u=>Jl(_o,{flexDirection:"column",children:[Je(ue,{retain:"floors",items:u.items,width:t,height:Math.max(3,n-1),isActive:o,columns:[{label:"\u697C\u5C42"},Qn,{label:"\u5185\u5BB9",shrink:!0},{label:"\u56DE\u590D",align:"right"},{label:"\u70B9\u8D5E",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:m=>[m.floor===null?"\u2014":`#${m.floor}`,vt(m.author),wo(m.content),String(m.replyCount),String(m.likeCount),m.status==="published"?"":yt(po(m.status))],onOpen:m=>s.push("floor",{postId:e.id,floorId:m.id}),emptyLabel:"\u6682\u65E0\u8BC4\u8BBA",emptyDescription:e.status==="published"?"\u6309 c \u53D1\u8868\u7B2C\u4E00\u6761\u8BC4\u8BBA":void 0,select:r===null?void 0:m=>m.id===r}),Je(Ke,{page:a.page,pages:a.pages,total:a.total,width:t})]})})}function hh({params:e}){let t=L(),{width:n}=H(),o=te(),[r,i]=Ie("mode",()=>"body"),[s,a]=Yl({name:"main"}),[c,l]=Yl(null),{busy:u,error:m,reset:f,run:d}=le();Ce(s.name==="confirm-delete"&&u!==null);let h=pr(),y=Qk(null),g=qt(ee([e.id,t.revision],async()=>{let[C,w,E]=await Promise.all([Bs(e.id),An(),ir()]);return{post:C,me:w.user,muted:E.muted}})),x=g.phase==="ready"?g.data:null,[T,R]=Yl(null);ba(()=>R(null),[x]);let b=x===null?null:{...x,post:{...x.post,...T}},S=b!==null&&b.post.status==="published";ba(()=>{!S||y.current===e.id||(y.current=e.id,Xp(e.id).catch(()=>t.toast("warn","\u6D4F\u89C8\u8BA1\u6570\u53D1\u9001\u5931\u8D25")))},[e.id,S]);let v=s.name==="main"&&u===null,M=b===null?null:b.post.content,N=Xk(()=>M===null?[]:di(M,n),[M,n]);G(C=>{if(b===null||!v)return;let{post:w,me:E}=b;if(C==="r"){t.reload();return}if(C==="v"){i(r==="body"?"floors":"body");return}if(C==="c"&&S){a({name:"comment"});return}if(r!=="body")return;let _=Nn(w.author,E.username),A={liked:w.liked,likeCount:w.likeCount,bookmarked:w.bookmarked};C==="l"&&S&&!_?d(w.liked?"\u6B63\u5728\u53D6\u6D88\u70B9\u8D5E":"\u6B63\u5728\u70B9\u8D5E",()=>gf(w.id,!w.liked),{failToast:!0,onSuccess:({likeCount:$})=>R({...A,liked:!w.liked,likeCount:$})}):C==="b"&&S?d(w.bookmarked?"\u6B63\u5728\u53D6\u6D88\u6536\u85CF":"\u6B63\u5728\u6536\u85CF",()=>yf(w.id,!w.bookmarked),{failToast:!0,onSuccess:()=>{R({...A,bookmarked:!w.bookmarked}),t.toast("ok",w.bookmarked?"\u5DF2\u53D6\u6D88\u6536\u85CF":"\u5DF2\u6536\u85CF")}}):C==="p"&&S&&!_?a({name:"report"}):C==="a"&&jt(w.content).length>0?a({name:"attachments"}):C==="u"?t.push("homepage",{author:ui(w.author)}):C==="e"&&_&&w.status!=="removed"?t.push("post-edit",{post:w}):C==="d"&&_&&(f(),a({name:"confirm-delete"}))});let O=()=>{if(s.name!=="main"){f(),a({name:"main"});return}if(r==="floors"){i("body");return}t.pop()},U=()=>{if(b===null||s.name!=="main")return[];let{post:C,me:w}=b;if(r==="floors")return["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875",...S?["c \u8BC4\u8BBA"]:[],"v \u6B63\u6587","r \u5237\u65B0"];let E=Nn(C.author,w.username);return["\u2191\u2193 \u6EDA\u52A8","v \u697C\u5C42\u5217\u8868",...S?["c \u8BC4\u8BBA",...E?[]:[C.liked?"l \u53D6\u6D88\u70B9\u8D5E":"l \u70B9\u8D5E"],C.bookmarked?"b \u53D6\u6D88\u6536\u85CF":"b \u6536\u85CF",...E?[]:["p \u4E3E\u62A5"]]:[],...jt(C.content).length>0?["a \u9644\u4EF6"]:[],"u \u7528\u6237\u4E3B\u9875",...E&&C.status!=="removed"?["e \u7F16\u8F91\u5E16\u5B50"]:[],...E?["d \u5220\u9664"]:[],"r \u5237\u65B0"]};return Je(K,{trail:["\u793E\u533A\u8BBA\u575B",b===null?"\u5E16\u5B50\u8BE6\u60C5":b.post.category.name,...r==="floors"&&s.name==="main"?["\u697C\u5C42\u5217\u8868"]:[]],hints:U(),onEscape:O,isActive:s.name==="main"||u===null,children:Je(W,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u5E16\u5B50",width:n,children:({post:C,me:w,muted:E})=>{let _={...C,...T},A=Nn(_.author,w.username);if(s.name==="comment")return Je(aa,{postId:_.id,replyTo:null,width:n,height:o,onCancel:O,onDone:D=>{a({name:"main"}),i("floors"),l(D.id),t.reload(),h(D)}});if(s.name==="report")return Je(ca,{target:{kind:"post",id:_.id},width:n,onCancel:O,onDone:()=>{a({name:"main"}),t.toast("ok","\u5DF2\u63D0\u4EA4\u4E3E\u62A5")}});if(s.name==="attachments")return Je(la,{refs:jt(_.content),width:n,height:o});if(s.name==="confirm-delete")return Je(Ae,{width:n,title:"\u5220\u9664\u5E16\u5B50",detail:"\u5220\u9664\u540E\u5E16\u5B50\u53CA\u5176\u5168\u90E8\u8BC4\u8BBA\u5C06\u65E0\u6CD5\u6062\u590D\uFF0C\u786E\u5B9A\u5220\u9664\u5417\uFF1F",confirmLabel:"\u5220\u9664",busy:u,error:m,onConfirm:()=>d("\u6B63\u5728\u5220\u9664",()=>Fs(_.id),{onSuccess:()=>{t.pop(),t.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:O});let $=Je(Kl,{bold:!0,wrap:"truncate",color:p.foreground,children:_.title}),Z=fr(E,n);if(r==="floors")return Jl(_o,{flexDirection:"column",children:[Je(vo,{muted:E,width:n}),$,Je(_o,{marginTop:1,children:Je(tv,{post:_,width:n,height:o-gh-Z,isActive:v,follow:c,onFollowed:()=>l(null)})})]});let oe=sa(Hr,_.status,_.reviewReason,n),fe=Math.max(ev,o-Z-gh-(oe===0?0:oe+1)-1-Zk);return Jl(_o,{flexDirection:"column",children:[Je(vo,{muted:E,width:n}),$,Je(Kl,{wrap:"truncate",color:p.mutedForeground,children:_e([vt(_.author),V(_.publishedAt??_.createdAt),_.editedAt!==null&&`\u7F16\u8F91\u4E8E ${V(_.editedAt)}`,`\u6D4F\u89C8 ${_.viewCount}`])}),oe>0&&Je(_o,{marginTop:1,children:Je(hi,{notices:Hr,status:_.status,reason:_.reviewReason,width:n})}),Je(_o,{marginTop:1,children:Je(dt,{lines:N,height:fe,isActive:v})}),Je(_o,{marginTop:1,children:u!==null?Je(De,{label:u}):Je(Kl,{wrap:"truncate",color:p.mutedForeground,children:_e([`\u8BC4\u8BBA ${_.commentCount}`,`${A?"\u83B7\u8D5E":_.liked?"\u5DF2\u8D5E":"\u70B9\u8D5E"} ${_.likeCount}`,_.bookmarked&&"\u5DF2\u6536\u85CF"])})})]})}})})}import{Box as Ao}from"ink";import{useEffect as uv,useRef as dv,useState as Zl}from"react";import{z as q}from"zod";var nv=q.object({balance:q.number(),today:q.object({requests:q.number(),tokens:q.number(),cost:q.number()})}),yh=()=>P(nv,"/dashboard/summary"),bh=["all","30d","7d"],ov=q.object({totals:q.object({requests:q.number(),tokens:q.number(),cost:q.number()}),hourly:q.array(q.number()),models:q.array(q.object({model:q.string(),displayName:q.string(),tokens:q.number(),inTokens:q.number(),outTokens:q.number()})),chart:q.object({start:q.string(),end:q.string(),points:q.array(q.object({day:q.string(),model:q.string(),tokens:q.number()}))}),heatmap:q.object({start:q.string(),end:q.string(),days:q.array(q.object({day:q.string(),cost:q.number()}))}),activeDays:q.number(),currentStreak:q.number(),longestStreak:q.number()}),Xl=e=>P(ov,je("/dashboard/stats",{range:e})),rv=q.object({id:q.number().int(),requestId:q.string(),tokenName:q.string(),protocol:Bm,model:q.string(),modelDisplayName:q.string(),groupName:q.string(),promptTokens:q.number(),completionTokens:q.number(),cachedTokens:q.number(),cacheWriteTokens:q.number(),cacheWrite1hTokens:q.number(),webSearchRequests:q.number(),imageGenerationCalls:q.number(),totalTokens:q.number(),quotaCost:q.number(),subscriptionPlanName:q.string().nullable(),multiplier:q.number(),tierOver:q.number().int().nullable(),paramMultipliers:Mu,status:zm,httpStatus:q.number().int(),stopReason:q.string().nullable(),latencyMs:q.number(),firstByteMs:q.number().nullable(),stream:q.boolean(),ip:q.string(),createdAt:q.string()}),Sh=e=>P(lt(rv),je("/logs",{...e})),iv=q.object({quotaCost:q.number(),rpm:q.number(),tpm:q.number(),concurrency:q.number()}),xh=e=>P(iv,je("/logs/stats",{...e})),sv=q.object({id:q.number().int(),type:qm,amount:q.number(),balanceAfter:q.number(),refType:Gm,refId:q.string().nullable(),createdAt:q.string()}),Th=e=>P(lt(sv),je("/quota-ledger",{...e}));import{Box as av,Text as ln}from"ink";import Si from"string-width";import{Fragment as kh,jsx as mn,jsxs as Ql}from"react/jsx-runtime";var Po=1,cv=4,lv=1,hr=8,mv=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],wh=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function vh({data:e,order:t,width:n,rows:o}){let r=o-lv,i=[];for(let U=e.start;U<=e.end;U=Gn(U,1))i.push(U);let s=Math.min(cv,Math.floor((n+Po)/i.length)-Po);s<1&&(s=1,i=i.slice(-Math.floor((n+Po)/(1+Po))));let a=i[0],c=i[i.length-1];if(a===void 0||c===void 0)return null;let l=new Map(t.slice(0,bs.length).map((U,C)=>[U,C])),u=bs.length,m=U=>bs[U]??p.faintForeground,f=new Map(i.map((U,C)=>[U,C])),d=i.map(()=>Array.from({length:u+1},()=>0));for(let U of e.points){let C=f.get(U.day);if(C===void 0)continue;let w=d[C];if(w===void 0)continue;let E=l.get(U.model)??u;w[E]=(w[E]??0)+U.tokens}let h=d.map(U=>U.reduce((C,w)=>C+w,0)),y=Math.max(0,...h),g=r*hr,x=d.map((U,C)=>{let w=Array.from({length:r},()=>null),E=h[C]??0;if(E<=0)return w;let _=Math.max(1,Math.round(E/y*g)),A=[],$=0,Z=0;U.forEach((oe,fe)=>{$+=oe;let D=Math.round($/E*_);for(let k=Z;k<D;k+=1)A[k]=m(fe);Z=D});for(let oe=0;oe<r;oe+=1){let fe=Math.min(hr,_-oe*hr);if(fe<=0)break;let D=new Map;for(let F=oe*hr;F<oe*hr+fe;F+=1){let re=A[F];re!==void 0&&D.set(re,(D.get(re)??0)+1)}let k=null,X=0;for(let[F,re]of D)re>X&&(k=F,X=re);if(k===null)break;w[oe]={color:k,glyph:fe===hr?null:mv[fe-1]??null}}return w}),T=U=>{let C=[],w=(E,_,A)=>{let $=C[C.length-1];$!==void 0&&$.color===E&&$.glyph===_?$.width+=A:C.push({color:E,glyph:_,width:A})};return x.forEach((E,_)=>{_>0&&w(null,null,Po);let A=E[U]??null;A===null?w(null,null,s):w(A.color,A.glyph,s)}),C},R=i.length*(s+Po)-Po,b=wh(a),S=wh(c),v=y>0?`\u5355\u65E5\u5CF0\u503C ${qn(y)}`:"",M=R-Si(b)-Si(S),N=v!==""&&M>=Si(v)+4,O=N?Math.floor((M-Si(v))/2):M;return Ql(av,{flexDirection:"column",children:[Array.from({length:r},(U,C)=>{let w=r-1-C;return mn(ln,{wrap:"truncate",children:T(w).map((E,_)=>E.color===null?mn(ln,{children:" ".repeat(E.width)},_):E.glyph===null?mn(ln,{backgroundColor:E.color,children:" ".repeat(E.width)},_):mn(ln,{color:E.color,children:E.glyph.repeat(E.width)},_))},w)}),mn(ln,{wrap:"truncate",children:M<2?mn(ln,{color:p.faintForeground,children:Ge(b,R)}):Ql(kh,{children:[mn(ln,{color:p.faintForeground,children:b}),mn(ln,{children:" ".repeat(O)}),N&&Ql(kh,{children:[mn(ln,{color:p.mutedForeground,children:v}),mn(ln,{children:" ".repeat(M-Si(v)-O)})]}),mn(ln,{color:p.faintForeground,children:S})]})})]})}import{jsx as at,jsxs as Ch}from"react/jsx-runtime";var pv={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},fv=1,Sa=4,Rh=5,gv=9;function hv(e){let t=-1,n=0;return e.forEach((o,r)=>{o>n&&(n=o,t=r)}),t<0?"\u2014":`${t} \u70B9`}function _h(){let e=L(),{width:t}=H(),n=te(),[o,r]=Zl("30d"),[i,s]=Zl("heatmap"),[a,c]=Zl(null),l=dv(null),u=ee([o,e.revision],async()=>{let m=l.current;if(m!==null&&m.revision===e.revision){let y=await Xl(o);return{summary:m.summary,stats:y,site:m.site}}let[f,d,h]=await Promise.all([yh(),Xl(o),ze(e.ctx.site)]);return l.current={revision:e.revision,summary:f,site:h},{summary:f,stats:d,site:h}});return uv(()=>{u.phase==="ready"&&c(fd({tokens:u.data.stats.totals.tokens,scope:"user",range:o}))},[u,o]),G(m=>{m==="r"&&e.reload(),m==="t"&&s(f=>f==="heatmap"?"chart":"heatmap")}),at(K,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:at(Ao,{flexDirection:"column",children:at(W,{state:u,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:m,stats:f,site:d})=>{let h=[{label:"\u8D26\u6237\u4F59\u989D",value:Te(m.balance,d.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Oe(m.today.requests)},{label:"\u4ECA\u65E5 Token",value:Oe(m.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:Te(m.today.cost,d.quotaPerUsd)}],y=[{label:"\u8BF7\u6C42\u6570",value:Oe(f.totals.requests)},{label:"Token \u603B\u91CF",value:qn(f.totals.tokens)},{label:"\u6D88\u8017",value:Te(f.totals.cost,d.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Oe(f.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${f.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${f.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:hv(f.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:f.models[0]?.displayName??"\u2014"}],g=t-pe,x=C=>Bt+C+Ut(h.length,g)+Q+Bt+C+fv+C+Ut(y.length,g)+Q+Bt+C,T=n-x(We)>=Sa?We:0,R=n-x(T),b=Q+Bt+T+Rh,S=i==="chart"&&f.chart.points.length>0&&R>=b+Sa,v=i==="heatmap"&&ar(g)&&R-(Q+To)>=Sa,M=v?Q+To:0,N=S?Math.min(gv,Rh+Math.floor((R-b-Sa)/2)):0,O=R-M-(S?Q+Bt+T+N:0),U=C=>`${(f.totals.tokens>0?C/f.totals.tokens*100:0).toFixed(1)}%`;return Ch(Ao,{flexDirection:"column",children:[at(de,{title:"\u6982\u89C8",width:t,gap:T,children:at(it,{width:g,tiles:h})}),at(Ao,{marginTop:1,flexDirection:"column",children:Ch(de,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:T,children:[at(js,{options:bh.map(C=>({value:C,label:pv[C]})),value:o,onChange:r}),at(Ao,{marginTop:T,children:at(it,{width:g,tiles:y})}),v&&at(Ao,{marginTop:1,flexDirection:"column",children:at(cr,{data:f.heatmap,value:C=>C.cost,caption:a,width:g})})]})}),S&&at(Ao,{marginTop:1,flexDirection:"column",children:at(de,{title:"\u7528\u91CF\u8D8B\u52BF",note:"\u67F1\u8272\u7531\u4EAE\u81F3\u6697\u5BF9\u5E94\u7528\u91CF\u524D\u4E94\u7684\u6A21\u578B\uFF0C\u7070\u8272\u4E3A\u5176\u4ED6",width:t,gap:T,children:at(vh,{data:f.chart,order:f.models.map(C=>C.model),width:g,rows:N})})}),at(Ao,{marginTop:1,flexDirection:"column",children:at(de,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:T,children:f.models.length===0?at(he,{tone:"info",width:g,title:"\u6682\u65E0\u7528\u91CF\u6570\u636E",detail:"\u8C03\u7528 API \u540E\u8FD9\u91CC\u4F1A\u663E\u793A\u5404\u6A21\u578B\u7684\u6BCF\u65E5 Token \u7528\u91CF"}):at(ue,{retain:"list",items:f.models,width:g,height:O,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u603B Token",align:"right"},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u5360\u6BD4",align:"right"}],row:C=>[C.displayName,qn(C.tokens),qn(C.inTokens),qn(C.outTokens),U(C.tokens)],searchOf:C=>C.displayName})})})]})}})})})}import{Box as yr,Text as tm}from"ink";import{useState as Eh}from"react";import{z as bv}from"zod";import{z as ft}from"zod";var yv=ft.object({id:ft.number().int(),name:ft.string(),description:ft.string(),multiplier:ft.number()}),xa=()=>P(ft.array(yv),"/groups"),em=ft.object({id:ft.number().int(),name:ft.string(),keyPrefix:ft.string(),keySuffix:ft.string(),groupId:ft.number().int().nullable(),groupName:ft.string().nullable(),usedQuota:ft.number(),quotaLimit:ft.number().nullable()}),Ta=()=>P(ft.array(em),"/tokens"),Ph=e=>P(em.extend({token:ft.string()}),"/tokens",{method:"POST",json:e}),wa=(e,t)=>P(em,`/tokens/${e}`,{method:"PATCH",json:t}),Ah=e=>P(se,`/tokens/${e}`,{method:"DELETE"});import{jsx as ct,jsxs as ka}from"react/jsx-runtime";var Mh={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},Ih=bv.iso.date();function Sv(e){let t=Mc();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:Gn(t,-6),until:t}:e.range==="30d"?{since:Gn(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function Nh(e){let t=Sv(e);return{...e.model.trim()===""?{}:{model:e.model.trim()},...e.requestId.trim()===""?{}:{requestId:e.requestId.trim()},...e.token===""?{}:{token:e.token},...e.group===""?{}:{group:e.group},...e.status===""?{}:{status:e.status},...t.since===void 0?{}:{since:Ic(t.since).toISOString()},...t.until===void 0?{}:{until:Ic(Gn(t.until,1)).toISOString()}}}var xv=_t(tc,Yi,"\u5168\u90E8\u72B6\u6001"),Tv=[{value:"",label:"\u4E0D\u9650"},{value:"today",label:"\u4ECA\u5929"},{value:"7d",label:"\u8FD1 7 \u5929"},{value:"30d",label:"\u8FD1 30 \u5929"},{value:"custom",label:"\u81EA\u5B9A\u4E49\u8D77\u6B62"}];function wv({log:e,quotaPerUsd:t,width:n}){let o=n-pe,r=Yi(e.status),i=ht(r),s=e.status!=="anomaly"?null:e.totalTokens>0?"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\uFF0C\u8D39\u7528\u6309\u8BF7\u6C42\u4E0E\u54CD\u5E94\u7684\u6587\u672C\u91CF\u4F30\u7B97":"\u672C\u6B21\u8C03\u7528\u672A\u8FD4\u56DE\u7528\u91CF\u6570\u636E\u4E14\u65E0\u6CD5\u4F30\u7B97\uFF0C\u672A\u8BA1\u8D39",a=[];e.cachedTokens>0&&a.push(["\u7F13\u5B58\u8BFB",Oe(e.cachedTokens)]),e.cacheWriteTokens>0&&a.push(["\u7F13\u5B58\u5199",Oe(e.cacheWriteTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Oe(e.cacheWrite1hTokens)]),e.webSearchRequests>0&&a.push(["\u7F51\u9875\u641C\u7D22",`${Oe(e.webSearchRequests)} \u6B21`]),e.imageGenerationCalls>0&&a.push(["\u56FE\u50CF\u751F\u6210",`${Oe(e.imageGenerationCalls)} \u6B21`]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${ao(e.firstByteMs)} s`]),e.tierOver!==null&&a.push(["\u8F93\u5165\u957F\u5EA6",Sc(e.tierOver)]),e.paramMultipliers.length>0&&a.push(["\u547D\u4E2D\u53C2\u6570",_e(e.paramMultipliers.map(l=>`${l.value} \xD7${l.multiplier}`))]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u8BF7\u6C42 IP",e.ip],["\u534F\u8BAE",bd(e.protocol)],["\u8BA1\u8D39\u6765\u6E90",e.subscriptionPlanName!==null?`\u8BA2\u9605 \xB7 ${e.subscriptionPlanName}`:"\u4F59\u989D"],["HTTP \u72B6\u6001",String(e.httpStatus)],...e.stopReason===null?[]:[["\u7ED3\u675F\u539F\u56E0",e.stopReason]]];return ka(de,{title:e.modelDisplayName,note:V(e.createdAt),width:n,children:[ka(tm,{wrap:"truncate",children:[ct(tm,{color:i===void 0?p.mutedForeground:tt[i],children:r.label}),ct(tm,{color:p.faintForeground,children:` ${_e([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),ct(yr,{marginTop:1,children:ct(it,{width:o,tiles:[{label:"\u8F93\u5165 Token",value:Oe(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Oe(e.completionTokens)},{label:"\u6D88\u8017",value:Jo(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${ao(e.latencyMs)} s`},{label:"\u6863\u4F4D",value:Or(e.tierOver)},{label:"\u5206\u7EC4\u500D\u7387",value:`\xD7${e.multiplier}`},{label:"\u53C2\u6570\u500D\u7387",value:`\xD7${Iu(e.paramMultipliers)}`},{label:"\u603B\u500D\u7387",value:`\xD7${Nu(e.multiplier,e.paramMultipliers)}`}]})}),s!==null&&ct(yr,{marginTop:1,children:ct(he,{tone:"warn",width:o,title:s})}),ct(yr,{marginTop:1,children:ct(Ye,{width:o,items:[...a,...c]})})]})}function Lh(){let e=L(),{width:t}=H(),n=te(),[o,r]=Eh({name:"list"}),[i,s]=Eh(Mh),{error:a,fail:c,reset:l}=le(),u=ee([e.revision],async()=>{let[g,x,T]=await Promise.all([xa(),Ta(),ze(e.ctx.site)]);return{groups:g,tokens:x,site:T}}),m=Ve([e.revision,JSON.stringify(i)],g=>Sh({page:g,...Nh(i)}),{retain:"page"}),f=ee([e.revision,JSON.stringify(i)],()=>xh(Nh(i))),d=o.name==="list";G((g,x)=>{d&&(g==="r"?e.reload():g==="f"?(l(),r({name:"filter"})):x.leftArrow?m.go(-1):x.rightArrow&&m.go(1))});let h=()=>{o.name==="list"?e.pop():(l(),r({name:"list"}))},y=JSON.stringify(i)!==JSON.stringify(Mh);return ct(K,{hints:d?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:h,children:ct(W,{state:u,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:g,tokens:x,site:T})=>{if(o.name==="filter")return ct(ne,{title:"\u7B5B\u9009\u65E5\u5FD7",width:t,submitLabel:"\u67E5\u8BE2",error:a,fields:[{kind:"text",name:"model",label:"\u6A21\u578B",initial:i.model,placeholder:"\u641C\u7D22\u6A21\u578B ID \u6216\u540D\u79F0"},{kind:"text",name:"requestId",label:"\u8BF7\u6C42 ID",initial:i.requestId,placeholder:"\u641C\u7D22\u8BF7\u6C42 ID"},{kind:"select",name:"token",label:"\u4EE4\u724C",options:[{value:"",label:"\u5168\u90E8\u4EE4\u724C"},...[...new Set(x.map(b=>b.name))].map(b=>({value:b,label:b}))],initial:i.token},{kind:"select",name:"group",label:"\u5206\u7EC4",options:[{value:"",label:"\u5168\u90E8\u5206\u7EC4"},...g.map(b=>({value:b.name,label:b.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:xv,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:Tv,initial:i.range},{kind:"text",name:"since",label:"\u5F00\u59CB\u65E5\u671F",initial:i.since,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"},{kind:"text",name:"until",label:"\u7ED3\u675F\u65E5\u671F",initial:i.until,placeholder:"YYYY-MM-DD",hint:"\u4EC5\u65F6\u95F4\u8303\u56F4\u9009\u300C\u81EA\u5B9A\u4E49\u8D77\u6B62\u300D\u65F6\u751F\u6548"}],onCancel:h,onSubmit:b=>{let S=b.range??"",v=(b.since??"").trim(),M=(b.until??"").trim();if(S==="custom"&&(v!==""&&!Ih.safeParse(v).success||M!==""&&!Ih.safeParse(M).success)){c("\u65E5\u671F\u65E0\u6548");return}s({model:b.model??"",requestId:b.requestId??"",token:b.token??"",group:b.group??"",status:b.status??"",range:S,since:v,until:M}),m.reset(),r({name:"list"})}});if(o.name==="detail")return ct(wv,{log:o.log,quotaPerUsd:T.quotaPerUsd,width:t});let R=Ut(4,t);return ka(yr,{flexDirection:"column",children:[ct(yr,{height:R+1,flexDirection:"column",overflow:"hidden",children:ct(W,{state:f,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:b=>ct(it,{width:t,tiles:[{label:"\u6D88\u8017",value:Te(b.quotaCost,T.quotaPerUsd)},{label:"RPM",value:Oe(b.rpm)},{label:"TPM",value:Oe(b.tpm)},{label:"\u5E76\u53D1",value:Oe(b.concurrency)}]})})}),ct(W,{state:m.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:b=>ka(yr,{flexDirection:"column",children:[ct(ue,{retain:"list",items:b.items,width:t,height:Math.max(3,n-2-R),columns:[{label:"\u65F6\u95F4"},{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u6D88\u8017",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:S=>[V(S.createdAt),S.modelDisplayName,Oe(S.promptTokens),Oe(S.completionTokens),Jo(S.quotaCost,T.quotaPerUsd),yt(Yi(S.status))],onOpen:S=>r({name:"detail",log:S}),emptyLabel:y?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:y?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),ct(Ke,{page:m.page,pages:m.pages,total:m.total,width:t})]})})]})}})})}import{Box as Dn,Text as Eo}from"ink";import{useState as Pv}from"react";import{z as we}from"zod";var kv=bc.extend({id:we.number().int(),model:we.string(),displayName:we.string(),rules:_u}),vv=we.object({quotaPerUsd:we.number(),minTopupCny:we.number(),models:we.array(kv)});function va(e){return fn(vv,`${e}/api/pricing`)}var Rv=we.object({cnyPerUsd:we.number(),groups:we.array(we.object({id:we.number().int(),name:we.string(),description:we.string(),multiplier:we.number()})),stats:we.object({requests:we.number(),errors:we.number(),latencyP50Ms:we.number().nullable(),firstByteP50Ms:we.number().nullable()}),heartbeat:we.object({groups:we.array(we.object({id:we.number().int(),name:we.string(),minutes:we.array(we.object({requests:we.number(),errors:we.number()}))}))})});function Oh(e){return P(Rv,`/pricing/${e}`)}var Cv=we.object({data:we.array(we.object({id:we.string()}))});async function Dh(e,t,n){return(await fn(Cv,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...n===void 0?{}:{timeoutMs:n}})).data.map(r=>r.id)}var $h=()=>P(Ou,"/provider-status");import{Text as br}from"ink";import{jsx as Ra,jsxs as Bh}from"react/jsx-runtime";var _v=` ${ie.bullet} `,Fh=1;function Uh({providers:e}){return Bh(br,{wrap:"truncate",children:[Ra(br,{color:p.faintForeground,children:"\u5B98\u65B9\u72B6\u6001"}),e.map(t=>{let n=$u(t);return Bh(br,{children:[Ra(br,{color:p.faintForeground,children:_v}),Ra(br,{color:p.foreground,children:`${Sd(t.provider)} `}),Ra(br,{color:tt[n.tone],children:n.label})]},t.provider)})]})}import{jsx as Pe,jsxs as xi}from"react/jsx-runtime";var Av=4,Ev=1+We,Mv=e=>e.requests===0?p.border:e.errors===0?p.success:e.errors/e.requests>=.5?p.danger:p.warning;function Iv({minutes:e,width:t}){let n=e.slice(Math.max(0,e.length-t)),o=[];for(let r of n){let i=Mv(r),s=o[o.length-1];s!==void 0&&s.color===i?s.count+=1:o.push({color:i,count:1})}return Pe(Eo,{wrap:"truncate",children:o.map((r,i)=>Pe(Eo,{color:r.color,children:ie.barFilled.repeat(r.count)},i))})}function Nv({price:e,width:t,contentRows:n}){let o=L(),r=ee([e.id,o.revision],()=>Oh(e.id)),i=Eu(e,e.rules),s=i.length>1,a=e.rules.filter(Pu),c=t-pe,l=1+i.length,u=1+a.length;return Pe(W,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:m=>{let f=m.stats,d=[{label:"\u53EF\u7528\u7387",value:f.requests>0?`${((f.requests-f.errors)/f.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:Oe(f.requests)},{label:"\u5EF6\u8FDF P50",value:f.latencyP50Ms!==null?`${ao(f.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:f.firstByteP50Ms!==null?`${ao(f.firstByteP50Ms)} s`:"\u2014"}],h=a.length>0?Q+Ze+u:0,y=Ev+Ze+Ut(d.length,c,2)+Q+Ze+l+h+Q+Ze,g=m.heartbeat.groups.length,x=n-y-Av-Q-Ze,T=Math.max(0,Math.floor(x/2));T<g&&(T=Math.max(0,Math.floor((x-1)/2))),T=Math.min(g,T);let R=T>0?Q+Ze+T*2+(T<g?1:0):0,b=Math.max(1,n-y-R);return xi(Dn,{flexDirection:"column",children:[Pe(Dn,{marginBottom:We,children:xi(Eo,{wrap:"truncate",children:[Pe(Eo,{bold:!0,color:p.foreground,children:e.displayName}),Pe(Eo,{color:p.faintForeground,children:` ${e.model}`})]})}),Pe(de,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Pe(it,{width:c,tiles:d,maxPerRow:2})}),T>0&&Pe(Dn,{marginTop:1,flexDirection:"column",children:xi(de,{title:"\u53EF\u7528\u6027",note:"\u6700\u8FD1\u4E00\u6BB5\u65F6\u95F4\u5404\u5206\u7EC4\u7684\u8C03\u7528\u5065\u5EB7\u72B6\u51B5",width:t,children:[m.heartbeat.groups.slice(0,T).map(S=>xi(Dn,{flexDirection:"column",children:[Pe(Eo,{wrap:"truncate",color:p.foreground,children:S.name}),Pe(Iv,{minutes:S.minutes,width:c})]},S.id)),T<g&&Pe(Eo,{color:p.faintForeground,children:`\u5176\u4F59 ${g-T} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Pe(Dn,{marginTop:1,flexDirection:"column",children:Pe(de,{title:"\u6A21\u578B\u4EF7\u683C",note:"\u6BCF\u767E\u4E07 Token \u7684\u7F8E\u5143\u6807\u4EF7",width:t,children:Pe(ue,{items:i,width:c,height:l,columns:[{label:"\u6863\u4F4D"},...s?[{label:"\u8F93\u5165\u957F\u5EA6"}]:[],{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:S=>[S.name,...S.range===null?[]:[S.range],pn(S.price.inputPricePerMillionTokens,"-"),pn(S.price.outputPricePerMillionTokens,"-"),pn(S.price.cachedInputPricePerMillionTokens,"-"),pn(S.price.cacheWritePricePerMillionTokens,"-")]})})}),a.length>0&&Pe(Dn,{marginTop:1,flexDirection:"column",children:Pe(de,{title:"\u8BF7\u6C42\u53C2\u6570\u500D\u7387",note:"\u547D\u4E2D\u65F6 Token \u8D39\u7528\u4E58\u4EE5\u500D\u7387\uFF0C\u591A\u6761\u547D\u4E2D\u4F9D\u6B21\u76F8\u4E58",width:t,children:Pe(ue,{items:a,width:c,height:u,columns:[{label:"\u53C2\u6570\u540D",shrink:!0},{label:"\u53C2\u6570\u503C",shrink:!0},{label:"\u500D\u7387",align:"right"}],row:S=>[S.param,S.value,`\xD7${S.multiplier}`]})})}),Pe(Dn,{marginTop:1,flexDirection:"column",children:Pe(de,{title:"\u5206\u7EC4\u4EF7\u683C",note:"\u500D\u7387\u968F\u4EE4\u724C\u6240\u5C5E\u5206\u7EC4\u800C\u5B9A\uFF0C\u5355\u4EF7\u4E3A 1 \u7F8E\u5143\u6807\u4EF7\u7528\u91CF\u7684\u4EBA\u6C11\u5E01\u4EF7\u683C",width:t,children:m.groups.length===0?Pe(he,{tone:"info",width:c,title:"\u6682\u65E0\u53EF\u7528\u5206\u7EC4",detail:"\u5F53\u524D\u6CA1\u6709\u542F\u7528\u7684\u6E20\u9053\u63D0\u4F9B\u8BE5\u6A21\u578B"}):Pe(ue,{items:m.groups,width:c,height:b,columns:[{label:"\u5206\u7EC4",shrink:!0},{label:"\u8BF4\u660E",shrink:!0},{label:"\u500D\u7387",align:"right"},{label:"\u5355\u4EF7",align:"right"}],row:S=>[S.name,S.description,`\xD7${S.multiplier}`,`\xA5${(m.cnyPerUsd*S.multiplier).toFixed(2)}`]})})})]})}})}function jh(){let e=L(),{width:t}=H(),n=te(),[o,r]=Pv({name:"list"}),i=ee([e.revision],async()=>(await va(e.ctx.site)).models),s=ee([e.revision],$h);G(c=>{c==="r"&&e.reload()});let a=()=>{o.name==="list"?e.pop():r({name:"list"})};return Pe(K,{hints:o.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","r \u5237\u65B0","Esc \u8FD4\u56DE"],onEscape:a,children:Pe(W,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:c=>{if(c.length===0)return Pe(he,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"});if(o.name==="detail")return Pe(Nv,{price:o.price,width:t,contentRows:n});let l=s.phase==="ready"?Du(s.data.providers):[],u=l.length>0?Fh+Q:0;return xi(Dn,{flexDirection:"column",children:[l.length>0&&Pe(Dn,{marginBottom:Q,children:Pe(Uh,{providers:l})}),Pe(ue,{retain:"list",items:c,width:t,height:n-u,columns:[{label:"\u6A21\u578B",shrink:!0},{label:"\u8F93\u5165",align:"right"},{label:"\u8F93\u51FA",align:"right"},{label:"\u7F13\u5B58\u8BFB\u53D6",align:"right"},{label:"\u7F13\u5B58\u5199\u5165",align:"right"}],row:m=>[m.displayName,pn(m.inputPricePerMillionTokens,"-"),pn(m.outputPricePerMillionTokens,"-"),pn(m.cachedInputPricePerMillionTokens,"-"),pn(m.cacheWritePricePerMillionTokens,"-")],searchOf:m=>`${m.displayName} ${m.model}`,onOpen:m=>r({name:"detail",price:m}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})]})}})})}import{Box as Mo,Text as mR}from"ink";import{useState as Na}from"react";function Hh(e,t){let n=e.line??t.apiLines[0];if(n===void 0)throw new j("\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF",{hint:"\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u5728\u8BBE\u7F6E\u91CC\u6DFB\u52A0\u63A5\u5165\u7EBF\u8DEF"});return n}async function qh(e,t){let n=await ze(e.site);return Dh(Hh(fo(),n).url,t)}async function Gh(e,t,n){let o=await ze(e.site),r=Hh(fo(),o).url;return{input:{siteName:o.siteName,baseUrl:t.relayUrl(r),apiKey:n},at:t.resolveDir()}}async function Wh(e,t,n){let{input:o,at:r}=await Gh(e,t,n);t.apply(o,r)}async function zh(e,t,n,o,r){let{input:i,at:s}=await Gh(e,t,n);t.apply({...i,model:o,models:r},s)}import{homedir as Zh}from"os";import{join as _a,resolve as Bv}from"path";import Lv from"json5";import{applyEdits as Ov,modify as Dv,parse as $v}from"jsonc-parser";function Vh(e,t){if(typeof e!="object"||e===null||Array.isArray(e))throw new j(`${t} \u7684\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);return e}function Kh(e){let t=[],n=$v(e,t,{allowTrailingComma:!0});return t.length>0?null:n}function Yh(e,t){let n=Kh(e);if(n!==null)return{root:Vh(n,t),jsonc:!0};try{return{root:Vh(Lv.parse(e),t),jsonc:!1}}catch(o){throw new j(`${t} \u4E0D\u662F\u5408\u6CD5 JSON\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:o})}}function no(e,t){let n=e;for(let o of t){if(typeof n!="object"||n===null||Array.isArray(n))return;n=n[o]}return n}function Ti(e){let t=Nt(e);return t===null?null:Yh(t,e).root}function $n(e,t){let n=Ti(e),o=n===null?void 0:no(n,t);return typeof o=="string"?o:null}function Ca(e,t){let n=Ti(e);return n!==null&&no(n,t)!==void 0}function Gt(e,t){let n=Nt(e)??"{}",o=n.includes(`\r
14
19
  `)?`\r
15
20
  `:`
16
- `,r=dd(o,e);r.jsonc||(o=JSON.stringify(r.root,null,2).replaceAll(`
17
- `,n));let i={insertSpaces:!0,tabSize:2,eol:n};try{for(let[a,c]of t)o=ky(o,vy(o,a,c,{formattingOptions:i}))}catch(a){throw new O(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${e}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`,{cause:a})}let s=md(o);if(s===null)throw new O(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${e}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);for(let[a,c]of t)if(JSON.stringify(wn(s,a))!==JSON.stringify(c))throw new O(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${e}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);zt(e,o.endsWith(n)?o:`${o}${n}`,384)}var pd=["env","ANTHROPIC_BASE_URL"],Py=["env","ANTHROPIC_AUTH_TOKEN"],fd=["hasCompletedOnboarding"],Ta=e=>Ii(e.dir,"settings.json"),gd=e=>e.custom?Ii(e.dir,".claude.json"):Ii(hd(),".claude.json"),bd={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:Ry(e),custom:!0}:{dir:Ii(hd(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[Ta(e),gd(e)],read(e){return{baseUrl:on(Ta(e),pd),model:null}},apply(e,t){pt(Ta(t),[[pd,e.baseUrl],[Py,e.apiKey]]);let o=gd(t);Ni(o,fd)||pt(o,[[fd,!0]])}};import{homedir as Ay}from"os";import{join as _a,resolve as Ny}from"path";import{parse as Iy,patch as Ly}from"@decimalturn/toml-patch";import{parse as My}from"smol-toml";import{homedir as Cy}from"os";import{resolve as Ey}from"path";var Wt=e=>e.toLowerCase(),Li=e=>`${e.toUpperCase().replace(/[^A-Z0-9]+/g,"_")}_API_KEY`;function Mi(e){let t=e.indexOf("/");return t===-1?null:[e.slice(0,t),e.slice(t+1)]}function bo(e){let t=process.env[e]?.trim();if(!t)return null;let o=t.replace(/^~(?=$|[\\/])/,()=>Cy());return Ey(o)}var Oy=["OPENAI_API_KEY"],yd="model_provider",wa="model",ka=e=>_a(e.dir,"config.toml"),Sd=e=>_a(e.dir,"auth.json");function va(e,t){try{return My(e,{integersAsBigInt:"asNeeded"})}catch(o){throw new O(`${t} \u4E0D\u662F\u5408\u6CD5 TOML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:o})}}function $y(e,t){let o=ka(t),n=st(o)??"";n!==""&&va(n,o);let r=Wt(e.siteName),i=Iy(n),s=i.model_providers;i.model_providers={...typeof s=="object"&&s!==null&&!Array.isArray(s)?s:{},[r]:{name:e.siteName,base_url:e.baseUrl,wire_api:"responses",requires_openai_auth:!0}},i[yd]=r,i[wa]=e.model;let a=Ly(n,i,{inlineTableStart:2}),c=va(a,o);if(c[yd]!==r||c[wa]!==e.model||c.model_providers?.[r]?.base_url!==e.baseUrl)throw new O(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${o}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);zt(o,a,384)}var xd={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:Ny(e),custom:!0}:{dir:_a(Ay(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[ka(e),Sd(e)],read(e){let t=ka(e),o=st(t),n=o===null?null:va(o,t),r=s=>typeof s=="string"?s:null,i=r(n?.model_provider);return{baseUrl:i===null?null:r(n?.model_providers?.[i]?.base_url),model:r(n?.[wa])}},apply(e,t){$y(e,t),pt(Sd(t),[[Oy,e.apiKey]])}};import{homedir as Td}from"os";import{join as cr,resolve as Dy}from"path";import{isMap as By,isScalar as Fy,parse as Uy,parseDocument as jy}from"yaml";function Oi(e,t,o){let n=st(e)??"",r=n.includes(`\r
21
+ `,r=Yh(n,e);r.jsonc||(n=JSON.stringify(r.root,null,2).replaceAll(`
22
+ `,o));let i={insertSpaces:!0,tabSize:2,eol:o};try{for(let[a,c]of t)n=Ov(n,Dv(n,a,c,{formattingOptions:i}))}catch(a){throw new j(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${e}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`,{cause:a})}let s=Kh(n);if(s===null)throw new j(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${e}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);for(let[a,c]of t)if(JSON.stringify(no(s,a))!==JSON.stringify(c))throw new j(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${e}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);wn(e,n.endsWith(o)?n:`${n}${o}`,384)}var Jh=["env","ANTHROPIC_BASE_URL"],Fv=["env","ANTHROPIC_AUTH_TOKEN"],Xh=["hasCompletedOnboarding"],nm=e=>_a(e.dir,"settings.json"),Qh=e=>e.custom?_a(e.dir,".claude.json"):_a(Zh(),".claude.json"),ey={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:Bv(e),custom:!0}:{dir:_a(Zh(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[nm(e),Qh(e)],read(e){return{baseUrl:$n(nm(e),Jh),model:null}},apply(e,t){Gt(nm(t),[[Jh,e.baseUrl],[Fv,e.apiKey]]);let n=Qh(t);Ca(n,Xh)||Gt(n,[[Xh,!0]])}};import{homedir as Hv}from"os";import{join as sm,resolve as qv}from"path";import{parse as Gv,patch as Wv}from"@decimalturn/toml-patch";import{parse as zv}from"smol-toml";import{homedir as Uv}from"os";import{resolve as jv}from"path";var xn=e=>e.toLowerCase(),Pa=e=>`${e.toUpperCase().replace(/[^A-Z0-9]+/g,"_")}_API_KEY`;function Aa(e){let t=e.indexOf("/");return t===-1?null:[e.slice(0,t),e.slice(t+1)]}function Sr(e){let t=process.env[e]?.trim();if(!t)return null;let n=t.replace(/^~(?=$|[\\/])/,()=>Uv());return jv(n)}var Vv=["OPENAI_API_KEY"],ty="model_provider",om="model",rm=e=>sm(e.dir,"config.toml"),ny=e=>sm(e.dir,"auth.json");function im(e,t){try{return zv(e,{integersAsBigInt:"asNeeded"})}catch(n){throw new j(`${t} \u4E0D\u662F\u5408\u6CD5 TOML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:n})}}function Kv(e,t){let n=rm(t),o=Nt(n)??"";o!==""&&im(o,n);let r=xn(e.siteName),i=Gv(o),s=i.model_providers;i.model_providers={...typeof s=="object"&&s!==null&&!Array.isArray(s)?s:{},[r]:{name:e.siteName,base_url:e.baseUrl,wire_api:"responses",requires_openai_auth:!0}},i[ty]=r,i[om]=e.model;let a=Wv(o,i,{inlineTableStart:2}),c=im(a,n);if(c[ty]!==r||c[om]!==e.model||c.model_providers?.[r]?.base_url!==e.baseUrl)throw new j(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${n}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);wn(n,a,384)}var oy={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:qv(e),custom:!0}:{dir:sm(Hv(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[rm(e),ny(e)],read(e){let t=rm(e),n=Nt(t),o=n===null?null:im(n,t),r=s=>typeof s=="string"?s:null,i=r(o?.model_provider);return{baseUrl:i===null?null:r(o?.model_providers?.[i]?.base_url),model:r(o?.[om])}},apply(e,t){Kv(e,t),Gt(ny(t),[[Vv,e.apiKey]])}};import{homedir as ry}from"os";import{join as wi,resolve as Yv}from"path";import{isMap as Jv,isScalar as Xv,parse as Qv,parseDocument as Zv}from"yaml";function Ea(e,t,n){let o=Nt(e)??"",r=o.includes(`\r
18
23
  `)?`\r
19
24
  `:`
20
- `,i=n===""?[]:n.split(/\r?\n/);i.at(-1)===""&&i.pop();let s=new RegExp(`^\\s*(?:export\\s+)?${t}\\s*=`),a=i.findIndex(l=>s.test(l)),c=`${t}=${o}`;a===-1?i.push(c):i[a]=c,zt(e,`${i.join(r)}${r}`,384)}var Ra="custom:",Pa=e=>cr(e.dir,"config.yaml"),wd=e=>cr(e.dir,".env"),rn=e=>typeof e=="string"?e:null;function kd(e,t){try{return Uy(e)}catch(o){throw new O(`${t} \u4E0D\u662F\u5408\u6CD5 YAML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:o})}}function Hy(e,t,o,n){let r=Pa(t),i=jy(st(r)??"",{compat:"yaml-1.1"});if(i.errors.length>0)throw new O(`${r} \u4E0D\u662F\u5408\u6CD5 YAML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:i.errors[0]});if(i.contents!==null&&!By(i.contents))throw new O(`${r} \u7684\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);let s=`${Ra}${o}`;try{i.setIn(["providers",o],{api:e.baseUrl,key_env:n,transport:"anthropic_messages",discover_models:!1,models:Object.fromEntries(e.models.map(l=>[l,{}]))}),Fy(i.get("model",!0))?i.set("model",{provider:s,default:e.model}):(i.setIn(["model","provider"],s),i.setIn(["model","default"],e.model))}catch(l){throw new O(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${r}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`,{cause:l})}let a=i.toString({lineWidth:0}),c=kd(a,r);if(rn(c?.providers?.[o]?.api)!==e.baseUrl||rn(c?.model?.provider)!==s||rn(c?.model?.default)!==e.model)throw new O(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${r}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);zt(r,a,384)}var vd={id:"hermes-agent",label:"Hermes Agent",requiresModel:!0,resolveDir(){let e=process.env.HERMES_HOME?.trim();if(e)return{dir:Dy(e),custom:!0};if(process.platform==="win32"){let t=process.env.LOCALAPPDATA;return{dir:cr(t??cr(Td(),"AppData","Local"),"hermes"),custom:!1}}return{dir:cr(Td(),".hermes"),custom:!1}},relayUrl:e=>e,configPaths:e=>[Pa(e),wd(e)],read(e){let t=Pa(e),o=st(t),n=o===null?null:kd(o,t),r=rn(n?.model?.provider),i=r!==null&&r.startsWith(Ra)?r.slice(Ra.length):null,s=i===null?void 0:n?.providers?.[i];return{baseUrl:rn(s?.api)??rn(s?.url)??rn(s?.base_url),model:rn(n?.model?.default)??rn(n?.model?.model)}},apply(e,t){let o=Wt(e.siteName),n=Li(o);Hy(e,t,o,n),Oi(wd(t),n,e.apiKey)}};import{existsSync as qy}from"fs";import{homedir as Pd}from"os";import{join as yo,resolve as Cd}from"path";var Wy="https://opencode.ai/config.json",Ed="opencode.jsonc",Gy=[Ed,"opencode.json","config.json"],_d=["model"],Ca=e=>Gy.map(t=>yo(e.dir,t)).find(t=>qy(t))??yo(e.dir,Ed),Rd=()=>{let e=process.env.XDG_DATA_HOME;return yo(e?Cd(e):yo(Pd(),".local","share"),"opencode","auth.json")},Ad={id:"opencode",label:"OpenCode",requiresModel:!0,resolveDir(){let e=process.env.XDG_CONFIG_HOME;return e?{dir:yo(Cd(e),"opencode"),custom:!0}:{dir:yo(Pd(),".config","opencode"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[Ca(e),Rd()],read(e){let t=Ca(e),o=on(t,_d),n=o===null?null:Mi(o);if(n===null)return{baseUrl:null,model:null};let[r,i]=n;return{baseUrl:on(t,["provider",r,"options","baseURL"]),model:i}},apply(e,t){let o=Ca(t),n=Wt(e.siteName),r=[[["provider",n],{npm:"@ai-sdk/anthropic",name:e.siteName,options:{baseURL:e.baseUrl},models:Object.fromEntries(e.models.map(i=>[i,{name:i}]))}],[_d,`${n}/${e.model}`]];Ni(o,["$schema"])||r.unshift([["$schema"],Wy]),pt(o,r),pt(Rd(),[[[n],{type:"api",key:e.apiKey}]])}};import{homedir as zy}from"os";import{join as Aa}from"path";var Nd=["models","providers"],$i=["agents","defaults","model"],Id=["agents","defaults","models"],Ea=e=>bo("OPENCLAW_CONFIG_PATH")??Aa(e.dir,"openclaw.json"),Ld=e=>Aa(e.dir,".env"),Md=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Ky(e){let t=wn(e,$i),o=Md(t)?t.primary:t;return typeof o=="string"?o:null}var Od={id:"openclaw",label:"OpenClaw",requiresModel:!0,resolveDir(){let e=bo("OPENCLAW_STATE_DIR");if(e!==null)return{dir:e,custom:!0};let t=bo("OPENCLAW_HOME");return{dir:Aa(t??zy(),".openclaw"),custom:t!==null}},relayUrl:e=>e,configPaths:e=>[Ea(e),Ld(e)],read(e){let t=ar(Ea(e)),o=t===null?null:Ky(t),n=o===null?null:Mi(o);if(t===null||n===null)return{baseUrl:null,model:null};let[r,i]=n,s=wn(t,[...Nd,r,"baseUrl"]);return{baseUrl:typeof s=="string"?s:null,model:i}},apply(e,t){let o=Ea(t),n=Wt(e.siteName),r=Li(n),i=ar(o)??{},s=`${n}/${e.model}`,a=[[[...Nd,n],{baseUrl:e.baseUrl,apiKey:{source:"env",provider:"default",id:r},api:"anthropic-messages",models:e.models.map(c=>({id:c,name:c}))}],Md(wn(i,$i))?[[...$i,"primary"],s]:[$i,{primary:s}]];for(let c of e.models){let l=`${n}/${c}`;wn(i,[...Id,l])===void 0&&a.push([[...Id,l],{}])}pt(o,a),Oi(Ld(t),r,e.apiKey)}};import{homedir as Vy}from"os";import{join as Ia}from"path";var Na=e=>Ia(e.dir,"models.json"),Di=e=>Ia(e.dir,"settings.json"),$d={id:"pi-coding-agent",label:"Pi Coding Agent",requiresModel:!0,resolveDir(){let e=bo("PI_CODING_AGENT_DIR");return e!==null?{dir:e,custom:!0}:{dir:Ia(Vy(),".pi","agent"),custom:!1}},relayUrl:e=>e,configPaths:e=>[Na(e),Di(e)],read(e){let t=on(Di(e),["defaultProvider"]);return{baseUrl:t===null?null:on(Na(e),["providers",t,"baseUrl"]),model:on(Di(e),["defaultModel"])}},apply(e,t){let o=Wt(e.siteName);pt(Na(t),[[["providers",o],{baseUrl:e.baseUrl,api:"anthropic-messages",apiKey:e.apiKey,models:e.models.map(n=>({id:n,name:n}))}]]),pt(Di(t),[[["defaultProvider"],o],[["defaultModel"],e.model]])}};var Dd=[bd,xd,Od,vd,Ad,$d];var Jy=6e3,Yy=2,Bd=e=>bt(`${e.url}/api/site-config`,{timeoutMs:Jy});async function Xy(e){try{await Bd(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<Yy;o+=1){let n=Date.now();await Bd(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function Fd(e){let t=[];for(let o of e)t.push(await Xy(o));return t}import{jsx as we,jsxs as So}from"react/jsx-runtime";var Qy=10,Zy=3,Ud=4,Gd=e=>1+Math.max(1,Math.min(e,Ud))+(e>Ud?1:0);function jd(e,t){let o=e.trim();if(o==="")return null;let n=Number(o),r=Math.round(n*t);return!Number.isFinite(n)||n<=0||r<1?"invalid":r}var Hd=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),qd=(e,t)=>{let o=e.find(n=>String(n.id)===t);return o===void 0?void 0:`${o.description}\uFF08\u8BA1\u8D39\u500D\u7387 \xD7${o.multiplier}\uFF09`};function eS({lines:e,measured:t,effective:o,docsUrl:n,width:r,isActive:i,onPick:s}){let a=c=>{if(t===null)return"\u6D4B\u91CF\u4E2D";let l=t.find(m=>m.line.url===c.url);return l===void 0||l.latencyMs===null?"\u4E0D\u53EF\u8FBE":`${l.latencyMs} ms`};return So(te,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:r,children:[we(Re,{retain:"lines",items:e,width:r-ce,height:Gd(e.length),isActive:i,columns:[{label:"\u7EBF\u8DEF"},{label:"\u5EF6\u8FDF",align:"right"},{label:"\u8BF4\u660E",shrink:!0},{label:"\u72B6\u6001"}],row:c=>[c.name,a(c),c.description,o?.url===c.url?"\u4F7F\u7528\u4E2D":""],searchOf:c=>`${c.name} ${c.url}`,onOpen:s,emptyLabel:"\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF\uFF0C\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u6DFB\u52A0"}),n!==null&&So(Wd,{wrap:"truncate",color:u.faintForeground,children:["\u63A5\u5165\u6587\u6863 ",n]})]})}function zd(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Bi({name:"list"}),[i,s]=Bi(!1),[a,c]=Bi(()=>Nn().line),[l,m]=Bi(0),{busy:p,error:d,reset:f,fail:S,run:b}=de(),h=Q([e.revision],async()=>{let[R,A,q]=await Promise.all([Ri(),_i(),Ee(e.ctx.site)]);return{tokens:R,groups:A,site:q}}),y=h.phase==="ready"?h.data.site.apiLines:[],x=Q([l,y.map(R=>R.url).join("|")],()=>Fd(y)),k=p!==null,g=n.name==="list"&&!k,w=R=>{r({name:"list"}),e.reload(),e.toast("ok",R)};G(R=>{if(R==="r"){m(A=>A+1),e.reload();return}i||(R==="n"?r({name:"create"}):R==="l"&&y.length>0&&s(!0))},g);let P=R=>{Nr(A=>{A.line={name:R.name,url:R.url}}),c({name:R.name,url:R.url}),s(!1),e.toast("ok",`\u5DF2\u9009\u7528\u7EBF\u8DEF ${R.name}\uFF0C\u65B0\u5EFA\u4EE4\u724C\u5E76\u5199\u5165\u914D\u7F6E\u540E\u751F\u6548`)},$=(R,A,q)=>{b("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>Gm({name:R,groupId:A,quotaLimit:q}),{onSuccess:F=>{e.reload(),r({name:"created",token:F,secret:F.token})}})},U=R=>{b("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>zm(R.id),{onSuccess:()=>w("\u4EE4\u724C\u5DF2\u5220\u9664")})},T=(R,A)=>{b("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>Dd.map(q=>{let F=q.resolveDir(),K=q.read(F);return{client:q,configured:K.baseUrl!==null,paths:q.configPaths(F),model:K.model}}),{failToast:!0,onSuccess:q=>r({name:"apply-pick",token:R,secret:A,targets:q})})},N=(R,A,q)=>{b("\u6B63\u5728\u5199\u5165",q,{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",Be([`\u5DF2\u5199\u5165 ${R}`,A]))}})},_=(R,A)=>{let q=R.targets.find(K=>K.client.id===A);if(q===void 0)return;let{client:F}=q;if(!F.requiresModel){N(F.label,void 0,()=>cd(e.ctx,F,R.secret));return}b("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let K=await sd(e.ctx,R.secret);if(K.length===0)throw new O("\u8BE5\u4EE4\u724C\u6240\u5728\u5206\u7EC4\u6CA1\u6709\u53EF\u8DEF\u7531\u7684\u6A21\u578B\uFF0C\u6362\u4E00\u4E2A\u5206\u7EC4\u540E\u91CD\u65B0\u521B\u5EFA");return K},{failToast:!0,onSuccess:K=>r({name:"apply-model",token:R.token,secret:R.secret,targets:R.targets,needs:{...q,client:F},models:K})})},v=(R,A)=>{f(),r(R==="rename"?{name:"rename",token:A}:R==="regroup"?{name:"regroup",token:A}:R==="relimit"?{name:"relimit",token:A}:{name:"confirm-delete",token:A})},C=()=>{if(n.name==="list"){i?s(!1):e.pop();return}if(f(),n.name==="apply-pick"){r({name:"created",token:n.token,secret:n.secret});return}if(n.name==="apply-model"){r({name:"apply-pick",token:n.token,secret:n.secret,targets:n.targets});return}r({name:"list"})},I=()=>n.name!=="list"?["Esc \u8FD4\u56DE"]:i?["\u2191\u2193 \u79FB\u52A8","Enter \u9009\u7528","/ \u8FC7\u6EE4","r \u5237\u65B0","Esc \u8FD4\u56DE"]:["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","l \u63A5\u5165\u5730\u5740","/ \u8FC7\u6EE4","r \u5237\u65B0"];return n.name==="created"||n.name==="apply-pick"||n.name==="apply-model"?we(X,{hints:I(),onEscape:C,children:So(jn,{flexDirection:"column",children:[p!==null&&we(tt,{label:p}),n.name==="created"&&!k&&So(jn,{flexDirection:"column",children:[we(he,{tone:"ok",width:t,title:"\u4EE4\u724C\u5DF2\u521B\u5EFA",detail:"\u8BF7\u7ACB\u5373\u590D\u5236\u5E76\u59A5\u5584\u4FDD\u5B58\u3002\u51FA\u4E8E\u5B89\u5168\u8003\u8651\uFF0C\u5B8C\u6574\u4EE4\u724C\u53EA\u663E\u793A\u8FD9\u4E00\u6B21\uFF0C\u5173\u95ED\u540E\u5C06\u65E0\u6CD5\u518D\u6B21\u67E5\u770B\u3002"}),we(jn,{marginTop:1,children:we(Wd,{color:u.accent,children:n.secret})}),we(jn,{marginTop:1,children:we(ie,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:R=>{R==="back"?r({name:"list"}):T(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!k&&we(te,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:we(ie,{width:t-ce,height:o-ut,retain:"apply",items:n.targets.map(R=>({value:R.client.id,label:R.client.label,badge:R.configured?"\u5DF2\u914D\u7F6E":"\u672A\u914D\u7F6E",badgeTone:R.configured?"accent":void 0,hint:R.paths.join(" ")})),onSelect:R=>_(n,R)})}),n.name==="apply-model"&&!k&&we(z,{title:`${n.needs.client.label} \u9ED8\u8BA4\u6A21\u578B`,width:t,submitLabel:"\u5199\u5165",error:d,fields:[{kind:"select",name:"model",label:"\u6A21\u578B",options:n.models.map(R=>({value:R,label:R})),initial:n.needs.model!==null&&n.models.includes(n.needs.model)?n.needs.model:n.models[0],hint:`\u5199\u5165\u540E\u4F5C\u4E3A ${n.needs.client.label} \u7684\u9ED8\u8BA4\u6A21\u578B`}],onCancel:C,onSubmit:R=>{let A=R.model;if(A===void 0||A===""){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}N(n.needs.client.label,A,()=>ld(e.ctx,n.needs.client,n.secret,A,n.models))}})]})}):we(X,{hints:I(),onEscape:C,children:we(ee,{state:h,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:R,groups:A,site:q})=>{let F=W+ut+Gd(q.apiLines.length)+(q.docsEnabled?1:0),K=Math.max(Zy,o-(n.name==="list"?F:Qy));return So(jn,{flexDirection:"column",children:[we(jn,{flexDirection:"column",marginBottom:W,children:we(Re,{retain:"list",items:R,width:t,height:K,isActive:g&&!i,columns:[{label:"\u540D\u79F0",shrink:!0},{label:"\u5206\u7EC4"},{label:"\u5DF2\u6D88\u8D39",align:"right"},{label:"\u8D39\u7528\u9650\u5236",align:"right"},{label:"\u5BC6\u94A5"}],row:H=>{let oe=ae(H.usedQuota,q.quotaPerUsd);return[H.name,H.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664",H.quotaLimit!==null&&H.usedQuota>=H.quotaLimit?{text:oe,tone:"danger"}:oe,H.quotaLimit===null?"\u4E0D\u9650":ae(H.quotaLimit,q.quotaPerUsd),wr(H.keyPrefix,H.keySuffix)]},searchOf:H=>`${H.name} ${H.groupName??""}`,onOpen:H=>r({name:"actions",token:H}),emptyLabel:"\u6682\u65E0\u4EE4\u724C",emptyDescription:"\u521B\u5EFA\u4E00\u4E2A\u4EE4\u724C\u5373\u53EF\u5F00\u59CB\u8C03\u7528\u4E2D\u8F6C API"})}),p!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&we(tt,{label:p}),n.name==="list"&&we(eS,{lines:q.apiLines,measured:x.phase==="ready"?x.data:null,effective:a??q.apiLines[0],docsUrl:q.docsEnabled?`${e.ctx.site}/docs`:null,width:t,isActive:g&&i,onPick:P}),n.name==="actions"&&!k&&So(te,{title:n.token.name,width:t,children:[we(Ne,{width:t-ce,items:[["\u5206\u7EC4",n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",ae(n.token.usedQuota,q.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",n.token.quotaLimit===null?"\u4E0D\u9650":ae(n.token.quotaLimit,q.quotaPerUsd)],["\u5BC6\u94A5",wr(n.token.keyPrefix,n.token.keySuffix)]]}),we(jn,{marginTop:1,children:we(ie,{width:t-ce,items:[{value:"rename",label:"\u540D\u79F0",hint:n.token.name},{value:"regroup",label:"\u5206\u7EC4",hint:n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"},{value:"relimit",label:"\u8D39\u7528\u9650\u5236",hint:n.token.quotaLimit===null?"\u4E0D\u9650":ae(n.token.quotaLimit,q.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:H=>v(H,n.token)})})]}),n.name==="create"&&we(z,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:d,busy:k,busyLabel:"\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",fields:[{kind:"text",name:"name",label:"\u540D\u79F0",placeholder:"\u8BF7\u8F93\u5165\u4EE4\u724C\u540D\u79F0"},{kind:"select",name:"group",label:"\u5206\u7EC4",options:Hd(A),initial:String(A[0]?.id??""),hint:H=>qd(A,H)},{kind:"text",name:"limit",label:"\u8D39\u7528\u9650\u5236",placeholder:"\u7F8E\u5143\u91D1\u989D\uFF0C\u7559\u7A7A\u5219\u4E0D\u9650\u5236",hint:"\u7D2F\u8BA1\u6D88\u8D39\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\uFF0C\u8BE5\u4EE4\u724C\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD",optional:!0}],onCancel:C,onSubmit:H=>{let oe=(H.name??"").trim();if(oe===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let ke=A.find(D=>String(D.id)===H.group);if(ke===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let E=jd(H.limit??"",q.quotaPerUsd);if(E==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}$(oe,ke.id,E)}}),n.name==="rename"&&we(z,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:d,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:n.token.name,placeholder:"\u8BF7\u8F93\u5165\u4EE4\u724C\u540D\u79F0"}],onCancel:C,onSubmit:H=>{let oe=(H.name??"").trim();if(oe===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}b("\u6B63\u5728\u4FDD\u5B58",()=>Pi(n.token.id,{name:oe}),{onSuccess:()=>w("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&we(z,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:d,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:Hd(A),initial:String(n.token.groupId??A[0]?.id??""),hint:n.token.groupId===null?"\u6240\u5C5E\u5206\u7EC4\u5DF2\u88AB\u5220\u9664\uFF0C\u8BE5\u4EE4\u724C\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u5206\u7EC4":H=>qd(A,H)}],onCancel:C,onSubmit:H=>{let oe=A.find(ke=>String(ke.id)===H.group);if(oe===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}b("\u6B63\u5728\u4FDD\u5B58",()=>Pi(n.token.id,{groupId:oe.id}),{onSuccess:()=>w("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&we(z,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:d,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"text",name:"limit",label:"\u8D39\u7528\u9650\u5236",initial:n.token.quotaLimit===null?"":String(Math.round(n.token.quotaLimit/q.quotaPerUsd*100)/100),placeholder:"\u7F8E\u5143\u91D1\u989D\uFF0C\u7559\u7A7A\u5219\u4E0D\u9650\u5236",hint:`\u8BE5\u4EE4\u724C\u5DF2\u7D2F\u8BA1\u6D88\u8D39 ${ae(n.token.usedQuota,q.quotaPerUsd)}\uFF0C\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,optional:!0}],onCancel:C,onSubmit:H=>{let oe=jd(H.limit??"",q.quotaPerUsd);if(oe==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}b("\u6B63\u5728\u4FDD\u5B58",()=>Pi(n.token.id,{quotaLimit:oe}),{onSuccess:()=>w("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!k&&we(ze,{width:t,title:"\u5220\u9664\u4EE4\u724C",detail:`\u5220\u9664\u300C${n.token.name}\u300D\u540E\u8BE5\u4EE4\u724C\u7ACB\u5373\u5931\u6548\uFF0C\u4F7F\u7528\u5B83\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,confirmLabel:"\u5220\u9664",error:d,onConfirm:()=>U(n.token),onCancel:C})]})}})})}import{Box as La}from"ink";import{jsx as Ot,jsxs as tS}from"react/jsx-runtime";var Kd=[["\u2191\u2193 / k j","\u79FB\u52A8\u5149\u6807\u3001\u6EDA\u52A8\u5185\u5BB9"],["\u2190\u2192","\u5207\u6362\u5206\u6BB5\u3001\u7FFB\u9875\u3001\u6539\u53D6\u503C"],["[ ]","\u5207\u6362\u9876\u680F\u4E0A\u7684\u529F\u80FD"],["Enter","\u6253\u5F00\u3001\u786E\u8BA4\u3001\u63D0\u4EA4"],["Tab","\u8868\u5355\u4E0B\u4E00\u9879\u3001\u8FDB\u5165\u56DE\u590D\u6846"],["Esc","\u9000\u56DE\u4E0A\u4E00\u5C42"],["r","\u5237\u65B0\u5F53\u524D\u6570\u636E"],["n","\u65B0\u5EFA"],["f","\u7B5B\u9009\u5217\u8868"],["/","\u8FC7\u6EE4\u5217\u8868"],["Space / a","\u591A\u9009\u52FE\u9009\u3001\u5168\u9009"],["?","\u8FD9\u5F20\u8868"],["q","\u8FD4\u56DE\u4E0A\u5C42\uFF0C\u529F\u80FD\u5C4F\u4E0A\u9000\u51FA"],["Ctrl+C","\u9000\u51FA"]],Vd=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],Jd=[["\u2190\u2192 Home End","\u79FB\u52A8\u5149\u6807"],["Ctrl+A / Ctrl+E","\u884C\u9996\u3001\u884C\u5C3E"],["Ctrl+W","\u5220\u9664\u524D\u4E00\u4E2A\u8BCD"],["Ctrl+U / Ctrl+K","\u5220\u5230\u884C\u9996\u3001\u884C\u5C3E"]];function Yd({width:e,height:t}){let o=e-ce,n=[["\u7248\u672C",`${gt} v${ht}`],["\u672C\u5730\u5B58\u50A8",Kt()]],r=[Kd,Vd,Jd,n],s=(a=>r.reduce((c,l)=>c+lt+a+Qu(l.length,o),W*(r.length-1)))(Fe)<=t?Fe:0;return tS(Tl,{height:t,children:[Ot(te,{title:"\u901A\u7528",width:e,gap:s,children:Ot(Ne,{items:Kd,width:o})}),Ot(La,{marginTop:W,flexDirection:"column",children:Ot(te,{title:"\u9F20\u6807",width:e,gap:s,children:Ot(Ne,{items:Vd,width:o})})}),Ot(La,{marginTop:W,flexDirection:"column",children:Ot(te,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:Ot(Ne,{items:Jd,width:o})})}),Ot(La,{marginTop:W,flexDirection:"column",children:Ot(te,{title:"\u5173\u4E8E",width:e,gap:s,children:Ot(Ne,{items:n,width:o})})})]})}import{jsx as Ma}from"react/jsx-runtime";function Xd(){let e=B(),{width:t}=j(),o=ne();return pn(e.pop),Ma(On,{header:Ma(ri,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:Ma(Yd,{width:t,height:o})})}import{Box as Qd,Text as nS}from"ink";import{jsx as lr,jsxs as oS}from"react/jsx-runtime";var Zd=[{value:"login",label:"\u767B\u5F55\u8D26\u53F7",hint:"\u4F7F\u7528\u7528\u6237\u540D\u6216\u90AE\u7BB1\u7EE7\u7EED"},{value:"register",label:"\u6CE8\u518C\u8D26\u53F7",hint:"\u521B\u5EFA\u8D26\u53F7\u5F00\u59CB\u4F7F\u7528"},{value:"forgot",label:"\u627E\u56DE\u5BC6\u7801",hint:"\u901A\u8FC7\u90AE\u7BB1\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u65B0\u5BC6\u7801"}];function ep(){let e=B(),{width:t}=j(),o=Qo(0),n=W+1+W+Zd.length,r=ei(t)&&o-Zr>=n;return oS(On,{header:r?lr(ti,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[lr(Qd,{marginTop:1,children:lr(nS,{color:u.mutedForeground,wrap:"truncate",children:"\u767B\u5F55\u540E\u5373\u53EF\u521B\u5EFA\u4EE4\u724C\u3001\u5199\u5165\u914D\u7F6E\u5E76\u67E5\u770B\u7528\u91CF"})}),lr(Qd,{marginTop:1,children:lr(ie,{items:Zd,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as Fi,Text as Hn}from"ink";import{useState as np}from"react";import{z as Ye}from"zod";var rS=Ye.object({inviteCode:Ye.string(),invitedCount:Ye.number(),totalReward:Ye.number(),rewards:Ye.object({firstInviterPercent:Ye.number(),firstInviteePercent:Ye.number(),subsequentInviterPercent:Ye.number()}),items:Ye.array(Ye.object({id:Ye.number().int(),rewardType:ac,rewardQuota:Ye.number(),rewardQuotaReversed:Ye.number(),inviterUsername:Ye.string(),inviteeUsername:Ye.string(),createdAt:Ye.string()}))}),tp=()=>M(rS,"/invite");import{jsx as Qe,jsxs as Ui}from"react/jsx-runtime";var iS=Ze(ts,_r,"\u5168\u90E8\u7C7B\u578B"),op=3;function sS(e){let t=[];return e.firstInviterPercent>0&&t.push(`\u597D\u53CB\u9996\u6B21\u5145\u503C\uFF0C\u4F60\u83B7\u5F97 ${e.firstInviterPercent}% \u989D\u5EA6\u5956\u52B1`),e.firstInviteePercent>0&&t.push(`\u597D\u53CB\u9996\u6B21\u5145\u503C\uFF0C\u597D\u53CB\u672C\u4EBA\u83B7\u5F97 ${e.firstInviteePercent}% \u989D\u5EA6\u5956\u52B1`),e.subsequentInviterPercent>0&&t.push(`\u597D\u53CB\u540E\u7EED\u6BCF\u6B21\u5145\u503C\uFF0C\u4F60\u83B7\u5F97 ${e.subsequentInviterPercent}% \u989D\u5EA6\u5956\u52B1`),t.length===0?["\u9080\u8BF7\u5956\u52B1\u6682\u672A\u5F00\u542F"]:(t.push("\u5956\u52B1\u6309\u597D\u53CB\u5B9E\u4ED8\u91D1\u989D\u5BF9\u5E94\u989D\u5EA6\u6298\u7B97"),t)}function rp(){let e=B(),{width:t}=j(),o=ne(),[n,r]=np("main"),[i,s]=np(""),a=Q([e.revision],async()=>{let[l,m]=await Promise.all([tp(),Ee(e.ctx.site)]);return{invite:l,site:m}});G(l=>{n==="main"&&(l==="r"?e.reload():l==="f"&&r("filter"))});let c=()=>{n==="main"?e.pop():r("main")};return Qe(X,{hints:n==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Qe(ee,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:m})=>{if(n==="filter")return Qe(z,{title:"\u7B5B\u9009\u5956\u52B1\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:iS,initial:i}],onCancel:c,onSubmit:y=>{s(y.type??""),r("main")}});let p=t-ce,d=sS(l.rewards),f=i===""?l.items:l.items.filter(y=>y.rewardType===i),S=y=>en(2,t)+W+lt+y+2+W+lt+y+d.length+W+lt+y,b=o-S(Fe)>=op?Fe:0,h=Math.max(op,o-S(b));return Ui(Fi,{flexDirection:"column",children:[Qe(it,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Se(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:ae(l.totalReward,m.quotaPerUsd)}]}),Qe(Fi,{marginTop:1,flexDirection:"column",children:Ui(te,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:b,children:[Ui(Hn,{wrap:"truncate",children:[Qe(Hn,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Qe(Hn,{color:u.accent,children:l.inviteCode})]}),Ui(Hn,{wrap:"truncate",children:[Qe(Hn,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Qe(Hn,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Qe(Fi,{marginTop:1,flexDirection:"column",children:Qe(te,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:b,children:d.map((y,x)=>Qe(Hn,{wrap:"truncate",color:u.mutedForeground,children:y},x))})}),Qe(Fi,{marginTop:1,flexDirection:"column",children:Qe(te,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:_r(i),width:t,gap:b,children:Qe(Re,{retain:"list",items:f,width:p,height:h,columns:[{label:"\u65F6\u95F4"},{label:"\u597D\u53CB",shrink:!0},{label:"\u5956\u52B1\u7C7B\u578B"},{label:"\u5956\u52B1\u989D\u5EA6",align:"right"}],row:y=>{let x=y.rewardQuota-y.rewardQuotaReversed,k=y.rewardQuotaReversed>0?`\u9000\u6B3E\u51B2\u51CF -${ae(y.rewardQuotaReversed,m.quotaPerUsd)}`:"";return[V(y.createdAt),y.rewardType==="first_invitee"?y.inviterUsername:y.inviteeUsername,_r(y.rewardType),Be([ae(x,m.quotaPerUsd),k])]},emptyLabel:i===""?"\u6682\u65E0\u5956\u52B1\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u597D\u53CB\u901A\u8FC7\u4F60\u7684\u9080\u8BF7\u7801\u6CE8\u518C\u5E76\u5B8C\u6210\u5145\u503C\u540E\uFF0C\u5956\u52B1\u4F1A\u663E\u793A\u5728\u8FD9\u91CC":void 0})})})]})}})})}import{useState as bp}from"react";import{z as ye}from"zod";var aS=12e4,cS=ye.object({id:ye.number().int(),orderNo:ye.string(),amountCny:ye.number().int()}),ip=()=>M(ye.array(cS),"/invoices/eligible-orders"),sp=ye.object({id:ye.number().int(),type:Zi,title:ye.string(),taxId:ye.string().nullable(),invoiceNo:ye.string().nullable(),remark:ye.string().nullable(),amountCny:ye.number().int(),status:oc,rejectReason:ye.string().nullable(),rejectedAt:ye.string().nullable(),issuedAt:ye.string().nullable(),createdAt:ye.string()}),lS=sp.extend({hasFile:ye.boolean(),orders:ye.array(ye.object({orderNo:ye.string(),amountCny:ye.number().int()}))}),ap=()=>M(ye.array(sp),"/invoices"),cp=e=>M(lS,`/invoices/${e}`),lp=e=>M(me,"/invoices",{method:"POST",json:e}),up=e=>Ir(`/invoices/${e}/file`,{timeoutMs:aS}),uS=ye.object({id:ye.number().int(),type:Zi,title:ye.string(),taxId:ye.string().nullable()}),ji=()=>M(ye.array(uS),"/invoices/profiles"),mp=e=>M(me,"/invoices/profiles",{method:"POST",json:e}),dp=(e,t)=>M(me,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),pp=e=>M(me,`/invoices/profiles/${e}`,{method:"DELETE"});import{Box as mS,Text as qn,useInput as dS}from"ink";import{useEffect as pS,useState as fS}from"react";import{jsx as ur,jsxs as Oa}from"react/jsx-runtime";var gS="[x]",hS="[ ]",fp=4,Hi=2,gp=2;function hp({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[m,p]=fS(0),d=Math.max(1,c-1),f=e.length>d?Math.max(1,d-1):d;pS(()=>{p(g=>Math.min(g,Math.max(0,e.length-1)))},[e.length]);let S=Ds(m,f),b=g=>{e.length!==0&&p(w=>(w+g+e.length)%e.length)};dS((g,w)=>{if(w.upArrow){b(-1);return}if(w.downArrow){b(1);return}if(w.return){s();return}g===" "&&e.length>0&&r(m)}),G(g=>{if(g==="k"){b(-1);return}if(g==="j"){b(1);return}g==="a"&&i()});let h=g=>{let w=S+g-1;return w>=0&&w<e.length?w:null},y=He({onWheel:b,onClick:({row:g})=>{let w=h(g);w!==null&&(p(w),r(w))},onHover:({row:g})=>{let w=h(g);w!==null&&p(w)}}),x=Vs(t,e.map(g=>o(g)),a-Hi-fp),k=e.slice(S,S+f);return Oa(mS,{ref:y,flexDirection:"column",children:[Oa(qn,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Hi+fp),t.map((g,w)=>g.align==="right"?fn(g.label,x[w]??0):Le(g.label,x[w]??0)).join(" ".repeat(gp))]}),e.length===0?ur(qn,{color:u.faintForeground,children:`${" ".repeat(Hi)}${l}`}):k.map((g,w)=>{let P=S+w,$=P===m,U=n.has(P),T=$?u.accent:u.foreground,N=o(g);return Oa(qn,{wrap:"truncate",children:[ur(qn,{color:u.accent,children:$?`${Z.cursor} `:" "}),ur(qn,{color:U?u.accent:T,bold:$,children:`${U?gS:hS} `}),t.map((_,v)=>{let C=_.align==="right"?fn(N[v]??"",x[v]??0):Le(N[v]??"",x[v]??0);return ur(qn,{color:T,bold:$,children:v>0?`${" ".repeat(gp)}${C}`:C},_.label)})]},P)}),(S>0||S+f<e.length)&&ur(qn,{color:u.faintForeground,children:`${" ".repeat(Hi)}${S+1}-${Math.min(S+f,e.length)} / ${e.length}`})]})}import{jsx as xo}from"react/jsx-runtime";function yp(){let e=B(),{width:t}=j(),o=ne(),[n,r]=bp({name:"pick"}),[i,s]=bp(new Set),{busy:a,error:c,reset:l,run:m}=de(),p=Q([e.revision],async()=>{let[S,b]=await Promise.all([ip(),ji()]);return{orders:S,profiles:b}});G(S=>{n.name==="pick"&&S==="r"&&e.reload()});let d=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"preset"}))},f=(S,b,h)=>{let y=(h.remark??"").trim(),x=S.filter(k=>i.has(k.id)).map(k=>k.id);m("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>lp({orderIds:x,type:b.type,title:b.title,taxId:b.taxId,remark:y===""?null:y}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return xo(X,{trail:["\u53D1\u7968\u7BA1\u7406","\u7533\u8BF7\u5F00\u7968"],hints:n.name==="pick"?["\u2191\u2193 \u79FB\u52A8","Space \u52FE\u9009","a \u5168\u9009","Enter \u4E0B\u4E00\u6B65","r \u5237\u65B0"]:[],onEscape:d,children:xo(ee,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:S,profiles:b})=>{if(n.name==="pick")return S.length===0?xo(he,{tone:"info",width:t,title:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355",detail:"\u5B8C\u6210\u5145\u503C\u5E76\u652F\u4ED8\u540E\uFF0C\u8BA2\u5355\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}):xo(hp,{items:S,width:t,height:o,columns:[{label:"\u8BA2\u5355\u53F7",shrink:!0},{label:"\u91D1\u989D",align:"right"}],row:h=>[h.orderNo,be(h.amountCny)],selected:new Set(S.flatMap((h,y)=>i.has(h.id)?[y]:[])),onToggle:h=>{let y=S[h]?.id;y!==void 0&&s(x=>{let k=new Set(x);return k.has(y)?k.delete(y):k.add(y),k})},onToggleAll:()=>s(h=>S.every(y=>h.has(y.id))?new Set:new Set(S.map(y=>y.id))),onSubmit:()=>{if(!S.some(h=>i.has(h.id))){e.toast("warn","\u8BF7\u5148\u52FE\u9009\u8981\u5F00\u7968\u7684\u8BA2\u5355");return}if(b.length===0){e.toast("warn","\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F\uFF0C\u8FD4\u56DE\u540E\u6309 p \u65B0\u589E");return}r({name:"preset"})},emptyLabel:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355"});if(n.name==="preset"){let h=[{heading:"\u5E38\u7528\u4FE1\u606F"},...b.map(y=>({value:y,label:`${An(y.type)} \xB7 ${y.title}`,hint:y.taxId??void 0}))];return xo(ie,{items:h,width:t,height:o,onSelect:y=>r({name:"remark",profile:y})})}return xo(z,{title:"\u7533\u8BF7\u5F00\u7968 \u2014 \u5907\u6CE8",width:t,submitLabel:"\u63D0\u4EA4\u7533\u8BF7",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[{kind:"textarea",name:"remark",label:"\u5907\u6CE8",rows:2,maxLength:200,placeholder:"\u5C55\u793A\u5728\u53D1\u7968\u7968\u9762\u5907\u6CE8\u680F\u7684\u5185\u5BB9",optional:!0}],onCancel:d,onSubmit:h=>f(S,n.profile,h)})}})})}import{Box as $a}from"ink";import{useState as bS}from"react";function Sp(e,t){let o=e.type??"general",n=(e.title??"").trim(),r=(e.taxId??"").trim();return n===""?(t("\u8BF7\u8F93\u5165\u62AC\u5934"),null):o==="special"&&r===""?(t("\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968\u9700\u586B\u5199\u7A0E\u53F7"),null):{type:o,title:n,taxId:r===""?null:r}}var xp=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:Oo("general")},{value:"special",label:Oo("special")}],initial:e?.type??"general"},{kind:"text",name:"title",label:"\u62AC\u5934",initial:e?.title??"",placeholder:"\u4E2A\u4EBA\u6216\u5355\u4F4D\u540D\u79F0"},{kind:"text",name:"taxId",label:"\u7A0E\u53F7",initial:e?.taxId??"",placeholder:"\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",optional:t=>t.type!=="special"}];import{jsx as sn,jsxs as Tp}from"react/jsx-runtime";var yS=8,SS=3;function wp(){let e=B(),{width:t}=j(),o=ne(),[n,r]=bS({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=de(),m=Q([e.revision],ji),p=i!==null,d=n.name==="list"&&!p;G(S=>{S==="r"?e.reload():S==="n"&&r({name:"create"})},d);let f=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return sn(X,{trail:["\u53D1\u7968\u7BA1\u7406","\u5E38\u7528\u4FE1\u606F"],hints:d?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","r \u5237\u65B0"]:[],onEscape:f,children:sn(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:S=>{let b=n.name==="list"?o:Math.max(SS,o-yS);return Tp($a,{flexDirection:"column",children:[sn($a,{marginBottom:n.name==="list"?0:1,children:sn(Re,{retain:"list",items:S,width:t,height:b,isActive:d,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"}],row:h=>[An(h.type),h.title,h.taxId??"\u2014"],onOpen:h=>r({name:"actions",profile:h}),emptyLabel:"\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F",emptyDescription:"\u6309 n \u4FDD\u5B58\u4E00\u6761\u5E38\u7528\u5F00\u7968\u4FE1\u606F"})}),n.name==="actions"&&!p&&Tp(te,{title:n.profile.title,width:t,children:[sn(Ne,{width:t-ce,items:[["\u7C7B\u578B",Oo(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"]]}),sn($a,{marginTop:1,children:sn(ie,{width:t-ce,items:[{value:"edit",label:"\u7F16\u8F91"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:h=>{a(),r(h==="edit"?{name:"edit",profile:n.profile}:{name:"confirm-delete",profile:n.profile})}})})]}),(n.name==="create"||n.name==="edit")&&sn(z,{title:n.name==="create"?"\u65B0\u589E\u5E38\u7528\u4FE1\u606F":`\u7F16\u8F91\u5E38\u7528\u4FE1\u606F \u2014 ${n.profile.title}`,width:t,submitLabel:"\u4FDD\u5B58",busy:p,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:xp(n.name==="edit"?n.profile:null),onCancel:f,onSubmit:h=>{let y=Sp(h,c);if(y===null)return;let x=n.name==="edit"?()=>dp(n.profile.id,y):()=>mp(y);l("\u6B63\u5728\u4FDD\u5B58",x,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&sn(ze,{width:t,title:"\u5220\u9664\u5E38\u7528\u5F00\u7968\u4FE1\u606F",detail:`\u786E\u8BA4\u5220\u9664\u300C${n.profile.title}\u300D\uFF1F`,confirmLabel:"\u5220\u9664",busy:i,error:s,onConfirm:()=>l("\u6B63\u5728\u5220\u9664",()=>pp(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:f})]})}})})}import{Box as mr,Text as To}from"ink";import{useState as Da}from"react";import{jsx as Ue,jsxs as kp}from"react/jsx-runtime";var xS=Ze(Qi,kr,"\u5168\u90E8\u72B6\u6001");function TS({id:e,width:t}){let o=B(),n=Q([e,o.revision],()=>cp(e)),r=t-ce,[i,s]=Da(null),[a,c]=Da(null),l=n.phase==="ready"?n.data:null;return G(m=>{if(m!=="d"||l===null||a!==null)return;let p=l.invoiceNo;!l.hasFile||p===null||(s(null),c(p))}),Ue(ee,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:m=>{if(a!==null)return Ue(gi,{title:"\u4FDD\u5B58\u53D1\u7968\u6587\u4EF6",width:t,fileName:`\u53D1\u7968-${a}.pdf`,download:()=>up(m.id),onCancel:()=>c(null),onSaved:S=>{c(null),s(S),o.toast("ok","\u53D1\u7968\u5DF2\u4FDD\u5B58")}});let p=kr(m.status),d=Ve(p),f=[["\u62AC\u5934",m.title],...m.taxId===null?[]:[["\u7A0E\u53F7",m.taxId]],...m.invoiceNo===null?[]:[["\u53D1\u7968\u53F7\u7801",m.invoiceNo]],...m.remark===null?[]:[["\u5907\u6CE8",m.remark]],["\u7533\u8BF7\u65F6\u95F4",V(m.createdAt)],...m.rejectReason===null?[]:[["\u9A73\u56DE\u539F\u56E0",m.rejectReason]],...m.rejectedAt===null?[]:[["\u9A73\u56DE\u65F6\u95F4",V(m.rejectedAt)]],...m.issuedAt===null?[]:[["\u5F00\u7968\u65F6\u95F4",V(m.issuedAt)]]];return kp(te,{title:m.title,note:V(m.createdAt),width:t,children:[kp(To,{wrap:"truncate",children:[Ue(To,{color:u.mutedForeground,children:An(m.type)}),Ue(To,{color:d===void 0?u.mutedForeground:De[d],children:` ${p.label}`})]}),Ue(mr,{marginTop:1,children:Ue(it,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:be(m.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${m.orders.length} \u7B14`}]})}),Ue(mr,{marginTop:1,children:Ue(Ne,{width:r,items:f})}),Ue(mr,{marginTop:1,flexDirection:"column",children:m.orders.map(S=>Ue(To,{wrap:"truncate",color:u.faintForeground,children:Be([S.orderNo,be(S.amountCny)])},S.orderNo))}),m.hasFile&&i===null&&Ue(mr,{marginTop:1,children:Ue(To,{wrap:"truncate",color:u.faintForeground,children:"\u6309 d \u4E0B\u8F7D\u53D1\u7968\u6587\u4EF6"})}),i!==null&&Ue(mr,{marginTop:1,children:Ue(To,{wrap:"truncate",color:u.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${i}`})})]})}})}function vp(){let e=B(),{width:t}=j(),o=ne(),[n,r]=Da({name:"list"}),[i,s]=Xe("status",()=>""),a=Q([e.revision],ap);G(l=>{n.name==="list"&&(l==="r"?e.reload():l==="f"?r({name:"filter"}):l==="n"?e.push("invoice-apply"):l==="p"&&e.push("invoice-profiles"))});let c=()=>{n.name==="list"?e.pop():r({name:"list"})};return Ue(X,{hints:n.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","n \u7533\u8BF7\u5F00\u7968","p \u5E38\u7528\u4FE1\u606F","f \u7B5B\u9009","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Ue(ee,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return Ue(z,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:xS,initial:i}],onCancel:c,onSubmit:p=>{s(p.status??""),r({name:"list"})}});if(n.name==="detail")return Ue(TS,{id:n.id,width:t});let m=i===""?l:l.filter(p=>p.status===i);return Ue(Re,{retain:"list",items:m,width:t,height:o,columns:[{label:"\u65F6\u95F4"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7C7B\u578B"},{label:"\u91D1\u989D",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:p=>[V(p.createdAt),p.title,An(p.type),be(p.amountCny),Yt(kr(p.status))],searchOf:p=>p.title,onOpen:p=>r({name:"detail",id:p.id}),emptyLabel:i===""?"\u6682\u65E0\u5F00\u7968\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u6309 n \u4E3A\u5DF2\u4ED8\u6B3E\u8BA2\u5355\u7533\u8BF7\u5F00\u7968":void 0})}})})}import{Box as wS}from"ink";import{useState as _p}from"react";import{jsx as wo,jsxs as vS}from"react/jsx-runtime";var kS=Ze(es,Ss,"\u5168\u90E8\u7C7B\u578B");function Rp(){let e=B(),{width:t}=j(),o=ne(),[n,r]=_p("list"),[i,s]=_p(""),a=Q([e.revision],()=>Ee(e.ctx.site)),c=bn([e.revision,i],p=>Mm({page:p,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";G((p,d)=>{l&&(p==="r"?e.reload():p==="f"?r("filter"):d.leftArrow?c.go(-1):d.rightArrow&&c.go(1))});let m=()=>{n==="list"?e.pop():r("list")};return wo(X,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:m,children:wo(ee,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:p=>n==="filter"?wo(z,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:kS,initial:i}],onCancel:m,onSubmit:d=>{s(d.type??""),c.reset(),r("list")}}):wo(ee,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:d=>vS(wS,{flexDirection:"column",children:[wo(Re,{retain:"list",items:d.items,width:t,height:Math.max(3,o-1),columns:[{label:"\u65F6\u95F4"},{label:"\u7C7B\u578B"},{label:"\u53D8\u52A8",align:"right"},{label:"\u4F59\u989D",align:"right"},{label:"\u6765\u6E90",align:"right"}],row:f=>{let S=no(f.amount,p.quotaPerUsd);return[V(f.createdAt),Ss(f.type),{text:f.amount>=0?`+${S}`:S,tone:f.amount>=0?"success":"danger"},ae(f.balanceAfter,p.quotaPerUsd),Be([zc(f.refType),f.refId??""])]},emptyLabel:i===""?"\u6682\u65E0\u989D\u5EA6\u6D41\u6C34":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u5145\u503C\u6216\u6D88\u8017\u540E\uFF0C\u6BCF\u7B14\u53D8\u52A8\u4F1A\u8BB0\u5F55\u5728\u8FD9\u91CC":void 0}),wo(yn,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as Ip}from"ink";import{useState as RS}from"react";import{z as _S}from"zod";var dr={recharge:"/recharge",subscription:"/subscriptions"};async function qi(e,t){let o=`${dr[e]}/orders/${t}`;return e==="recharge"?{kind:e,...await M(Eo,o)}:{kind:e,...await M(Ao,o)}}async function Pp(e,t){let o=`${dr[e]}/orders/${t}/pay`;if(e==="recharge"){let{order:i,qrCode:s}=await M(Sr,o,{method:"POST"});return{order:{kind:e,...i},qrCode:s}}let{order:n,qrCode:r}=await M(No,o,{method:"POST"});return{order:{kind:e,...n},qrCode:r}}var Cp=(e,t)=>M(_S.array(Rc),`${dr[e]}/orders/${t}/refunds`),Ep=(e,t,o)=>M(me,`${dr[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}),Ap=(e,t)=>M(me,`${dr[e]}/orders/${t}/refund-request/cancel`,{method:"POST"});import{Box as Wi,Text as Gt}from"ink";import{jsx as vt,jsxs as pr}from"react/jsx-runtime";function Np({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-ce,i=dn(e.status),s=Ve(i),a=[["\u521B\u5EFA\u65F6\u95F4",V(e.createdAt)]];return e.succeededRefundCny>0&&a.push(["\u5DF2\u9000\u91D1\u989D",be(e.succeededRefundCny)]),e.kind==="recharge"&&e.refundedQuota>0&&a.push(["\u6263\u56DE\u989D\u5EA6",ae(e.refundedQuota,o)]),e.pendingRefundCny>0&&a.push(["\u5F85\u786E\u8BA4\u9000\u6B3E",be(e.pendingRefundCny)]),pr(te,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[pr(Gt,{wrap:"truncate",children:[vt(Gt,{color:s===void 0?u.mutedForeground:De[s],children:i.label}),e.kind==="subscription"&&vt(Gt,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),vt(Wi,{marginTop:1,children:vt(it,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:be(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:ae(e.quota,o)}]:[{label:"\u91D1\u989D",value:be(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),vt(Wi,{marginTop:1,children:vt(Ne,{width:r,items:a})}),t!==null&&pr(Wi,{marginTop:1,flexDirection:"column",children:[vt(Gt,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?vt(Gt,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=Kc(c.status),m=Ve(l);return pr(Wi,{flexDirection:"column",children:[pr(Gt,{wrap:"truncate",children:[vt(Gt,{color:u.foreground,children:be(c.amountCny)}),vt(Gt,{color:m===void 0?u.mutedForeground:De[m],children:` ${l.label}`}),vt(Gt,{color:u.faintForeground,children:` ${V(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&vt(Gt,{wrap:"truncate",color:u.faintForeground,children:` ${Be([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as Wn,jsxs as CS}from"react/jsx-runtime";var PS=new Set(["pending","expired","failed"]);function Gi(e){let t=dn(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${be(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:Ve(t)}}function ko(e,t,o){return e.kind==="recharge"?{kind:"recharge",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`\u5230\u8D26\u989D\u5EA6 ${ae(e.quota,o)}`],paidMessage:"\u5145\u503C\u6210\u529F\uFF01",paidNote:"\u4F59\u989D\u5DF2\u5230\u8D26",expiredNote:"\u82E5\u5DF2\u5B8C\u6210\u4ED8\u6B3E\uFF0C\u4F59\u989D\u4F1A\u81EA\u52A8\u5230\u8D26\uFF0C\u8BF7\u52FF\u91CD\u590D\u5145\u503C\uFF1B\u53EF\u5728\u300C\u5145\u503C\u8BB0\u5F55\u300D\u4E2D\u67E5\u770B"}:{kind:"subscription",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`${e.planName} \xB7 ${e.grantedDurationDays} \u5929`],paidMessage:"\u8BA2\u9605\u5DF2\u751F\u6548\uFF01",paidNote:"\u8BA2\u9605\u5DF2\u751F\u6548",expiredNote:"\u82E5\u5DF2\u5B8C\u6210\u4ED8\u6B3E\uFF0C\u8BA2\u9605\u4F1A\u81EA\u52A8\u751F\u6548\uFF0C\u8BF7\u52FF\u91CD\u590D\u8D2D\u4E70\uFF1B\u53EF\u5728\u300C\u8BA2\u9605\u8BA2\u5355\u300D\u4E2D\u67E5\u770B"}}function Lp({params:e}){let t=B(),{width:o}=j(),[n,r]=RS("main"),{busy:i,error:s,reset:a,fail:c,run:l}=de(),m=Q([e.kind,e.orderNo,t.revision],async()=>{let[b,h]=await Promise.all([qi(e.kind,e.orderNo),Ee(t.ctx.site)]),y=PS.has(b.status)?null:await Cp(e.kind,e.orderNo);return{order:b,refunds:y,site:h}});G(b=>{n==="main"&&i===null&&b==="r"&&t.reload()});let p=()=>{n==="main"?t.pop():(a(),r("main"))},d=b=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>Pp(e.kind,e.orderNo),{onSuccess:({order:h,qrCode:y})=>{t.push("pay",ko(h,y,b.quotaPerUsd))}})},f=b=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>Ep(e.kind,e.orderNo,b),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7")}})},S=()=>{l("\u6B63\u5728\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",()=>Ap(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return Wn(X,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:p,children:Wn(ee,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:b,refunds:h,site:y})=>{if(n==="refund")return Wn(z,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${b.orderNo}`,width:o,submitLabel:"\u63D0\u4EA4\u7533\u8BF7",busy:i!==null,busyLabel:i??"\u6B63\u5728\u63D0\u4EA4",error:s,fields:[{kind:"select",name:"reason",label:"\u9000\u6B3E\u539F\u56E0",options:[..._s[e.kind].map(k=>({value:k,label:k})),{value:"other",label:"\u5176\u4ED6"}],initial:_s[e.kind][0],hint:el[e.kind]},{kind:"textarea",name:"custom",label:"\u5177\u4F53\u8BF4\u660E",rows:3,maxLength:256,placeholder:"\u8BF4\u660E\u7533\u8BF7\u9000\u6B3E\u7684\u539F\u56E0",hint:"\u4EC5\u9000\u6B3E\u539F\u56E0\u9009\u300C\u5176\u4ED6\u300D\u65F6\u5FC5\u586B"}],onCancel:p,onSubmit:k=>{let g=k.reason??"",w=g==="other"?(k.custom??"").trim():g;if(w===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}f(w)}});if(n==="confirm-cancel")return Wn(ze,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${b.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${b.kind==="recharge"?"\u6536\u56DE\u7684\u989D\u5EA6":"\u51BB\u7ED3\u7684\u8BA2\u9605\u65F6\u957F"}\u5C06\u7ACB\u5373\u6062\u590D`,confirmLabel:"\u64A4\u9500\u7533\u8BF7",busy:i,error:s,onConfirm:S,onCancel:p});let x=[];return b.status==="pending"&&x.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),b.status==="refund_requested"&&x.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),Pc(b)&&x.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),CS(Ip,{flexDirection:"column",children:[Wn(Np,{order:b,refunds:h,quotaPerUsd:y.quotaPerUsd,width:o}),x.length>0&&i===null&&Wn(Ip,{marginTop:1,children:Wn(ie,{width:o,items:x,retain:"menu",onSelect:k=>{a(),k==="pay"?d(y):r(k==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as LS,useState as Up}from"react";import{spawn as ES}from"child_process";var AS={darwin:[{command:"pbcopy",args:[]}],win32:[{command:"clip",args:[]}],linux:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}]};function NS(e,t){return new Promise((o,n)=>{let r=ES(e.command,e.args,{stdio:["pipe","ignore","ignore"]});r.on("error",i=>{i.code==="ENOENT"?o(!1):n(new O(`\u6267\u884C ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))}),r.on("close",i=>{i===0?o(!0):n(new O(`${e.command} \u9000\u51FA\u7801 ${i??"null"}`))}),r.stdin.on("error",i=>n(new O(`\u5199\u5165 ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))),r.stdin.end(t)})}async function Mp(e){let t=AS[process.platform];if(t===void 0)throw new O(`\u5F53\u524D\u7CFB\u7EDF\u4E0D\u652F\u6301\u5199\u5165\u526A\u8D34\u677F\uFF08${process.platform}\uFF09`);for(let o of t)if(await NS(o,e))return;throw new O("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Box as Op,Text as Gn}from"ink";import{Fragment as IS,jsx as ft,jsxs as $p}from"react/jsx-runtime";var Dp={columns:20,rows:2};function Bp(e,t,o){return ci(e,t,Dp,o)}function Fp({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?ft(tt,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):ft(Gn,{wrap:"truncate",color:De.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return ft(he,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return ft(he,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return $p(Op,{flexDirection:"column",children:[ft(he,{tone:"warn",width:a,title:"\u7EC8\u7AEF\u5C3A\u5BF8\u4E0D\u8DB3\uFF0C\u65E0\u6CD5\u7ED8\u5236\u4E8C\u7EF4\u7801",detail:`\u653E\u5927\u5230 ${c.target.columns} \xD7 ${c.target.rows} \u53EF\u663E\u793A\u4E8C\u7EF4\u7801\uFF0C\u6216\u6309 c \u590D\u5236\u4ED8\u6B3E\u94FE\u63A5`}),ft(Gn,{color:u.accent,children:t}),ft(Op,{marginTop:1,children:ft(Gn,{bold:!0,color:u.foreground,children:be(o)})}),l]});let m=c.asideRows-Dp.rows,p=m>=1,d=m>=2,f=m>=2+n.length;return ft(li,{value:t,aside:$p(IS,{children:[d&&ft(Gn,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),ft(Gn,{bold:!0,color:u.foreground,children:be(o)}),p&&ft(Gn,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),f&&n.map((S,b)=>ft(Gn,{wrap:"truncate",color:u.mutedForeground,children:S},b)),l]})})}import{jsx as jp}from"react/jsx-runtime";var MS=5,OS=2e3;function Hp({params:e}){let t=B(),{width:o,columns:n,rows:r}=j(),i=Qo(0),[s,a]=Up("waiting"),[c,l]=Up(null),m=LS(0);hi(OS,async()=>{let f;try{f=await qi(e.kind,e.orderNo)}catch(S){l(ve(S));return}if(l(null),f.status==="paid"||f.credited){a("paid"),t.toast("ok",e.paidMessage);return}if(f.status==="expired"||f.status==="failed"){m.current+=1,m.current>=MS&&a("expired");return}m.current=0},s==="waiting"),G(f=>{f!=="c"||s!=="waiting"||Mp(e.qrCode).then(()=>t.toast("ok","\u5DF2\u590D\u5236"),()=>t.toast("fail","\u590D\u5236\u5931\u8D25\uFF0C\u53EF\u7528 Option / Alt \u62D6\u9009\u590D\u5236"))});let p=Bp(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),d=s==="waiting"&&p.fits;return jp(X,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:d,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:jp(Fp,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:p})})}import{useState as DS}from"react";import{z as an}from"zod";var $S=an.object({id:an.number().int(),name:an.string(),originalCny:an.number().int(),discountPercent:an.number().int(),payCny:an.number().int(),quota:an.number()}),qp=()=>M(an.array($S),"/recharge-packages"),Wp=e=>M(Sr,"/recharge/orders",{method:"POST",json:e}),Gp=()=>M(an.array(Eo),"/recharge/orders");import{jsx as vo}from"react/jsx-runtime";var BS=Ze(Ro,dn,"\u5168\u90E8\u72B6\u6001");function FS(e,t){let o=e.discountPercent<100?`\uFF08\u539F\u4EF7 ${be(e.originalCny)} \xB7 ${e.discountPercent/10} \u6298\uFF09`:"";return`${be(e.payCny)}${o} \xB7 \u5230\u8D26\u989D\u5EA6 ${ae(e.quota,t)}`}function zp(){let e=B(),{width:t}=j(),o=ne(),[n,r]=DS({name:"menu"}),[i,s]=Xe("status",()=>""),{busy:a,error:c,reset:l,fail:m,run:p}=de(),d=Q([e.revision],async()=>{let[b,h,y]=await Promise.all([qp(),Ei(e.ctx.site),Gp()]);return{packages:b,pricing:h,orders:y}});G(b=>{n.name==="menu"&&(b==="r"?e.reload():b==="f"&&r({name:"filter"}))});let f=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},S=(b,h)=>{p("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Wp(b),{onSuccess:({order:y,qrCode:x})=>{r({name:"menu"}),e.push("pay",ko({kind:"recharge",...y},x,h))}})};return vo(X,{hints:n.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BB0\u5F55","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:f,children:vo(ee,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:b,pricing:h,orders:y})=>{if(n.name==="confirm")return vo(ze,{width:t,title:`\u786E\u8BA4\u5145\u503C ${be(n.pkg.payCny)}\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>S({packageId:n.pkg.id},h.quotaPerUsd),onCancel:f});if(n.name==="custom")return vo(z,{title:"\u81EA\u5B9A\u4E49\u91D1\u989D\u5145\u503C",width:t,submitLabel:"\u53BB\u652F\u4ED8",busy:a!==null,busyLabel:a??"\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",error:c,fields:[{kind:"text",name:"yuan",label:"\u5145\u503C\u91D1\u989D\uFF08\u5143\uFF09",placeholder:"\u8BF7\u8F93\u5165\u91D1\u989D",hint:`\u6700\u4F4E ${h.minTopupCny} \u5143 \xB7 \u5230\u8D26\u989D\u5EA6\u6309\u5145\u503C\u6C47\u7387\u6298\u7B97`}],onCancel:f,onSubmit:g=>{let w=Number((g.yuan??"").trim()),P=ws(w);if(!Number.isFinite(w)||P<ws(h.minTopupCny)||P>as){m(`\u8BF7\u8F93\u5165 ${h.minTopupCny} \u5230 ${Yc(as)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}S({amountCny:P},h.quotaPerUsd)}});if(n.name==="filter")return vo(z,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:BS,initial:i}],onCancel:f,onSubmit:g=>{s(g.status??""),r({name:"menu"})}});let x=i===""?y:y.filter(g=>g.status===i),k=[{heading:"\u5145\u503C\u5957\u9910"},...b.map(g=>({value:{kind:"pkg",pkg:g},label:g.name,hint:FS(g,h.quotaPerUsd)})),{value:{kind:"custom"},label:"\u81EA\u5B9A\u4E49\u91D1\u989D",hint:"\u8F93\u5165\u4EFB\u610F\u91D1\u989D\u5145\u503C"},{heading:""},{heading:"\u5145\u503C\u8BB0\u5F55"},...x.length===0?[{value:{kind:"none"},label:i===""?"\u6682\u65E0\u5145\u503C\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",...i===""?{hint:"\u9009\u62E9\u4E0A\u65B9\u5957\u9910\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u91D1\u989D\u5373\u53EF\u5145\u503C"}:{},disabled:!0}]:x.map(g=>({value:{kind:"order",orderNo:g.orderNo},label:be(g.amountCny),...Gi(g),hint:`${V(g.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${ae(g.quota,h.quotaPerUsd)}`}))];return vo(ie,{items:k,width:t,height:o,retain:"menu",onSelect:g=>{l(),g.kind==="custom"?r({name:"custom"}):g.kind==="order"?e.push("order",{kind:"recharge",orderNo:g.orderNo}):g.kind==="pkg"&&r({name:"confirm",pkg:g.pkg})}})}})})}import{Box as cn,Text as fr}from"ink";import{useState as qS}from"react";import WS from"string-width";import{z as se}from"zod";var US=se.object({windowId:se.number().int(),durationMinutes:se.number().int(),quota:se.number(),used:se.number(),resetAt:se.string()}),jS=se.object({billingPreference:Xi,subscriptions:se.array(se.object({id:se.number().int(),planName:se.string(),groupNames:se.array(se.string()),startsAt:se.string(),expiresAt:se.string(),revokedAt:se.string().nullable(),renewable:se.boolean(),windows:se.array(US)}))}),Kp=()=>M(jS,"/subscriptions"),HS=se.object({id:se.number().int(),name:se.string(),description:se.string().nullable(),priceCny:se.number().int(),durationDays:se.number().int(),enabled:se.boolean(),groupNames:se.array(se.string()),windows:se.array(se.object({durationMinutes:se.number().int(),quota:se.number()}))}),Vp=()=>M(se.array(HS),"/subscription-plans"),Jp=e=>M(No,"/subscriptions/orders",{method:"POST",json:e}),Yp=e=>M(No,`/subscriptions/${e}/renew`,{method:"POST"}),Xp=()=>M(se.array(Ao),"/subscriptions/orders"),Qp=e=>M(se.object({billingPreference:Xi}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as Pe,jsxs as zn}from"react/jsx-runtime";var GS=Ze(Ro,dn,"\u5168\u90E8\u72B6\u6001");function zS(e,t,o){if(e.name==="sub"||e.name==="confirm-renew"){let n=t.find(r=>r.id===e.id);return n===void 0?{kind:"missing-sub"}:{kind:"sub",sub:n,confirm:e.name==="confirm-renew"}}if(e.name==="plan"||e.name==="confirm-buy"){let n=o.find(r=>r.id===e.id);return n===void 0?{kind:"missing-plan"}:{kind:"plan",plan:n,confirm:e.name==="confirm-buy"}}return{kind:"none"}}var KS=3;function VS({win:e,quotaPerUsd:t,width:o}){let n=ks(e),r=Qc(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${Z.bullet} ${ae(e.used,t)} / ${ae(e.quota,t)}`;return zn(cn,{flexDirection:"column",children:[zn(fr,{wrap:"truncate",children:[Pe(fr,{color:u.foreground,children:r}),Pe(fr,{color:n>=100?u.danger:u.mutedForeground,children:fn(i,Math.max(0,o-WS(r)))})]}),Pe(Xu,{used:e.used,total:e.quota,width:o}),Pe(fr,{wrap:"truncate",color:u.faintForeground,children:`\u5C06\u4E8E ${V(e.resetAt)} \u91CD\u7F6E`})]})}function JS(e){if(e.revokedAt!==null)return`${V(e.revokedAt)} \u4F5C\u5E9F`;let t=`${V(e.expiresAt)} \u5230\u671F`;return`\u5DF2\u7528 ${Math.max(...e.windows.map(ks))}% \xB7 ${t}`}function YS(e){let t=e.windows.length*4;return W+ut+2+t+(e.renewable?W+1:0)}function XS(e){let t=e.description!==null&&e.description!==""?1+Fe:0,o=Math.ceil((1+e.windows.length)/2);return W+ut+t+o+W+1}function Zp(){let e=B(),{width:t}=j(),o=ne(),[n,r]=qS({name:"menu"}),[i,s]=Xe("status",()=>""),{busy:a,error:c,reset:l,run:m}=de(),p=Q([e.revision],async()=>{let[h,y,x,k]=await Promise.all([Kp(),Vp(),Xp(),Ee(e.ctx.site)]);return{mine:h,plans:y,orders:x,site:k}});G(h=>{n.name!=="menu"||a!==null||(h==="r"?e.reload():h==="f"&&r({name:"filter"}))});let d=()=>{l(),n.name==="menu"?e.pop():n.name==="confirm-renew"?r({name:"sub",id:n.id}):n.name==="confirm-buy"?r({name:"plan",id:n.id}):r({name:"menu"})},f=h=>{m("\u6B63\u5728\u4FDD\u5B58\u504F\u597D",()=>Qp({billingPreference:h}),{onSuccess:()=>{r({name:"menu"}),e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},S=(h,y)=>{m("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>Yp(h.id),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",ko({kind:"subscription",...x},k,y.quotaPerUsd))}})},b=(h,y)=>{m("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Jp({planId:h.id}),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",ko({kind:"subscription",...x},k,y.quotaPerUsd))}})};return Pe(X,{hints:n.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BA2\u5355","r \u5237\u65B0"]:n.name==="sub"||n.name==="plan"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","Esc \u8FD4\u56DE"]:["Esc \u8FD4\u56DE"],onEscape:d,children:Pe(ee,{state:p,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:h,plans:y,orders:x,site:k})=>{if(n.name==="preference")return Pe(z,{title:"\u6263\u8D39\u65B9\u5F0F",width:t,submitLabel:"\u4FDD\u5B58",busy:a!==null,busyLabel:a??"\u6B63\u5728\u4FDD\u5B58",error:c,fields:[{kind:"select",name:"billingPreference",label:"\u6263\u8D39\u65B9\u5F0F",options:Gc,initial:h.billingPreference,hint:ys}],onCancel:d,onSubmit:v=>{f(v.billingPreference??h.billingPreference)}});if(n.name==="filter")return Pe(z,{title:"\u7B5B\u9009\u8BA2\u9605\u8BA2\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:GS,initial:i}],onCancel:d,onSubmit:v=>{s(v.status??""),r({name:"menu"})}});let g=zS(n,h.subscriptions,y);if(g.kind==="missing-sub")return Pe(he,{tone:"warn",width:t,title:"\u8BA2\u9605\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664",detail:"\u6309 Esc \u8FD4\u56DE"});if(g.kind==="missing-plan")return Pe(he,{tone:"warn",width:t,title:"\u5957\u9910\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u67B6",detail:"\u6309 Esc \u8FD4\u56DE"});if(g.kind==="sub"&&g.confirm)return Pe(ze,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${g.sub.planName}\u300D\uFF1F`,detail:"\u5C06\u6309\u5957\u9910\u5F53\u524D\u4EF7\u683C\u4E0E\u65F6\u957F\u5728\u5230\u671F\u65F6\u95F4\u4E0A\u987A\u5EF6",confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>S(g.sub,k),onCancel:d});if(g.kind==="plan"&&g.confirm)return Pe(ze,{width:t,title:`\u786E\u8BA4\u8BA2\u9605\u300C${g.plan.name}\u300D\uFF08${be(g.plan.priceCny)} / ${g.plan.durationDays} \u5929\uFF09\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>b(g.plan,k),onCancel:d});let w=g.kind==="plan"?g.plan.description:"",P=i===""?x:x.filter(v=>v.status===i),$=[{heading:"\u6211\u7684\u8BA2\u9605"},...h.subscriptions.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u8BA2\u9605",hint:"\u8BA2\u9605\u4E0B\u65B9\u5957\u9910\u540E\uFF0C\u8986\u76D6\u8303\u56F4\u5185\u7684\u8C03\u7528\u5C06\u6309\u6263\u8D39\u65B9\u5F0F\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6",disabled:!0}]:h.subscriptions.map(v=>{let C=vs(v);return{value:{kind:"sub",id:v.id},label:v.planName,badge:C.label,badgeTone:Ve(C),hint:JS(v)}}),{heading:""},{value:{kind:"preference"},label:"\u6263\u8D39\u65B9\u5F0F",badge:bs(h.billingPreference),badgeTone:"accent",hint:ys(h.billingPreference)},{heading:""},{heading:"\u53EF\u9009\u5957\u9910"},...y.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u53EF\u9009\u5957\u9910",hint:"\u8BA2\u9605\u5957\u9910\u4E0A\u67B6\u540E\u5C06\u663E\u793A\u5728\u8FD9\u91CC",disabled:!0}]:y.map(v=>({value:{kind:"plan",id:v.id},label:v.name,...v.enabled?{}:{badge:"\u5DF2\u505C\u552E",badgeTone:"warning"},hint:`${be(v.priceCny)} / ${v.durationDays} \u5929 \xB7 ${v.groupNames.join("\u3001")}`})),{heading:""},{heading:"\u8BA2\u9605\u8BA2\u5355"},...P.length===0?[{value:{kind:"none"},label:i===""?"\u6682\u65E0\u8BA2\u9605\u8BA2\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",...i===""?{hint:"\u8BA2\u9605\u4E0A\u65B9\u5957\u9910\u540E\uFF0C\u8BA2\u5355\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}:{},disabled:!0}]:P.map(v=>({value:{kind:"order",orderNo:v.orderNo},label:`${v.planName}${v.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,...Gi(v),hint:`${V(v.createdAt)} \xB7 ${be(v.amountCny)}`}))],U=g.kind==="sub"?YS(g.sub):g.kind==="plan"?XS(g.plan):0,T=U===0?o:o-U>=KS?o-U:0,N=t-ce,_=n.name==="menu"&&a===null;return zn(cn,{flexDirection:"column",children:[T>0&&Pe(ie,{items:$,width:t,height:T,isActive:_,retain:"menu",onSelect:v=>{l(),v.kind==="preference"?r({name:"preference"}):v.kind==="order"?e.push("order",{kind:"subscription",orderNo:v.orderNo}):v.kind==="sub"?r({name:"sub",id:v.id}):v.kind==="plan"&&r({name:"plan",id:v.id})}}),g.kind==="sub"&&zn(cn,{marginTop:T>0?W:0,flexDirection:"column",children:[zn(te,{title:g.sub.planName,note:g.sub.revokedAt!==null?`${V(g.sub.revokedAt)} \u4F5C\u5E9F`:`${V(g.sub.expiresAt)} \u5230\u671F`,width:t,children:[Pe(Ne,{width:N,items:[["\u72B6\u6001",vs(g.sub).label],["\u8986\u76D6\u5206\u7EC4",g.sub.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",V(g.sub.startsAt)]]}),Pe(cn,{marginTop:1,flexDirection:"column",children:g.sub.windows.map((v,C)=>Pe(cn,{marginTop:C===0?0:1,flexDirection:"column",children:Pe(VS,{win:v,quotaPerUsd:k.quotaPerUsd,width:N})},v.windowId))})]}),g.sub.renewable&&a===null&&Pe(cn,{marginTop:W,children:Pe(ie,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:g.sub.id})})})]}),g.kind==="plan"&&zn(cn,{marginTop:T>0?W:0,flexDirection:"column",children:[zn(te,{title:g.plan.name,note:`${be(g.plan.priceCny)} / ${g.plan.durationDays} \u5929`,width:t,children:[w!==""&&Pe(fr,{wrap:"truncate",color:u.mutedForeground,children:w}),Pe(cn,{marginTop:w===""?0:Fe,children:Pe(Ne,{width:N,items:[["\u8986\u76D6\u5206\u7EC4",g.plan.groupNames.join("\u3001")],...Zc(g.plan,k.quotaPerUsd).map((v,C)=>[C===0?"\u7528\u91CF\u7A97\u53E3":"",v])]})})]}),a===null&&Pe(cn,{marginTop:W,children:Pe(ie,{width:t,items:[{value:"subscribe",label:g.plan.enabled?"\u8BA2\u9605":"\u5DF2\u505C\u552E",disabled:!g.plan.enabled}],onSelect:()=>r({name:"confirm-buy",id:g.plan.id})})})]})]})}})})}import{jsx as Ce}from"react/jsx-runtime";var ef={home:{render:()=>Ce(ep,{})},help:{render:()=>Ce(Xd,{})},login:{render:()=>Ce(Cm,{})},register:{render:()=>Ce(Em,{})},forgot:{render:()=>Ce(vm,{})},agreement:{render:e=>Ce(ym,{params:e})},tokens:{render:()=>Ce(zd,{})},logs:{render:()=>Ce(Xm,{})},usage:{render:()=>Ce(Wm,{})},ledger:{render:()=>Ce(Rp,{})},subscription:{render:()=>Ce(Zp,{})},models:{render:()=>Ce(rd,{})},recharge:{render:()=>Ce(zp,{})},order:{render:e=>Ce(Lp,{params:e})},pay:{render:e=>Ce(Hp,{params:e})},invoices:{render:()=>Ce(vp,{})},"invoice-apply":{render:()=>Ce(yp,{})},"invoice-profiles":{render:()=>Ce(wp,{})},invite:{render:()=>Ce(rp,{})},tickets:{render:()=>Ce(bm,{})},ticket:{render:e=>Ce(hm,{params:e})},announcements:{render:()=>Ce(gu,{})},"announce-gate":{render:e=>Ce(mu,{params:e}),lockNav:!0},profile:{render:()=>Ce(tm,{})}};function tf(e){return ef[e].lockNav===!0}function nf(e){let t=ef[e.id].render;return t(e.params)}import{jsx as Kn,jsxs as ux}from"react/jsx-runtime";function nx(){let e=B(),{rows:t}=j(),o=Dr(),n=tf(e.current.id)||o,r=e.depth===1&&Ur(e.current.id)&&Ct().session===null;return Ba(()=>{r&&e.home()}),ex((i,s)=>{s.ctrl&&i==="c"&&e.exit()}),G(i=>{if(i==="?"){e.current.id==="help"?e.pop():n||e.push("help");return}i==="q"&&!n&&(e.depth>1?e.pop():e.exit())}),Kn(QS,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:nf(e.current)})}function ox(){let e=B(),t=Q([e.revision],async()=>{if(e.gate.announcementsChecked||Ct().session===null)return null;let o;try{o=await yl()}catch{return null}return e.gate.announcementsChecked=!0,o});return Ba(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function rx(){let e=B(),t=tx(!1);return Ba(()=>{t.current||(t.current=!0,hl().then(o=>{o!==null&&e.toast("ok",`\u5DF2\u66F4\u65B0\u5230 v${o}\uFF0C\u91CD\u542F\u540E\u751F\u6548`)}).catch(o=>e.toast("fail",`\u81EA\u52A8\u66F4\u65B0\u5931\u8D25\uFF1A${ve(o)}`)))}),null}function ix({ctx:e,mouse:t}){return Kn(Ll,{subscribe:t.subscribe,children:Kn(vl,{children:ux(Bl,{ctx:e,children:[Kn(rx,{}),Kn(ox,{}),Kn(nx,{})]})})})}var sx="\x1B[2J\x1B[3J\x1B[H",ax="\x1B[H\x1B[J",cx="\x1B[3J";function lx(e){return new Proxy(e,{get(t,o){if(o!=="write"){let n=Reflect.get(t,o,t);return typeof n=="function"?n.bind(t):n}return(...n)=>{let[r,...i]=n;if(typeof r!="string")return t.write(r,...i);let s=r.split(sx).join(ax).split(cx).join("");return t.write(s,...i)}}})}async function of(e){let t=Nl(process.stdin,process.stdout);try{await ZS(Kn(ix,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:lx(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var fx=`${gt} v${ht} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
25
+ `,i=o===""?[]:o.split(/\r?\n/);i.at(-1)===""&&i.pop();let s=new RegExp(`^\\s*(?:export\\s+)?${t}\\s*=`),a=i.findIndex(l=>s.test(l)),c=`${t}=${n}`;a===-1?i.push(c):i[a]=c,wn(e,`${i.join(r)}${r}`,384)}var am="custom:",cm=e=>wi(e.dir,"config.yaml"),iy=e=>wi(e.dir,".env"),Bn=e=>typeof e=="string"?e:null;function sy(e,t){try{return Qv(e)}catch(n){throw new j(`${t} \u4E0D\u662F\u5408\u6CD5 YAML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:n})}}function eR(e,t,n,o){let r=cm(t),i=Zv(Nt(r)??"",{compat:"yaml-1.1"});if(i.errors.length>0)throw new j(`${r} \u4E0D\u662F\u5408\u6CD5 YAML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:i.errors[0]});if(i.contents!==null&&!Jv(i.contents))throw new j(`${r} \u7684\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);let s=`${am}${n}`;try{i.setIn(["providers",n],{api:e.baseUrl,key_env:o,transport:"anthropic_messages",discover_models:!1,models:Object.fromEntries(e.models.map(l=>[l,{}]))}),Xv(i.get("model",!0))?i.set("model",{provider:s,default:e.model}):(i.setIn(["model","provider"],s),i.setIn(["model","default"],e.model))}catch(l){throw new j(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${r}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`,{cause:l})}let a=i.toString({lineWidth:0}),c=sy(a,r);if(Bn(c?.providers?.[n]?.api)!==e.baseUrl||Bn(c?.model?.provider)!==s||Bn(c?.model?.default)!==e.model)throw new j(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${r}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);wn(r,a,384)}var ay={id:"hermes-agent",label:"Hermes Agent",requiresModel:!0,resolveDir(){let e=process.env.HERMES_HOME?.trim();if(e)return{dir:Yv(e),custom:!0};if(process.platform==="win32"){let t=process.env.LOCALAPPDATA;return{dir:wi(t??wi(ry(),"AppData","Local"),"hermes"),custom:!1}}return{dir:wi(ry(),".hermes"),custom:!1}},relayUrl:e=>e,configPaths:e=>[cm(e),iy(e)],read(e){let t=cm(e),n=Nt(t),o=n===null?null:sy(n,t),r=Bn(o?.model?.provider),i=r!==null&&r.startsWith(am)?r.slice(am.length):null,s=i===null?void 0:o?.providers?.[i];return{baseUrl:Bn(s?.api)??Bn(s?.url)??Bn(s?.base_url),model:Bn(o?.model?.default)??Bn(o?.model?.model)}},apply(e,t){let n=xn(e.siteName),o=Pa(n);eR(e,t,n,o),Ea(iy(t),o,e.apiKey)}};import{existsSync as tR}from"fs";import{homedir as my}from"os";import{join as xr,resolve as uy}from"path";var nR="https://opencode.ai/config.json",dy="opencode.jsonc",oR=[dy,"opencode.json","config.json"],cy=["model"],lm=e=>oR.map(t=>xr(e.dir,t)).find(t=>tR(t))??xr(e.dir,dy),ly=()=>{let e=process.env.XDG_DATA_HOME;return xr(e?uy(e):xr(my(),".local","share"),"opencode","auth.json")},py={id:"opencode",label:"OpenCode",requiresModel:!0,resolveDir(){let e=process.env.XDG_CONFIG_HOME;return e?{dir:xr(uy(e),"opencode"),custom:!0}:{dir:xr(my(),".config","opencode"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[lm(e),ly()],read(e){let t=lm(e),n=$n(t,cy),o=n===null?null:Aa(n);if(o===null)return{baseUrl:null,model:null};let[r,i]=o;return{baseUrl:$n(t,["provider",r,"options","baseURL"]),model:i}},apply(e,t){let n=lm(t),o=xn(e.siteName),r=[[["provider",o],{npm:"@ai-sdk/anthropic",name:e.siteName,options:{baseURL:e.baseUrl},models:Object.fromEntries(e.models.map(i=>[i,{name:i}]))}],[cy,`${o}/${e.model}`]];Ca(n,["$schema"])||r.unshift([["$schema"],nR]),Gt(n,r),Gt(ly(),[[[o],{type:"api",key:e.apiKey}]])}};import{homedir as rR}from"os";import{join as um}from"path";var fy=["models","providers"],Ma=["agents","defaults","model"],gy=["agents","defaults","models"],mm=e=>Sr("OPENCLAW_CONFIG_PATH")??um(e.dir,"openclaw.json"),hy=e=>um(e.dir,".env"),yy=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function iR(e){let t=no(e,Ma),n=yy(t)?t.primary:t;return typeof n=="string"?n:null}var by={id:"openclaw",label:"OpenClaw",requiresModel:!0,resolveDir(){let e=Sr("OPENCLAW_STATE_DIR");if(e!==null)return{dir:e,custom:!0};let t=Sr("OPENCLAW_HOME");return{dir:um(t??rR(),".openclaw"),custom:t!==null}},relayUrl:e=>e,configPaths:e=>[mm(e),hy(e)],read(e){let t=Ti(mm(e)),n=t===null?null:iR(t),o=n===null?null:Aa(n);if(t===null||o===null)return{baseUrl:null,model:null};let[r,i]=o,s=no(t,[...fy,r,"baseUrl"]);return{baseUrl:typeof s=="string"?s:null,model:i}},apply(e,t){let n=mm(t),o=xn(e.siteName),r=Pa(o),i=Ti(n)??{},s=`${o}/${e.model}`,a=[[[...fy,o],{baseUrl:e.baseUrl,apiKey:{source:"env",provider:"default",id:r},api:"anthropic-messages",models:e.models.map(c=>({id:c,name:c}))}],yy(no(i,Ma))?[[...Ma,"primary"],s]:[Ma,{primary:s}]];for(let c of e.models){let l=`${o}/${c}`;no(i,[...gy,l])===void 0&&a.push([[...gy,l],{}])}Gt(n,a),Ea(hy(t),r,e.apiKey)}};import{homedir as sR}from"os";import{join as pm}from"path";var dm=e=>pm(e.dir,"models.json"),Ia=e=>pm(e.dir,"settings.json"),Sy={id:"pi-coding-agent",label:"Pi Coding Agent",requiresModel:!0,resolveDir(){let e=Sr("PI_CODING_AGENT_DIR");return e!==null?{dir:e,custom:!0}:{dir:pm(sR(),".pi","agent"),custom:!1}},relayUrl:e=>e,configPaths:e=>[dm(e),Ia(e)],read(e){let t=$n(Ia(e),["defaultProvider"]);return{baseUrl:t===null?null:$n(dm(e),["providers",t,"baseUrl"]),model:$n(Ia(e),["defaultModel"])}},apply(e,t){let n=xn(e.siteName);Gt(dm(t),[[["providers",n],{baseUrl:e.baseUrl,api:"anthropic-messages",apiKey:e.apiKey,models:e.models.map(o=>({id:o,name:o}))}]]),Gt(Ia(t),[[["defaultProvider"],n],[["defaultModel"],e.model]])}};var xy=[ey,oy,by,ay,py,Sy];var aR=6e3,cR=2,Ty=e=>Jt(`${e.url}/api/site-config`,{timeoutMs:aR});async function lR(e){try{await Ty(e);let t=Number.POSITIVE_INFINITY;for(let n=0;n<cR;n+=1){let o=Date.now();await Ty(e),t=Math.min(t,Date.now()-o)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function wy(e){let t=[];for(let n of e)t.push(await lR(n));return t}import{jsx as $e,jsxs as La}from"react/jsx-runtime";var uR=10,dR=3,ky=4,_y=e=>1+Math.max(1,Math.min(e,ky))+(e>ky?1:0);function vy(e,t){let n=e.trim();if(n==="")return null;let o=Number(n),r=Math.round(o*t);return!Number.isFinite(o)||o<=0||r<1?"invalid":r}var Ry=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),Cy=(e,t)=>{let n=e.find(o=>String(o.id)===t);return n===void 0?void 0:`${n.description}\uFF08\u8BA1\u8D39\u500D\u7387 \xD7${n.multiplier}\uFF09`};function pR({lines:e,measured:t,effective:n,width:o,isActive:r,onPick:i}){let s=a=>{if(t===null)return"\u6D4B\u91CF\u4E2D";let c=t.find(l=>l.line.url===a.url);return c===void 0||c.latencyMs===null?"\u4E0D\u53EF\u8FBE":`${c.latencyMs} ms`};return $e(de,{title:"API \u63A5\u5165\u5730\u5740",note:n===void 0?void 0:`\u5F53\u524D ${n.name}`,width:o,children:$e(ue,{retain:"lines",items:e,width:o-pe,height:_y(e.length),isActive:r,columns:[{label:"\u7EBF\u8DEF"},{label:"\u5EF6\u8FDF",align:"right"},{label:"\u8BF4\u660E",shrink:!0},{label:"\u72B6\u6001"}],row:a=>[a.name,s(a),a.description,n?.url===a.url?"\u4F7F\u7528\u4E2D":""],searchOf:a=>`${a.name} ${a.url}`,onOpen:i,emptyLabel:"\u7AD9\u70B9\u672A\u914D\u7F6E\u63A5\u5165\u7EBF\u8DEF\uFF0C\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u6DFB\u52A0"})})}function Py(){let e=L(),{width:t}=H(),n=te(),[o,r]=Na({name:"list"}),[i,s]=Na(!1),[a,c]=Na(()=>fo().line),[l,u]=Na(0),{busy:m,error:f,reset:d,fail:h,run:y}=le();Ce(m!==null||o.name==="created"||o.name==="apply-pick"||o.name==="apply-model");let g=ee([e.revision],async()=>{let[A,$,Z]=await Promise.all([Ta(),xa(),ze(e.ctx.site)]);return{tokens:A,groups:$,site:Z}}),x=g.phase==="ready"?g.data.site.apiLines:[],T=ee([l,x.map(A=>A.url).join("|")],()=>wy(x)),R=m!==null,b=o.name==="list"&&!R,S=A=>{r({name:"list"}),e.reload(),e.toast("ok",A)};G(A=>{if(A==="r"){u($=>$+1),e.reload();return}i||(A==="n"?r({name:"create"}):A==="l"&&x.length>0&&s(!0))},b);let v=A=>{rs($=>{$.line={name:A.name,url:A.url}}),c({name:A.name,url:A.url}),s(!1),e.toast("ok",`\u5DF2\u9009\u7528\u7EBF\u8DEF ${A.name}\uFF0C\u65B0\u5EFA\u4EE4\u724C\u5E76\u5199\u5165\u914D\u7F6E\u540E\u751F\u6548`)},M=(A,$,Z)=>{y("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>Ph({name:A,groupId:$,quotaLimit:Z}),{onSuccess:oe=>{e.reload(),r({name:"created",token:oe,secret:oe.token})}})},N=A=>{y("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>Ah(A.id),{onSuccess:()=>S("\u4EE4\u724C\u5DF2\u5220\u9664")})},O=(A,$)=>{y("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>xy.map(Z=>{let oe=Z.resolveDir(),fe=Z.read(oe);return{client:Z,configured:fe.baseUrl!==null,paths:Z.configPaths(oe),model:fe.model}}),{failToast:!0,onSuccess:Z=>r({name:"apply-pick",token:A,secret:$,targets:Z})})},U=(A,$,Z)=>{y("\u6B63\u5728\u5199\u5165",Z,{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",_e([`\u5DF2\u5199\u5165 ${A}`,$]))}})},C=(A,$)=>{let Z=A.targets.find(fe=>fe.client.id===$);if(Z===void 0)return;let{client:oe}=Z;if(!oe.requiresModel){U(oe.label,void 0,()=>Wh(e.ctx,oe,A.secret));return}y("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let fe=await qh(e.ctx,A.secret);if(fe.length===0)throw new j("\u8BE5\u4EE4\u724C\u6240\u5728\u5206\u7EC4\u6CA1\u6709\u53EF\u8DEF\u7531\u7684\u6A21\u578B\uFF0C\u6362\u4E00\u4E2A\u5206\u7EC4\u540E\u91CD\u65B0\u521B\u5EFA");return fe},{failToast:!0,onSuccess:fe=>r({name:"apply-model",token:A.token,secret:A.secret,targets:A.targets,needs:{...Z,client:oe},models:fe})})},w=(A,$)=>{d(),r(A==="rename"?{name:"rename",token:$}:A==="regroup"?{name:"regroup",token:$}:A==="relimit"?{name:"relimit",token:$}:{name:"confirm-delete",token:$})},E=()=>{if(o.name==="list"){i?s(!1):e.pop();return}if(d(),o.name==="apply-pick"){r({name:"created",token:o.token,secret:o.secret});return}if(o.name==="apply-model"){r({name:"apply-pick",token:o.token,secret:o.secret,targets:o.targets});return}r({name:"list"})},_=()=>o.name!=="list"?["Esc \u8FD4\u56DE"]:i?["\u2191\u2193 \u79FB\u52A8","Enter \u9009\u7528","/ \u8FC7\u6EE4","r \u5237\u65B0","Esc \u8FD4\u56DE"]:["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","l \u63A5\u5165\u5730\u5740","/ \u8FC7\u6EE4","r \u5237\u65B0"];return o.name==="created"||o.name==="apply-pick"||o.name==="apply-model"?$e(K,{hints:_(),onEscape:E,isActive:m===null,children:La(Mo,{flexDirection:"column",children:[m!==null&&$e(De,{label:m}),o.name==="created"&&!R&&La(Mo,{flexDirection:"column",children:[$e(he,{tone:"ok",width:t,title:"\u4EE4\u724C\u5DF2\u521B\u5EFA",detail:"\u8BF7\u7ACB\u5373\u590D\u5236\u5E76\u59A5\u5584\u4FDD\u5B58\u3002\u51FA\u4E8E\u5B89\u5168\u8003\u8651\uFF0C\u5B8C\u6574\u4EE4\u724C\u53EA\u663E\u793A\u8FD9\u4E00\u6B21\uFF0C\u5173\u95ED\u540E\u5C06\u65E0\u6CD5\u518D\u6B21\u67E5\u770B\u3002"}),$e(Mo,{marginTop:1,children:$e(mR,{color:p.accent,children:o.secret})}),$e(Mo,{marginTop:1,children:$e(ce,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:A=>{A==="back"?r({name:"list"}):O(o.token,o.secret)}})})]}),o.name==="apply-pick"&&!R&&$e(de,{title:"\u5199\u5165\u914D\u7F6E",note:o.token.name,width:t,children:$e(ce,{width:t-pe,height:n-Ze,retain:"apply",items:o.targets.map(A=>({value:A.client.id,label:A.client.label,badge:A.configured?"\u5DF2\u914D\u7F6E":"\u672A\u914D\u7F6E",badgeTone:A.configured?"accent":void 0,hint:A.paths.join(" ")})),onSelect:A=>C(o,A)})}),o.name==="apply-model"&&!R&&$e(ne,{title:`${o.needs.client.label} \u9ED8\u8BA4\u6A21\u578B`,width:t,submitLabel:"\u5199\u5165",error:f,fields:[{kind:"select",name:"model",label:"\u6A21\u578B",options:o.models.map(A=>({value:A,label:A})),initial:o.needs.model!==null&&o.models.includes(o.needs.model)?o.needs.model:o.models[0],hint:`\u5199\u5165\u540E\u4F5C\u4E3A ${o.needs.client.label} \u7684\u9ED8\u8BA4\u6A21\u578B`}],onCancel:E,onSubmit:A=>{let $=A.model;if($===void 0||$===""){h("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}U(o.needs.client.label,$,()=>zh(e.ctx,o.needs.client,o.secret,$,o.models))}})]})}):$e(K,{hints:_(),onEscape:E,isActive:m===null,children:$e(W,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:A,groups:$,site:Z})=>{let oe=Q+Ze+_y(Z.apiLines.length),fe=Math.max(dR,n-(o.name==="list"?oe:uR));return La(Mo,{flexDirection:"column",children:[$e(Mo,{flexDirection:"column",marginBottom:Q,children:$e(ue,{retain:"list",items:A,width:t,height:fe,isActive:b&&!i,columns:[{label:"\u540D\u79F0",shrink:!0},{label:"\u5206\u7EC4"},{label:"\u5DF2\u6D88\u8D39",align:"right"},{label:"\u8D39\u7528\u9650\u5236",align:"right"},{label:"\u5BC6\u94A5"}],row:D=>{let k=Te(D.usedQuota,Z.quotaPerUsd);return[D.name,D.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664",D.quotaLimit!==null&&D.usedQuota>=D.quotaLimit?{text:k,tone:"danger"}:k,D.quotaLimit===null?"\u4E0D\u9650":Te(D.quotaLimit,Z.quotaPerUsd),Di(D.keyPrefix,D.keySuffix)]},searchOf:D=>`${D.name} ${D.groupName??""}`,onOpen:D=>r({name:"actions",token:D}),emptyLabel:"\u6682\u65E0\u4EE4\u724C",emptyDescription:"\u521B\u5EFA\u4E00\u4E2A\u4EE4\u724C\u5373\u53EF\u5F00\u59CB\u8C03\u7528\u4E2D\u8F6C API"})}),m!==null&&(o.name==="list"||o.name==="actions"||o.name==="confirm-delete")&&$e(De,{label:m}),o.name==="list"&&$e(pR,{lines:Z.apiLines,measured:T.phase==="ready"?T.data:null,effective:a??Z.apiLines[0],width:t,isActive:b&&i,onPick:v}),o.name==="actions"&&!R&&La(de,{title:o.token.name,width:t,children:[$e(Ye,{width:t-pe,items:[["\u5206\u7EC4",o.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",Te(o.token.usedQuota,Z.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",o.token.quotaLimit===null?"\u4E0D\u9650":Te(o.token.quotaLimit,Z.quotaPerUsd)],["\u5BC6\u94A5",Di(o.token.keyPrefix,o.token.keySuffix)]]}),$e(Mo,{marginTop:1,children:$e(ce,{width:t-pe,items:[{value:"rename",label:"\u540D\u79F0",hint:o.token.name},{value:"regroup",label:"\u5206\u7EC4",hint:o.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"},{value:"relimit",label:"\u8D39\u7528\u9650\u5236",hint:o.token.quotaLimit===null?"\u4E0D\u9650":Te(o.token.quotaLimit,Z.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:D=>w(D,o.token)})})]}),o.name==="create"&&$e(ne,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:f,busy:R,busyLabel:"\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",fields:[{kind:"text",name:"name",label:"\u540D\u79F0",placeholder:"\u8BF7\u8F93\u5165\u4EE4\u724C\u540D\u79F0"},{kind:"select",name:"group",label:"\u5206\u7EC4",options:Ry($),initial:String($[0]?.id??""),hint:D=>Cy($,D)},{kind:"text",name:"limit",label:"\u8D39\u7528\u9650\u5236",placeholder:"\u7F8E\u5143\u91D1\u989D\uFF0C\u7559\u7A7A\u5219\u4E0D\u9650\u5236",hint:"\u7D2F\u8BA1\u6D88\u8D39\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\uFF0C\u8BE5\u4EE4\u724C\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD",optional:!0}],onCancel:E,onSubmit:D=>{let k=(D.name??"").trim();if(k===""){h("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let X=$.find(re=>String(re.id)===D.group);if(X===void 0){h("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let F=vy(D.limit??"",Z.quotaPerUsd);if(F==="invalid"){h("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}M(k,X.id,F)}}),o.name==="rename"&&$e(ne,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${o.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:f,busy:R,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"text",name:"name",label:"\u540D\u79F0",initial:o.token.name,placeholder:"\u8BF7\u8F93\u5165\u4EE4\u724C\u540D\u79F0"}],onCancel:E,onSubmit:D=>{let k=(D.name??"").trim();if(k===""){h("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}y("\u6B63\u5728\u4FDD\u5B58",()=>wa(o.token.id,{name:k}),{onSuccess:()=>S("\u5DF2\u4FDD\u5B58")})}}),o.name==="regroup"&&$e(ne,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${o.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:f,busy:R,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:Ry($),initial:String(o.token.groupId??$[0]?.id??""),hint:o.token.groupId===null?"\u6240\u5C5E\u5206\u7EC4\u5DF2\u88AB\u5220\u9664\uFF0C\u8BE5\u4EE4\u724C\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u5206\u7EC4":D=>Cy($,D)}],onCancel:E,onSubmit:D=>{let k=$.find(X=>String(X.id)===D.group);if(k===void 0){h("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}y("\u6B63\u5728\u4FDD\u5B58",()=>wa(o.token.id,{groupId:k.id}),{onSuccess:()=>S("\u5DF2\u4FDD\u5B58")})}}),o.name==="relimit"&&$e(ne,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${o.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:f,busy:R,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"text",name:"limit",label:"\u8D39\u7528\u9650\u5236",initial:o.token.quotaLimit===null?"":String(Math.round(o.token.quotaLimit/Z.quotaPerUsd*100)/100),placeholder:"\u7F8E\u5143\u91D1\u989D\uFF0C\u7559\u7A7A\u5219\u4E0D\u9650\u5236",hint:`\u8BE5\u4EE4\u724C\u5DF2\u7D2F\u8BA1\u6D88\u8D39 ${Te(o.token.usedQuota,Z.quotaPerUsd)}\uFF0C\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,optional:!0}],onCancel:E,onSubmit:D=>{let k=vy(D.limit??"",Z.quotaPerUsd);if(k==="invalid"){h("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}y("\u6B63\u5728\u4FDD\u5B58",()=>wa(o.token.id,{quotaLimit:k}),{onSuccess:()=>S("\u5DF2\u4FDD\u5B58")})}}),o.name==="confirm-delete"&&!R&&$e(Ae,{width:t,title:"\u5220\u9664\u4EE4\u724C",detail:`\u5220\u9664\u300C${o.token.name}\u300D\u540E\u8BE5\u4EE4\u724C\u7ACB\u5373\u5931\u6548\uFF0C\u4F7F\u7528\u5B83\u7684\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,confirmLabel:"\u5220\u9664",error:f,onConfirm:()=>N(o.token),onCancel:E})]})}})})}import{Box as My,Text as gR}from"ink";import{useEffect as hR,useState as Ly}from"react";import yR from"string-width";import{z as fR}from"zod";var Oa=()=>P(ku,"/docs/manifest"),Ay=e=>P(vu,`/docs/pages/${e}`),Ey=e=>P(fR.array(Ru),je("/docs/search",{q:e}));import{jsx as Fn,jsxs as Ny}from"react/jsx-runtime";var bR=250,Iy="/ ";function SR(e,t){let[n,o]=Ly(e);return hR(()=>{let r=setTimeout(()=>o(e),t);return()=>clearTimeout(r)},[e,t]),n}var xR=e=>e.groups.flatMap((t,n)=>[...n===0?[]:[{heading:""}],{heading:t.title},...t.items.map(o=>({value:o,label:o.title}))]);function Oy(){let e=L(),{width:t}=H(),n=te(),[o,r]=Ie("query",()=>""),[i,s]=Ly(!1),a=SR(o.trim(),bR),c=a.length>hc,l=ee([e.revision],Oa),u=qt(ee([a,e.revision],()=>a===""||c?Promise.resolve(null):Ey(a))),m=l.phase==="ready",f=o.trim()!=="",d=i||f;G(T=>{if(T==="r"){e.reload();return}m&&T.startsWith("/")&&(s(!0),T.length>1&&r(T.slice(1)))},!i);let h=()=>{if(!d){e.pop();return}s(!1),r("")},y=i?["Enter \u786E\u8BA4","Esc \u53D6\u6D88"]:m?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","/ \u641C\u7D22","r \u5237\u65B0",...f?["Esc \u8FD4\u56DE"]:[]]:["r \u5237\u65B0"],g=(T,R)=>e.push("doc",{slug:T,anchor:R}),x=Math.max(3,n-(d?1:0));return Fn(K,{hints:y,onEscape:h,children:Fn(W,{state:l,loading:"\u6B63\u5728\u8BFB\u53D6\u6587\u6863\u76EE\u5F55",width:t,children:T=>Ny(My,{flexDirection:"column",children:[d&&Ny(My,{children:[Fn(gR,{color:p.accent,children:Iy}),Fn(Zo,{value:o,onChange:r,onSubmit:()=>s(!1),isActive:i,placeholder:"\u641C\u7D22\u6587\u6863",width:t-yR(Iy)})]}),f?c?Fn(Ft,{message:`\u5173\u952E\u8BCD\u6700\u591A ${hc} \u4E2A\u5B57\u7B26`,width:t}):Fn(W,{state:u,loading:"\u6B63\u5728\u641C\u7D22",width:t,children:R=>R===null?Fn(De,{label:"\u6B63\u5728\u641C\u7D22"}):Fn(ue,{retain:"results",items:R,width:t,height:x,isActive:!i,columns:[{label:"\u6807\u9898"},{label:"\u6458\u8981",shrink:!0}],row:b=>[b.title,b.snippet],onOpen:b=>g(b.slug,b.anchor),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})}):Fn(ce,{retain:"toc",items:xR(T),width:t,height:x,isActive:!i,onSelect:R=>g(R.slug,null)})]})})})}import{Box as CR,Text as _R}from"ink";import{useMemo as PR,useState as AR}from"react";import{spawn as TR}from"child_process";var wR={darwin:[{command:"pbcopy",args:[]}],win32:[{command:"clip",args:[]}],linux:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}]};function kR(e,t){return new Promise((n,o)=>{let r=TR(e.command,e.args,{stdio:["pipe","ignore","ignore"]});r.on("error",i=>{i.code==="ENOENT"?n(!1):o(new j(`\u6267\u884C ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))}),r.on("close",i=>{i===0?n(!0):o(new j(`${e.command} \u9000\u51FA\u7801 ${i??"null"}`))}),r.stdin.on("error",i=>o(new j(`\u5199\u5165 ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))),r.stdin.end(t)})}async function Da(e){let t=wR[process.platform];if(t===void 0)throw new j(`\u5F53\u524D\u7CFB\u7EDF\u4E0D\u652F\u6301\u5199\u5165\u526A\u8D34\u677F\uFF08${process.platform}\uFF09`);for(let n of t)if(await kR(n,e))return;throw new j("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Lexer as vR,walkTokens as RR}from"marked";function Dy(e,t){let n=[],o=[],r=new Set,i="";for(let s of vR.lex(e,{gfm:!0,breaks:!1}))s.type==="heading"&&(i=il(s.tokens,"docs")),RR([s],a=>{if(a.type==="code"){o.push({lang:a.lang??"",text:a.text,section:i});return}if(a.type!=="link"||r.has(a.href))return;r.add(a.href);let c=il(a.tokens,"docs"),l=a.href.startsWith("#")?{slug:t,anchor:yc(a.href.slice(1))}:Oi(a.href);n.push(l===null?{kind:"external",text:c,href:a.href}:{kind:"guide",text:c,...l})});return{links:n,codes:o}}var $y=e=>Vn(e).split(`
26
+ `).map(t=>t.trim()).filter(t=>t!=="").join(" ");import{jsx as Io,jsxs as NR}from"react/jsx-runtime";var ER=1,MR=16;function By({params:e}){let{depth:t}=L();return Io(IR,{params:e},t)}function IR({params:e}){let t=L(),{width:n}=H(),o=te(),[r,i]=AR("body"),s=qt(ee([e.slug,t.revision],async()=>{let[y,g]=await Promise.all([Ay(e.slug),Oa()]),x=new Map(g.groups.flatMap(T=>T.items.map(R=>[R.slug,R.title])));return{page:y,titles:x,outline:Dy(y.markdown,e.slug)}})),a=s.phase==="ready"?s.data:null,c=a===null?null:a.page.markdown,l=PR(()=>c===null?[]:hn(c,n,"docs"),[c,n]);G(y=>{if(r!=="body")return;if(y==="r"){t.reload();return}if(a===null)return;let{outline:g}=a;y==="l"&&g.links.length>0?i("links"):y==="c"&&g.codes.length>0&&i("codes")});let u=()=>{r==="body"?t.pop():i("body")},m=y=>{i("body"),Da(y).then(()=>t.toast("ok","\u5DF2\u590D\u5236"),()=>t.toast("fail","\u590D\u5236\u5931\u8D25\uFF0C\u53EF\u7528 Option / Alt \u62D6\u9009\u590D\u5236"))},f=()=>{if(a===null)return["r \u5237\u65B0"];if(r==="links")return["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00\u6216\u590D\u5236"];if(r==="codes")return["\u2191\u2193 \u79FB\u52A8","Enter \u590D\u5236"];let{outline:y}=a;return["\u2191\u2193 \u6EDA\u52A8",...y.links.length>0?["l \u94FE\u63A5"]:[],...y.codes.length>0?["c \u590D\u5236\u4EE3\u7801"]:[],"r \u5237\u65B0"]},d=a===null?"\u6587\u6863\u8BE6\u60C5":a.page.title;return Io(K,{trail:r==="links"?["\u4F7F\u7528\u6587\u6863",d,"\u94FE\u63A5"]:r==="codes"?["\u4F7F\u7528\u6587\u6863",d,"\u4EE3\u7801"]:["\u4F7F\u7528\u6587\u6863",d],hints:f(),onEscape:u,children:Io(W,{state:s,loading:"\u6B63\u5728\u8BFB\u53D6\u6587\u6863",width:n,children:({titles:y,outline:g})=>{if(r==="links")return Io(ue,{retain:"links",items:g.links,width:n,height:o,columns:[{label:"\u94FE\u63A5",shrink:!0},{label:"\u7C7B\u578B"},{label:"\u76EE\u6807",shrink:!0}],row:T=>T.kind==="guide"?[T.text,"\u7AD9\u5185\u6587\u6863",y.get(T.slug)??""]:[T.text,"\u5916\u90E8\u94FE\u63A5",T.href],onOpen:T=>T.kind==="guide"?t.push("doc",{slug:T.slug,anchor:T.anchor}):m(T.href)});if(r==="codes")return Io(ue,{retain:"codes",items:g.codes,width:n,height:o,columns:[{label:"\u4EE3\u7801",shrink:!0},{label:"\u8BED\u8A00"},{label:"\u7AE0\u8282",cap:MR}],row:T=>[$y(T.text),T.lang,T.section],onOpen:T=>m(T.text)});let x=e.anchor===null?-1:l.findIndex(T=>T.anchor===e.anchor);return NR(CR,{flexDirection:"column",children:[Io(dt,{retain:"body",lines:l,height:Math.max(1,o-ER),start:Math.max(0,x)}),Io(_R,{wrap:"truncate",color:p.faintForeground,children:`\u7F51\u9875\u7248 ${t.ctx.site}/docs/${e.slug}`})]})}})})}import{Box as fm}from"ink";import{jsx as un,jsxs as LR}from"react/jsx-runtime";var Fy=[["\u2191\u2193 / k j","\u79FB\u52A8\u5149\u6807\u3001\u6EDA\u52A8\u5185\u5BB9"],["\u2190\u2192","\u5207\u6362\u5206\u6BB5\u3001\u7FFB\u9875\u3001\u6539\u53D6\u503C"],["[ ]","\u5207\u6362\u9876\u680F\u4E0A\u7684\u529F\u80FD"],["Enter","\u6253\u5F00\u3001\u786E\u8BA4\u3001\u63D0\u4EA4"],["Tab","\u8868\u5355\u4E0B\u4E00\u9879\u3001\u8FDB\u5165\u56DE\u590D\u6846"],["Esc","\u9000\u56DE\u4E0A\u4E00\u5C42"],["r","\u5237\u65B0\u5F53\u524D\u6570\u636E"],["n","\u65B0\u5EFA"],["f","\u7B5B\u9009\u5217\u8868"],["/","\u8FC7\u6EE4\u5217\u8868"],["Space / a","\u591A\u9009\u52FE\u9009\u3001\u5168\u9009"],["?","\u8FD9\u5F20\u8868"],["q","\u8FD4\u56DE\u4E0A\u5C42\uFF0C\u529F\u80FD\u5C4F\u4E0A\u9000\u51FA"],["Ctrl+C","\u9000\u51FA"]],Uy=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],jy=[["\u2190\u2192 Home End","\u79FB\u52A8\u5149\u6807"],["Ctrl+A / Ctrl+E","\u884C\u9996\u3001\u884C\u5C3E"],["Ctrl+W","\u5220\u9664\u524D\u4E00\u4E2A\u8BCD"],["Ctrl+U / Ctrl+K","\u5220\u5230\u884C\u9996\u3001\u884C\u5C3E"]];function Hy({width:e,height:t}){let n=e-pe,o=[["\u7248\u672C",`${zt} v${Vt}`],["\u672C\u5730\u5B58\u50A8",kn()]],r=[Fy,Uy,jy,o],s=(a=>r.reduce((c,l)=>c+Bt+a+Vs(l.length,n),Q*(r.length-1)))(We)<=t?We:0;return LR(Gd,{height:t,children:[un(de,{title:"\u901A\u7528",width:e,gap:s,children:un(Ye,{items:Fy,width:n})}),un(fm,{marginTop:Q,flexDirection:"column",children:un(de,{title:"\u9F20\u6807",width:e,gap:s,children:un(Ye,{items:Uy,width:n})})}),un(fm,{marginTop:Q,flexDirection:"column",children:un(de,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:un(Ye,{items:jy,width:n})})}),un(fm,{marginTop:Q,flexDirection:"column",children:un(de,{title:"\u5173\u4E8E",width:e,gap:s,children:un(Ye,{items:o,width:n})})})]})}import{jsx as gm}from"react/jsx-runtime";function qy(){let e=L(),{width:t}=H(),n=te();return gn(e.pop),gm(So,{header:gm(Ms,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:gm(Hy,{width:t,height:n})})}import{Box as Gy,Text as OR}from"ink";import{jsx as ki,jsxs as DR}from"react/jsx-runtime";var Wy=[{value:"login",label:"\u767B\u5F55\u8D26\u53F7",hint:"\u4F7F\u7528\u7528\u6237\u540D\u6216\u90AE\u7BB1\u7EE7\u7EED"},{value:"register",label:"\u6CE8\u518C\u8D26\u53F7",hint:"\u521B\u5EFA\u8D26\u53F7\u5F00\u59CB\u4F7F\u7528"},{value:"forgot",label:"\u627E\u56DE\u5BC6\u7801",hint:"\u901A\u8FC7\u90AE\u7BB1\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u65B0\u5BC6\u7801"}];function zy(){let e=L(),{width:t}=H(),n=ri(0),o=Q+1+Q+Wy.length,r=Ps(t)&&n-_s>=o;return DR(So,{header:r?ki(As,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[ki(Gy,{marginTop:1,children:ki(OR,{color:p.mutedForeground,wrap:"truncate",children:"\u767B\u5F55\u540E\u5373\u53EF\u521B\u5EFA\u4EE4\u724C\u3001\u5199\u5165\u914D\u7F6E\u5E76\u67E5\u770B\u7528\u91CF"})}),ki(Gy,{marginTop:1,children:ki(ce,{items:Wy,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as hm,Text as ym}from"ink";import{useState as $R}from"react";import{jsx as nn,jsxs as bm}from"react/jsx-runtime";function Vy(){let e=L(),t=Is(),{width:n}=H(),o=te(),{busy:r,run:i}=le(),[s,a]=$R({name:"list"}),c=Ve([e.revision],m=>Op({page:m}),{retain:"page"}),l=m=>{switch(m.kind){case"post":e.push("post",{id:m.postId});return;case"floor":e.push("floor",{postId:m.postId,floorId:m.floorId});return;case"ticket":e.push("ticket",{id:m.ticketId});return;case"invoices":e.select("invoices");return;case"recharge":e.select("recharge");return;case"subscription":e.select("subscription");return;case"security":e.select("profile");return}},u=m=>{a({name:"detail",message:m}),!m.read&&i("\u6B63\u5728\u6807\u8BB0\u5DF2\u8BFB",()=>$p(m.id),{failToast:!0,onSuccess:e.reload})};if(G((m,f)=>{s.name!=="list"||r!==null||(m==="r"?e.reload():f.leftArrow?c.go(-1):f.rightArrow?c.go(1):m==="a"&&t.any&&i("\u6B63\u5728\u6807\u8BB0\u5DF2\u8BFB",()=>Bp(),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u5DF2\u5168\u90E8\u6807\u4E3A\u5DF2\u8BFB")}}))}),s.name==="detail"){let m=$c(s.message),f=ud[m.target.kind],d=Pt([{text:st(m.body),color:p.foreground}],n),h=Math.max(3,o-4);return bm(K,{hints:[...d.length>h?["\u2191\u2193 \u6EDA\u52A8"]:[],`Enter ${f}`,"Esc \u8FD4\u56DE"],onEscape:()=>a({name:"list"}),children:[bm(ym,{wrap:"truncate",children:[nn(ym,{bold:!0,color:p.foreground,children:st(m.title)}),nn(ym,{color:p.faintForeground,children:` ${V(s.message.createdAt)}`})]}),nn(hm,{marginTop:1,children:nn(dt,{lines:d,height:Math.min(d.length,h)})}),nn(hm,{marginTop:1,children:r!==null?nn(De,{label:r}):nn(ce,{width:n,items:[{value:m.target,label:f}],onSelect:l})})]})}return nn(K,{hints:["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875",...t.any?["a \u5168\u90E8\u5DF2\u8BFB"]:[],"r \u5237\u65B0"],children:nn(W,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u5185\u6D88\u606F",width:n,children:m=>bm(hm,{flexDirection:"column",children:[nn(ue,{retain:"list",items:m.items,width:n,height:Math.max(3,o-1),isActive:r===null,columns:[{label:"\u6D88\u606F",shrink:!0},{label:"\u5185\u5BB9",shrink:!0},{label:"\u65F6\u95F4"},{label:"\u72B6\u6001",align:"right"}],row:f=>{let d=$c(f),h=st(d.title);return[f.read?h:{text:h,tone:"accent"},st(d.body),V(f.createdAt),f.read?"":{text:"\u672A\u8BFB",tone:"accent"}]},onOpen:u,emptyLabel:"\u6682\u65E0\u6D88\u606F",emptyDescription:"\u6709\u65B0\u6D88\u606F\u65F6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),r!==null?nn(De,{label:r}):nn(Ke,{page:c.page,pages:c.pages,total:c.total,width:n})]})})})}import{Box as $a,Text as No}from"ink";import{useState as Yy}from"react";import{z as xt}from"zod";var BR=xt.object({inviteCode:xt.string(),invitedCount:xt.number(),totalReward:xt.number(),rewards:xt.object({firstInviterPercent:xt.number(),firstInviteePercent:xt.number(),subsequentInviterPercent:xt.number()}),items:xt.array(xt.object({id:xt.number().int(),rewardType:Wm,rewardQuota:xt.number(),rewardQuotaReversed:xt.number(),inviterUsername:xt.string(),inviteeUsername:xt.string(),createdAt:xt.string()}))}),Ky=()=>P(BR,"/invite");import{jsx as Ct,jsxs as Ba}from"react/jsx-runtime";var FR=_t(ec,Ji,"\u5168\u90E8\u7C7B\u578B"),Jy=3;function UR(e){let t=[];return e.firstInviterPercent>0&&t.push(`\u597D\u53CB\u9996\u6B21\u5145\u503C\uFF0C\u4F60\u83B7\u5F97 ${e.firstInviterPercent}% \u989D\u5EA6\u5956\u52B1`),e.firstInviteePercent>0&&t.push(`\u597D\u53CB\u9996\u6B21\u5145\u503C\uFF0C\u597D\u53CB\u672C\u4EBA\u83B7\u5F97 ${e.firstInviteePercent}% \u989D\u5EA6\u5956\u52B1`),e.subsequentInviterPercent>0&&t.push(`\u597D\u53CB\u540E\u7EED\u6BCF\u6B21\u5145\u503C\uFF0C\u4F60\u83B7\u5F97 ${e.subsequentInviterPercent}% \u989D\u5EA6\u5956\u52B1`),t.length===0?["\u9080\u8BF7\u5956\u52B1\u6682\u672A\u5F00\u542F"]:(t.push("\u5956\u52B1\u6309\u597D\u53CB\u5B9E\u4ED8\u91D1\u989D\u5BF9\u5E94\u989D\u5EA6\u6298\u7B97"),t)}function Xy(){let e=L(),{width:t}=H(),n=te(),[o,r]=Yy("main"),[i,s]=Yy(""),a=ee([e.revision],async()=>{let[l,u]=await Promise.all([Ky(),ze(e.ctx.site)]);return{invite:l,site:u}});G(l=>{o==="main"&&(l==="r"?e.reload():l==="f"&&r("filter"))});let c=()=>{o==="main"?e.pop():r("main")};return Ct(K,{hints:o==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Ct(W,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:u})=>{if(o==="filter")return Ct(ne,{title:"\u7B5B\u9009\u5956\u52B1\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:FR,initial:i}],onCancel:c,onSubmit:x=>{s(x.type??""),r("main")}});let m=t-pe,f=UR(l.rewards),d=i===""?l.items:l.items.filter(x=>x.rewardType===i),h=x=>Ut(2,t)+Q+Bt+x+2+Q+Bt+x+f.length+Q+Bt+x,y=n-h(We)>=Jy?We:0,g=Math.max(Jy,n-h(y));return Ba($a,{flexDirection:"column",children:[Ct(it,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Oe(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:Te(l.totalReward,u.quotaPerUsd)}]}),Ct($a,{marginTop:1,flexDirection:"column",children:Ba(de,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:y,children:[Ba(No,{wrap:"truncate",children:[Ct(No,{color:p.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Ct(No,{color:p.accent,children:l.inviteCode})]}),Ba(No,{wrap:"truncate",children:[Ct(No,{color:p.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Ct(No,{color:p.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Ct($a,{marginTop:1,flexDirection:"column",children:Ct(de,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:y,children:f.map((x,T)=>Ct(No,{wrap:"truncate",color:p.mutedForeground,children:x},T))})}),Ct($a,{marginTop:1,flexDirection:"column",children:Ct(de,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:Ji(i),width:t,gap:y,children:Ct(ue,{retain:"list",items:d,width:m,height:g,columns:[{label:"\u65F6\u95F4"},{label:"\u597D\u53CB",shrink:!0},{label:"\u5956\u52B1\u7C7B\u578B"},{label:"\u5956\u52B1\u989D\u5EA6",align:"right"}],row:x=>{let T=x.rewardQuota-x.rewardQuotaReversed,R=x.rewardQuotaReversed>0?`\u9000\u6B3E\u51B2\u51CF -${Te(x.rewardQuotaReversed,u.quotaPerUsd)}`:"";return[V(x.createdAt),x.rewardType==="first_invitee"?x.inviterUsername:x.inviteeUsername,Ji(x.rewardType),_e([Te(T,u.quotaPerUsd),R])]},emptyLabel:i===""?"\u6682\u65E0\u5956\u52B1\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u597D\u53CB\u901A\u8FC7\u4F60\u7684\u9080\u8BF7\u7801\u6CE8\u518C\u5E76\u5B8C\u6210\u5145\u503C\u540E\uFF0C\u5956\u52B1\u4F1A\u663E\u793A\u5728\u8FD9\u91CC":void 0})})})]})}})})}import{useState as mb}from"react";import{z as Ne}from"zod";var jR=12e4,HR=Ne.object({id:Ne.number().int(),orderNo:Ne.string(),amountCny:Ne.number().int()}),Qy=()=>P(Ne.array(HR),"/invoices/eligible-orders"),Zy=Ne.object({id:Ne.number().int(),type:Qa,title:Ne.string(),taxId:Ne.string().nullable(),invoiceNo:Ne.string().nullable(),remark:Ne.string().nullable(),amountCny:Ne.number().int(),status:jm,rejectReason:Ne.string().nullable(),rejectedAt:Ne.string().nullable(),issuedAt:Ne.string().nullable(),createdAt:Ne.string()}),qR=Zy.extend({hasFile:Ne.boolean(),orders:Ne.array(Ne.object({orderNo:Ne.string(),amountCny:Ne.number().int()}))}),eb=()=>P(Ne.array(Zy),"/invoices"),tb=e=>P(qR,`/invoices/${e}`),nb=e=>P(se,"/invoices",{method:"POST",json:e}),ob=e=>is(`/invoices/${e}/file`,{timeoutMs:jR}),GR=Ne.object({id:Ne.number().int(),type:Qa,title:Ne.string(),taxId:Ne.string().nullable()}),Fa=()=>P(Ne.array(GR),"/invoices/profiles"),rb=e=>P(se,"/invoices/profiles",{method:"POST",json:e}),ib=(e,t)=>P(se,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),sb=e=>P(se,`/invoices/profiles/${e}`,{method:"DELETE"});import{Box as WR,Text as Lo,useInput as zR}from"ink";import{useEffect as VR,useState as KR}from"react";import{jsx as vi,jsxs as Sm}from"react/jsx-runtime";var YR="[x]",JR="[ ]",ab=4,Ua=2,cb=2;function lb({items:e,columns:t,row:n,selected:o,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[u,m]=KR(0),f=Math.max(1,c-1),d=e.length>f?Math.max(1,f-1):f;VR(()=>{m(b=>Math.min(b,Math.max(0,e.length-1)))},[e.length]);let h=cl(u,d),y=b=>{e.length!==0&&m(S=>(S+b+e.length)%e.length)};zR((b,S)=>{if(S.upArrow){y(-1);return}if(S.downArrow){y(1);return}if(S.return){s();return}b===" "&&e.length>0&&r(u)}),G(b=>{if(b==="k"){y(-1);return}if(b==="j"){y(1);return}b==="a"&&i()});let g=b=>{let S=h+b-1;return S>=0&&S<e.length?S:null},x=rt({onWheel:y,onClick:({row:b})=>{let S=g(b);S!==null&&(m(S),r(S))},onHover:({row:b})=>{let S=g(b);S!==null&&m(S)}}),T=Tl(t,e.map(b=>n(b)),a-Ua-ab),R=e.slice(h,h+d);return Sm(WR,{ref:x,flexDirection:"column",children:[Sm(Lo,{wrap:"truncate",color:p.faintForeground,children:[" ".repeat(Ua+ab),t.map((b,S)=>b.align==="right"?Kn(b.label,T[S]??0):Qe(b.label,T[S]??0)).join(" ".repeat(cb))]}),e.length===0?vi(Lo,{color:p.faintForeground,children:`${" ".repeat(Ua)}${l}`}):R.map((b,S)=>{let v=h+S,M=v===u,N=o.has(v),O=M?p.accent:p.foreground,U=n(b);return Sm(Lo,{wrap:"truncate",children:[vi(Lo,{color:p.accent,children:M?`${ie.cursor} `:" "}),vi(Lo,{color:N?p.accent:O,bold:M,children:`${N?YR:JR} `}),t.map((C,w)=>{let E=C.align==="right"?Kn(U[w]??"",T[w]??0):Qe(U[w]??"",T[w]??0);return vi(Lo,{color:O,bold:M,children:w>0?`${" ".repeat(cb)}${E}`:E},C.label)})]},v)}),(h>0||h+d<e.length)&&vi(Lo,{color:p.faintForeground,children:`${" ".repeat(Ua)}${h+1}-${Math.min(h+d,e.length)} / ${e.length}`})]})}import{jsx as Tr}from"react/jsx-runtime";function ub(){let e=L(),{width:t}=H(),n=te(),[o,r]=mb({name:"pick"}),[i,s]=mb(new Set),{busy:a,error:c,reset:l,run:u}=le();Ce(a!==null);let m=ee([e.revision],async()=>{let[h,y]=await Promise.all([Qy(),Fa()]);return{orders:h,profiles:y}});G(h=>{o.name==="pick"&&h==="r"&&e.reload()});let f=()=>{o.name==="pick"?e.pop():o.name==="preset"?r({name:"pick"}):(l(),r({name:"preset"}))},d=(h,y,g)=>{let x=(g.remark??"").trim(),T=h.filter(R=>i.has(R.id)).map(R=>R.id);u("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>nb({orderIds:T,type:y.type,title:y.title,taxId:y.taxId,remark:x===""?null:x}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return Tr(K,{trail:["\u53D1\u7968\u7BA1\u7406","\u7533\u8BF7\u5F00\u7968"],hints:o.name==="pick"?["\u2191\u2193 \u79FB\u52A8","Space \u52FE\u9009","a \u5168\u9009","Enter \u4E0B\u4E00\u6B65","r \u5237\u65B0"]:[],onEscape:f,isActive:a===null,children:Tr(W,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:h,profiles:y})=>{if(o.name==="pick")return h.length===0?Tr(he,{tone:"info",width:t,title:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355",detail:"\u5B8C\u6210\u5145\u503C\u5E76\u652F\u4ED8\u540E\uFF0C\u8BA2\u5355\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}):Tr(lb,{items:h,width:t,height:n,columns:[{label:"\u8BA2\u5355\u53F7",shrink:!0},{label:"\u91D1\u989D",align:"right"}],row:g=>[g.orderNo,Re(g.amountCny)],selected:new Set(h.flatMap((g,x)=>i.has(g.id)?[x]:[])),onToggle:g=>{let x=h[g]?.id;x!==void 0&&s(T=>{let R=new Set(T);return R.has(x)?R.delete(x):R.add(x),R})},onToggleAll:()=>s(g=>h.every(x=>g.has(x.id))?new Set:new Set(h.map(x=>x.id))),onSubmit:()=>{if(!h.some(g=>i.has(g.id))){e.toast("warn","\u8BF7\u5148\u52FE\u9009\u8981\u5F00\u7968\u7684\u8BA2\u5355");return}if(y.length===0){e.toast("warn","\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F\uFF0C\u8FD4\u56DE\u540E\u6309 p \u65B0\u589E");return}r({name:"preset"})},emptyLabel:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355"});if(o.name==="preset"){let g=[{heading:"\u5E38\u7528\u4FE1\u606F"},...y.map(x=>({value:x,label:`${uo(x.type)} \xB7 ${x.title}`,hint:x.taxId??void 0}))];return Tr(ce,{items:g,width:t,height:n,onSelect:x=>r({name:"remark",profile:x})})}return Tr(ne,{title:"\u7533\u8BF7\u5F00\u7968 \u2014 \u5907\u6CE8",width:t,submitLabel:"\u63D0\u4EA4\u7533\u8BF7",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[{kind:"textarea",name:"remark",label:"\u5907\u6CE8",rows:2,maxLength:200,placeholder:"\u5C55\u793A\u5728\u53D1\u7968\u7968\u9762\u5907\u6CE8\u680F\u7684\u5185\u5BB9",optional:!0}],onCancel:f,onSubmit:g=>d(h,o.profile,g)})}})})}import{Box as xm}from"ink";import{useState as XR}from"react";function db(e,t){let n=e.type??"general",o=(e.title??"").trim(),r=(e.taxId??"").trim();return o===""?(t("\u8BF7\u8F93\u5165\u62AC\u5934"),null):n==="special"&&r===""?(t("\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968\u9700\u586B\u5199\u7A0E\u53F7"),null):{type:n,title:o,taxId:r===""?null:r}}var pb=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:Gr("general")},{value:"special",label:Gr("special")}],initial:e?.type??"general"},{kind:"text",name:"title",label:"\u62AC\u5934",initial:e?.title??"",placeholder:"\u4E2A\u4EBA\u6216\u5355\u4F4D\u540D\u79F0"},{kind:"text",name:"taxId",label:"\u7A0E\u53F7",initial:e?.taxId??"",placeholder:"\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",optional:t=>t.type!=="special"}];import{jsx as Un,jsxs as fb}from"react/jsx-runtime";var QR=8,ZR=3;function gb(){let e=L(),{width:t}=H(),n=te(),[o,r]=XR({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=le();Ce(i!==null);let u=ee([e.revision],Fa),m=i!==null,f=o.name==="list"&&!m;G(h=>{h==="r"?e.reload():h==="n"&&r({name:"create"})},f);let d=()=>{o.name==="list"?e.pop():(a(),r({name:"list"}))};return Un(K,{trail:["\u53D1\u7968\u7BA1\u7406","\u5E38\u7528\u4FE1\u606F"],hints:f?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","r \u5237\u65B0"]:[],onEscape:d,isActive:i===null,children:Un(W,{state:u,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:h=>{let y=o.name==="list"?n:Math.max(ZR,n-QR);return fb(xm,{flexDirection:"column",children:[Un(xm,{marginBottom:o.name==="list"?0:1,children:Un(ue,{retain:"list",items:h,width:t,height:y,isActive:f,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"}],row:g=>[uo(g.type),g.title,g.taxId??"\u2014"],onOpen:g=>r({name:"actions",profile:g}),emptyLabel:"\u6682\u65E0\u5E38\u7528\u5F00\u7968\u4FE1\u606F",emptyDescription:"\u6309 n \u4FDD\u5B58\u4E00\u6761\u5E38\u7528\u5F00\u7968\u4FE1\u606F"})}),o.name==="actions"&&!m&&fb(de,{title:o.profile.title,width:t,children:[Un(Ye,{width:t-pe,items:[["\u7C7B\u578B",Gr(o.profile.type)],["\u7A0E\u53F7",o.profile.taxId??"\u2014"]]}),Un(xm,{marginTop:1,children:Un(ce,{width:t-pe,items:[{value:"edit",label:"\u7F16\u8F91"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:g=>{a(),r(g==="edit"?{name:"edit",profile:o.profile}:{name:"confirm-delete",profile:o.profile})}})})]}),(o.name==="create"||o.name==="edit")&&Un(ne,{title:o.name==="create"?"\u65B0\u589E\u5E38\u7528\u4FE1\u606F":`\u7F16\u8F91\u5E38\u7528\u4FE1\u606F \u2014 ${o.profile.title}`,width:t,submitLabel:"\u4FDD\u5B58",busy:m,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:pb(o.name==="edit"?o.profile:null),onCancel:d,onSubmit:g=>{let x=db(g,c);if(x===null)return;let T=o.name==="edit"?()=>ib(o.profile.id,x):()=>rb(x);l("\u6B63\u5728\u4FDD\u5B58",T,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),o.name==="confirm-delete"&&Un(Ae,{width:t,title:"\u5220\u9664\u5E38\u7528\u5F00\u7968\u4FE1\u606F",detail:`\u786E\u8BA4\u5220\u9664\u300C${o.profile.title}\u300D\uFF1F`,confirmLabel:"\u5220\u9664",busy:i,error:s,onConfirm:()=>l("\u6B63\u5728\u5220\u9664",()=>sb(o.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:d})]})}})})}import{Box as Ri,Text as wr}from"ink";import{useState as Tm}from"react";import{jsx as nt,jsxs as hb}from"react/jsx-runtime";var eC=_t(Xa,Ki,"\u5168\u90E8\u72B6\u6001");function tC({id:e,width:t}){let n=L(),o=ee([e,n.revision],()=>tb(e)),r=t-pe,[i,s]=Tm(null),[a,c]=Tm(null),l=o.phase==="ready"?o.data:null;return G(u=>{if(u!=="d"||l===null||a!==null)return;let m=l.invoiceNo;!l.hasFile||m===null||(s(null),c(m))}),nt(W,{state:o,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:u=>{if(a!==null)return nt(mr,{title:"\u4FDD\u5B58\u53D1\u7968\u6587\u4EF6",width:t,download:async()=>({fileName:`\u53D1\u7968-${a}.pdf`,bytes:await ob(u.id)}),onCancel:()=>c(null),onSaved:h=>{c(null),s(h),n.toast("ok","\u53D1\u7968\u5DF2\u4FDD\u5B58")}});let m=Ki(u.status),f=ht(m),d=[["\u62AC\u5934",u.title],...u.taxId===null?[]:[["\u7A0E\u53F7",u.taxId]],...u.invoiceNo===null?[]:[["\u53D1\u7968\u53F7\u7801",u.invoiceNo]],...u.remark===null?[]:[["\u5907\u6CE8",u.remark]],["\u7533\u8BF7\u65F6\u95F4",V(u.createdAt)],...u.rejectReason===null?[]:[["\u9A73\u56DE\u539F\u56E0",u.rejectReason]],...u.rejectedAt===null?[]:[["\u9A73\u56DE\u65F6\u95F4",V(u.rejectedAt)]],...u.issuedAt===null?[]:[["\u5F00\u7968\u65F6\u95F4",V(u.issuedAt)]]];return hb(de,{title:u.title,note:V(u.createdAt),width:t,children:[hb(wr,{wrap:"truncate",children:[nt(wr,{color:p.mutedForeground,children:uo(u.type)}),nt(wr,{color:f===void 0?p.mutedForeground:tt[f],children:` ${m.label}`})]}),nt(Ri,{marginTop:1,children:nt(it,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:Re(u.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${u.orders.length} \u7B14`}]})}),nt(Ri,{marginTop:1,children:nt(Ye,{width:r,items:d})}),nt(Ri,{marginTop:1,flexDirection:"column",children:u.orders.map(h=>nt(wr,{wrap:"truncate",color:p.faintForeground,children:_e([h.orderNo,Re(h.amountCny)])},h.orderNo))}),u.hasFile&&i===null&&nt(Ri,{marginTop:1,children:nt(wr,{wrap:"truncate",color:p.faintForeground,children:"\u6309 d \u4E0B\u8F7D\u53D1\u7968\u6587\u4EF6"})}),i!==null&&nt(Ri,{marginTop:1,children:nt(wr,{wrap:"truncate",color:p.faintForeground,children:`\u5DF2\u4FDD\u5B58\u5230 ${i}`})})]})}})}function yb(){let e=L(),{width:t}=H(),n=te(),[o,r]=Tm({name:"list"}),[i,s]=Ie("status",()=>""),a=ee([e.revision],eb);G(l=>{o.name==="list"&&(l==="r"?e.reload():l==="f"?r({name:"filter"}):l==="n"?e.push("invoice-apply"):l==="p"&&e.push("invoice-profiles"))});let c=()=>{o.name==="list"?e.pop():r({name:"list"})};return nt(K,{hints:o.name==="list"?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","n \u7533\u8BF7\u5F00\u7968","p \u5E38\u7528\u4FE1\u606F","f \u7B5B\u9009","/ \u8FC7\u6EE4","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:nt(W,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(o.name==="filter")return nt(ne,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:eC,initial:i}],onCancel:c,onSubmit:m=>{s(m.status??""),r({name:"list"})}});if(o.name==="detail")return nt(tC,{id:o.id,width:t});let u=i===""?l:l.filter(m=>m.status===i);return nt(ue,{retain:"list",items:u,width:t,height:n,columns:[{label:"\u65F6\u95F4"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7C7B\u578B"},{label:"\u91D1\u989D",align:"right"},{label:"\u72B6\u6001",align:"right"}],row:m=>[V(m.createdAt),m.title,uo(m.type),Re(m.amountCny),yt(Ki(m.status))],searchOf:m=>m.title,onOpen:m=>r({name:"detail",id:m.id}),emptyLabel:i===""?"\u6682\u65E0\u5F00\u7968\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u6309 n \u4E3A\u5DF2\u4ED8\u6B3E\u8BA2\u5355\u7533\u8BF7\u5F00\u7968":void 0})}})})}import{Box as nC}from"ink";import{useState as bb}from"react";import{jsx as kr,jsxs as rC}from"react/jsx-runtime";var oC=_t(Za,jc,"\u5168\u90E8\u7C7B\u578B");function Sb(){let e=L(),{width:t}=H(),n=te(),[o,r]=bb("list"),[i,s]=bb(""),a=ee([e.revision],()=>ze(e.ctx.site)),c=Ve([e.revision,i],m=>Th({page:m,...i===""?{}:{type:i}}),{retain:"page"}),l=o==="list";G((m,f)=>{l&&(m==="r"?e.reload():m==="f"?r("filter"):f.leftArrow?c.go(-1):f.rightArrow&&c.go(1))});let u=()=>{o==="list"?e.pop():r("list")};return kr(K,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:u,children:kr(W,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:m=>o==="filter"?kr(ne,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:oC,initial:i}],onCancel:u,onSubmit:f=>{s(f.type??""),c.reset(),r("list")}}):kr(W,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:f=>rC(nC,{flexDirection:"column",children:[kr(ue,{retain:"list",items:f.items,width:t,height:Math.max(3,n-1),columns:[{label:"\u65F6\u95F4"},{label:"\u7C7B\u578B"},{label:"\u53D8\u52A8",align:"right"},{label:"\u4F59\u989D",align:"right"},{label:"\u6765\u6E90",align:"right"}],row:d=>{let h=Jo(d.amount,m.quotaPerUsd);return[V(d.createdAt),jc(d.type),{text:d.amount>=0?`+${h}`:h,tone:d.amount>=0?"success":"danger"},Te(d.balanceAfter,m.quotaPerUsd),_e([hd(d.refType),d.refId??""])]},emptyLabel:i===""?"\u6682\u65E0\u989D\u5EA6\u6D41\u6C34":"\u65E0\u5339\u914D\u7ED3\u679C",emptyDescription:i===""?"\u5145\u503C\u6216\u6D88\u8017\u540E\uFF0C\u6BCF\u7B14\u53D8\u52A8\u4F1A\u8BB0\u5F55\u5728\u8FD9\u91CC":void 0}),kr(Ke,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as Rb}from"ink";import{useState as sC}from"react";import{z as iC}from"zod";var Ci={recharge:"/recharge",subscription:"/subscriptions"};async function ja(e,t){let n=`${Ci[e]}/orders/${t}`;return e==="recharge"?{kind:e,...await P(Mr,n)}:{kind:e,...await P(Ir,n)}}async function xb(e,t){let n=`${Ci[e]}/orders/${t}/pay`;if(e==="recharge"){let{order:i,qrCode:s}=await P(Ni,n,{method:"POST"});return{order:{kind:e,...i},qrCode:s}}let{order:o,qrCode:r}=await P(Nr,n,{method:"POST"});return{order:{kind:e,...o},qrCode:r}}var Tb=(e,t)=>P(iC.array(fu),`${Ci[e]}/orders/${t}/refunds`),wb=(e,t,n)=>P(se,`${Ci[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:n}}),kb=(e,t)=>P(se,`${Ci[e]}/orders/${t}/refund-request/cancel`,{method:"POST"});import{Box as Ha,Text as Tn}from"ink";import{jsx as on,jsxs as _i}from"react/jsx-runtime";function vb({order:e,refunds:t,quotaPerUsd:n,width:o}){let r=o-pe,i=Wn(e.status),s=ht(i),a=[["\u521B\u5EFA\u65F6\u95F4",V(e.createdAt)]];return e.succeededRefundCny>0&&a.push(["\u5DF2\u9000\u91D1\u989D",Re(e.succeededRefundCny)]),e.kind==="recharge"&&e.refundedQuota>0&&a.push(["\u6263\u56DE\u989D\u5EA6",Te(e.refundedQuota,n)]),e.pendingRefundCny>0&&a.push(["\u5F85\u786E\u8BA4\u9000\u6B3E",Re(e.pendingRefundCny)]),_i(de,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:o,children:[_i(Tn,{wrap:"truncate",children:[on(Tn,{color:s===void 0?p.mutedForeground:tt[s],children:i.label}),e.kind==="subscription"&&on(Tn,{color:p.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),on(Ha,{marginTop:1,children:on(it,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:Re(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:Te(e.quota,n)}]:[{label:"\u91D1\u989D",value:Re(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),on(Ha,{marginTop:1,children:on(Ye,{width:r,items:a})}),t!==null&&_i(Ha,{marginTop:1,flexDirection:"column",children:[on(Tn,{color:p.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?on(Tn,{color:p.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=yd(c.status),u=ht(l);return _i(Ha,{flexDirection:"column",children:[_i(Tn,{wrap:"truncate",children:[on(Tn,{color:p.foreground,children:Re(c.amountCny)}),on(Tn,{color:u===void 0?p.mutedForeground:tt[u],children:` ${l.label}`}),on(Tn,{color:p.faintForeground,children:` ${V(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&on(Tn,{wrap:"truncate",color:p.faintForeground,children:` ${_e([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as Oo,jsxs as cC}from"react/jsx-runtime";var aC=new Set(["pending","expired","failed"]);function qa(e){let t=Wn(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${Re(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:ht(t)}}function vr(e,t,n){return e.kind==="recharge"?{kind:"recharge",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`\u5230\u8D26\u989D\u5EA6 ${Te(e.quota,n)}`],paidMessage:"\u5145\u503C\u6210\u529F\uFF01",paidNote:"\u4F59\u989D\u5DF2\u5230\u8D26",expiredNote:"\u82E5\u5DF2\u5B8C\u6210\u4ED8\u6B3E\uFF0C\u4F59\u989D\u4F1A\u81EA\u52A8\u5230\u8D26\uFF0C\u8BF7\u52FF\u91CD\u590D\u5145\u503C\uFF1B\u53EF\u5728\u300C\u5145\u503C\u8BB0\u5F55\u300D\u4E2D\u67E5\u770B"}:{kind:"subscription",orderNo:e.orderNo,qrCode:t,amountCny:e.amountCny,summary:[`${e.planName} \xB7 ${e.grantedDurationDays} \u5929`],paidMessage:"\u8BA2\u9605\u5DF2\u751F\u6548\uFF01",paidNote:"\u8BA2\u9605\u5DF2\u751F\u6548",expiredNote:"\u82E5\u5DF2\u5B8C\u6210\u4ED8\u6B3E\uFF0C\u8BA2\u9605\u4F1A\u81EA\u52A8\u751F\u6548\uFF0C\u8BF7\u52FF\u91CD\u590D\u8D2D\u4E70\uFF1B\u53EF\u5728\u300C\u8BA2\u9605\u8BA2\u5355\u300D\u4E2D\u67E5\u770B"}}function Cb({params:e}){let t=L(),{width:n}=H(),[o,r]=sC("main"),{busy:i,error:s,reset:a,fail:c,run:l}=le();Ce(i!==null);let u=ee([e.kind,e.orderNo,t.revision],async()=>{let[y,g]=await Promise.all([ja(e.kind,e.orderNo),ze(t.ctx.site)]),x=aC.has(y.status)?null:await Tb(e.kind,e.orderNo);return{order:y,refunds:x,site:g}});G(y=>{o==="main"&&i===null&&y==="r"&&t.reload()});let m=()=>{o==="main"?t.pop():(a(),r("main"))},f=y=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>xb(e.kind,e.orderNo),{failToast:!0,onSuccess:({order:g,qrCode:x})=>{t.push("pay",vr(g,x,y.quotaPerUsd))}})},d=y=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>wb(e.kind,e.orderNo,y),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7")}})},h=()=>{l("\u6B63\u5728\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",()=>kb(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return Oo(K,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:o==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:m,isActive:i===null,children:Oo(W,{state:u,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:n,children:({order:y,refunds:g,site:x})=>{if(o==="refund")return Oo(ne,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${y.orderNo}`,width:n,submitLabel:"\u63D0\u4EA4\u7533\u8BF7",busy:i!==null,busyLabel:i??"\u6B63\u5728\u63D0\u4EA4",error:s,fields:[{kind:"select",name:"reason",label:"\u9000\u6B3E\u539F\u56E0",options:[...zc[e.kind].map(R=>({value:R,label:R})),{value:"other",label:"\u5176\u4ED6"}],initial:zc[e.kind][0],hint:vd[e.kind]},{kind:"textarea",name:"custom",label:"\u5177\u4F53\u8BF4\u660E",rows:3,maxLength:256,placeholder:"\u8BF4\u660E\u7533\u8BF7\u9000\u6B3E\u7684\u539F\u56E0",hint:"\u4EC5\u9000\u6B3E\u539F\u56E0\u9009\u300C\u5176\u4ED6\u300D\u65F6\u5FC5\u586B"}],onCancel:m,onSubmit:R=>{let b=R.reason??"",S=b==="other"?(R.custom??"").trim():b;if(S===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}d(S)}});if(o==="confirm-cancel")return Oo(Ae,{width:n,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${y.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${y.kind==="recharge"?"\u6536\u56DE\u7684\u989D\u5EA6":"\u51BB\u7ED3\u7684\u8BA2\u9605\u65F6\u957F"}\u5C06\u7ACB\u5373\u6062\u590D`,confirmLabel:"\u64A4\u9500\u7533\u8BF7",busy:i,error:s,onConfirm:h,onCancel:m});let T=[];return y.status==="pending"&&T.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),y.status==="refund_requested"&&T.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),gu(y)&&T.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),cC(Rb,{flexDirection:"column",children:[Oo(vb,{order:y,refunds:g,quotaPerUsd:x.quotaPerUsd,width:n}),T.length>0&&i===null&&Oo(Rb,{marginTop:1,children:Oo(ce,{width:n,items:T,retain:"menu",onSelect:R=>{a(),R==="pay"?f(x):r(R==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as mC,useState as Ib}from"react";import{Box as _b,Text as Do}from"ink";import{Fragment as lC,jsx as Wt,jsxs as Pb}from"react/jsx-runtime";var Ab={columns:20,rows:2};function Eb(e,t,n){return qs(e,t,Ab,n)}function Mb({phase:e,qrCode:t,amountCny:n,summary:o,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?Wt(De,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):Wt(Do,{wrap:"truncate",color:tt.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return Wt(he,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return Wt(he,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return Pb(_b,{flexDirection:"column",children:[Wt(he,{tone:"warn",width:a,title:"\u7EC8\u7AEF\u5C3A\u5BF8\u4E0D\u8DB3\uFF0C\u65E0\u6CD5\u7ED8\u5236\u4E8C\u7EF4\u7801",detail:`\u653E\u5927\u5230 ${c.target.columns} \xD7 ${c.target.rows} \u53EF\u663E\u793A\u4E8C\u7EF4\u7801\uFF0C\u6216\u6309 c \u590D\u5236\u4ED8\u6B3E\u94FE\u63A5`}),Wt(Do,{color:p.accent,children:t}),Wt(_b,{marginTop:1,children:Wt(Do,{bold:!0,color:p.foreground,children:Re(n)})}),l]});let u=c.asideRows-Ab.rows,m=u>=1,f=u>=2,d=u>=2+o.length;return Wt(Gs,{value:t,aside:Pb(lC,{children:[f&&Wt(Do,{bold:!0,color:p.foreground,children:"\u626B\u7801\u652F\u4ED8"}),Wt(Do,{bold:!0,color:p.foreground,children:Re(n)}),m&&Wt(Do,{color:p.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),d&&o.map((h,y)=>Wt(Do,{wrap:"truncate",color:p.mutedForeground,children:h},y)),l]})})}import{jsx as Nb}from"react/jsx-runtime";var uC=5,dC=2e3;function Lb({params:e}){let t=L(),{width:n,columns:o,rows:r}=H(),i=ri(0),[s,a]=Ib("waiting"),[c,l]=Ib(null),u=mC(0);Qs(dC,async()=>{let d;try{d=await ja(e.kind,e.orderNo)}catch(h){l(xe(h));return}if(l(null),d.status==="paid"||d.credited){a("paid"),t.toast("ok",e.paidMessage);return}if(d.status==="expired"||d.status==="failed"){u.current+=1,u.current>=uC&&a("expired");return}u.current=0},s==="waiting"),G(d=>{d!=="c"||s!=="waiting"||Da(e.qrCode).then(()=>t.toast("ok","\u5DF2\u590D\u5236"),()=>t.toast("fail","\u590D\u5236\u5931\u8D25\uFF0C\u53EF\u7528 Option / Alt \u62D6\u9009\u590D\u5236"))});let m=Eb(e.qrCode,{width:n,rows:i},{columns:o-n,rows:r-i}),f=s==="waiting"&&m.fits;return Nb(K,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:f,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:Nb(Mb,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:n,layout:m})})}import{useState as fC}from"react";import{z as jn}from"zod";var pC=jn.object({id:jn.number().int(),name:jn.string(),originalCny:jn.number().int(),discountPercent:jn.number().int(),payCny:jn.number().int(),quota:jn.number()}),Ob=()=>P(jn.array(pC),"/recharge-packages"),Db=e=>P(Ni,"/recharge/orders",{method:"POST",json:e}),$b=()=>P(jn.array(Mr),"/recharge/orders");import{jsx as Rr}from"react/jsx-runtime";var gC=_t(_r,Wn,"\u5168\u90E8\u72B6\u6001");function hC(e,t){let n=e.discountPercent<100?`\uFF08\u539F\u4EF7 ${Re(e.originalCny)} \xB7 ${e.discountPercent/10} \u6298\uFF09`:"";return`${Re(e.payCny)}${n} \xB7 \u5230\u8D26\u989D\u5EA6 ${Te(e.quota,t)}`}function Bb(){let e=L(),{width:t}=H(),n=te(),[o,r]=fC({name:"menu"}),[i,s]=Ie("status",()=>""),{busy:a,error:c,reset:l,fail:u,run:m}=le();Ce(a!==null);let f=ee([e.revision],async()=>{let[y,g,x]=await Promise.all([Ob(),va(e.ctx.site),$b()]);return{packages:y,pricing:g,orders:x}});G(y=>{o.name==="menu"&&(y==="r"?e.reload():y==="f"&&r({name:"filter"}))});let d=()=>{o.name==="menu"?e.pop():(l(),r({name:"menu"}))},h=(y,g)=>{m("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Db(y),{onSuccess:({order:x,qrCode:T})=>{r({name:"menu"}),e.push("pay",vr({kind:"recharge",...x},T,g))}})};return Rr(K,{hints:o.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BB0\u5F55","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:d,isActive:a===null,children:Rr(W,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:y,pricing:g,orders:x})=>{if(o.name==="confirm")return Rr(Ae,{width:t,title:`\u786E\u8BA4\u5145\u503C ${Re(o.pkg.payCny)}\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>h({packageId:o.pkg.id},g.quotaPerUsd),onCancel:d});if(o.name==="custom")return Rr(ne,{title:"\u81EA\u5B9A\u4E49\u91D1\u989D\u5145\u503C",width:t,submitLabel:"\u53BB\u652F\u4ED8",busy:a!==null,busyLabel:a??"\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",error:c,fields:[{kind:"text",name:"yuan",label:"\u5145\u503C\u91D1\u989D\uFF08\u5143\uFF09",placeholder:"\u8BF7\u8F93\u5165\u91D1\u989D",hint:`\u6700\u4F4E ${g.minTopupCny} \u5143 \xB7 \u5230\u8D26\u989D\u5EA6\u6309\u5145\u503C\u6C47\u7387\u6298\u7B97`}],onCancel:d,onSubmit:b=>{let S=Number((b.yuan??"").trim()),v=Oc(S);if(!Number.isFinite(S)||v<Oc(g.minTopupCny)||v>ac){u(`\u8BF7\u8F93\u5165 ${g.minTopupCny} \u5230 ${cd(ac)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}h({amountCny:v},g.quotaPerUsd)}});if(o.name==="filter")return Rr(ne,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:gC,initial:i}],onCancel:d,onSubmit:b=>{s(b.status??""),r({name:"menu"})}});let T=i===""?x:x.filter(b=>b.status===i),R=[{heading:"\u5145\u503C\u5957\u9910"},...y.map(b=>({value:{kind:"pkg",pkg:b},label:b.name,hint:hC(b,g.quotaPerUsd)})),{value:{kind:"custom"},label:"\u81EA\u5B9A\u4E49\u91D1\u989D",hint:"\u8F93\u5165\u4EFB\u610F\u91D1\u989D\u5145\u503C"},{heading:""},{heading:"\u5145\u503C\u8BB0\u5F55"},...T.length===0?[{value:{kind:"none"},label:i===""?"\u6682\u65E0\u5145\u503C\u8BB0\u5F55":"\u65E0\u5339\u914D\u7ED3\u679C",...i===""?{hint:"\u9009\u62E9\u4E0A\u65B9\u5957\u9910\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u91D1\u989D\u5373\u53EF\u5145\u503C"}:{},disabled:!0}]:T.map(b=>({value:{kind:"order",orderNo:b.orderNo},label:Re(b.amountCny),...qa(b),hint:`${V(b.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${Te(b.quota,g.quotaPerUsd)}`}))];return Rr(ce,{items:R,width:t,height:n,retain:"menu",onSelect:b=>{l(),b.kind==="custom"?r({name:"custom"}):b.kind==="order"?e.push("order",{kind:"recharge",orderNo:b.orderNo}):b.kind==="pkg"&&r({name:"confirm",pkg:b.pkg})}})}})})}import{Box as Hn,Text as Pi}from"ink";import{useState as xC}from"react";import TC from"string-width";import{z as Se}from"zod";var yC=Se.object({windowId:Se.number().int(),durationMinutes:Se.number().int(),quota:Se.number(),used:Se.number(),resetAt:Se.string()}),Fb=Se.object({name:Se.string(),multiplier:Se.number()}),bC=Se.object({billingPreference:Ya,subscriptions:Se.array(Se.object({id:Se.number().int(),planName:Se.string(),groups:Se.array(Fb),startsAt:Se.string(),expiresAt:Se.string(),revokedAt:Se.string().nullable(),renewable:Se.boolean(),windows:Se.array(yC)}))}),Ub=()=>P(bC,"/subscriptions"),SC=Se.object({id:Se.number().int(),name:Se.string(),description:Se.string().nullable(),priceCny:Se.number().int(),durationDays:Se.number().int(),enabled:Se.boolean(),groups:Se.array(Fb),windows:Se.array(Se.object({durationMinutes:Se.number().int(),quota:Se.number()}))}),jb=()=>P(Se.array(SC),"/subscription-plans"),Hb=e=>P(Nr,"/subscriptions/orders",{method:"POST",json:e}),qb=e=>P(Nr,`/subscriptions/${e}/renew`,{method:"POST"}),Gb=()=>P(Se.array(Ir),"/subscriptions/orders"),Wb=e=>P(Se.object({billingPreference:Ya}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as He,jsxs as $o}from"react/jsx-runtime";var wC=_t(_r,Wn,"\u5168\u90E8\u72B6\u6001");function kC(e,t,n){if(e.name==="sub"||e.name==="confirm-renew"){let o=t.find(r=>r.id===e.id);return o===void 0?{kind:"missing-sub"}:{kind:"sub",sub:o,confirm:e.name==="confirm-renew"}}if(e.name==="plan"||e.name==="confirm-buy"){let o=n.find(r=>r.id===e.id);return o===void 0?{kind:"missing-plan"}:{kind:"plan",plan:o,confirm:e.name==="confirm-buy"}}return{kind:"none"}}var vC=3;function RC({win:e,quotaPerUsd:t,width:n}){let o=Gc(e),r=wd(e.durationMinutes),i=`\u5DF2\u7528 ${o}% ${ie.bullet} ${Te(e.used,t)} / ${Te(e.quota,t)}`;return $o(Hn,{flexDirection:"column",children:[$o(Pi,{wrap:"truncate",children:[He(Pi,{color:p.foreground,children:r}),He(Pi,{color:o>=100?p.danger:p.mutedForeground,children:Kn(i,Math.max(0,n-TC(r)))})]}),He(dg,{used:e.used,total:e.quota,width:n}),He(Pi,{wrap:"truncate",color:p.faintForeground,children:`\u5C06\u4E8E ${V(e.resetAt)} \u91CD\u7F6E`})]})}function CC(e){if(e.revokedAt!==null)return`${V(e.revokedAt)} \u4F5C\u5E9F`;let t=`${V(e.expiresAt)} \u5230\u671F`;return`\u5DF2\u7528 ${Math.max(...e.windows.map(Gc))}% \xB7 ${t}`}function _C(e){let t=e.windows.length*4;return Q+Ze+2+t+(e.renewable?Q+1:0)}function PC(e){let t=e.description!==null&&e.description!==""?1+We:0,n=Math.ceil((1+e.windows.length)/2);return Q+Ze+t+n+Q+1}function zb(){let e=L(),{width:t}=H(),n=te(),[o,r]=xC({name:"menu"}),[i,s]=Ie("status",()=>""),{busy:a,error:c,reset:l,run:u}=le();Ce(a!==null);let m=ee([e.revision],async()=>{let[g,x,T,R]=await Promise.all([Ub(),jb(),Gb(),ze(e.ctx.site)]);return{mine:g,plans:x,orders:T,site:R}});G(g=>{o.name!=="menu"||a!==null||(g==="r"?e.reload():g==="f"&&r({name:"filter"}))});let f=()=>{l(),o.name==="menu"?e.pop():o.name==="confirm-renew"?r({name:"sub",id:o.id}):o.name==="confirm-buy"?r({name:"plan",id:o.id}):r({name:"menu"})},d=g=>{u("\u6B63\u5728\u4FDD\u5B58\u504F\u597D",()=>Wb({billingPreference:g}),{onSuccess:()=>{r({name:"menu"}),e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},h=(g,x)=>{u("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>qb(g.id),{onSuccess:({order:T,qrCode:R})=>{r({name:"menu"}),e.push("pay",vr({kind:"subscription",...T},R,x.quotaPerUsd))}})},y=(g,x)=>{u("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>Hb({planId:g.id}),{onSuccess:({order:T,qrCode:R})=>{r({name:"menu"}),e.push("pay",vr({kind:"subscription",...T},R,x.quotaPerUsd))}})};return He(K,{hints:o.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BA2\u5355","r \u5237\u65B0"]:o.name==="sub"||o.name==="plan"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","Esc \u8FD4\u56DE"]:["Esc \u8FD4\u56DE"],onEscape:f,isActive:a===null,children:He(W,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:g,plans:x,orders:T,site:R})=>{if(o.name==="preference")return He(ne,{title:"\u6263\u8D39\u65B9\u5F0F",width:t,submitLabel:"\u4FDD\u5B58",busy:a!==null,busyLabel:a??"\u6B63\u5728\u4FDD\u5B58",error:c,fields:[{kind:"select",name:"billingPreference",label:"\u6263\u8D39\u65B9\u5F0F",options:gd,initial:g.billingPreference,hint:Uc}],onCancel:f,onSubmit:w=>{d(w.billingPreference??g.billingPreference)}});if(o.name==="filter")return He(ne,{title:"\u7B5B\u9009\u8BA2\u9605\u8BA2\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:wC,initial:i}],onCancel:f,onSubmit:w=>{s(w.status??""),r({name:"menu"})}});let b=kC(o,g.subscriptions,x);if(b.kind==="missing-sub")return He(he,{tone:"warn",width:t,title:"\u8BA2\u9605\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664",detail:"\u6309 Esc \u8FD4\u56DE"});if(b.kind==="missing-plan")return He(he,{tone:"warn",width:t,title:"\u5957\u9910\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u67B6",detail:"\u6309 Esc \u8FD4\u56DE"});if(b.kind==="sub"&&b.confirm)return He(Ae,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${b.sub.planName}\u300D\uFF1F`,detail:"\u5C06\u6309\u5957\u9910\u5F53\u524D\u4EF7\u683C\u4E0E\u65F6\u957F\u5728\u5230\u671F\u65F6\u95F4\u4E0A\u987A\u5EF6",confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>h(b.sub,R),onCancel:f});if(b.kind==="plan"&&b.confirm)return He(Ae,{width:t,title:`\u786E\u8BA4\u8BA2\u9605\u300C${b.plan.name}\u300D\uFF08${Re(b.plan.priceCny)} / ${b.plan.durationDays} \u5929\uFF09\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>y(b.plan,R),onCancel:f});let S=b.kind==="plan"?b.plan.description:"",v=i===""?T:T.filter(w=>w.status===i),M=[{heading:"\u6211\u7684\u8BA2\u9605"},...g.subscriptions.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u8BA2\u9605",hint:"\u8BA2\u9605\u4E0B\u65B9\u5957\u9910\u540E\uFF0C\u8986\u76D6\u8303\u56F4\u5185\u7684\u8C03\u7528\u5C06\u6309\u6263\u8D39\u65B9\u5F0F\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6",disabled:!0}]:g.subscriptions.map(w=>{let E=Wc(w);return{value:{kind:"sub",id:w.id},label:w.planName,badge:E.label,badgeTone:ht(E),hint:CC(w)}}),{heading:""},{value:{kind:"preference"},label:"\u6263\u8D39\u65B9\u5F0F",badge:Fc(g.billingPreference),badgeTone:"accent",hint:Uc(g.billingPreference)},{heading:""},{heading:"\u53EF\u9009\u5957\u9910"},...x.length===0?[{value:{kind:"none"},label:"\u6682\u65E0\u53EF\u9009\u5957\u9910",hint:"\u8BA2\u9605\u5957\u9910\u4E0A\u67B6\u540E\u5C06\u663E\u793A\u5728\u8FD9\u91CC",disabled:!0}]:x.map(w=>({value:{kind:"plan",id:w.id},label:w.name,...w.enabled?{}:{badge:"\u5DF2\u505C\u552E",badgeTone:"warning"},hint:`${Re(w.priceCny)} / ${w.durationDays} \u5929 \xB7 ${w.groups.map(es).join("\u3001")}`})),{heading:""},{heading:"\u8BA2\u9605\u8BA2\u5355"},...v.length===0?[{value:{kind:"none"},label:i===""?"\u6682\u65E0\u8BA2\u9605\u8BA2\u5355":"\u65E0\u5339\u914D\u7ED3\u679C",...i===""?{hint:"\u8BA2\u9605\u4E0A\u65B9\u5957\u9910\u540E\uFF0C\u8BA2\u5355\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}:{},disabled:!0}]:v.map(w=>({value:{kind:"order",orderNo:w.orderNo},label:`${w.planName}${w.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,...qa(w),hint:`${V(w.createdAt)} \xB7 ${Re(w.amountCny)}`}))],N=b.kind==="sub"?_C(b.sub):b.kind==="plan"?PC(b.plan):0,O=N===0?n:n-N>=vC?n-N:0,U=t-pe,C=o.name==="menu"&&a===null;return $o(Hn,{flexDirection:"column",children:[O>0&&He(ce,{items:M,width:t,height:O,isActive:C,retain:"menu",onSelect:w=>{l(),w.kind==="preference"?r({name:"preference"}):w.kind==="order"?e.push("order",{kind:"subscription",orderNo:w.orderNo}):w.kind==="sub"?r({name:"sub",id:w.id}):w.kind==="plan"&&r({name:"plan",id:w.id})}}),b.kind==="sub"&&$o(Hn,{marginTop:O>0?Q:0,flexDirection:"column",children:[$o(de,{title:b.sub.planName,note:b.sub.revokedAt!==null?`${V(b.sub.revokedAt)} \u4F5C\u5E9F`:`${V(b.sub.expiresAt)} \u5230\u671F`,width:t,children:[He(Ye,{width:U,items:[["\u72B6\u6001",Wc(b.sub).label],["\u8986\u76D6\u5206\u7EC4",b.sub.groups.map(es).join("\u3001")],["\u751F\u6548\u65F6\u95F4",V(b.sub.startsAt)]]}),He(Hn,{marginTop:1,flexDirection:"column",children:b.sub.windows.map((w,E)=>He(Hn,{marginTop:E===0?0:1,flexDirection:"column",children:He(RC,{win:w,quotaPerUsd:R.quotaPerUsd,width:U})},w.windowId))})]}),b.sub.renewable&&a===null&&He(Hn,{marginTop:Q,children:He(ce,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:b.sub.id})})})]}),b.kind==="plan"&&$o(Hn,{marginTop:O>0?Q:0,flexDirection:"column",children:[$o(de,{title:b.plan.name,note:`${Re(b.plan.priceCny)} / ${b.plan.durationDays} \u5929`,width:t,children:[S!==""&&He(Pi,{wrap:"truncate",color:p.mutedForeground,children:S}),He(Hn,{marginTop:S===""?0:We,children:He(Ye,{width:U,items:[["\u8986\u76D6\u5206\u7EC4",b.plan.groups.map(es).join("\u3001")],...kd(b.plan,R.quotaPerUsd).map((w,E)=>[E===0?"\u7528\u91CF\u7A97\u53E3":"",w])]})})]}),a===null&&He(Hn,{marginTop:Q,children:He(ce,{width:t,items:[{value:"subscribe",label:b.plan.enabled?"\u8BA2\u9605":"\u5DF2\u505C\u552E",disabled:!b.plan.enabled}],onSelect:()=>r({name:"confirm-buy",id:b.plan.id})})})]})]})}})})}import{jsx as ye}from"react/jsx-runtime";var Vb={home:{render:()=>ye(zy,{})},help:{render:()=>ye(qy,{})},login:{render:()=>ye(jg,{})},register:{render:()=>ye(Hg,{})},forgot:{render:()=>ye($g,{})},agreement:{render:e=>ye(Mg,{params:e})},tokens:{render:()=>ye(Py,{})},logs:{render:()=>ye(Lh,{})},usage:{render:()=>ye(_h,{})},ledger:{render:()=>ye(Sb,{})},subscription:{render:()=>ye(zb,{})},models:{render:()=>ye(jh,{})},docs:{render:()=>ye(Oy,{})},doc:{render:e=>ye(By,{params:e})},recharge:{render:()=>ye(Bb,{})},order:{render:e=>ye(Cb,{params:e})},pay:{render:e=>ye(Lb,{params:e})},invoices:{render:()=>ye(yb,{})},"invoice-apply":{render:()=>ye(ub,{})},"invoice-profiles":{render:()=>ye(gb,{})},invite:{render:()=>ye(Xy,{})},tickets:{render:()=>ye(Eg,{})},ticket:{render:e=>ye(Ag,{params:e})},community:{render:()=>ye(ah,{})},post:{render:e=>ye(hh,{params:e})},floor:{render:e=>ye(eh,{params:e})},compose:{render:e=>ye(Vg,{params:e})},"post-edit":{render:e=>ye(Kg,{params:e})},homepage:{render:e=>ye(oh,{params:e})},inbox:{render:()=>ye(Vy,{})},announcements:{render:()=>ye(Yp,{})},"announce-gate":{render:e=>ye(zp,{params:e}),lockNav:!0},profile:{render:()=>ye(bg,{})},"my-posts":{render:e=>ye(mh,{params:e})},"my-comments":{render:e=>ye(uh,{params:e})},bookmarks:{render:()=>ye(dh,{})},drafts:{render:()=>ye(ph,{})}};function Kb(e){return Vb[e].lockNav===!0}function Yb(e){let t=Vb[e.id].render;return t(e.params)}import{jsx as oo,jsxs as jC}from"react/jsx-runtime";function NC(){let e=L(),{rows:t}=H(),n=ds(),o=Kb(e.current.id)||n,r=e.depth===1&&gs(e.current.id)&&Lt().session===null;return wm(()=>{r&&e.home()}),MC((i,s)=>{s.ctrl&&i==="c"&&e.exit()}),G(i=>{if(i==="?"){e.current.id==="help"?e.pop():o||e.push("help");return}i==="q"&&!o&&(e.depth>1?e.pop():e.exit())}),oo(AC,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:Yb(e.current)})}function LC(){let e=L(),t=ee([e.revision],async()=>{if(e.gate.announcementsChecked||Lt().session===null)return null;let n;try{n=await jd()}catch{return null}return e.gate.announcementsChecked=!0,n});return wm(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function OC(){let e=L(),t=IC(!1);return wm(()=>{t.current||(t.current=!0,Fd().then(n=>{n!==null&&e.toast("ok",`\u5DF2\u66F4\u65B0\u5230 v${n}\uFF0C\u91CD\u542F\u540E\u751F\u6548`)}).catch(n=>e.toast("fail",`\u81EA\u52A8\u66F4\u65B0\u5931\u8D25\uFF1A${xe(n)}`)))}),null}function DC({ctx:e,mouse:t}){return oo(rp,{subscribe:t.subscribe,children:oo(Kd,{children:oo(lp,{ctx:e,children:jC(Hp,{children:[oo(OC,{}),oo(LC,{}),oo(NC,{})]})})})})}var $C="\x1B[2J\x1B[3J\x1B[H",BC="\x1B[H\x1B[J",FC="\x1B[3J";function UC(e){return new Proxy(e,{get(t,n){if(n!=="write"){let o=Reflect.get(t,n,t);return typeof o=="function"?o.bind(t):o}return(...o)=>{let[r,...i]=o;if(typeof r!="string")return t.write(r,...i);let s=r.split($C).join(BC).split(FC).join("");return t.write(s,...i)}}})}async function Jb(e){let t=np(process.stdin,process.stdout);try{await EC(oo(DC,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:UC(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var WC=`${zt} v${Vt} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
21
27
 
22
28
  \u7528\u6CD5
23
- ${gt} \u8FDB\u5165\u4EA4\u4E92\u754C\u9762
24
- ${gt} help \u67E5\u770B\u672C\u8BF4\u660E
25
- ${gt} update \u68C0\u67E5\u5E76\u5B89\u88C5\u65B0\u7248\u672C
26
- ${gt} uninstall \u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
27
- `;async function gx(){let e;try{({positionals:e}=px({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(o){throw new O(ve(o),{hint:`\u8FD0\u884C ${gt} help \u67E5\u770B\u7528\u6CD5`,exitCode:Ki})}let[t]=e;if(t==="help")return process.stdout.write(fx),_o;if(t==="update")return hx();if(t==="uninstall")return yx();if(t!==void 0)throw new O(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${gt} help \u67E5\u770B\u7528\u6CD5`,{exitCode:Ki});return xx(),await of(Qa()),_o}async function hx(){let e=process.stdout,t=bx(e,"\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C"),o;try{o=await gl()}finally{t()}let n=vn(e,u.accent,"\u2714");return e.write(o===null?`${n} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${ht}
28
- `:`${n} \u5DF2\u66F4\u65B0\u5230 v${o}
29
- `),_o}function bx(e,t){if(!e.isTTY)return e.write(`${t}
30
- `),()=>{};let o=vn(e,u.mutedForeground,t),n=0,r=()=>{let s=ro[n%ro.length]??"";n+=1,e.write(`\r\x1B[2K${vn(e,u.accent,s)} ${o}`)};r();let i=setInterval(r,Wr);return()=>{clearInterval(i),e.write("\r\x1B[2K")}}async function yx(){let e=process.stdout;if(e.write(`\u5378\u8F7D\u4F1A\u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
31
- `),!await Sx("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
32
- `),Jn;let t=await ml({done:o=>e.write(`${vn(e,u.accent,"\u2714")} ${o}
33
- `),failed:o=>e.write(`${vn(e,u.danger,"\u2718")} ${o}
29
+ ${zt} \u8FDB\u5165\u4EA4\u4E92\u754C\u9762
30
+ ${zt} help \u67E5\u770B\u672C\u8BF4\u660E
31
+ ${zt} update \u68C0\u67E5\u5E76\u5B89\u88C5\u65B0\u7248\u672C
32
+ ${zt} uninstall \u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
33
+ `;async function zC(){let e;try{({positionals:e}=GC({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(n){throw new j(xe(n),{hint:`\u8FD0\u884C ${zt} help \u67E5\u770B\u7528\u6CD5`,exitCode:Wa})}let[t]=e;if(t==="help")return process.stdout.write(WC),Cr;if(t==="update")return VC();if(t==="uninstall")return YC();if(t!==void 0)throw new j(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${zt} help \u67E5\u770B\u7528\u6CD5`,{exitCode:Wa});return XC(),await Jb(Dm()),Cr}async function VC(){let e=process.stdout,t=KC(e,"\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C"),n;try{n=await Bd()}finally{t()}let o=io(e,p.accent,"\u2714");return e.write(n===null?`${o} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${Vt}
34
+ `:`${o} \u5DF2\u66F4\u65B0\u5230 v${n}
35
+ `),Cr}function KC(e,t){if(!e.isTTY)return e.write(`${t}
36
+ `),()=>{};let n=io(e,p.mutedForeground,t),o=0,r=()=>{let s=Xo[o%Xo.length]??"";o+=1,e.write(`\r\x1B[2K${io(e,p.accent,s)} ${n}`)};r();let i=setInterval(r,Ss);return()=>{clearInterval(i),e.write("\r\x1B[2K")}}async function YC(){let e=process.stdout;if(e.write(`\u5378\u8F7D\u4F1A\u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
37
+ `),!await JC("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
38
+ `),Fo;let t=await Ld({done:n=>e.write(`${io(e,p.accent,"\u2714")} ${n}
39
+ `),failed:n=>e.write(`${io(e,p.danger,"\u2718")} ${n}
34
40
  `)});if(t.length===0)return e.write(`\u767B\u5F55\u72B6\u6001\u3001\u672C\u5730\u6587\u4EF6\u4E0E\u672C\u7A0B\u5E8F\u5747\u5DF2\u6E05\u9664
35
- `),_o;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
36
- `);for(let o of t)e.write(` ${o}
37
- `);return Jn}async function Sx(e){let t=dx({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let o=await Promise.race([t.question(e),mx(t,"close").then(()=>"")]);return t.close(),o.trim().toLowerCase()==="y"}function xx(){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new O("\u4EA4\u4E92\u754C\u9762\u9700\u8981\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C")}var rf=(e,t)=>vn(process.stderr,e,t);try{process.exitCode=await gx()}catch(e){process.stderr.write(`${rf(u.danger,"\u2718")} ${ve(e)}
38
- `),e instanceof O&&e.hint&&process.stderr.write(` ${rf(u.faintForeground,e.hint)}
39
- `),process.exitCode=e instanceof O?e.exitCode:Jn}
41
+ `),Cr;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
42
+ `);for(let n of t)e.write(` ${n}
43
+ `);return Fo}async function JC(e){let t=qC({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let n=await Promise.race([t.question(e),HC(t,"close").then(()=>"")]);return t.close(),n.trim().toLowerCase()==="y"}function XC(){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new j("\u4EA4\u4E92\u754C\u9762\u9700\u8981\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C")}var Xb=(e,t)=>io(process.stderr,e,t);try{process.exitCode=await zC()}catch(e){process.stderr.write(`${Xb(p.danger,"\u2718")} ${xe(e)}
44
+ `),e instanceof j&&e.hint&&process.stderr.write(` ${Xb(p.faintForeground,e.hint)}
45
+ `),process.exitCode=e instanceof j?e.exitCode:Fo}