@codeflow-ai/cli 1.15.1 → 1.17.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.
- package/dist/cli.js +24 -24
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{once as
|
|
3
|
-
`,o)}function Ko(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=Fn(s);if(a===null)return r=e.parse({}),r;let c;try{c=JSON.parse(a)}catch(d){throw new U(`${o} ${s} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${n}`,{cause:d})}let l=e.safeParse(c);if(!l.success)throw new U(`${o} ${s} \u7ED3\u6784\u4E0D\u7B26\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${n}`);return r=l.data,r};return{load:i,reload:()=>(r=null,i()),update:s=>{let a=structuredClone(i());return s(a),Vo(t(),a,384),r=a,a}}}import{homedir as Pd}from"os";import{join as Un}from"path";function Ft(){let e=process.env.XDG_CONFIG_HOME;if(e)return Un(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return Un(t,"codeflow")}return Un(Pd(),".config","codeflow")}var oa=()=>Un(Ft(),"config.json"),ra=()=>Un(Ft(),"credentials.json"),ia=()=>Un(Ft(),"refresh.lock");var Od=xt.object({refreshCookie:xt.string(),accessToken:xt.string(),accessExpiresAt:xt.number(),username:xt.string(),email:xt.string(),site:xt.string()}),Dd=xt.object({site:xt.string(),cookie:xt.string()}),$d=xt.object({session:Od.nullable().default(null),device:Dd.nullable().default(null)}),bi=Ko($d,ra,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),Tt=bi.load,la=bi.reload,yi=bi.update;function ua(){let{session:e}=Tt();if(!e)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:pn});return e}var Bd=6e4,Fd=75e3,Ud=120;function jd(e,t){try{sa(e)}catch{try{Date.now()-Id(e).mtimeMs>Bd&&aa(e,{recursive:!0,force:!0})}catch{}return!1}return Ld(ca(e,"owner"),t),!0}function qd(e,t){let o;try{o=Nd(ca(e,"owner"),"utf8")}catch{return}o===t&&aa(e,{recursive:!0,force:!0})}async function ma(e){let t=ia(),o=Ad(16).toString("hex");sa(Ft(),{recursive:!0,mode:448});let n=Date.now()+Fd;for(;!jd(t,o);){if(Date.now()>n)throw new U(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${ct} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await Md(Ud)}try{return await e()}finally{qd(t,o)}}function Hd(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=Tt().session;return t?t.site:ta}function da(){return{site:Hd()}}function fn(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 Np,rmSync as Ip}from"fs";import{z as Me}from"zod";var Wd=["active","disabled"],Oy=Me.enum(Wd),zd=["openai","anthropic"],Dy=Me.enum(zd),Gd=["openai-chat","openai-responses","anthropic-messages"],pa=Me.enum(Gd);var Vd=["enabled","auto_disabled","disabled"],$y=Me.enum(Vd),ao=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],fa=Me.enum(ao),Kd=["recharge","subscription"],By=Me.enum(Kd),Jd=["requested","pending","succeeded","failed","rejected","canceled"],ga=Me.enum(Jd),Si=["pending","issued","rejected"],ha=Me.enum(Si),Yd=["special","general"],xi=Me.enum(Yd),Qd=["info","success","warning","error"],ba=Me.enum(Qd),Xd=["terms","privacy"],Fy=Me.enum(Xd),Ti=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],ya=Me.enum(Ti),Zd=["usage_log","order","invitation","admin"],Sa=Me.enum(Zd),wi=["first_inviter","first_invitee","subsequent_inviter"],xa=Me.enum(wi),ki=["success","error","canceled","anomaly"],Ta=Me.enum(ki),vi=["open","replied","closed"],wa=Me.enum(vi),Ri=["billing","technical","account","other"],ka=Me.enum(Ri),_i=["low","normal","high"],va=Me.enum(_i),ep=["user","admin"],Ra=Me.enum(ep);import{z as jn}from"zod";var tp=["internal_error","validation_error","not_found","conflict","model_in_use","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_last_remaining","passkey_not_found","passkey_origin_not_allowed","insufficient_quota","no_available_channel","model_not_found","token_group_missing","token_quota_exceeded","upstream_error","channel_name_taken","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","subscription_revoked","plan_disabled","plan_in_use","group_in_use","order_already_invoiced","order_not_eligible","order_invoiced","invoice_profile_exists","invite_code_invalid","ticket_closed","ticket_limit_exceeded"],np=jn.enum(tp),_a=jn.object({error:jn.object({code:np,message:jn.string(),details:jn.unknown().optional(),requestId:jn.string().optional()})});var Ca={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",model_in_use:"\u8BE5\u6A21\u578B\u4ECD\u88AB\u6E20\u9053\u4F7F\u7528\uFF0C\u8BF7\u5148\u5728\u6E20\u9053\u4E2D\u79FB\u9664\u540E\u518D\u4FEE\u6539\u6216\u5220\u9664\u5B9A\u4EF7",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_last_remaining:"\u7BA1\u7406\u5458\u81F3\u5C11\u9700\u4FDD\u7559\u4E00\u679A Passkey\uFF0C\u65E0\u6CD5\u5220\u9664",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",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",channel_name_taken:"\u8BE5\u6E20\u9053\u540D\u79F0\u5DF2\u88AB\u4F7F\u7528",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",subscription_revoked:"\u8BE5\u8BA2\u9605\u5DF2\u88AB\u4F5C\u5E9F",plan_disabled:"\u8BE5\u5957\u9910\u5DF2\u505C\u552E",plan_in_use:"\u8BE5\u5957\u9910\u5DF2\u6709\u8BA2\u9605\u6216\u8BA2\u5355\u5F15\u7528\uFF0C\u65E0\u6CD5\u5220\u9664\uFF08\u53EF\u6539\u4E3A\u505C\u552E\u5E76\u9690\u85CF\uFF09",group_in_use:"\u8BE5\u5206\u7EC4\u6B63\u88AB\u8BA2\u9605\u5957\u9910\u8986\u76D6\uFF0C\u8BF7\u5148\u8C03\u6574\u5957\u9910\u7684\u8986\u76D6\u5206\u7EC4\u540E\u518D\u5220\u9664",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"};import{z as ue}from"zod";var op=ue.string().trim().min(1),Ci=op.pipe(ue.url()),rp=ue.object({name:ue.string().trim().min(1).max(64),description:ue.string().trim().min(1).max(200),url:Ci}),Ea=ue.array(rp),ip=["string","number","boolean","secret","markdown","money","api-lines","origins"],sp=ue.enum(ip),ap=ue.object({key:ue.string(),type:sp,label:ue.string(),description:ue.string().optional(),value:ue.unknown().optional(),secret:ue.boolean().default(!1),required:ue.boolean().default(!1),min:ue.number().optional(),max:ue.number().optional(),step:ue.number().optional(),unit:ue.string().optional(),placeholder:ue.string().optional()}),zy=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(ap)}),Gy=ue.object({values:ue.record(ue.string(),ue.unknown()).refine(e=>Object.keys(e).length>0,{message:"at least one value required"})}),Vy=ue.object({fields:ue.record(ue.string(),ue.string())});function Pa(e){return`codeflow-cli/${e.cliVersion} (${e.platform} ${e.release}; ${e.arch}) node/${e.nodeVersion}`}function Jo(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 ut}from"zod";var Ei=1e8;var Qy=ut.object({id:ut.coerce.number().int().positive()}),Xy=ut.object({page:ut.coerce.number().int().min(1).default(1),pageSize:ut.coerce.number().int().min(1).max(100).default(20)});function gn(e){return ut.object({items:ut.array(e),total:ut.number().int().nonnegative(),page:ut.number().int().positive(),pageSize:ut.number().int().positive()})}var Se=ut.object({ok:ut.literal(!0)});import{z as W}from"zod";var hn=W.email().max(254).toLowerCase(),rt=8,co=W.string().min(rt).max(128),lo=W.string().min(1).max(128),bn=32,Pi=W.string().trim().min(1).max(bn),Ai=W.string().trim().min(1).max(254),cp=["register","reset_password"],tS=W.object({email:hn,purpose:W.enum(cp)}),nS=W.object({username:Pi,email:hn,password:co,code:W.string().min(4).max(8),inviteCode:W.string().trim().min(1).max(32).optional()}),oS=W.object({account:Ai,password:lo}),rS=W.object({email:hn,code:W.string().min(4).max(8),password:co}),iS=W.object({oldPassword:lo,newPassword:co}),sS=W.object({email:hn}),aS=W.object({email:hn,code:W.string().min(4).max(8),password:lo}),Aa=W.object({username:W.string(),email:W.string()}),qn=W.object({accessToken:W.string(),user:Aa}),Na=W.discriminatedUnion("status",[qn.extend({status:W.literal("ok")}),W.object({status:W.literal("totp_required"),ticket:W.string()})]),Ia=W.object({user:Aa}),lp=W.object({client:W.string().nullable(),clientVersion:W.string().nullable(),os:W.string().nullable(),osVersion:W.string().nullable(),type:W.string().nullable(),vendor:W.string().nullable(),model:W.string().nullable()}),up=W.object({id:W.number().int(),ip:W.string().nullable(),userAgent:W.string().nullable(),device:lp.nullable(),loginAt:W.string(),lastActiveAt:W.string(),expiresAt:W.string(),current:W.boolean()}),La=W.object({sessions:W.array(up)});import{z as me}from"zod";var Hn=me.string().trim().length(6),mp=me.string().trim().min(10).max(20),Yo=me.string().trim().min(1).max(64),Qo=me.record(me.string(),me.unknown()),uS=me.object({ticket:me.string().min(1),code:Hn}),mS=me.object({ticket:me.string().min(1),code:mp}),dS=me.object({code:Hn.optional()}),pS=me.object({code:Hn}),Ma=me.object({secret:me.string(),otpauthUri:me.string()}),Ni=me.object({recoveryCodes:me.array(me.string())}),dp=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),Oa=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(dp)}),fS=me.object({name:Yo,response:Qo}),gS=me.object({name:Yo}),hS=me.object({response:Qo});import{z as xe}from"zod";var TS=xe.object({account:Ai,password:lo}),pp=xe.object({totp:xe.boolean(),passkeys:xe.boolean()}),wS=xe.discriminatedUnion("status",[xe.object({status:xe.literal("totp_required"),ticket:xe.string()}),xe.object({status:xe.literal("setup_required"),ticket:xe.string(),missing:pp})]),kS=xe.object({ticket:xe.string().min(1)}),vS=xe.object({ticket:xe.string().min(1),code:Hn}),RS=xe.object({ticket:xe.string().min(1),name:Yo,response:Qo}),_S=xe.object({ticket:xe.string().min(1),code:Hn.optional()}),Da=xe.object({username:xe.string(),email:xe.string()}),CS=xe.object({accessToken:xe.string(),admin:Da}),ES=xe.object({admin:Da});import{z as Ii}from"zod";var LS=Ii.object({siteName:Ii.string().trim().min(1).max(64),siteDescription:Ii.string().trim().max(200).optional(),siteOrigin:Ci,username:Pi,email:hn,password:co});import{z as Pe}from"zod";var $a={orderNo:Pe.string(),amountCny:Pe.number().int(),status:fa,credited:Pe.boolean(),refundedAmountCny:Pe.number().int(),succeededRefundCny:Pe.number().int(),pendingRefundCny:Pe.number().int(),createdAt:Pe.string()},uo=Pe.object({...$a,quota:Pe.number(),refundedQuota:Pe.number()}),mo=Pe.object({...$a,planName:Pe.string(),renewal:Pe.boolean(),grantedDurationDays:Pe.number().int()}),Ba=Pe.object({id:Pe.number().int(),amountCny:Pe.number().int(),status:ga,refundTradeNo:Pe.string().nullable(),reason:Pe.string().nullable(),rejectReason:Pe.string().nullable(),createdAt:Pe.string()});function Fa(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 wt}from"zod";var Xo=wt.object({id:wt.number().int(),title:wt.string(),category:ka,priority:va,status:wa,createdAt:wt.string(),updatedAt:wt.string()}),Li=wt.object({id:wt.number().int(),authorKind:Ra,content:wt.string(),createdAt:wt.string()}),Ua=wt.object({ticket:Xo,messages:wt.array(Li)});import{z as po}from"zod";var Mi=po.object({id:po.number().int(),title:po.string(),content:po.string(),level:ba,publishedAt:po.string()});var ja="Asia/Shanghai",fp="+08:00";function gp(e){return new Date(new Date(e).getTime()+288e5)}function hp(e=Date.now()){let t=gp(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function Oi(e=Date.now()){return hp(e).day}function Di(e=Oi()){return new Date(`${e}T00:00:00${fp}`)}function Xt(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var bp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:ja}),yp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:ja});function ee(e){return bp.format(new Date(e))}function Ut(e){return yp.format(new Date(e))}var Sp=[{name:"\u300A\u8BBA\u8BED\u300B",tokens:25e3},{name:"\u300A\u5C0F\u738B\u5B50\u300B",tokens:3e4},{name:"\u300A\u6D3B\u7740\u300B",tokens:11e4},{name:"\u300A\u970D\u6BD4\u7279\u4EBA\u300B",tokens:12e4},{name:"\u300A\u7EA2\u697C\u68A6\u300B",tokens:9e5},{name:"\u300A\u4E09\u4F53\u300B\u4E09\u90E8\u66F2",tokens:11e5},{name:"\u300A\u54C8\u5229\xB7\u6CE2\u7279\u300B\u5168\u4E03\u90E8",tokens:14e5},{name:"\u300A\u9C81\u8FC5\u5168\u96C6\u300B",tokens:85e5},{name:"\u91D1\u5EB8\u5341\u4E94\u90E8\u5C0F\u8BF4",tokens:105e5},{name:"\u300A\u5927\u82F1\u767E\u79D1\u5168\u4E66\u300B",tokens:52e6},{name:"\u300A\u4E8C\u5341\u56DB\u53F2\u300B",tokens:6e7},{name:"\u4E2D\u6587\u7EF4\u57FA\u767E\u79D1",tokens:1e9},{name:"\u300A\u56DB\u5E93\u5168\u4E66\u300B",tokens:12e8}];function xp(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function Tp(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`:`${(o/365).toFixed(1)} \u5E74`}var wp=[...Sp.map(e=>({min:0,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${xp(t/e.tokens)} \u500D`})),{min:3e5,suffix:e=>`\u6253\u5370\u6210 A4 \u7EB8\u7EA6\u6709 ${Math.round(e/1.2/1500).toLocaleString("en-US")} \u9875`},{min:3e5,suffix:e=>`\u6309\u6BCF\u5206\u949F 250 \u5B57\u7684\u8BED\u901F\u6717\u8BFB\u7EA6\u9700 ${Tp(e)}`}];function qa(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=wp.filter(c=>t>=c.min),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 jt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function Zt(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var en=jt({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"}}),GS=Zt({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),Zo=jt({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),VS=jt({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},auto_disabled:{label:"\u81EA\u52A8\u7981\u7528",tone:"warning"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}});var KS=jt({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),$i=Zt({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"}),Ha=Zt({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),Wa=jt({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"}}),er=jt({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),za=Zt({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),fo=Zt({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),yn=Zt({special:"\u4E13\u7968",general:"\u666E\u7968"}),tr=Zt({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"}),go=jt({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),Bi=jt({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),nr=Zt({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),Fi=jt({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}});function Je(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 he(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function Ui(e){return Math.round(e*100)}function Ga(e){return e/100}function Va(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 Va(e,t,2)}function Wn(e,t){return Va(e,t,6)}var or=10080,rr=1440;function Ka(e){if(e%or===0){let t=e/or;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%rr===0){let t=e/rr;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 kp(e){if(e%or===0){let t=e/or;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%rr===0){let t=e/rr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function Ja(e,t){return e.windows.map(o=>`${kp(o.durationMinutes)} ${ae(o.quota,t)}`)}function ji(e){return e.quota<=0?100:Math.min(100,Math.floor(e.used/e.quota*100))}function qi(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"}}function Re(e){return e.toLocaleString("en-US")}function tn(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`:Re(e)}function Sn(e,t){let o=Number(e);return Number.isFinite(o)?o===0&&t!==void 0?t:o.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:12}):e}function xn(e){return(e/1e3).toFixed(2)}function ir(e,t){return`${e}******${t}`}var Hi={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"]},Ya={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 vp}from"os";var Rp=3e4,_p=Pa({cliVersion:lt,platform:process.platform,release:vp(),arch:process.arch,nodeVersion:process.versions.node});async function mt(e,t={}){let o=new Headers(t.headers);o.set("user-agent",_p);let n;t.json!==void 0&&(o.set("content-type","application/json"),n=JSON.stringify(t.json));let r;try{r=await fetch(e,{method:t.method??(n===void 0?"GET":"POST"),headers:o,body:n,signal:AbortSignal.timeout(t.timeoutMs??Rp),redirect:"follow"})}catch(a){let c=URL.canParse(e)?new URL(e).origin:e;throw new U(`\u65E0\u6CD5\u8FDE\u63A5 ${c}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:na,cause:a})}let i=await r.text(),s=null;if(i!=="")try{s=JSON.parse(i)}catch(a){if(r.ok)throw new U(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:a})}return{status:r.status,ok:r.ok,headers:r.headers,data:s}}function Cp(e,t){let o=_a.safeParse(t);if(!o.success)return new U(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:n,message:r}=o.data.error,i=n==="unauthorized"||n==="token_expired"?pn:void 0;return new U(Ca[n]??r,i?{exitCode:i}:{})}function At(e){if(!e.ok)throw Cp(e.status,e.data)}var Za="cf_refresh",ec="cf_device",Qa=6e4;function Xa(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 ho(e,t){return{refresh:Xa(t,Za)??e.refresh,device:Xa(t,ec)??e.device}}function sr(e){let t=[];return e.refresh&&t.push(`${Za}=${e.refresh}`),e.device&&t.push(`${ec}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function Ep(e){let t=e.split(".")[1];if(t===void 0)throw new U("\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 U("\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 U("\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 U("\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:Ep(o.accessToken),username:o.user.username,email:o.user.email,site:e};return yi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function Wi(e){let{device:t}=Tt();return t!==null&&t.site===e?t.cookie:null}async function tc(e,t,o){let n={refresh:null,device:Wi(e)},r=await mt(`${e}/api/auth/login`,{json:{account:t,password:o},headers:sr(n)});At(r);let i=Na.parse(r.data),s=ho(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 nc(e,t,o,n,r){let s=await mt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:sr(t)});At(s);let a=qn.parse(s.data);return bo(e,ho(t,s.headers),a)}function oc(){yi(e=>{e.session=null})}async function Pp(e){let t={refresh:e.refreshCookie,device:Wi(e.site)},o=await mt(`${e.site}/api/auth/refresh`,{method:"POST",headers:sr(t)});if(o.status===401||o.status===403)throw oc(),new U("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:pn});At(o);let n=qn.parse(o.data);return bo(e.site,ho(t,o.headers),n)}async function zi(e=!1){let t=ua();return!e&&Date.now()<t.accessExpiresAt-Qa?t:ma(async()=>{let o=la().session;if(!o)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:pn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-Qa?o:Pp(o)})}async function ar(){let e=Tt().session;if(!e)return;let t=await mt(`${e.site}/api/auth/logout`,{method:"POST",headers:sr({refresh:e.refreshCookie,device:Wi(e.site)})});oc(),At(t)}import{spawn as Ap}from"child_process";function yo(e,t={}){return new Promise((o,n)=>{let r=Ap("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
|
|
4
|
-
`)){let d=l.trimEnd();d!==""&&(s.push(d),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 U(`\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 U(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function rc(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${je(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>ar()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=Ft();Np(n)&&Ip(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await yo(["uninstall","-g",$n])}),t}import{z as So}from"zod";var Lp=So.object({line:So.object({name:So.string(),url:So.string()}).nullable().default(null),lastUpdateCheckAt:So.number().nullable().default(null)}),ic=Ko(Lp,oa,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),Tn=ic.load,cr=ic.update;var Mp=1440*60*1e3;async function sc(){let e=(await yo(["view",$n,"version"])).trim();if(e==="")throw new U(`npm \u6CA1\u6709\u62A5\u51FA ${$n} \u7684\u7248\u672C`);return e}async function ac(e,t){return await yo(["install","-g",`${$n}@${e}`],{background:t}),e}async function cc(){let e=await sc();return e===lt?null:await ac(e,!1)}function Op(){let e=Date.now(),t=Tn().lastUpdateCheckAt;return t!==null&&e-t<Mp?!1:(cr(o=>{o.lastUpdateCheckAt=e}),!0)}async function lc(){if(!Op())return null;let e;try{e=await sc()}catch{return null}return e===lt?null:await ac(e,!0)}import{Box as $b,render as Bb,useInput as Fb}from"ink";import{useEffect as Zs,useRef as Ub}from"react";async function kt(e,t,o={}){let n=await mt(t,o);return At(n),e.parse(n.data)}async function O(e,t,o={}){let n=await zi(),r=s=>mt(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await zi(!0);i=await r(s.accessToken)}return At(i),e.parse(i.data)}function qt(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 uc=e=>O(gn(Mi),qt("/announcements",{...e})),mc=()=>O(Mi.nullable(),"/announcements/unread"),lr=e=>O(Se,`/announcements/${e}/read`,{method:"POST"}).then(()=>{});import{Box as dc,useWindowSize as Dp}from"ink";import{Children as $p}from"react";import{jsx as pc}from"react/jsx-runtime";var Bp=1,Gi=1,J=1;function j(){let{columns:e,rows:t}=Dp();return{width:Math.max(1,e-Bp*2),columns:e,rows:t}}function fc({height:e,children:t}){return pc(dc,{flexDirection:"column",height:e,justifyContent:"space-between",children:$p.toArray(t).map((o,n)=>pc(dc,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as hc}from"ink";import{createContext as Ji,useCallback as ur,useContext as Fp,useEffect as Yi,useMemo as Vi,useRef as xo,useState as gc}from"react";import{jsx as Ki}from"react/jsx-runtime";var mr=Ji(null),Qi=Ji(null),zn={screen:0,panel:10,input:20},Xi=Ji(null);function bc({children:e}){let[t,o]=gc(!1),[n,r]=gc(!1),i=xo(0),s=xo(0),a=xo([]),c=xo(0),l=ur(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),d=ur(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),f=ur(h=>{let y={...h,seq:c.current+=1};return a.current.push(y),()=>{a.current=a.current.filter(x=>x!==y)}},[]),m=ur(()=>{a.current.reduce((y,x)=>y===null||x.layer>y.layer||x.layer===y.layer&&x.seq>y.seq?x:y,null)?.handler()},[]);hc((h,y)=>{y.escape&&m()});let p=Vi(()=>({active:t,acquire:l}),[t,l]),S=Vi(()=>({locked:n,acquire:d}),[n,d]),g=Vi(()=>({push:f,fire:m}),[f,m]);return Ki(mr.Provider,{value:p,children:Ki(Qi.Provider,{value:S,children:Ki(Xi.Provider,{value:g,children:e})})})}function wn(e){let t=Fp(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function dr(e){let{acquire:t}=wn(mr);Yi(()=>{if(e)return t()},[e,t])}function yc(e){let{acquire:t}=wn(Qi);Yi(()=>{if(e)return t()},[e,t])}function pr(){return wn(Qi).locked}function fr(){return wn(mr).active}function z(e,t=!0){let o=wn(mr).active;hc(e,{isActive:t&&!o})}function Sc(){return wn(Xi).fire}function nn(e,{isActive:t=!0,layer:o=zn.screen}={}){let{push:n}=wn(Xi),r=xo(e);r.current=e,Yi(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as Up}from"ink";import{PassThrough as jp}from"stream";import{createContext as qp,useCallback as Hp,useContext as Wp,useEffect as kc,useRef as gr}from"react";import{jsx as ef}from"react/jsx-runtime";var zp="\x1B[?1000h\x1B[?1003h\x1B[?1006h",Gp="\x1B[?1006l\x1B[?1003l\x1B[?1000l",Vp=27,Kp=91,Jp=60,xc=77,Tc=109,wc=20,Yp=64,Qp=32,Xp=20;function Zp(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==Vp){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!==Kp){o.push(r),n+=1;continue}if(s===xc){if(n+6>e.length)break;n+=6;continue}if(s!==Jp){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<wc;){let p=e[a];if(p===xc||p===Tc){c=p;break}a+=1}if(c===void 0){if(a-n<wc)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===Tc||l.length!==3)continue;let d=Number(l[0]),f=Number(l[1]),m=Number(l[2]);!Number.isFinite(d)||!Number.isFinite(f)||!Number.isFinite(m)||t.push((d&Yp)!==0?{row:m,column:f,kind:"wheel",delta:(d&1)===0?-1:1}:{row:m,column:f,kind:(d&Qp)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function vc(e,t){let o=new Set,n=new jp,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(n.write(r),r=Buffer.alloc(0))},a=m=>{i!==null&&clearTimeout(i),i=null;let p=Zp(Buffer.concat([r,m]));r=p.pending,p.clean.length>0&&n.write(p.clean);for(let S of p.events)for(let g of o)g(S);r.length>0&&(i=setTimeout(s,Xp))},c=()=>{t.write(Gp)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},d=m=>{process.exit(128+(l[m]??0))};e.on("data",a),process.once("exit",c);for(let m of Object.keys(l))process.on(m,d);t.write(zp);let f=n;return Object.assign(f,{isTTY:!0,setRawMode(m){return e.setRawMode(m),f},ref(){return e.ref(),f},unref(){return e.unref(),f}}),{stdin:f,subscribe(m){return o.add(m),()=>{o.delete(m)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let m of Object.keys(l))process.off(m,d);e.off("data",a),o.clear()}}}var Rc=qp(null);function _c({subscribe:e,children:t}){let o=gr(new Set).current,n=gr(null),r=Hp(i=>(o.add(i),()=>{o.delete(i)}),[o]);return kc(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let d of o){let f=d.node.current;if(f===null||d.handlers.current.isActive===!1)continue;let m=Up(f);if(s<m.y||s>=m.y+m.height||a<m.x||a>=m.x+m.width)continue;let p=m.width*m.height;(c===null||p<c.area)&&(c={region:d,top:m.y,left:m.x,area:p})}if(i.kind==="move"){let d=c===null?null:c.region;if(n.current!==d){let f=n.current;f!==null&&o.has(f)&&f.handlers.current.onHoverLeave?.(),n.current=d}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]),ef(Rc.Provider,{value:r,children:t})}function $e(e){let t=Wp(Rc);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=gr(null),n=gr(e);return n.current=e,kc(()=>t({node:o,handlers:n}),[t]),o}import{useApp as tf}from"ink";import{createContext as nf,useCallback as kn,useContext as of,useEffect as Zi,useRef as br,useState as wo}from"react";var Ye=[{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"}],Cc="usage",To=e=>Ye.findIndex(t=>t.id===e),hr=e=>To(e)>=0;import{jsx as sf}from"react/jsx-runtime";var rf=5e3,Pc=nf(null),Ac=e=>({id:e,params:void 0}),Ec=()=>Tt().session===null?[{id:"home",params:void 0}]:[Ac(Cc)];function D(){let e=of(Pc);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Nc({ctx:e,children:t}){let o=tf(),[n,r]=wo(Ec),[i,s]=wo(0),[a,c]=wo([]),l=br({announcementsChecked:!1,announcementsShown:!1}).current,d=br(new WeakMap).current,f=kn((C,...L)=>{r(F=>[...F,{id:C,params:L[0]}])},[]),m=kn(()=>{r(C=>C.length>1?C.slice(0,-1):C),s(C=>C+1)},[]),p=kn(C=>{r([Ac(C)]),s(L=>L+1)},[]),S=kn(()=>{r(Ec()),s(C=>C+1)},[]),g=kn(()=>s(C=>C+1),[]),h=kn((C,L)=>{c(F=>[...F,{tone:C,message:L}])},[]),y=kn(()=>c(C=>C.slice(1)),[]),x=a[0]??null;Zi(()=>{if(x===null)return;let C=setTimeout(y,rf);return()=>clearTimeout(C)},[x,y]);let k=n[n.length-1];if(k===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let b=d.get(k);b===void 0&&(b=new Map,d.set(k,b));let T={ctx:e,current:k,depth:n.length,push:f,pop:m,select:p,home:S,reload:g,toast:h,message:x,dismissToast:y,exit:o.exit,revision:i,gate:l,retained:b};return sf(Pc.Provider,{value:T,children:t})}function Ve(e,t){let{retained:o}=D(),[n,r]=wo(()=>e!==void 0&&o.has(e)?o.get(e):t());return Zi(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Q(e,t){let[o,n]=wo({phase:"loading"}),r=br(t);r.current=t;let i=br(0);return Zi(()=>{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:je(a),hint:a instanceof U?a.hint:void 0})})},e),o}import{Box as Or,Text as _n,useInput as $f}from"ink";import{Box as Co,Text as Jn}from"ink";import ko 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"},yr=["#242424","#5a4233","#746533","#70924f","#37be95"],Sr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],Be={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},Gn=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],xr=80,X={cursor:"\u276F",bullet:"\xB7",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var af=ko(X.ellipsis),cf=(e,t)=>e+" ".repeat(Math.max(0,t-ko(e))),lf=(e,t)=>" ".repeat(Math.max(0,t-ko(e)))+e;function Te(e,t){if(t<=0)return"";if(ko(e)<=t)return e;let o=t-af,n="";for(let r of e){if(ko(n+r)>o)break;n+=r}return n+X.ellipsis}var Ae=(e,t)=>cf(Te(e,t),t),on=(e,t)=>lf(Te(e,t),t),Oe=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${X.bullet} `);import{Text as vt,useInput as uf}from"ink";import{useImperativeHandle as mf,useRef as Ic,useEffect as df,useState as Mc}from"react";import es from"string-width";import{jsx as Nt,jsxs as ts}from"react/jsx-runtime";var pf=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Lc(e,t,o){let n=t,r=0;for(;n>0;){let s=es(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=es(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 vo({char:e}){return Nt(vt,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function Tr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,d]=Mc(c.length),f=Math.min(l,c.length),m=Math.max(8,s),p=Ic(e),S=Ic(f);p.current=e,S.current=f,dr(i);let g=T=>{S.current=T,d(T)},h=(T,C)=>{p.current=T,g(C),t(T)};if(mf(a,()=>({moveToColumn:T=>{let C=[...p.current],L=r?Array.from({length:C.length},()=>"\u2022"):C,w=Lc(L,Math.min(S.current,C.length),m).start,E=0;for(;w<C.length;){let R=es(L[w]??"");if(E+R>T)break;E+=R,w+=1}g(w)}})),uf((T,C)=>{let L=[...p.current],F=Math.min(S.current,L.length);if(C.return){o(p.current);return}if(C.tab||C.upArrow||C.downArrow)return;if(C.leftArrow){g(Math.max(0,F-1));return}if(C.rightArrow){g(Math.min(L.length,F+1));return}if(C.home){g(0);return}if(C.end){g(L.length);return}if(C.backspace){if(F===0)return;h([...L.slice(0,F-1),...L.slice(F)].join(""),F-1);return}if(C.delete){if(F>=L.length)return;h([...L.slice(0,F),...L.slice(F+1)].join(""),F);return}if(C.ctrl){if(T==="a")g(0);else if(T==="e")g(L.length);else if(T==="k")h(L.slice(0,F).join(""),F);else if(T==="u")h(L.slice(F).join(""),0);else if(T==="w"){let P=F;for(;P>0&&L[P-1]===" ";)P-=1;for(;P>0&&L[P-1]!==" ";)P-=1;h([...L.slice(0,P),...L.slice(F)].join(""),P)}return}if(C.meta||!T)return;let w=T.search(/[\r\n]/),E=pf(w===-1?T:T.slice(0,w)),R=[...L.slice(0,F),E,...L.slice(F)].join("");h(R,F+[...E].length),w!==-1&&o(R)},{isActive:i}),e===""){let T=[...n??""];return i?ts(vt,{children:[Nt(vo,{char:T[0]??" "}),Nt(vt,{color:u.faintForeground,children:T.slice(1).join("")})]}):Nt(vt,{color:u.faintForeground,children:T.join("")})}let y=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Nt(vt,{color:u.foreground,children:y.join("")});let{before:x,at:k,after:b}=Lc(y,f,m);return ts(vt,{children:[Nt(vt,{color:u.foreground,children:x}),Nt(vo,{char:k}),Nt(vt,{color:u.foreground,children:b})]})}function Qe({label:e}){let[t,o]=Mc(0);return df(()=>{let n=setInterval(()=>o(r=>(r+1)%Gn.length),xr);return()=>clearInterval(n)},[]),ts(vt,{children:[Nt(vt,{color:u.accent,children:Gn[t]}),Nt(vt,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as $c,Text as Vn}from"ink";import{useEffect as Fc,useState as gf}from"react";import Bc from"string-width";import{Box as Oc,Text as wr}from"ink";import ff from"string-width";import{jsx as Ro,jsxs as Dc}from"react/jsx-runtime";var ce=2,it=1,De=1,Rt=it+De;function _o({title:e,note:t,width:o}){let n=t===void 0?0:ff(t)+2,r=Math.max(0,o-ce-n);return Dc(wr,{wrap:"truncate",children:[Ro(wr,{color:u.accent,children:`${X.section} `}),Ro(wr,{bold:!0,color:u.foreground,children:Te(e,r)}),t!==void 0&&Ro(wr,{color:u.faintForeground,children:` ${t}`})]})}function oe({title:e,note:t,width:o,gap:n=De,children:r}){return Dc(Oc,{flexDirection:"column",children:[Ro(_o,{title:e,note:t,width:o}),Ro(Oc,{flexDirection:"column",marginTop:n,paddingLeft:ce,children:r})]})}import{jsx as Ht,jsxs as jc}from"react/jsx-runtime";var Kn=e=>!("heading"in e),hf=e=>e.flatMap(t=>!Kn(t)&&t.heading!==""?[t,{heading:""}]:[t]),Uc=2,kr=2,bf=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function yf(e,t,o,n){let[r,i]=Ve(n,()=>e.findIndex(d=>Kn(d)&&d.disabled!==!0));Fc(()=>{i(d=>d>=e.length?Math.max(0,e.length-1):d)},[e.length]);let s=d=>{i(f=>{let m=e.length;if(m===0)return f;let p=f;for(let S=0;S<m;S+=1){p=(p+d+m)%m;let g=e[p];if(g!==void 0&&Kn(g)&&g.disabled!==!0)return p}return f})},a=d=>{let f=e[d];return f!==void 0&&Kn(f)&&f.disabled!==!0?f:null},c=d=>{a(d)!==null&&i(d)},l=d=>{let f=a(d);f!==null&&(i(d),o(f.value))};return z((d,f)=>{if(f.upArrow||d==="k"){s(-1);return}if(f.downArrow||d==="j"){s(1);return}f.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function ns(e,t){let[o,n]=gf(()=>e>=t?e-t+1:0);return Fc(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function Sf(e,t){let o=e.filter(Kn),n=Math.max(0,...o.map(s=>Bc(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:Bc(s.badge))),i=Uc+n+(r>0?r+kr:0)+kr;return{label:n,badge:r,hint:Math.max(0,t-i)}}function xf({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?Be[e.labelTone]:t?u.accent:u.foreground;return jc(Vn,{wrap:"truncate",children:[Ht(Vn,{color:u.accent,children:t?`${X.cursor} `:" "}),Ht(Vn,{color:r,bold:t,children:Ae(e.label,o.label)}),o.badge>0&&Ht(Vn,{color:e.badgeTone===void 0?u.faintForeground:Be[e.badgeTone],children:`${" ".repeat(kr)}${Ae(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&Ht(Vn,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(kr)}${Te(e.hint,o.hint)}`})]})}function Tf({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=ns(t,n),d=e.slice(l,l+n),f=p=>p<d.length?l+p:null,m=$e({isActive:i,onWheel:c,onClick:({row:p})=>{let S=f(p);S!==null&&s(S)},onHover:({row:p})=>{let S=f(p);S!==null&&a(S)}});return jc($c,{ref:m,flexDirection:"column",children:[d.map((p,S)=>{let g=l+S;return Kn(p)?Ht(xf,{item:p,active:g===t&&i,metrics:o},g):p.heading===""?Ht($c,{height:1},g):Ht(_o,{title:p.heading,width:r},g)}),e.length>n&&Ht(Vn,{color:u.faintForeground,children:`${" ".repeat(Uc)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function le({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=hf(e),a=yf(s,r,t,i);return Ht(Tf,{items:s,cursor:a.index,metrics:Sf(s,o),window:bf(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as dt,jsxs as vr}from"react/jsx-runtime";var qc={ok:{glyph:X.ok,color:u.success},warn:{glyph:X.warn,color:u.warning},fail:{glyph:X.fail,color:u.danger},info:{glyph:X.bullet,color:u.mutedForeground}};function fe({tone:e,title:t,detail:o,width:n}){let r=qc[e];return vr(Co,{flexDirection:"column",children:[vr(Jn,{children:[dt(Jn,{color:r.color,children:`${r.glyph} `}),dt(Jn,{color:u.foreground,children:Te(t,n-2)})]}),o!==void 0&&dt(Jn,{color:u.faintForeground,children:` ${Te(o,n-2)}`})]})}function vn({message:e,hint:t,width:o}){return dt(fe,{tone:"fail",title:e,detail:t,width:o})}var wf=2,kf=2;function Hc({tone:e,message:t,width:o,onDismiss:n}){let r=qc[e],i=$e({onClick:n});return vr(Co,{ref:i,children:[dt(Jn,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),dt(Jn,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${Te(t,o-wf-kf)} `})]})}function qe({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return vr(Co,{flexDirection:"column",children:[dt(fe,{tone:"warn",title:e,detail:t,width:i}),a!=null&&dt(Co,{marginTop:1,children:dt(vn,{message:a.message,hint:a.hint,width:i})}),dt(Co,{marginTop:1,children:typeof s=="string"?dt(Qe,{label:s}):dt(le,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as vf,Text as Rr,useInput as Rf}from"ink";import{useRef as _f,useState as Cf}from"react";import{jsx as _r,jsxs as Ef}from"react/jsx-runtime";function rn({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]=Cf(n?s:0),l=_f(s);if(s!==l.current){let p=a>=l.current;l.current=s;let S=n&&p?s:Math.min(a,s);S!==a&&c(S)}let d=p=>c(S=>Math.min(Math.max(0,S+p),s));Rf((p,S)=>{S.upArrow?d(-1):S.downArrow?d(1):S.pageUp?d(-i):S.pageDown&&d(i)},{isActive:o&&r}),z(p=>{p==="k"?d(-1):p==="j"&&d(1)},o&&r);let f=$e({isActive:o&&r,onWheel:d}),m=e.slice(a,a+i);return Ef(vf,{ref:f,flexDirection:"column",children:[m.map((p,S)=>_r(Rr,{wrap:"truncate",children:p.spans.length===0?" ":p.spans.map((g,h)=>_r(Rr,{color:g.color??u.foreground,bold:g.bold===!0,children:g.text},h))},a+S)),Array.from({length:Math.max(0,i-m.length)},(p,S)=>_r(Rr,{children:" "},S)),r&&_r(Rr,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function We(e){return e.tone==="neutral"?void 0:e.tone}function Wt(e){let t=We(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as os,useRef as Pf,useState as Wc}from"react";function ge(){let e=D(),[t,o]=Wc(null),[n,r]=Wc(null),i=Pf(0),s=os(()=>{i.current+=1,o(null),r(null)},[]),a=os((l,d)=>{r({message:l,hint:d})},[]),c=os((l,d,f={})=>{let m=i.current+=1;o(l),r(null),d().then(p=>{i.current===m&&(o(null),f.onSuccess?.(p))}).catch(p=>{if(i.current!==m)return;o(null);let S={message:je(p),hint:p instanceof U?p.hint:void 0};f.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as Af}from"marked";import Cr from"string-width";var Nf={spans:[]},rs=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function zc(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 It(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(zc(i)),a=!1,i=n(),s=o};for(let l of e)for(let d of l.text){if(d===`
|
|
5
|
-
`){c();continue}let f=
|
|
6
|
-
`});break;case"escape":o.push({text:n.text,...t});break;default:o.push({text:n.raw,...t})}return o}var
|
|
7
|
-
`))o.push(...It([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=is(r.tokens??[],Math.max(4,t-2));for(let s of i)o.push({spans:[{text:`${X.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}. `:`${X.bullet} `,d=Cr(l),f=is(a.tokens,Math.max(4,t-d));f.forEach((m,p)=>{rs(m)&&p===f.length-1||o.push({spans:p===0?[{text:l,color:u.mutedForeground},...m.spans]:[{text:" ".repeat(d)},...m.spans]})})}),n();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:u.faintForeground}]}),n();break;case"table":o.push(...If(r.header,r.rows,r.raw,t)),n();break;default:o.push(...It([{text:r.raw,color:u.foreground}],t))}return o}function Yn(e,t){let o=Af.lex(e,{gfm:!0,breaks:!0}),n=is(o,Math.max(8,t));for(;n.length>0&&rs(n[n.length-1]);)n.pop();return n}import{Box as Po}from"ink";import{Box as Lf,Text as Kc}from"ink";import Yc from"string-width";import{jsx as Jc,jsxs as Mf}from"react/jsx-runtime";var Er=["\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"],Qc=Math.max(...Er.map(e=>Yc(e))),Pr=Er.length,Ar=e=>Qc<=e;function Nr({width:e}){let t=`v${lt}`,o=Qc+2+Yc(t)<=e;return Jc(Lf,{flexDirection:"column",children:Er.map((n,r)=>Mf(Kc,{color:u.accent,children:[n,r===Er.length-1&&o&&Jc(Kc,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as cs,Text as st}from"ink";import{useState as Xc}from"react";import Xn from"string-width";import{jsx as pt,jsxs as Ir}from"react/jsx-runtime";var Lr=2,ss=` ${X.crumb} `;function Mr({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((m,p)=>m+Xn(p)+Xn(ss),0),a=s+Xn(r)<=t,c=a?s:0,[l,d]=Xc(!1),f=$e({isActive:n,onClick:({column:m})=>{m<c&&o()},onHover:({column:m})=>d(m<c),onHoverLeave:()=>d(!1)});return pt(cs,{ref:f,marginBottom:1,children:a?Ir(st,{children:[i.map((m,p)=>Ir(st,{children:[pt(st,{color:p===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:m}),pt(st,{color:u.faintForeground,children:ss})]},p)),pt(st,{bold:!0,color:u.foreground,children:r})]}):pt(st,{color:u.mutedForeground,children:Te(e.join(ss),t)})})}var as=2,Eo=2,Qn=2;function Zc({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,To(e)),[i,s]=Xc(null),a=Math.max(...Ye.map(y=>Xn(y.label))),l=(y=>y*a+(y-1)*Eo+as)(Ye.length)>t,d=l?t-Qn*2:t,f=l?Math.max(1,Math.floor((d+Eo-as)/(a+Eo))):Ye.length,m=Math.min(Math.max(0,r-Math.floor((f-1)/2)),Ye.length-f),p=Ye.slice(m,m+f),S=[],g=l?Qn:0;p.forEach((y,x)=>{x>0&&(g+=Eo);let k=Xn(y.label)+(y.id===e?as:0);S.push({id:y.id,from:g,to:g+k}),g+=k});let h=$e({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(b=>y>=b.from&&y<b.to);if(x!==void 0){o(x.id);return}if(!l||y>=Qn&&y<g)return;let k=y<Qn?Ye[m-1]:Ye[m+f];k!==void 0&&o(k.id)}});return pt(cs,{ref:h,marginBottom:1,children:Ir(st,{wrap:"truncate",children:[l&&pt(st,{color:u.border,children:m>0?`${X.prev} `:" ".repeat(Qn)}),p.map((y,x)=>Ir(st,{children:[x>0&&" ".repeat(Eo),y.id===e?pt(st,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${y.label} `}):pt(st,{color:n&&y.id===i?u.foreground:u.mutedForeground,children:y.label})]},y.id)),l&&pt(st,{color:u.border,children:m+f<Ye.length?` ${X.next}`:" ".repeat(Qn)})]})})}function el({hints:e,width:t}){let o=[];for(let n of e){if(Xn(Oe([...o,n]))>t)break;o.push(n)}return pt(cs,{children:pt(st,{color:u.faintForeground,children:Oe(o)})})}import{Fragment as Df,jsx as Xe,jsxs as ol}from"react/jsx-runtime";var tl=3,Of=8;function Ao(e){let{rows:t}=j();return Math.max(1,t-Gi-tl-e)}function nl(){let e=D(),{width:t,rows:o}=j(),n=e.current.id,r=e.depth===1&&hr(n)?n:null,i=Math.max(1,o-Gi-tl),s=Pr+J,a=r!==null&&Ar(t)&&i-Lr-s>=Of;return{tab:r,mark:a,rows:a?Lr+s:Lr}}var re=()=>Ao(nl().rows);function Rn({header:e,hints:t,children:o}){let{width:n}=j(),{message:r,dismissToast:i}=D();return ol(Po,{flexDirection:"column",flexGrow:1,children:[e,Xe(Po,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:Xe(Po,{flexDirection:"column",flexShrink:0,children:o})}),Xe(Po,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&Xe(Hc,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),Xe(el,{hints:t,width:n})]})}function G({trail:e,hints:t=[],children:o,onEscape:n,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=D(),{width:c}=j(),{tab:l,mark:d}=nl(),f=pr(),m=fr(),p=m?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=m?[]:["? \u5E2E\u52A9"];nn(n??a.pop,{isActive:r});let g=Sc(),h=r&&!i&&!f;return z(y=>{if(l===null||y!=="["&&y!=="]")return;let x=Ye[(To(l)+(y==="["?-1:1)+Ye.length)%Ye.length];x!==void 0&&a.select(x.id)},r&&!i&&!f&&!s),s?Xe(Rn,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?Xe(Rn,{header:ol(Df,{children:[d&&Xe(Po,{marginBottom:J,children:Xe(Nr,{width:c})}),Xe(Zc,{current:l,width:c,onPick:y=>{y===l?g():a.select(y)},isActive:h})]}),hints:i?t:[...t,...p],children:o}):Xe(Rn,{header:Xe(Mr,{trail:["CodeFlow",...e??[]],width:c,onBack:g,isActive:h}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function Y({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?Xe(Qe,{label:t}):e.phase==="error"?Xe(vn,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as ft,jsxs as ls}from"react/jsx-runtime";function rl({params:e}){let t=D(),{width:o}=j(),n=re(),{item:r}=e,{busy:i,error:s,run:a}=ge();$f((f,m)=>{m.return&&a("\u6B63\u5728\u786E\u8BA4",()=>lr(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=go(r.level),l=We(c),d=Math.max(3,n-4-(s===null?0:2));return ft(G,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:ls(Or,{flexDirection:"column",children:[ls(_n,{wrap:"truncate",children:[ft(_n,{bold:!0,color:u.foreground,children:r.title}),ft(_n,{color:l===void 0?u.mutedForeground:Be[l],children:` ${c.label}`}),ft(_n,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${Ut(r.publishedAt)}`})]}),ft(Or,{marginTop:1,children:ft(rn,{lines:Yn(r.content,o),height:d})}),s!==null&&ft(Or,{marginTop:1,children:ft(vn,{message:s.message,hint:s.hint,width:o})}),ft(Or,{marginTop:1,children:i!==null?ft(Qe,{label:i}):ls(_n,{wrap:"truncate",children:[ft(_n,{color:u.accent,children:`${X.cursor} `}),ft(_n,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as fs,Text as Dr}from"ink";import{useState as Vf}from"react";import{Box as us,Text as zt}from"ink";import{useEffect as il,useRef as Bf,useState as sl}from"react";import ms from"string-width";import{jsx as sn,jsxs as Io}from"react/jsx-runtime";var al=e=>e===void 0?"":typeof e=="string"?e:e.text,ds=2,Ff=6;function Uf(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 ps(e,t,o){let n=e.map((c,l)=>Math.max(ms(c.label),...t.map(d=>ms(d[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+ds*Math.max(0,e.length-1)-o;if(i<0)return Uf(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)>Ff).sort((l,d)=>(n[d]??0)-(n[l]??0))[0];if(c===void 0)break;n[c]=(n[c]??0)-1,i-=1}return n}var jf=(e,t,o)=>t.map((n,r)=>n.align==="right"?on(e[r]??"",o[r]??0):Ae(e[r]??"",o[r]??0)).join(" ".repeat(ds)),No=2,qf=2;function _e({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:d}){let f=$=>d===void 0?void 0:`${d}:${$}`,m=i!==void 0,[p,S]=Ve(m?f("cursor"):void 0,()=>0),[g,h]=Ve(f("query"),()=>""),[y,x]=sl(!1),k=g.trim().toLowerCase(),b=k===""||s===void 0?e:e.filter($=>s($).toLowerCase().includes(k)),T=y||k!=="",C=Math.max(1,r-1-(T?1:0)),L=b.length>C?Math.max(1,C-1):C,F=Math.max(0,b.length-L),[w,E]=sl(()=>p>=L?p-L+1:0);il(()=>{S($=>Math.min($,Math.max(0,b.length-1)))},[b.length]),il(()=>{E($=>m?p<$?p:p>=$+L?p-L+1:$:Math.min($,F))},[p,L,F,m]);let R=$=>{if(!m){E(ne=>Math.min(Math.max(0,ne+$),F));return}b.length!==0&&S(ne=>(ne+$+b.length)%b.length)};z(($,ne)=>{if(ne.upArrow||$==="k"){R(-1);return}if(ne.downArrow||$==="j"){R(1);return}if(ne.return){let q=b[p];q!==void 0&&i?.(q,p);return}s!==void 0&&$.startsWith("/")&&(x(!0),$.length>1&&h($.slice(1)))},a&&!y),nn(()=>{x(!1),h("")},{isActive:y||k!=="",layer:y?zn.input:zn.panel});let P=T?1:0,v=Bf(null),M=$=>{if($<=P)return null;let ne=w+$-P-1;return b[ne]===void 0?null:ne},_=$e({isActive:a,onWheel:R,onClick:({row:$,column:ne})=>{if(T&&$===0){x(!0),v.current?.moveToColumn(ne-qf);return}if(i===void 0)return;let q=M($);if(q===null)return;let se=b[q];se!==void 0&&(S(q),i(se,q))},onHover:m?({row:$})=>{let ne=M($);ne!==null&&S(ne)}:void 0}),N=ps(t,b.map($=>o($).map(al)),n-No),H=b.slice(w,w+L);return Io(us,{ref:_,flexDirection:"column",children:[T&&Io(us,{children:[sn(zt,{color:u.accent,children:"/ "}),sn(Tr,{ref:v,value:g,onChange:h,onSubmit:()=>x(!1),isActive:y,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-ms(` ${b.length}/${e.length}`)}),sn(zt,{color:u.faintForeground,children:` ${b.length}/${e.length}`})]}),Io(zt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(No),jf(t.map($=>$.label),t,N)]}),b.length===0?Io(us,{flexDirection:"column",children:[sn(zt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(No)}${k===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&k===""&&C>1&&sn(zt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(No)}${l}`})]}):H.map(($,ne)=>{let q=w+ne,se=m&&q===p&&a,ot=se?u.accent:a?u.foreground:u.mutedForeground,A=o($);return Io(zt,{wrap:"truncate",children:[sn(zt,{color:u.accent,children:se?`${X.cursor} `:" "}),t.map((B,K)=>{let de=A[K],Ie=al(de),yt=B.align==="right"?on(Ie,N[K]??0):Ae(Ie,N[K]??0),St=typeof de=="object"?de.tone:void 0,Le=!se&&a&&St!==void 0?Be[St]:ot;return sn(zt,{color:Le,bold:se,children:K>0?`${" ".repeat(ds)}${yt}`:yt},B.label)})]},q)}),(w>0||w+L<b.length)&&sn(zt,{color:u.faintForeground,children:`${" ".repeat(No)}${w+1}-${Math.min(w+L,b.length)} / ${b.length}`})]})}import{Text as Hf}from"ink";import{useEffect as Wf,useState as zf}from"react";import{jsx as Gf}from"react/jsx-runtime";var cl=100;function an(e,t,{retain:o}={}){let[n,r]=Ve(o,()=>1),[i,s]=zf({pages:1,total:0}),a=Q([...e,n],()=>t(n,cl));Wf(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/cl)),total:a.data.total})},[a]);let c=d=>{r(f=>Math.min(Math.max(1,f+d),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function cn({page:e,pages:t,total:o,width:n}){return Gf(Hf,{wrap:"truncate",color:u.faintForeground,children:Te(Oe([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as Gt,jsxs as gs}from"react/jsx-runtime";function ll(){let e=D(),{width:t}=j(),o=re(),[n,r]=Vf({name:"list"}),i=an([e.revision],(a,c)=>uc({page:a,pageSize:c}),{retain:"page"});z((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 Gt(G,{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:Gt(Y,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=go(n.item.level),l=We(c);return gs(fs,{flexDirection:"column",children:[gs(Dr,{wrap:"truncate",children:[Gt(Dr,{bold:!0,color:u.foreground,children:n.item.title}),Gt(Dr,{color:l===void 0?u.mutedForeground:Be[l],children:` ${c.label}`}),Gt(Dr,{color:u.faintForeground,children:` ${Oe([`\u53D1\u5E03\u4E8E ${Ut(n.item.publishedAt)}`])}`})]}),Gt(fs,{marginTop:1,children:Gt(rn,{lines:Yn(n.item.content,t),height:Math.max(3,o-2)})})]})}return gs(fs,{flexDirection:"column",children:[Gt(_e,{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,Wt(go(c.level)),Ut(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"}),Gt(cn,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as ht,Text as Oo}from"ink";import{useState as Vl}from"react";import hg from"string-width";var ul=()=>O(Ia,"/auth/me"),ml=e=>O(Se,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),dl=e=>O(Se,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),pl=e=>O(Se,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),fl=e=>O(Se,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),gl=()=>O(La,"/auth/me/sessions"),hl=e=>O(Se,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),bl=()=>O(Oa,"/auth/me/security"),hs=e=>O(Ma,"/auth/me/totp/setup",{method:"POST",json:e}),yl=e=>O(Ni,"/auth/me/totp/confirm",{method:"POST",json:e}),Sl=e=>O(Se,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),xl=e=>O(Ni,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),Tl=(e,t)=>O(Se,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),wl=e=>O(Se,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Mt,measureElement as Al,Text as Ce,useInput as Ol}from"ink";import{useEffect as Xf,useRef as Nl,useState as Zn}from"react";import xs from"string-width";import{Box as Kf,Text as ln,useInput as Jf}from"ink";import{useRef as kl,useState as vl}from"react";import ys from"string-width";import{jsx as Vt,jsxs as El}from"react/jsx-runtime";var Yf=e=>e.replace(/\r\n?/g,`
|
|
8
|
-
`).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function
|
|
9
|
-
`){o.push({start:n,end:i,nl:!0}),n=i+1,r=0;continue}let a=
|
|
2
|
+
import{once as ty}from"events";import{createInterface as ny}from"readline/promises";import{parseArgs as oy}from"util";var na={name:"@codeflow-ai/cli",version:"1.17.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","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.2",ink:"7.1.1",marked:"18.0.5",qrcode:"1.5.4",react:"19.2.0","smol-toml":"1.7.0","string-width":"8.2.0",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 ut="codeflow",mt=na.version,oa="https://codeflow.asia",Fn="@codeflow-ai/cli",co=0,Un=1,bi=2,gn=3,ra=4;import{randomBytes as Ld}from"crypto";import{mkdirSync as ca,readFileSync as Md,rmSync as la,statSync as Od,writeFileSync as Dd}from"fs";import{join as ua}from"path";import{setTimeout as $d}from"timers/promises";import{z as wt}from"zod";var U=class extends Error{exitCode;hint;constructor(t,o={}){super(t,{cause:o.cause}),this.name="CliError",this.exitCode=o.exitCode??Un,this.hint=o.hint}};function qe(e){return e instanceof Error?e.message:String(e)}import{chmodSync as Rd,existsSync as Cd,mkdirSync as Ed,readFileSync as Pd,writeFileSync as Ad}from"fs";import{dirname as Nd}from"path";function jn(e){return Cd(e)?Pd(e,"utf8"):null}function yi(e,t,o){Ed(Nd(e),{recursive:!0,mode:448});try{Ad(e,t,{mode:o}),Rd(e,o)}catch(n){throw new U(`\u5199\u5165 ${e} \u5931\u8D25\uFF1A${qe(n)}`,{cause:n})}}function Ko(e){let t=jn(e);if(t===null)return null;if(t.trim()==="")return{};let o;try{o=JSON.parse(t)}catch(n){throw new U(`${e} \u4E0D\u662F\u5408\u6CD5 JSON\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:n})}if(typeof o!="object"||o===null||Array.isArray(o))throw new U(`${e} \u7684\u9876\u5C42\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);return o}function Jo(e,t,o){yi(e,`${JSON.stringify(t,null,2)}
|
|
3
|
+
`,o)}function Yo(e,t,o,n){let r=null,i=()=>{if(r)return r;let s=t(),a=jn(s);if(a===null)return r=e.parse({}),r;let c;try{c=JSON.parse(a)}catch(d){throw new U(`${o} ${s} \u5DF2\u635F\u574F\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${n}`,{cause:d})}let l=e.safeParse(c);if(!l.success)throw new U(`${o} ${s} \u7ED3\u6784\u4E0D\u7B26\uFF0C\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u540E${n}`);return r=l.data,r};return{load:i,reload:()=>(r=null,i()),update:s=>{let a=structuredClone(i());return s(a),Jo(t(),a,384),r=a,a}}}import{homedir as Id}from"os";import{join as qn}from"path";function jt(){let e=process.env.XDG_CONFIG_HOME;if(e)return qn(e,"codeflow");if(process.platform==="win32"){let t=process.env.APPDATA;if(t)return qn(t,"codeflow")}return qn(Id(),".config","codeflow")}var ia=()=>qn(jt(),"config.json"),sa=()=>qn(jt(),"credentials.json"),aa=()=>qn(jt(),"refresh.lock");var Bd=wt.object({refreshCookie:wt.string(),accessToken:wt.string(),accessExpiresAt:wt.number(),username:wt.string(),email:wt.string(),site:wt.string()}),Fd=wt.object({site:wt.string(),cookie:wt.string()}),Ud=wt.object({session:Bd.nullable().default(null),device:Fd.nullable().default(null)}),Si=Yo(Ud,sa,"\u672C\u5730\u51ED\u636E","\u91CD\u65B0\u767B\u5F55"),kt=Si.load,ma=Si.reload,xi=Si.update;function da(){let{session:e}=kt();if(!e)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:gn});return e}var jd=6e4,qd=75e3,Hd=120;function Wd(e,t){try{ca(e)}catch{try{Date.now()-Od(e).mtimeMs>jd&&la(e,{recursive:!0,force:!0})}catch{}return!1}return Dd(ua(e,"owner"),t),!0}function zd(e,t){let o;try{o=Md(ua(e,"owner"),"utf8")}catch{return}o===t&&la(e,{recursive:!0,force:!0})}async function pa(e){let t=aa(),o=Ld(16).toString("hex");ca(jt(),{recursive:!0,mode:448});let n=Date.now()+qd;for(;!Wd(t,o);){if(Date.now()>n)throw new U(`\u7B49\u5F85\u5237\u65B0\u9501\u8D85\u65F6\uFF0C\u82E5\u786E\u8BA4\u6CA1\u6709\u5176\u4ED6 ${ut} \u5728\u8FD0\u884C\uFF0C\u8BF7\u5220\u9664 ${t}`);await $d(Hd)}try{return await e()}finally{zd(t,o)}}function Gd(){let e=process.env.CODEFLOW_SITE;if(e)return e;let t=kt().session;return t?t.site:oa}function fa(){return{site:Gd()}}function hn(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 Dp,rmSync as $p}from"fs";import{z as Oe}from"zod";var Vd=["active","disabled"],Uy=Oe.enum(Vd),Kd=["openai","anthropic"],jy=Oe.enum(Kd),Jd=["openai-chat","openai-responses","anthropic-messages"],ga=Oe.enum(Jd);var Yd=["enabled","disabled"],qy=Oe.enum(Yd),lo=["pending","paid","refund_requested","partially_refunded","refunded","failed","expired"],ha=Oe.enum(lo),Qd=["recharge","subscription"],Hy=Oe.enum(Qd),Xd=["requested","pending","succeeded","failed","rejected","canceled"],ba=Oe.enum(Xd),Ti=["pending","issued","rejected"],ya=Oe.enum(Ti),Zd=["special","general"],wi=Oe.enum(Zd),ep=["info","success","warning","error"],Sa=Oe.enum(ep),tp=["terms","privacy"],Wy=Oe.enum(tp),ki=["recharge","reserve","consume","reserve_refund","refund","refund_release","reward","admin_adjust"],xa=Oe.enum(ki),np=["usage_log","order","invitation","admin"],Ta=Oe.enum(np),vi=["first_inviter","first_invitee","subsequent_inviter"],wa=Oe.enum(vi),_i=["success","error","canceled","anomaly"],ka=Oe.enum(_i),Ri=["open","replied","closed"],va=Oe.enum(Ri),Ci=["billing","technical","account","other"],_a=Oe.enum(Ci),Ei=["low","normal","high"],Ra=Oe.enum(Ei),op=["user","admin"],Ca=Oe.enum(op);import{z as Hn}from"zod";var rp=["internal_error","validation_error","not_found","conflict","model_in_use","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_last_remaining","passkey_not_found","passkey_origin_not_allowed","insufficient_quota","no_available_channel","model_not_found","token_group_missing","token_quota_exceeded","upstream_error","pricing_catalog_unavailable","channel_name_taken","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","subscription_revoked","plan_disabled","plan_in_use","group_in_use","order_already_invoiced","order_not_eligible","order_invoiced","invoice_profile_exists","invite_code_invalid","ticket_closed","ticket_limit_exceeded","backup_not_configured","backup_running"],ip=Hn.enum(rp),Ea=Hn.object({error:Hn.object({code:ip,message:Hn.string(),details:Hn.unknown().optional(),requestId:Hn.string().optional()})});var Pa={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",model_in_use:"\u8BE5\u6A21\u578B\u4ECD\u88AB\u6E20\u9053\u4F7F\u7528\uFF0C\u8BF7\u5148\u5728\u6E20\u9053\u4E2D\u79FB\u9664\u540E\u518D\u4FEE\u6539\u6216\u5220\u9664\u5B9A\u4EF7",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_last_remaining:"\u7BA1\u7406\u5458\u81F3\u5C11\u9700\u4FDD\u7559\u4E00\u679A Passkey\uFF0C\u65E0\u6CD5\u5220\u9664",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",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",pricing_catalog_unavailable:"\u5B98\u65B9\u4EF7\u683C\u8868\u83B7\u53D6\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",channel_name_taken:"\u8BE5\u6E20\u9053\u540D\u79F0\u5DF2\u88AB\u4F7F\u7528",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",subscription_revoked:"\u8BE5\u8BA2\u9605\u5DF2\u88AB\u4F5C\u5E9F",plan_disabled:"\u8BE5\u5957\u9910\u5DF2\u505C\u552E",plan_in_use:"\u8BE5\u5957\u9910\u5DF2\u6709\u8BA2\u9605\u6216\u8BA2\u5355\u5F15\u7528\uFF0C\u65E0\u6CD5\u5220\u9664\uFF08\u53EF\u6539\u4E3A\u505C\u552E\u5E76\u9690\u85CF\uFF09",group_in_use:"\u8BE5\u5206\u7EC4\u6B63\u88AB\u8BA2\u9605\u5957\u9910\u8986\u76D6\uFF0C\u8BF7\u5148\u8C03\u6574\u5957\u9910\u7684\u8986\u76D6\u5206\u7EC4\u540E\u518D\u5220\u9664",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",backup_not_configured:"\u5C1A\u672A\u914D\u7F6E\u5907\u4EFD\u5B58\u50A8",backup_running:"\u5907\u4EFD\u6B63\u5728\u8FDB\u884C\u4E2D"};import{z as ue}from"zod";var sp=ue.string().trim().min(1),Pi=sp.pipe(ue.url()),ap=ue.object({name:ue.string().trim().min(1).max(64),description:ue.string().trim().min(1).max(200),url:Pi}),Aa=ue.array(ap),cp=["string","number","boolean","secret","markdown","money","api-lines","origins"],lp=ue.enum(cp),up=ue.object({key:ue.string(),type:lp,label:ue.string(),description:ue.string().optional(),value:ue.unknown().optional(),secret:ue.boolean().default(!1),required:ue.boolean().default(!1),min:ue.number().optional(),max:ue.number().optional(),step:ue.number().optional(),unit:ue.string().optional(),placeholder:ue.string().optional()}),Yy=ue.object({key:ue.string(),label:ue.string(),description:ue.string().optional(),fields:ue.array(up)}),Qy=ue.object({values:ue.record(ue.string(),ue.unknown()).refine(e=>Object.keys(e).length>0,{message:"at least one value required"})}),Xy=ue.object({fields:ue.record(ue.string(),ue.string())});function Na(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],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 dt}from"zod";var Ai=1e8;var nS=dt.object({id:dt.coerce.number().int().positive()}),oS=dt.object({page:dt.coerce.number().int().min(1).default(1),pageSize:dt.coerce.number().int().min(1).max(100).default(20)});function bn(e){return dt.object({items:dt.array(e),total:dt.number().int().nonnegative(),page:dt.number().int().positive(),pageSize:dt.number().int().positive()})}var Se=dt.object({ok:dt.literal(!0)});import{z as W}from"zod";var yn=W.email().max(254).toLowerCase(),it=8,uo=W.string().min(it).max(128),mo=W.string().min(1).max(128),Sn=32,Ni=W.string().trim().min(1).max(Sn),Ii=W.string().trim().min(1).max(254),mp=["register","reset_password"],sS=W.object({email:yn,purpose:W.enum(mp)}),aS=W.object({username:Ni,email:yn,password:uo,code:W.string().min(4).max(8),inviteCode:W.string().trim().min(1).max(32).optional()}),cS=W.object({account:Ii,password:mo}),lS=W.object({email:yn,code:W.string().min(4).max(8),password:uo}),uS=W.object({oldPassword:mo,newPassword:uo}),mS=W.object({email:yn}),dS=W.object({email:yn,code:W.string().min(4).max(8),password:mo}),Ia=W.object({username:W.string(),email:W.string()}),Wn=W.object({accessToken:W.string(),user:Ia}),La=W.discriminatedUnion("status",[Wn.extend({status:W.literal("ok")}),W.object({status:W.literal("totp_required"),ticket:W.string()})]),Ma=W.object({user:Ia}),dp=W.object({client:W.string().nullable(),clientVersion:W.string().nullable(),os:W.string().nullable(),osVersion:W.string().nullable(),type:W.string().nullable(),vendor:W.string().nullable(),model:W.string().nullable()}),pp=W.object({id:W.number().int(),ip:W.string().nullable(),userAgent:W.string().nullable(),device:dp.nullable(),loginAt:W.string(),lastActiveAt:W.string(),expiresAt:W.string(),current:W.boolean()}),Oa=W.object({sessions:W.array(pp)});import{z as me}from"zod";var zn=me.string().trim().length(6),fp=me.string().trim().min(10).max(20),Xo=me.string().trim().min(1).max(64),Zo=me.record(me.string(),me.unknown()),gS=me.object({ticket:me.string().min(1),code:zn}),hS=me.object({ticket:me.string().min(1),code:fp}),bS=me.object({code:zn.optional()}),yS=me.object({code:zn}),Da=me.object({secret:me.string(),otpauthUri:me.string()}),Li=me.object({recoveryCodes:me.array(me.string())}),gp=me.object({id:me.number().int(),name:me.string(),createdAt:me.string(),lastUsedAt:me.string().nullable()}),$a=me.object({totp:me.object({enabled:me.boolean(),enabledAt:me.string().nullable(),recoveryCodesRemaining:me.number().int()}),passkeys:me.array(gp)}),SS=me.object({name:Xo,response:Zo}),xS=me.object({name:Xo}),TS=me.object({response:Zo});import{z as xe}from"zod";var RS=xe.object({account:Ii,password:mo}),hp=xe.object({totp:xe.boolean(),passkeys:xe.boolean()}),CS=xe.discriminatedUnion("status",[xe.object({status:xe.literal("totp_required"),ticket:xe.string()}),xe.object({status:xe.literal("setup_required"),ticket:xe.string(),missing:hp})]),ES=xe.object({ticket:xe.string().min(1)}),PS=xe.object({ticket:xe.string().min(1),code:zn}),AS=xe.object({ticket:xe.string().min(1),name:Xo,response:Zo}),NS=xe.object({ticket:xe.string().min(1),code:zn.optional()}),Ba=xe.object({username:xe.string(),email:xe.string()}),IS=xe.object({accessToken:xe.string(),admin:Ba}),LS=xe.object({admin:Ba});import{z as Mi}from"zod";var BS=Mi.object({siteName:Mi.string().trim().min(1).max(64),siteDescription:Mi.string().trim().max(200).optional(),siteOrigin:Pi,username:Ni,email:yn,password:uo});import{z as Pe}from"zod";var Fa={orderNo:Pe.string(),amountCny:Pe.number().int(),status:ha,credited:Pe.boolean(),refundedAmountCny:Pe.number().int(),succeededRefundCny:Pe.number().int(),pendingRefundCny:Pe.number().int(),createdAt:Pe.string()},po=Pe.object({...Fa,quota:Pe.number(),refundedQuota:Pe.number()}),fo=Pe.object({...Fa,planName:Pe.string(),renewal:Pe.boolean(),grantedDurationDays:Pe.number().int()}),Ua=Pe.object({id:Pe.number().int(),amountCny:Pe.number().int(),status:ba,refundTradeNo:Pe.string().nullable(),reason:Pe.string().nullable(),rejectReason:Pe.string().nullable(),createdAt:Pe.string()});function ja(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 vt}from"zod";var er=vt.object({id:vt.number().int(),title:vt.string(),category:_a,priority:Ra,status:va,createdAt:vt.string(),updatedAt:vt.string()}),Oi=vt.object({id:vt.number().int(),authorKind:Ca,content:vt.string(),createdAt:vt.string()}),qa=vt.object({ticket:er,messages:vt.array(Oi)});import{z as go}from"zod";var Di=go.object({id:go.number().int(),title:go.string(),content:go.string(),level:Sa,publishedAt:go.string()});import{z as Ae}from"zod";var YS=Ae.union([Ae.object({ok:Ae.literal(!0),status:Ae.number().int(),latencyMs:Ae.number().int().nonnegative(),body:Ae.string()}),Ae.object({ok:Ae.literal(!1),reason:Ae.enum(["http","error_payload"]),status:Ae.number().int(),latencyMs:Ae.number().int().nonnegative(),body:Ae.string()}),Ae.object({ok:Ae.literal(!1),reason:Ae.literal("timeout"),latencyMs:Ae.number().int().nonnegative()}),Ae.object({ok:Ae.literal(!1),reason:Ae.literal("network"),detail:Ae.string(),latencyMs:Ae.number().int().nonnegative()})]);var Ha="Asia/Shanghai",bp="+08:00";function yp(e){return new Date(new Date(e).getTime()+288e5)}function Sp(e=Date.now()){let t=yp(e);return{day:t.toISOString().slice(0,10),hour:t.getUTCHours()}}function $i(e=Date.now()){return Sp(e).day}function Bi(e=$i()){return new Date(`${e}T00:00:00${bp}`)}function en(e,t){let o=new Date(`${e}T00:00:00Z`);return new Date(o.getTime()+t*864e5).toISOString().slice(0,10)}var xp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium",timeZone:Ha}),Tp=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeZone:Ha});function ee(e){return xp.format(new Date(e))}function qt(e){return Tp.format(new Date(e))}var wp=[{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 kp(e){return e>=10?Math.round(e).toLocaleString("en-US"):e>=1?e.toFixed(1):e.toFixed(-Math.floor(Math.log10(e)))}function st(e){return e>=10?Math.round(e).toLocaleString("en-US"):e.toFixed(1)}function Wa(e){return e<365?`${st(e)} \u5929`:`${st(e/365)} \u5E74`}function vp(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`:`${st(o/365)} \u5E74`}function _p(e){let t=e/1.2/80/60/8;return t<250?`${st(t)} \u4E2A\u5DE5\u4F5C\u65E5`:`${st(t/250)} \u4E2A\u5DE5\u4F5C\u5E74`}function Rp(e){let t=e/1.2/30*4;return t<1e3?`${Math.round(t).toLocaleString("en-US")} \u514B`:t<1e6?`${st(t/1e3)} \u516C\u65A4`:`${st(t/1e6)} \u5428`}var Cp=[...wp.map(e=>({min:e.tokens/10,max:e.tokens*1e4,suffix:t=>`\u7EA6\u4E3A${e.name}\u7684 ${kp(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 ${vp(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 ${st(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 ${Wa(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 ${_p(e)}`},{min:4500,max:1/0,suffix:e=>`\u82E5\u523B\u6210\u6BCF\u679A 30 \u5B57\u7684\u79E6\u6C49\u7AF9\u7B80\uFF0C\u603B\u91CD\u7EA6 ${Rp(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 ${Wa(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 ${st(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 ${st(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 ${st(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 ${st(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 ${st(e/1.2*.005/40075e3)} \u5708`}];function za(e){let{tokens:t,scope:o,range:n}=e;if(t<=0)return null;let r=Cp.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 Ht(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown status value: ${t}`);return o}}function tn(e){return t=>{let o=e[t];if(!o)throw new Error(`unknown label value: ${t}`);return o}}var nn=Ht({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"}}),ex=tn({recharge:"\u5145\u503C",subscription:"\u8BA2\u9605"}),tr=Ht({pending:{label:"\u5F85\u5904\u7406",tone:"warning"},issued:{label:"\u5DF2\u5F00\u5177",tone:"success"},rejected:{label:"\u5DF2\u9A73\u56DE",tone:"danger"}}),tx=Ht({enabled:{label:"\u5DF2\u542F\u7528",tone:"success"},disabled:{label:"\u5DF2\u7981\u7528",tone:"neutral"}});var nx=Ht({active:{label:"\u6B63\u5E38",tone:"success"},disabled:{label:"\u7981\u7528",tone:"danger"}}),Fi=tn({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"}),Ga=tn({usage_log:"\u7528\u91CF",order:"\u8BA2\u5355",invitation:"\u9080\u8BF7",admin:"\u7BA1\u7406\u5458"}),Va=Ht({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"}}),nr=Ht({success:{label:"\u6210\u529F",tone:"success"},error:{label:"\u5931\u8D25",tone:"danger"},canceled:{label:"\u53D6\u6D88",tone:"neutral"},anomaly:{label:"\u5F02\u5E38",tone:"warning"}}),Ka=tn({"openai-chat":"OpenAI Chat","openai-responses":"OpenAI Responses","anthropic-messages":"Anthropic Messages"}),ho=tn({special:"\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",general:"\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"}),xn=tn({special:"\u4E13\u7968",general:"\u666E\u7968"}),or=tn({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"}),bo=Ht({info:{label:"\u4FE1\u606F",tone:"neutral"},success:{label:"\u6210\u529F",tone:"success"},warning:{label:"\u8B66\u544A",tone:"warning"},error:{label:"\u91CD\u8981",tone:"danger"}}),Ui=Ht({open:{label:"\u5F85\u5904\u7406",tone:"warning"},replied:{label:"\u5DF2\u56DE\u590D",tone:"success"},closed:{label:"\u5DF2\u5173\u95ED",tone:"neutral"}}),rr=tn({billing:"\u8BA1\u8D39",technical:"\u6280\u672F",account:"\u8D26\u53F7",other:"\u5176\u4ED6"}),ji=Ht({low:{label:"\u8F83\u4F4E",tone:"neutral"},normal:{label:"\u666E\u901A",tone:"neutral"},high:{label:"\u7D27\u6025",tone:"danger"}});function Ye(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 he(e){let t=e/100;return`${t<0?"-":""}\xA5${Math.abs(t).toFixed(2)}`}function qi(e){return Math.round(e*100)}function Ja(e){return e/100}function Ya(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 Ya(e,t,2)}function Gn(e,t){return Ya(e,t,6)}var ir=10080,sr=1440;function Qa(e){if(e%ir===0){let t=e/ir;return t===1?"\u6BCF\u5468\u9650\u989D":`${t} \u5468\u9650\u989D`}if(e%sr===0){let t=e/sr;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 Ep(e){if(e%ir===0){let t=e/ir;return t===1?"\u6BCF\u5468":`\u6BCF ${t} \u5468`}if(e%sr===0){let t=e/sr;return t===1?"\u6BCF\u5929":`\u6BCF ${t} \u5929`}return e%60===0?`\u6BCF ${e/60} \u5C0F\u65F6`:`\u6BCF ${e} \u5206\u949F`}function Xa(e,t){return e.windows.map(o=>`${Ep(o.durationMinutes)} ${ae(o.quota,t)}`)}function Hi(e){return e.quota<=0?100:Math.min(100,Math.floor(e.used/e.quota*100))}function Wi(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"}}function _e(e){return e.toLocaleString("en-US")}function on(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`:_e(e)}function Tn(e,t){let o=Number(e);return Number.isFinite(o)?o===0&&t!==void 0?t:o.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:12}):e}function wn(e){return(e/1e3).toFixed(2)}function ar(e,t){return`${e}******${t}`}var zi={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"]},Za={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 Pp}from"os";var Ap=3e4,Np=Na({cliVersion:mt,platform:process.platform,release:Pp(),arch:process.arch,nodeVersion:process.versions.node});async function pt(e,t={}){let o=new Headers(t.headers);o.set("user-agent",Np);let n;t.json!==void 0&&(o.set("content-type","application/json"),n=JSON.stringify(t.json));let r;try{r=await fetch(e,{method:t.method??(n===void 0?"GET":"POST"),headers:o,body:n,signal:AbortSignal.timeout(t.timeoutMs??Ap),redirect:"follow"})}catch(a){let c=URL.canParse(e)?new URL(e).origin:e;throw new U(`\u65E0\u6CD5\u8FDE\u63A5 ${c}\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7AD9\u70B9\u5730\u5740`,{exitCode:ra,cause:a})}let i=await r.text(),s=null;if(i!=="")try{s=JSON.parse(i)}catch(a){if(r.ok)throw new U(`${e} \u8FD4\u56DE\u4E86\u975E JSON \u5185\u5BB9\uFF0C\u53EF\u80FD\u88AB\u7F51\u5173\u6216\u4E2D\u95F4\u8BBE\u5907\u62E6\u622A`,{cause:a})}return{status:r.status,ok:r.ok,headers:r.headers,data:s}}function Ip(e,t){let o=Ea.safeParse(t);if(!o.success)return new U(`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${e}\uFF09`);let{code:n,message:r}=o.data.error,i=n==="unauthorized"||n==="token_expired"?gn:void 0;return new U(Pa[n]??r,i?{exitCode:i}:{})}function It(e){if(!e.ok)throw Ip(e.status,e.data)}var nc="cf_refresh",oc="cf_device",ec=6e4;function tc(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 yo(e,t){return{refresh:tc(t,nc)??e.refresh,device:tc(t,oc)??e.device}}function cr(e){let t=[];return e.refresh&&t.push(`${nc}=${e.refresh}`),e.device&&t.push(`${oc}=${e.device}`),t.length>0?{cookie:t.join("; ")}:{}}function Lp(e){let t=e.split(".")[1];if(t===void 0)throw new U("\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 U("\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 U("\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u8BBF\u95EE\u4EE4\u724C\u7F3A\u5C11\u6709\u6548\u671F");return n*1e3}function So(e,t,o){if(!t.refresh)throw new U("\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:Lp(o.accessToken),username:o.user.username,email:o.user.email,site:e};return xi(r=>{r.session=n,t.device&&(r.device={site:e,cookie:t.device})}),n}function Gi(e){let{device:t}=kt();return t!==null&&t.site===e?t.cookie:null}async function rc(e,t,o){let n={refresh:null,device:Gi(e)},r=await pt(`${e}/api/auth/login`,{json:{account:t,password:o},headers:cr(n)});It(r);let i=La.parse(r.data),s=yo(n,r.headers);return i.status==="totp_required"?{status:"totp_required",ticket:i.ticket,jar:s}:{status:"ok",session:So(e,s,i)}}async function ic(e,t,o,n,r){let s=await pt(`${e}/api/auth/${r==="totp"?"login/totp":"login/recovery-code"}`,{json:{ticket:o,code:n},headers:cr(t)});It(s);let a=Wn.parse(s.data);return So(e,yo(t,s.headers),a)}function sc(){xi(e=>{e.session=null})}async function Mp(e){let t={refresh:e.refreshCookie,device:Gi(e.site)},o=await pt(`${e.site}/api/auth/refresh`,{method:"POST",headers:cr(t)});if(o.status===401||o.status===403)throw sc(),new U("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",{exitCode:gn});It(o);let n=Wn.parse(o.data);return So(e.site,yo(t,o.headers),n)}async function Vi(e=!1){let t=da();return!e&&Date.now()<t.accessExpiresAt-ec?t:pa(async()=>{let o=ma().session;if(!o)throw new U("\u5C1A\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55\u8D26\u53F7",{exitCode:gn});return(o.refreshCookie!==t.refreshCookie||o.accessToken!==t.accessToken)&&Date.now()<o.accessExpiresAt-ec?o:Mp(o)})}async function lr(){let e=kt().session;if(!e)return;let t=await pt(`${e.site}/api/auth/logout`,{method:"POST",headers:cr({refresh:e.refreshCookie,device:Gi(e.site)})});sc(),It(t)}import{spawn as Op}from"child_process";function xo(e,t={}){return new Promise((o,n)=>{let r=Op("npm",e,{stdio:["ignore","pipe","pipe"],shell:process.platform==="win32"}),i=[],s=[],a=c=>{for(let l of c.toString("utf8").split(`
|
|
4
|
+
`)){let d=l.trimEnd();d!==""&&(s.push(d),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 U(`\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 U(`npm ${e.join(" ")} \u9000\u51FA\u7801 ${c??"null"}`,{...l===""?{}:{hint:l}}))}),t.background===!0&&(r.stdout.unref(),r.stderr.unref(),r.unref())})}async function ac(e){let t=[],o=async(n,r)=>{try{await r(),e.done(n)}catch(i){t.push(`${n}\uFF1A${qe(i)}`),e.failed(n)}};return await o("\u9000\u51FA\u767B\u5F55",()=>lr()),await o("\u5220\u9664\u672C\u5730\u6587\u4EF6",()=>{let n=jt();Dp(n)&&$p(n,{recursive:!0,force:!0})}),await o("\u5378\u8F7D\u672C\u7A0B\u5E8F",async()=>{await xo(["uninstall","-g",Fn])}),t}import{z as To}from"zod";var Bp=To.object({line:To.object({name:To.string(),url:To.string()}).nullable().default(null),lastUpdateCheckAt:To.number().nullable().default(null)}),cc=Yo(Bp,ia,"\u672C\u5730\u914D\u7F6E","\u91CD\u65B0\u8FD0\u884C"),kn=cc.load,ur=cc.update;var Fp=1440*60*1e3;async function lc(){let e=(await xo(["view",Fn,"version"])).trim();if(e==="")throw new U(`npm \u6CA1\u6709\u62A5\u51FA ${Fn} \u7684\u7248\u672C`);return e}async function uc(e,t){return await xo(["install","-g",`${Fn}@${e}`],{background:t}),e}async function mc(){let e=await lc();return e===mt?null:await uc(e,!1)}function Up(){let e=Date.now(),t=kn().lastUpdateCheckAt;return t!==null&&e-t<Fp?!1:(ur(o=>{o.lastUpdateCheckAt=e}),!0)}async function dc(){if(!Up())return null;let e;try{e=await lc()}catch{return null}return e===mt?null:await uc(e,!0)}import{Box as qb,render as Hb,useInput as Wb}from"ink";import{useEffect as ta,useRef as zb}from"react";async function _t(e,t,o={}){let n=await pt(t,o);return It(n),e.parse(n.data)}async function O(e,t,o={}){let n=await Vi(),r=s=>pt(`${n.site}/api${t}`,{...o,headers:{...o.headers,authorization:`Bearer ${s}`}}),i=await r(n.accessToken);if(i.status===401){let s=await Vi(!0);i=await r(s.accessToken)}return It(i),e.parse(i.data)}function Wt(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 pc=e=>O(bn(Di),Wt("/announcements",{...e})),fc=()=>O(Di.nullable(),"/announcements/unread"),mr=e=>O(Se,`/announcements/${e}/read`,{method:"POST"}).then(()=>{});import{Box as gc,useWindowSize as jp}from"ink";import{Children as qp}from"react";import{jsx as hc}from"react/jsx-runtime";var Hp=1,Ki=1,J=1;function j(){let{columns:e,rows:t}=jp();return{width:Math.max(1,e-Hp*2),columns:e,rows:t}}function bc({height:e,children:t}){return hc(gc,{flexDirection:"column",height:e,justifyContent:"space-between",children:qp.toArray(t).map((o,n)=>hc(gc,{flexDirection:"column",flexShrink:0,children:o},n))})}import{useInput as Sc}from"ink";import{createContext as Qi,useCallback as dr,useContext as Wp,useEffect as Xi,useMemo as Ji,useRef as wo,useState as yc}from"react";import{jsx as Yi}from"react/jsx-runtime";var pr=Qi(null),Zi=Qi(null),Vn={screen:0,panel:10,input:20},es=Qi(null);function xc({children:e}){let[t,o]=yc(!1),[n,r]=yc(!1),i=wo(0),s=wo(0),a=wo([]),c=wo(0),l=dr(()=>(i.current+=1,o(!0),()=>{i.current-=1,i.current===0&&o(!1)}),[]),d=dr(()=>(s.current+=1,r(!0),()=>{s.current-=1,s.current===0&&r(!1)}),[]),f=dr(h=>{let y={...h,seq:c.current+=1};return a.current.push(y),()=>{a.current=a.current.filter(x=>x!==y)}},[]),m=dr(()=>{a.current.reduce((y,x)=>y===null||x.layer>y.layer||x.layer===y.layer&&x.seq>y.seq?x:y,null)?.handler()},[]);Sc((h,y)=>{y.escape&&m()});let p=Ji(()=>({active:t,acquire:l}),[t,l]),S=Ji(()=>({locked:n,acquire:d}),[n,d]),g=Ji(()=>({push:f,fire:m}),[f,m]);return Yi(pr.Provider,{value:p,children:Yi(Zi.Provider,{value:S,children:Yi(es.Provider,{value:g,children:e})})})}function vn(e){let t=Wp(e);if(!t)throw new Error("\u952E\u76D8\u94A9\u5B50\u5FC5\u987B\u5728 KeyboardProvider \u5185\u4F7F\u7528");return t}function fr(e){let{acquire:t}=vn(pr);Xi(()=>{if(e)return t()},[e,t])}function Tc(e){let{acquire:t}=vn(Zi);Xi(()=>{if(e)return t()},[e,t])}function gr(){return vn(Zi).locked}function hr(){return vn(pr).active}function z(e,t=!0){let o=vn(pr).active;Sc(e,{isActive:t&&!o})}function wc(){return vn(es).fire}function rn(e,{isActive:t=!0,layer:o=Vn.screen}={}){let{push:n}=vn(es),r=wo(e);r.current=e,Xi(()=>{if(t)return n({handler:()=>r.current(),layer:o})},[t,o,n])}import{measureElement as zp}from"ink";import{PassThrough as Gp}from"stream";import{createContext as Vp,useCallback as Kp,useContext as Jp,useEffect as Rc,useRef as br}from"react";import{jsx as sf}from"react/jsx-runtime";var Yp="\x1B[?1000h\x1B[?1003h\x1B[?1006h",Qp="\x1B[?1006l\x1B[?1003l\x1B[?1000l",Xp=27,Zp=91,ef=60,kc=77,vc=109,_c=20,tf=64,nf=32,of=20;function rf(e){let t=[],o=[],n=0;for(;n<e.length;){let r=e[n];if(r===void 0)break;if(r!==Xp){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!==Zp){o.push(r),n+=1;continue}if(s===kc){if(n+6>e.length)break;n+=6;continue}if(s!==ef){o.push(r),n+=1;continue}let a=n+3,c;for(;a<e.length&&a-n<_c;){let p=e[a];if(p===kc||p===vc){c=p;break}a+=1}if(c===void 0){if(a-n<_c)break;o.push(r),n+=1;continue}let l=e.subarray(n+3,a).toString("latin1").split(";");if(n=a+1,c===vc||l.length!==3)continue;let d=Number(l[0]),f=Number(l[1]),m=Number(l[2]);!Number.isFinite(d)||!Number.isFinite(f)||!Number.isFinite(m)||t.push((d&tf)!==0?{row:m,column:f,kind:"wheel",delta:(d&1)===0?-1:1}:{row:m,column:f,kind:(d&nf)!==0?"move":"press"})}return{events:t,clean:Buffer.from(o),pending:e.subarray(n)}}function Cc(e,t){let o=new Set,n=new Gp,r=Buffer.alloc(0),i=null,s=()=>{i=null,r.length!==0&&(n.write(r),r=Buffer.alloc(0))},a=m=>{i!==null&&clearTimeout(i),i=null;let p=rf(Buffer.concat([r,m]));r=p.pending,p.clean.length>0&&n.write(p.clean);for(let S of p.events)for(let g of o)g(S);r.length>0&&(i=setTimeout(s,of))},c=()=>{t.write(Qp)},l={SIGHUP:1,SIGINT:2,SIGTERM:15},d=m=>{process.exit(128+(l[m]??0))};e.on("data",a),process.once("exit",c);for(let m of Object.keys(l))process.on(m,d);t.write(Yp);let f=n;return Object.assign(f,{isTTY:!0,setRawMode(m){return e.setRawMode(m),f},ref(){return e.ref(),f},unref(){return e.unref(),f}}),{stdin:f,subscribe(m){return o.add(m),()=>{o.delete(m)}},dispose(){c(),i!==null&&clearTimeout(i),process.off("exit",c);for(let m of Object.keys(l))process.off(m,d);e.off("data",a),o.clear()}}}var Ec=Vp(null);function Pc({subscribe:e,children:t}){let o=br(new Set).current,n=br(null),r=Kp(i=>(o.add(i),()=>{o.delete(i)}),[o]);return Rc(()=>e(i=>{let s=i.row-1,a=i.column-1,c=null;for(let d of o){let f=d.node.current;if(f===null||d.handlers.current.isActive===!1)continue;let m=zp(f);if(s<m.y||s>=m.y+m.height||a<m.x||a>=m.x+m.width)continue;let p=m.width*m.height;(c===null||p<c.area)&&(c={region:d,top:m.y,left:m.x,area:p})}if(i.kind==="move"){let d=c===null?null:c.region;if(n.current!==d){let f=n.current;f!==null&&o.has(f)&&f.handlers.current.onHoverLeave?.(),n.current=d}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]),sf(Ec.Provider,{value:r,children:t})}function Be(e){let t=Jp(Ec);if(t===null)throw new Error("useMouseRegion \u5FC5\u987B\u5728 MouseProvider \u5185\u4F7F\u7528");let o=br(null),n=br(e);return n.current=e,Rc(()=>t({node:o,handlers:n}),[t]),o}import{useApp as af}from"ink";import{createContext as cf,useCallback as _n,useContext as lf,useEffect as ts,useRef as Sr,useState as vo}from"react";var Qe=[{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"}],Ac="usage",ko=e=>Qe.findIndex(t=>t.id===e),yr=e=>ko(e)>=0;import{jsx as mf}from"react/jsx-runtime";var uf=5e3,Ic=cf(null),Lc=e=>({id:e,params:void 0}),Nc=()=>kt().session===null?[{id:"home",params:void 0}]:[Lc(Ac)];function D(){let e=lf(Ic);if(!e)throw new Error("useNav \u5FC5\u987B\u5728 NavProvider \u5185\u4F7F\u7528");return e}function Mc({ctx:e,children:t}){let o=af(),[n,r]=vo(Nc),[i,s]=vo(0),[a,c]=vo([]),l=Sr({announcementsChecked:!1,announcementsShown:!1}).current,d=Sr(new WeakMap).current,f=_n((C,...L)=>{r(F=>[...F,{id:C,params:L[0]}])},[]),m=_n(()=>{r(C=>C.length>1?C.slice(0,-1):C),s(C=>C+1)},[]),p=_n(C=>{r([Lc(C)]),s(L=>L+1)},[]),S=_n(()=>{r(Nc()),s(C=>C+1)},[]),g=_n(()=>s(C=>C+1),[]),h=_n((C,L)=>{c(F=>[...F,{tone:C,message:L}])},[]),y=_n(()=>c(C=>C.slice(1)),[]),x=a[0]??null;ts(()=>{if(x===null)return;let C=setTimeout(y,uf);return()=>clearTimeout(C)},[x,y]);let k=n[n.length-1];if(k===void 0)throw new Error("\u5BFC\u822A\u6808\u4E3A\u7A7A");let b=d.get(k);b===void 0&&(b=new Map,d.set(k,b));let T={ctx:e,current:k,depth:n.length,push:f,pop:m,select:p,home:S,reload:g,toast:h,message:x,dismissToast:y,exit:o.exit,revision:i,gate:l,retained:b};return mf(Ic.Provider,{value:T,children:t})}function Ke(e,t){let{retained:o}=D(),[n,r]=vo(()=>e!==void 0&&o.has(e)?o.get(e):t());return ts(()=>{e!==void 0&&o.set(e,n)},[o,e,n]),[n,r]}function Q(e,t){let[o,n]=vo({phase:"loading"}),r=Sr(t);r.current=t;let i=Sr(0);return ts(()=>{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:qe(a),hint:a instanceof U?a.hint:void 0})})},e),o}import{Box as $r,Text as En,useInput as qf}from"ink";import{Box as Po,Text as Qn}from"ink";import _o 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"},xr=["#242424","#5a4233","#746533","#70924f","#37be95"],Tr=["#37be95","#2d9273","#246e58","#1e5443","#193f33"],Fe={accent:u.accent,success:u.success,warning:u.warning,danger:u.danger},Kn=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],wr=80,X={cursor:"\u276F",bullet:"\xB7",crumb:"\u203A",ok:"\u2714",warn:"!",fail:"\u2718",ellipsis:"\u2026",barFilled:"\u2588",barEmpty:"\u2591",section:"\u258D",prev:"\u2039",next:"\u203A"};var df=_o(X.ellipsis),pf=(e,t)=>e+" ".repeat(Math.max(0,t-_o(e))),ff=(e,t)=>" ".repeat(Math.max(0,t-_o(e)))+e;function Te(e,t){if(t<=0)return"";if(_o(e)<=t)return e;let o=t-df,n="";for(let r of e){if(_o(n+r)>o)break;n+=r}return n+X.ellipsis}var Ne=(e,t)=>pf(Te(e,t),t),sn=(e,t)=>ff(Te(e,t),t),De=e=>e.filter(t=>typeof t=="string"&&t!=="").join(` ${X.bullet} `);import{Text as Rt,useInput as gf}from"ink";import{useImperativeHandle as hf,useRef as Oc,useEffect as bf,useState as $c}from"react";import ns from"string-width";import{jsx as Lt,jsxs as os}from"react/jsx-runtime";var yf=e=>e.replace(new RegExp("\\p{Cc}","gu"),"");function Dc(e,t,o){let n=t,r=0;for(;n>0;){let s=ns(e[n-1]??"");if(r+s>o)break;r+=s,n-=1}let i=t;for(r+=1;i<e.length;){let s=ns(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 Ro({char:e}){return Lt(Rt,{backgroundColor:u.cursorBackground,color:u.foreground,children:e})}function kr({value:e,onChange:t,onSubmit:o,placeholder:n,mask:r=!1,isActive:i=!0,width:s=40,ref:a}){let c=[...e],[l,d]=$c(c.length),f=Math.min(l,c.length),m=Math.max(8,s),p=Oc(e),S=Oc(f);p.current=e,S.current=f,fr(i);let g=T=>{S.current=T,d(T)},h=(T,C)=>{p.current=T,g(C),t(T)};if(hf(a,()=>({moveToColumn:T=>{let C=[...p.current],L=r?Array.from({length:C.length},()=>"\u2022"):C,w=Dc(L,Math.min(S.current,C.length),m).start,E=0;for(;w<C.length;){let _=ns(L[w]??"");if(E+_>T)break;E+=_,w+=1}g(w)}})),gf((T,C)=>{let L=[...p.current],F=Math.min(S.current,L.length);if(C.return){o(p.current);return}if(C.tab||C.upArrow||C.downArrow)return;if(C.leftArrow){g(Math.max(0,F-1));return}if(C.rightArrow){g(Math.min(L.length,F+1));return}if(C.home){g(0);return}if(C.end){g(L.length);return}if(C.backspace){if(F===0)return;h([...L.slice(0,F-1),...L.slice(F)].join(""),F-1);return}if(C.delete){if(F>=L.length)return;h([...L.slice(0,F),...L.slice(F+1)].join(""),F);return}if(C.ctrl){if(T==="a")g(0);else if(T==="e")g(L.length);else if(T==="k")h(L.slice(0,F).join(""),F);else if(T==="u")h(L.slice(F).join(""),0);else if(T==="w"){let P=F;for(;P>0&&L[P-1]===" ";)P-=1;for(;P>0&&L[P-1]!==" ";)P-=1;h([...L.slice(0,P),...L.slice(F)].join(""),P)}return}if(C.meta||!T)return;let w=T.search(/[\r\n]/),E=yf(w===-1?T:T.slice(0,w)),_=[...L.slice(0,F),E,...L.slice(F)].join("");h(_,F+[...E].length),w!==-1&&o(_)},{isActive:i}),e===""){let T=[...n??""];return i?os(Rt,{children:[Lt(Ro,{char:T[0]??" "}),Lt(Rt,{color:u.faintForeground,children:T.slice(1).join("")})]}):Lt(Rt,{color:u.faintForeground,children:T.join("")})}let y=r?Array.from({length:c.length},()=>"\u2022"):c;if(!i)return Lt(Rt,{color:u.foreground,children:y.join("")});let{before:x,at:k,after:b}=Dc(y,f,m);return os(Rt,{children:[Lt(Rt,{color:u.foreground,children:x}),Lt(Ro,{char:k}),Lt(Rt,{color:u.foreground,children:b})]})}function Xe({label:e}){let[t,o]=$c(0);return bf(()=>{let n=setInterval(()=>o(r=>(r+1)%Kn.length),wr);return()=>clearInterval(n)},[]),os(Rt,{children:[Lt(Rt,{color:u.accent,children:Kn[t]}),Lt(Rt,{color:u.mutedForeground,children:` ${e}`})]})}import{Box as Uc,Text as Jn}from"ink";import{useEffect as qc,useState as xf}from"react";import jc from"string-width";import{Box as Bc,Text as vr}from"ink";import Sf from"string-width";import{jsx as Co,jsxs as Fc}from"react/jsx-runtime";var ce=2,at=1,$e=1,Ct=at+$e;function Eo({title:e,note:t,width:o}){let n=t===void 0?0:Sf(t)+2,r=Math.max(0,o-ce-n);return Fc(vr,{wrap:"truncate",children:[Co(vr,{color:u.accent,children:`${X.section} `}),Co(vr,{bold:!0,color:u.foreground,children:Te(e,r)}),t!==void 0&&Co(vr,{color:u.faintForeground,children:` ${t}`})]})}function oe({title:e,note:t,width:o,gap:n=$e,children:r}){return Fc(Bc,{flexDirection:"column",children:[Co(Eo,{title:e,note:t,width:o}),Co(Bc,{flexDirection:"column",marginTop:n,paddingLeft:ce,children:r})]})}import{jsx as zt,jsxs as Wc}from"react/jsx-runtime";var Yn=e=>!("heading"in e),Tf=e=>e.flatMap(t=>!Yn(t)&&t.heading!==""?[t,{heading:""}]:[t]),Hc=2,_r=2,wf=(e,t)=>t===void 0?e:e>t?Math.max(1,t-1):t;function kf(e,t,o,n){let[r,i]=Ke(n,()=>e.findIndex(d=>Yn(d)&&d.disabled!==!0));qc(()=>{i(d=>d>=e.length?Math.max(0,e.length-1):d)},[e.length]);let s=d=>{i(f=>{let m=e.length;if(m===0)return f;let p=f;for(let S=0;S<m;S+=1){p=(p+d+m)%m;let g=e[p];if(g!==void 0&&Yn(g)&&g.disabled!==!0)return p}return f})},a=d=>{let f=e[d];return f!==void 0&&Yn(f)&&f.disabled!==!0?f:null},c=d=>{a(d)!==null&&i(d)},l=d=>{let f=a(d);f!==null&&(i(d),o(f.value))};return z((d,f)=>{if(f.upArrow||d==="k"){s(-1);return}if(f.downArrow||d==="j"){s(1);return}f.return&&l(r)},t),{index:Math.max(0,r),step:s,pick:l,moveTo:c}}function rs(e,t){let[o,n]=xf(()=>e>=t?e-t+1:0);return qc(()=>{n(r=>e<r?e:e>=r+t?e-t+1:r)},[e,t]),o}function vf(e,t){let o=e.filter(Yn),n=Math.max(0,...o.map(s=>jc(s.label))),r=Math.max(0,...o.map(s=>s.badge===void 0?0:jc(s.badge))),i=Hc+n+(r>0?r+_r:0)+_r;return{label:n,badge:r,hint:Math.max(0,t-i)}}function _f({item:e,active:t,metrics:o}){let n=e.disabled===!0,r=n?u.faintForeground:e.labelTone!==void 0?Fe[e.labelTone]:t?u.accent:u.foreground;return Wc(Jn,{wrap:"truncate",children:[zt(Jn,{color:u.accent,children:t?`${X.cursor} `:" "}),zt(Jn,{color:r,bold:t,children:Ne(e.label,o.label)}),o.badge>0&&zt(Jn,{color:e.badgeTone===void 0?u.faintForeground:Fe[e.badgeTone],children:`${" ".repeat(_r)}${Ne(e.badge??"",o.badge)}`}),e.hint!==void 0&&o.hint>0&&zt(Jn,{color:n||!t?u.faintForeground:u.mutedForeground,children:`${" ".repeat(_r)}${Te(e.hint,o.hint)}`})]})}function Rf({items:e,cursor:t,metrics:o,window:n,width:r,isActive:i,onPick:s,onHover:a,onScroll:c}){let l=rs(t,n),d=e.slice(l,l+n),f=p=>p<d.length?l+p:null,m=Be({isActive:i,onWheel:c,onClick:({row:p})=>{let S=f(p);S!==null&&s(S)},onHover:({row:p})=>{let S=f(p);S!==null&&a(S)}});return Wc(Uc,{ref:m,flexDirection:"column",children:[d.map((p,S)=>{let g=l+S;return Yn(p)?zt(_f,{item:p,active:g===t&&i,metrics:o},g):p.heading===""?zt(Uc,{height:1},g):zt(Eo,{title:p.heading,width:r},g)}),e.length>n&&zt(Jn,{color:u.faintForeground,children:`${" ".repeat(Hc)}${l+1}-${Math.min(l+n,e.length)} / ${e.length}`})]})}function le({items:e,onSelect:t,width:o,height:n,isActive:r=!0,retain:i}){let s=Tf(e),a=kf(s,r,t,i);return zt(Rf,{items:s,cursor:a.index,metrics:vf(s,o),window:wf(s.length,n),width:o,isActive:r,onPick:a.pick,onHover:a.moveTo,onScroll:a.step})}import{jsx as ft,jsxs as Rr}from"react/jsx-runtime";var zc={ok:{glyph:X.ok,color:u.success},warn:{glyph:X.warn,color:u.warning},fail:{glyph:X.fail,color:u.danger},info:{glyph:X.bullet,color:u.mutedForeground}};function fe({tone:e,title:t,detail:o,width:n}){let r=zc[e];return Rr(Po,{flexDirection:"column",children:[Rr(Qn,{children:[ft(Qn,{color:r.color,children:`${r.glyph} `}),ft(Qn,{color:u.foreground,children:Te(t,n-2)})]}),o!==void 0&&ft(Qn,{color:u.faintForeground,children:` ${Te(o,n-2)}`})]})}function Rn({message:e,hint:t,width:o}){return ft(fe,{tone:"fail",title:e,detail:t,width:o})}var Cf=2,Ef=2;function Gc({tone:e,message:t,width:o,onDismiss:n}){let r=zc[e],i=Be({onClick:n});return Rr(Po,{ref:i,children:[ft(Qn,{backgroundColor:u.border,color:r.color,wrap:"truncate",children:` ${r.glyph} `}),ft(Qn,{backgroundColor:u.border,color:u.foreground,wrap:"truncate",children:`${Te(t,o-Cf-Ef)} `})]})}function He({title:e,detail:t,confirmLabel:o,onConfirm:n,onCancel:r,width:i,busy:s,error:a}){return Rr(Po,{flexDirection:"column",children:[ft(fe,{tone:"warn",title:e,detail:t,width:i}),a!=null&&ft(Po,{marginTop:1,children:ft(Rn,{message:a.message,hint:a.hint,width:i})}),ft(Po,{marginTop:1,children:typeof s=="string"?ft(Xe,{label:s}):ft(le,{items:[{value:"cancel",label:"\u53D6\u6D88"},{value:"confirm",label:o,labelTone:"danger"}],width:i,onSelect:c=>c==="confirm"?n():r()})})]})}import{Box as Pf,Text as Cr,useInput as Af}from"ink";import{useRef as Nf,useState as If}from"react";import{jsx as Er,jsxs as Lf}from"react/jsx-runtime";function an({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]=If(n?s:0),l=Nf(s);if(s!==l.current){let p=a>=l.current;l.current=s;let S=n&&p?s:Math.min(a,s);S!==a&&c(S)}let d=p=>c(S=>Math.min(Math.max(0,S+p),s));Af((p,S)=>{S.upArrow?d(-1):S.downArrow?d(1):S.pageUp?d(-i):S.pageDown&&d(i)},{isActive:o&&r}),z(p=>{p==="k"?d(-1):p==="j"&&d(1)},o&&r);let f=Be({isActive:o&&r,onWheel:d}),m=e.slice(a,a+i);return Lf(Pf,{ref:f,flexDirection:"column",children:[m.map((p,S)=>Er(Cr,{wrap:"truncate",children:p.spans.length===0?" ":p.spans.map((g,h)=>Er(Cr,{color:g.color??u.foreground,bold:g.bold===!0,children:g.text},h))},a+S)),Array.from({length:Math.max(0,i-m.length)},(p,S)=>Er(Cr,{children:" "},S)),r&&Er(Cr,{color:u.faintForeground,wrap:"truncate",children:`${a+1}-${Math.min(a+i,e.length)} / ${e.length}`})]})}function ze(e){return e.tone==="neutral"?void 0:e.tone}function Gt(e){let t=ze(e);return t===void 0?e.label:{text:e.label,tone:t}}import{useCallback as is,useRef as Mf,useState as Vc}from"react";function ge(){let e=D(),[t,o]=Vc(null),[n,r]=Vc(null),i=Mf(0),s=is(()=>{i.current+=1,o(null),r(null)},[]),a=is((l,d)=>{r({message:l,hint:d})},[]),c=is((l,d,f={})=>{let m=i.current+=1;o(l),r(null),d().then(p=>{i.current===m&&(o(null),f.onSuccess?.(p))}).catch(p=>{if(i.current!==m)return;o(null);let S={message:qe(p),hint:p instanceof U?p.hint:void 0};f.failToast===!0?e.toast("fail",S.message):r(S)})},[e]);return{busy:t,error:n,reset:s,fail:a,run:c}}import{Lexer as Of}from"marked";import Pr from"string-width";var Df={spans:[]},ss=e=>e===void 0||e.spans.every(t=>t.text.trim()==="");function Kc(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 Mt(e,t,o=0){let n=()=>Array.from({length:o},()=>({ch:" "})),r=[],i=[],s=0,a=!0,c=()=>{r.push(Kc(i)),a=!1,i=n(),s=o};for(let l of e)for(let d of l.text){if(d===`
|
|
5
|
+
`){c();continue}let f=Pr(d);if(s+f>t&&i.length>(a?0:o)){let m=a?0:o,p=-1;for(let S=i.length-1;S>m;S-=1)if(i[S]?.ch===" "){p=S;break}if(p>m){let S=i.slice(p+1);i=i.slice(0,p),c(),i=[...i,...S],s=i.reduce((g,h)=>g+Pr(h.ch),0)}else c()}i.push({ch:d,color:l.color,bold:l.bold}),s+=f}return(i.length>0||r.length===0)&&r.push(Kc(i)),r}function Ot(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?Ot(n.tokens,t):[{text:n.text,...t}]);break;case"strong":o.push(...Ot(n.tokens,{...t,bold:!0}));break;case"em":o.push(...Ot(n.tokens,t));break;case"del":o.push(...Ot(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=Ot(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 Jc=2,Yc=e=>e.reduce((t,o)=>t+Pr(o.text),0);function $f(e,t,o,n){let r=e.map(m=>({spans:Ot(m.tokens,{bold:!0,color:u.foreground}),align:m.align})),i=t.map(m=>m.map(p=>({spans:Ot(p.tokens,{color:u.foreground}),align:p.align}))),s=n-(e.length+1)-e.length*2;if(s<e.length*Jc)return Mt([{text:o,color:u.foreground}],n);let a=e.map(()=>Jc);for(let m of[r,...i])m.forEach((p,S)=>{for(let g of Mt(p.spans,Number.MAX_SAFE_INTEGER)){let h=a[S],y=Yc(g.spans);h!==void 0&&y>h&&(a[S]=y)}});let c=a.reduce((m,p)=>m+p,0);for(;c>s;){let m=0,p=0;a.forEach((S,g)=>{S>p&&(m=g,p=S)}),a[m]=p-1,c-=1}let l=m=>({text:m,color:u.faintForeground}),d=(m,p,S)=>({spans:[l(`${m}${a.map(g=>"\u2500".repeat(g+2)).join(p)}${S}`)]}),f=m=>{let p=a.map((h,y)=>{let x=m[y];return{width:h,align:x?.align??null,lines:Mt(x?.spans??[],h)}}),S=p.reduce((h,y)=>Math.max(h,y.lines.length),1),g=[];for(let h=0;h<S;h+=1){let y=[];for(let x of p){let k=x.lines[h]?.spans??[],b=x.width-Yc(k),T=x.align==="right"?b:x.align==="center"?Math.floor(b/2):0;y.push(l("\u2502"),{text:` ${" ".repeat(T)}`}),y.push(...k),y.push({text:`${" ".repeat(b-T)} `})}y.push(l("\u2502")),g.push({spans:y})}return g};return[d("\u250C","\u252C","\u2510"),...f(r),d("\u251C","\u253C","\u2524"),...i.flatMap(f),d("\u2514","\u2534","\u2518")]}function as(e,t){let o=[],n=()=>{o.length>0&&!ss(o[o.length-1])&&o.push(Df)};for(let r of e)switch(r.type){case"space":n();break;case"heading":{let i=Ot(r.tokens,{bold:!0,color:u.foreground}),s=r.depth<=2?[{text:`${X.section} `,color:u.accent},...i]:i;o.push(...Mt(s,t,r.depth<=2?2:0)),n();break}case"paragraph":o.push(...Mt(Ot(r.tokens,{color:u.foreground}),t)),n();break;case"text":o.push(...Mt("tokens"in r&&r.tokens!==void 0?Ot(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(...Mt([{text:` ${i}`,color:u.mutedForeground}],t,2));n();break;case"blockquote":{let i=as(r.tokens??[],Math.max(4,t-2));for(let s of i)o.push({spans:[{text:`${X.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}. `:`${X.bullet} `,d=Pr(l),f=as(a.tokens,Math.max(4,t-d));f.forEach((m,p)=>{ss(m)&&p===f.length-1||o.push({spans:p===0?[{text:l,color:u.mutedForeground},...m.spans]:[{text:" ".repeat(d)},...m.spans]})})}),n();break}case"hr":o.push({spans:[{text:"\u2500".repeat(Math.max(1,t)),color:u.faintForeground}]}),n();break;case"table":o.push(...$f(r.header,r.rows,r.raw,t)),n();break;default:o.push(...Mt([{text:r.raw,color:u.foreground}],t))}return o}function Xn(e,t){let o=Of.lex(e,{gfm:!0,breaks:!0}),n=as(o,Math.max(8,t));for(;n.length>0&&ss(n[n.length-1]);)n.pop();return n}import{Box as No}from"ink";import{Box as Bf,Text as Qc}from"ink";import Zc from"string-width";import{jsx as Xc,jsxs as Ff}from"react/jsx-runtime";var Ar=["\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"],el=Math.max(...Ar.map(e=>Zc(e))),Nr=Ar.length,Ir=e=>el<=e;function Lr({width:e}){let t=`v${mt}`,o=el+2+Zc(t)<=e;return Xc(Bf,{flexDirection:"column",children:Ar.map((n,r)=>Ff(Qc,{color:u.accent,children:[n,r===Ar.length-1&&o&&Xc(Qc,{color:u.faintForeground,children:` ${t}`})]},n))})}import{Box as us,Text as ct}from"ink";import{useState as tl}from"react";import eo from"string-width";import{jsx as gt,jsxs as Mr}from"react/jsx-runtime";var Or=2,cs=` ${X.crumb} `;function Dr({trail:e,width:t,onBack:o,isActive:n}){let r=e[e.length-1]??"",i=e.slice(0,-1),s=i.reduce((m,p)=>m+eo(p)+eo(cs),0),a=s+eo(r)<=t,c=a?s:0,[l,d]=tl(!1),f=Be({isActive:n,onClick:({column:m})=>{m<c&&o()},onHover:({column:m})=>d(m<c),onHoverLeave:()=>d(!1)});return gt(us,{ref:f,marginBottom:1,children:a?Mr(ct,{children:[i.map((m,p)=>Mr(ct,{children:[gt(ct,{color:p===0?u.accent:l&&n?u.foreground:u.mutedForeground,children:m}),gt(ct,{color:u.faintForeground,children:cs})]},p)),gt(ct,{bold:!0,color:u.foreground,children:r})]}):gt(ct,{color:u.mutedForeground,children:Te(e.join(cs),t)})})}var ls=2,Ao=2,Zn=2;function nl({current:e,width:t,onPick:o,isActive:n}){let r=Math.max(0,ko(e)),[i,s]=tl(null),a=Math.max(...Qe.map(y=>eo(y.label))),l=(y=>y*a+(y-1)*Ao+ls)(Qe.length)>t,d=l?t-Zn*2:t,f=l?Math.max(1,Math.floor((d+Ao-ls)/(a+Ao))):Qe.length,m=Math.min(Math.max(0,r-Math.floor((f-1)/2)),Qe.length-f),p=Qe.slice(m,m+f),S=[],g=l?Zn:0;p.forEach((y,x)=>{x>0&&(g+=Ao);let k=eo(y.label)+(y.id===e?ls:0);S.push({id:y.id,from:g,to:g+k}),g+=k});let h=Be({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(b=>y>=b.from&&y<b.to);if(x!==void 0){o(x.id);return}if(!l||y>=Zn&&y<g)return;let k=y<Zn?Qe[m-1]:Qe[m+f];k!==void 0&&o(k.id)}});return gt(us,{ref:h,marginBottom:1,children:Mr(ct,{wrap:"truncate",children:[l&>(ct,{color:u.border,children:m>0?`${X.prev} `:" ".repeat(Zn)}),p.map((y,x)=>Mr(ct,{children:[x>0&&" ".repeat(Ao),y.id===e?gt(ct,{backgroundColor:u.foreground,color:u.background,bold:!0,children:` ${y.label} `}):gt(ct,{color:n&&y.id===i?u.foreground:u.mutedForeground,children:y.label})]},y.id)),l&>(ct,{color:u.border,children:m+f<Qe.length?` ${X.next}`:" ".repeat(Zn)})]})})}function ol({hints:e,width:t}){let o=[];for(let n of e){if(eo(De([...o,n]))>t)break;o.push(n)}return gt(us,{children:gt(ct,{color:u.faintForeground,children:De(o)})})}import{Fragment as jf,jsx as Ze,jsxs as sl}from"react/jsx-runtime";var rl=3,Uf=8;function Io(e){let{rows:t}=j();return Math.max(1,t-Ki-rl-e)}function il(){let e=D(),{width:t,rows:o}=j(),n=e.current.id,r=e.depth===1&&yr(n)?n:null,i=Math.max(1,o-Ki-rl),s=Nr+J,a=r!==null&&Ir(t)&&i-Or-s>=Uf;return{tab:r,mark:a,rows:a?Or+s:Or}}var re=()=>Io(il().rows);function Cn({header:e,hints:t,children:o}){let{width:n}=j(),{message:r,dismissToast:i}=D();return sl(No,{flexDirection:"column",flexGrow:1,children:[e,Ze(No,{flexDirection:"column",flexGrow:1,overflow:"hidden",children:Ze(No,{flexDirection:"column",flexShrink:0,children:o})}),Ze(No,{height:1,marginTop:1,justifyContent:"flex-end",children:r!==null&&Ze(Gc,{tone:r.tone,message:r.message,width:n,onDismiss:i})}),Ze(ol,{hints:t,width:n})]})}function G({trail:e,hints:t=[],children:o,onEscape:n,isActive:r=!0,locked:i=!1,bleed:s=!1}){let a=D(),{width:c}=j(),{tab:l,mark:d}=il(),f=gr(),m=hr(),p=m?[]:["[] \u5207\u529F\u80FD","q \u9000\u51FA","? \u5E2E\u52A9"],S=m?[]:["? \u5E2E\u52A9"];rn(n??a.pop,{isActive:r});let g=wc(),h=r&&!i&&!f;return z(y=>{if(l===null||y!=="["&&y!=="]")return;let x=Qe[(ko(l)+(y==="["?-1:1)+Qe.length)%Qe.length];x!==void 0&&a.select(x.id)},r&&!i&&!f&&!s),s?Ze(Cn,{header:null,hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o}):l!==null?Ze(Cn,{header:sl(jf,{children:[d&&Ze(No,{marginBottom:J,children:Ze(Lr,{width:c})}),Ze(nl,{current:l,width:c,onPick:y=>{y===l?g():a.select(y)},isActive:h})]}),hints:i?t:[...t,...p],children:o}):Ze(Cn,{header:Ze(Dr,{trail:["CodeFlow",...e??[]],width:c,onBack:g,isActive:h}),hints:i?t:[...t,"Esc \u8FD4\u56DE",...S],children:o})}function Y({state:e,loading:t,width:o,children:n}){return e.phase==="loading"?Ze(Xe,{label:t}):e.phase==="error"?Ze(Rn,{message:e.message,hint:e.hint,width:o}):n(e.data)}import{jsx as ht,jsxs as ms}from"react/jsx-runtime";function al({params:e}){let t=D(),{width:o}=j(),n=re(),{item:r}=e,{busy:i,error:s,run:a}=ge();qf((f,m)=>{m.return&&a("\u6B63\u5728\u786E\u8BA4",()=>mr(r.id),{onSuccess:()=>t.pop()})},{isActive:i===null});let c=bo(r.level),l=ze(c),d=Math.max(3,n-4-(s===null?0:2));return ht(G,{trail:["\u7CFB\u7EDF\u516C\u544A","\u672A\u8BFB\u786E\u8BA4"],hints:["\u2191\u2193 \u6EDA\u52A8","Enter \u6211\u77E5\u9053\u4E86"],locked:!0,onEscape:()=>{},children:ms($r,{flexDirection:"column",children:[ms(En,{wrap:"truncate",children:[ht(En,{bold:!0,color:u.foreground,children:r.title}),ht(En,{color:l===void 0?u.mutedForeground:Fe[l],children:` ${c.label}`}),ht(En,{color:u.faintForeground,children:` \u53D1\u5E03\u4E8E ${qt(r.publishedAt)}`})]}),ht($r,{marginTop:1,children:ht(an,{lines:Xn(r.content,o),height:d})}),s!==null&&ht($r,{marginTop:1,children:ht(Rn,{message:s.message,hint:s.hint,width:o})}),ht($r,{marginTop:1,children:i!==null?ht(Xe,{label:i}):ms(En,{wrap:"truncate",children:[ht(En,{color:u.accent,children:`${X.cursor} `}),ht(En,{bold:!0,color:u.accent,children:"\u6211\u77E5\u9053\u4E86"})]})})]})})}import{Box as hs,Text as Br}from"ink";import{useState as Xf}from"react";import{Box as ds,Text as Vt}from"ink";import{useEffect as cl,useRef as Hf,useState as ll}from"react";import ps from"string-width";import{jsx as cn,jsxs as Mo}from"react/jsx-runtime";var ul=e=>e===void 0?"":typeof e=="string"?e:e.text,fs=2,Wf=6;function zf(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 gs(e,t,o){let n=e.map((c,l)=>Math.max(ps(c.label),...t.map(d=>ps(d[l]??"")))),r=n.reduce((c,l)=>c+l,0),i=r+fs*Math.max(0,e.length-1)-o;if(i<0)return zf(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)>Wf).sort((l,d)=>(n[d]??0)-(n[l]??0))[0];if(c===void 0)break;n[c]=(n[c]??0)-1,i-=1}return n}var Gf=(e,t,o)=>t.map((n,r)=>n.align==="right"?sn(e[r]??"",o[r]??0):Ne(e[r]??"",o[r]??0)).join(" ".repeat(fs)),Lo=2,Vf=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:d}){let f=$=>d===void 0?void 0:`${d}:${$}`,m=i!==void 0,[p,S]=Ke(m?f("cursor"):void 0,()=>0),[g,h]=Ke(f("query"),()=>""),[y,x]=ll(!1),k=g.trim().toLowerCase(),b=k===""||s===void 0?e:e.filter($=>s($).toLowerCase().includes(k)),T=y||k!=="",C=Math.max(1,r-1-(T?1:0)),L=b.length>C?Math.max(1,C-1):C,F=Math.max(0,b.length-L),[w,E]=ll(()=>p>=L?p-L+1:0);cl(()=>{S($=>Math.min($,Math.max(0,b.length-1)))},[b.length]),cl(()=>{E($=>m?p<$?p:p>=$+L?p-L+1:$:Math.min($,F))},[p,L,F,m]);let _=$=>{if(!m){E(ne=>Math.min(Math.max(0,ne+$),F));return}b.length!==0&&S(ne=>(ne+$+b.length)%b.length)};z(($,ne)=>{if(ne.upArrow||$==="k"){_(-1);return}if(ne.downArrow||$==="j"){_(1);return}if(ne.return){let q=b[p];q!==void 0&&i?.(q,p);return}s!==void 0&&$.startsWith("/")&&(x(!0),$.length>1&&h($.slice(1)))},a&&!y),rn(()=>{x(!1),h("")},{isActive:y||k!=="",layer:y?Vn.input:Vn.panel});let P=T?1:0,v=Hf(null),M=$=>{if($<=P)return null;let ne=w+$-P-1;return b[ne]===void 0?null:ne},R=Be({isActive:a,onWheel:_,onClick:({row:$,column:ne})=>{if(T&&$===0){x(!0),v.current?.moveToColumn(ne-Vf);return}if(i===void 0)return;let q=M($);if(q===null)return;let se=b[q];se!==void 0&&(S(q),i(se,q))},onHover:m?({row:$})=>{let ne=M($);ne!==null&&S(ne)}:void 0}),N=gs(t,b.map($=>o($).map(ul)),n-Lo),H=b.slice(w,w+L);return Mo(ds,{ref:R,flexDirection:"column",children:[T&&Mo(ds,{children:[cn(Vt,{color:u.accent,children:"/ "}),cn(kr,{ref:v,value:g,onChange:h,onSubmit:()=>x(!1),isActive:y,placeholder:"\u8F93\u5165\u5173\u952E\u8BCD\u8FC7\u6EE4",width:n-2-ps(` ${b.length}/${e.length}`)}),cn(Vt,{color:u.faintForeground,children:` ${b.length}/${e.length}`})]}),Mo(Vt,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(Lo),Gf(t.map($=>$.label),t,N)]}),b.length===0?Mo(ds,{flexDirection:"column",children:[cn(Vt,{wrap:"truncate",color:u.mutedForeground,children:`${" ".repeat(Lo)}${k===""?c:"\u65E0\u5339\u914D\u7ED3\u679C"}`}),l!==void 0&&k===""&&C>1&&cn(Vt,{wrap:"truncate",color:u.faintForeground,children:`${" ".repeat(Lo)}${l}`})]}):H.map(($,ne)=>{let q=w+ne,se=m&&q===p&&a,rt=se?u.accent:a?u.foreground:u.mutedForeground,A=o($);return Mo(Vt,{wrap:"truncate",children:[cn(Vt,{color:u.accent,children:se?`${X.cursor} `:" "}),t.map((B,K)=>{let de=A[K],Le=ul(de),xt=B.align==="right"?sn(Le,N[K]??0):Ne(Le,N[K]??0),Tt=typeof de=="object"?de.tone:void 0,Me=!se&&a&&Tt!==void 0?Fe[Tt]:rt;return cn(Vt,{color:Me,bold:se,children:K>0?`${" ".repeat(fs)}${xt}`:xt},B.label)})]},q)}),(w>0||w+L<b.length)&&cn(Vt,{color:u.faintForeground,children:`${" ".repeat(Lo)}${w+1}-${Math.min(w+L,b.length)} / ${b.length}`})]})}import{Text as Kf}from"ink";import{useEffect as Jf,useState as Yf}from"react";import{jsx as Qf}from"react/jsx-runtime";var ml=100;function ln(e,t,{retain:o}={}){let[n,r]=Ke(o,()=>1),[i,s]=Yf({pages:1,total:0}),a=Q([...e,n],()=>t(n,ml));Jf(()=>{a.phase==="ready"&&s({pages:Math.max(1,Math.ceil(a.data.total/ml)),total:a.data.total})},[a]);let c=d=>{r(f=>Math.min(Math.max(1,f+d),i.pages))},l=()=>r(1);return{state:a,page:n,pages:i.pages,total:i.total,go:c,reset:l}}function un({page:e,pages:t,total:o,width:n}){return Qf(Kf,{wrap:"truncate",color:u.faintForeground,children:Te(De([`\u7B2C ${e} / ${t} \u9875`,`\u5171 ${o} \u6761`,"\u2190\u2192 \u7FFB\u9875"]),n)})}import{jsx as Kt,jsxs as bs}from"react/jsx-runtime";function dl(){let e=D(),{width:t}=j(),o=re(),[n,r]=Xf({name:"list"}),i=ln([e.revision],(a,c)=>pc({page:a,pageSize:c}),{retain:"page"});z((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 Kt(G,{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:Kt(Y,{state:i.state,loading:"\u6B63\u5728\u8BFB\u53D6\u516C\u544A",width:t,children:a=>{if(n.name==="detail"){let c=bo(n.item.level),l=ze(c);return bs(hs,{flexDirection:"column",children:[bs(Br,{wrap:"truncate",children:[Kt(Br,{bold:!0,color:u.foreground,children:n.item.title}),Kt(Br,{color:l===void 0?u.mutedForeground:Fe[l],children:` ${c.label}`}),Kt(Br,{color:u.faintForeground,children:` ${De([`\u53D1\u5E03\u4E8E ${qt(n.item.publishedAt)}`])}`})]}),Kt(hs,{marginTop:1,children:Kt(an,{lines:Xn(n.item.content,t),height:Math.max(3,o-2)})})]})}return bs(hs,{flexDirection:"column",children:[Kt(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,Gt(bo(c.level)),qt(c.publishedAt)],onOpen:c=>{r({name:"detail",item:c}),mr(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"}),Kt(un,{page:i.page,pages:i.pages,total:i.total,width:t})]})}})})}import{Box as yt,Text as $o}from"ink";import{useState as Yl}from"react";import Tg from"string-width";var pl=()=>O(Ma,"/auth/me"),fl=e=>O(Se,"/auth/me",{method:"PATCH",json:e}).then(()=>{}),gl=e=>O(Se,"/auth/me/password",{method:"POST",json:e}).then(()=>{}),hl=e=>O(Se,"/auth/me/email/code",{method:"POST",json:e}).then(()=>{}),bl=e=>O(Se,"/auth/me/email",{method:"POST",json:e}).then(()=>{}),yl=()=>O(Oa,"/auth/me/sessions"),Sl=e=>O(Se,`/auth/me/sessions/${e}`,{method:"DELETE"}).then(()=>{}),xl=()=>O($a,"/auth/me/security"),ys=e=>O(Da,"/auth/me/totp/setup",{method:"POST",json:e}),Tl=e=>O(Li,"/auth/me/totp/confirm",{method:"POST",json:e}),wl=e=>O(Se,"/auth/me/totp/disable",{method:"POST",json:e}).then(()=>{}),kl=e=>O(Li,"/auth/me/totp/recovery-codes",{method:"POST",json:e}),vl=(e,t)=>O(Se,`/auth/me/passkeys/${e}`,{method:"PATCH",json:t}).then(()=>{}),_l=e=>O(Se,`/auth/me/passkeys/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Dt,measureElement as Ll,Text as Ce,useInput as Bl}from"ink";import{useEffect as og,useRef as Ml,useState as to}from"react";import ws from"string-width";import{Box as Zf,Text as mn,useInput as eg}from"ink";import{useRef as Rl,useState as Cl}from"react";import xs from"string-width";import{jsx as Jt,jsxs as Nl}from"react/jsx-runtime";var tg=e=>e.replace(/\r\n?/g,`
|
|
8
|
+
`).replace(new RegExp("(?!\\n)\\p{Cc}","gu"),"");function El(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=xs(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 Pl(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 Al(e,t,o){let n=0;for(let r=t.start;r<t.end;r+=1){let i=xs(e[r]??"");if(n+i>o)return r;n+=i}return t.end}var ng=(e,t,o)=>e.slice(t.start,o).reduce((n,r)=>n+xs(r),0);function Ss(e,t){let o=t;for(;o>0&&e[o-1]!==`
|
|
10
10
|
`;)o-=1;let n=t;for(;n<e.length&&e[n]!==`
|
|
11
|
-
`;)n+=1;return{start:o,end:n}}function
|
|
12
|
-
`);return}if(!P.tab){if(P.upArrow||P.downArrow){let _=P.upArrow?-1:1;b(_)||a?.(P.upArrow?"up":"down");return}if(P.leftArrow){x(Math.max(0,M-1));return}if(P.rightArrow){x(Math.min(v.length,M+1));return}if(P.home){x(bs(v,M).start);return}if(P.end){x(bs(v,M).end);return}if(P.backspace){if(M===0)return;k([...v.slice(0,M-1),...v.slice(M)].join(""),M-1);return}if(P.delete){if(M>=v.length)return;k([...v.slice(0,M),...v.slice(M+1)].join(""),M);return}if(P.ctrl){let _=bs(v,M);if(R==="a")x(_.start);else if(R==="e")x(_.end);else if(R==="k")k([...v.slice(0,M),...v.slice(_.end)].join(""),M);else if(R==="u")k([...v.slice(0,_.start),...v.slice(M)].join(""),_.start);else if(R==="w"){let N=M;for(;N>_.start&&v[N-1]===" ";)N-=1;for(;N>_.start&&v[N-1]!==" ";)N-=1;k([...v.slice(0,N),...v.slice(M)].join(""),N)}return}P.meta||!R||T(v,M,R)}},{isActive:o});let C=Rl(l,y),L=_l(C,m),F=Math.min(p,Math.max(0,C.length-r));L<F&&(F=L),L>F+r-1&&(F=L-r+1),F!==p&&S(F);let w=[];for(let R=0;R<r;R+=1){let P=F+R,v=C[P];if(v===void 0){w.push(Vt(ln,{children:" "},P));continue}let M=l.slice(v.start,v.end).join("");if(!o||P!==L){w.push(Vt(ln,{wrap:"truncate",color:u.foreground,children:M===""?" ":M},P));continue}let _=l.slice(v.start,m).join(""),N=m<v.end?l[m]??" ":" ",H=m<v.end?l.slice(m+1,v.end).join(""):"";w.push(El(ln,{wrap:"truncate",children:[Vt(ln,{color:u.foreground,children:_}),Vt(vo,{char:N}),Vt(ln,{color:u.foreground,children:H})]},P))}if(e===""&&i!==void 0){let R=[...i];w[0]=o?El(ln,{wrap:"truncate",children:[Vt(vo,{char:R[0]??" "}),Vt(ln,{color:u.faintForeground,children:R.slice(1).join("")})]},"placeholder"):Vt(ln,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let E=$e({onWheel:R=>{b(R)},onClick:({row:R,column:P})=>{c?.();let v=C[F+R];x(v===void 0?l.length:Cl(l,v,P))}});return Vt(Kf,{ref:E,flexDirection:"column",children:w})}import{Fragment as Ml,jsx as pe,jsxs as gt}from"react/jsx-runtime";var Zf=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Il="\u9009\u586B",eg=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,tg=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return eg(e,t)?o===void 0?Il:`${Il} \xB7 ${o}`:o},ng=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},og=6e4,rg=4,Ss=4,ig=2,$r=(e,t)=>e?u.accent:t?u.foreground:u.mutedForeground;function V({title:e,fields:t,submitLabel:o,onSubmit:n,onCancel:r,width:i,busy:s,busyLabel:a="\u6B63\u5728\u63D0\u4EA4",error:c}){let[l,d]=Zn(()=>Zf(t)),[f,m]=Zn(0),[p,S]=Zn({}),[g,h]=Zn(null),[,y]=Zn(0),x=s===!0,k=ng(t),b=k[Math.min(f,k.length-1)],T=b!==void 0&&b.type!=="submit"?t[b.index]:void 0,C=b?.type==="field"&&(T?.kind==="text"||T?.kind==="code"),L=b?.type==="field"&&T?.kind==="textarea",F=Object.values(p).some(A=>A.phase==="cooldown"&&A.until>Date.now());Xf(()=>{if(!F)return;let A=setInterval(()=>y(B=>B+1),1e3);return()=>clearInterval(A)},[F]);let w=A=>m(B=>(B+A+k.length)%k.length),E=(A,B)=>{if(A.options.length===0)return;let K=A.options.findIndex(Ie=>Ie.value===l[A.name]),de=A.options[(K+B+A.options.length)%A.options.length];de!==void 0&&d(Ie=>({...Ie,[A.name]:de.value}))},R=A=>{b?.type!=="field"||T?.kind!=="select"||E(T,A)},P=A=>{let B=t[A];if(B===void 0||B.kind!=="code")return;let K=(l[B.emailField]??"").trim();if(K===""){S(Ie=>({...Ie,[B.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let de=p[B.name];de?.phase!=="sending"&&(de?.phase==="cooldown"&&de.email===K&&de.until>Date.now()||(S(Ie=>({...Ie,[B.name]:{phase:"sending"}})),B.send(K).then(()=>S(Ie=>({...Ie,[B.name]:{phase:"cooldown",email:K,until:Date.now()+og}}))).catch(Ie=>S(yt=>({...yt,[B.name]:{phase:"error",message:je(Ie)}})))))};Ol((A,B)=>{if(B.tab){w(B.shift?-1:1);return}if(!L){if(B.upArrow){w(-1);return}if(B.downArrow){w(1);return}if(!C){if(B.leftArrow){R(-1);return}if(B.rightArrow){R(1);return}B.return&&(b?.type==="submit"?n(l):b?.type==="send"?P(b.index):w(1))}}},{isActive:!x}),nn(r,{isActive:!x,layer:zn.panel});let v=Math.max(0,...t.map(A=>xs(A.label))),M=i-ce,_=Math.max(8,M-v-8),N=(A,B)=>k.findIndex(K=>K.type===A&&(K.type==="submit"||K.index===B)),H=Nl(new Map).current,$=Nl(new Map).current,ne=2+v+Ss,q=(A,B)=>{let K=k[A];if(K===void 0)return;if(m(A),K.type==="submit"){n(l);return}if(K.type==="send"){P(K.index);return}let de=t[K.index];if(de!==void 0){if(de.kind==="select"){let Ie=de.options.find(St=>St.value===l[de.name]),yt=Te(Ie?.label??"\u2014",_);B>=ne-ig&&B<ne?E(de,-1):B>=ne+xs(yt)&&E(de,1);return}B>=ne&&$.get(K.index)?.moveToColumn(B-ne)}},se=(A,B)=>{if(A===null)return null;let K=Al(A),de=null;for(let[Ie,yt]of H){if(yt===null)continue;let St=Al(yt),Le=St.y-K.y;B<Le||B>=Le+St.height||(de===null||St.height<de.box.height)&&(de={index:Ie,box:St})}return de===null?null:{...de,frameX:K.x}},ot=$e({isActive:!x,onClick:({row:A,column:B})=>{let K=se(ot.current,A);K!==null&&q(K.index,B-(K.box.x-K.frameX))},onHover:({row:A})=>h(se(ot.current,A)?.index??null),onHoverLeave:()=>h(null)});return gt(Mt,{ref:ot,flexDirection:"column",children:[pe(_o,{title:e,width:i}),gt(Mt,{flexDirection:"column",marginTop:De,paddingLeft:ce,children:[c!=null&&pe(Mt,{marginBottom:1,children:pe(vn,{message:c.message,hint:c.hint,width:M})}),t.map((A,B)=>{let K=f===N("field",B)&&!x,de=tg(A,l),Ie=A.kind==="select"?A.options.find(Le=>Le.value===l[A.name]):void 0;if(A.kind==="textarea")return gt(Mt,{flexDirection:"column",ref:Le=>{H.set(N("field",B),Le)},children:[gt(Ce,{children:[pe(Ce,{color:u.accent,children:K?`${X.cursor} `:" "}),pe(Ce,{color:$r(K,g===N("field",B)),bold:K,children:A.label})]}),pe(Mt,{paddingLeft:2,children:pe(Pl,{value:l[A.name]??"",onChange:Le=>d(fi=>({...fi,[A.name]:Le})),isActive:K,width:M-2,rows:A.rows??rg,placeholder:A.placeholder,maxLength:A.maxLength,onEdge:Le=>w(Le==="up"?-1:1),onFocusRequest:()=>m(N("field",B))})}),K&&de!==void 0&&pe(Ce,{color:u.faintForeground,children:` ${Te(de,M-2)}`})]},A.name);let yt=A.kind==="code"&&f===N("send",B)&&!x,St=p[A.name];return gt(Mt,{flexDirection:"column",ref:Le=>{H.set(N("field",B),Le)},children:[gt(Ce,{children:[pe(Ce,{color:u.accent,children:K?`${X.cursor} `:" "}),pe(Ce,{color:$r(K,g===N("field",B)),bold:K,children:Ae(A.label,v)}),A.kind==="select"?gt(Ml,{children:[pe(Ce,{color:K?u.accent:u.border,children:` ${X.prev} `}),pe(Ce,{color:u.foreground,children:Te(Ie?.label??"\u2014",_)}),pe(Ce,{color:K?u.accent:u.border,children:` ${X.next}`})]}):gt(Ml,{children:[pe(Ce,{children:" ".repeat(Ss)}),pe(Tr,{ref:Le=>{$.set(B,Le)},value:l[A.name]??"",onChange:Le=>d(fi=>({...fi,[A.name]:Le})),onSubmit:()=>w(1),isActive:K,placeholder:A.kind==="text"||A.kind==="code"?A.placeholder:void 0,mask:A.kind==="text"?A.mask:void 0,width:_})]})]}),K&&de!==void 0&&pe(Ce,{color:u.faintForeground,children:`${" ".repeat(2+v+Ss)}${Te(de,_)}`}),A.kind==="code"&&pe(sg,{active:yt,state:St,email:(l[A.emailField]??"").trim(),indent:ne,width:_,hovered:g===N("send",B),nodeRef:Le=>{H.set(N("send",B),Le)}})]},A.name)}),pe(Mt,{marginTop:1,ref:A=>{H.set(N("submit"),A)},children:x?pe(Qe,{label:a}):gt(Ce,{children:[pe(Ce,{color:u.accent,children:b?.type==="submit"?`${X.cursor} `:" "}),pe(Ce,{color:$r(b?.type==="submit",g===N("submit")),bold:b?.type==="submit",children:o})]})})]})]})}function sg({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return pe(Mt,{paddingLeft:n,children:pe(Qe,{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 gt(Mt,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[gt(Ce,{children:[pe(Ce,{color:u.accent,children:e?`${X.cursor} `:" "}),pe(Ce,{color:a>0?u.faintForeground:$r(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&pe(Ce,{color:u.danger,children:` ${Te(t.message,r)}`})]})}var ag=2,Ll=2;function Dl({options:e,value:t,onChange:o}){let n=e.findIndex(d=>d.value===t),r=fr();Ol((d,f)=>{if(!f.leftArrow&&!f.rightArrow)return;let m=f.leftArrow?-1:1,p=e[(n+m+e.length)%e.length];p!==void 0&&o(p.value)},{isActive:!r});let i=[],s=0;e.forEach((d,f)=>{f>0&&(s+=Ll);let m=xs(d.label)+ag;i.push({value:d.value,from:s,to:s+m}),s+=m});let[a,c]=Zn(null),l=$e({onClick:({column:d})=>{let f=i.find(m=>d>=m.from&&d<m.to);f!==void 0&&o(f.value)},onHover:({column:d})=>{let f=i.find(m=>d>=m.from&&d<m.to);c(f?.value??null)},onHoverLeave:()=>c(null)});return pe(Mt,{ref:l,children:pe(Ce,{wrap:"truncate",children:e.map((d,f)=>{let m=d.value===t;return gt(Ce,{children:[f>0&&" ".repeat(Ll),pe(Ce,{backgroundColor:m?u.foreground:u.border,color:m?u.background:d.value===a?u.foreground:u.mutedForeground,bold:m,children:` ${d.label} `})]},d.value)})})})}import{Box as ks,Text as $l}from"ink";import cg from"qrcode";import{jsx as Lo,jsxs as fg}from"react/jsx-runtime";var lg="#000000",ug="#ffffff",Ts=2,Fl=2,vs=1,Bl,ws;function Ul(e){if(e===Bl&&ws!==void 0)return ws;let t=cg.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+Ts*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+Ts];c!==void 0&&(c[a+Ts]=n[s*o+a]===1)}return Bl=e,ws=i,i}function mg(e){let t=Ul(e).length;return{columns:t*Fl,rows:t}}function Br(e,t,o,n){let r=mg(e),i=t.rows-r.rows-vs;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+vs+o.rows+n.rows}}}function dg(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(Lo($l,{backgroundColor:e[n]??!1?lg:ug,children:" ".repeat((r-n)*Fl)},n)),n=r);return Lo($l,{children:o},t)}function pg({value:e}){return Lo(ks,{flexDirection:"column",flexShrink:0,children:Ul(e).map((t,o)=>dg(t,o))})}function Fr({value:e,aside:t}){return fg(ks,{flexDirection:"column",flexShrink:0,children:[Lo(pg,{value:e}),Lo(ks,{marginTop:vs,flexDirection:"column",children:t})]})}import{Box as Ur,Text as Ze}from"ink";import jl from"string-width";import{jsx as et,jsxs as Mo}from"react/jsx-runtime";var jr=2,Rs=4,ql=e=>" ".repeat(e),_s=13,Hl=4,Wl=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+jr)/(_s+jr)))),Kt=(e,t,o=Hl)=>Math.ceil(e/Wl(e,t,o))*2;function tt({tiles:e,width:t,maxPerRow:o=Hl}){let n=Wl(e.length,t,o),r=Math.floor((t-jr*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return et(Ur,{flexDirection:"column",children:i.map((s,a)=>et(Ur,{flexDirection:"column",children:["label","value"].map(c=>et(Ze,{wrap:"truncate",children:s.map((l,d)=>Mo(Ze,{children:[d>0&&ql(jr),et(Ze,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Ae(l[c],r)})]},l.label))},c))},a))})}function zl({used:e,total:t,width:o=20}){let n=t<=0?1:Math.min(1,Math.max(0,e/t)),r=Math.round(n*o),i=n>=1?u.danger:n>=.8?u.warning:u.foreground;return Mo(Ze,{children:[et(Ze,{color:i,children:X.barFilled.repeat(r)}),et(Ze,{color:u.border,children:X.barEmpty.repeat(o-r)})]})}function gg({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>jl(r))),n=Math.max(0,t-o-3);return et(Ur,{flexDirection:"column",children:e.map(([r,i])=>Mo(Ze,{wrap:"truncate",children:[et(Ze,{color:u.mutedForeground,children:Ae(r,o)})," ",et(Ze,{color:u.foreground,children:Te(i,n)})]},r))})}var Gl=(e,t)=>Math.floor((t-Rs)/2)<_s*2?e:Math.ceil(e/2);function Ee({items:e,width:t}){let o=Math.floor((t-Rs)/2);if(o<_s*2)return et(gg,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>jl(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?et(Ze,{children:" ".repeat(o)}):Mo(Ze,{children:[et(Ze,{color:u.mutedForeground,children:Ae(a[0],n)})," ",et(Ze,{color:u.foreground,children:Ae(a[1],r)})]});return et(Ur,{flexDirection:"column",children:i.map((a,c)=>Mo(Ze,{wrap:"truncate",children:[s(a[0]),ql(Rs),s(a[1])]},c))})}import{Fragment as wg,jsx as ie,jsxs as un}from"react/jsx-runtime";var bg={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"},Kl="\u5BC6\u94A5 ",yg=10,Sg={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"}},xg=2+J;function Tg({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(un(Oo,{wrap:"truncate",color:u.accent,children:[Ae(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return ie(ht,{flexDirection:"column",children:n})}function Jl(){let e=D(),{width:t,columns:o,rows:n}=j(),r=re(),[i,s]=Vl({name:"menu"}),[a,c]=Vl(!1),{busy:l,error:d,reset:f,fail:m,run:p}=ge(),S=Q([e.revision],async()=>{let[k,b,T]=await Promise.all([ul(),bl(),gl()]);return{user:k.user,security:b,sessions:T.sessions}});z(k=>{i.name==="menu"&&l===null&&k==="r"&&e.reload()}),yc(i.name==="codes");let g=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}f(),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,b)=>{c(!1),s({name:"codes",codes:k,message:b})},x=(k,b)=>{k==="rebind"?p("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>hs({code:b}),{onSuccess:T=>s({name:"enroll",setup:T})}):k==="regenerate"?p("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>xl({code:b}),{onSuccess:({recoveryCodes:T})=>y(T,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):p("\u6B63\u5728\u505C\u7528",()=>Sl({code:b}),{onSuccess:()=>h("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return ie(G,{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,children:ie(Y,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:k,security:b,sessions:T})=>{if(i.name==="rename")return ie(V,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:k.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:g,onSubmit:w=>{let E=(w.username??"").trim();if(E===""||E.length>bn){m(`\u8BF7\u8F93\u5165 1 \u5230 ${bn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>ml({username:E}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return ie(V,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,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:w=>pl({email:w})},{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:w=>{let E=(w.email??"").trim(),R=(w.code??"").trim(),P=w.password??"";if(E===""||R===""||P===""){m("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}p("\u6B63\u5728\u4FDD\u5B58",()=>fl({email:E,code:R,password:P}),{onSuccess:()=>h("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return ie(V,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,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 ${rt} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:g,onSubmit:w=>{let E=w.old??"",R=w.next??"";if(E===""){m("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(R.length<rt){m(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${rt} \u4F4D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>dl({oldPassword:E,newPassword:R}),{onSuccess:()=>h("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return ie(qe,{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:d,onConfirm:()=>p("\u6B63\u5728\u9000\u51FA",()=>ar(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:g});if(i.name==="code"){let w=Sg[i.intent];return ie(V,{title:w.title,width:t,submitLabel:w.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:d,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:w.hint}],onCancel:g,onSubmit:E=>{let R=(E.code??"").trim();if(R===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}x(i.intent,R)}})}if(i.name==="enroll"){let w=(R,P)=>un(wg,{children:[P&&ie(Oo,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),un(Oo,{children:[ie(Oo,{color:u.mutedForeground,children:Kl}),ie(Oo,{color:u.accent,children:i.setup.secret})]}),ie(ht,{marginTop:1,children:ie(V,{title:"\u586B\u5165\u52A8\u6001\u9A8C\u8BC1\u7801\u5B8C\u6210\u7ED1\u5B9A",width:R,submitLabel:"\u7ED1\u5B9A",busy:l!==null,busyLabel:l??"\u6B63\u5728\u7ED1\u5B9A",error:d,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:g,onSubmit:v=>{let M=(v.code??"").trim();if(M===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}p("\u6B63\u5728\u7ED1\u5B9A",()=>yl({code:M}),{onSuccess:({recoveryCodes:_})=>y(_,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),E=Br(i.setup.otpauthUri,{width:t,rows:r},{columns:hg(Kl)+i.setup.secret.length,rows:yg},{columns:o-t,rows:n-r});return E.fits?ie(Fr,{value:i.setup.otpauthUri,aside:w(E.asideWidth,!0)}):un(ht,{flexDirection:"column",children:[ie(fe,{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"}),w(t,!1)]})}if(i.name==="codes")return un(ht,{flexDirection:"column",children:[ie(fe,{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"}),ie(ht,{marginTop:1,children:ie(Tg,{codes:i.codes,width:t})}),ie(ht,{marginTop:1,children:ie(le,{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:w=>{if(w==="ack"){c(R=>!R);return}let E=i.message;s({name:"menu"}),e.reload(),e.toast("ok",E)}})})]});if(i.name==="passkey-add")return ie(fe,{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 ie(V,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,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:w=>{let E=(w.name??"").trim();if(E===""){m("\u8BF7\u8F93\u5165\u540D\u79F0");return}p("\u6B63\u5728\u4FDD\u5B58",()=>Tl(i.item.id,{name:E}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return ie(qe,{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:d,onConfirm:()=>p("\u6B63\u5728\u5220\u9664",()=>wl(i.item.id),{onSuccess:()=>h("\u5DF2\u5220\u9664")}),onCancel:g});if(i.name==="passkey"){let w=i.item;return ie(ht,{flexDirection:"column",children:un(oe,{title:`Passkey ${w.name}`,width:t,children:[ie(Ee,{width:t-ce,items:[["\u540D\u79F0",w.name],["\u6DFB\u52A0\u65F6\u95F4",ee(w.createdAt)],["\u6700\u8FD1\u4F7F\u7528",w.lastUsedAt===null?"\u2014":ee(w.lastUsedAt)]]}),ie(ht,{marginTop:1,children:ie(le,{width:t-ce,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:E=>{f(),s(E==="rename"?{name:"passkey-rename",item:w}:{name:"passkey-delete",item:w})}})})]})})}if(i.name==="confirm-revoke")return ie(qe,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:d,onConfirm:()=>p("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>hl(i.item.id),{onSuccess:()=>h("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:g});if(i.name==="session"){let w=i.item;return un(ht,{flexDirection:"column",children:[ie(oe,{title:Jo(w.device),note:w.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:ie(Ee,{width:t-ce,items:[["\u8BBE\u5907\u7C7B\u578B",w.device?.type!=null?bg[w.device.type]??w.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",w.device?.client!=null?`${w.device.client} ${w.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",w.device?.os!=null?`${w.device.os} ${w.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",w.device?.model!=null?`${w.device.vendor??""} ${w.device.model}`.trim():"\u2014"],["IP \u5730\u5740",w.ip??"\u2014"],["\u767B\u5F55\u65F6\u95F4",ee(w.loginAt)],["\u6700\u540E\u6D3B\u8DC3",ee(w.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",ee(w.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",w.userAgent??"\u2014"]]})}),!w.current&&l===null&&ie(ht,{marginTop:1,children:ie(le,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{f(),s({name:"confirm-revoke",item:w})}})})]})}let C=b.totp,L=C.enabled?C.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${C.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",F=[{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"},...C.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"},...b.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}]:[],...b.passkeys.map(w=>({value:{kind:"passkey",item:w},label:w.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${w.lastUsedAt===null?"\u2014":ee(w.lastUsedAt)}`})),{value:{kind:"add-passkey"},label:"\u6DFB\u52A0 Passkey",hint:"\u9700\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"},{heading:""},{heading:"\u767B\u5F55\u8BBE\u5907"},...T.map(w=>({value:{kind:"session",item:w},label:w.current?`${Jo(w.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:Jo(w.device),...w.current?{labelTone:"accent"}:{},hint:`${w.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${ee(w.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return un(ht,{flexDirection:"column",children:[ie(Ee,{width:t,items:[["\u7528\u6237\u540D",k.username],["\u90AE\u7BB1",k.email],["\u4E24\u6B65\u9A8C\u8BC1",C.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${C.enabledAt===null?"\u2014":ee(C.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",L]]}),ie(ht,{marginTop:J,children:ie(le,{width:t,height:Math.max(3,r-xg),isActive:l===null,items:F,retain:"menu",onSelect:w=>{f(),w.kind==="rename"?s({name:"rename"}):w.kind==="email"?s({name:"email"}):w.kind==="password"?s({name:"password"}):w.kind==="logout"?s({name:"confirm-logout"}):w.kind==="enable"?p("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>hs({}),{onSuccess:E=>s({name:"enroll",setup:E})}):w.kind==="code"?s({name:"code",intent:w.intent}):w.kind==="add-passkey"?s({name:"passkey-add"}):w.kind==="passkey"?s({name:"passkey",item:w.item}):w.kind==="session"&&s({name:"session",item:w.item})}})})]})}})})}import{Box as Es,Text as Ps,useInput as Cg}from"ink";import{useRef as nu,useState as Hr}from"react";import Eg from"string-width";import{z as ze}from"zod";var kg=ze.object({siteName:ze.string(),siteDescription:ze.string(),apiLines:Ea,quotaPerUsd:ze.number().int().positive(),ticketAutoCloseMinutes:ze.number(),legal:ze.object({termsConfigured:ze.boolean(),privacyConfigured:ze.boolean()}),invitation:ze.object({firstInviterPercent:ze.number(),firstInviteePercent:ze.number()}),initialized:ze.boolean()});function ke(e,t){return kt(kg,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var vg=ze.object({title:ze.string(),content:ze.string(),configured:ze.boolean()});function Yl(e,t){return kt(vg,`${e}/api/agreements/${t}`)}var Ql=e=>O(gn(Xo),qt("/tickets",{...e})),Xl=e=>O(Xo,"/tickets",{method:"POST",json:e}),Cs=e=>O(Ua,`/tickets/${e}`),Zl=(e,t)=>O(Li,`/tickets/${e}/messages`,{method:"POST",json:{content:t}}),eu=e=>O(Se,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),tu=e=>O(Se,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{useEffect as Rg,useRef as _g}from"react";function qr(e,t,o=!0){let n=_g(t);n.current=t,Rg(()=>{if(!o)return;let r=!1,i=!1,s=setInterval(()=>{i||r||(i=!0,n.current().catch(()=>{}).finally(()=>{i=!1}))},e);return()=>{r=!0,clearInterval(s)}},[e,o])}import{jsx as Ot,jsxs as ru}from"react/jsx-runtime";var Pg=5e3,Ag=7,Ng=3,ou=1;function Ig(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+Eg(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:` ${ee(r.createdAt)}`,color:u.faintForeground}]},c=It([{text:r.content,color:u.foreground}],Math.max(8,t-4));s?o.push(n(a),...c.map(n)):o.push(a,...c)}),o}function iu({params:e}){let t=D(),{width:o}=j(),n=re(),[r,i]=Hr("main"),[s,a]=Hr(!1),[c,l]=Hr(0),{busy:d,error:f,reset:m,fail:p,run:S}=ge(),g=Q([e.id,t.revision],async()=>{let[w,E]=await Promise.all([Cs(e.id),ke(t.ctx.site)]);return{detail:w,site:E}}),[h,y]=Hr(null),x=nu(0),k=nu(t.revision);k.current!==t.revision&&(k.current=t.revision,x.current+=1,h!==null&&y(null));let b=g.phase==="ready"?g.data:null,T=h??b?.detail??null;qr(Pg,async()=>{if(T===null||d!==null)return;let w=x.current,E=await Cs(e.id);w===x.current&&(E.ticket.updatedAt!==T.ticket.updatedAt||E.messages.length!==T.messages.length)&&y(E)},r==="main"&&b!==null),z(w=>{r!=="main"||s||d!==null||(w==="r"?t.reload():w==="x"&&T!==null&&T.ticket.status!=="closed"&&(m(),i("confirm-close")))}),Cg((w,E)=>{E.tab&&r==="main"&&!s&&T?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&d===null});let C=()=>{if(r!=="main"){m(),i("main");return}if(s){a(!1);return}t.pop()},L=w=>{S("\u6B63\u5728\u53D1\u9001",()=>Zl(e.id,w),{onSuccess:()=>{a(!1),l(E=>E+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},F=r==="main"&&!s?T?.ticket.status==="closed"?["\u2191\u2193 \u6EDA\u52A8","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Tab \u56DE\u590D","x \u5173\u95ED\u5DE5\u5355","r \u5237\u65B0"]:[];return Ot(G,{trail:["\u5DE5\u5355\u652F\u6301",T?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:F,onEscape:C,children:Ot(Y,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:w})=>{if(T===null)return null;let E=T.ticket,R=E.status==="closed";if(r==="confirm-close")return Ot(qe,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${E.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:d,error:f,onConfirm:()=>S("\u6B63\u5728\u5173\u95ED",()=>eu(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:C});let P=w.ticketAutoCloseMinutes>0?ou:0,v=R?Ng:s?Ag:ou,M=Math.max(3,n-P-v-J);return ru(Es,{flexDirection:"column",children:[P>0&&Ot(Ps,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${w.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`}),Ot(rn,{lines:Ig(T.messages,o),height:M,isActive:!s&&d===null,pinBottom:!0}),Ot(Es,{marginTop:1,flexDirection:"column",children:R?ru(Es,{flexDirection:"column",children:[Ot(Ps,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),Ot(le,{width:o,isActive:d===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>S("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>tu(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?Ot(V,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:d!==null,busyLabel:d??"\u6B63\u5728\u53D1\u9001",error:f,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9"}],onCancel:()=>a(!1),onSubmit:_=>{let N=(_.content??"").trim();if(N===""){p("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9");return}L(N)}},c):Ot(Ps,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Lg}from"ink";import{useState as Mg}from"react";import{jsx as Cn,jsxs as $g}from"react/jsx-runtime";var Og=Je(vi,Bi,"\u5168\u90E8\u72B6\u6001"),Dg={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"},As={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:Dg};function su(){let e=D(),{width:t}=j(),o=re(),[n,r]=Mg({name:"list"}),[i,s]=Ve("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:f}=ge(),m=an([e.revision,i],(g,h)=>Ql({page:g,pageSize:h,...i===""?{}:{status:i}}),{retain:"page"}),p=n.name==="list";z((g,h)=>{p&&(g==="r"?e.reload():g==="f"?r({name:"filter"}):g==="n"?r({name:"create-category"}):h.leftArrow?m.go(-1):h.rightArrow&&m.go(1))});let S=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return Cn(G,{hints:p?["\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"?Cn(V,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Og,initial:i}],onCancel:S,onSubmit:g=>{s(g.status??""),m.reset(),r({name:"list"})}}):n.name==="create-category"?Cn(le,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...Ri.map(g=>({value:g,label:nr(g),hint:As[g].title}))],onSelect:g=>r({name:"create",category:g})}):n.name==="create"?Cn(V,{title:`\u65B0\u5EFA\u5DE5\u5355 \u2014 ${nr(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:_i.map(g=>({value:g,label:Fi(g).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:As[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:As[n.category].content}],onCancel:S,onSubmit:g=>{let h=(g.title??"").trim(),y=(g.content??"").trim();if(h===""){d("\u8BF7\u586B\u5199\u6807\u9898");return}if(y===""){d("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}f("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>Xl({title:h,category:n.category,priority:g.priority??"normal",content:y}),{onSuccess:()=>{r({name:"list"}),m.reset(),e.reload(),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):Cn(Y,{state:m.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:g=>$g(Lg,{flexDirection:"column",children:[Cn(_e,{retain:"list",items:g.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,Wt(Fi(h.priority)),nr(h.category),ee(h.updatedAt),Wt(Bi(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}),Cn(cn,{page:m.page,pages:m.pages,total:m.total,width:t})]})})})}import{Box as Bg}from"ink";import{jsx as Do}from"react/jsx-runtime";function au({params:e}){let t=D(),{width:o}=j(),n=re(),r=Q([e.type,t.revision],()=>Yl(t.ctx.site,e.type));return Do(G,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:Do(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?Do(Bg,{flexDirection:"column",children:Do(rn,{lines:Yn(i.content,o),height:n})}):Do(fe,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function cu(e,t){await kt(Se,`${e}/api/auth/send-code`,{json:t})}async function lu(e,t){let o=await mt(`${e}/api/auth/register`,{json:t});At(o);let n=qn.parse(o.data);return bo(e,ho({refresh:null,device:null},o.headers),n)}async function uu(e,t){await kt(Se,`${e}/api/auth/forgot-password`,{json:t})}async function mu(e,t){await kt(Se,`${e}/api/auth/reset-password`,{json:t})}import{jsx as du}from"react/jsx-runtime";function pu(){let e=D(),{width:t}=j(),{busy:o,error:n,fail:r,run:i}=ge();return du(G,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:du(V,{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=>uu(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${rt} \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<rt){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${rt} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>mu(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 Is,Text as Ug}from"ink";import{useState as gu}from"react";import{Box as fu}from"ink";import{jsx as Ns,jsxs as Fg}from"react/jsx-runtime";var Wr=e=>e.termsConfigured||e.privacyConfigured;function zr({legal:e,width:t,onAgree:o}){let n=D(),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 Fg(fu,{flexDirection:"column",children:[Ns(fe,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),Ns(fu,{marginTop:1,children:Ns(le,{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 mn,jsxs as hu}from"react/jsx-runtime";function bu(){let e=D(),{width:t}=j(),[o,n]=gu({name:"credentials"}),[r,i]=gu(!1),{busy:s,error:a,reset:c,fail:l,run:d}=ge(),f=Q([e.revision],()=>ke(e.ctx.site)),m=h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${h}`),e.home()},p=(h,y)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>tc(e.ctx.site,h,y),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}m(x.session.username)}})},S=(h,y)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>nc(e.ctx.site,h.jar,h.ticket,y,h.kind),{onSuccess:x=>m(x.username)})},g=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return hu(G,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:g,isActive:s===null,children:[o.name==="credentials"&&mn(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:h=>Wr(h.legal)&&!r?mn(zr,{legal:h.legal,width:t,onAgree:()=>i(!0)}):hu(Is,{flexDirection:"column",children:[mn(V,{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:g,onSubmit:y=>{let x=(y.account??"").trim(),k=y.password??"";if(x===""||k===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}p(x,k)}}),mn(Is,{marginTop:1,children:mn(Ug,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&mn(le,{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"&&mn(Is,{flexDirection:"column",children:mn(V,{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:g,onSubmit:h=>{let y=(h.code??"").trim();if(y===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,y)}})})]})}import{useState as jg}from"react";import{jsx as Gr}from"react/jsx-runtime";function yu(){let e=D(),{width:t}=j(),[o,n]=jg(!1),{busy:r,error:i,fail:s,run:a}=ge(),c=Q([e.revision],()=>ke(e.ctx.site));return Gr(G,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:Gr(Y,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>Wr(l.legal)&&!o?Gr(zr,{legal:l.legal,width:t,onAgree:()=>n(!0)}):Gr(V,{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:d=>cu(e.ctx.site,{email:d,purpose:"register"})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${rt} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:d=>{let f=(d.username??"").trim(),m=(d.email??"").trim(),p=(d.code??"").trim(),S=d.password??"",g=(d.invite??"").trim();if(f===""||f.length>bn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${bn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(m===""||p===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<rt){s(`\u5BC6\u7801\u81F3\u5C11 ${rt} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>lu(e.ctx.site,{username:f,email:m,password:S,code:p,...g===""?{}:{inviteCode:g}}),{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 Pn}from"ink";import{useEffect as oh,useRef as rh,useState as $s}from"react";import{z as I}from"zod";var qg=I.object({balance:I.number(),today:I.object({requests:I.number(),tokens:I.number(),cost:I.number()})}),Su=()=>O(qg,"/dashboard/summary"),xu=["all","30d","7d"],Hg=I.object({totals:I.object({requests:I.number(),tokens:I.number(),cost:I.number()}),hourly:I.array(I.number()),models:I.array(I.object({model:I.string(),displayName:I.string(),tokens:I.number(),inTokens:I.number(),outTokens:I.number()})),chart:I.object({start:I.string(),end:I.string(),points:I.array(I.object({day:I.string(),model:I.string(),tokens:I.number()}))}),heatmap:I.object({start:I.string(),end:I.string(),days:I.array(I.object({day:I.string(),cost:I.number()}))}),activeDays:I.number(),currentStreak:I.number(),longestStreak:I.number()}),Ls=e=>O(Hg,qt("/dashboard/stats",{range:e})),Wg=I.object({id:I.number().int(),requestId:I.string(),tokenName:I.string(),protocol:pa,model:I.string(),modelDisplayName:I.string(),groupName:I.string(),promptTokens:I.number(),completionTokens:I.number(),cachedTokens:I.number(),cacheWrite5mTokens:I.number(),cacheWrite1hTokens:I.number(),totalTokens:I.number(),quotaCost:I.number(),subscriptionPlanName:I.string().nullable(),multiplier:I.string(),status:Ta,httpStatus:I.number().int(),stopReason:I.string().nullable(),latencyMs:I.number(),firstByteMs:I.number().nullable(),stream:I.boolean(),ip:I.string().nullable(),createdAt:I.string()}),Tu=e=>O(gn(Wg),qt("/logs",{...e})),zg=I.object({quotaCost:I.number(),rpm:I.number(),tpm:I.number(),concurrency:I.number()}),wu=e=>O(zg,qt("/logs/stats",{...e})),Gg=I.object({id:I.number().int(),type:ya,amount:I.number(),balanceAfter:I.number(),refType:Sa,refId:I.string().nullable(),createdAt:I.string()}),ku=e=>O(gn(Gg),qt("/quota-ledger",{...e}));import{Box as Vg,Text as _t}from"ink";import $o from"string-width";import{Fragment as Ru,jsx as Ct,jsxs as Ms}from"react/jsx-runtime";var En=1,Kg=4,Jg=1,eo=8,Yg=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],vu=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function _u({data:e,order:t,width:o,rows:n}){let r=n-Jg,i=[];for(let E=e.start;E<=e.end;E=Xt(E,1))i.push(E);let s=Math.min(Kg,Math.floor((o+En)/i.length)-En);s<1&&(s=1,i=i.slice(-Math.floor((o+En)/(1+En))));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,Sr.length).map((E,R)=>[E,R])),d=Sr.length,f=E=>Sr[E]??u.faintForeground,m=new Map(i.map((E,R)=>[E,R])),p=i.map(()=>Array.from({length:d+1},()=>0));for(let E of e.points){let R=m.get(E.day);if(R===void 0)continue;let P=p[R];if(P===void 0)continue;let v=l.get(E.model)??d;P[v]=(P[v]??0)+E.tokens}let S=p.map(E=>E.reduce((R,P)=>R+P,0)),g=Math.max(0,...S),h=r*eo,y=p.map((E,R)=>{let P=Array.from({length:r},()=>null),v=S[R]??0;if(v<=0||g<=0)return P;let M=Math.max(1,Math.round(v/g*h)),_=[],N=0,H=0;E.forEach(($,ne)=>{N+=$;let q=Math.round(N/v*M);for(let se=H;se<q;se+=1)_[se]=f(ne);H=q});for(let $=0;$<r;$+=1){let ne=Math.min(eo,M-$*eo);if(ne<=0)break;let q=new Map;for(let A=$*eo;A<$*eo+ne;A+=1){let B=_[A];B!==void 0&&q.set(B,(q.get(B)??0)+1)}let se=null,ot=0;for(let[A,B]of q)B>ot&&(se=A,ot=B);if(se===null)break;P[$]={color:se,glyph:ne===eo?null:Yg[ne-1]??null}}return P}),x=E=>{let R=[],P=(v,M,_)=>{let N=R[R.length-1];N!==void 0&&N.color===v&&N.glyph===M?N.width+=_:R.push({color:v,glyph:M,width:_})};return y.forEach((v,M)=>{M>0&&P(null,null,En);let _=v[E]??null;_===null?P(null,null,s):P(_.color,_.glyph,s)}),R},k=i.length*(s+En)-En,b=vu(a),T=vu(c),C=g>0?`\u5355\u65E5\u5CF0\u503C ${tn(g)}`:"",L=k-$o(b)-$o(T),F=C!==""&&L>=$o(C)+4,w=F?Math.floor((L-$o(C))/2):L;return Ms(Vg,{flexDirection:"column",children:[Array.from({length:r},(E,R)=>{let P=r-1-R;return Ct(_t,{wrap:"truncate",children:x(P).map((v,M)=>v.color===null?Ct(_t,{children:" ".repeat(v.width)},M):v.glyph===null?Ct(_t,{backgroundColor:v.color,children:" ".repeat(v.width)},M):Ct(_t,{color:v.color,children:v.glyph.repeat(v.width)},M))},P)}),Ct(_t,{wrap:"truncate",children:L<2?Ct(_t,{color:u.faintForeground,children:Te(b,k)}):Ms(Ru,{children:[Ct(_t,{color:u.faintForeground,children:b}),Ct(_t,{children:" ".repeat(w)}),F&&Ms(Ru,{children:[Ct(_t,{color:u.mutedForeground,children:C}),Ct(_t,{children:" ".repeat(L-$o(C)-w)})]}),Ct(_t,{color:u.faintForeground,children:T})]})})]})}import{Box as Cu,Text as $t}from"ink";import Qg from"string-width";import{jsx as Dt,jsxs as Os}from"react/jsx-runtime";var Vr=3,Jt=2,Ds=10,Xg=8,Eu=e=>Math.floor((e-Vr)/Jt),Pu=e=>Eu(e)>=Xg;function Zg(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=Xt(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 eh(e,t){let o=t*Jt,n="",r=0,i="";for(;r<o;){let s=r%Jt===0?e[r/Jt*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=Qg(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var th={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function nh({cells:e,day:t,weeks:o}){return Os($t,{wrap:"truncate",children:[Dt($t,{color:u.faintForeground,children:Ae(th[t]??"",Vr)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?Dt($t,{children:" ".repeat(Jt)},r):Dt($t,{backgroundColor:yr[i.level],children:" ".repeat(Jt)},r)})]})}function Au({data:e,funFact:t,width:o}){let n=Zg(e),r=Math.ceil(n.length/7),i=Math.min(r,Eu(o)),s=n.slice((r-i)*7),a=3+yr.length*Jt+3,c=Math.max(0,Vr+i*Jt-a-2);return Os(Cu,{flexDirection:"column",children:[Dt($t,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(Vr)+eh(s,i)}),Array.from({length:7},(l,d)=>Dt(nh,{cells:s,day:d,weeks:i},d)),Dt(Cu,{marginTop:1,children:Os($t,{wrap:"truncate",children:[Dt($t,{color:u.mutedForeground,children:Ae(t??"",c)})," ",Dt($t,{color:u.faintForeground,children:"\u5C11 "}),yr.map(l=>Dt($t,{backgroundColor:l,children:" ".repeat(Jt)},l)),Dt($t,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as Fe,jsxs as Iu}from"react/jsx-runtime";var ih={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},sh=1,Kr=4,Nu=5,ah=9;function ch(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function Lu(){let e=D(),{width:t}=j(),o=re(),[n,r]=$s("all"),[i,s]=$s("heatmap"),[a,c]=$s(null),l=rh(null),d=Q([n,e.revision],async()=>{let f=l.current;if(f!==null&&f.revision===e.revision){let g=await Ls(n);return{summary:f.summary,stats:g,site:f.site}}let[m,p,S]=await Promise.all([Su(),Ls(n),ke(e.ctx.site)]);return l.current={revision:e.revision,summary:m,site:S},{summary:m,stats:p,site:S}});return oh(()=>{d.phase==="ready"&&c(qa({tokens:d.data.stats.totals.tokens,scope:"user",range:n}))},[d,n]),z(f=>{f==="r"&&e.reload(),f==="t"&&s(m=>m==="heatmap"?"chart":"heatmap")}),Fe(G,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:Fe(Pn,{flexDirection:"column",children:Fe(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:f,stats:m,site:p})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:ae(f.balance,p.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:Re(f.today.requests)},{label:"\u4ECA\u65E5 Token",value:Re(f.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ae(f.today.cost,p.quotaPerUsd)}],g=[{label:"\u8BF7\u6C42\u6570",value:Re(m.totals.requests)},{label:"Token \u603B\u91CF",value:tn(m.totals.tokens)},{label:"\u6D88\u8017",value:ae(m.totals.cost,p.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:Re(m.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${m.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${m.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:ch(m.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:m.models[0]?.displayName??"\u2014"}],h=t-ce,y=R=>it+R+Kt(S.length,h)+J+it+R+sh+R+Kt(g.length,h)+J+it+R,x=o-y(De)>=Kr?De:0,k=o-y(x),b=J+it+x+Nu,T=i==="chart"&&m.chart.points.length>0&&k>=b+Kr,C=i==="heatmap"&&Pu(h)&&k-(J+Ds)>=Kr,L=C?J+Ds:0,F=T?Math.min(ah,Nu+Math.floor((k-b-Kr)/2)):0,w=k-L-(T?J+it+x+F:0),E=R=>`${(m.totals.tokens>0?R/m.totals.tokens*100:0).toFixed(1)}%`;return Iu(Pn,{flexDirection:"column",children:[Fe(oe,{title:"\u6982\u89C8",width:t,gap:x,children:Fe(tt,{width:h,tiles:S})}),Fe(Pn,{marginTop:1,flexDirection:"column",children:Iu(oe,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[Fe(Dl,{options:xu.map(R=>({value:R,label:ih[R]})),value:n,onChange:r}),Fe(Pn,{marginTop:x,children:Fe(tt,{width:h,tiles:g})}),C&&Fe(Pn,{marginTop:1,flexDirection:"column",children:Fe(Au,{data:m.heatmap,funFact:a,width:h})})]})}),T&&Fe(Pn,{marginTop:1,flexDirection:"column",children:Fe(oe,{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:Fe(_u,{data:m.chart,order:m.models.map(R=>R.model),width:h,rows:F})})}),Fe(Pn,{marginTop:1,flexDirection:"column",children:Fe(oe,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:m.models.length===0?Fe(fe,{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"}):Fe(_e,{retain:"list",items:m.models,width:h,height:w,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:R=>[R.displayName,tn(R.tokens),tn(R.inTokens),tn(R.outTokens),E(R.tokens)],searchOf:R=>R.displayName})})})]})}})})})}import{Box as to,Text as Fs}from"ink";import{useState as Du}from"react";import{z as He}from"zod";var lh=He.object({id:He.number().int(),name:He.string(),description:He.string(),multiplier:He.coerce.number()}),Jr=()=>O(He.array(lh),"/groups"),Bs=He.object({id:He.number().int(),name:He.string(),keyPrefix:He.string(),keySuffix:He.string(),groupId:He.number().int().nullable(),groupName:He.string().nullable(),usedQuota:He.number(),quotaLimit:He.number().nullable()}),Yr=()=>O(He.array(Bs),"/tokens"),Mu=e=>O(Bs.extend({token:He.string()}),"/tokens",{method:"POST",json:e}),Qr=(e,t)=>O(Bs,`/tokens/${e}`,{method:"PATCH",json:t}),Ou=e=>O(Se,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as Ue,jsxs as Xr}from"react/jsx-runtime";var $u={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},Bu=/^\d{4}-\d{2}-\d{2}$/;function uh(e){let t=Oi();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:Xt(t,-6),until:t}:e.range==="30d"?{since:Xt(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function Fu(e){let t=uh(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:Di(t.since).toISOString()},...t.until===void 0?{}:{until:Di(Xt(t.until,1)).toISOString()}}}var mh=Je(ki,er,"\u5168\u90E8\u72B6\u6001"),dh=[{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 ph({log:e,quotaPerUsd:t,width:o}){let n=o-ce,r=er(e.status),i=We(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",Re(e.cachedTokens)]),e.cacheWrite5mTokens>0&&a.push(["\u7F13\u5B58\u5199 5m",Re(e.cacheWrite5mTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",Re(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${xn(e.firstByteMs)} s`]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u534F\u8BAE",za(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]],...e.ip===null?[]:[["IP",e.ip]],["\u500D\u7387",`\xD7${Number(e.multiplier)}`]];return Xr(oe,{title:e.modelDisplayName,note:ee(e.createdAt),width:o,children:[Xr(Fs,{wrap:"truncate",children:[Ue(Fs,{color:i===void 0?u.mutedForeground:Be[i],children:r.label}),Ue(Fs,{color:u.faintForeground,children:` ${Oe([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),Ue(to,{marginTop:1,children:Ue(tt,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:Re(e.promptTokens)},{label:"\u8F93\u51FA Token",value:Re(e.completionTokens)},{label:"\u6D88\u8017",value:Wn(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${xn(e.latencyMs)} s`}]})}),s!==null&&Ue(to,{marginTop:1,children:Ue(fe,{tone:"warn",width:n,title:s})}),Ue(to,{marginTop:1,children:Ue(Ee,{width:n,items:[...a,...c]})})]})}function Uu(){let e=D(),{width:t}=j(),o=re(),[n,r]=Du({name:"list"}),[i,s]=Du($u),{error:a,fail:c,reset:l}=ge(),d=Q([e.revision],async()=>{let[h,y,x]=await Promise.all([Jr(),Yr(),ke(e.ctx.site)]);return{groups:h,tokens:y,site:x}}),f=an([e.revision,JSON.stringify(i)],(h,y)=>Tu({page:h,pageSize:y,...Fu(i)}),{retain:"page"}),m=Q([e.revision,JSON.stringify(i)],()=>wu(Fu(i))),p=n.name==="list";z((h,y)=>{p&&(h==="r"?e.reload():h==="f"?(l(),r({name:"filter"})):y.leftArrow?f.go(-1):y.rightArrow&&f.go(1))});let S=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},g=JSON.stringify(i)!==JSON.stringify($u);return Ue(G,{hints:p?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:Ue(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:h,tokens:y,site:x})=>{if(n.name==="filter")return Ue(V,{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(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"},...h.map(b=>({value:b.name,label:b.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:mh,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:dh,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:b=>{let T=b.range??"",C=(b.since??"").trim(),L=(b.until??"").trim();if(T==="custom"&&(C!==""&&!Bu.test(C)||L!==""&&!Bu.test(L))){c("\u65E5\u671F\u683C\u5F0F\u5E94\u4E3A YYYY-MM-DD");return}s({model:b.model??"",requestId:b.requestId??"",token:b.token??"",group:b.group??"",status:b.status??"",range:T,since:C,until:L}),f.reset(),r({name:"list"})}});if(n.name==="detail")return Ue(ph,{log:n.log,quotaPerUsd:x.quotaPerUsd,width:t});let k=Kt(4,t);return Xr(to,{flexDirection:"column",children:[Ue(to,{height:k+1,flexDirection:"column",overflow:"hidden",children:Ue(Y,{state:m,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:b=>Ue(tt,{width:t,tiles:[{label:"\u6D88\u8017",value:ae(b.quotaCost,x.quotaPerUsd)},{label:"RPM",value:Re(b.rpm)},{label:"TPM",value:Re(b.tpm)},{label:"\u5E76\u53D1",value:Re(b.concurrency)}]})})}),Ue(Y,{state:f.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:b=>Xr(to,{flexDirection:"column",children:[Ue(_e,{retain:"list",items:b.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:T=>[ee(T.createdAt),T.modelDisplayName,Re(T.promptTokens),Re(T.completionTokens),Wn(T.quotaCost,x.quotaPerUsd),Wt(er(T.status))],onOpen:T=>r({name:"detail",log:T}),emptyLabel:g?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:g?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),Ue(cn,{page:f.page,pages:f.pages,total:f.total,width:t})]})})]})}})})}import{Box as Bo,Text as dn}from"ink";import{useState as yh}from"react";import{z as Z}from"zod";var fh=Z.object({id:Z.number().int(),model:Z.string(),displayName:Z.string(),inputPricePerMillionTokens:Z.string(),outputPricePerMillionTokens:Z.string(),cachedInputPricePerMillionTokens:Z.string(),cacheWritePricePerMillionTokens:Z.string()}),gh=Z.object({quotaPerUsd:Z.number().int().positive(),cnyPerUsd:Z.number(),minTopupCny:Z.number(),models:Z.array(fh)});function Zr(e){return kt(gh,`${e}/api/pricing`)}var hh=Z.object({cnyPerUsd:Z.number(),groups:Z.array(Z.object({id:Z.number().int(),name:Z.string(),multiplier:Z.coerce.number()})),stats:Z.object({requests:Z.number(),errors:Z.number(),latencyP50Ms:Z.number().nullable(),firstByteP50Ms:Z.number().nullable()}),heartbeat:Z.object({bucketStartMs:Z.number(),groups:Z.array(Z.object({id:Z.number().int(),name:Z.string(),minutes:Z.array(Z.object({requests:Z.number(),errors:Z.number()}))}))})});function ju(e,t){return kt(hh,`${e}/api/pricing/${t}`)}var bh=Z.object({data:Z.array(Z.object({id:Z.string()}))});async function qu(e,t,o){return(await kt(bh,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}import{jsx as Ne,jsxs as Fo}from"react/jsx-runtime";var Sh=4,xh="\u5355\u4EF7 = \u5145\u503C\u6C47\u7387 \xD7 \u500D\u7387\uFF0C\u5373 1 \u7F8E\u5143\u989D\u5EA6\u7684\u4EBA\u6C11\u5E01\u4EF7\u683C\uFF1BToken \u4EF7\u683C = \u57FA\u7840\u4EF7 \xD7 \u500D\u7387\uFF0C\u5355\u4F4D USD / 1M Tokens",Th=1,wh=1+De,kh=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function vh({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=kh(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return Ne(dn,{wrap:"truncate",children:n.map((r,i)=>Ne(dn,{color:r.color,children:X.barFilled.repeat(r.count)},i))})}function Rh({price:e,width:t,contentRows:o}){let n=D(),r=Q([e.id,n.revision],()=>ju(n.ctx.site,e.id)),i=(s,a)=>Sn(String(Number(s)*a),"-");return Ne(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:s=>{let a=t-ce,c=s.stats,l=[{label:"\u53EF\u7528\u7387",value:c.requests>0?`${((c.requests-c.errors)/c.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:Re(c.requests)},{label:"\u5EF6\u8FDF P50",value:c.latencyP50Ms!==null?`${xn(c.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:c.firstByteP50Ms!==null?`${xn(c.firstByteP50Ms)} s`:"\u2014"}],d=wh+Rt+Kt(l.length,a,2)+J+Rt+Th,f=s.heartbeat.groups.length,m=o-d-Sh-J-Rt,p=Math.max(0,Math.floor(m/2));p<f&&(p=Math.max(0,Math.floor((m-1)/2))),p=Math.min(f,p);let S=p>0?J+Rt+p*2+(p<f?1:0):0,g=Math.max(1,o-d-S);return Fo(Bo,{flexDirection:"column",children:[Ne(Bo,{marginBottom:De,children:Fo(dn,{wrap:"truncate",children:[Ne(dn,{bold:!0,color:u.foreground,children:e.displayName}),Ne(dn,{color:u.faintForeground,children:` ${e.model}`})]})}),Ne(oe,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Ne(tt,{width:a,tiles:l,maxPerRow:2})}),p>0&&Ne(Bo,{marginTop:1,flexDirection:"column",children:Fo(oe,{title:"\u53EF\u7528\u6027",note:"\u6700\u8FD1\u4E00\u6BB5\u65F6\u95F4\u5404\u5206\u7EC4\u7684\u8C03\u7528\u5065\u5EB7\u72B6\u51B5",width:t,children:[s.heartbeat.groups.slice(0,p).map(h=>Fo(Bo,{flexDirection:"column",children:[Ne(dn,{wrap:"truncate",color:u.foreground,children:h.name}),Ne(vh,{minutes:h.minutes,width:a})]},h.id)),p<f&&Ne(dn,{color:u.faintForeground,children:`\u5176\u4F59 ${f-p} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Ne(Bo,{marginTop:1,flexDirection:"column",children:Fo(oe,{title:"\u5206\u7EC4\u4EF7\u683C",width:t,children:[Ne(dn,{wrap:"truncate",color:u.mutedForeground,children:xh}),s.groups.length===0?Ne(fe,{tone:"info",width:a,title:"\u6682\u65E0\u53EF\u7528\u5206\u7EC4",detail:"\u5F53\u524D\u6CA1\u6709\u542F\u7528\u7684\u6E20\u9053\u63D0\u4F9B\u8BE5\u6A21\u578B"}):Ne(_e,{items:s.groups,width:a,height:g,columns:[{label:"\u5206\u7EC4",shrink:!0},{label:"\u500D\u7387",align:"right"},{label:"\u5355\u4EF7",align:"right"},{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:h=>[h.name,`\xD7${h.multiplier}`,`\xA5${(s.cnyPerUsd*h.multiplier).toFixed(2)}`,i(e.inputPricePerMillionTokens,h.multiplier),i(e.outputPricePerMillionTokens,h.multiplier),i(e.cachedInputPricePerMillionTokens,h.multiplier),i(e.cacheWritePricePerMillionTokens,h.multiplier)]})]})})]})}})}function Hu(){let e=D(),{width:t}=j(),o=re(),[n,r]=yh({name:"list"}),i=Q([e.revision],async()=>(await Zr(e.ctx.site)).models);z(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Ne(G,{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:s,children:Ne(Y,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?Ne(fe,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?Ne(Rh,{price:n.price,width:t,contentRows:o}):Ne(_e,{retain:"list",items:a,width:t,height:o,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:c=>[c.displayName,Sn(c.inputPricePerMillionTokens,"-"),Sn(c.outputPricePerMillionTokens,"-"),Sn(c.cachedInputPricePerMillionTokens,"-"),Sn(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as An,Text as Bh}from"ink";import{useState as ni}from"react";function Wu(e,t){let o=e.line??t.apiLines[0];if(o===void 0)throw new U("\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 zu(e,t){let o=await ke(e.site);return qu(Wu(Tn(),o).url,t)}async function Gu(e,t,o,n){let r=await ke(e.site),i=Wu(Tn(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as Xu}from"os";import{join as ti,resolve as _h}from"path";function ei(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function Uo(e,t){let o={...Go(e)??{}};for(let[n,r]of t){if(n.length===1){o[n[0]]=r;continue}let[i,s]=n,a=o[i];if(a!==void 0&&ei(o,i)===null)throw new U(`${e} \u7684 ${i} \u5B57\u6BB5\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);let c=a===void 0?{}:{...ei(o,i)??{}};c[s]=r,o[i]=c}Vo(e,o,384)}function Vu(e,t){let o=Go(e);if(o===null)return null;let n=t.length===1?o[t[0]]:ei(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function Ku(e,t){let o=Go(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=ei(o,t[0]);return n!==null&&t[1]in n}var Ju=["env","ANTHROPIC_BASE_URL"],Ch=["env","ANTHROPIC_AUTH_TOKEN"],Yu=["hasCompletedOnboarding"],Us=e=>ti(e.dir,"settings.json"),Qu=e=>e.custom?ti(e.dir,".claude.json"):ti(Xu(),".claude.json"),Zu={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:_h(e),custom:!0}:{dir:ti(Xu(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[Us(e),Qu(e)],read(e){return{baseUrl:Vu(Us(e),Ju),model:null}},apply(e,t){Uo(Us(t),[[Ju,e.baseUrl],[Ch,e.apiKey]]);let o=Qu(t);Ku(o,Yu)||Uo(o,[[Yu,!0]])}};import{homedir as Eh}from"os";import{join as Ws,resolve as Ph}from"path";import{parse as Ah,patch as Nh}from"@decimalturn/toml-patch";import{parse as Ih}from"smol-toml";var Lh=["OPENAI_API_KEY"],em="model_provider",js="model",qs=e=>Ws(e.dir,"config.toml"),tm=e=>Ws(e.dir,"auth.json");function Hs(e,t){try{return Ih(e,{integersAsBigInt:"asNeeded"})}catch(o){throw new U(`${t} \u4E0D\u662F\u5408\u6CD5 TOML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:o})}}function Mh(e,t){let o=qs(t);if(e.model===null)throw new U("Codex \u9700\u8981\u5148\u6307\u5B9A\u9ED8\u8BA4\u6A21\u578B",{hint:"\u5728\u5199\u5165\u524D\u9009\u62E9\u4E00\u4E2A\u53EF\u8DEF\u7531\u7684\u6A21\u578B"});let n=Fn(o)??"";n!==""&&Hs(n,o);let r=e.siteName.toLowerCase(),i=Ah(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[em]=r,i[js]=e.model;let a=Nh(n,i,{inlineTableStart:2}),c=Hs(a,o);if(c[em]!==r||c[js]!==e.model||c.model_providers?.[r]?.base_url!==e.baseUrl)throw new U(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${o}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);hi(o,a,384)}var nm={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:Ph(e),custom:!0}:{dir:Ws(Eh(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[qs(e),tm(e)],read(e){let t=qs(e),o=Fn(t),n=o===null?null:Hs(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?.[js])}},apply(e,t){Mh(e,t),Uo(tm(t),[[Lh,e.apiKey]])}};var om=[Zu,nm];var Oh=6e3,Dh=2,rm=e=>mt(`${e.url}/api/site-config`,{timeoutMs:Oh});async function $h(e){try{await rm(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<Dh;o+=1){let n=Date.now();await rm(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function im(e){let t=[];for(let o of e)t.push(await $h(o));return t}import{jsx as ye,jsxs as oi}from"react/jsx-runtime";var Fh=10,Uh=3,sm=4,um=e=>1+Math.max(1,Math.min(e,sm))+(e>sm?1:0);function am(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 cm=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),lm=(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 jh({lines:e,measured:t,effective:o,width:n,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 ye(oe,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:n,children:ye(_e,{retain:"lines",items:e,width:n-ce,height:um(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,o?.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 mm(){let e=D(),{width:t}=j(),o=re(),[n,r]=ni({name:"list"}),[i,s]=ni(!1),[a,c]=ni(()=>Tn().line),[l,d]=ni(0),{busy:f,error:m,reset:p,fail:S,run:g}=ge(),h=Q([e.revision],async()=>{let[_,N,H]=await Promise.all([Yr(),Jr(),ke(e.ctx.site)]);return{tokens:_,groups:N,site:H}}),y=h.phase==="ready"?h.data.site.apiLines:[],x=Q([l,y.map(_=>_.url).join("|")],()=>im(y)),k=f!==null,b=n.name==="list"&&!k,T=_=>{r({name:"list"}),e.reload(),e.toast("ok",_)};z(_=>{if(_==="r"){d(N=>N+1),e.reload();return}i||(_==="n"?r({name:"create"}):_==="l"&&y.length>0&&s(!0))},b);let C=_=>{cr(N=>{N.line={name:_.name,url:_.url}}),c({name:_.name,url:_.url}),s(!1),e.toast("ok",`\u5DF2\u9009\u7528\u7EBF\u8DEF ${_.name}\uFF0C\u65B0\u5EFA\u4EE4\u724C\u5E76\u5199\u5165\u914D\u7F6E\u540E\u751F\u6548`)},L=(_,N,H)=>{g("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>Mu({name:_,groupId:N,quotaLimit:H}),{onSuccess:$=>{e.reload(),r({name:"created",token:$,secret:$.token})}})},F=_=>{g("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>Ou(_.id),{onSuccess:()=>T("\u4EE4\u724C\u5DF2\u5220\u9664")})},w=(_,N)=>{g("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>om.map(H=>{let $=H.resolveDir(),ne=H.read($);return{client:H,configured:ne.baseUrl!==null,paths:H.configPaths($),model:ne.model}}),{failToast:!0,onSuccess:H=>r({name:"apply-pick",token:_,secret:N,targets:H})})},E=(_,N,H)=>{g("\u6B63\u5728\u5199\u5165",()=>Gu(e.ctx,_,N,H),{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",Oe([`\u5DF2\u5199\u5165 ${_.label}`,H]))}})},R=(_,N)=>{let H=_.targets.find($=>$.client.id===N);if(H!==void 0){if(!H.client.requiresModel){E(H.client,_.secret);return}g("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let $=await zu(e.ctx,_.secret);if($.length===0)throw new U("\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 $},{failToast:!0,onSuccess:$=>r({name:"apply-model",token:_.token,secret:_.secret,targets:_.targets,needs:H,models:$})})}},P=(_,N)=>{p(),r(_==="rename"?{name:"rename",token:N}:_==="regroup"?{name:"regroup",token:N}:_==="relimit"?{name:"relimit",token:N}:{name:"confirm-delete",token:N})},v=()=>{if(n.name==="list"){i?s(!1):e.pop();return}if(p(),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"})},M=()=>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"?ye(G,{hints:M(),onEscape:v,children:oi(An,{flexDirection:"column",children:[f!==null&&ye(Qe,{label:f}),n.name==="created"&&!k&&oi(An,{flexDirection:"column",children:[ye(fe,{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"}),ye(An,{marginTop:1,children:ye(Bh,{color:u.accent,children:n.secret})}),ye(An,{marginTop:1,children:ye(le,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:_=>{_==="back"?r({name:"list"}):w(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!k&&ye(oe,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:ye(le,{width:t-ce,height:o-Rt,retain:"apply",items:n.targets.map(_=>({value:_.client.id,label:_.client.label,badge:_.configured?"\u5DF2\u914D\u7F6E":"\u672A\u914D\u7F6E",badgeTone:_.configured?"accent":void 0,hint:_.paths.join(" ")})),onSelect:_=>R(n,_)})}),n.name==="apply-model"&&!k&&ye(V,{title:`${n.needs.client.label} \u9ED8\u8BA4\u6A21\u578B`,width:t,submitLabel:"\u5199\u5165",error:m,fields:[{kind:"select",name:"model",label:"\u6A21\u578B",options:n.models.map(_=>({value:_,label:_})),initial:n.needs.model!==null&&n.models.includes(n.needs.model)?n.needs.model:n.models[0],hint:`${n.needs.client.label} \u7684\u914D\u7F6E\u91CC\u5FC5\u987B\u5199\u6B7B\u4E00\u4E2A\u6A21\u578B`}],onCancel:v,onSubmit:_=>{let N=_.model;if(N===void 0||N===""){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}E(n.needs.client,n.secret,N)}})]})}):ye(G,{hints:M(),onEscape:v,children:ye(Y,{state:h,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:_,groups:N,site:H})=>{let $=J+Rt+um(H.apiLines.length),ne=Math.max(Uh,o-(n.name==="list"?$:Fh));return oi(An,{flexDirection:"column",children:[ye(An,{flexDirection:"column",marginBottom:J,children:ye(_e,{retain:"list",items:_,width:t,height:ne,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:q=>{let se=ae(q.usedQuota,H.quotaPerUsd);return[q.name,q.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664",q.quotaLimit!==null&&q.usedQuota>=q.quotaLimit?{text:se,tone:"danger"}:se,q.quotaLimit===null?"\u4E0D\u9650":ae(q.quotaLimit,H.quotaPerUsd),ir(q.keyPrefix,q.keySuffix)]},searchOf:q=>`${q.name} ${q.groupName??""}`,onOpen:q=>r({name:"actions",token:q}),emptyLabel:"\u6682\u65E0\u4EE4\u724C",emptyDescription:"\u521B\u5EFA\u4E00\u4E2A\u4EE4\u724C\u5373\u53EF\u5F00\u59CB\u8C03\u7528\u4E2D\u8F6C API"})}),f!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&ye(Qe,{label:f}),n.name==="list"&&ye(jh,{lines:H.apiLines,measured:x.phase==="ready"?x.data:null,effective:a??H.apiLines[0],width:t,isActive:b&&i,onPick:C}),n.name==="actions"&&!k&&oi(oe,{title:n.token.name,width:t,children:[ye(Ee,{width:t-ce,items:[["\u5206\u7EC4",n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",ae(n.token.usedQuota,H.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",n.token.quotaLimit===null?"\u4E0D\u9650":ae(n.token.quotaLimit,H.quotaPerUsd)],["\u5BC6\u94A5",ir(n.token.keyPrefix,n.token.keySuffix)]]}),ye(An,{marginTop:1,children:ye(le,{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,H.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:q=>P(q,n.token)})})]}),n.name==="create"&&ye(V,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:m,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:cm(N),initial:String(N[0]?.id??""),hint:q=>lm(N,q)},{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:v,onSubmit:q=>{let se=(q.name??"").trim();if(se===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let ot=N.find(B=>String(B.id)===q.group);if(ot===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let A=am(q.limit??"",H.quotaPerUsd);if(A==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}L(se,ot.id,A)}}),n.name==="rename"&&ye(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,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:v,onSubmit:q=>{let se=(q.name??"").trim();if(se===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}g("\u6B63\u5728\u4FDD\u5B58",()=>Qr(n.token.id,{name:se}),{onSuccess:()=>T("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&ye(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:cm(N),initial:String(n.token.groupId??N[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":q=>lm(N,q)}],onCancel:v,onSubmit:q=>{let se=N.find(ot=>String(ot.id)===q.group);if(se===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}g("\u6B63\u5728\u4FDD\u5B58",()=>Qr(n.token.id,{groupId:se.id}),{onSuccess:()=>T("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&ye(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,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/H.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,H.quotaPerUsd)}\uFF0C\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,optional:!0}],onCancel:v,onSubmit:q=>{let se=am(q.limit??"",H.quotaPerUsd);if(se==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}g("\u6B63\u5728\u4FDD\u5B58",()=>Qr(n.token.id,{quotaLimit:se}),{onSuccess:()=>T("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!k&&ye(qe,{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:m,onConfirm:()=>F(n.token),onCancel:v})]})}})})}import{Box as zs}from"ink";import{jsx as Et,jsxs as qh}from"react/jsx-runtime";var dm=[["\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"]],pm=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],fm=[["\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 gm({width:e,height:t}){let o=e-ce,n=[["\u7248\u672C",`${ct} v${lt}`],["\u672C\u5730\u5B58\u50A8",Ft()]],r=[dm,pm,fm,n],s=(a=>r.reduce((c,l)=>c+it+a+Gl(l.length,o),J*(r.length-1)))(De)<=t?De:0;return qh(fc,{height:t,children:[Et(oe,{title:"\u901A\u7528",width:e,gap:s,children:Et(Ee,{items:dm,width:o})}),Et(zs,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u9F20\u6807",width:e,gap:s,children:Et(Ee,{items:pm,width:o})})}),Et(zs,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:Et(Ee,{items:fm,width:o})})}),Et(zs,{marginTop:J,flexDirection:"column",children:Et(oe,{title:"\u5173\u4E8E",width:e,gap:s,children:Et(Ee,{items:n,width:o})})})]})}import{jsx as Gs}from"react/jsx-runtime";function hm(){let e=D(),{width:t}=j(),o=re();return nn(e.pop),Gs(Rn,{header:Gs(Mr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:Gs(gm,{width:t,height:o})})}import{Box as bm,Text as Hh}from"ink";import{jsx as jo,jsxs as Wh}from"react/jsx-runtime";var ym=[{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 Sm(){let e=D(),{width:t}=j(),o=Ao(0),n=J+1+J+ym.length,r=Ar(t)&&o-Pr>=n;return Wh(Rn,{header:r?jo(Nr,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[jo(bm,{marginTop:1,children:jo(Hh,{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"})}),jo(bm,{marginTop:1,children:jo(le,{items:ym,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as ri,Text as Nn}from"ink";import{useState as Tm}from"react";import{z as Ge}from"zod";var zh=Ge.object({inviteCode:Ge.string(),invitedCount:Ge.number(),totalReward:Ge.number(),rewards:Ge.object({firstInviterPercent:Ge.number(),firstInviteePercent:Ge.number(),subsequentInviterPercent:Ge.number()}),items:Ge.array(Ge.object({id:Ge.number().int(),rewardType:xa,rewardQuota:Ge.number(),rewardQuotaReversed:Ge.number(),inviterUsername:Ge.string(),inviteeUsername:Ge.string(),createdAt:Ge.string()}))}),xm=()=>O(zh,"/invite");import{jsx as Ke,jsxs as ii}from"react/jsx-runtime";var Gh=Je(wi,tr,"\u5168\u90E8\u7C7B\u578B"),wm=3;function Vh(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 km(){let e=D(),{width:t}=j(),o=re(),[n,r]=Tm("main"),[i,s]=Tm(""),a=Q([e.revision],async()=>{let[l,d]=await Promise.all([xm(),ke(e.ctx.site)]);return{invite:l,site:d}});z(l=>{n==="main"&&(l==="r"?e.reload():l==="f"&&r("filter"))});let c=()=>{n==="main"?e.pop():r("main")};return Ke(G,{hints:n==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Ke(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:d})=>{if(n==="filter")return Ke(V,{title:"\u7B5B\u9009\u5956\u52B1\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:Gh,initial:i}],onCancel:c,onSubmit:y=>{s(y.type??""),r("main")}});let f=t-ce,m=Vh(l.rewards),p=i===""?l.items:l.items.filter(y=>y.rewardType===i),S=y=>Kt(2,t)+J+it+y+2+J+it+y+m.length+J+it+y,g=o-S(De)>=wm?De:0,h=Math.max(wm,o-S(g));return ii(ri,{flexDirection:"column",children:[Ke(tt,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:Re(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:ae(l.totalReward,d.quotaPerUsd)}]}),Ke(ri,{marginTop:1,flexDirection:"column",children:ii(oe,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:g,children:[ii(Nn,{wrap:"truncate",children:[Ke(Nn,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Ke(Nn,{color:u.accent,children:l.inviteCode})]}),ii(Nn,{wrap:"truncate",children:[Ke(Nn,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Ke(Nn,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Ke(ri,{marginTop:1,flexDirection:"column",children:Ke(oe,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:g,children:m.map((y,x)=>Ke(Nn,{wrap:"truncate",color:u.mutedForeground,children:y},x))})}),Ke(ri,{marginTop:1,flexDirection:"column",children:Ke(oe,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:tr(i),width:t,gap:g,children:Ke(_e,{retain:"list",items:p,width:f,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,d.quotaPerUsd)}`:"";return[ee(y.createdAt),y.rewardType==="first_invitee"?y.inviterUsername:y.inviteeUsername,tr(y.rewardType),Oe([ae(x,d.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 Mm}from"react";import{z as be}from"zod";var Kh=be.object({id:be.number().int(),orderNo:be.string(),amountCny:be.number().int()}),vm=()=>O(be.array(Kh),"/invoices/eligible-orders"),Vs=be.object({id:be.number().int(),type:xi,title:be.string(),taxId:be.string().nullable(),email:be.string(),remark:be.string().nullable(),amountCny:be.number().int(),status:ha,rejectReason:be.string().nullable(),rejectedAt:be.string().nullable(),issuedAt:be.string().nullable(),createdAt:be.string()}),Jh=Vs.extend({orders:be.array(be.object({orderNo:be.string(),amountCny:be.number().int()}))}),Rm=()=>O(be.array(Vs),"/invoices"),_m=e=>O(Jh,`/invoices/${e}`),Cm=e=>O(Vs,"/invoices",{method:"POST",json:e}),Ks=be.object({id:be.number().int(),type:xi,title:be.string(),taxId:be.string().nullable(),email:be.string()}),si=()=>O(be.array(Ks),"/invoices/profiles"),Em=e=>O(Ks,"/invoices/profiles",{method:"POST",json:e}),Pm=(e,t)=>O(Ks,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),Am=e=>O(Se,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as Yh,Text as In,useInput as Qh}from"ink";import{useEffect as Xh,useState as Zh}from"react";import{jsx as qo,jsxs as Js}from"react/jsx-runtime";var eb="[x]",tb="[ ]",Nm=4,ai=2,Im=2;function Lm({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[d,f]=Zh(0),m=Math.max(1,c-1),p=e.length>m?Math.max(1,m-1):m;Xh(()=>{f(b=>Math.min(b,Math.max(0,e.length-1)))},[e.length]);let S=ns(d,p),g=b=>{e.length!==0&&f(T=>(T+b+e.length)%e.length)};Qh((b,T)=>{if(T.upArrow){g(-1);return}if(T.downArrow){g(1);return}if(T.return){s();return}b===" "&&e.length>0&&r(d)}),z(b=>{if(b==="k"){g(-1);return}if(b==="j"){g(1);return}b==="a"&&i()});let h=b=>{let T=S+b-1;return T>=0&&T<e.length?T:null},y=$e({onWheel:g,onClick:({row:b})=>{let T=h(b);T!==null&&(f(T),r(T))},onHover:({row:b})=>{let T=h(b);T!==null&&f(T)}}),x=ps(t,e.map(b=>o(b)),a-ai-Nm),k=e.slice(S,S+p);return Js(Yh,{ref:y,flexDirection:"column",children:[Js(In,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(ai+Nm),t.map((b,T)=>b.align==="right"?on(b.label,x[T]??0):Ae(b.label,x[T]??0)).join(" ".repeat(Im))]}),e.length===0?qo(In,{color:u.faintForeground,children:`${" ".repeat(ai)}${l}`}):k.map((b,T)=>{let C=S+T,L=C===d,F=n.has(C),w=L?u.accent:u.foreground,E=o(b);return Js(In,{wrap:"truncate",children:[qo(In,{color:u.accent,children:L?`${X.cursor} `:" "}),qo(In,{color:F?u.accent:w,bold:L,children:`${F?eb:tb} `}),t.map((R,P)=>{let v=R.align==="right"?on(E[P]??"",x[P]??0):Ae(E[P]??"",x[P]??0);return qo(In,{color:w,bold:L,children:P>0?`${" ".repeat(Im)}${v}`:v},R.label)})]},C)}),(S>0||S+p<e.length)&&qo(In,{color:u.faintForeground,children:`${" ".repeat(ai)}${S+1}-${Math.min(S+p,e.length)} / ${e.length}`})]})}function ci(e,t){let o=e.type??"general",n=(e.title??"").trim(),r=(e.taxId??"").trim(),i=(e.email??"").trim();return n===""?(t("\u8BF7\u8F93\u5165\u62AC\u5934"),null):i===""?(t("\u8BF7\u8F93\u5165\u90AE\u7BB1"),null):o==="special"&&r===""?(t("\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968\u9700\u586B\u5199\u7A0E\u53F7"),null):{type:o,title:n,email:i,taxId:r===""?null:r}}var li=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:fo("general")},{value:"special",label:fo("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"},{kind:"text",name:"email",label:"\u90AE\u7BB1",initial:e?.email??"",placeholder:"\u53D1\u7968\u5C06\u53D1\u9001\u81F3\u6B64\u90AE\u7BB1"}];import{jsx as no}from"react/jsx-runtime";function Om(){let e=D(),{width:t}=j(),o=re(),[n,r]=Mm({name:"pick"}),[i,s]=Mm(new Set),{busy:a,error:c,reset:l,fail:d,run:f}=ge(),m=Q([e.revision],async()=>{let[g,h]=await Promise.all([vm(),si()]);return{orders:g,profiles:h}});z(g=>{n.name==="pick"&&g==="r"&&e.reload()});let p=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"pick"}))},S=(g,h)=>{let y=ci(h,d);if(y===null)return;let x=(h.remark??"").trim(),k=g.filter(b=>i.has(b.id)).map(b=>b.id);f("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>Cm({orderIds:k,...y,remark:x===""?null:x}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return no(G,{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:p,children:no(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:g,profiles:h})=>{if(n.name==="pick")return g.length===0?no(fe,{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"}):no(Lm,{items:g,width:t,height:o,columns:[{label:"\u8BA2\u5355\u53F7",shrink:!0},{label:"\u91D1\u989D",align:"right"}],row:x=>[x.orderNo,he(x.amountCny)],selected:new Set(g.flatMap((x,k)=>i.has(x.id)?[k]:[])),onToggle:x=>{let k=g[x]?.id;k!==void 0&&s(b=>{let T=new Set(b);return T.has(k)?T.delete(k):T.add(k),T})},onToggleAll:()=>s(x=>g.every(k=>x.has(k.id))?new Set:new Set(g.map(k=>k.id))),onSubmit:()=>{if(!g.some(x=>i.has(x.id))){e.toast("warn","\u8BF7\u5148\u52FE\u9009\u8981\u5F00\u7968\u7684\u8BA2\u5355");return}r(h.length>0?{name:"preset"}:{name:"identity",preset:null})},emptyLabel:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355"});if(n.name==="preset"){let x=[{heading:"\u5E38\u7528\u4FE1\u606F"},...h.map(k=>({value:{kind:"profile",profile:k},label:`${yn(k.type)} \xB7 ${k.title}`,hint:k.email})),{heading:""},{value:{kind:"manual"},label:"\u624B\u52A8\u586B\u5199",hint:"\u4E0D\u5957\u7528\u5E38\u7528\u4FE1\u606F"}];return no(le,{items:x,width:t,height:o,onSelect:k=>{k.kind==="manual"?r({name:"identity",preset:null}):r({name:"identity",preset:k.profile})}})}let y=n.preset;return no(V,{title:"\u7533\u8BF7\u5F00\u7968 \u2014 \u5F00\u7968\u4FE1\u606F",width:t,submitLabel:"\u63D0\u4EA4\u7533\u8BF7",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[...li(y),{kind:"textarea",name:"remark",label:"\u5907\u6CE8",rows:2,maxLength:512,placeholder:"\u5176\u4ED6\u5F00\u7968\u8981\u6C42\u6216\u8BF4\u660E",optional:!0}],onCancel:p,onSubmit:x=>S(g,x)})}})})}import{Box as Ys}from"ink";import{useState as nb}from"react";import{jsx as Yt,jsxs as Dm}from"react/jsx-runtime";var ob=8,rb=3;function $m(){let e=D(),{width:t}=j(),o=re(),[n,r]=nb({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),d=Q([e.revision],si),f=i!==null,m=n.name==="list"&&!f;z(S=>{S==="r"?e.reload():S==="n"&&r({name:"create"})},m);let p=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return Yt(G,{trail:["\u53D1\u7968\u7BA1\u7406","\u5E38\u7528\u4FE1\u606F"],hints:m?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","r \u5237\u65B0"]:[],onEscape:p,children:Yt(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:S=>{let g=n.name==="list"?o:Math.max(rb,o-ob);return Dm(Ys,{flexDirection:"column",children:[Yt(Ys,{marginBottom:n.name==="list"?0:1,children:Yt(_e,{retain:"list",items:S,width:t,height:g,isActive:m,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"},{label:"\u90AE\u7BB1"}],row:h=>[yn(h.type),h.title,h.taxId??"\u2014",h.email],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"&&!f&&Dm(oe,{title:n.profile.title,width:t,children:[Yt(Ee,{width:t-ce,items:[["\u7C7B\u578B",fo(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"],["\u90AE\u7BB1",n.profile.email]]}),Yt(Ys,{marginTop:1,children:Yt(le,{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")&&Yt(V,{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:f,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:li(n.name==="edit"?n.profile:null),onCancel:p,onSubmit:h=>{let y=ci(h,c);if(y===null)return;let x=n.name==="edit"?()=>Pm(n.profile.id,y):()=>Em(y);l("\u6B63\u5728\u4FDD\u5B58",x,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&Yt(qe,{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",()=>Am(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:p})]})}})})}import{Box as Qs,Text as ui}from"ink";import{useState as ib}from"react";import{jsx as nt,jsxs as Bm}from"react/jsx-runtime";var sb=Je(Si,Zo,"\u5168\u90E8\u72B6\u6001");function ab({id:e,width:t}){let o=D(),n=Q([e,o.revision],()=>_m(e)),r=t-ce;return nt(Y,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:i=>{let s=Zo(i.status),a=We(s),c=[["\u62AC\u5934",i.title],...i.taxId===null?[]:[["\u7A0E\u53F7",i.taxId]],["\u90AE\u7BB1",i.email],...i.remark===null?[]:[["\u5907\u6CE8",i.remark]],["\u7533\u8BF7\u65F6\u95F4",ee(i.createdAt)],...i.rejectReason===null?[]:[["\u9A73\u56DE\u539F\u56E0",i.rejectReason]],...i.rejectedAt===null?[]:[["\u9A73\u56DE\u65F6\u95F4",ee(i.rejectedAt)]],...i.issuedAt===null?[]:[["\u5F00\u7968\u65F6\u95F4",ee(i.issuedAt)]]];return Bm(oe,{title:i.title,note:Ut(i.createdAt),width:t,children:[Bm(ui,{wrap:"truncate",children:[nt(ui,{color:u.mutedForeground,children:yn(i.type)}),nt(ui,{color:a===void 0?u.mutedForeground:Be[a],children:` ${s.label}`})]}),nt(Qs,{marginTop:1,children:nt(tt,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:he(i.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${i.orders.length} \u7B14`}]})}),nt(Qs,{marginTop:1,children:nt(Ee,{width:r,items:c})}),nt(Qs,{marginTop:1,flexDirection:"column",children:i.orders.map(l=>nt(ui,{wrap:"truncate",color:u.faintForeground,children:Oe([l.orderNo,he(l.amountCny)])},l.orderNo))})]})}})}function Fm(){let e=D(),{width:t}=j(),o=re(),[n,r]=ib({name:"list"}),[i,s]=Ve("status",()=>""),a=Q([e.revision],Rm);z(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 nt(G,{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:nt(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return nt(V,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:sb,initial:i}],onCancel:c,onSubmit:f=>{s(f.status??""),r({name:"list"})}});if(n.name==="detail")return nt(ab,{id:n.id,width:t});let d=i===""?l:l.filter(f=>f.status===i);return nt(_e,{retain:"list",items:d,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:f=>[Ut(f.createdAt),f.title,yn(f.type),he(f.amountCny),Wt(Zo(f.status))],searchOf:f=>f.title,onOpen:f=>r({name:"detail",id:f.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 cb}from"ink";import{useState as Um}from"react";import{jsx as oo,jsxs as ub}from"react/jsx-runtime";var lb=Je(Ti,$i,"\u5168\u90E8\u7C7B\u578B");function jm(){let e=D(),{width:t}=j(),o=re(),[n,r]=Um("list"),[i,s]=Um(""),a=Q([e.revision],()=>ke(e.ctx.site)),c=an([e.revision,i],(f,m)=>ku({page:f,pageSize:m,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";z((f,m)=>{l&&(f==="r"?e.reload():f==="f"?r("filter"):m.leftArrow?c.go(-1):m.rightArrow&&c.go(1))});let d=()=>{n==="list"?e.pop():r("list")};return oo(G,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:d,children:oo(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:f=>n==="filter"?oo(V,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:lb,initial:i}],onCancel:d,onSubmit:m=>{s(m.type??""),c.reset(),r("list")}}):oo(Y,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:m=>ub(cb,{flexDirection:"column",children:[oo(_e,{retain:"list",items:m.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:p=>{let S=Wn(p.amount,f.quotaPerUsd);return[ee(p.createdAt),$i(p.type),{text:p.amount>=0?`+${S}`:S,tone:p.amount>=0?"success":"danger"},ae(p.balanceAfter,f.quotaPerUsd),Oe([Ha(p.refType),p.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}),oo(cn,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as Km}from"ink";import{useState as mb}from"react";import{z as Xs}from"zod";var Ho={recharge:"/recharge",subscription:"/subscriptions"};function qm(e){return e==="recharge"?uo:mo}var mi=(e,t)=>O(qm(e),`${Ho[e]}/orders/${t}`),Hm=(e,t)=>O(Xs.object({order:qm(e),qrCode:Xs.string()}),`${Ho[e]}/orders/${t}/pay`,{method:"POST"}),Wm=(e,t)=>O(Xs.array(Ba),`${Ho[e]}/orders/${t}/refunds`),zm=(e,t,o)=>O(Se,`${Ho[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),Gm=(e,t)=>O(Se,`${Ho[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as di,Text as Bt}from"ink";import{jsx as bt,jsxs as Wo}from"react/jsx-runtime";function Vm({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-ce,i=en(e.status),s=We(i),a=[["\u521B\u5EFA\u65F6\u95F4",ee(e.createdAt)]];return e.succeededRefundCny>0&&a.push(["\u5DF2\u9000\u91D1\u989D",he(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",he(e.pendingRefundCny)]),Wo(oe,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[Wo(Bt,{wrap:"truncate",children:[bt(Bt,{color:s===void 0?u.mutedForeground:Be[s],children:i.label}),e.kind==="subscription"&&bt(Bt,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),bt(di,{marginTop:1,children:bt(tt,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:ae(e.quota,o)}]:[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),bt(di,{marginTop:1,children:bt(Ee,{width:r,items:a})}),t!==null&&Wo(di,{marginTop:1,flexDirection:"column",children:[bt(Bt,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?bt(Bt,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=Wa(c.status),d=We(l);return Wo(di,{flexDirection:"column",children:[Wo(Bt,{wrap:"truncate",children:[bt(Bt,{color:u.foreground,children:he(c.amountCny)}),bt(Bt,{color:d===void 0?u.mutedForeground:Be[d],children:` ${l.label}`}),bt(Bt,{color:u.faintForeground,children:` ${ee(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&bt(Bt,{wrap:"truncate",color:u.faintForeground,children:` ${Oe([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as Ln,jsxs as pb}from"react/jsx-runtime";var db=new Set(["pending","expired","failed"]);function pi(e){let t=en(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${he(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:We(t)}}function ro(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 Jm({params:e}){let t=D(),{width:o}=j(),[n,r]=mb("main"),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),d=Q([e.kind,e.orderNo,t.revision],async()=>{let[g,h]=await Promise.all([mi(e.kind,e.orderNo),ke(t.ctx.site)]),y=db.has(g.status)?null:await Wm(e.kind,e.orderNo);return{order:{kind:e.kind,...g},refunds:y,site:h}});z(g=>{n==="main"&&i===null&&g==="r"&&t.reload()});let f=()=>{n==="main"?t.pop():(a(),r("main"))},m=g=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>Hm(e.kind,e.orderNo),{onSuccess:({order:h,qrCode:y})=>{t.push("pay",ro({kind:e.kind,...h},y,g.quotaPerUsd))}})},p=g=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>zm(e.kind,e.orderNo,g),{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",()=>Gm(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return Ln(G,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:f,children:Ln(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:g,refunds:h,site:y})=>{if(n==="refund")return Ln(V,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${g.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:[...Hi[e.kind].map(k=>({value:k,label:k})),{value:"other",label:"\u5176\u4ED6"}],initial:Hi[e.kind][0],hint:Ya[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:f,onSubmit:k=>{let b=k.reason??"",T=b==="other"?(k.custom??"").trim():b;if(T===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}p(T)}});if(n==="confirm-cancel")return Ln(qe,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${g.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${g.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:f});let x=[];return g.status==="pending"&&x.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),g.status==="refund_requested"&&x.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),Fa(g)&&x.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),pb(Km,{flexDirection:"column",children:[Ln(Vm,{order:g,refunds:h,quotaPerUsd:y.quotaPerUsd,width:o}),x.length>0&&i===null&&Ln(Km,{marginTop:1,children:Ln(le,{width:o,items:x,retain:"menu",onSelect:k=>{a(),k==="pay"?m(y):r(k==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as yb,useState as nd}from"react";import{spawn as fb}from"child_process";var gb={darwin:[{command:"pbcopy",args:[]}],win32:[{command:"clip",args:[]}],linux:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}]};function hb(e,t){return new Promise((o,n)=>{let r=fb(e.command,e.args,{stdio:["pipe","ignore","ignore"]});r.on("error",i=>{i.code==="ENOENT"?o(!1):n(new U(`\u6267\u884C ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))}),r.on("close",i=>{i===0?o(!0):n(new U(`${e.command} \u9000\u51FA\u7801 ${i??"null"}`))}),r.stdin.on("error",i=>n(new U(`\u5199\u5165 ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))),r.stdin.end(t)})}async function Ym(e){let t=gb[process.platform];if(t===void 0)throw new U(`\u5F53\u524D\u7CFB\u7EDF\u4E0D\u652F\u6301\u5199\u5165\u526A\u8D34\u677F\uFF08${process.platform}\uFF09`);for(let o of t)if(await hb(o,e))return;throw new U("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Box as Qm,Text as Mn}from"ink";import{Fragment as bb,jsx as at,jsxs as Xm}from"react/jsx-runtime";var Zm={columns:20,rows:2};function ed(e,t,o){return Br(e,t,Zm,o)}function td({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?at(Qe,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):at(Mn,{wrap:"truncate",color:Be.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return at(fe,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return at(fe,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return Xm(Qm,{flexDirection:"column",children:[at(fe,{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`}),at(Mn,{color:u.accent,children:t}),at(Qm,{marginTop:1,children:at(Mn,{bold:!0,color:u.foreground,children:he(o)})}),l]});let d=c.asideRows-Zm.rows,f=d>=1,m=d>=2,p=d>=2+n.length;return at(Fr,{value:t,aside:Xm(bb,{children:[m&&at(Mn,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),at(Mn,{bold:!0,color:u.foreground,children:he(o)}),f&&at(Mn,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),p&&n.map((S,g)=>at(Mn,{wrap:"truncate",color:u.mutedForeground,children:S},g)),l]})})}import{jsx as od}from"react/jsx-runtime";var Sb=5,xb=2e3;function rd({params:e}){let t=D(),{width:o,columns:n,rows:r}=j(),i=Ao(0),[s,a]=nd("waiting"),[c,l]=nd(null),d=yb(0);qr(xb,async()=>{let p;try{p=await mi(e.kind,e.orderNo)}catch(S){l(je(S));return}if(l(null),p.status==="paid"||p.credited){a("paid"),t.toast("ok",e.paidMessage);return}if(p.status==="expired"||p.status==="failed"){d.current+=1,d.current>=Sb&&a("expired");return}d.current=0},s==="waiting"),z(p=>{p!=="c"||s!=="waiting"||Ym(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 f=ed(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),m=s==="waiting"&&f.fits;return od(G,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:m,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:od(td,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:f})})}import{useState as kb}from"react";import{z as Pt}from"zod";var Tb=Pt.object({id:Pt.number().int(),name:Pt.string(),originalCny:Pt.number().int(),discountPercent:Pt.number().int(),payCny:Pt.number().int(),quota:Pt.number()}),id=()=>O(Pt.array(Tb),"/recharge-packages"),wb=Pt.object({order:uo,qrCode:Pt.string()}),sd=e=>O(wb,"/recharge/orders",{method:"POST",json:e}),ad=()=>O(Pt.array(uo),"/recharge/orders");import{jsx as io}from"react/jsx-runtime";var vb=Je(ao,en,"\u5168\u90E8\u72B6\u6001");function Rb(e,t){let o=e.discountPercent<100?`\uFF08\u539F\u4EF7 ${he(e.originalCny)} \xB7 ${e.discountPercent/10} \u6298\uFF09`:"";return`${he(e.payCny)}${o} \xB7 \u5230\u8D26\u989D\u5EA6 ${ae(e.quota,t)}`}function cd(){let e=D(),{width:t}=j(),o=re(),[n,r]=kb({name:"menu"}),[i,s]=Ve("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:f}=ge(),m=Q([e.revision],async()=>{let[g,h,y]=await Promise.all([id(),Zr(e.ctx.site),ad()]);return{packages:g,pricing:h,orders:y}});z(g=>{n.name==="menu"&&(g==="r"?e.reload():g==="f"&&r({name:"filter"}))});let p=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},S=(g,h)=>{f("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>sd(g),{onSuccess:({order:y,qrCode:x})=>{r({name:"menu"}),e.push("pay",ro({kind:"recharge",...y},x,h))}})};return io(G,{hints:n.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BB0\u5F55","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:p,children:io(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:g,pricing:h,orders:y})=>{if(n.name==="confirm")return io(qe,{width:t,title:`\u786E\u8BA4\u5145\u503C ${he(n.pkg.payCny)}\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>S({packageId:n.pkg.id},h.quotaPerUsd),onCancel:p});if(n.name==="custom")return io(V,{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:p,onSubmit:b=>{let T=Number((b.yuan??"").trim()),C=Ui(T);if(!Number.isFinite(T)||C<Ui(h.minTopupCny)||C>Ei){d(`\u8BF7\u8F93\u5165 ${h.minTopupCny} \u5230 ${Ga(Ei)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}S({amountCny:C},h.quotaPerUsd)}});if(n.name==="filter")return io(V,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:vb,initial:i}],onCancel:p,onSubmit:b=>{s(b.status??""),r({name:"menu"})}});let x=i===""?y:y.filter(b=>b.status===i),k=[{heading:"\u5145\u503C\u5957\u9910"},...g.map(b=>({value:{kind:"pkg",pkg:b},label:b.name,hint:Rb(b,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(b=>({value:{kind:"order",orderNo:b.orderNo},label:he(b.amountCny),...pi(b),hint:`${ee(b.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${ae(b.quota,h.quotaPerUsd)}`}))];return io(le,{items:k,width:t,height:o,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 Qt,Text as zo}from"ink";import{useState as Pb}from"react";import Ab from"string-width";import{z as te}from"zod";var _b=te.object({windowId:te.number().int(),durationMinutes:te.number().int(),quota:te.number(),used:te.number(),resetAt:te.string()}),Cb=te.object({fallbackToBalance:te.boolean(),subscriptions:te.array(te.object({id:te.number().int(),planName:te.string(),groupNames:te.array(te.string()),startsAt:te.string(),expiresAt:te.string(),revokedAt:te.string().nullable(),renewable:te.boolean(),windows:te.array(_b)}))}),ld=()=>O(Cb,"/subscriptions"),Eb=te.object({id:te.number().int(),name:te.string(),description:te.string().nullable(),priceCny:te.number().int(),durationDays:te.number().int(),enabled:te.boolean(),groupNames:te.array(te.string()),windows:te.array(te.object({durationMinutes:te.number().int(),quota:te.number()}))}),ud=()=>O(te.array(Eb),"/subscription-plans"),md=te.object({order:mo,qrCode:te.string()}),dd=e=>O(md,"/subscriptions/orders",{method:"POST",json:e}),pd=e=>O(md,`/subscriptions/${e}/renew`,{method:"POST"}),fd=()=>O(te.array(mo),"/subscriptions/orders"),gd=e=>O(te.object({fallbackToBalance:te.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as ve,jsxs as On}from"react/jsx-runtime";var Nb=Je(ao,en,"\u5168\u90E8\u72B6\u6001"),Ib=3;function Lb({win:e,quotaPerUsd:t,width:o}){let n=ji(e),r=Ka(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${X.bullet} ${ae(e.used,t)} / ${ae(e.quota,t)}`;return On(Qt,{flexDirection:"column",children:[On(zo,{wrap:"truncate",children:[ve(zo,{color:u.foreground,children:r}),ve(zo,{color:n>=100?u.danger:u.mutedForeground,children:on(i,Math.max(0,o-Ab(r)))})]}),ve(zl,{used:e.used,total:e.quota,width:o}),ve(zo,{wrap:"truncate",color:u.faintForeground,children:`\u5C06\u4E8E ${ee(e.resetAt)} \u91CD\u7F6E`})]})}function Mb(e){if(e.revokedAt!==null)return`${ee(e.revokedAt)} \u4F5C\u5E9F`;let t=`${ee(e.expiresAt)} \u5230\u671F`;return`\u5DF2\u7528 ${Math.max(...e.windows.map(ji))}% \xB7 ${t}`}function Ob(e){let t=e.windows.length*4;return J+Rt+2+t+(e.renewable?J+1:0)}function Db(e){let t=e.description!==null&&e.description!==""?1+De:0,o=Math.ceil((1+e.windows.length)/2);return J+Rt+t+o+J+1}function hd(){let e=D(),{width:t}=j(),o=re(),[n,r]=Pb({name:"menu"}),[i,s]=Ve("status",()=>""),{busy:a,error:c,reset:l,run:d}=ge(),f=Q([e.revision],async()=>{let[h,y,x,k]=await Promise.all([ld(),ud(),fd(),ke(e.ctx.site)]);return{mine:h,plans:y,orders:x,site:k}});z(h=>{n.name!=="menu"||a!==null||(h==="r"?e.reload():h==="f"&&r({name:"filter"}))});let m=()=>{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"})},p=h=>{d("\u6B63\u5728\u4FDD\u5B58\u504F\u597D",()=>gd({fallbackToBalance:!h}),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},S=(h,y)=>{d("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>pd(h.id),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",ro({kind:"subscription",...x},k,y.quotaPerUsd))}})},g=(h,y)=>{d("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>dd({planId:h.id}),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",ro({kind:"subscription",...x},k,y.quotaPerUsd))}})};return ve(G,{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:m,children:ve(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:h,plans:y,orders:x,site:k})=>{if(n.name==="filter")return ve(V,{title:"\u7B5B\u9009\u8BA2\u9605\u8BA2\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Nb,initial:i}],onCancel:m,onSubmit:v=>{s(v.status??""),r({name:"menu"})}});let b=n.name==="sub"||n.name==="confirm-renew"?h.subscriptions.find(v=>v.id===n.id):void 0,T=n.name==="plan"||n.name==="confirm-buy"?y.find(v=>v.id===n.id):void 0,C=T?.description??"";if((n.name==="sub"||n.name==="confirm-renew")&&b===void 0)return ve(fe,{tone:"warn",width:t,title:"\u8BA2\u9605\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664",detail:"\u6309 Esc \u8FD4\u56DE"});if((n.name==="plan"||n.name==="confirm-buy")&&T===void 0)return ve(fe,{tone:"warn",width:t,title:"\u5957\u9910\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u67B6",detail:"\u6309 Esc \u8FD4\u56DE"});if(n.name==="confirm-renew"&&b!==void 0)return ve(qe,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${b.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(b,k),onCancel:m});if(n.name==="confirm-buy"&&T!==void 0)return ve(qe,{width:t,title:`\u786E\u8BA4\u8BA2\u9605\u300C${T.name}\u300D\uFF08${he(T.priceCny)} / ${T.durationDays} \u5929\uFF09\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>g(T,k),onCancel:m});let L=i===""?x:x.filter(v=>v.status===i),F=[{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\u4F18\u5148\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6",disabled:!0}]:h.subscriptions.map(v=>{let M=qi(v);return{value:{kind:"sub",id:v.id},label:v.planName,badge:M.label,badgeTone:We(M),hint:Mb(v)}}),{heading:""},{value:{kind:"fallback"},label:"\u8BA2\u9605\u989D\u5EA6\u7528\u5C3D\u540E\u81EA\u52A8\u6539\u6309\u4F59\u989D\u8BA1\u8D39",badge:h.fallbackToBalance?"\u5DF2\u5F00\u542F":"\u5DF2\u5173\u95ED",...h.fallbackToBalance?{badgeTone:"accent"}:{},hint:"\u5173\u95ED\u65F6\u8D85\u9650\u8BF7\u6C42\u5C06\u88AB\u62D2\u7EDD\uFF0C\u5E76\u5728\u54CD\u5E94\u4E2D\u7ED9\u51FA\u6700\u8FD1\u7684\u7A97\u53E3\u91CD\u7F6E\u65F6\u95F4"},{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:`${he(v.priceCny)} / ${v.durationDays} \u5929 \xB7 ${v.groupNames.join("\u3001")}`})),{heading:""},{heading:"\u8BA2\u9605\u8BA2\u5355"},...L.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}]:L.map(v=>({value:{kind:"order",orderNo:v.orderNo},label:`${v.planName}${v.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,...pi(v),hint:`${ee(v.createdAt)} \xB7 ${he(v.amountCny)}`}))],w=n.name==="sub"&&b!==void 0?Ob(b):n.name==="plan"&&T!==void 0?Db(T):0,E=w===0?o:o-w>=Ib?o-w:0,R=t-ce,P=n.name==="menu"&&a===null;return On(Qt,{flexDirection:"column",children:[E>0&&ve(le,{items:F,width:t,height:E,isActive:P,retain:"menu",onSelect:v=>{l(),v.kind==="fallback"?p(h.fallbackToBalance):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})}}),n.name==="sub"&&b!==void 0&&On(Qt,{marginTop:E>0?J:0,flexDirection:"column",children:[On(oe,{title:b.planName,note:b.revokedAt!==null?`${ee(b.revokedAt)} \u4F5C\u5E9F`:`${ee(b.expiresAt)} \u5230\u671F`,width:t,children:[ve(Ee,{width:R,items:[["\u72B6\u6001",qi(b).label],["\u8986\u76D6\u5206\u7EC4",b.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",ee(b.startsAt)]]}),ve(Qt,{marginTop:1,flexDirection:"column",children:b.windows.map((v,M)=>ve(Qt,{marginTop:M===0?0:1,flexDirection:"column",children:ve(Lb,{win:v,quotaPerUsd:k.quotaPerUsd,width:R})},v.windowId))})]}),b.renewable&&a===null&&ve(Qt,{marginTop:J,children:ve(le,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:b.id})})})]}),n.name==="plan"&&T!==void 0&&On(Qt,{marginTop:E>0?J:0,flexDirection:"column",children:[On(oe,{title:T.name,note:`${he(T.priceCny)} / ${T.durationDays} \u5929`,width:t,children:[C!==""&&ve(zo,{wrap:"truncate",color:u.mutedForeground,children:C}),ve(Qt,{marginTop:C===""?0:De,children:ve(Ee,{width:R,items:[["\u8986\u76D6\u5206\u7EC4",T.groupNames.join("\u3001")],...Ja(T,k.quotaPerUsd).map((v,M)=>[M===0?"\u7528\u91CF\u7A97\u53E3":"",v])]})})]}),a===null&&ve(Qt,{marginTop:J,children:ve(le,{width:t,items:[{value:"subscribe",label:T.enabled?"\u8BA2\u9605":"\u5DF2\u505C\u552E",disabled:!T.enabled}],onSelect:()=>r({name:"confirm-buy",id:T.id})})})]})]})}})})}import{jsx as we}from"react/jsx-runtime";var bd={home:{render:()=>we(Sm,{})},help:{render:()=>we(hm,{})},login:{render:()=>we(bu,{})},register:{render:()=>we(yu,{})},forgot:{render:()=>we(pu,{})},agreement:{render:e=>we(au,{params:e})},tokens:{render:()=>we(mm,{})},logs:{render:()=>we(Uu,{})},usage:{render:()=>we(Lu,{})},ledger:{render:()=>we(jm,{})},subscription:{render:()=>we(hd,{})},models:{render:()=>we(Hu,{})},recharge:{render:()=>we(cd,{})},order:{render:e=>we(Jm,{params:e})},pay:{render:e=>we(rd,{params:e})},invoices:{render:()=>we(Fm,{})},"invoice-apply":{render:()=>we(Om,{})},"invoice-profiles":{render:()=>we($m,{})},invite:{render:()=>we(km,{})},tickets:{render:()=>we(su,{})},ticket:{render:e=>we(iu,{params:e})},announcements:{render:()=>we(ll,{})},"announce-gate":{render:e=>we(rl,{params:e}),lockNav:!0},profile:{render:()=>we(Jl,{})}};function yd(e){return bd[e].lockNav===!0}function Sd(e){let t=bd[e.id].render;return t(e.params)}import{jsx as Dn,jsxs as Jb}from"react/jsx-runtime";function jb(){let e=D(),{rows:t}=j(),o=pr(),n=yd(e.current.id)||o,r=e.depth===1&&hr(e.current.id)&&Tt().session===null;return Zs(()=>{r&&e.home()}),Fb((i,s)=>{s.ctrl&&i==="c"&&e.exit()}),z(i=>{if(i==="?"){e.current.id==="help"?e.pop():n||e.push("help");return}i==="q"&&!n&&(e.depth>1?e.pop():e.exit())}),Dn($b,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:Sd(e.current)})}function qb(){let e=D(),t=Q([e.revision],async()=>{if(e.gate.announcementsChecked||Tt().session===null)return null;let o;try{o=await mc()}catch{return null}return e.gate.announcementsChecked=!0,o});return Zs(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function Hb(){let e=D(),t=Ub(!1);return Zs(()=>{t.current||(t.current=!0,lc().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${je(o)}`)))}),null}function Wb({ctx:e,mouse:t}){return Dn(_c,{subscribe:t.subscribe,children:Dn(bc,{children:Jb(Nc,{ctx:e,children:[Dn(Hb,{}),Dn(qb,{}),Dn(jb,{})]})})})}var zb="\x1B[2J\x1B[3J\x1B[H",Gb="\x1B[H\x1B[J",Vb="\x1B[3J";function Kb(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(zb).join(Gb).split(Vb).join("");return t.write(s,...i)}}})}async function xd(e){let t=vc(process.stdin,process.stdout);try{await Bb(Dn(Wb,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:Kb(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var Zb=`${ct} v${lt} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
|
|
11
|
+
`;)n+=1;return{start:o,end:n}}function Il({value:e,onChange:t,isActive:o,width:n,rows:r,placeholder:i,maxLength:s,onEdge:a,onFocusRequest:c}){let l=[...e],[d,f]=Cl(l.length),m=Math.min(d,l.length),[p,S]=Cl(0),g=Rl(e),h=Rl(m);g.current=e,h.current=m,fr(o);let y=Math.max(4,n),x=_=>{h.current=_,f(_)},k=(_,P)=>{g.current=_,x(P),t(_)},b=_=>{let P=[...g.current],v=Math.min(h.current,P.length),M=El(P,y),R=Pl(M,v),N=M[R],H=M[R+_];return N===void 0||H===void 0?!1:(x(Al(P,H,ng(P,N,v))),!0)},T=(_,P,v)=>{let M=tg(v);if(s!==void 0){let R=s-_.length;if(R<=0)return;M=[...M].slice(0,R).join("")}M!==""&&k([..._.slice(0,P),M,..._.slice(P)].join(""),P+[...M].length)};eg((_,P)=>{let v=[...g.current],M=Math.min(h.current,v.length);if(P.return){T(v,M,`
|
|
12
|
+
`);return}if(!P.tab){if(P.upArrow||P.downArrow){let R=P.upArrow?-1:1;b(R)||a?.(P.upArrow?"up":"down");return}if(P.leftArrow){x(Math.max(0,M-1));return}if(P.rightArrow){x(Math.min(v.length,M+1));return}if(P.home){x(Ss(v,M).start);return}if(P.end){x(Ss(v,M).end);return}if(P.backspace){if(M===0)return;k([...v.slice(0,M-1),...v.slice(M)].join(""),M-1);return}if(P.delete){if(M>=v.length)return;k([...v.slice(0,M),...v.slice(M+1)].join(""),M);return}if(P.ctrl){let R=Ss(v,M);if(_==="a")x(R.start);else if(_==="e")x(R.end);else if(_==="k")k([...v.slice(0,M),...v.slice(R.end)].join(""),M);else if(_==="u")k([...v.slice(0,R.start),...v.slice(M)].join(""),R.start);else if(_==="w"){let N=M;for(;N>R.start&&v[N-1]===" ";)N-=1;for(;N>R.start&&v[N-1]!==" ";)N-=1;k([...v.slice(0,N),...v.slice(M)].join(""),N)}return}P.meta||!_||T(v,M,_)}},{isActive:o});let C=El(l,y),L=Pl(C,m),F=Math.min(p,Math.max(0,C.length-r));L<F&&(F=L),L>F+r-1&&(F=L-r+1),F!==p&&S(F);let w=[];for(let _=0;_<r;_+=1){let P=F+_,v=C[P];if(v===void 0){w.push(Jt(mn,{children:" "},P));continue}let M=l.slice(v.start,v.end).join("");if(!o||P!==L){w.push(Jt(mn,{wrap:"truncate",color:u.foreground,children:M===""?" ":M},P));continue}let R=l.slice(v.start,m).join(""),N=m<v.end?l[m]??" ":" ",H=m<v.end?l.slice(m+1,v.end).join(""):"";w.push(Nl(mn,{wrap:"truncate",children:[Jt(mn,{color:u.foreground,children:R}),Jt(Ro,{char:N}),Jt(mn,{color:u.foreground,children:H})]},P))}if(e===""&&i!==void 0){let _=[...i];w[0]=o?Nl(mn,{wrap:"truncate",children:[Jt(Ro,{char:_[0]??" "}),Jt(mn,{color:u.faintForeground,children:_.slice(1).join("")})]},"placeholder"):Jt(mn,{wrap:"truncate",color:u.faintForeground,children:i},"placeholder")}let E=Be({onWheel:_=>{b(_)},onClick:({row:_,column:P})=>{c?.();let v=C[F+_];x(v===void 0?l.length:Al(l,v,P))}});return Jt(Zf,{ref:E,flexDirection:"column",children:w})}import{Fragment as $l,jsx as pe,jsxs as bt}from"react/jsx-runtime";var rg=e=>Object.fromEntries(e.map(t=>[t.name,"initial"in t?t.initial??"":""])),Ol="\u9009\u586B",ig=(e,t)=>e.kind!=="text"&&e.kind!=="textarea"?!1:typeof e.optional=="function"?e.optional(t):e.optional===!0,sg=(e,t)=>{let o=typeof e.hint=="function"?e.hint(t[e.name]??""):e.hint;return ig(e,t)?o===void 0?Ol:`${Ol} \xB7 ${o}`:o},ag=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},cg=6e4,lg=4,Ts=4,ug=2,Fr=(e,t)=>e?u.accent:t?u.foreground:u.mutedForeground;function V({title:e,fields:t,submitLabel:o,onSubmit:n,onCancel:r,width:i,busy:s,busyLabel:a="\u6B63\u5728\u63D0\u4EA4",error:c}){let[l,d]=to(()=>rg(t)),[f,m]=to(0),[p,S]=to({}),[g,h]=to(null),[,y]=to(0),x=s===!0,k=ag(t),b=k[Math.min(f,k.length-1)],T=b!==void 0&&b.type!=="submit"?t[b.index]:void 0,C=b?.type==="field"&&(T?.kind==="text"||T?.kind==="code"),L=b?.type==="field"&&T?.kind==="textarea",F=Object.values(p).some(A=>A.phase==="cooldown"&&A.until>Date.now());og(()=>{if(!F)return;let A=setInterval(()=>y(B=>B+1),1e3);return()=>clearInterval(A)},[F]);let w=A=>m(B=>(B+A+k.length)%k.length),E=(A,B)=>{if(A.options.length===0)return;let K=A.options.findIndex(Le=>Le.value===l[A.name]),de=A.options[(K+B+A.options.length)%A.options.length];de!==void 0&&d(Le=>({...Le,[A.name]:de.value}))},_=A=>{b?.type!=="field"||T?.kind!=="select"||E(T,A)},P=A=>{let B=t[A];if(B===void 0||B.kind!=="code")return;let K=(l[B.emailField]??"").trim();if(K===""){S(Le=>({...Le,[B.name]:{phase:"error",message:"\u8BF7\u5148\u586B\u5199\u90AE\u7BB1"}}));return}let de=p[B.name];de?.phase!=="sending"&&(de?.phase==="cooldown"&&de.email===K&&de.until>Date.now()||(S(Le=>({...Le,[B.name]:{phase:"sending"}})),B.send(K).then(()=>S(Le=>({...Le,[B.name]:{phase:"cooldown",email:K,until:Date.now()+cg}}))).catch(Le=>S(xt=>({...xt,[B.name]:{phase:"error",message:qe(Le)}})))))};Bl((A,B)=>{if(B.tab){w(B.shift?-1:1);return}if(!L){if(B.upArrow){w(-1);return}if(B.downArrow){w(1);return}if(!C){if(B.leftArrow){_(-1);return}if(B.rightArrow){_(1);return}B.return&&(b?.type==="submit"?n(l):b?.type==="send"?P(b.index):w(1))}}},{isActive:!x}),rn(r,{isActive:!x,layer:Vn.panel});let v=Math.max(0,...t.map(A=>ws(A.label))),M=i-ce,R=Math.max(8,M-v-8),N=(A,B)=>k.findIndex(K=>K.type===A&&(K.type==="submit"||K.index===B)),H=Ml(new Map).current,$=Ml(new Map).current,ne=2+v+Ts,q=(A,B)=>{let K=k[A];if(K===void 0)return;if(m(A),K.type==="submit"){n(l);return}if(K.type==="send"){P(K.index);return}let de=t[K.index];if(de!==void 0){if(de.kind==="select"){let Le=de.options.find(Tt=>Tt.value===l[de.name]),xt=Te(Le?.label??"\u2014",R);B>=ne-ug&&B<ne?E(de,-1):B>=ne+ws(xt)&&E(de,1);return}B>=ne&&$.get(K.index)?.moveToColumn(B-ne)}},se=(A,B)=>{if(A===null)return null;let K=Ll(A),de=null;for(let[Le,xt]of H){if(xt===null)continue;let Tt=Ll(xt),Me=Tt.y-K.y;B<Me||B>=Me+Tt.height||(de===null||Tt.height<de.box.height)&&(de={index:Le,box:Tt})}return de===null?null:{...de,frameX:K.x}},rt=Be({isActive:!x,onClick:({row:A,column:B})=>{let K=se(rt.current,A);K!==null&&q(K.index,B-(K.box.x-K.frameX))},onHover:({row:A})=>h(se(rt.current,A)?.index??null),onHoverLeave:()=>h(null)});return bt(Dt,{ref:rt,flexDirection:"column",children:[pe(Eo,{title:e,width:i}),bt(Dt,{flexDirection:"column",marginTop:$e,paddingLeft:ce,children:[c!=null&&pe(Dt,{marginBottom:1,children:pe(Rn,{message:c.message,hint:c.hint,width:M})}),t.map((A,B)=>{let K=f===N("field",B)&&!x,de=sg(A,l),Le=A.kind==="select"?A.options.find(Me=>Me.value===l[A.name]):void 0;if(A.kind==="textarea")return bt(Dt,{flexDirection:"column",ref:Me=>{H.set(N("field",B),Me)},children:[bt(Ce,{children:[pe(Ce,{color:u.accent,children:K?`${X.cursor} `:" "}),pe(Ce,{color:Fr(K,g===N("field",B)),bold:K,children:A.label})]}),pe(Dt,{paddingLeft:2,children:pe(Il,{value:l[A.name]??"",onChange:Me=>d(hi=>({...hi,[A.name]:Me})),isActive:K,width:M-2,rows:A.rows??lg,placeholder:A.placeholder,maxLength:A.maxLength,onEdge:Me=>w(Me==="up"?-1:1),onFocusRequest:()=>m(N("field",B))})}),K&&de!==void 0&&pe(Ce,{color:u.faintForeground,children:` ${Te(de,M-2)}`})]},A.name);let xt=A.kind==="code"&&f===N("send",B)&&!x,Tt=p[A.name];return bt(Dt,{flexDirection:"column",ref:Me=>{H.set(N("field",B),Me)},children:[bt(Ce,{children:[pe(Ce,{color:u.accent,children:K?`${X.cursor} `:" "}),pe(Ce,{color:Fr(K,g===N("field",B)),bold:K,children:Ne(A.label,v)}),A.kind==="select"?bt($l,{children:[pe(Ce,{color:K?u.accent:u.border,children:` ${X.prev} `}),pe(Ce,{color:u.foreground,children:Te(Le?.label??"\u2014",R)}),pe(Ce,{color:K?u.accent:u.border,children:` ${X.next}`})]}):bt($l,{children:[pe(Ce,{children:" ".repeat(Ts)}),pe(kr,{ref:Me=>{$.set(B,Me)},value:l[A.name]??"",onChange:Me=>d(hi=>({...hi,[A.name]:Me})),onSubmit:()=>w(1),isActive:K,placeholder:A.kind==="text"||A.kind==="code"?A.placeholder:void 0,mask:A.kind==="text"?A.mask:void 0,width:R})]})]}),K&&de!==void 0&&pe(Ce,{color:u.faintForeground,children:`${" ".repeat(2+v+Ts)}${Te(de,R)}`}),A.kind==="code"&&pe(mg,{active:xt,state:Tt,email:(l[A.emailField]??"").trim(),indent:ne,width:R,hovered:g===N("send",B),nodeRef:Me=>{H.set(N("send",B),Me)}})]},A.name)}),pe(Dt,{marginTop:1,ref:A=>{H.set(N("submit"),A)},children:x?pe(Xe,{label:a}):bt(Ce,{children:[pe(Ce,{color:u.accent,children:b?.type==="submit"?`${X.cursor} `:" "}),pe(Ce,{color:Fr(b?.type==="submit",g===N("submit")),bold:b?.type==="submit",children:o})]})})]})]})}function mg({active:e,state:t,email:o,indent:n,width:r,hovered:i,nodeRef:s}){if(t?.phase==="sending")return pe(Dt,{paddingLeft:n,children:pe(Xe,{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 bt(Dt,{ref:s,flexDirection:"column",paddingLeft:n-2,children:[bt(Ce,{children:[pe(Ce,{color:u.accent,children:e?`${X.cursor} `:" "}),pe(Ce,{color:a>0?u.faintForeground:Fr(e,i),bold:e&&a===0,children:c})]}),t?.phase==="error"&&pe(Ce,{color:u.danger,children:` ${Te(t.message,r)}`})]})}var dg=2,Dl=2;function Fl({options:e,value:t,onChange:o}){let n=e.findIndex(d=>d.value===t),r=hr();Bl((d,f)=>{if(!f.leftArrow&&!f.rightArrow)return;let m=f.leftArrow?-1:1,p=e[(n+m+e.length)%e.length];p!==void 0&&o(p.value)},{isActive:!r});let i=[],s=0;e.forEach((d,f)=>{f>0&&(s+=Dl);let m=ws(d.label)+dg;i.push({value:d.value,from:s,to:s+m}),s+=m});let[a,c]=to(null),l=Be({onClick:({column:d})=>{let f=i.find(m=>d>=m.from&&d<m.to);f!==void 0&&o(f.value)},onHover:({column:d})=>{let f=i.find(m=>d>=m.from&&d<m.to);c(f?.value??null)},onHoverLeave:()=>c(null)});return pe(Dt,{ref:l,children:pe(Ce,{wrap:"truncate",children:e.map((d,f)=>{let m=d.value===t;return bt(Ce,{children:[f>0&&" ".repeat(Dl),pe(Ce,{backgroundColor:m?u.foreground:u.border,color:m?u.background:d.value===a?u.foreground:u.mutedForeground,bold:m,children:` ${d.label} `})]},d.value)})})})}import{Box as _s,Text as Ul}from"ink";import pg from"qrcode";import{jsx as Oo,jsxs as Sg}from"react/jsx-runtime";var fg="#000000",gg="#ffffff",ks=2,ql=2,Rs=1,jl,vs;function Hl(e){if(e===jl&&vs!==void 0)return vs;let t=pg.create(e,{errorCorrectionLevel:"L"}),o=t.modules.size,n=t.modules.data,r=o+ks*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+ks];c!==void 0&&(c[a+ks]=n[s*o+a]===1)}return jl=e,vs=i,i}function hg(e){let t=Hl(e).length;return{columns:t*ql,rows:t}}function Ur(e,t,o,n){let r=hg(e),i=t.rows-r.rows-Rs;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+Rs+o.rows+n.rows}}}function bg(e,t){let o=[],n=0;for(let r=1;r<=e.length;r+=1)r<e.length&&e[r]===e[n]||(o.push(Oo(Ul,{backgroundColor:e[n]??!1?fg:gg,children:" ".repeat((r-n)*ql)},n)),n=r);return Oo(Ul,{children:o},t)}function yg({value:e}){return Oo(_s,{flexDirection:"column",flexShrink:0,children:Hl(e).map((t,o)=>bg(t,o))})}function jr({value:e,aside:t}){return Sg(_s,{flexDirection:"column",flexShrink:0,children:[Oo(yg,{value:e}),Oo(_s,{marginTop:Rs,flexDirection:"column",children:t})]})}import{Box as qr,Text as et}from"ink";import Wl from"string-width";import{jsx as tt,jsxs as Do}from"react/jsx-runtime";var Hr=2,Cs=4,zl=e=>" ".repeat(e),Es=13,Gl=4,Vl=(e,t,o)=>Math.max(1,Math.min(e,o,Math.floor((t+Hr)/(Es+Hr)))),Yt=(e,t,o=Gl)=>Math.ceil(e/Vl(e,t,o))*2;function nt({tiles:e,width:t,maxPerRow:o=Gl}){let n=Vl(e.length,t,o),r=Math.floor((t-Hr*(n-1))/n),i=[];for(let s=0;s<e.length;s+=n)i.push(e.slice(s,s+n));return tt(qr,{flexDirection:"column",children:i.map((s,a)=>tt(qr,{flexDirection:"column",children:["label","value"].map(c=>tt(et,{wrap:"truncate",children:s.map((l,d)=>Do(et,{children:[d>0&&zl(Hr),tt(et,{color:c==="label"?u.mutedForeground:u.foreground,bold:c==="value",children:Ne(l[c],r)})]},l.label))},c))},a))})}function Kl({used:e,total:t,width:o=20}){let n=t<=0?1:Math.min(1,Math.max(0,e/t)),r=Math.round(n*o),i=n>=1?u.danger:n>=.8?u.warning:u.foreground;return Do(et,{children:[tt(et,{color:i,children:X.barFilled.repeat(r)}),tt(et,{color:u.border,children:X.barEmpty.repeat(o-r)})]})}function xg({items:e,width:t}){let o=Math.max(0,...e.map(([r])=>Wl(r))),n=Math.max(0,t-o-3);return tt(qr,{flexDirection:"column",children:e.map(([r,i])=>Do(et,{wrap:"truncate",children:[tt(et,{color:u.mutedForeground,children:Ne(r,o)})," ",tt(et,{color:u.foreground,children:Te(i,n)})]},r))})}var Jl=(e,t)=>Math.floor((t-Cs)/2)<Es*2?e:Math.ceil(e/2);function Ee({items:e,width:t}){let o=Math.floor((t-Cs)/2);if(o<Es*2)return tt(xg,{items:e,width:t});let n=Math.max(0,...e.map(([a])=>Wl(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?tt(et,{children:" ".repeat(o)}):Do(et,{children:[tt(et,{color:u.mutedForeground,children:Ne(a[0],n)})," ",tt(et,{color:u.foreground,children:Ne(a[1],r)})]});return tt(qr,{flexDirection:"column",children:i.map((a,c)=>Do(et,{wrap:"truncate",children:[s(a[0]),zl(Cs),s(a[1])]},c))})}import{Fragment as Cg,jsx as ie,jsxs as dn}from"react/jsx-runtime";var wg={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"},Ql="\u5BC6\u94A5 ",kg=10,vg={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"}},_g=2+J;function Rg({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(dn($o,{wrap:"truncate",color:u.accent,children:[Ne(e[r]??"",Math.min(o,t)),e[r+1]??""]},r));return ie(yt,{flexDirection:"column",children:n})}function Xl(){let e=D(),{width:t,columns:o,rows:n}=j(),r=re(),[i,s]=Yl({name:"menu"}),[a,c]=Yl(!1),{busy:l,error:d,reset:f,fail:m,run:p}=ge(),S=Q([e.revision],async()=>{let[k,b,T]=await Promise.all([pl(),xl(),yl()]);return{user:k.user,security:b,sessions:T.sessions}});z(k=>{i.name==="menu"&&l===null&&k==="r"&&e.reload()}),Tc(i.name==="codes");let g=()=>{if(i.name!=="codes"){if(i.name==="menu"){e.pop();return}f(),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,b)=>{c(!1),s({name:"codes",codes:k,message:b})},x=(k,b)=>{k==="rebind"?p("\u6B63\u5728\u751F\u6210\u65B0\u5BC6\u94A5",()=>ys({code:b}),{onSuccess:T=>s({name:"enroll",setup:T})}):k==="regenerate"?p("\u6B63\u5728\u751F\u6210\u6062\u590D\u7801",()=>kl({code:b}),{onSuccess:({recoveryCodes:T})=>y(T,"\u6062\u590D\u7801\u5DF2\u66F4\u65B0")}):p("\u6B63\u5728\u505C\u7528",()=>wl({code:b}),{onSuccess:()=>h("\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u505C\u7528")})};return ie(G,{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,children:ie(Y,{state:S,loading:"\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u4FE1\u606F",width:t,children:({user:k,security:b,sessions:T})=>{if(i.name==="rename")return ie(V,{title:"\u4FEE\u6539\u7528\u6237\u540D",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,fields:[{kind:"text",name:"username",label:"\u7528\u6237\u540D",initial:k.username,placeholder:"\u8BF7\u8F93\u5165\u65B0\u7528\u6237\u540D"}],onCancel:g,onSubmit:w=>{let E=(w.username??"").trim();if(E===""||E.length>Sn){m(`\u8BF7\u8F93\u5165 1 \u5230 ${Sn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>fl({username:E}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="email")return ie(V,{title:"\u4FEE\u6539\u90AE\u7BB1",width:t,submitLabel:"\u786E\u8BA4\u4FEE\u6539",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,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:w=>hl({email:w})},{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:w=>{let E=(w.email??"").trim(),_=(w.code??"").trim(),P=w.password??"";if(E===""||_===""||P===""){m("\u8BF7\u586B\u5199\u65B0\u90AE\u7BB1\u3001\u9A8C\u8BC1\u7801\u4E0E\u5F53\u524D\u5BC6\u7801");return}p("\u6B63\u5728\u4FDD\u5B58",()=>bl({email:E,code:_,password:P}),{onSuccess:()=>h("\u90AE\u7BB1\u5DF2\u4FEE\u6539")})}});if(i.name==="password")return ie(V,{title:"\u4FEE\u6539\u5BC6\u7801",width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,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 ${it} \u4F4D\uFF0C\u4FDD\u5B58\u540E\u5176\u4ED6\u8BBE\u5907\u5C06\u9000\u51FA\u767B\u5F55`}],onCancel:g,onSubmit:w=>{let E=w.old??"",_=w.next??"";if(E===""){m("\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801");return}if(_.length<it){m(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${it} \u4F4D`);return}p("\u6B63\u5728\u4FDD\u5B58",()=>gl({oldPassword:E,newPassword:_}),{onSuccess:()=>h("\u5BC6\u7801\u5DF2\u4FEE\u6539")})}});if(i.name==="confirm-logout")return ie(He,{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:d,onConfirm:()=>p("\u6B63\u5728\u9000\u51FA",()=>lr(),{onSuccess:()=>{e.toast("ok","\u5DF2\u9000\u51FA\u767B\u5F55"),e.home()}}),onCancel:g});if(i.name==="code"){let w=vg[i.intent];return ie(V,{title:w.title,width:t,submitLabel:w.submit,busy:l!==null,busyLabel:l??"\u6B63\u5728\u5904\u7406",error:d,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801",placeholder:"\u9A8C\u8BC1\u5668\u663E\u793A\u7684 6 \u4F4D\u6570\u5B57",hint:w.hint}],onCancel:g,onSubmit:E=>{let _=(E.code??"").trim();if(_===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}x(i.intent,_)}})}if(i.name==="enroll"){let w=(_,P)=>dn(Cg,{children:[P&&ie($o,{color:u.mutedForeground,children:"\u4F7F\u7528 Google Authenticator \u7B49\u9A8C\u8BC1\u5668 App \u626B\u7801\u6DFB\u52A0"}),dn($o,{children:[ie($o,{color:u.mutedForeground,children:Ql}),ie($o,{color:u.accent,children:i.setup.secret})]}),ie(yt,{marginTop:1,children:ie(V,{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:d,fields:[{kind:"text",name:"code",label:"\u52A8\u6001\u9A8C\u8BC1\u7801"}],onCancel:g,onSubmit:v=>{let M=(v.code??"").trim();if(M===""){m("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u5668\u4E0A\u7684 6 \u4F4D\u6570\u5B57");return}p("\u6B63\u5728\u7ED1\u5B9A",()=>Tl({code:M}),{onSuccess:({recoveryCodes:R})=>y(R,"\u4E24\u6B65\u9A8C\u8BC1\u5DF2\u7ED1\u5B9A")})}})})]}),E=Ur(i.setup.otpauthUri,{width:t,rows:r},{columns:Tg(Ql)+i.setup.secret.length,rows:kg},{columns:o-t,rows:n-r});return E.fits?ie(jr,{value:i.setup.otpauthUri,aside:w(E.asideWidth,!0)}):dn(yt,{flexDirection:"column",children:[ie(fe,{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"}),w(t,!1)]})}if(i.name==="codes")return dn(yt,{flexDirection:"column",children:[ie(fe,{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"}),ie(yt,{marginTop:1,children:ie(Rg,{codes:i.codes,width:t})}),ie(yt,{marginTop:1,children:ie(le,{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:w=>{if(w==="ack"){c(_=>!_);return}let E=i.message;s({name:"menu"}),e.reload(),e.toast("ok",E)}})})]});if(i.name==="passkey-add")return ie(fe,{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 ie(V,{title:`\u91CD\u547D\u540D Passkey ${i.item.name}`,width:t,submitLabel:"\u4FDD\u5B58",busy:l!==null,busyLabel:l??"\u6B63\u5728\u4FDD\u5B58",error:d,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:w=>{let E=(w.name??"").trim();if(E===""){m("\u8BF7\u8F93\u5165\u540D\u79F0");return}p("\u6B63\u5728\u4FDD\u5B58",()=>vl(i.item.id,{name:E}),{onSuccess:()=>h("\u5DF2\u4FDD\u5B58")})}});if(i.name==="passkey-delete")return ie(He,{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:d,onConfirm:()=>p("\u6B63\u5728\u5220\u9664",()=>_l(i.item.id),{onSuccess:()=>h("\u5DF2\u5220\u9664")}),onCancel:g});if(i.name==="passkey"){let w=i.item;return ie(yt,{flexDirection:"column",children:dn(oe,{title:`Passkey ${w.name}`,width:t,children:[ie(Ee,{width:t-ce,items:[["\u540D\u79F0",w.name],["\u6DFB\u52A0\u65F6\u95F4",ee(w.createdAt)],["\u6700\u8FD1\u4F7F\u7528",w.lastUsedAt===null?"\u2014":ee(w.lastUsedAt)]]}),ie(yt,{marginTop:1,children:ie(le,{width:t-ce,items:[{value:"rename",label:"\u91CD\u547D\u540D"},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:E=>{f(),s(E==="rename"?{name:"passkey-rename",item:w}:{name:"passkey-delete",item:w})}})})]})})}if(i.name==="confirm-revoke")return ie(He,{width:t,title:"\u786E\u8BA4\u9000\u51FA\u8BE5\u8BBE\u5907\u7684\u767B\u5F55\uFF1F",confirmLabel:"\u9000\u51FA",busy:l,error:d,onConfirm:()=>p("\u6B63\u5728\u9000\u51FA\u8BE5\u8BBE\u5907",()=>Sl(i.item.id),{onSuccess:()=>h("\u5DF2\u9000\u51FA\u8BE5\u8BBE\u5907")}),onCancel:g});if(i.name==="session"){let w=i.item;return dn(yt,{flexDirection:"column",children:[ie(oe,{title:Qo(w.device),note:w.current?"\u5F53\u524D\u8BBE\u5907":void 0,width:t,children:ie(Ee,{width:t-ce,items:[["\u8BBE\u5907\u7C7B\u578B",w.device?.type!=null?wg[w.device.type]??w.device.type:"\u684C\u9762\u8BBE\u5907"],["\u5BA2\u6237\u7AEF",w.device?.client!=null?`${w.device.client} ${w.device.clientVersion??""}`.trim():"\u2014"],["\u64CD\u4F5C\u7CFB\u7EDF",w.device?.os!=null?`${w.device.os} ${w.device.osVersion??""}`.trim():"\u2014"],["\u8BBE\u5907\u578B\u53F7",w.device?.model!=null?`${w.device.vendor??""} ${w.device.model}`.trim():"\u2014"],["IP \u5730\u5740",w.ip??"\u2014"],["\u767B\u5F55\u65F6\u95F4",ee(w.loginAt)],["\u6700\u540E\u6D3B\u8DC3",ee(w.lastActiveAt)],["\u767B\u5F55\u6709\u6548\u671F\u81F3",ee(w.expiresAt)],["\u5BA2\u6237\u7AEF\u6807\u8BC6",w.userAgent??"\u2014"]]})}),!w.current&&l===null&&ie(yt,{marginTop:1,children:ie(le,{width:t,items:[{value:"revoke",label:"\u9000\u51FA\u8BE5\u8BBE\u5907",labelTone:"danger"}],onSelect:()=>{f(),s({name:"confirm-revoke",item:w})}})})]})}let C=b.totp,L=C.enabled?C.recoveryCodesRemaining===0?"\u5DF2\u5168\u90E8\u7528\u5B8C\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210":`\u5269\u4F59 ${C.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",F=[{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"},...C.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"},...b.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}]:[],...b.passkeys.map(w=>({value:{kind:"passkey",item:w},label:w.name,hint:`\u6700\u8FD1\u4F7F\u7528 ${w.lastUsedAt===null?"\u2014":ee(w.lastUsedAt)}`})),{value:{kind:"add-passkey"},label:"\u6DFB\u52A0 Passkey",hint:"\u9700\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"},{heading:""},{heading:"\u767B\u5F55\u8BBE\u5907"},...T.map(w=>({value:{kind:"session",item:w},label:w.current?`${Qo(w.device)}\uFF08\u5F53\u524D\u8BBE\u5907\uFF09`:Qo(w.device),...w.current?{labelTone:"accent"}:{},hint:`${w.ip??"\u2014"} \xB7 \u6700\u540E\u6D3B\u8DC3 ${ee(w.lastActiveAt)}`})),{heading:""},{value:{kind:"logout"},label:"\u9000\u51FA\u767B\u5F55",labelTone:"danger"}];return dn(yt,{flexDirection:"column",children:[ie(Ee,{width:t,items:[["\u7528\u6237\u540D",k.username],["\u90AE\u7BB1",k.email],["\u4E24\u6B65\u9A8C\u8BC1",C.enabled?`\u5DF2\u542F\u7528\uFF08\u542F\u7528\u4E8E ${C.enabledAt===null?"\u2014":ee(C.enabledAt)}\uFF09`:"\u672A\u542F\u7528"],["\u6062\u590D\u7801",L]]}),ie(yt,{marginTop:J,children:ie(le,{width:t,height:Math.max(3,r-_g),isActive:l===null,items:F,retain:"menu",onSelect:w=>{f(),w.kind==="rename"?s({name:"rename"}):w.kind==="email"?s({name:"email"}):w.kind==="password"?s({name:"password"}):w.kind==="logout"?s({name:"confirm-logout"}):w.kind==="enable"?p("\u6B63\u5728\u751F\u6210\u5BC6\u94A5",()=>ys({}),{onSuccess:E=>s({name:"enroll",setup:E})}):w.kind==="code"?s({name:"code",intent:w.intent}):w.kind==="add-passkey"?s({name:"passkey-add"}):w.kind==="passkey"?s({name:"passkey",item:w.item}):w.kind==="session"&&s({name:"session",item:w.item})}})})]})}})})}import{Box as As,Text as Ns,useInput as Ig}from"ink";import{useRef as iu,useState as zr}from"react";import Lg from"string-width";import{z as Ge}from"zod";var Eg=Ge.object({siteName:Ge.string(),siteDescription:Ge.string(),apiLines:Aa,quotaPerUsd:Ge.number().int().positive(),ticketAutoCloseMinutes:Ge.number(),legal:Ge.object({termsConfigured:Ge.boolean(),privacyConfigured:Ge.boolean()}),invitation:Ge.object({firstInviterPercent:Ge.number(),firstInviteePercent:Ge.number()}),initialized:Ge.boolean()});function ke(e,t){return _t(Eg,`${e}/api/site-config`,{...t===void 0?{}:{timeoutMs:t}})}var Pg=Ge.object({title:Ge.string(),content:Ge.string(),configured:Ge.boolean()});function Zl(e,t){return _t(Pg,`${e}/api/agreements/${t}`)}var eu=e=>O(bn(er),Wt("/tickets",{...e})),tu=e=>O(er,"/tickets",{method:"POST",json:e}),Ps=e=>O(qa,`/tickets/${e}`),nu=(e,t)=>O(Oi,`/tickets/${e}/messages`,{method:"POST",json:{content:t}}),ou=e=>O(Se,`/tickets/${e}/close`,{method:"POST"}).then(()=>{}),ru=e=>O(Se,`/tickets/${e}/reopen`,{method:"POST"}).then(()=>{});import{useEffect as Ag,useRef as Ng}from"react";function Wr(e,t,o=!0){let n=Ng(t);n.current=t,Ag(()=>{if(!o)return;let r=!1,i=!1,s=setInterval(()=>{i||r||(i=!0,n.current().catch(()=>{}).finally(()=>{i=!1}))},e);return()=>{r=!0,clearInterval(s)}},[e,o])}import{jsx as $t,jsxs as au}from"react/jsx-runtime";var Mg=5e3,Og=7,Dg=3,su=1;function $g(e,t){let o=[],n=r=>{let i=r.spans.reduce((a,c)=>a+Lg(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:` ${ee(r.createdAt)}`,color:u.faintForeground}]},c=Mt([{text:r.content,color:u.foreground}],Math.max(8,t-4));s?o.push(n(a),...c.map(n)):o.push(a,...c)}),o}function cu({params:e}){let t=D(),{width:o}=j(),n=re(),[r,i]=zr("main"),[s,a]=zr(!1),[c,l]=zr(0),{busy:d,error:f,reset:m,fail:p,run:S}=ge(),g=Q([e.id,t.revision],async()=>{let[w,E]=await Promise.all([Ps(e.id),ke(t.ctx.site)]);return{detail:w,site:E}}),[h,y]=zr(null),x=iu(0),k=iu(t.revision);k.current!==t.revision&&(k.current=t.revision,x.current+=1,h!==null&&y(null));let b=g.phase==="ready"?g.data:null,T=h??b?.detail??null;Wr(Mg,async()=>{if(T===null||d!==null)return;let w=x.current,E=await Ps(e.id);w===x.current&&(E.ticket.updatedAt!==T.ticket.updatedAt||E.messages.length!==T.messages.length)&&y(E)},r==="main"&&b!==null),z(w=>{r!=="main"||s||d!==null||(w==="r"?t.reload():w==="x"&&T!==null&&T.ticket.status!=="closed"&&(m(),i("confirm-close")))}),Ig((w,E)=>{E.tab&&r==="main"&&!s&&T?.ticket.status!=="closed"&&a(!0)},{isActive:r==="main"&&!s&&d===null});let C=()=>{if(r!=="main"){m(),i("main");return}if(s){a(!1);return}t.pop()},L=w=>{S("\u6B63\u5728\u53D1\u9001",()=>nu(e.id,w),{onSuccess:()=>{a(!1),l(E=>E+1),t.reload(),t.toast("ok","\u5DF2\u53D1\u9001")}})},F=r==="main"&&!s?T?.ticket.status==="closed"?["\u2191\u2193 \u6EDA\u52A8","r \u5237\u65B0"]:["\u2191\u2193 \u6EDA\u52A8","Tab \u56DE\u590D","x \u5173\u95ED\u5DE5\u5355","r \u5237\u65B0"]:[];return $t(G,{trail:["\u5DE5\u5355\u652F\u6301",T?.ticket.title??"\u5DE5\u5355\u8BE6\u60C5"],hints:F,onEscape:C,children:$t(Y,{state:g,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:o,children:({site:w})=>{if(T===null)return null;let E=T.ticket,_=E.status==="closed";if(r==="confirm-close")return $t(He,{width:o,title:"\u5173\u95ED\u5DE5\u5355",detail:`\u786E\u5B9A\u5173\u95ED\u5DE5\u5355\u300C${E.title}\u300D\u5417\uFF1F\u5173\u95ED\u540E\u53EF\u91CD\u65B0\u6253\u5F00`,confirmLabel:"\u5173\u95ED\u5DE5\u5355",busy:d,error:f,onConfirm:()=>S("\u6B63\u5728\u5173\u95ED",()=>ou(e.id),{onSuccess:()=>{i("main"),t.reload(),t.toast("ok","\u5DF2\u5173\u95ED")}}),onCancel:C});let P=w.ticketAutoCloseMinutes>0?su:0,v=_?Dg:s?Og:su,M=Math.max(3,n-P-v-J);return au(As,{flexDirection:"column",children:[P>0&&$t(Ns,{wrap:"truncate",color:u.faintForeground,children:`\u7BA1\u7406\u5458\u56DE\u590D\u540E\u8D85\u8FC7 ${w.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`}),$t(an,{lines:$g(T.messages,o),height:M,isActive:!s&&d===null,pinBottom:!0}),$t(As,{marginTop:1,flexDirection:"column",children:_?au(As,{flexDirection:"column",children:[$t(Ns,{color:u.mutedForeground,children:"\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u5982\u9700\u7EE7\u7EED\u6C9F\u901A\u53EF\u91CD\u65B0\u6253\u5F00"}),$t(le,{width:o,isActive:d===null,items:[{value:"reopen",label:"\u91CD\u65B0\u6253\u5F00"}],onSelect:()=>S("\u6B63\u5728\u91CD\u65B0\u6253\u5F00",()=>ru(e.id),{onSuccess:()=>{t.reload(),t.toast("ok","\u5DF2\u91CD\u65B0\u6253\u5F00")}})})]}):s?$t(V,{title:"\u56DE\u590D\u5DE5\u5355",width:o,submitLabel:"\u53D1\u9001\u56DE\u590D",busy:d!==null,busyLabel:d??"\u6B63\u5728\u53D1\u9001",error:f,fields:[{kind:"textarea",name:"content",label:"\u56DE\u590D\u5185\u5BB9",rows:3,maxLength:5e3,placeholder:"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9"}],onCancel:()=>a(!1),onSubmit:R=>{let N=(R.content??"").trim();if(N===""){p("\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9");return}L(N)}},c):$t(Ns,{color:u.faintForeground,children:"\u6309 Tab \u64B0\u5199\u56DE\u590D"})})]})}})})}import{Box as Bg}from"ink";import{useState as Fg}from"react";import{jsx as Pn,jsxs as qg}from"react/jsx-runtime";var Ug=Ye(Ri,Ui,"\u5168\u90E8\u72B6\u6001"),jg={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"},Is={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:jg};function lu(){let e=D(),{width:t}=j(),o=re(),[n,r]=Fg({name:"list"}),[i,s]=Ke("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:f}=ge(),m=ln([e.revision,i],(g,h)=>eu({page:g,pageSize:h,...i===""?{}:{status:i}}),{retain:"page"}),p=n.name==="list";z((g,h)=>{p&&(g==="r"?e.reload():g==="f"?r({name:"filter"}):g==="n"?r({name:"create-category"}):h.leftArrow?m.go(-1):h.rightArrow&&m.go(1))});let S=()=>{n.name==="list"?e.pop():n.name==="create"?r({name:"create-category"}):(l(),r({name:"list"}))};return Pn(G,{hints:p?["\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"?Pn(V,{title:"\u7B5B\u9009\u5DE5\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Ug,initial:i}],onCancel:S,onSubmit:g=>{s(g.status??""),m.reset(),r({name:"list"})}}):n.name==="create-category"?Pn(le,{width:t,height:o,items:[{heading:"\u5206\u7C7B"},...Ci.map(g=>({value:g,label:rr(g),hint:Is[g].title}))],onSelect:g=>r({name:"create",category:g})}):n.name==="create"?Pn(V,{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:Ei.map(g=>({value:g,label:ji(g).label})),initial:"normal"},{kind:"text",name:"title",label:"\u6807\u9898",placeholder:Is[n.category].title},{kind:"textarea",name:"content",label:"\u95EE\u9898\u63CF\u8FF0",rows:5,maxLength:5e3,placeholder:Is[n.category].content}],onCancel:S,onSubmit:g=>{let h=(g.title??"").trim(),y=(g.content??"").trim();if(h===""){d("\u8BF7\u586B\u5199\u6807\u9898");return}if(y===""){d("\u8BF7\u586B\u5199\u95EE\u9898\u63CF\u8FF0");return}f("\u6B63\u5728\u63D0\u4EA4\u5DE5\u5355",()=>tu({title:h,category:n.category,priority:g.priority??"normal",content:y}),{onSuccess:()=>{r({name:"list"}),m.reset(),e.reload(),e.toast("ok","\u5DE5\u5355\u5DF2\u63D0\u4EA4")}})}}):Pn(Y,{state:m.state,loading:"\u6B63\u5728\u8BFB\u53D6\u5DE5\u5355",width:t,children:g=>qg(Bg,{flexDirection:"column",children:[Pn(Re,{retain:"list",items:g.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,Gt(ji(h.priority)),rr(h.category),ee(h.updatedAt),Gt(Ui(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}),Pn(un,{page:m.page,pages:m.pages,total:m.total,width:t})]})})})}import{Box as Hg}from"ink";import{jsx as Bo}from"react/jsx-runtime";function uu({params:e}){let t=D(),{width:o}=j(),n=re(),r=Q([e.type,t.revision],()=>Zl(t.ctx.site,e.type));return Bo(G,{trail:["\u6CD5\u5F8B\u6761\u6B3E",e.type==="terms"?"\u7528\u6237\u534F\u8BAE":"\u9690\u79C1\u653F\u7B56"],hints:["\u2191\u2193 \u6EDA\u52A8"],children:Bo(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6761\u6B3E",width:o,children:i=>i.configured?Bo(Hg,{flexDirection:"column",children:Bo(an,{lines:Xn(i.content,o),height:n})}):Bo(fe,{tone:"info",width:o,title:"\u8BE5\u6761\u6B3E\u5C1A\u672A\u914D\u7F6E"})})})}async function mu(e,t){await _t(Se,`${e}/api/auth/send-code`,{json:t})}async function du(e,t){let o=await pt(`${e}/api/auth/register`,{json:t});It(o);let n=Wn.parse(o.data);return So(e,yo({refresh:null,device:null},o.headers),n)}async function pu(e,t){await _t(Se,`${e}/api/auth/forgot-password`,{json:t})}async function fu(e,t){await _t(Se,`${e}/api/auth/reset-password`,{json:t})}import{jsx as gu}from"react/jsx-runtime";function hu(){let e=D(),{width:t}=j(),{busy:o,error:n,fail:r,run:i}=ge();return gu(G,{trail:["\u627E\u56DE\u5BC6\u7801"],isActive:o===null,children:gu(V,{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=>pu(e.ctx.site,{email:s})},{kind:"text",name:"password",label:"\u65B0\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${it} \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<it){r(`\u65B0\u5BC6\u7801\u81F3\u5C11 ${it} \u4F4D`);return}i("\u6B63\u5728\u91CD\u7F6E",()=>fu(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 Ms,Text as zg}from"ink";import{useState as yu}from"react";import{Box as bu}from"ink";import{jsx as Ls,jsxs as Wg}from"react/jsx-runtime";var Gr=e=>e.termsConfigured||e.privacyConfigured;function Vr({legal:e,width:t,onAgree:o}){let n=D(),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 Wg(bu,{flexDirection:"column",children:[Ls(fe,{tone:"info",width:t,title:`\u7EE7\u7EED\u524D\u8BF7\u9605\u8BFB\u5E76\u540C\u610F${r.join("\u4E0E")}`}),Ls(bu,{marginTop:1,children:Ls(le,{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 pn,jsxs as Su}from"react/jsx-runtime";function xu(){let e=D(),{width:t}=j(),[o,n]=yu({name:"credentials"}),[r,i]=yu(!1),{busy:s,error:a,reset:c,fail:l,run:d}=ge(),f=Q([e.revision],()=>ke(e.ctx.site)),m=h=>{e.gate.announcementsChecked=!1,e.gate.announcementsShown=!1,e.toast("ok",`\u5DF2\u767B\u5F55\uFF1A${h}`),e.home()},p=(h,y)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>rc(e.ctx.site,h,y),{onSuccess:x=>{if(x.status==="totp_required"){n({name:"factor",ticket:x.ticket,jar:x.jar});return}m(x.session.username)}})},S=(h,y)=>{d("\u6B63\u5728\u9A8C\u8BC1",()=>ic(e.ctx.site,h.jar,h.ticket,y,h.kind),{onSuccess:x=>m(x.username)})},g=()=>{o.name==="credentials"?e.pop():(c(),n({name:"credentials"}))};return Su(G,{trail:o.name==="credentials"?["\u767B\u5F55\u8D26\u53F7"]:["\u767B\u5F55\u8D26\u53F7","\u4E24\u6B65\u9A8C\u8BC1"],onEscape:g,isActive:s===null,children:[o.name==="credentials"&&pn(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:h=>Gr(h.legal)&&!r?pn(Vr,{legal:h.legal,width:t,onAgree:()=>i(!0)}):Su(Ms,{flexDirection:"column",children:[pn(V,{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:g,onSubmit:y=>{let x=(y.account??"").trim(),k=y.password??"";if(x===""||k===""){l("\u8BF7\u586B\u5199\u8D26\u53F7\u4E0E\u5BC6\u7801");return}p(x,k)}}),pn(Ms,{marginTop:1,children:pn(zg,{color:u.faintForeground,children:"Passkey \u767B\u5F55\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210"})})]})}),o.name==="factor"&&pn(le,{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"&&pn(Ms,{flexDirection:"column",children:pn(V,{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:g,onSubmit:h=>{let y=(h.code??"").trim();if(y===""){l("\u8BF7\u586B\u5199\u9A8C\u8BC1\u7801");return}S(o,y)}})})]})}import{useState as Gg}from"react";import{jsx as Kr}from"react/jsx-runtime";function Tu(){let e=D(),{width:t}=j(),[o,n]=Gg(!1),{busy:r,error:i,fail:s,run:a}=ge(),c=Q([e.revision],()=>ke(e.ctx.site));return Kr(G,{trail:["\u6CE8\u518C\u8D26\u53F7"],isActive:r===null,children:Kr(Y,{state:c,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:l=>Gr(l.legal)&&!o?Kr(Vr,{legal:l.legal,width:t,onAgree:()=>n(!0)}):Kr(V,{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:d=>mu(e.ctx.site,{email:d,purpose:"register"})},{kind:"text",name:"password",label:"\u5BC6\u7801",mask:!0,placeholder:`\u81F3\u5C11 ${it} \u4F4D`},{kind:"text",name:"invite",label:"\u9080\u8BF7\u7801",placeholder:"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801",optional:!0}],onCancel:()=>e.pop(),onSubmit:d=>{let f=(d.username??"").trim(),m=(d.email??"").trim(),p=(d.code??"").trim(),S=d.password??"",g=(d.invite??"").trim();if(f===""||f.length>Sn){s(`\u8BF7\u8F93\u5165 1 \u5230 ${Sn} \u4E2A\u5B57\u7B26\u7684\u7528\u6237\u540D`);return}if(m===""||p===""){s("\u8BF7\u586B\u5199\u90AE\u7BB1\u4E0E\u9A8C\u8BC1\u7801");return}if(S.length<it){s(`\u5BC6\u7801\u81F3\u5C11 ${it} \u4F4D`);return}a("\u6B63\u5728\u6CE8\u518C",()=>du(e.ctx.site,{username:f,email:m,password:S,code:p,...g===""?{}:{inviteCode:g}}),{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 Nn}from"ink";import{useEffect as ch,useRef as lh,useState as Fs}from"react";import{z as I}from"zod";var Vg=I.object({balance:I.number(),today:I.object({requests:I.number(),tokens:I.number(),cost:I.number()})}),wu=()=>O(Vg,"/dashboard/summary"),ku=["all","30d","7d"],Kg=I.object({totals:I.object({requests:I.number(),tokens:I.number(),cost:I.number()}),hourly:I.array(I.number()),models:I.array(I.object({model:I.string(),displayName:I.string(),tokens:I.number(),inTokens:I.number(),outTokens:I.number()})),chart:I.object({start:I.string(),end:I.string(),points:I.array(I.object({day:I.string(),model:I.string(),tokens:I.number()}))}),heatmap:I.object({start:I.string(),end:I.string(),days:I.array(I.object({day:I.string(),cost:I.number()}))}),activeDays:I.number(),currentStreak:I.number(),longestStreak:I.number()}),Os=e=>O(Kg,Wt("/dashboard/stats",{range:e})),Jg=I.object({id:I.number().int(),requestId:I.string(),tokenName:I.string(),protocol:ga,model:I.string(),modelDisplayName:I.string(),groupName:I.string(),promptTokens:I.number(),completionTokens:I.number(),cachedTokens:I.number(),cacheWrite5mTokens:I.number(),cacheWrite1hTokens:I.number(),totalTokens:I.number(),quotaCost:I.number(),subscriptionPlanName:I.string().nullable(),multiplier:I.string(),status:ka,httpStatus:I.number().int(),stopReason:I.string().nullable(),latencyMs:I.number(),firstByteMs:I.number().nullable(),stream:I.boolean(),ip:I.string().nullable(),createdAt:I.string()}),vu=e=>O(bn(Jg),Wt("/logs",{...e})),Yg=I.object({quotaCost:I.number(),rpm:I.number(),tpm:I.number(),concurrency:I.number()}),_u=e=>O(Yg,Wt("/logs/stats",{...e})),Qg=I.object({id:I.number().int(),type:xa,amount:I.number(),balanceAfter:I.number(),refType:Ta,refId:I.string().nullable(),createdAt:I.string()}),Ru=e=>O(bn(Qg),Wt("/quota-ledger",{...e}));import{Box as Xg,Text as Et}from"ink";import Fo from"string-width";import{Fragment as Eu,jsx as Pt,jsxs as Ds}from"react/jsx-runtime";var An=1,Zg=4,eh=1,no=8,th=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587"],Cu=e=>`${Number(e.slice(5,7))}\u6708${Number(e.slice(8,10))}\u65E5`;function Pu({data:e,order:t,width:o,rows:n}){let r=n-eh,i=[];for(let E=e.start;E<=e.end;E=en(E,1))i.push(E);let s=Math.min(Zg,Math.floor((o+An)/i.length)-An);s<1&&(s=1,i=i.slice(-Math.floor((o+An)/(1+An))));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,Tr.length).map((E,_)=>[E,_])),d=Tr.length,f=E=>Tr[E]??u.faintForeground,m=new Map(i.map((E,_)=>[E,_])),p=i.map(()=>Array.from({length:d+1},()=>0));for(let E of e.points){let _=m.get(E.day);if(_===void 0)continue;let P=p[_];if(P===void 0)continue;let v=l.get(E.model)??d;P[v]=(P[v]??0)+E.tokens}let S=p.map(E=>E.reduce((_,P)=>_+P,0)),g=Math.max(0,...S),h=r*no,y=p.map((E,_)=>{let P=Array.from({length:r},()=>null),v=S[_]??0;if(v<=0||g<=0)return P;let M=Math.max(1,Math.round(v/g*h)),R=[],N=0,H=0;E.forEach(($,ne)=>{N+=$;let q=Math.round(N/v*M);for(let se=H;se<q;se+=1)R[se]=f(ne);H=q});for(let $=0;$<r;$+=1){let ne=Math.min(no,M-$*no);if(ne<=0)break;let q=new Map;for(let A=$*no;A<$*no+ne;A+=1){let B=R[A];B!==void 0&&q.set(B,(q.get(B)??0)+1)}let se=null,rt=0;for(let[A,B]of q)B>rt&&(se=A,rt=B);if(se===null)break;P[$]={color:se,glyph:ne===no?null:th[ne-1]??null}}return P}),x=E=>{let _=[],P=(v,M,R)=>{let N=_[_.length-1];N!==void 0&&N.color===v&&N.glyph===M?N.width+=R:_.push({color:v,glyph:M,width:R})};return y.forEach((v,M)=>{M>0&&P(null,null,An);let R=v[E]??null;R===null?P(null,null,s):P(R.color,R.glyph,s)}),_},k=i.length*(s+An)-An,b=Cu(a),T=Cu(c),C=g>0?`\u5355\u65E5\u5CF0\u503C ${on(g)}`:"",L=k-Fo(b)-Fo(T),F=C!==""&&L>=Fo(C)+4,w=F?Math.floor((L-Fo(C))/2):L;return Ds(Xg,{flexDirection:"column",children:[Array.from({length:r},(E,_)=>{let P=r-1-_;return Pt(Et,{wrap:"truncate",children:x(P).map((v,M)=>v.color===null?Pt(Et,{children:" ".repeat(v.width)},M):v.glyph===null?Pt(Et,{backgroundColor:v.color,children:" ".repeat(v.width)},M):Pt(Et,{color:v.color,children:v.glyph.repeat(v.width)},M))},P)}),Pt(Et,{wrap:"truncate",children:L<2?Pt(Et,{color:u.faintForeground,children:Te(b,k)}):Ds(Eu,{children:[Pt(Et,{color:u.faintForeground,children:b}),Pt(Et,{children:" ".repeat(w)}),F&&Ds(Eu,{children:[Pt(Et,{color:u.mutedForeground,children:C}),Pt(Et,{children:" ".repeat(L-Fo(C)-w)})]}),Pt(Et,{color:u.faintForeground,children:T})]})})]})}import{Box as Au,Text as Ft}from"ink";import nh from"string-width";import{jsx as Bt,jsxs as $s}from"react/jsx-runtime";var Jr=3,Qt=2,Bs=10,oh=8,Nu=e=>Math.floor((e-Jr)/Qt),Iu=e=>Nu(e)>=oh;function rh(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=en(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 ih(e,t){let o=t*Qt,n="",r=0,i="";for(;r<o;){let s=r%Qt===0?e[r/Qt*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=nh(c);if(r+l<=o){n+=c,r+=l;continue}}}n+=" ",r+=1}return n}var sh={1:"\u4E00",3:"\u4E09",5:"\u4E94"};function ah({cells:e,day:t,weeks:o}){return $s(Ft,{wrap:"truncate",children:[Bt(Ft,{color:u.faintForeground,children:Ne(sh[t]??"",Jr)}),Array.from({length:o},(n,r)=>{let i=e[r*7+t];return i===void 0?Bt(Ft,{children:" ".repeat(Qt)},r):Bt(Ft,{backgroundColor:xr[i.level],children:" ".repeat(Qt)},r)})]})}function Lu({data:e,funFact:t,width:o}){let n=rh(e),r=Math.ceil(n.length/7),i=Math.min(r,Nu(o)),s=n.slice((r-i)*7),a=3+xr.length*Qt+3,c=Math.max(0,Jr+i*Qt-a-2);return $s(Au,{flexDirection:"column",children:[Bt(Ft,{wrap:"truncate",color:u.faintForeground,children:" ".repeat(Jr)+ih(s,i)}),Array.from({length:7},(l,d)=>Bt(ah,{cells:s,day:d,weeks:i},d)),Bt(Au,{marginTop:1,children:$s(Ft,{wrap:"truncate",children:[Bt(Ft,{color:u.mutedForeground,children:Ne(t??"",c)})," ",Bt(Ft,{color:u.faintForeground,children:"\u5C11 "}),xr.map(l=>Bt(Ft,{backgroundColor:l,children:" ".repeat(Qt)},l)),Bt(Ft,{color:u.faintForeground,children:" \u591A"})]})})]})}import{jsx as Ue,jsxs as Ou}from"react/jsx-runtime";var uh={all:"\u5168\u90E8","30d":"30 \u5929","7d":"7 \u5929"},mh=1,Yr=4,Mu=5,dh=9;function ph(e){let t=-1,o=0;return e.forEach((n,r)=>{n>o&&(o=n,t=r)}),t<0?"\u2014":`${t} \u70B9`}function Du(){let e=D(),{width:t}=j(),o=re(),[n,r]=Fs("all"),[i,s]=Fs("heatmap"),[a,c]=Fs(null),l=lh(null),d=Q([n,e.revision],async()=>{let f=l.current;if(f!==null&&f.revision===e.revision){let g=await Os(n);return{summary:f.summary,stats:g,site:f.site}}let[m,p,S]=await Promise.all([wu(),Os(n),ke(e.ctx.site)]);return l.current={revision:e.revision,summary:m,site:S},{summary:m,stats:p,site:S}});return ch(()=>{d.phase==="ready"&&c(za({tokens:d.data.stats.totals.tokens,scope:"user",range:n}))},[d,n]),z(f=>{f==="r"&&e.reload(),f==="t"&&s(m=>m==="heatmap"?"chart":"heatmap")}),Ue(G,{hints:["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u5207\u6362\u533A\u95F4","t \u5207\u6362\u56FE\u8868","/ \u8FC7\u6EE4","r \u5237\u65B0"],children:Ue(Nn,{flexDirection:"column",children:Ue(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7528\u91CF",width:t,children:({summary:f,stats:m,site:p})=>{let S=[{label:"\u8D26\u6237\u4F59\u989D",value:ae(f.balance,p.quotaPerUsd)},{label:"\u4ECA\u65E5\u8BF7\u6C42",value:_e(f.today.requests)},{label:"\u4ECA\u65E5 Token",value:_e(f.today.tokens)},{label:"\u4ECA\u65E5\u6D88\u8017",value:ae(f.today.cost,p.quotaPerUsd)}],g=[{label:"\u8BF7\u6C42\u6570",value:_e(m.totals.requests)},{label:"Token \u603B\u91CF",value:on(m.totals.tokens)},{label:"\u6D88\u8017",value:ae(m.totals.cost,p.quotaPerUsd)},{label:"\u6D3B\u8DC3\u5929\u6570",value:_e(m.activeDays)},{label:"\u5F53\u524D\u8FDE\u7EED",value:`${m.currentStreak} \u5929`},{label:"\u6700\u957F\u8FDE\u7EED",value:`${m.longestStreak} \u5929`},{label:"\u9AD8\u5CF0\u65F6\u6BB5",value:ph(m.hourly)},{label:"\u5E38\u7528\u6A21\u578B",value:m.models[0]?.displayName??"\u2014"}],h=t-ce,y=_=>at+_+Yt(S.length,h)+J+at+_+mh+_+Yt(g.length,h)+J+at+_,x=o-y($e)>=Yr?$e:0,k=o-y(x),b=J+at+x+Mu,T=i==="chart"&&m.chart.points.length>0&&k>=b+Yr,C=i==="heatmap"&&Iu(h)&&k-(J+Bs)>=Yr,L=C?J+Bs:0,F=T?Math.min(dh,Mu+Math.floor((k-b-Yr)/2)):0,w=k-L-(T?J+at+x+F:0),E=_=>`${(m.totals.tokens>0?_/m.totals.tokens*100:0).toFixed(1)}%`;return Ou(Nn,{flexDirection:"column",children:[Ue(oe,{title:"\u6982\u89C8",width:t,gap:x,children:Ue(nt,{width:h,tiles:S})}),Ue(Nn,{marginTop:1,flexDirection:"column",children:Ou(oe,{title:"\u533A\u95F4\u7EDF\u8BA1",width:t,gap:x,children:[Ue(Fl,{options:ku.map(_=>({value:_,label:uh[_]})),value:n,onChange:r}),Ue(Nn,{marginTop:x,children:Ue(nt,{width:h,tiles:g})}),C&&Ue(Nn,{marginTop:1,flexDirection:"column",children:Ue(Lu,{data:m.heatmap,funFact:a,width:h})})]})}),T&&Ue(Nn,{marginTop:1,flexDirection:"column",children:Ue(oe,{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:Ue(Pu,{data:m.chart,order:m.models.map(_=>_.model),width:h,rows:F})})}),Ue(Nn,{marginTop:1,flexDirection:"column",children:Ue(oe,{title:"\u6A21\u578B\u7528\u91CF",width:t,gap:x,children:m.models.length===0?Ue(fe,{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"}):Ue(Re,{retain:"list",items:m.models,width:h,height:w,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,on(_.tokens),on(_.inTokens),on(_.outTokens),E(_.tokens)],searchOf:_=>_.displayName})})})]})}})})})}import{Box as oo,Text as js}from"ink";import{useState as Fu}from"react";import{z as We}from"zod";var fh=We.object({id:We.number().int(),name:We.string(),description:We.string(),multiplier:We.coerce.number()}),Qr=()=>O(We.array(fh),"/groups"),Us=We.object({id:We.number().int(),name:We.string(),keyPrefix:We.string(),keySuffix:We.string(),groupId:We.number().int().nullable(),groupName:We.string().nullable(),usedQuota:We.number(),quotaLimit:We.number().nullable()}),Xr=()=>O(We.array(Us),"/tokens"),$u=e=>O(Us.extend({token:We.string()}),"/tokens",{method:"POST",json:e}),Zr=(e,t)=>O(Us,`/tokens/${e}`,{method:"PATCH",json:t}),Bu=e=>O(Se,`/tokens/${e}`,{method:"DELETE"}).then(()=>{});import{jsx as je,jsxs as ei}from"react/jsx-runtime";var Uu={model:"",requestId:"",token:"",group:"",status:"",range:"today",since:"",until:""},ju=/^\d{4}-\d{2}-\d{2}$/;function gh(e){let t=$i();return e.range==="today"?{since:t,until:t}:e.range==="7d"?{since:en(t,-6),until:t}:e.range==="30d"?{since:en(t,-29),until:t}:e.range==="custom"?{...e.since===""?{}:{since:e.since},...e.until===""?{}:{until:e.until}}:{}}function qu(e){let t=gh(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:Bi(t.since).toISOString()},...t.until===void 0?{}:{until:Bi(en(t.until,1)).toISOString()}}}var hh=Ye(_i,nr,"\u5168\u90E8\u72B6\u6001"),bh=[{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 yh({log:e,quotaPerUsd:t,width:o}){let n=o-ce,r=nr(e.status),i=ze(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",_e(e.cachedTokens)]),e.cacheWrite5mTokens>0&&a.push(["\u7F13\u5B58\u5199 5m",_e(e.cacheWrite5mTokens)]),e.cacheWrite1hTokens>0&&a.push(["\u7F13\u5B58\u5199 1h",_e(e.cacheWrite1hTokens)]),e.firstByteMs!==null&&a.push(["\u9996\u5B57\u8282",`${wn(e.firstByteMs)} s`]);let c=[["\u8BF7\u6C42 ID",e.requestId],["\u4EE4\u724C",e.tokenName],["\u5206\u7EC4",e.groupName],["\u534F\u8BAE",Ka(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]],...e.ip===null?[]:[["IP",e.ip]],["\u500D\u7387",`\xD7${Number(e.multiplier)}`]];return ei(oe,{title:e.modelDisplayName,note:ee(e.createdAt),width:o,children:[ei(js,{wrap:"truncate",children:[je(js,{color:i===void 0?u.mutedForeground:Fe[i],children:r.label}),je(js,{color:u.faintForeground,children:` ${De([e.stream?"\u6D41\u5F0F":"",e.model])}`})]}),je(oo,{marginTop:1,children:je(nt,{width:n,tiles:[{label:"\u8F93\u5165 Token",value:_e(e.promptTokens)},{label:"\u8F93\u51FA Token",value:_e(e.completionTokens)},{label:"\u6D88\u8017",value:Gn(e.quotaCost,t)},{label:"\u603B\u8017\u65F6",value:`${wn(e.latencyMs)} s`}]})}),s!==null&&je(oo,{marginTop:1,children:je(fe,{tone:"warn",width:n,title:s})}),je(oo,{marginTop:1,children:je(Ee,{width:n,items:[...a,...c]})})]})}function Hu(){let e=D(),{width:t}=j(),o=re(),[n,r]=Fu({name:"list"}),[i,s]=Fu(Uu),{error:a,fail:c,reset:l}=ge(),d=Q([e.revision],async()=>{let[h,y,x]=await Promise.all([Qr(),Xr(),ke(e.ctx.site)]);return{groups:h,tokens:y,site:x}}),f=ln([e.revision,JSON.stringify(i)],(h,y)=>vu({page:h,pageSize:y,...qu(i)}),{retain:"page"}),m=Q([e.revision,JSON.stringify(i)],()=>_u(qu(i))),p=n.name==="list";z((h,y)=>{p&&(h==="r"?e.reload():h==="f"?(l(),r({name:"filter"})):y.leftArrow?f.go(-1):y.rightArrow&&f.go(1))});let S=()=>{n.name==="list"?e.pop():(l(),r({name:"list"}))},g=JSON.stringify(i)!==JSON.stringify(Uu);return je(G,{hints:p?["\u2191\u2193 \u79FB\u52A8","Enter \u8BE6\u60C5","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:S,children:je(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u7B5B\u9009\u9009\u9879",width:t,children:({groups:h,tokens:y,site:x})=>{if(n.name==="filter")return je(V,{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(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"},...h.map(b=>({value:b.name,label:b.name}))],initial:i.group},{kind:"select",name:"status",label:"\u72B6\u6001",options:hh,initial:i.status},{kind:"select",name:"range",label:"\u65F6\u95F4\u8303\u56F4",options:bh,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:b=>{let T=b.range??"",C=(b.since??"").trim(),L=(b.until??"").trim();if(T==="custom"&&(C!==""&&!ju.test(C)||L!==""&&!ju.test(L))){c("\u65E5\u671F\u683C\u5F0F\u5E94\u4E3A YYYY-MM-DD");return}s({model:b.model??"",requestId:b.requestId??"",token:b.token??"",group:b.group??"",status:b.status??"",range:T,since:C,until:L}),f.reset(),r({name:"list"})}});if(n.name==="detail")return je(yh,{log:n.log,quotaPerUsd:x.quotaPerUsd,width:t});let k=Yt(4,t);return ei(oo,{flexDirection:"column",children:[je(oo,{height:k+1,flexDirection:"column",overflow:"hidden",children:je(Y,{state:m,loading:"\u6B63\u5728\u7EDF\u8BA1\u7B5B\u9009\u7ED3\u679C",width:t,children:b=>je(nt,{width:t,tiles:[{label:"\u6D88\u8017",value:ae(b.quotaCost,x.quotaPerUsd)},{label:"RPM",value:_e(b.rpm)},{label:"TPM",value:_e(b.tpm)},{label:"\u5E76\u53D1",value:_e(b.concurrency)}]})})}),je(Y,{state:f.state,loading:"\u6B63\u5728\u8BFB\u53D6\u4F7F\u7528\u65E5\u5FD7",width:t,children:b=>ei(oo,{flexDirection:"column",children:[je(Re,{retain:"list",items:b.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:T=>[ee(T.createdAt),T.modelDisplayName,_e(T.promptTokens),_e(T.completionTokens),Gn(T.quotaCost,x.quotaPerUsd),Gt(nr(T.status))],onOpen:T=>r({name:"detail",log:T}),emptyLabel:g?"\u65E0\u5339\u914D\u7ED3\u679C":"\u6682\u65E0\u8C03\u7528\u8BB0\u5F55",emptyDescription:g?void 0:"\u901A\u8FC7\u4EE4\u724C\u8C03\u7528 API \u540E\uFF0C\u660E\u7EC6\u4F1A\u663E\u793A\u5728\u8FD9\u91CC"}),je(un,{page:f.page,pages:f.pages,total:f.total,width:t})]})})]})}})})}import{Box as Uo,Text as fn}from"ink";import{useState as kh}from"react";import{z as Z}from"zod";var Sh=Z.object({id:Z.number().int(),model:Z.string(),displayName:Z.string(),inputPricePerMillionTokens:Z.string(),outputPricePerMillionTokens:Z.string(),cachedInputPricePerMillionTokens:Z.string(),cacheWritePricePerMillionTokens:Z.string()}),xh=Z.object({quotaPerUsd:Z.number().int().positive(),cnyPerUsd:Z.number(),minTopupCny:Z.number(),models:Z.array(Sh)});function ti(e){return _t(xh,`${e}/api/pricing`)}var Th=Z.object({cnyPerUsd:Z.number(),groups:Z.array(Z.object({id:Z.number().int(),name:Z.string(),multiplier:Z.coerce.number()})),stats:Z.object({requests:Z.number(),errors:Z.number(),latencyP50Ms:Z.number().nullable(),firstByteP50Ms:Z.number().nullable()}),heartbeat:Z.object({bucketStartMs:Z.number(),groups:Z.array(Z.object({id:Z.number().int(),name:Z.string(),minutes:Z.array(Z.object({requests:Z.number(),errors:Z.number()}))}))})});function Wu(e,t){return _t(Th,`${e}/api/pricing/${t}`)}var wh=Z.object({data:Z.array(Z.object({id:Z.string()}))});async function zu(e,t,o){return(await _t(wh,`${e}/v1/models`,{headers:{authorization:`Bearer ${t}`},...o===void 0?{}:{timeoutMs:o}})).data.map(r=>r.id)}import{jsx as Ie,jsxs as jo}from"react/jsx-runtime";var vh=4,_h="\u5355\u4EF7 = \u5145\u503C\u6C47\u7387 \xD7 \u500D\u7387\uFF0C\u5373 1 \u7F8E\u5143\u989D\u5EA6\u7684\u4EBA\u6C11\u5E01\u4EF7\u683C\uFF1BToken \u4EF7\u683C = \u57FA\u7840\u4EF7 \xD7 \u500D\u7387\uFF0C\u5355\u4F4D USD / 1M Tokens",Rh=1,Ch=1+$e,Eh=e=>e.requests===0?u.border:e.errors===0?u.success:e.errors/e.requests>=.5?u.danger:u.warning;function Ph({minutes:e,width:t}){let o=e.slice(Math.max(0,e.length-t)),n=[];for(let r of o){let i=Eh(r),s=n[n.length-1];s!==void 0&&s.color===i?s.count+=1:n.push({color:i,count:1})}return Ie(fn,{wrap:"truncate",children:n.map((r,i)=>Ie(fn,{color:r.color,children:X.barFilled.repeat(r.count)},i))})}function Ah({price:e,width:t,contentRows:o}){let n=D(),r=Q([e.id,n.revision],()=>Wu(n.ctx.site,e.id)),i=(s,a)=>Tn(String(Number(s)*a),"-");return Ie(Y,{state:r,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BE6\u60C5",width:t,children:s=>{let a=t-ce,c=s.stats,l=[{label:"\u53EF\u7528\u7387",value:c.requests>0?`${((c.requests-c.errors)/c.requests*100).toFixed(1)}%`:"\u2014"},{label:"\u8C03\u7528\u6B21\u6570",value:_e(c.requests)},{label:"\u5EF6\u8FDF P50",value:c.latencyP50Ms!==null?`${wn(c.latencyP50Ms)} s`:"\u2014"},{label:"\u9996\u5B57\u8282 P50",value:c.firstByteP50Ms!==null?`${wn(c.firstByteP50Ms)} s`:"\u2014"}],d=Ch+Ct+Yt(l.length,a,2)+J+Ct+Rh,f=s.heartbeat.groups.length,m=o-d-vh-J-Ct,p=Math.max(0,Math.floor(m/2));p<f&&(p=Math.max(0,Math.floor((m-1)/2))),p=Math.min(f,p);let S=p>0?J+Ct+p*2+(p<f?1:0):0,g=Math.max(1,o-d-S);return jo(Uo,{flexDirection:"column",children:[Ie(Uo,{marginBottom:$e,children:jo(fn,{wrap:"truncate",children:[Ie(fn,{bold:!0,color:u.foreground,children:e.displayName}),Ie(fn,{color:u.faintForeground,children:` ${e.model}`})]})}),Ie(oe,{title:"\u8FD1 24 \u5C0F\u65F6",note:"\u5168\u90E8\u5206\u7EC4\u7684\u7EFC\u5408\u8C03\u7528\u7EDF\u8BA1",width:t,children:Ie(nt,{width:a,tiles:l,maxPerRow:2})}),p>0&&Ie(Uo,{marginTop:1,flexDirection:"column",children:jo(oe,{title:"\u53EF\u7528\u6027",note:"\u6700\u8FD1\u4E00\u6BB5\u65F6\u95F4\u5404\u5206\u7EC4\u7684\u8C03\u7528\u5065\u5EB7\u72B6\u51B5",width:t,children:[s.heartbeat.groups.slice(0,p).map(h=>jo(Uo,{flexDirection:"column",children:[Ie(fn,{wrap:"truncate",color:u.foreground,children:h.name}),Ie(Ph,{minutes:h.minutes,width:a})]},h.id)),p<f&&Ie(fn,{color:u.faintForeground,children:`\u5176\u4F59 ${f-p} \u4E2A\u5206\u7EC4\u672A\u663E\u793A`})]})}),Ie(Uo,{marginTop:1,flexDirection:"column",children:jo(oe,{title:"\u5206\u7EC4\u4EF7\u683C",width:t,children:[Ie(fn,{wrap:"truncate",color:u.mutedForeground,children:_h}),s.groups.length===0?Ie(fe,{tone:"info",width:a,title:"\u6682\u65E0\u53EF\u7528\u5206\u7EC4",detail:"\u5F53\u524D\u6CA1\u6709\u542F\u7528\u7684\u6E20\u9053\u63D0\u4F9B\u8BE5\u6A21\u578B"}):Ie(Re,{items:s.groups,width:a,height:g,columns:[{label:"\u5206\u7EC4",shrink:!0},{label:"\u500D\u7387",align:"right"},{label:"\u5355\u4EF7",align:"right"},{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:h=>[h.name,`\xD7${h.multiplier}`,`\xA5${(s.cnyPerUsd*h.multiplier).toFixed(2)}`,i(e.inputPricePerMillionTokens,h.multiplier),i(e.outputPricePerMillionTokens,h.multiplier),i(e.cachedInputPricePerMillionTokens,h.multiplier),i(e.cacheWritePricePerMillionTokens,h.multiplier)]})]})})]})}})}function Gu(){let e=D(),{width:t}=j(),o=re(),[n,r]=kh({name:"list"}),i=Q([e.revision],async()=>(await ti(e.ctx.site)).models);z(a=>{a==="r"&&e.reload()});let s=()=>{n.name==="list"?e.pop():r({name:"list"})};return Ie(G,{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:s,children:Ie(Y,{state:i,loading:"\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u5B9A\u4EF7",width:t,children:a=>a.length===0?Ie(fe,{tone:"info",width:t,title:"\u6682\u65E0\u6A21\u578B"}):n.name==="detail"?Ie(Ah,{price:n.price,width:t,contentRows:o}):Ie(Re,{retain:"list",items:a,width:t,height:o,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:c=>[c.displayName,Tn(c.inputPricePerMillionTokens,"-"),Tn(c.outputPricePerMillionTokens,"-"),Tn(c.cachedInputPricePerMillionTokens,"-"),Tn(c.cacheWritePricePerMillionTokens,"-")],searchOf:c=>`${c.displayName} ${c.model}`,onOpen:c=>r({name:"detail",price:c}),emptyLabel:"\u65E0\u5339\u914D\u7ED3\u679C"})})})}import{Box as In,Text as Hh}from"ink";import{useState as ri}from"react";function Vu(e,t){let o=e.line??t.apiLines[0];if(o===void 0)throw new U("\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 Ku(e,t){let o=await ke(e.site);return zu(Vu(kn(),o).url,t)}async function Ju(e,t,o,n){let r=await ke(e.site),i=Vu(kn(),r).url;t.apply({siteName:r.siteName,baseUrl:t.relayUrl(i),apiKey:o,model:t.requiresModel?n??null:null},t.resolveDir())}import{homedir as tm}from"os";import{join as oi,resolve as Nh}from"path";function ni(e,t){let o=e[t];return typeof o!="object"||o===null||Array.isArray(o)?null:o}function qo(e,t){let o={...Ko(e)??{}};for(let[n,r]of t){if(n.length===1){o[n[0]]=r;continue}let[i,s]=n,a=o[i];if(a!==void 0&&ni(o,i)===null)throw new U(`${e} \u7684 ${i} \u5B57\u6BB5\u4E0D\u662F\u5BF9\u8C61\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`);let c=a===void 0?{}:{...ni(o,i)??{}};c[s]=r,o[i]=c}Jo(e,o,384)}function Yu(e,t){let o=Ko(e);if(o===null)return null;let n=t.length===1?o[t[0]]:ni(o,t[0])?.[t[1]];return typeof n=="string"?n:null}function Qu(e,t){let o=Ko(e);if(o===null)return!1;if(t.length===1)return t[0]in o;let n=ni(o,t[0]);return n!==null&&t[1]in n}var Xu=["env","ANTHROPIC_BASE_URL"],Ih=["env","ANTHROPIC_AUTH_TOKEN"],Zu=["hasCompletedOnboarding"],qs=e=>oi(e.dir,"settings.json"),em=e=>e.custom?oi(e.dir,".claude.json"):oi(tm(),".claude.json"),nm={id:"claude-code",label:"Claude Code",requiresModel:!1,resolveDir(){let e=process.env.CLAUDE_CONFIG_DIR;return e?{dir:Nh(e),custom:!0}:{dir:oi(tm(),".claude"),custom:!1}},relayUrl:e=>e,configPaths:e=>[qs(e),em(e)],read(e){return{baseUrl:Yu(qs(e),Xu),model:null}},apply(e,t){qo(qs(t),[[Xu,e.baseUrl],[Ih,e.apiKey]]);let o=em(t);Qu(o,Zu)||qo(o,[[Zu,!0]])}};import{homedir as Lh}from"os";import{join as Gs,resolve as Mh}from"path";import{parse as Oh,patch as Dh}from"@decimalturn/toml-patch";import{parse as $h}from"smol-toml";var Bh=["OPENAI_API_KEY"],om="model_provider",Hs="model",Ws=e=>Gs(e.dir,"config.toml"),rm=e=>Gs(e.dir,"auth.json");function zs(e,t){try{return $h(e,{integersAsBigInt:"asNeeded"})}catch(o){throw new U(`${t} \u4E0D\u662F\u5408\u6CD5 TOML\uFF0C\u5DF2\u8DF3\u8FC7\u5199\u5165\uFF0C\u8BF7\u5148\u4FEE\u590D\u8BE5\u6587\u4EF6`,{cause:o})}}function Fh(e,t){let o=Ws(t);if(e.model===null)throw new U("Codex \u9700\u8981\u5148\u6307\u5B9A\u9ED8\u8BA4\u6A21\u578B",{hint:"\u5728\u5199\u5165\u524D\u9009\u62E9\u4E00\u4E2A\u53EF\u8DEF\u7531\u7684\u6A21\u578B"});let n=jn(o)??"";n!==""&&zs(n,o);let r=e.siteName.toLowerCase(),i=Oh(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[om]=r,i[Hs]=e.model;let a=Dh(n,i,{inlineTableStart:2}),c=zs(a,o);if(c[om]!==r||c[Hs]!==e.model||c.model_providers?.[r]?.base_url!==e.baseUrl)throw new U(`\u65E0\u6CD5\u5B89\u5168\u6539\u5199 ${o}\uFF0C\u5176\u7ED3\u6784\u8D85\u51FA\u9884\u671F\uFF0C\u8BF7\u624B\u5DE5\u914D\u7F6E\u8BE5\u6587\u4EF6`);yi(o,a,384)}var im={id:"codex",label:"Codex",requiresModel:!0,resolveDir(){let e=process.env.CODEX_HOME;return e?{dir:Mh(e),custom:!0}:{dir:Gs(Lh(),".codex"),custom:!1}},relayUrl:e=>`${e}/v1`,configPaths:e=>[Ws(e),rm(e)],read(e){let t=Ws(e),o=jn(t),n=o===null?null:zs(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?.[Hs])}},apply(e,t){Fh(e,t),qo(rm(t),[[Bh,e.apiKey]])}};var sm=[nm,im];var Uh=6e3,jh=2,am=e=>pt(`${e.url}/api/site-config`,{timeoutMs:Uh});async function qh(e){try{await am(e);let t=Number.POSITIVE_INFINITY;for(let o=0;o<jh;o+=1){let n=Date.now();await am(e),t=Math.min(t,Date.now()-n)}return{line:e,latencyMs:t}}catch{return{line:e,latencyMs:null}}}async function cm(e){let t=[];for(let o of e)t.push(await qh(o));return t}import{jsx as ye,jsxs as ii}from"react/jsx-runtime";var Wh=10,zh=3,lm=4,pm=e=>1+Math.max(1,Math.min(e,lm))+(e>lm?1:0);function um(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 mm=e=>e.map(t=>({value:String(t.id),label:`${t.name} \xD7${t.multiplier}`})),dm=(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 Gh({lines:e,measured:t,effective:o,width:n,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 ye(oe,{title:"API \u63A5\u5165\u5730\u5740",note:o===void 0?void 0:`\u5F53\u524D ${o.name}`,width:n,children:ye(Re,{retain:"lines",items:e,width:n-ce,height:pm(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,o?.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 fm(){let e=D(),{width:t}=j(),o=re(),[n,r]=ri({name:"list"}),[i,s]=ri(!1),[a,c]=ri(()=>kn().line),[l,d]=ri(0),{busy:f,error:m,reset:p,fail:S,run:g}=ge(),h=Q([e.revision],async()=>{let[R,N,H]=await Promise.all([Xr(),Qr(),ke(e.ctx.site)]);return{tokens:R,groups:N,site:H}}),y=h.phase==="ready"?h.data.site.apiLines:[],x=Q([l,y.map(R=>R.url).join("|")],()=>cm(y)),k=f!==null,b=n.name==="list"&&!k,T=R=>{r({name:"list"}),e.reload(),e.toast("ok",R)};z(R=>{if(R==="r"){d(N=>N+1),e.reload();return}i||(R==="n"?r({name:"create"}):R==="l"&&y.length>0&&s(!0))},b);let C=R=>{ur(N=>{N.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`)},L=(R,N,H)=>{g("\u6B63\u5728\u521B\u5EFA\u4EE4\u724C",()=>$u({name:R,groupId:N,quotaLimit:H}),{onSuccess:$=>{e.reload(),r({name:"created",token:$,secret:$.token})}})},F=R=>{g("\u6B63\u5728\u5220\u9664\u4EE4\u724C",()=>Bu(R.id),{onSuccess:()=>T("\u4EE4\u724C\u5DF2\u5220\u9664")})},w=(R,N)=>{g("\u6B63\u5728\u8BFB\u53D6\u5BA2\u6237\u7AEF\u914D\u7F6E",async()=>sm.map(H=>{let $=H.resolveDir(),ne=H.read($);return{client:H,configured:ne.baseUrl!==null,paths:H.configPaths($),model:ne.model}}),{failToast:!0,onSuccess:H=>r({name:"apply-pick",token:R,secret:N,targets:H})})},E=(R,N,H)=>{g("\u6B63\u5728\u5199\u5165",()=>Ju(e.ctx,R,N,H),{failToast:!0,onSuccess:()=>{r({name:"list"}),e.toast("ok",De([`\u5DF2\u5199\u5165 ${R.label}`,H]))}})},_=(R,N)=>{let H=R.targets.find($=>$.client.id===N);if(H!==void 0){if(!H.client.requiresModel){E(H.client,R.secret);return}g("\u6B63\u5728\u8BFB\u53D6\u53EF\u8DEF\u7531\u7684\u6A21\u578B",async()=>{let $=await Ku(e.ctx,R.secret);if($.length===0)throw new U("\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 $},{failToast:!0,onSuccess:$=>r({name:"apply-model",token:R.token,secret:R.secret,targets:R.targets,needs:H,models:$})})}},P=(R,N)=>{p(),r(R==="rename"?{name:"rename",token:N}:R==="regroup"?{name:"regroup",token:N}:R==="relimit"?{name:"relimit",token:N}:{name:"confirm-delete",token:N})},v=()=>{if(n.name==="list"){i?s(!1):e.pop();return}if(p(),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"})},M=()=>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"?ye(G,{hints:M(),onEscape:v,children:ii(In,{flexDirection:"column",children:[f!==null&&ye(Xe,{label:f}),n.name==="created"&&!k&&ii(In,{flexDirection:"column",children:[ye(fe,{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"}),ye(In,{marginTop:1,children:ye(Hh,{color:u.accent,children:n.secret})}),ye(In,{marginTop:1,children:ye(le,{width:t,items:[{value:"apply",label:"\u5199\u5165\u914D\u7F6E"},{value:"back",label:"\u6211\u5DF2\u4FDD\u5B58"}],onSelect:R=>{R==="back"?r({name:"list"}):w(n.token,n.secret)}})})]}),n.name==="apply-pick"&&!k&&ye(oe,{title:"\u5199\u5165\u914D\u7F6E",note:n.token.name,width:t,children:ye(le,{width:t-ce,height:o-Ct,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&&ye(V,{title:`${n.needs.client.label} \u9ED8\u8BA4\u6A21\u578B`,width:t,submitLabel:"\u5199\u5165",error:m,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:`${n.needs.client.label} \u7684\u914D\u7F6E\u91CC\u5FC5\u987B\u5199\u6B7B\u4E00\u4E2A\u6A21\u578B`}],onCancel:v,onSubmit:R=>{let N=R.model;if(N===void 0||N===""){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B");return}E(n.needs.client,n.secret,N)}})]})}):ye(G,{hints:M(),onEscape:v,children:ye(Y,{state:h,loading:"\u6B63\u5728\u8BFB\u53D6\u4EE4\u724C",width:t,children:({tokens:R,groups:N,site:H})=>{let $=J+Ct+pm(H.apiLines.length),ne=Math.max(zh,o-(n.name==="list"?$:Wh));return ii(In,{flexDirection:"column",children:[ye(In,{flexDirection:"column",marginBottom:J,children:ye(Re,{retain:"list",items:R,width:t,height:ne,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:q=>{let se=ae(q.usedQuota,H.quotaPerUsd);return[q.name,q.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664",q.quotaLimit!==null&&q.usedQuota>=q.quotaLimit?{text:se,tone:"danger"}:se,q.quotaLimit===null?"\u4E0D\u9650":ae(q.quotaLimit,H.quotaPerUsd),ar(q.keyPrefix,q.keySuffix)]},searchOf:q=>`${q.name} ${q.groupName??""}`,onOpen:q=>r({name:"actions",token:q}),emptyLabel:"\u6682\u65E0\u4EE4\u724C",emptyDescription:"\u521B\u5EFA\u4E00\u4E2A\u4EE4\u724C\u5373\u53EF\u5F00\u59CB\u8C03\u7528\u4E2D\u8F6C API"})}),f!==null&&(n.name==="list"||n.name==="actions"||n.name==="confirm-delete")&&ye(Xe,{label:f}),n.name==="list"&&ye(Gh,{lines:H.apiLines,measured:x.phase==="ready"?x.data:null,effective:a??H.apiLines[0],width:t,isActive:b&&i,onPick:C}),n.name==="actions"&&!k&&ii(oe,{title:n.token.name,width:t,children:[ye(Ee,{width:t-ce,items:[["\u5206\u7EC4",n.token.groupName??"\u5206\u7EC4\u5DF2\u5220\u9664"],["\u5DF2\u6D88\u8D39",ae(n.token.usedQuota,H.quotaPerUsd)],["\u8D39\u7528\u9650\u5236",n.token.quotaLimit===null?"\u4E0D\u9650":ae(n.token.quotaLimit,H.quotaPerUsd)],["\u5BC6\u94A5",ar(n.token.keyPrefix,n.token.keySuffix)]]}),ye(In,{marginTop:1,children:ye(le,{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,H.quotaPerUsd)},{value:"delete",label:"\u5220\u9664",labelTone:"danger"}],onSelect:q=>P(q,n.token)})})]}),n.name==="create"&&ye(V,{title:"\u521B\u5EFA\u4EE4\u724C",width:t,submitLabel:"\u521B\u5EFA",error:m,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:mm(N),initial:String(N[0]?.id??""),hint:q=>dm(N,q)},{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:v,onSubmit:q=>{let se=(q.name??"").trim();if(se===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}let rt=N.find(B=>String(B.id)===q.group);if(rt===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}let A=um(q.limit??"",H.quotaPerUsd);if(A==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}L(se,rt.id,A)}}),n.name==="rename"&&ye(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,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:v,onSubmit:q=>{let se=(q.name??"").trim();if(se===""){S("\u8BF7\u586B\u5199\u4EE4\u724C\u540D\u79F0");return}g("\u6B63\u5728\u4FDD\u5B58",()=>Zr(n.token.id,{name:se}),{onSuccess:()=>T("\u5DF2\u4FDD\u5B58")})}}),n.name==="regroup"&&ye(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,busy:k,busyLabel:"\u6B63\u5728\u4FDD\u5B58",fields:[{kind:"select",name:"group",label:"\u5206\u7EC4",options:mm(N),initial:String(n.token.groupId??N[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":q=>dm(N,q)}],onCancel:v,onSubmit:q=>{let se=N.find(rt=>String(rt.id)===q.group);if(se===void 0){S("\u8BF7\u9009\u62E9\u4E00\u4E2A\u5206\u7EC4");return}g("\u6B63\u5728\u4FDD\u5B58",()=>Zr(n.token.id,{groupId:se.id}),{onSuccess:()=>T("\u5DF2\u4FDD\u5B58")})}}),n.name==="relimit"&&ye(V,{title:`\u7F16\u8F91\u4EE4\u724C \u2014 ${n.token.name}`,width:t,submitLabel:"\u4FDD\u5B58",error:m,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/H.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,H.quotaPerUsd)}\uFF0C\u8FBE\u5230\u8D39\u7528\u4E0A\u9650\u540E\u8C03\u7528\u5C06\u88AB\u62D2\u7EDD`,optional:!0}],onCancel:v,onSubmit:q=>{let se=um(q.limit??"",H.quotaPerUsd);if(se==="invalid"){S("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u8D39\u7528\u9650\u5236");return}g("\u6B63\u5728\u4FDD\u5B58",()=>Zr(n.token.id,{quotaLimit:se}),{onSuccess:()=>T("\u5DF2\u4FDD\u5B58")})}}),n.name==="confirm-delete"&&!k&&ye(He,{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:m,onConfirm:()=>F(n.token),onCancel:v})]})}})})}import{Box as Vs}from"ink";import{jsx as At,jsxs as Vh}from"react/jsx-runtime";var gm=[["\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"]],hm=[["\u70B9\u51FB / \u6EDA\u8F6E","\u9009\u4E2D\u6253\u5F00\u3001\u6EDA\u52A8"],["Option / Alt \u62D6\u9009","\u590D\u5236\u6587\u672C"]],bm=[["\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 ym({width:e,height:t}){let o=e-ce,n=[["\u7248\u672C",`${ut} v${mt}`],["\u672C\u5730\u5B58\u50A8",jt()]],r=[gm,hm,bm,n],s=(a=>r.reduce((c,l)=>c+at+a+Jl(l.length,o),J*(r.length-1)))($e)<=t?$e:0;return Vh(bc,{height:t,children:[At(oe,{title:"\u901A\u7528",width:e,gap:s,children:At(Ee,{items:gm,width:o})}),At(Vs,{marginTop:J,flexDirection:"column",children:At(oe,{title:"\u9F20\u6807",width:e,gap:s,children:At(Ee,{items:hm,width:o})})}),At(Vs,{marginTop:J,flexDirection:"column",children:At(oe,{title:"\u6587\u672C\u8F93\u5165",width:e,gap:s,children:At(Ee,{items:bm,width:o})})}),At(Vs,{marginTop:J,flexDirection:"column",children:At(oe,{title:"\u5173\u4E8E",width:e,gap:s,children:At(Ee,{items:n,width:o})})})]})}import{jsx as Ks}from"react/jsx-runtime";function Sm(){let e=D(),{width:t}=j(),o=re();return rn(e.pop),Ks(Cn,{header:Ks(Dr,{trail:["CodeFlow","\u952E\u4F4D\u5E2E\u52A9"],width:t,onBack:e.pop,isActive:!0}),hints:["Esc \u8FD4\u56DE"],children:Ks(ym,{width:t,height:o})})}import{Box as xm,Text as Kh}from"ink";import{jsx as Ho,jsxs as Jh}from"react/jsx-runtime";var Tm=[{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 wm(){let e=D(),{width:t}=j(),o=Io(0),n=J+1+J+Tm.length,r=Ir(t)&&o-Nr>=n;return Jh(Cn,{header:r?Ho(Lr,{width:t}):null,hints:["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","? \u5E2E\u52A9","q \u9000\u51FA"],children:[Ho(xm,{marginTop:1,children:Ho(Kh,{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"})}),Ho(xm,{marginTop:1,children:Ho(le,{items:Tm,width:t,retain:"menu",onSelect:i=>e.push(i)})})]})}import{Box as si,Text as Ln}from"ink";import{useState as vm}from"react";import{z as Ve}from"zod";var Yh=Ve.object({inviteCode:Ve.string(),invitedCount:Ve.number(),totalReward:Ve.number(),rewards:Ve.object({firstInviterPercent:Ve.number(),firstInviteePercent:Ve.number(),subsequentInviterPercent:Ve.number()}),items:Ve.array(Ve.object({id:Ve.number().int(),rewardType:wa,rewardQuota:Ve.number(),rewardQuotaReversed:Ve.number(),inviterUsername:Ve.string(),inviteeUsername:Ve.string(),createdAt:Ve.string()}))}),km=()=>O(Yh,"/invite");import{jsx as Je,jsxs as ai}from"react/jsx-runtime";var Qh=Ye(vi,or,"\u5168\u90E8\u7C7B\u578B"),_m=3;function Xh(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 Rm(){let e=D(),{width:t}=j(),o=re(),[n,r]=vm("main"),[i,s]=vm(""),a=Q([e.revision],async()=>{let[l,d]=await Promise.all([km(),ke(e.ctx.site)]);return{invite:l,site:d}});z(l=>{n==="main"&&(l==="r"?e.reload():l==="f"&&r("filter"))});let c=()=>{n==="main"?e.pop():r("main")};return Je(G,{hints:n==="main"?["\u2191\u2193 \u6EDA\u52A8","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:c,children:Je(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u9080\u8BF7\u4FE1\u606F",width:t,children:({invite:l,site:d})=>{if(n==="filter")return Je(V,{title:"\u7B5B\u9009\u5956\u52B1\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:Qh,initial:i}],onCancel:c,onSubmit:y=>{s(y.type??""),r("main")}});let f=t-ce,m=Xh(l.rewards),p=i===""?l.items:l.items.filter(y=>y.rewardType===i),S=y=>Yt(2,t)+J+at+y+2+J+at+y+m.length+J+at+y,g=o-S($e)>=_m?$e:0,h=Math.max(_m,o-S(g));return ai(si,{flexDirection:"column",children:[Je(nt,{width:t,tiles:[{label:"\u5DF2\u9080\u8BF7\u4EBA\u6570",value:_e(l.invitedCount)},{label:"\u7D2F\u8BA1\u5956\u52B1\u989D\u5EA6",value:ae(l.totalReward,d.quotaPerUsd)}]}),Je(si,{marginTop:1,flexDirection:"column",children:ai(oe,{title:"\u6211\u7684\u9080\u8BF7",width:t,gap:g,children:[ai(Ln,{wrap:"truncate",children:[Je(Ln,{color:u.mutedForeground,children:"\u6211\u7684\u9080\u8BF7\u7801 "}),Je(Ln,{color:u.accent,children:l.inviteCode})]}),ai(Ln,{wrap:"truncate",children:[Je(Ln,{color:u.mutedForeground,children:"\u9080\u8BF7\u94FE\u63A5 "}),Je(Ln,{color:u.accent,children:`${e.ctx.site}/register?invite=${l.inviteCode}`})]})]})}),Je(si,{marginTop:1,flexDirection:"column",children:Je(oe,{title:"\u5956\u52B1\u89C4\u5219",width:t,gap:g,children:m.map((y,x)=>Je(Ln,{wrap:"truncate",color:u.mutedForeground,children:y},x))})}),Je(si,{marginTop:1,flexDirection:"column",children:Je(oe,{title:"\u9080\u8BF7\u5956\u52B1\u8BB0\u5F55",note:i===""?void 0:or(i),width:t,gap:g,children:Je(Re,{retain:"list",items:p,width:f,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,d.quotaPerUsd)}`:"";return[ee(y.createdAt),y.rewardType==="first_invitee"?y.inviterUsername:y.inviteeUsername,or(y.rewardType),De([ae(x,d.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 $m}from"react";import{z as be}from"zod";var Zh=be.object({id:be.number().int(),orderNo:be.string(),amountCny:be.number().int()}),Cm=()=>O(be.array(Zh),"/invoices/eligible-orders"),Js=be.object({id:be.number().int(),type:wi,title:be.string(),taxId:be.string().nullable(),email:be.string(),remark:be.string().nullable(),amountCny:be.number().int(),status:ya,rejectReason:be.string().nullable(),rejectedAt:be.string().nullable(),issuedAt:be.string().nullable(),createdAt:be.string()}),eb=Js.extend({orders:be.array(be.object({orderNo:be.string(),amountCny:be.number().int()}))}),Em=()=>O(be.array(Js),"/invoices"),Pm=e=>O(eb,`/invoices/${e}`),Am=e=>O(Js,"/invoices",{method:"POST",json:e}),Ys=be.object({id:be.number().int(),type:wi,title:be.string(),taxId:be.string().nullable(),email:be.string()}),ci=()=>O(be.array(Ys),"/invoices/profiles"),Nm=e=>O(Ys,"/invoices/profiles",{method:"POST",json:e}),Im=(e,t)=>O(Ys,`/invoices/profiles/${e}`,{method:"PATCH",json:t}),Lm=e=>O(Se,`/invoices/profiles/${e}`,{method:"DELETE"}).then(()=>{});import{Box as tb,Text as Mn,useInput as nb}from"ink";import{useEffect as ob,useState as rb}from"react";import{jsx as Wo,jsxs as Qs}from"react/jsx-runtime";var ib="[x]",sb="[ ]",Mm=4,li=2,Om=2;function Dm({items:e,columns:t,row:o,selected:n,onToggle:r,onToggleAll:i,onSubmit:s,width:a,height:c,emptyLabel:l}){let[d,f]=rb(0),m=Math.max(1,c-1),p=e.length>m?Math.max(1,m-1):m;ob(()=>{f(b=>Math.min(b,Math.max(0,e.length-1)))},[e.length]);let S=rs(d,p),g=b=>{e.length!==0&&f(T=>(T+b+e.length)%e.length)};nb((b,T)=>{if(T.upArrow){g(-1);return}if(T.downArrow){g(1);return}if(T.return){s();return}b===" "&&e.length>0&&r(d)}),z(b=>{if(b==="k"){g(-1);return}if(b==="j"){g(1);return}b==="a"&&i()});let h=b=>{let T=S+b-1;return T>=0&&T<e.length?T:null},y=Be({onWheel:g,onClick:({row:b})=>{let T=h(b);T!==null&&(f(T),r(T))},onHover:({row:b})=>{let T=h(b);T!==null&&f(T)}}),x=gs(t,e.map(b=>o(b)),a-li-Mm),k=e.slice(S,S+p);return Qs(tb,{ref:y,flexDirection:"column",children:[Qs(Mn,{wrap:"truncate",color:u.faintForeground,children:[" ".repeat(li+Mm),t.map((b,T)=>b.align==="right"?sn(b.label,x[T]??0):Ne(b.label,x[T]??0)).join(" ".repeat(Om))]}),e.length===0?Wo(Mn,{color:u.faintForeground,children:`${" ".repeat(li)}${l}`}):k.map((b,T)=>{let C=S+T,L=C===d,F=n.has(C),w=L?u.accent:u.foreground,E=o(b);return Qs(Mn,{wrap:"truncate",children:[Wo(Mn,{color:u.accent,children:L?`${X.cursor} `:" "}),Wo(Mn,{color:F?u.accent:w,bold:L,children:`${F?ib:sb} `}),t.map((_,P)=>{let v=_.align==="right"?sn(E[P]??"",x[P]??0):Ne(E[P]??"",x[P]??0);return Wo(Mn,{color:w,bold:L,children:P>0?`${" ".repeat(Om)}${v}`:v},_.label)})]},C)}),(S>0||S+p<e.length)&&Wo(Mn,{color:u.faintForeground,children:`${" ".repeat(li)}${S+1}-${Math.min(S+p,e.length)} / ${e.length}`})]})}function ui(e,t){let o=e.type??"general",n=(e.title??"").trim(),r=(e.taxId??"").trim(),i=(e.email??"").trim();return n===""?(t("\u8BF7\u8F93\u5165\u62AC\u5934"),null):i===""?(t("\u8BF7\u8F93\u5165\u90AE\u7BB1"),null):o==="special"&&r===""?(t("\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968\u9700\u586B\u5199\u7A0E\u53F7"),null):{type:o,title:n,email:i,taxId:r===""?null:r}}var mi=e=>[{kind:"select",name:"type",label:"\u7C7B\u578B",options:[{value:"general",label:ho("general")},{value:"special",label:ho("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"},{kind:"text",name:"email",label:"\u90AE\u7BB1",initial:e?.email??"",placeholder:"\u53D1\u7968\u5C06\u53D1\u9001\u81F3\u6B64\u90AE\u7BB1"}];import{jsx as ro}from"react/jsx-runtime";function Bm(){let e=D(),{width:t}=j(),o=re(),[n,r]=$m({name:"pick"}),[i,s]=$m(new Set),{busy:a,error:c,reset:l,fail:d,run:f}=ge(),m=Q([e.revision],async()=>{let[g,h]=await Promise.all([Cm(),ci()]);return{orders:g,profiles:h}});z(g=>{n.name==="pick"&&g==="r"&&e.reload()});let p=()=>{n.name==="pick"?e.pop():n.name==="preset"?r({name:"pick"}):(l(),r({name:"pick"}))},S=(g,h)=>{let y=ui(h,d);if(y===null)return;let x=(h.remark??"").trim(),k=g.filter(b=>i.has(b.id)).map(b=>b.id);f("\u6B63\u5728\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7",()=>Am({orderIds:k,...y,remark:x===""?null:x}),{onSuccess:()=>{e.toast("ok","\u5DF2\u63D0\u4EA4\u5F00\u7968\u7533\u8BF7"),e.pop()}})};return ro(G,{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:p,children:ro(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u53EF\u5F00\u7968\u8BA2\u5355",width:t,children:({orders:g,profiles:h})=>{if(n.name==="pick")return g.length===0?ro(fe,{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"}):ro(Dm,{items:g,width:t,height:o,columns:[{label:"\u8BA2\u5355\u53F7",shrink:!0},{label:"\u91D1\u989D",align:"right"}],row:x=>[x.orderNo,he(x.amountCny)],selected:new Set(g.flatMap((x,k)=>i.has(x.id)?[k]:[])),onToggle:x=>{let k=g[x]?.id;k!==void 0&&s(b=>{let T=new Set(b);return T.has(k)?T.delete(k):T.add(k),T})},onToggleAll:()=>s(x=>g.every(k=>x.has(k.id))?new Set:new Set(g.map(k=>k.id))),onSubmit:()=>{if(!g.some(x=>i.has(x.id))){e.toast("warn","\u8BF7\u5148\u52FE\u9009\u8981\u5F00\u7968\u7684\u8BA2\u5355");return}r(h.length>0?{name:"preset"}:{name:"identity",preset:null})},emptyLabel:"\u6682\u65E0\u53EF\u5F00\u7968\u8BA2\u5355"});if(n.name==="preset"){let x=[{heading:"\u5E38\u7528\u4FE1\u606F"},...h.map(k=>({value:{kind:"profile",profile:k},label:`${xn(k.type)} \xB7 ${k.title}`,hint:k.email})),{heading:""},{value:{kind:"manual"},label:"\u624B\u52A8\u586B\u5199",hint:"\u4E0D\u5957\u7528\u5E38\u7528\u4FE1\u606F"}];return ro(le,{items:x,width:t,height:o,onSelect:k=>{k.kind==="manual"?r({name:"identity",preset:null}):r({name:"identity",preset:k.profile})}})}let y=n.preset;return ro(V,{title:"\u7533\u8BF7\u5F00\u7968 \u2014 \u5F00\u7968\u4FE1\u606F",width:t,submitLabel:"\u63D0\u4EA4\u7533\u8BF7",busy:a!==null,busyLabel:a??"\u6B63\u5728\u63D0\u4EA4",error:c,fields:[...mi(y),{kind:"textarea",name:"remark",label:"\u5907\u6CE8",rows:2,maxLength:512,placeholder:"\u5176\u4ED6\u5F00\u7968\u8981\u6C42\u6216\u8BF4\u660E",optional:!0}],onCancel:p,onSubmit:x=>S(g,x)})}})})}import{Box as Xs}from"ink";import{useState as ab}from"react";import{jsx as Xt,jsxs as Fm}from"react/jsx-runtime";var cb=8,lb=3;function Um(){let e=D(),{width:t}=j(),o=re(),[n,r]=ab({name:"list"}),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),d=Q([e.revision],ci),f=i!==null,m=n.name==="list"&&!f;z(S=>{S==="r"?e.reload():S==="n"&&r({name:"create"})},m);let p=()=>{n.name==="list"?e.pop():(a(),r({name:"list"}))};return Xt(G,{trail:["\u53D1\u7968\u7BA1\u7406","\u5E38\u7528\u4FE1\u606F"],hints:m?["\u2191\u2193 \u79FB\u52A8","Enter \u64CD\u4F5C","n \u65B0\u5EFA","r \u5237\u65B0"]:[],onEscape:p,children:Xt(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u5E38\u7528\u5F00\u7968\u4FE1\u606F",width:t,children:S=>{let g=n.name==="list"?o:Math.max(lb,o-cb);return Fm(Xs,{flexDirection:"column",children:[Xt(Xs,{marginBottom:n.name==="list"?0:1,children:Xt(Re,{retain:"list",items:S,width:t,height:g,isActive:m,columns:[{label:"\u7C7B\u578B"},{label:"\u62AC\u5934",shrink:!0},{label:"\u7A0E\u53F7"},{label:"\u90AE\u7BB1"}],row:h=>[xn(h.type),h.title,h.taxId??"\u2014",h.email],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"&&!f&&Fm(oe,{title:n.profile.title,width:t,children:[Xt(Ee,{width:t-ce,items:[["\u7C7B\u578B",ho(n.profile.type)],["\u7A0E\u53F7",n.profile.taxId??"\u2014"],["\u90AE\u7BB1",n.profile.email]]}),Xt(Xs,{marginTop:1,children:Xt(le,{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")&&Xt(V,{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:f,busyLabel:i??"\u6B63\u5728\u4FDD\u5B58",error:s,fields:mi(n.name==="edit"?n.profile:null),onCancel:p,onSubmit:h=>{let y=ui(h,c);if(y===null)return;let x=n.name==="edit"?()=>Im(n.profile.id,y):()=>Nm(y);l("\u6B63\u5728\u4FDD\u5B58",x,{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u4FDD\u5B58")}})}}),n.name==="confirm-delete"&&Xt(He,{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",()=>Lm(n.profile.id),{onSuccess:()=>{r({name:"list"}),e.reload(),e.toast("ok","\u5DF2\u5220\u9664")}}),onCancel:p})]})}})})}import{Box as Zs,Text as di}from"ink";import{useState as ub}from"react";import{jsx as ot,jsxs as jm}from"react/jsx-runtime";var mb=Ye(Ti,tr,"\u5168\u90E8\u72B6\u6001");function db({id:e,width:t}){let o=D(),n=Q([e,o.revision],()=>Pm(e)),r=t-ce;return ot(Y,{state:n,loading:"\u6B63\u5728\u8BFB\u53D6\u53D1\u7968\u8BE6\u60C5",width:t,children:i=>{let s=tr(i.status),a=ze(s),c=[["\u62AC\u5934",i.title],...i.taxId===null?[]:[["\u7A0E\u53F7",i.taxId]],["\u90AE\u7BB1",i.email],...i.remark===null?[]:[["\u5907\u6CE8",i.remark]],["\u7533\u8BF7\u65F6\u95F4",ee(i.createdAt)],...i.rejectReason===null?[]:[["\u9A73\u56DE\u539F\u56E0",i.rejectReason]],...i.rejectedAt===null?[]:[["\u9A73\u56DE\u65F6\u95F4",ee(i.rejectedAt)]],...i.issuedAt===null?[]:[["\u5F00\u7968\u65F6\u95F4",ee(i.issuedAt)]]];return jm(oe,{title:i.title,note:qt(i.createdAt),width:t,children:[jm(di,{wrap:"truncate",children:[ot(di,{color:u.mutedForeground,children:xn(i.type)}),ot(di,{color:a===void 0?u.mutedForeground:Fe[a],children:` ${s.label}`})]}),ot(Zs,{marginTop:1,children:ot(nt,{width:r,maxPerRow:2,tiles:[{label:"\u91D1\u989D",value:he(i.amountCny)},{label:"\u5173\u8054\u8BA2\u5355",value:`${i.orders.length} \u7B14`}]})}),ot(Zs,{marginTop:1,children:ot(Ee,{width:r,items:c})}),ot(Zs,{marginTop:1,flexDirection:"column",children:i.orders.map(l=>ot(di,{wrap:"truncate",color:u.faintForeground,children:De([l.orderNo,he(l.amountCny)])},l.orderNo))})]})}})}function qm(){let e=D(),{width:t}=j(),o=re(),[n,r]=ub({name:"list"}),[i,s]=Ke("status",()=>""),a=Q([e.revision],Em);z(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 ot(G,{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:ot(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u5F00\u7968\u8BB0\u5F55",width:t,children:l=>{if(n.name==="filter")return ot(V,{title:"\u7B5B\u9009\u53D1\u7968",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:mb,initial:i}],onCancel:c,onSubmit:f=>{s(f.status??""),r({name:"list"})}});if(n.name==="detail")return ot(db,{id:n.id,width:t});let d=i===""?l:l.filter(f=>f.status===i);return ot(Re,{retain:"list",items:d,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:f=>[qt(f.createdAt),f.title,xn(f.type),he(f.amountCny),Gt(tr(f.status))],searchOf:f=>f.title,onOpen:f=>r({name:"detail",id:f.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 pb}from"ink";import{useState as Hm}from"react";import{jsx as io,jsxs as gb}from"react/jsx-runtime";var fb=Ye(ki,Fi,"\u5168\u90E8\u7C7B\u578B");function Wm(){let e=D(),{width:t}=j(),o=re(),[n,r]=Hm("list"),[i,s]=Hm(""),a=Q([e.revision],()=>ke(e.ctx.site)),c=ln([e.revision,i],(f,m)=>Ru({page:f,pageSize:m,...i===""?{}:{type:i}}),{retain:"page"}),l=n==="list";z((f,m)=>{l&&(f==="r"?e.reload():f==="f"?r("filter"):m.leftArrow?c.go(-1):m.rightArrow&&c.go(1))});let d=()=>{n==="list"?e.pop():r("list")};return io(G,{hints:l?["\u2191\u2193 \u6EDA\u52A8","\u2190\u2192 \u7FFB\u9875","f \u7B5B\u9009","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:d,children:io(Y,{state:a,loading:"\u6B63\u5728\u8BFB\u53D6\u7AD9\u70B9\u914D\u7F6E",width:t,children:f=>n==="filter"?io(V,{title:"\u7B5B\u9009\u6D41\u6C34",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"type",label:"\u7C7B\u578B",options:fb,initial:i}],onCancel:d,onSubmit:m=>{s(m.type??""),c.reset(),r("list")}}):io(Y,{state:c.state,loading:"\u6B63\u5728\u8BFB\u53D6\u989D\u5EA6\u6D41\u6C34",width:t,children:m=>gb(pb,{flexDirection:"column",children:[io(Re,{retain:"list",items:m.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:p=>{let S=Gn(p.amount,f.quotaPerUsd);return[ee(p.createdAt),Fi(p.type),{text:p.amount>=0?`+${S}`:S,tone:p.amount>=0?"success":"danger"},ae(p.balanceAfter,f.quotaPerUsd),De([Ga(p.refType),p.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}),io(un,{page:c.page,pages:c.pages,total:c.total,width:t})]})})})})}import{Box as Qm}from"ink";import{useState as hb}from"react";import{z as ea}from"zod";var zo={recharge:"/recharge",subscription:"/subscriptions"};function zm(e){return e==="recharge"?po:fo}var pi=(e,t)=>O(zm(e),`${zo[e]}/orders/${t}`),Gm=(e,t)=>O(ea.object({order:zm(e),qrCode:ea.string()}),`${zo[e]}/orders/${t}/pay`,{method:"POST"}),Vm=(e,t)=>O(ea.array(Ua),`${zo[e]}/orders/${t}/refunds`),Km=(e,t,o)=>O(Se,`${zo[e]}/orders/${t}/refund-request`,{method:"POST",json:{reason:o}}).then(()=>{}),Jm=(e,t)=>O(Se,`${zo[e]}/orders/${t}/refund-request/cancel`,{method:"POST"}).then(()=>{});import{Box as fi,Text as Ut}from"ink";import{jsx as St,jsxs as Go}from"react/jsx-runtime";function Ym({order:e,refunds:t,quotaPerUsd:o,width:n}){let r=n-ce,i=nn(e.status),s=ze(i),a=[["\u521B\u5EFA\u65F6\u95F4",ee(e.createdAt)]];return e.succeededRefundCny>0&&a.push(["\u5DF2\u9000\u91D1\u989D",he(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",he(e.pendingRefundCny)]),Go(oe,{title:e.kind==="recharge"?"\u5145\u503C":e.planName,note:e.orderNo,width:n,children:[Go(Ut,{wrap:"truncate",children:[St(Ut,{color:s===void 0?u.mutedForeground:Fe[s],children:i.label}),e.kind==="subscription"&&St(Ut,{color:u.faintForeground,children:` ${e.renewal?"\u7EED\u8D39":"\u65B0\u8D2D"}`})]}),St(fi,{marginTop:1,children:St(nt,{width:r,maxPerRow:2,tiles:e.kind==="recharge"?[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u5230\u8D26\u989D\u5EA6",value:ae(e.quota,o)}]:[{label:"\u91D1\u989D",value:he(e.amountCny)},{label:"\u8BA2\u9605\u65F6\u957F",value:`${e.grantedDurationDays} \u5929`}]})}),St(fi,{marginTop:1,children:St(Ee,{width:r,items:a})}),t!==null&&Go(fi,{marginTop:1,flexDirection:"column",children:[St(Ut,{color:u.mutedForeground,children:"\u9000\u6B3E\u8BB0\u5F55"}),t.length===0?St(Ut,{color:u.faintForeground,children:"\u6682\u65E0\u9000\u6B3E\u8BB0\u5F55"}):t.map(c=>{let l=Va(c.status),d=ze(l);return Go(fi,{flexDirection:"column",children:[Go(Ut,{wrap:"truncate",children:[St(Ut,{color:u.foreground,children:he(c.amountCny)}),St(Ut,{color:d===void 0?u.mutedForeground:Fe[d],children:` ${l.label}`}),St(Ut,{color:u.faintForeground,children:` ${ee(c.createdAt)}`})]}),(c.reason!==null||c.rejectReason!==null||c.refundTradeNo!==null)&&St(Ut,{wrap:"truncate",color:u.faintForeground,children:` ${De([c.reason??"",c.rejectReason===null?"":`\u9A73\u56DE\uFF1A${c.rejectReason}`,c.refundTradeNo??""])}`})]},c.id)})]})]})}import{jsx as On,jsxs as yb}from"react/jsx-runtime";var bb=new Set(["pending","expired","failed"]);function gi(e){let t=nn(e.status);return e.pendingRefundCny>0?{badge:`${t.label}\uFF08\u5F85\u786E\u8BA4 ${he(e.pendingRefundCny)}\uFF09`,badgeTone:"warning"}:{badge:t.label,badgeTone:ze(t)}}function so(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 Xm({params:e}){let t=D(),{width:o}=j(),[n,r]=hb("main"),{busy:i,error:s,reset:a,fail:c,run:l}=ge(),d=Q([e.kind,e.orderNo,t.revision],async()=>{let[g,h]=await Promise.all([pi(e.kind,e.orderNo),ke(t.ctx.site)]),y=bb.has(g.status)?null:await Vm(e.kind,e.orderNo);return{order:{kind:e.kind,...g},refunds:y,site:h}});z(g=>{n==="main"&&i===null&&g==="r"&&t.reload()});let f=()=>{n==="main"?t.pop():(a(),r("main"))},m=g=>{l("\u6B63\u5728\u62C9\u8D77\u652F\u4ED8",()=>Gm(e.kind,e.orderNo),{onSuccess:({order:h,qrCode:y})=>{t.push("pay",so({kind:e.kind,...h},y,g.quotaPerUsd))}})},p=g=>{l("\u6B63\u5728\u63D0\u4EA4\u9000\u6B3E\u7533\u8BF7",()=>Km(e.kind,e.orderNo,g),{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",()=>Jm(e.kind,e.orderNo),{onSuccess:()=>{r("main"),t.reload(),t.toast("ok","\u5DF2\u64A4\u9500\u9000\u6B3E\u7533\u8BF7")}})};return On(G,{trail:["\u8BA2\u5355\u8BE6\u60C5"],hints:n==="main"?["\u2191\u2193 \u79FB\u52A8","Enter \u6267\u884C","r \u5237\u65B0"]:[],onEscape:f,children:On(Y,{state:d,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u5355",width:o,children:({order:g,refunds:h,site:y})=>{if(n==="refund")return On(V,{title:`\u7533\u8BF7\u9000\u6B3E \u2014 ${g.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:[...zi[e.kind].map(k=>({value:k,label:k})),{value:"other",label:"\u5176\u4ED6"}],initial:zi[e.kind][0],hint:Za[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:f,onSubmit:k=>{let b=k.reason??"",T=b==="other"?(k.custom??"").trim():b;if(T===""){c("\u8BF7\u586B\u5199\u5177\u4F53\u8BF4\u660E");return}p(T)}});if(n==="confirm-cancel")return On(He,{width:o,title:"\u64A4\u9500\u9000\u6B3E\u7533\u8BF7",detail:`\u786E\u8BA4\u64A4\u9500\u8BA2\u5355 ${g.orderNo} \u7684\u9000\u6B3E\u7533\u8BF7\uFF1F${g.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:f});let x=[];return g.status==="pending"&&x.push({value:"pay",label:"\u7EE7\u7EED\u652F\u4ED8",hint:"\u91CD\u65B0\u62C9\u8D77\u652F\u4ED8\u5B9D\u4E8C\u7EF4\u7801"}),g.status==="refund_requested"&&x.push({value:"cancel-refund",label:"\u64A4\u9500\u7533\u8BF7",hint:"\u9000\u6B3E\u5C1A\u672A\u5BA1\u6838\uFF0C\u53EF\u64A4\u56DE"}),ja(g)&&x.push({value:"refund",label:"\u7533\u8BF7\u9000\u6B3E",labelTone:"danger"}),yb(Qm,{flexDirection:"column",children:[On(Ym,{order:g,refunds:h,quotaPerUsd:y.quotaPerUsd,width:o}),x.length>0&&i===null&&On(Qm,{marginTop:1,children:On(le,{width:o,items:x,retain:"menu",onSelect:k=>{a(),k==="pay"?m(y):r(k==="refund"?"refund":"confirm-cancel")}})})]})}})})}import{useRef as kb,useState as id}from"react";import{spawn as Sb}from"child_process";var xb={darwin:[{command:"pbcopy",args:[]}],win32:[{command:"clip",args:[]}],linux:[{command:"wl-copy",args:[]},{command:"xclip",args:["-selection","clipboard"]},{command:"xsel",args:["--clipboard","--input"]}]};function Tb(e,t){return new Promise((o,n)=>{let r=Sb(e.command,e.args,{stdio:["pipe","ignore","ignore"]});r.on("error",i=>{i.code==="ENOENT"?o(!1):n(new U(`\u6267\u884C ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))}),r.on("close",i=>{i===0?o(!0):n(new U(`${e.command} \u9000\u51FA\u7801 ${i??"null"}`))}),r.stdin.on("error",i=>n(new U(`\u5199\u5165 ${e.command} \u5931\u8D25\uFF1A${i.message}`,{cause:i}))),r.stdin.end(t)})}async function Zm(e){let t=xb[process.platform];if(t===void 0)throw new U(`\u5F53\u524D\u7CFB\u7EDF\u4E0D\u652F\u6301\u5199\u5165\u526A\u8D34\u677F\uFF08${process.platform}\uFF09`);for(let o of t)if(await Tb(o,e))return;throw new U("\u672A\u627E\u5230\u53EF\u7528\u7684\u526A\u8D34\u677F\u547D\u4EE4")}import{Box as ed,Text as Dn}from"ink";import{Fragment as wb,jsx as lt,jsxs as td}from"react/jsx-runtime";var nd={columns:20,rows:2};function od(e,t,o){return Ur(e,t,nd,o)}function rd({phase:e,qrCode:t,amountCny:o,summary:n,paidNote:r,expiredNote:i,pollError:s,width:a,layout:c}){let l=s===null?lt(Xe,{label:"\u7B49\u5F85\u652F\u4ED8\u5230\u8D26\u2026"}):lt(Dn,{wrap:"truncate",color:Fe.warning,children:`\u67E5\u8BE2\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5\uFF1A${s}`});if(e==="paid")return lt(fe,{tone:"ok",width:a,title:"\u652F\u4ED8\u6210\u529F\uFF01",detail:r});if(e==="expired")return lt(fe,{tone:"warn",width:a,title:"\u8BA2\u5355\u5DF2\u8D85\u65F6",detail:i});if(!c.fits)return td(ed,{flexDirection:"column",children:[lt(fe,{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`}),lt(Dn,{color:u.accent,children:t}),lt(ed,{marginTop:1,children:lt(Dn,{bold:!0,color:u.foreground,children:he(o)})}),l]});let d=c.asideRows-nd.rows,f=d>=1,m=d>=2,p=d>=2+n.length;return lt(jr,{value:t,aside:td(wb,{children:[m&<(Dn,{bold:!0,color:u.foreground,children:"\u626B\u7801\u652F\u4ED8"}),lt(Dn,{bold:!0,color:u.foreground,children:he(o)}),f&<(Dn,{color:u.mutedForeground,children:"\u8BF7\u4F7F\u7528\u652F\u4ED8\u5B9D\u626B\u4E00\u626B\u5B8C\u6210\u652F\u4ED8"}),p&&n.map((S,g)=>lt(Dn,{wrap:"truncate",color:u.mutedForeground,children:S},g)),l]})})}import{jsx as sd}from"react/jsx-runtime";var vb=5,_b=2e3;function ad({params:e}){let t=D(),{width:o,columns:n,rows:r}=j(),i=Io(0),[s,a]=id("waiting"),[c,l]=id(null),d=kb(0);Wr(_b,async()=>{let p;try{p=await pi(e.kind,e.orderNo)}catch(S){l(qe(S));return}if(l(null),p.status==="paid"||p.credited){a("paid"),t.toast("ok",e.paidMessage);return}if(p.status==="expired"||p.status==="failed"){d.current+=1,d.current>=vb&&a("expired");return}d.current=0},s==="waiting"),z(p=>{p!=="c"||s!=="waiting"||Zm(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 f=od(e.qrCode,{width:o,rows:i},{columns:n-o,rows:r-i}),m=s==="waiting"&&f.fits;return sd(G,{trail:["\u626B\u7801\u652F\u4ED8"],bleed:m,hints:s==="waiting"?["c \u590D\u5236\u94FE\u63A5"]:[],children:sd(rd,{phase:s,qrCode:e.qrCode,amountCny:e.amountCny,summary:e.summary,paidNote:e.paidNote,expiredNote:e.expiredNote,pollError:c,width:o,layout:f})})}import{useState as Eb}from"react";import{z as Nt}from"zod";var Rb=Nt.object({id:Nt.number().int(),name:Nt.string(),originalCny:Nt.number().int(),discountPercent:Nt.number().int(),payCny:Nt.number().int(),quota:Nt.number()}),cd=()=>O(Nt.array(Rb),"/recharge-packages"),Cb=Nt.object({order:po,qrCode:Nt.string()}),ld=e=>O(Cb,"/recharge/orders",{method:"POST",json:e}),ud=()=>O(Nt.array(po),"/recharge/orders");import{jsx as ao}from"react/jsx-runtime";var Pb=Ye(lo,nn,"\u5168\u90E8\u72B6\u6001");function Ab(e,t){let o=e.discountPercent<100?`\uFF08\u539F\u4EF7 ${he(e.originalCny)} \xB7 ${e.discountPercent/10} \u6298\uFF09`:"";return`${he(e.payCny)}${o} \xB7 \u5230\u8D26\u989D\u5EA6 ${ae(e.quota,t)}`}function md(){let e=D(),{width:t}=j(),o=re(),[n,r]=Eb({name:"menu"}),[i,s]=Ke("status",()=>""),{busy:a,error:c,reset:l,fail:d,run:f}=ge(),m=Q([e.revision],async()=>{let[g,h,y]=await Promise.all([cd(),ti(e.ctx.site),ud()]);return{packages:g,pricing:h,orders:y}});z(g=>{n.name==="menu"&&(g==="r"?e.reload():g==="f"&&r({name:"filter"}))});let p=()=>{n.name==="menu"?e.pop():(l(),r({name:"menu"}))},S=(g,h)=>{f("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>ld(g),{onSuccess:({order:y,qrCode:x})=>{r({name:"menu"}),e.push("pay",so({kind:"recharge",...y},x,h))}})};return ao(G,{hints:n.name==="menu"?["\u2191\u2193 \u79FB\u52A8","Enter \u6253\u5F00","f \u7B5B\u9009\u8BB0\u5F55","r \u5237\u65B0"]:["Esc \u8FD4\u56DE"],onEscape:p,children:ao(Y,{state:m,loading:"\u6B63\u5728\u8BFB\u53D6\u5145\u503C\u5957\u9910",width:t,children:({packages:g,pricing:h,orders:y})=>{if(n.name==="confirm")return ao(He,{width:t,title:`\u786E\u8BA4\u5145\u503C ${he(n.pkg.payCny)}\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>S({packageId:n.pkg.id},h.quotaPerUsd),onCancel:p});if(n.name==="custom")return ao(V,{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:p,onSubmit:b=>{let T=Number((b.yuan??"").trim()),C=qi(T);if(!Number.isFinite(T)||C<qi(h.minTopupCny)||C>Ai){d(`\u8BF7\u8F93\u5165 ${h.minTopupCny} \u5230 ${Ja(Ai)} \u5143\u4E4B\u95F4\u7684\u91D1\u989D`);return}S({amountCny:C},h.quotaPerUsd)}});if(n.name==="filter")return ao(V,{title:"\u7B5B\u9009\u5145\u503C\u8BB0\u5F55",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Pb,initial:i}],onCancel:p,onSubmit:b=>{s(b.status??""),r({name:"menu"})}});let x=i===""?y:y.filter(b=>b.status===i),k=[{heading:"\u5145\u503C\u5957\u9910"},...g.map(b=>({value:{kind:"pkg",pkg:b},label:b.name,hint:Ab(b,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(b=>({value:{kind:"order",orderNo:b.orderNo},label:he(b.amountCny),...gi(b),hint:`${ee(b.createdAt)} \xB7 \u5230\u8D26\u989D\u5EA6 ${ae(b.quota,h.quotaPerUsd)}`}))];return ao(le,{items:k,width:t,height:o,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 Zt,Text as Vo}from"ink";import{useState as Mb}from"react";import Ob from"string-width";import{z as te}from"zod";var Nb=te.object({windowId:te.number().int(),durationMinutes:te.number().int(),quota:te.number(),used:te.number(),resetAt:te.string()}),Ib=te.object({fallbackToBalance:te.boolean(),subscriptions:te.array(te.object({id:te.number().int(),planName:te.string(),groupNames:te.array(te.string()),startsAt:te.string(),expiresAt:te.string(),revokedAt:te.string().nullable(),renewable:te.boolean(),windows:te.array(Nb)}))}),dd=()=>O(Ib,"/subscriptions"),Lb=te.object({id:te.number().int(),name:te.string(),description:te.string().nullable(),priceCny:te.number().int(),durationDays:te.number().int(),enabled:te.boolean(),groupNames:te.array(te.string()),windows:te.array(te.object({durationMinutes:te.number().int(),quota:te.number()}))}),pd=()=>O(te.array(Lb),"/subscription-plans"),fd=te.object({order:fo,qrCode:te.string()}),gd=e=>O(fd,"/subscriptions/orders",{method:"POST",json:e}),hd=e=>O(fd,`/subscriptions/${e}/renew`,{method:"POST"}),bd=()=>O(te.array(fo),"/subscriptions/orders"),yd=e=>O(te.object({fallbackToBalance:te.boolean()}),"/subscriptions/preference",{method:"PUT",json:e});import{jsx as ve,jsxs as $n}from"react/jsx-runtime";var Db=Ye(lo,nn,"\u5168\u90E8\u72B6\u6001"),$b=3;function Bb({win:e,quotaPerUsd:t,width:o}){let n=Hi(e),r=Qa(e.durationMinutes),i=`\u5DF2\u7528 ${n}% ${X.bullet} ${ae(e.used,t)} / ${ae(e.quota,t)}`;return $n(Zt,{flexDirection:"column",children:[$n(Vo,{wrap:"truncate",children:[ve(Vo,{color:u.foreground,children:r}),ve(Vo,{color:n>=100?u.danger:u.mutedForeground,children:sn(i,Math.max(0,o-Ob(r)))})]}),ve(Kl,{used:e.used,total:e.quota,width:o}),ve(Vo,{wrap:"truncate",color:u.faintForeground,children:`\u5C06\u4E8E ${ee(e.resetAt)} \u91CD\u7F6E`})]})}function Fb(e){if(e.revokedAt!==null)return`${ee(e.revokedAt)} \u4F5C\u5E9F`;let t=`${ee(e.expiresAt)} \u5230\u671F`;return`\u5DF2\u7528 ${Math.max(...e.windows.map(Hi))}% \xB7 ${t}`}function Ub(e){let t=e.windows.length*4;return J+Ct+2+t+(e.renewable?J+1:0)}function jb(e){let t=e.description!==null&&e.description!==""?1+$e:0,o=Math.ceil((1+e.windows.length)/2);return J+Ct+t+o+J+1}function Sd(){let e=D(),{width:t}=j(),o=re(),[n,r]=Mb({name:"menu"}),[i,s]=Ke("status",()=>""),{busy:a,error:c,reset:l,run:d}=ge(),f=Q([e.revision],async()=>{let[h,y,x,k]=await Promise.all([dd(),pd(),bd(),ke(e.ctx.site)]);return{mine:h,plans:y,orders:x,site:k}});z(h=>{n.name!=="menu"||a!==null||(h==="r"?e.reload():h==="f"&&r({name:"filter"}))});let m=()=>{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"})},p=h=>{d("\u6B63\u5728\u4FDD\u5B58\u504F\u597D",()=>yd({fallbackToBalance:!h}),{failToast:!0,onSuccess:()=>{e.reload(),e.toast("ok","\u504F\u597D\u5DF2\u4FDD\u5B58")}})},S=(h,y)=>{d("\u6B63\u5728\u521B\u5EFA\u7EED\u8D39\u8BA2\u5355",()=>hd(h.id),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",so({kind:"subscription",...x},k,y.quotaPerUsd))}})},g=(h,y)=>{d("\u6B63\u5728\u521B\u5EFA\u8BA2\u5355",()=>gd({planId:h.id}),{onSuccess:({order:x,qrCode:k})=>{r({name:"menu"}),e.push("pay",so({kind:"subscription",...x},k,y.quotaPerUsd))}})};return ve(G,{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:m,children:ve(Y,{state:f,loading:"\u6B63\u5728\u8BFB\u53D6\u8BA2\u9605",width:t,children:({mine:h,plans:y,orders:x,site:k})=>{if(n.name==="filter")return ve(V,{title:"\u7B5B\u9009\u8BA2\u9605\u8BA2\u5355",width:t,submitLabel:"\u67E5\u8BE2",fields:[{kind:"select",name:"status",label:"\u72B6\u6001",options:Db,initial:i}],onCancel:m,onSubmit:v=>{s(v.status??""),r({name:"menu"})}});let b=n.name==="sub"||n.name==="confirm-renew"?h.subscriptions.find(v=>v.id===n.id):void 0,T=n.name==="plan"||n.name==="confirm-buy"?y.find(v=>v.id===n.id):void 0,C=T?.description??"";if((n.name==="sub"||n.name==="confirm-renew")&&b===void 0)return ve(fe,{tone:"warn",width:t,title:"\u8BA2\u9605\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u79FB\u9664",detail:"\u6309 Esc \u8FD4\u56DE"});if((n.name==="plan"||n.name==="confirm-buy")&&T===void 0)return ve(fe,{tone:"warn",width:t,title:"\u5957\u9910\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u67B6",detail:"\u6309 Esc \u8FD4\u56DE"});if(n.name==="confirm-renew"&&b!==void 0)return ve(He,{width:t,title:`\u786E\u8BA4\u7EED\u8D39\u300C${b.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(b,k),onCancel:m});if(n.name==="confirm-buy"&&T!==void 0)return ve(He,{width:t,title:`\u786E\u8BA4\u8BA2\u9605\u300C${T.name}\u300D\uFF08${he(T.priceCny)} / ${T.durationDays} \u5929\uFF09\uFF1F`,confirmLabel:"\u53BB\u652F\u4ED8",busy:a,error:c,onConfirm:()=>g(T,k),onCancel:m});let L=i===""?x:x.filter(v=>v.status===i),F=[{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\u4F18\u5148\u4F7F\u7528\u8BA2\u9605\u989D\u5EA6",disabled:!0}]:h.subscriptions.map(v=>{let M=Wi(v);return{value:{kind:"sub",id:v.id},label:v.planName,badge:M.label,badgeTone:ze(M),hint:Fb(v)}}),{heading:""},{value:{kind:"fallback"},label:"\u8BA2\u9605\u989D\u5EA6\u7528\u5C3D\u540E\u81EA\u52A8\u6539\u6309\u4F59\u989D\u8BA1\u8D39",badge:h.fallbackToBalance?"\u5DF2\u5F00\u542F":"\u5DF2\u5173\u95ED",...h.fallbackToBalance?{badgeTone:"accent"}:{},hint:"\u5173\u95ED\u65F6\u8D85\u9650\u8BF7\u6C42\u5C06\u88AB\u62D2\u7EDD\uFF0C\u5E76\u5728\u54CD\u5E94\u4E2D\u7ED9\u51FA\u6700\u8FD1\u7684\u7A97\u53E3\u91CD\u7F6E\u65F6\u95F4"},{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:`${he(v.priceCny)} / ${v.durationDays} \u5929 \xB7 ${v.groupNames.join("\u3001")}`})),{heading:""},{heading:"\u8BA2\u9605\u8BA2\u5355"},...L.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}]:L.map(v=>({value:{kind:"order",orderNo:v.orderNo},label:`${v.planName}${v.renewal?"\uFF08\u7EED\u8D39\uFF09":""}`,...gi(v),hint:`${ee(v.createdAt)} \xB7 ${he(v.amountCny)}`}))],w=n.name==="sub"&&b!==void 0?Ub(b):n.name==="plan"&&T!==void 0?jb(T):0,E=w===0?o:o-w>=$b?o-w:0,_=t-ce,P=n.name==="menu"&&a===null;return $n(Zt,{flexDirection:"column",children:[E>0&&ve(le,{items:F,width:t,height:E,isActive:P,retain:"menu",onSelect:v=>{l(),v.kind==="fallback"?p(h.fallbackToBalance):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})}}),n.name==="sub"&&b!==void 0&&$n(Zt,{marginTop:E>0?J:0,flexDirection:"column",children:[$n(oe,{title:b.planName,note:b.revokedAt!==null?`${ee(b.revokedAt)} \u4F5C\u5E9F`:`${ee(b.expiresAt)} \u5230\u671F`,width:t,children:[ve(Ee,{width:_,items:[["\u72B6\u6001",Wi(b).label],["\u8986\u76D6\u5206\u7EC4",b.groupNames.join("\u3001")],["\u751F\u6548\u65F6\u95F4",ee(b.startsAt)]]}),ve(Zt,{marginTop:1,flexDirection:"column",children:b.windows.map((v,M)=>ve(Zt,{marginTop:M===0?0:1,flexDirection:"column",children:ve(Bb,{win:v,quotaPerUsd:k.quotaPerUsd,width:_})},v.windowId))})]}),b.renewable&&a===null&&ve(Zt,{marginTop:J,children:ve(le,{width:t,items:[{value:"renew",label:"\u7EED\u8D39"}],onSelect:()=>r({name:"confirm-renew",id:b.id})})})]}),n.name==="plan"&&T!==void 0&&$n(Zt,{marginTop:E>0?J:0,flexDirection:"column",children:[$n(oe,{title:T.name,note:`${he(T.priceCny)} / ${T.durationDays} \u5929`,width:t,children:[C!==""&&ve(Vo,{wrap:"truncate",color:u.mutedForeground,children:C}),ve(Zt,{marginTop:C===""?0:$e,children:ve(Ee,{width:_,items:[["\u8986\u76D6\u5206\u7EC4",T.groupNames.join("\u3001")],...Xa(T,k.quotaPerUsd).map((v,M)=>[M===0?"\u7528\u91CF\u7A97\u53E3":"",v])]})})]}),a===null&&ve(Zt,{marginTop:J,children:ve(le,{width:t,items:[{value:"subscribe",label:T.enabled?"\u8BA2\u9605":"\u5DF2\u505C\u552E",disabled:!T.enabled}],onSelect:()=>r({name:"confirm-buy",id:T.id})})})]})]})}})})}import{jsx as we}from"react/jsx-runtime";var xd={home:{render:()=>we(wm,{})},help:{render:()=>we(Sm,{})},login:{render:()=>we(xu,{})},register:{render:()=>we(Tu,{})},forgot:{render:()=>we(hu,{})},agreement:{render:e=>we(uu,{params:e})},tokens:{render:()=>we(fm,{})},logs:{render:()=>we(Hu,{})},usage:{render:()=>we(Du,{})},ledger:{render:()=>we(Wm,{})},subscription:{render:()=>we(Sd,{})},models:{render:()=>we(Gu,{})},recharge:{render:()=>we(md,{})},order:{render:e=>we(Xm,{params:e})},pay:{render:e=>we(ad,{params:e})},invoices:{render:()=>we(qm,{})},"invoice-apply":{render:()=>we(Bm,{})},"invoice-profiles":{render:()=>we(Um,{})},invite:{render:()=>we(Rm,{})},tickets:{render:()=>we(lu,{})},ticket:{render:e=>we(cu,{params:e})},announcements:{render:()=>we(dl,{})},"announce-gate":{render:e=>we(al,{params:e}),lockNav:!0},profile:{render:()=>we(Xl,{})}};function Td(e){return xd[e].lockNav===!0}function wd(e){let t=xd[e.id].render;return t(e.params)}import{jsx as Bn,jsxs as ey}from"react/jsx-runtime";function Gb(){let e=D(),{rows:t}=j(),o=gr(),n=Td(e.current.id)||o,r=e.depth===1&&yr(e.current.id)&&kt().session===null;return ta(()=>{r&&e.home()}),Wb((i,s)=>{s.ctrl&&i==="c"&&e.exit()}),z(i=>{if(i==="?"){e.current.id==="help"?e.pop():n||e.push("help");return}i==="q"&&!n&&(e.depth>1?e.pop():e.exit())}),Bn(qb,{flexDirection:"column",height:Math.max(1,t),paddingX:1,paddingTop:1,overflow:"hidden",children:wd(e.current)})}function Vb(){let e=D(),t=Q([e.revision],async()=>{if(e.gate.announcementsChecked||kt().session===null)return null;let o;try{o=await fc()}catch{return null}return e.gate.announcementsChecked=!0,o});return ta(()=>{t.phase!=="ready"||t.data===null||e.gate.announcementsShown||(e.gate.announcementsShown=!0,e.push("announce-gate",{item:t.data}))}),null}function Kb(){let e=D(),t=zb(!1);return ta(()=>{t.current||(t.current=!0,dc().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${qe(o)}`)))}),null}function Jb({ctx:e,mouse:t}){return Bn(Pc,{subscribe:t.subscribe,children:Bn(xc,{children:ey(Mc,{ctx:e,children:[Bn(Kb,{}),Bn(Vb,{}),Bn(Gb,{})]})})})}var Yb="\x1B[2J\x1B[3J\x1B[H",Qb="\x1B[H\x1B[J",Xb="\x1B[3J";function Zb(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(Yb).join(Qb).split(Xb).join("");return t.write(s,...i)}}})}async function kd(e){let t=Cc(process.stdin,process.stdout);try{await Hb(Bn(Jb,{ctx:e,mouse:t}),{exitOnCtrlC:!0,alternateScreen:!0,stdin:t.stdin,stdout:Zb(process.stdout)}).waitUntilExit()}finally{t.dispose()}}var ry=`${ut} v${mt} \u2014 CodeFlow \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF
|
|
13
13
|
|
|
14
14
|
\u7528\u6CD5
|
|
15
|
-
${
|
|
16
|
-
${
|
|
17
|
-
${
|
|
18
|
-
${
|
|
19
|
-
`;async function
|
|
15
|
+
${ut} \u8FDB\u5165\u4EA4\u4E92\u754C\u9762
|
|
16
|
+
${ut} help \u67E5\u770B\u672C\u8BF4\u660E
|
|
17
|
+
${ut} update \u68C0\u67E5\u5E76\u5B89\u88C5\u65B0\u7248\u672C
|
|
18
|
+
${ut} uninstall \u9000\u51FA\u767B\u5F55\u3001\u5220\u9664\u672C\u5730\u6587\u4EF6\u5E76\u5378\u8F7D\u672C\u7A0B\u5E8F
|
|
19
|
+
`;async function iy(){let e;try{({positionals:e}=oy({args:process.argv.slice(2),allowPositionals:!0,options:{}}))}catch(o){throw new U(qe(o),{hint:`\u8FD0\u884C ${ut} help \u67E5\u770B\u7528\u6CD5`,exitCode:bi})}let[t]=e;if(t==="help")return process.stdout.write(ry),co;if(t==="update")return sy();if(t==="uninstall")return cy();if(t!==void 0)throw new U(`\u672A\u77E5\u547D\u4EE4 ${t}\uFF0C\u8FD0\u884C ${ut} help \u67E5\u770B\u7528\u6CD5`,{exitCode:bi});return uy(),await kd(fa()),co}async function sy(){let e=process.stdout,t=ay(e,"\u6B63\u5728\u68C0\u67E5\u65B0\u7248\u672C"),o;try{o=await mc()}finally{t()}let n=hn(e,u.accent,"\u2714");return e.write(o===null?`${n} \u5DF2\u662F\u6700\u65B0\u7248\u672C v${mt}
|
|
20
20
|
`:`${n} \u5DF2\u66F4\u65B0\u5230 v${o}
|
|
21
|
-
`),
|
|
22
|
-
`),()=>{};let o=
|
|
23
|
-
`),!await
|
|
24
|
-
`),
|
|
25
|
-
`),failed:o=>e.write(`${
|
|
21
|
+
`),co}function ay(e,t){if(!e.isTTY)return e.write(`${t}
|
|
22
|
+
`),()=>{};let o=hn(e,u.mutedForeground,t),n=0,r=()=>{let s=Kn[n%Kn.length]??"";n+=1,e.write(`\r\x1B[2K${hn(e,u.accent,s)} ${o}`)};r();let i=setInterval(r,wr);return()=>{clearInterval(i),e.write("\r\x1B[2K")}}async function cy(){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
|
|
23
|
+
`),!await ly("\u8F93\u5165 y \u786E\u8BA4\u5378\u8F7D\uFF1A"))return e.write(`\u5DF2\u53D6\u6D88
|
|
24
|
+
`),Un;let t=await ac({done:o=>e.write(`${hn(e,u.accent,"\u2714")} ${o}
|
|
25
|
+
`),failed:o=>e.write(`${hn(e,u.danger,"\u2718")} ${o}
|
|
26
26
|
`)});if(t.length===0)return e.write(`\u767B\u5F55\u72B6\u6001\u3001\u672C\u5730\u6587\u4EF6\u4E0E\u672C\u7A0B\u5E8F\u5747\u5DF2\u6E05\u9664
|
|
27
|
-
`),
|
|
27
|
+
`),co;e.write(`\u4EE5\u4E0B\u9879\u76EE\u672A\u80FD\u6E05\u7406\uFF1A
|
|
28
28
|
`);for(let o of t)e.write(` ${o}
|
|
29
|
-
`);return
|
|
30
|
-
`),e instanceof U&&e.hint&&process.stderr.write(` ${
|
|
31
|
-
`),process.exitCode=e instanceof U?e.exitCode:
|
|
29
|
+
`);return Un}async function ly(e){let t=ny({input:process.stdin,output:process.stdout});t.once("SIGINT",()=>t.close());let o=await Promise.race([t.question(e),ty(t,"close").then(()=>"")]);return t.close(),o.trim().toLowerCase()==="y"}function uy(){if(!process.stdin.isTTY||!process.stdout.isTTY)throw new U("\u4EA4\u4E92\u754C\u9762\u9700\u8981\u5728\u7EC8\u7AEF\u4E2D\u76F4\u63A5\u8FD0\u884C")}var vd=(e,t)=>hn(process.stderr,e,t);try{process.exitCode=await iy()}catch(e){process.stderr.write(`${vd(u.danger,"\u2718")} ${qe(e)}
|
|
30
|
+
`),e instanceof U&&e.hint&&process.stderr.write(` ${vd(u.faintForeground,e.hint)}
|
|
31
|
+
`),process.exitCode=e instanceof U?e.exitCode:Un}
|